In this project, you are going to design and (partially) implement a secure communication system
between two parties.
Requirements:
The requirements of the system include:
1. The two parties have each other’s RSA public key. Each of them holds his/her own RSA
private key.
2. Each party’s data (from a file) is encrypted using AES before sending it to another party.
3. The AES key is protected using the receiver’s RSA public key and the ciphertext is sent
together with the encrypted data.
4. Message authentication code should be appended to data transmitted. You are free to
choose the specific protocol of MAC
5. The receiver should be able to successfully authenticate, decrypt the message, and read
the original message.
You need to implement a program for each role (i.e., sender and receiver).
You don’t need to include actual socket programming in your code. You can just use
local files as the channel to simulate the communication in the network.
For example, to implement requirement 1 above, we let each party locally generate a key
pair and save each key in a corresponding file. The other party will be able to know the public
key by accessing the file.
Programming language and library
You can choose either OpenSSL Crypto Library as we used in previous homeworks or you can
use Java Cryptography Architecture for your project. For Java based implementation, more
helpful information can be found in the following links.