AES is the official replacement of DES, highly-regarded, widely used symmetric cipher -- efficient in both hardware and software.
AES is a block cipher with 128 bits blocks. It takes in several size
keys: 128, 192, and 256 bits long. 128 bits is the common standard so
far.
AES inherited a lot from DES. The block configuration, the
encryption-decryption algorithmic reversibility, the concept of
successive rounds, and extended round keys, and of course, the rich use
of transposition and substitution. Yet, AES introduces new complexity
schemes which are designed to increase its security compared to DES.
bird`s view:
The 128 bits of the plaintext block are organized in a 4x4 matrix of 16
bytes (each byte has 8 bits). This matrix is called the `state matrix`.
The fitting is column wise: the 128 bits of the plaintext first fill
the first column in the state matrix, then the second, etc. AES
operation is a succession of modifications to the contents of the state
matrix from its input state to its output state.
AES features between 10 ro 14 rounds of state matrix modification. Each round is comprised of:
The per-round elements operate as follows:
box substitution : each of the 16 bytes of the state matrix is substituted with another value according to a pre-written substitution box (S-box). The S-box is a particular arrangement of all possible 256 bytes in a 16x16 matrix. Each byte in the state matrix is interpreted as follows: the leftmost 4 bits define a row in the S-box, and the four rightmost bits define a column there. This way the contents of a state byte points to some other byte value. That value now substitutes for the value that pointed to it.
shift row permutation: The four rows of the state matrix are now shifted as follows: the first row stays in tact, the second is shifted one byte to the left, where the leftmost byte is recycled to the rightmost position. The third row undergoes the same -- twice, and the 4th row shift byte-wise to the left 3 times.
column substitution: In this operation the value of each byte is substituted by a byte that is a function of all the other bytes in the column. The substitution is based on Gallois 28polynomial operation. Accordingly each byte is interprete as an x8polynomial. The state matrix is being multiplied by a fixed matrix:
2 3 1 1
1 2 3 2
1 1 2 3
3 1 1 2
This way the value of each byte in the output matrix depends on the values of all the other bytes in the column. The byte-wise multiplication (byte from the fixed matrix times byte from the state matrix) is conducted modulu:
No comments:
Post a Comment