You will develop a secure remote capitalizer using AES and client-server socket programming
1
ECE 542 Spring 2019: Bonus Project
Due: 11:59pm, May 2, 2019
1) Introduction
You will develop a secure remote capitalizer using AES and client-server socket programming.
2) The Protocol Description
The protocol runs in the following way:
1) The client reads a line of lowercase characters (data) with arbitrary length from its keyboard, shows them on the screen, encrypts the data (the line of the lowercase characters as a whole
message) using AES, and sends the ciphertext to the server. It should display what string
received from the keyboard, and what ciphertext (in ASCII) is sent.
2) The server receives the ciphertext, decrypts it into characters, converts the characters into uppercase, encrypts the string, then sends it back to the client. The server should display the
received ciphertext from client, decrypted string, and the ciphertext sent back to client.
3) The client receives the ciphertext and decrypts it into characters. The client should show the received ciphertext and the decrypted string.
An example output of the programs is as follows:
C: lower-case string: acdbej
ciphertext sent: Eax+=vwMEb9TcP4J
S: ciphertext received: Eax+=vwMEb9TcP4J
decrypted lower-case string: acdbej
ciphertext sent: A9Pc9[=0Ye8qI2mv
C: ciphertext received: A9Pc9[=0Ye8qI2mv
decrypted string: ACDBEJ
3) Individual programming assignment
This is an individual programming assignment. That is, no collaboration is allowed. You can
discuss your ideas with your classmates or instructor, but you should write down you own code.
4) Programming Environment
You can use either C/C++, Java, or Python to implement the program. You can implement it in
either Linux/Unix or Windows operating systems. For easy grading, please don’t use any GUI
interface unless it is necessary. Both command and messages should be displayed in the console.
You may need to use crypto libraries. The information about open source crypto libraries can be
found here: https://en.wikipedia.org/wiki/Comparison_of_Cryptography_Libraries,
https://pypi.python.org/pypi/pycrypto, https://www.openssl.org/
2
5) Requirements
The following items are required for full-credit:
The client should be able to connect to the server running on any machine. Therefore, the server IP address should be a command line parameter for the client program.
Client and server program should run on two separate computers or two separate virtual machines on the same computer.
Your source codes must be commented.
Include a README file, all source codes, and a Makefile (or executable Setup) in your submission.
Note: in your README file, the following information should be included: the functions that
have been implemented, the instructions about how to compile and run your program, known
bugs, and sample outputs (screenshot). The software and hardware environments where your
program can run.
6) Questions (15 points)
a) What AES algorithm do you use? What is the key length?
b) Test the following lengths of strings: 10, 16, 35 letters. What are the lengths of the
corresponding ciphertexts? Do they have the same lengths as the corresponding strings?
Why?
c) What transport layer protocol do you use? Why?
7) Code grading (85 points)
Correctness and Robustness (65 points)
o You will lose at least 10 points for any bugs that cause the system crash.
o You will lost at least 30 points if your message is not encrypted
Comments and style (10 points)
README and Makefile (10 points)
8) Submission Instruction
(1) Copy all your files (only source codes, data file, README, and Makefile/Setup, no object
file and executable file) in a directory. The directory should be named like
lastname_firstnameinitial_bp. For example, if you name is John Smith, your directory name
should be smith_j_bp.
(2) Generate a tar or zip file of the directory using the following command. To generate a tar file
on Linux/Unix machine, enter the parent directory of your current directory and type
% tar cvf lastname_firstnameinitial_bp.tar lastname_firstnameinitial_bp
For example: %tar cvf smith_j_bp.tar smith_j_bp
(3) Each student should individually submit the tar or zip file to the Blackboard Bonus Project
folder.