Cryptography Advanced Encryption Standard Overview of AES Advanced Encryption Standard Simplified-AES Simplified-AES Example Details of AES Cryptography AES in OpenSSL AES in Python School of Engineering and Technology CQUniversity Australia Prepared by Steven Gordon on 19 Feb 2020, aes.tex, r1789 1/30
Cryptography Contents Advanced Encryption Standard Overview of AES Overview of AES Simplified-AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL Simplified-AES Example AES in Python Details of AES AES in OpenSSL AES in Python 2/30
Cryptography History of AES Advanced Encryption Standard ◮ 1977: DES (56-bit key). NIST published. Overview of AES ◮ 1991: IDEA, similar to DES, secure but patent issues Simplified-AES ◮ 1999: 3DES (168-bit key). NIST recommended 3DES Simplified-AES be used (DES only for legacy systems) Example ◮ 3DES was considered secure (apart from special case Details of AES attacks) AES in OpenSSL ◮ But 3DES is very slow, especially in software AES in Python ◮ DES and 3DES use 64-bit blocks larger block sizes required for efficiency ◮ 1997: NIST called for proposals for new Advanced Encryption Standards ◮ Proposals made public and evaluations performed ◮ 2001: Selected Rijndael as the algorithm for AES 3/30
Cryptography Selecting a Winner Advanced Encryption ◮ Original NIST criteria: Standard ◮ Security: effort to cryptoanalyse algorithm, randomness, Overview of AES . . . Simplified-AES ◮ Cost: royalty-free license, computationally efficient, . . . Simplified-AES Example ◮ Algorithm and implementation characteristics: flexibility Details of AES (different keys/blocks, implement on different systems), simplicity, . . . AES in OpenSSL AES in Python ◮ 21 candidate algorithms reduced to 5 ◮ Updated NIST evaluation criteria for 5 algorithms: ◮ General Security ◮ Software and hardware implementations (needs to be efficient) ◮ Low RAM/ROM requirements (e.g. for smart cards) ◮ Ability to change keys quickly ◮ Potential to use parallel processors 4/30
Cryptography Selecting Rijndael for AES Advanced Encryption Standard ◮ Security: good, no known attacks Overview of AES ◮ Software implementation: fast, can make use of parallel Simplified-AES processors Simplified-AES ◮ Hardware implementation: fastest of all candidates Example Details of AES ◮ Low memory requirements: good, except encryption AES in OpenSSL and decryption require separate space AES in Python ◮ Timing and Power analysis attacks: easiest to defend against ◮ Key flexibility: supports on-the-fly change of keys and different size of keys/blocks 5/30
Cryptography Overview of Rijndael/AES Advanced Encryption ◮ Rijndael allows variety of block and key sizes Standard ◮ 128, 160, 192, 224 and 256 bits Overview of AES ◮ Key can be different size to block Simplified-AES ◮ AES standardises block size of 128 bits, key sizes of Simplified-AES Example 128, 192 and 256 bits Details of AES ◮ We will use S-AES to help understand AES in OpenSSL ◮ Again, S-AES is not used in the real world, only an AES in Python educational tool ◮ For details of AES (S-Boxes and other operations), see the Stallings textbook 6/30
Cryptography Contents Advanced Encryption Standard Overview of AES Overview of AES Simplified-AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL Simplified-AES Example AES in Python Details of AES AES in OpenSSL AES in Python 7/30
Cryptography Simplified-AES Advanced Encryption Standard ◮ Input: 16-bit block of plaintext; 16-bit key Overview of AES ◮ Output: 16-bit block of ciphertext Simplified-AES ◮ Four operations: Simplified-AES ◮ Add Key: XOR of a 16-bit key and 16-bit state matrix Example ◮ Nibble substitution: table lookup that swaps nibbles Details of AES (4-bits) AES in OpenSSL ◮ Shift Row: shift of nibbles in a row AES in Python ◮ Mix Column: re-order columns ◮ 3 rounds: ◮ Round 0: Add key ◮ Round 1: All four operations ◮ Round 2: Three operations 8/30
Cryptography S-AES Encryption and Decryption Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 9/30
Cryptography S-AES State Operations Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 10/30
Cryptography S-AES Add Key and Shift Row Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 11/30
Cryptography S-AES Nibble Substitution Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 12/30
Cryptography S-AES Mix Column Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 13/30
GF(2 4 ) Addition used in S-AES Cryptography Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 14/30
GF(2 4 ) Multiplication used in S-AES Cryptography Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 15/30
Cryptography S-AES Key Expansion Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 16/30
Cryptography Comparing S-AES and AES Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 17/30
Cryptography Contents Advanced Encryption Standard Overview of AES Overview of AES Simplified-AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL Simplified-AES Example AES in Python Details of AES AES in OpenSSL AES in Python 18/30
Cryptography Encrypt with S-AES (exercise) Advanced Encryption Show that when the plaintext 1101 0111 0010 1000 is Standard encrypted using Simplified-AES with key 0100 1010 1111 Overview of AES 0101 that the ciphertext obtained is 0010 0100 1110 Simplified-AES 1100 . Simplified-AES Example Details of AES AES in OpenSSL AES in Python 19/30
Cryptography Contents Advanced Encryption Standard Overview of AES Overview of AES Simplified-AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL Simplified-AES Example AES in Python Details of AES AES in OpenSSL AES in Python 20/30
Cryptography AES Design Features Advanced Encryption ◮ Only the Add Key stage makes use of the key Standard ◮ The other 3 stages (Shift Row, Mix Column, Nibble Overview of AES Substitution) provide confusion and diffusion of bits. Simplified-AES On their own, they provide no security (do not use key) Simplified-AES ◮ The four operations are easily reversible (for decryption) Example ◮ Encryption and decryption algorithms not identical Details of AES ◮ Final round is only 3 operations, so algorithm is AES in OpenSSL AES in Python reversible ◮ S-Box design aims: ◮ Low correlation between input bits and output bits ◮ Cannot describe output as simple function of input ◮ No fixed or opposite points, for example S-box(a) � = a ◮ Mix columns and shift rows ensure all output bits depend on all input bits after several rounds ◮ In Mix Columns, encryption more efficient than decryption ◮ Very efficient implementations for 8- and 32-bit processors 21/30
Cryptography AES Parameters Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 22/30
Cryptography AES Encryption and Decryption Advanced Encryption Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 23/30
Cryptography Contents Advanced Encryption Standard Overview of AES Overview of AES Simplified-AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL Simplified-AES Example AES in Python Details of AES AES in OpenSSL AES in Python 24/30
Cryptography AES Key Generation (exercise) Advanced Encryption Generate a shared secret key to be used with AES and share Standard it with another person. Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 25/30
Cryptography AES Encryption (exercise) Advanced Encryption Create a message in a plain text file and after using AES, Standard send the ciphertext to the person you shared the key with. Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 26/30
Cryptography AES Decryption (exercise) Advanced Encryption Decrypt the ciphertext you received. Standard Overview of AES Simplified-AES Simplified-AES Example Details of AES AES in OpenSSL AES in Python 27/30
Recommend
More recommend