CS665 Programming Assignment 1 Cache Covert and Side Channel Attack Solved
This programming assignment is designed to ensure that you are acquainted with the working principle of CPU Cache and its related security issues. In this assignment, you need to create a Cache Covert Channel to share information between Gogo and Gollu, running on two cores, in a multi-core system. Prior to create your covert channel, you can go through the “FLUSH+RELOAD” attack to get a feel and how to kick-start. The details about the attack is available in the web-link https://github.com/ Anish-Saxena/Flush-Reload. Once you understand the whats, hows, and whys, you are ready to go.
You can download/clone the code base and all other relevant files for PA1 from the following link https://github.com/skmtr1/CS665-2019-PA1
Part 1: Cache Covert Channel (FLUSH+RELOAD) This part of the assignment deals with creating a covert channel between Gogo and Gollu that are running on two separate physical cores. They cannot communicate directly for confidentiality reasons and that’s why they need to create a covert channel to communicate so that no other processes could get the information. This part consist of two tasks:
Task 1a [It is Damn Easy !! 5 Points]: In this task, you need to create a Cache Covert Channel using FLUSH+RELOAD where Gogo reads some information from the terminal and sends it to the Gollu. You can assume that the information read from the terminal will not be of more than 50 characters. You have to report the covert channel bandwidth and the accuracy of the channel.
Task 1b [This is the real assignment !! 10 Points]: This Task is an extension to Task 1a. You need to share secret information but this time it will be a text file. You can choose any text file :). This task is further divided into the following subtasks:
1. Gogo first reads a filename from the terminal and communicate the filename to Gollu using the covert channel. You can assume that the file to be send will be in the current working directory of Gogo.
2. After receiving the file name, Gollu creates a new blank file by appending received_ in front of the filename received from Gogo.
1
3. After sending the filename, Gogo then read the content of the file and communicate it to Gollu using covert channel again!
4. Gollu then writes all the received contents into a file that is earlier created by Gollu.
5. You have to report the covert channel bandwidth and the accuracy of the channel.
[Note: Gogo and Gollu’s current working directories are different]
Cache Side Channel on GnuPG Task 2a [easy peasy lemon squeezy, 5 Points]: In this task, you need to perform the FLUSH+RELOAD attack on GnuPG cryptography Library to observe accesses to critical functions like Square (S), Module (r), and Multiply (M) function during the encryption or decryption process of the RSA algorithm. For this assignment, Gogo will mount a side-channel attack with a goal to leak the critical accesses of Gollu. You have to report True Positive Rate and False Positive Rate of the side-channel.