Cryptography Data Encryption Standard Overview of the Data Encryption Standard (DES) Data Encryption Standard Simplified-DES Details of DES DES in OpenSSL Cryptography DES in Python School of Engineering and Technology CQUniversity Australia Prepared by Steven Gordon on 19 Feb 2020, des.tex, r1788 1/30
Cryptography Contents Data Encryption Standard Overview of the Overview of the Data Encryption Standard (DES) Data Encryption Standard (DES) Simplified-DES Details of DES Simplified-DES DES in OpenSSL DES in Python Details of DES DES in OpenSSL DES in Python 2/30
Cryptography Data Encryption Standard Data Encryption Standard ◮ Symmetric block cipher Overview of the Data Encryption ◮ 56-bit key, 64-bit input block, 64-bit output block Standard (DES) ◮ Developed in 1977 by NIST; designed by IBM (Lucifer) Simplified-DES with input from NSA Details of DES DES in OpenSSL ◮ Principles used in other ciphers, e.g. 3DES, IDEA DES in Python 3/30
Cryptography Contents Data Encryption Standard Overview of the Overview of the Data Encryption Standard (DES) Data Encryption Standard (DES) Simplified-DES Details of DES Simplified-DES DES in OpenSSL DES in Python Details of DES DES in OpenSSL DES in Python 4/30
Cryptography Simplified DES Data Encryption Standard ◮ Input (plaintext) block: 8-bits Overview of the Data Encryption ◮ Output (ciphertext) block: 8-bits Standard (DES) ◮ Key: 10-bits Simplified-DES Details of DES ◮ Rounds: 2 DES in OpenSSL ◮ Round keys generated using permutations and left shifts DES in Python ◮ Encryption: initial permutation, round function, switch halves ◮ Decryption: Same as encryption, except round keys used in opposite order 5/30
Cryptography S-DES Algorithm Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 6/30
Cryptography S-DES Permutations (definition) Data Encryption Standard Permutations used in S-DES: P10 (permutate) Overview of the Data Encryption Standard (DES) Input : 1 2 3 4 5 6 7 8 9 10 Simplified-DES Output: 3 5 2 7 4 10 1 9 8 6 Details of DES P8 (select and permutate) DES in OpenSSL Input : 1 2 3 4 5 6 7 8 9 10 DES in Python Output: 6 3 7 4 8 5 10 9 P4 (permutate) Input : 1 2 3 4 Output: 2 4 3 1 EP (expand and permutate) Input : 1 2 3 4 Output: 4 1 2 3 2 3 4 1 IP (initial permutation) Input : 1 2 3 4 5 6 7 8 Output: 2 6 3 1 4 8 5 7 7/30
Cryptography Other Operations in S-DES Data Encryption Standard ◮ LS-1: left shift by 1 position Overview of the Data Encryption ◮ LS-2: left shift by 2 positions Standard (DES) ◮ IP − 1 : inverse of IP, such that X = IP − 1 (IP( X )) Simplified-DES Details of DES ◮ SW: swap the halves DES in OpenSSL ◮ f K : a round function using round key K DES in Python ◮ F: internal function in each round ◮ Angled lines through arrows with a number next to them indicate the number of bits passing between the blocks 8/30
Cryptography S-DES Key Generation Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 9/30
Cryptography S-DES Encryption Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 10/30
Cryptography S-DES S-Boxes (definition) Data Encryption Standard S-Box considered as a matrix: input used to select row/column; selected element is output Overview of the Data Encryption 4-bit input: bit 1 , bit 2 , bit 3 , bit 4 Standard (DES) bit 1 bit 4 specifies row (0, 1, 2 or 3 in decimal) Simplified-DES Details of DES bit 2 bit 3 specifies column DES in OpenSSL DES in Python 01 00 11 10 00 01 10 11 11 10 01 00 10 00 01 11 S 0 = S 1 = 00 10 01 11 11 00 01 00 11 01 11 10 10 01 00 11 11/30
Cryptography Encrypt with S-DES (exercise) Data Encryption Standard Show that when the plaintext 01110010 is encrypted using S-DES with key 1010000010 that the ciphertext obtained is Overview of the Data Encryption 01110111 . Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 12/30
Cryptography S-DES Summary Data Encryption Standard ◮ Educational encryption algorithm Overview of the Data Encryption ◮ S-DES expressed as functions: Standard (DES) Simplified-DES ciphertext = IP − 1 ( f K 2 ( SW ( f K 1 ( IP ( plaintext ))))) Details of DES DES in OpenSSL plaintext = IP − 1 ( f K 1 ( SW ( f K 2 ( IP ( ciphertext ))))) DES in Python ◮ Brute force attack on S-DES is easy since only 10-bit key ◮ If know plaintext and corresponding ciphertext, can we determine key? Very hard 13/30
Cryptography S-DES Compared to Real DES Data Encryption Standard ◮ S-DES vs DES Overview of the Data Encryption ◮ Block size: 8 bits vs 64 bits Standard (DES) ◮ Rounds: 2 vs 16 Simplified-DES Details of DES ◮ IP: 8 bits vs 64 bits DES in OpenSSL ◮ F: 4 bits vs 32 bits DES in Python ◮ S-Boxes: 2 vs 8 ◮ Round key: 8 bits vs 48 bits 14/30
Cryptography Contents Data Encryption Standard Overview of the Overview of the Data Encryption Standard (DES) Data Encryption Standard (DES) Simplified-DES Details of DES Simplified-DES DES in OpenSSL DES in Python Details of DES DES in OpenSSL DES in Python 15/30
Cryptography General DES Encryption Algorithm Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 16/30
Cryptography Permutation Tables for DES Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 17/30
Cryptography Permutation Tables for DES Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 18/30
Cryptography Single Round of DES Algorithm Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 19/30
Cryptography Calculation of F(R,K) Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 20/30
Cryptography Definition of DES S-Boxes Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 21/30
Cryptography Definition of DES S-Boxes Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 22/30
Cryptography DES Key Schedule Calculation Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 23/30
Cryptography Contents Data Encryption Standard Overview of the Overview of the Data Encryption Standard (DES) Data Encryption Standard (DES) Simplified-DES Details of DES Simplified-DES DES in OpenSSL DES in Python Details of DES DES in OpenSSL DES in Python 24/30
Cryptography Data Encryption Standard Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 25/30
Cryptography DES Key Generation (exercise) Data Encryption Standard Generate a shared secret key to be used with DES and share it with another person. Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 26/30
Cryptography DES Encryption (exercise) Data Encryption Standard Create a message in a plain text file and after using DES, send the ciphertext to the person you shared the key with. Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 27/30
Cryptography DES Decryption (exercise) Data Encryption Standard Decrypt the ciphertext you received. Overview of the Data Encryption Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 28/30
Cryptography Contents Data Encryption Standard Overview of the Overview of the Data Encryption Standard (DES) Data Encryption Standard (DES) Simplified-DES Details of DES Simplified-DES DES in OpenSSL DES in Python Details of DES DES in OpenSSL DES in Python 29/30
Cryptography AES in Python Cryptography Library Data Encryption Standard ◮ cryptography.io/en/latest/hazmat/primitives/symmetric- Overview of the Data Encryption encryption/ Standard (DES) Simplified-DES Details of DES DES in OpenSSL DES in Python 30/30
Recommend
More recommend