There will be 6 laboratory exercises given throughout the semester related to lecture content.
|Lab||Difficulty||Released On||Due On|
|1. Website Fingerprinting (10%)||Easy||Mon, February 6||Thu, Feb 16|
|2. Cache Attacks (14%)||Hard||Wed, Feb 15||Thu, March 9|
|3. Spectre (12%)||Easy||Wed, March 8||Thu, March 23|
|4. Rowhammer (12%)||Hard||Wed, March 22||Thu, Apr 13|
|5. ASLR Bypasses (12%)||Easy||Wed, April 12||Thu, Apr 27|
|6. CPU Fuzzing (12% + 3% Check-off)||Moderate||Wed, April 27||Tue, May 16|
In total, your lab grade contributes 75% to your total grade in the course. Each lab is due at 23:59:59.
Over the course of the term, we will randomly select one of your labs for an in-person check-off (worth 3% of your total course grade). During a check-off you will discuss your submission with the TA, describing your implementation and elaborating on your written answers.
Labs will be submitted via GitHub Classroom, and accompanying reports will be submitted via Gradescope.
To access and submit lab materials, you will need to have a github.com account. For each lab, we will create a new repository for you on GitHub Classroom. You can checkout each assignment using the invite link posted on Piazza/Canvas.
To push your changes (submitting your work), you should perform the following:
git add FILES_YOU_CHANGED
git commit -m "WHAT YOU CHANGED"
GitHub classroom will snapshot the state of your repository at the due date (at 23:59:59), which we will use to grade your submission. Your repository will not be locked after that point, feel free to continue to push if we have allowed an extension for you.
Each lab contains exercises and discussion questions. Include your answers to these prompts in a PDF file, uploaded to Gradescope (prior to the submission deadline).
The labs in this course are run on different machines. For instance, the first lab (Website Fingerprinting) is run on your own machine, and the second lab (Cache Attacks) is run on
unicorn.csail.mit.edu. For each machine you use, you must perform the following initial setup:
- If working remotely (labs 2-6), connect using
ssh-keygen -t rsa -b 4096(note that if you already have an ssh key, you can skip this)
- Press return until the command finishes.
cat ~/.ssh/id_rsa.pub(feel free to use an existing key if you have one)
- Copy this and create a new ssh key on your GitHub account (instructions if you need help).
git clone <GITHUB CLASSROOM REPOSITORY LINK>
Students can choose to do an optional final project in place of labs 4, 5, and 6. The final project will replace the grades for those three labs.