Link Search Menu Expand Document

Computer Security

CS-426, Fall 2023

This 3-credits undergraduate course covers the basics of computer security. We will cover a wide range of topics from both offensive and defensive sides, including systems security and exploitation (e.g., buffer overflows), sandboxing and isolation, side channels, network security, cryptography, privacy and anonymity, and legal and ethical issues. Together, we will learn how to build secure computer systems, we will understand security best practices, and we will get to know security failures in existing and emerging computer networks and systems.

By the end of the course, you will have the basic knowledge to reason about common security attacks and defenses, you will become familiar with security engineering best practices, and you will learn how to write better and more secure software, protocols, and systems, and you will have rudimentary skills in security research. I hope that you will have fun taking this course as much as I will enjoy teaching it!

Catalog Description: The course focuses on the principles and foundations of building secure computer systems and on security and privacy challenges in existing and emerging computer networks and systems. The course compares and analyzes security and privacy threats and architectures from an adversarial standpoint to understand how to build more secure protocols that can withstand ever-adaptive attacks.

Instructor

Teaching Assistants

Lectures

Lectures are M/W/F from 9:30 am to 10:20 am, Robert Heine Pharmacy Building 164.

Updated Office Hours on BrightSpace (See Course Calendar).

Prerequisite

The formal prerequisite is undergraduate level CS 25100 minimum grade of C and undergraduate level CS 25200 minimum grade of C [may be taken concurrently] or undergraduate level ECE 46900 Minimum Grade of C or undergraduate level EE 46900 Minimum Grade of C. However, to complete the assignments in this course, you will need to be able to write code in Python, C, and (some) C++, and have some understanding of x86 assembly, JavaScript, PHP, and SQL. We will not teach these in lecture; you are expected to learn them on your own or ask for help in office hours.

Textbook

There is no official textbook for the class. Slides will be provided and reading materials for each topic will be posted before the lectures. However, the following resources are going to be useful:

  • Security Engineering – Ross Anderson, Third Edition
  • Hacking: The Art of Exploitation by Jon Erickson

We try to be clear about what is okay to skim and what will be helpful to read deeply (See Agenda).

Format

Course format is lectures three days a week. Attendance is not optional. The slides will be available for download before each lecture (See Agenda).

A quick reminder: Active engagement and re-enforcement are keys to successful and effective learning. Therefore, we will have plenty of activities during lectures. These activities also help you to meet and interact with other students. Moroever, assignments, and grading are designed to help with re-enforcement and active engagement.

Online Discussion

Discussions, Q&A, peer-to-peer instruction, etc. take place on our edstem. Use the link in Brightspace to join the class on edstem. You are encouraged to post questions, help answer other students’ questions, and provide feedback and suggestions to your instruction staff. Constructive criticism is always welcome.

While the instruction staff will do their best to answer any question as soon as possible, be aware (and plan ahead) that instruction staff will not be available 24/7.

Grading

An ideal assessment should evaluate learning outcomes, thus your grade should not depend on other student’s performance in class (i.e., no bell curve). We will use the following scale for your final grade:

A+
>96.7
A
[93,96.7)
A-
[90,93)
B+
[86.7,90)
B
[83.3,86.7)
B-
[80,83.3)
C+
[76.7,80)
C
[73.3,76.7)
C-
[70,73.3)
D
[60,70)
F
[0,60)

We reserve the right to modify these ranges and the following tentative grading breakdown as the course proceeds.

Weekly Check-in (5%)

During lectures, we will have interactive question and answer activities in the class. We will use Hotseat for polls and discussions. These are opportunities for you to check your understanding and for us to go back and help explain concepts more thoroughly that may be confusing folks. These in-lecture polls will not be graded for correctness or attendance. However, on each Wednesday (from 2nd week onward), we will collect all of the poll questions of the week and release a mini-quiz on BrightSpace. The quiz must be completed by midnight (campus time) the following Thursday. So, you will have at least 24 hours to complete them.

These quizzes are primarily for you, to help you stay on track and to check your own understanding. Therefore, we will not grade them for correctness. If you complete the quiz, you will earn full points for that week. However, if your raw score on a quiz is low, come to discussion sections or office hours and get help!

Homework (60%)

These are longer form assignments that include both programming and a non-programming conceptual section. You are welcome to discuss homework problems with other students or in groups, however, you must complete your final writeup alone.

Homework submission will be via the Gradescope. If you are enrolled in the class you should see the class in your Gradescope account. Regrade requests will also be handled via Gradescope. The window for regrades will be no more than one week after graded homework is returned.

We will have 5 homework sets. Generally they will be released on Mondays and you will have 2-3 weeks to submit. See the tentative schedule for more information on the schedule of the homework assignments (Agenda). Homework 1 will be worth 6% and the remaining homework (Homework 2-5) will each be worth 13.5% of the final grade, making the total Homework grade 6 + 4 * 13.5 = 60% of your final grade.

Midterm (15%)

This course will have one midterm exam. The midterm is scheduled to be in class on Wed Oct 18.

Final (20%)

The final exam will be cumulative over all of the course content.

The registrar has assigned: Wed Dec 13th, 8-10 AM at KRAN G016 as the final exam time slot for this course.

Late Assignments

You will have 3 late days during the whole semester for late homework. You will also have 3 late days for weekly check-ins. You can use your late days however you wish to. Note that the granularity of this is days. That means, if you submit your homework any time in the next 24 hours after the deadline, you are using one of your late days.

Academic Integrity

Cheating WILL be taken seriously. It is not fair to honest students to take cheating lightly, nor is it fair to the cheater to let him/her go on thinking that is a reasonable alternative in life.

The following is not considered cheating:

  • discussing the homeworks with other students (with the writeup done separately, later).

The following is:

  • Discussing homework with someone who has already completed the problem, or looking at their completed write-up.
  • Using homework solutions from the web, previous versions of the class, or anywhere else.
  • Receiving, providing, or soliciting assistance from another student during a test.

Penalties – anyone copying information or having information copied on a homework, or an exam, or any other violation of class policy, will receive an F in the class and will not be allowed to drop. They will be reported to their college dean. If you can prove non-cooperative copying took place, your grade may be restored, but you must prove it to the dean.

University Policies and Statements

Please see Brightspace for complete list of university policies and statements.

Agenda (Tentative!)

This is a tentative schedule and we may change it as the course proceeds.

Week-1

Date
Topic
Aug 21
No Classs
Aug 23
Introduction
Aug 25
Security Fundamentals
Read: This World of Ours by James Mickens Watch: USENIX Security 2018 Keynote by James Mickens

Week-2

Aug 28
Security Fundamentals 2
HW1 Release
Aug 30
Buffer Overflow Attacks
Read: Smashing the Stack for Fun and Profit by Aleph One; Optional: 0×300-0×320 from Hacking book. 0×200-0×270 if you don’t have a strong C background.
Sep 01
Buffer Overflow Attacks 2
Same as prev lecture: Read Smashing the Stack for Fun and Profit by Aleph One; Optional: 0×300-0×320 from Hacking book. 0×200-0×270 if you don’t have a strong C background.

Week-3

Sep 04
Labor Day (No Class)
Sep 06
Buffer Overflow Attacks 3
Same as prev lectures: Read Smashing the Stack for Fun and Profit by Aleph One; Optional: 0×300-0×320 from Hacking book. 0×200-0×270 if you don’t have a strong C background.
Sep 08
Buffer Overflow Attacks 4
Same as prev lectures: Read Smashing the Stack for Fun and Profit by Aleph One; Optional: 0×300-0×320 from Hacking book. 0×200-0×270 if you don’t have a strong C background.

Week-4

Sep 11
Buffer Overflow Defenses 1
HW1 DueHW2 Release
Read ASLR; NOEXEC.
Sep 13
Buffer Overflow Defenses 2
Same as prev lecture: Read ASLR; NOEXEC.
Sep 15
Buffer Overflow Defenses 3
Same as prev lecture: Read ASLR; NOEXEC.

Week-5

Week-6

Week-7

Oct 02
Sandboxing and Isolation
HW2 Due
SAME as prev lecture: Watch: USENIX Security talk by Shravan Narayan Read: The Road to Less Trusted Code: Lowering the Barrier to In-process Sandboxing by Garfinkel et al. Optional: Retrofitting Fine Grain Isolation in the Firefox Renderer by Narayan et al., Operating System Security by Trent Jaeger, Android System and kernel security, and https://www.apple.com/business/docs/iOS_Security_Guide.pdf
Oct 04
Side Channels 1
HW3 Release
Read:Spectre Attacks: Exploiting Speculative Execution by Paul Kocher et al.
Oct 06
Side Channels 2 and ROP Overview/Tutorial

Week-8

Oct 09
Fall Break (No Class)
Oct 11
Side Channels 3
Oct 13
Side Channels 4

Week-9

Week-10

Week-11

Oct 30
Web Attacks-3 and Network Intro
(guest lecture by Prof. Garman)
Nov 01
Hands-on CTF examples
(by TAs)
Nov 03
Network-2

Week-12

Week-13

Week-14

Nov 20
Symmetric Key Crypto-3
Nov 22
Thanksgiving (No Class)
Nov 24
Thanksgiving (No Class)

Week-15

Week-16

Dec 04
Privacy
Dec 06
Final Review-1
pre-midterm and web
Dec 08
Final Review-2

Final

DISCLAIMER

The details in this syllabus may change (e.g. schedule, grading policy, assignments, etc.). We will update this syllabus in the event of changes as the course progresses. We will send announcements in the case of significant changes. It is your responsibility to check for the course announcements.

Credit

This page uses materials from many other instructors including Deian Stefan, Dave Tian, Aniket Kate, Pat Pannuto and Dean Tullsen.