You will develop a secure remote capitalizer using AES and client-server socket programming

profilezoko
Project2.pdf

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.