Assignment 3Public Key Crypto



Narrative:
You live in a country where freedom of speech is not always granted. As such you need to learn how to send emails securely. Unfortunately, you email provider does not provide you with ready-to-use tools to encrypt your emails, so you will have to do this "by hand."

Assignment Goals:
In this assignment, the goal is to learn how to use public key cryptography to secure network communications.

Description:
You will need to interact and exchange secure emails with our TA using GPG. You need to do everything on your VM's command line, by following the steps below:

Step 1: Generate your own 4096 bits RSA key pair, with an expiration date of Jan 1, 2016; use your UGA email as ID. Submit your (ASCII armored) public key.


Step 2: You are given a course public key (see link below), for which you need to verify its fingerprint, trust fully, and sign. Export and submit the resulting signed public key
(ASCII armored).

Step 3: You will be given a message encrypted with your own pub key; you need to decrypt the message, "detach-sign" the resulting plaintext, and submit both the original plaintext message and the signature (ASCII armored) in two separate files.


Step 4: Concatenate the message derived in Step 3 with your name; encrypt the result with the course pub key, and submit the (ASCII armored) ciphertext.

Step 5: Use the plaintext message obtained in Step 4; Encrypt the message using 3DES with the following symmetric key "Email Security"; Detach-sign the resulting ciphertext and submit both the ciphertext and signature files (both ASCII armored).

Hints:
GPG should already be installed in your VM.
Use sudo apt-get install haveged to help with increasing entropy for key generation.

Grading:
This Assignment is worth 10 points (two points per step).

Course key:
The course public key fingerprint is: 2D7F F441 4CBA 70B6 C7B2  3AA6 F003 A60A 476D FB05
Download the course public key from here.

Solution Submission::

1) Name all files using the following format, and submit it via nike, under a directory called "Assignment3"

Plaintext files: YOUUSERNAME_stepX.txt
Pub-key ciphertext files: YOUUSERNAME_stepX.gpg
Signatures files: YOUUSERNAME_stepX.sig
Symmetric-key ciphertext files: YOUUSERNAME_stepX.sym
README files: YOUUSERNAME_stepX.readme

2) For every step, create a README file (named as indicated above) that contains the sequence of GPG commends you used to complete the task at hand. For example, for Step 4, I would create a text file called perdisci_step4.readme that contains the list of commands I used to encrypt the plaintext using 3DES and to detach-sign it.

3) ONLY FOR STEP 1: besides submitting the necessary files via nike, also send your (ASCII armored) public key to <abbas@uga.edu>. This will allow you to receive the encrypted message for Step 3.