Information Security - Project Symmetric Cipher
Symmetric Cipher / Implement the encryption algorithm
• Consider the following encryption algorithm
- Key size: 32 bits
- Block size: 48 bits
- Structure: SP-Network with 10 rounds
- S-box is the same as AES
- M: Linear Transition
• M is a 3x3 matrix in GF(28)
• GF(28) is the same field in AES
-p(x) = x8 + x4 + x3 + x1 +1
• Consider the following encryption algorithm (cont.)
- Key Schedule
• Rotl(x, n): n-bit circular left-shift of x
• Generate W (544-bit length) from a master key K
W = K || K0 || k1 || .... || k15
= K || Rotl(K,5) || Rotl(K,10) || Rotl(K,15) || ... || Rotl(K,11) || Rotl(K,16)
• Generate rk0, rk1, rk10 by extracting leftmost 48-bit from W
- Use only 11 (528-bit) keys and throw out the rest 16-bit
1. Implement the encryption algorithm
- Express the matrix multiplication as a linear combination of vectors
- Define three tables and store them in advance
Takes as input a byte value and produces a column vector that is a function of the S-box entry for that byte value
- Implement using the table lookup operations, XOR operations per column per round
2. Find the key K
- E(K, 0x0123456789AB) = 0xFBD040D6DB9C and
- E(K, 0x9A6BCC10E84A) = 0xE5CBFFF7E08B