CS 642: Intro to Computer Security

Spring 2016
121 Brogden Psychology Building
MW 2:30-3:45pm

Univ of Wisconsin Crest

Piazza discussion board for this course.

Code and instructions for the demos from the software vulnerability lecture (Feb 1) are available on GitHub.

In-class crypto worksheet.

Final exam study guide key.

Final exam answers.

Summary

This is a senior-level undergraduate course in computer security: the study of computing systems in the presence of adversaries. This course introduces students to security across a range of areas including operating systems, low-level software, networks, cryptography, and the web. We'll study techniques attackers use to break into computer systems and networks as well as defense mechanisms used to combat real-world threats.

Security cuts across many aspects of computer science. Students should have a reasonably good understanding of concepts from networks and operating systems. Familiarity with Intel assembly, C programming, a Unix shell, and a scripting language (like shell or python) will be very helpful.

I intend this course to be challenging. Understanding vulnerabilities and defenses requires diving deeply into topics. Some areas may be unfamiliar. I will try to cover basics in lecture, but the ability to seek out and understand topics is required.

Grading

  • Homework: 50%
  • Midterm: 20%
  • Final: 20%
  • Class participation: 10%

We will have 4 or more assignments throughout the semester. Class participation will be based on in-class discussion. Feel free to bring laptops to class.

Final Exam

Date: May 8, 2016, 7:25-8:25pm
Location: Mechanical Engineering 1106

Instructor

ADAM EVERSPAUGH (ace at cs dot wisc dot edu)
Office: Computer Sciences office 7378
Office hours: Fridays, 2:30-3:30p, or by appointment

Teaching Assistants

TEJASWI AGARWAL (agarwalt at cs dot wisc dot edu)
ARJUN SINGHVI (asinghvi at cs dot wisc dot edu)
Office: Computer Sciences office 1301
Office hours: Tuesdays, 2-3p

Expected lecture schedule is below. The schedule will be adjusted as the course continues.

Skimming the reading materials before lecture to understand the context and main points will be very useful. Being prepared to ask intelligent questions about the readings is an easy way to get participation credit.

Date Topic Details
January 20 Introduction

Course overview, computer security, ethics, security principles.

Slides: [pdf]

Further reading:

January 25 OS Security

Access control, capabilities, privilege levels, Unix permissions.

Slides: [pdf]

Further reading:

January 27 x86 Review

Lecture by Drew Davidson
Review details of x86 ISA, process memory layout, introduce buffer overflows.

Slides: [pdf] [pptx]

February 1 Low-level Software Security

Buffer overflows, format string vulnerabilities, integer overflows, heap overflows.

Slides: [pdf]

Further reading:

February 3 Finding Security Vulnerabilities

Fuzzing, reverse engineering, static analysis, and dynamic analysis.

Slides: [pdf]

Further reading:

February 8 Memory Protection Mechanisms

Data execution prevention, address space layout randomization, stack protector, sandboxing, and containment.

Slides: [pdf]

Further reading:

February 10 Web Security

Browser security, same origin policy, cookies.

Slides: [pdf]

Further reading:

February 15 Web Security

Cookies, session hijacking.

Slides: [pdf]

Further reading:

February 17 Class Canceled

No class

February 22 Web Security

Cross-site scripting, cross-site request forgery, SQL injection.

Slides: [pdf]

February 24 Cryptography Intro

Intro to crypto, symmetric/assymetric encryption, MACs, digital signatures, key exchange, TLS.

Slides: [pdf]

Further reading:

February 29 Symmetric Cryptography

Provable security, Shannon security, one-time pad encryption, block ciphers, modes of operations

Slides: [pdf]

Further reading:

March 2 Symmetric Cryptography

Symmetric encryption continued: hash functions, HMAC.

Slides: [pdf]

March 4 Midterm Review Session

Review selected topics before midterm exam.

March 7 Midterm Exam

In-class midterm

March 9 Public Key Cryptography

HMAC, authenticated encryption, public key encryption, digital signatures, certificates, hybrid encryption.

Slides: [pdf] [pdf]

March 14 Passwords

Password-based cryptography, password based key derivation

Slides: [pdf]

Further reading:

March 16 Network Security

ARP Spoofing, 802.11, evil-twins, packet sniffing, man-in-the-middle attacks.

Slides: [pdf]

Further reading:

March 21 Spring Break

No class

March 23 Spring Break

No class

March 28 Network Security

IP fragmentation attacks, UDP, TCP, denial of service.

Slides: [pdf]

Further reading:

March 30 DNS Security

Domain names system (DNS)

Slides: [pdf]

Further reading:

April 11 Network Scanning and Detection

Border gateway protocol, route-hijacking, port scanning, host fingerprinting, stealth scans, intrusion detection systems.

Slides: [pdf]

Further reading:

April 13 Privacy, Censorship, and Surveillance

Mass surveillance, Anonymous browsing, The Onion Router (TOR), deep packet inspection.

Slides: [pdf] [pdf]

Further reading:

April 18 Virtualization Security

Virtual machines, reset vulnerabilities, VM introspection, covert channels.

Slides: [pdf]

Further reading:

April 20 Cloud Computing

Public cloud risk models, cloud cartography, VM placement gaming, side channels.

Slides: [pdf]

Further reading:

April 25 Botnets

Malware ecosystem, botnets, command and control, domain flux C&C, sinkholing.

Slides: [pdf]

Further reading:

April 27 Botnets

Malware ecosystem, botnets, command and control, domain flux C&C, sinkholing.

May 2 Bitcoin

Basic mechanism underlying Bitcoin, proof-of-work, blockchain, privacy implications.

Further reading:

May 4 Android Security

Guest lecture: Drew Davidson
Mobile risk model, android security model, android permissions, taint tracking.

Slides: [pdf]

Further reading:

May 6 Final Exam Review Session

Review selected topics in preparation for the final exam.