Network Security Spring 2019

Network Security explores practical elements of securing networked systems and services. The course goals are the following:

  • Provide a solid understanding of the design and analysis of network security architectures, protocols, and services
  • Provide an in-depth examination of contemporary network security standards and their limitations
  • Provide hands-on experience in attacking and defending network services

Topics covered by this course include:

  • Security foundations
  • Attacks against the network stack
  • Wireless security
  • Naming and routing
  • Distributed systems and consensus
  • Privacy and anonymity
  • Web security


  • Class meetings are Tuesdays 11:45-13:25 and Thursdays 14:50-16:30 in 320 Shillman
  • Office hours are 15:00-17:00 Mondays and 14:00-16:00 Fridays in 618 ISEC


Grades will be assigned based on the completion of assignments, quizzes, and a final exam. Points will also be awarded for class participation.

Component Contribution
Assignments 80%
Quizzes 15%
Participation 5%


This course requires significant “programming maturity” and a solid background in computer networking. This is a consequence of the fact that security spans many domains. Moreover, not only must you know the relevant abstractions, you must know how they are implemented in order to understand how to break them. Therefore, you must have passed a networking course covering design concepts and programming APIs for Ethernet, 802.11, IP, TCP, and UDP, at a minimum. It is virtually impossible to learn networking concepts on the fly and pass this class. If you don’t satisfy one this prerequisite, you should only take this class after you have done so.

In addition, practical familiarity with the following or the ability to refer to other references and documentation for the following is also required:

  • Programming languages: Shell scripting, C and C++ (C++11 or later), scripting languages such as Python or Ruby, JavaScript and popular frameworks like jQuery
  • SSH: Remote login, connection tunneling
  • Source control: Git, GitHub or GitLab

If you aren’t familiar with these technologies or are uncomfortable referring to available documentation on your own, logic and experience both dictate that you will have significant difficulty with this course.

As a concrete example for calibration purposes: If asked to write a TCP client that connects to a remote endpoint and engages in a simple binary proof-of-work protocol from a grammar-based specification, this should take on the order of one hour rather than on the order of a week’s time.


Cheating. Work submitted for grading must represent your own effort. Group work is not allowed unless a problem statement specifically states otherwise. Similarly, use of third-party content (for code, whether as a library, service, or in source form) is only permissible in the context of the allowances explicitly made as part of a problem statement. “Use” in this context refers not only to copying in the cut-and-paste sense, but any content derived from third-party work. A non-exhaustive list of plagiarism examples include:

  • Copying third-party code verbatim that was published in an online source code repository, forum, or other reference site such as GitHub, GitLab, Stack Overflow, Wikipedia, or similar
  • Adapting an algorithm found in third-party code published online
  • Collaborating on code with other students, such as adapting code written by another student or working together on a shared code base at any point

While referring to third-party code can be helpful in devising your own solution, it is also extremely dangerous as it is all too easy to plagiarize without realizing it. (It is for exactly this reason that viewing source code published online that may be relevant to a product is almost always strictly forbidden in corporate settings due to intellectual property concerns.) While discussing course material with other students is encouraged, it is strongly recommended that students refrain from viewing any third-party source code.

Cheating damages the reputation of the university as well as the grades of students who participate in the course in good faith. As such, there will be zero tolerance for cheating in this course. Students that participate in this course must acknowledge that they have read and understood the University Academic Integrity Policy. All cheating cases will be brought to the CCIS Academic Integrity Committee and to OSCCR on the first offense. Finally, all students found to be cheating will receive a failing grade on the first offense.

Grading. Late assignments will be accepted, with the caveat that grading will be penalized by a full letter grade for each day that an assignment is late. Grades may be subject to a curve.

Reference Material. There is no official textbook for this course. Instead, we will rely on lectures and readings. If you need to brush up on background material on algorithms, architecture, systems, or networks, strongly reconsider whether you satisfy the course prerequisites.

Due to the fast pace of the field, much information is only available online and thus referring to third-party online sources is encouraged. However, keep in mind that referring to third-party source code is permissible only within the constraints of the class and university academic integrity policies.

Online Discussion. Online discussion and questions will be handled through Slack, not via email. A best effort attempt will be made to respond to posts within 24 hours on weekdays during normal working hours. To ensure a timely response, do not wait to ask questions until the night before a submission deadline.

Ethics. This course covers sensitive material that includes information on how to exploit vulnerable software. Attack-oriented work must be restricted to the computing resources provided. Alternatively, students can perform this work using personal resources so long as other computing resources are not affected.

In particular, attacks performed against University resources or the open Internet are expressly prohibited. Students should also be familiar with the University Appropriate Use policy.


Note: This schedule is preliminary and subject to change
Date Module Topics and Readings
Thu Jan 10 Foundations Introduction
Tue Jan 15 The Network Stack Packet Capture
Thu Jan 17 The Network Stack ARP Spoofing and Cache Poisoning
Tue Jan 22 The Network Stack TCP Reset Injection
Thu Jan 24 The Network Stack TCP Reset Injection
Tue Jan 29 The Network Stack TCP Stream Reassembly
Thu Jan 31 The Network Stack Intrusion Detection Evasion
Tue Feb 05 Core Internet Services Transport Layer Security; Quiz
Thu Feb 07 Core Internet Services Transport Layer Security
Tue Feb 12 Core Internet Services The Domain Name System
Thu Feb 14 Core Internet Services The Domain Name System
Tue Feb 19 Core Internet Services DNSSEC
Thu Feb 21 Core Internet Services DNSSEC
Tue Feb 26 Core Internet Services DNSCrypt
Thu Feb 28 Core Internet Services DNSCrypt
Tue Mar 05 - Spring Break
Thu Mar 07 - Spring Break
Tue Mar 12 Privacy and Anonymity Onion Routing and Censorship
Thu Mar 14 Privacy and Anonymity Onion Routing and Censorship
Tue Mar 19 Privacy and Anonymity Onion Routing and Censorship
Thu Mar 21 Privacy and Anonymity Onion Routing and Censorship
Tue Mar 26 Web Security XSS, CSP
Thu Mar 28 Web Security SQL Injection, Path Confusion
Tue Apr 02 Software Memory Corruption Attacks and Defenses; Quiz
Thu Apr 04 Software Memory Corruption Attacks and Defenses
Tue Apr 09 Software Memory Corruption Attacks and Defenses
Thu Apr 11 Software Fuzz Testing
Tue Apr 16 Software Sandboxed Behavioral Analysis


Name Submission Deadline
Memory Corruption Sat Apr 27 18:00 EDT
Web Security Thu Apr 18 18:00 EDT
Routing and Privacy Thu Apr 04 18:00 EDT
DNS Spoofing Thu Mar 14 18:00 EDT
Network Intrusion Detection Thu Feb 14 18:00 EST
ARP Spoofing Thu Jan 24 18:00 EST
Proof of Work Thu Jan 17 18:00 EST