Class 1 CS 480-008 26 January 2016 On the board ------------ CS480: Advanced Computer Systems Instructor: Michael Walfish TA: George Wong http://www.cs.nyu.edu/~mwalfish/classes/16sp 1. Introduction --Goals --Skills --Structure --Preview 2. Mechanics and admin 3. Intro to networking 4. Questionnaire --------------------------------------------------------------------------- 1. Intro --Hello --Official goals are to learn: --how stuff works --how to approach systems (or proposed systems) critically --how to design and build (these are related) --Skills you will pick up: --learn to read research papers --implementation skills --handling large code bases (tools are important here! don't skip the various tutorials!) --general CS literacy and maturity --Structure of the course --first part: Networking --second part: Security, mainly systems security this will be roughly half of the class one reason: interesting topic. another reason: in order to understand security, you're forced to apprehend a full system a third reason: coherent lab sequence necessitates major focus. (JOS would have had the same thing.) --remaining parts: let's see where things go one option, if everyone is enjoying security: further security topics. or further network topics. another option: branch out. concurrency, multicore, distributed systems, etc. email us if there are topics or papers you'd like us to cover --Preview Networking: * How Web browsing actually works; more on this later Security: hard problem: achieving a property despite attacks; requires systematic thought high-level plan: * write down the policy (or goal) example: only TA can read/modify the grades file * write down the threat model (assumptions about what attacker can do) example: can send network traffic to our servers, can physically steal the machine * mechanism: software/hardware that the system uses to enforce the policy example: user accounts, passwords, file permissions, encryption building secure systems is hard: * the policy is usually a negative goal [no non-TA can read the file] * huge number of potential attacks to consider Exploit a bug in the server's code. Guess the TA's password. Steal the TA's laptop, maybe it has a local copy of the grades file. Intercept grades when they are sent over the network to the registrar. Get a job in the registrar's office ... ... or as the TA! * hard to get policies/threats/mechanisms right on the first try; usually you iterate. examples of what can go wrong: problems with the policy: Sarah Palin email hack true policy: can login with a password or knowledge of the answers to the security questions] [ Ref: http://en.wikipedia.org/wiki/Sarah_Palin_email_hack ] problems with the threat model / assumptions: assumption that CA wouldn't be compromised assumption that hardware is trustworthy problems with the mechanism -- bugs: missing access control checks parsing code buffer overflows Within this unit, we will cover: * Buffer overflows * Defending against them * Sandboxing * Symbolic execution * Untrusted OSes * Web security 2. Mechanics and admin course Web page: please check it every day. we will communicate three ways: Web page Piazza email components of the course: --class meetings --assigned reading --labs --exams --homeworks (maybe) class meetings --mix of lecture and discussion (more on that in a moment) --will put lecture notes online --no laptops --encourage questions assigned reading --sometimes background material, often papers --read papers ahead of time --because we will discuss the reading --ASK: cold-calling? night-before questions? occasional quizzes? labs --this is how you actually learn --I used to tell people, "Start early". Now I say, "Start on time". --You need to allocate time. --I'm expecting you to feel challenged by the labs. The concept of "no pain no gain" applies to learning. exams --see course page grading --see course page policies --read the policies page! (tells you about late hours, among other things.) --the collaboration and academic integrity policy is real. last spring, we referred 40% of the students in cs202. --if you're falling behind, **talk to us** --among other things, we will remind you that it's not fatal if a lab isn't done (some of the labs will be challenging...we're not necessarily expecting 100% of the students to get 100% of the lab points) --specifically, you can still do well in the class even if you get a 0 on a lab (or a 75 on a test, etc.). lab mechanics --we assume you have a desktop or laptop on which you can install software. please talk to us if you don't. --lab0: this is about getting integrated with our setup. take the time to walk through the tutorials (on ssh, git, etc.) --lab1: network server --lab2: buffer overflows --lab3: defend against buffer overflows C programming --lab1 requires some C programming. if you are rusty in C programming, address that **now**. --here are some exercises: --cs202sp15, lab 1, part 1 --cs202sp15, hw1 --cs202sp15, hw5 If the class begins to get overwhelming, please talk to us. class trajectory still being worked out. 3. Intro to Networking What's a network? --just a bunch of interconnected channels (nodes and edges) --railroad, highway, plumbing, communication, telephone --social --computer!!!! The Internet from 100,000 feet [draw overview picture: routers, switches, hosts, clouds, etc.] Model hand data to a provider; it is forwarded to its destination the Internet is *host-oriented*, meaning: --much of the "intelligence" is implemented on the end-points --the middle of the network is "dumb" (in principle) Networks are *layered* app 7 transport 4 network 3 link 2 physical 1 [In reality, things are messier. But still highly useful to think about layering.] [Draw picture of laptop and Web server] Layering shows up in multiple ways: Functional roles Software architecture Packets Case study: what happens when you click a link? [draw picture of the layers] In the first unit of this class, you will be exposed to: --network layer --transport layer --app layer 4. Collect questionnaire