MA 479 / CSSE 479: Cryptography
Homework 4 problems inspired by Computer Science
Rose-Hulman Institute of Technology
A joint effort of the
Department of Mathematics
and the Department of Computer Science & Software Engineering
Spring term, 2003-2004
For the programming problems:
- Use any language and environment you wish. Please check with me
if you have any questions about what features of the language or
environment you may use. In particular, please do not use
pre-packaged matrix calculation routines.
- The user interface is up to you.
- Turn in the source and object code of the program, and any
supporting materials, to these drop boxes.
- Make sure you include clear instructions on how the code is to be
run! Most of the points will be determined based on whether the program
performs correctly on test cases.
I am always open to other suggestions for programming projects. Come talk
to me if you have one in mind that you don't see here.
The non-programming problems you may turn in to the drop boxes or on paper.
Drop box submissions are due at midnight on the due date. Paper
submissions are due in class or in the box outside my office by 5:00 p.m.
- [8 points.] Write a simple four-function calculator in
GF(24). You may use table lookups for the multiplicative
inverses.
- [8 points.] Write a simple four-function calculator in
GF(28). You should compute the multiplicative inverses on
the fly.
- [16 points.] Create software that can encrypt and decrypt using
S-AES. (I will give partial credit for software that correctly
calculates and displays the results of various portions of the
algorithm if the whole algorithm does not work.)
Test data: as per the assignment in class, a binary plaintext of
0110 1111 0110 1011 encrypted with a binary key of 1010 0111 0011
1011 should give a binary ciphertext of 0000 0111 0011 1000less ecb).
Decryption should work correspondingly.
- [20 points.] Create software that can encrypt and decrypt
using AES. (I will try to give partial credit if the whole
algorithm does not work, but I can't promise it — the algorithm
may be too complicated!)
Test data: a hex plaintext of 000102030405060708090A0B0C0D0E0F with a
hex key of 000102030405060708090A0B0C0D0E0F should give a hex ciphertext
of 0A940BB5416EF045F1C39458C653EA5A. Decryption should work
correspondingly.
- [12 points.]
Implement a differential cryptanalysis attack on 1-round S-AES.
- [16 points.]
Implement a differential cryptanalysis attack on 2-round S-AES.
(If you try this problem, stop by my office for a handout to get you going.)
- [20 points.]
Implement a linear cryptanalysis attack on 1-round S-AES.
(If you try this problem, stop by my office for a handout to get you going.)
- [20 points.]
Implement a square attack cryptanalysis of 4-round S-AES. (If you try
this problem, stop by my office for a handout to get you going.)