This project is an opportunity to explore AES Encryption. There are two options for this project: a programming option and a mathhematics exploration option. These are described below. You may choose which option to do. You may work with a partner on this project.

Programming Option

In this option you will use the Python Cryptography Ciphers, specifically the AES cipher, to demonstrate why the ECB mode of operation for block ciphers SHOULD NEVER be used. Your program will swap one or more blocks of ciphertext of a message with the respective blocks from a different ciphertext, demonstrating that when using ECB mode, block ciphers can easily be forged.

You may work with a partner on this project. The Challenge Exercises are optional.

  1. Be sure you have completed the AES Programming Exercises.
  2. Exercise 3.7 (page 68) from "Practical Cryptography". Your program should be able to replace part of one message with part of the other message. The exercise suggests to begin by replacing the last block of the new message with the last block of the older message. This probably does not decrypt exactly like you thought.

  3. Consider making changes to the message format to make it easier to switch one block for another. For example, you may want to change the format of the date so that it uses the same number of digits for all dates.

  4. Modify your program so that it asks the user which part of the message to change (From Who, To Whom, Date, or Meeting place).

  5. Your program should take the user input and swap out the respective block(s) of one message with the respective block(s) from another message. The newly created ciphertext should decrypt to something that looks like a real message.

  6. Challenge: Modify your program so that it swaps more than one element of the message. The message should decrypt to something that makes sense.

  7. Challenge: Modify your program so that it creates an entirely new encrypted message by concatenating blocks of ciphertext from at least 3 different messages. This new ciphertext should decrypt to something that looks like a real message.

Submit your programs on Kit.


Mathematics Exploration Option

In this option you will learn some mathematics of polynomial arithmetic which will be applied to encrypt and decrypt using a simplified AES algorithm, and will answer some big picture questions about AES. There are documents on Kit that will be needed for this project option.

You may enjoy the following Stick-Figure Guide to AES: Stick Figure Guide to AES.

  1. Read Section 4.3 in the Paar textbook.

  2. Read the PolyArithmetic document (an excerpt from William Stallings' Cryptography and Network Security) in the AES Files folder under "Student Files" on Kit.

  3. Answer Problems 4.23, 4.24, 4.25 parts a and b, and 4.27, found in the AESExercises document in the AES Files folder on Kit.

  4. Read the Appendix 5A and 5B document from the AES Files folder on Kit. (This is another excerpt from the William Stallings book.)

  5. Answer Review Questions 5.3, 5.4, 5.5 in the AESExercises document.

  6. Answer Problems 5.6, 5.10, 5.11, and 5.12 in the AESExercises document. You must show your work at each step of encryption and decryption.

Submit your solutions on Kit.