640 likes | 1.51k Views
DES Algorithm. Data Encryption Standard. DES Features. Block cipher, 64 bits per block 64-bit key, with only 56 bits effective ECB mode and CBC mode. DES – Key Scheduling. Specify a 64-bit key There are eight parity bits The key structure is in the next page. DES – Key Scheduling.
E N D
DES Algorithm Data Encryption Standard
DES Features • Block cipher, 64 bits per block • 64-bit key, with only 56 bits effective • ECB mode and CBC mode
DES – Key Scheduling • Specify a 64-bit key • There are eight parity bits • The key structure is in the next page
DES – Key Scheduling • Key permutation according to “Permuted Choice 1”(PC-1) • After permutation, the key length will be only 56 bits • 64 bits → 56 bits? Why? • The explanation is in the next page
Permuted Choice 1 Note: The 8n-th bit is disappeared!!
DES – Key Scheduling • We separate the 56-bit key to two 28-bit keys: Lk and Rk • “Left rotate” the Lk and Rk according to SRT (Subkey Rotation Table) • After rotation, merge Lk and Rk • Permutation according to Permuted Choice 2 (PC-2) • We get a 48-bit subkey now
DES – Key Scheduling • Repeat the operation 16 times to get 16 subkeys • Use rotated Lk and Rk • Why each subkey has length of only 48 bits instead of 56 bits? • The answer is similar to PC-1
Subkey Rotation Table Permuted Choice 2
DES – Key Scheduling Flow Chart • “<<<” is the operation of SRT • We will call the subkeys K[1], K[2], …, K[16] later
Plaintext Preparation • Cut the plaintext into 64-bit blocks • Each 64-bit block should be permuted according to Initial Permutation Table (IP Table) • Besides, we make an Inverse Initial Permutation Table (IP-1), which has effect opposite to IP
IP: Initial Permutation IP-1: Inverse Initial Permutation
DES – Core Function • L[0] to L[15], R[0] to R[15] • Feistel (F) function • Inverse Initial Permutation
Feistel Function • Expansion: using E-bit Selection Table • Key Mixing: XOR with subkeys • Substitution: S-box • Permutation: P-box
Feistel Function - Expansion E-Bit Selection Table • Copy R[0] to a buffer Rb • Rb: 32 bits → 48 bits
Feistel Function – Key Mixing • After the expansion operation, just “XOR” with subkey K[1]
Feistel Function - Substitution • 48-bit buffer becomes eight 6-bit blocks • 8 S-boxes have output from 0 to 15 which can be represented with 4 bits • How do S-boxes work? Wait and see… • 8 4-bit outputs can be merged, and store it in a 32-bit buffer
How do S-boxes Work? Column Row Use the Row and Column number to find the corresponding output number from the S-box. Besides, the n-th block must use the n-th S-box.
S-Box 1: Substitution Box 1 S-Box 2: Substitution Box 2
S-Box 3: Substitution Box 3 S-Box 4: Substitution Box 4
S-Box 5: Substitution Box 5 S-Box 6: Substitution Box 6
S-Box 7: Substitution Box 7 S-Box 8: Substitution Box 8
Feistel Function - Permutation • After the substitution, do permutation according to the P-box P Permutation
DES – Core Function • After one round of Feistel Function is completed, the buffer is “XORed” with L, becoming the next R • Previous R becomes the next L • Repeat the operations mentioned above 16 times
DES – Core Function • When 16 rounds are finished, L and R are swapped and merged, then becomes a 64-bit “pre-output” • Use IP-1 to become the final cipher output
DES - Decryption • Almost all operations are the same as those of encryption • Only one is different: use the subkeys in descending order
DES – Other Form • Triple-DES: quite literally. A Triple-DES key has length of 192 bits. It can be considered three 64-bit DES key. • DES40: a key is pre-processed to make it a 40-bit effective key
DES - Modes • ECB (Electronic Code Book) • CBC (Cipher Block Chaining)