Labs
There will be 5 laboratory exercises given throughout the semester related to lecture content.
Lab | Released On | Due On |
---|---|---|
1. Cache Side Channels | Wed, February 9 | Wed, March 2 |
2. Spectre | Wed, February 23 | Wed, March 16 |
3. Website Fingerprinting | Wed, March 9 | Wed, April 6 |
4. Rowhammer | Wed, March 30 | Wed, April 20 |
5. ASLR Bypasses | Wed, April 13 | Wed, May 4 |
Each lab is due at 11:59 PM.
Starter Code
All of the starter code is available at our GitHub.
Submission Instructions
Labs will be submitted via GitHub.
Your repo will be located at https://github.mit.edu/6-888-sp22/YOUR_KERBEROS_ID
For lab 1, we will be using the Unicorn machine located at unicorn.csail.mit.edu
. We will be emailing you credentials you can use to connect to this machine. Please note that at the end of the semester we will be deleting your account on this machine, so don’t store anything important on it! (Your lab code will be safe as it is in git).
Once you’ve received your credentials, you can login to unicorn with:
ssh username@unicorn.csail.mit.edu
For lab 2, we will be using the arch-sec machines located at arch-sec-X.csail.mit.edu
, where X is a number. We will be emailing you credentials and your exact machine hostname that you can use to connect to your machine. Please note that at the end of the semester we will be deleting your account on this machine, so don’t store anything important on it!
For lab 3, you will be using your own machine.
New Machine Setup
Once you’ve logged into your machine, you will need to set up your Git account and repository. This only needs to be done once per machine (so it must be done before starting lab 1 on Unicorn, done on your assigned arch-sec machine before starting lab 2, and done on your own machine prior to starting lab 3).
ssh username@unicorn.csail.mit.edu
(lab 1) orssh username@arch-sec-X.csail.mit.edu
(lab 2)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 MIT GitHub account (instructions if you need help).
git clone git@github.mit.edu:6-888-sp22/YOUR_KERBEROS_ID.git securehwlabs
cd securehwlabs
git config user.name "YOUR_KERBEROS_ID"
git config user.email "YOUR_MIT_EMAIL"
git remote add lab_release git@github.mit.edu:6-888-sp22/lab_release.git
Each Lab
To pull the starter code for each lab, you’ll need to perform the following.
git fetch lab_release
git merge lab_release/labX --allow-unrelated-histories -m "Merging lab code"
git push
Where the X
in labX
is replaced with the lab number (so for lab 3, you’ll merge lab_release/lab3
).
Submission
Every time you push to your repo, you have also submitted your lab!
You can push to the repo with the following:
git add FILES_YOU_CHANGED
git commit -m "WHAT YOU CHANGED"
git push
Resources
Here are some resources from 6.004 to help you review caches and virtual memory.
Final Project
Students can choose to do an optional final project in place of labs 3, 4, and 5. The final project will replace the grades for those three labs.