Cryptography is the science of using mathematics to encrypt and decrypt data. Cryptography enables you to store sensitive information or transmit it across insecure networks (like the Internet) so that it cannot be read by anyone except the intended recipient. While cryptography is the science of securing data, cryptanalysis is the science of analyzing and breaking secure communication. Cryptanalysts are also called attackers. Cryptology embraces both cryptography and cryptanalysis.
AliceBob Plaintext Cipher text Key EncryptionDecryption
The Advanced Encryption Standard (AES) is a symmetric-key block cipher published by the National Institute of Standards and Technology (NIST) in December AES is a non-Feistel cipher that encrypts and decrypts a data block of 128 bits. It uses 10, 12, or 14 rounds. The key size, which can be 128, 192, or 256 bits, depends on the number of rounds. To provide security, AES uses four types of transformations: substitution, permutation, mixing, and key-adding.
Convert to state array Transformations (and their inverses) AddRoundKey SubBytes ShiftRows MixColumns Key Expansion
Input block: S 0,0 S 0,1 S 0,2 S 0,3 S 1,0 S 1,1 S 1,2 S 1,3 S 2,0 S 2,1 S 2,2 S 2,3 S 3,0 S 3,1 S 3,2 S 3,3 =
XOR each byte of the round key with its corresponding byte in the state array S 0,0 S 0,1 S 0,2 S 0,3 S 1,0 S 1,1 S 1,2 S 1,3 S 2,0 S 2,1 S 2,2 S 2,3 S 3,0 S 3,1 S 3,2 S 3,3 S’ 0,0 S ’ 0,1 S’ 0,2 S’ 0,3 S’ 1,0 S’ 1,1 S’ 1,2 S’ 1,3 S’ 2,0 S’ 2,1 S’ 2,2 S’ 2,3 S’ 3,0 S’ 3,1 S’ 3,2 S’ 3,3 S 0,1 S 1,1 S 2,1 S 3,1 S’ 0,1 S’ 1,1 S’ 2,1 S’ 3,1 R 0,0 R 0,1 R 0,2 R 0,3 R 1,0 R 1,1 R 1,2 R 1,3 R 2,0 R 2,1 R 2,2 R 2,3 R 3,0 R 3,1 R 3,2 R 3,3 R 0,1 R 1,1 R 2,1 R 3,1 XOR
Replace each byte in the state array with its corresponding value from the S-Box CC DD 2266AAEE 3377BBFF 55
Last three rows are cyclically shifted S 0,0 S 0,1 S 0,2 S 0,3 S 1,0 S 1,1 S 1,2 S 1,3 S 2,0 S 2,1 S 2,2 S 2,3 S 3,0 S 3,1 S 3,2 S 3,3 S 1,0 S 3,0 S 3,1 S 3,2 S 2,0 S 2,1
Apply MixColumn transformation to each column S 0,0 S 0,1 S 0,2 S 0,3 S 1,0 S 1,1 S 1,2 S 1,3 S 2,0 S 2,1 S 2,2 S 2,3 S 3,0 S 3,1 S 3,2 S 3,3 S’ 0,0 S ’ 0,1 S’ 0,2 S’ 0,3 S’ 1,0 S’ 1,1 S’ 1,2 S’ 1,3 S’ 2,0 S’ 2,1 S’ 2,2 S’ 2,3 S’ 3,0 S’ 3,1 S’ 3,2 S’ 3,3 S 0,1 S 1,1 S 2,1 S 3,1 S’ 0,1 S’ 1,1 S’ 2,1 S’ 3,1 MixColumns() S’ 0,c = ({02} S 0,c ) ({03} S 1,c ) S 2,c S 3,c S’ 1,c = S 0,c ({02} S 1,c ) ({03} S 2,c ) S 3,c S’ 2,c = S 0,c S 1,c ({02} S 2,c ) ({03} S 3,c ) S’ 3,c = ({03} S 0,c ) S 1,c S 2,c ({02} S 3,c
Expands the key material so that each round uses a unique round key Generates Nb(Nr+1) words Filled with just the key Filled with a combination of the previous work and the one Nk positions earlier
Encryption AddRoundKey SubBytes ShiftRows MixColumns AddRoundKey SubBytes ShiftRows AddRoundKey Decryption AddRoundKey InvShiftRows InvSubBytes AddRoundKey InvMixColumns InvShiftRows InvSubBytes AddRoundKey