Link Search Menu Expand Document

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).

  1. ssh username@unicorn.csail.mit.edu (lab 1) or ssh username@arch-sec-X.csail.mit.edu (lab 2)
  2. ssh-keygen -t rsa -b 4096 (note that if you already have an ssh key, you can skip this)
  3. Press return until the command finishes.
  4. cat ~/.ssh/id_rsa.pub (feel free to use an existing key if you have one)
  5. Copy this and create a new ssh key on your MIT GitHub account (instructions if you need help).
  6. git clone git@github.mit.edu:6-888-sp22/YOUR_KERBEROS_ID.git securehwlabs
  7. cd securehwlabs
  8. git config user.name "YOUR_KERBEROS_ID"
  9. git config user.email "YOUR_MIT_EMAIL"
  10. 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.

  1. git fetch lab_release
  2. git merge lab_release/labX --allow-unrelated-histories -m "Merging lab code"
  3. 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:

  1. git add FILES_YOU_CHANGED
  2. git commit -m "WHAT YOU CHANGED"
  3. git push

Resources

Here are some resources from 6.004 to help you review caches and virtual memory.

Memory Hierarchy

Caching

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.