Lecture 6,7
Lecture 6,7
Lecture 6,7
Secret Key
Cryptography
Secret Key Cryptography
• Both encryption and decryption keys are the same and are kept secret
• The secret key must be known at both ends to perform encryption or
decryption (Fig)
• Secret Key algorithms are fast and they are used for encrypting\
decrypting high volume data
• Secret key cryptography is classified into two types
• Block Ciphers
• Stream Ciphers
Stream Ciphers
Plaintext bits
Key K
A block cipher is a type of symmetric encryption which operates on
blocks of data. Modern block ciphers typically use a block length of
128 bits or more
Examples of block ciphers include DES, AES, RC6, and IDEA
A block cipher breaks message into fixed sized blocks
Takes one block (plaintext) at a time and transform it into another
block of the same length using a user provided secret key
Decryption is performed by applying the reverse transformation to the
ciphertext block using the same secret key
Most symmetric block ciphers are based on a Feistel Cipher Structure
(Explained in next slides)
Properties of Good Ciphers:
Confusion and Diffusion
• In cryptography, confusion and diffusion are two properties of
the operation of a secure cipher which were identified by
Shannon in his paper, "Communication Theory of Secrecy
Systems" published in 1949
• Confusion refers to making the relationship between the key and
the ciphertext as complex and involved as possible
• This is achieved by having each cipher text digit be affected by
many plain text digits.
• Diffusion refers to the property that redundancy in the statistics
of the plaintext is "dissipated" in the statistics of the ciphertext
• Associate dependency of bits of the output to the bits of input
• In a cipher with good diffusion, flipping an input bit should change
each output bit with a probability of one half
AIM of Confusion n Diffusion
• The mechanism of diffusion seeks to make the
statistical relationship between the plaintext
and ciphertext as complex as possible in order
to intruder attempts to deduce the key.
confusion seeks to make the relationship
between the statistics of the ciphertext and
the value of the encryption key as complex as
possible, again to intruder attempts to
discover the key.
Achieved in cryptosystems
• In binary block ciphers, diffusion can achieved
by repeatedly performing some permutation
on the data followed by applying a function to
that permutation
• Feistel cipher
– In 1970’s, Horst Feistel (IBM T.J. Watson
Research Labs) invented a suitable (practical)
structure which adapted Shannon’s S-P
network
– Encryption and decryption use the same
structure
Feistel Cipher Structure
Plaintext (2w bits)
L0 R0
Round 1
w bits w bits
Ideas for each round:
1. partition input block into two halves
Round 2
2. process through multiple rounds
which
perform a substitution on left data half
based on a round function of right
half &
subkey
3. then have permutation swapping
halves Round n
Ln Rn
w bits w bits
• Overview
• Encryption
• Decryption
• Security
DES – Data Encryption Standard
• A Block cipher
• Data encrypted in 64-bit blocks using a 56-bit key
(effective key); Ciphertext is of 64-bit long
• Encrypts by series of substitution and transpositions (or
permutations)
DES History
• The first commercially available Feistel Cipher was developed by IBM
in the 1960's; called Lucifer (by Feistel and Coppersmith)
• US National Bureau of Standards (NBS) issued a call for proposals in
1972
• Lucifer was refined, renamed the Data Encryption Algorithm (DEA)
in 1974
• Adopted as the standard by NBS in 1976
• DES is the first official U.S. government cipher intended for
commercial use
• Replacement standard (AES) is in effect May 26, 2002
– http://csrc.nist.gov/CryptoToolkit/aes/frn-fips197.pdf
Input of DES
• Data: need to be broken into 64-bit blocks; add pad at the
last message if necessary.
e.g. X =(3 5 0 7 7 F 1 0 A B 1 2 F C 6 5)HEX
• Secret key:
Any string of 64 bits long including 8 parity bits.
1 parity bit in each 8-bit byte of the key may be utilized for error
detection in key generation, distribution, and storage
K=(k1…k7k8… k15k16 k17…k24…k32… k40… k48… k56… k64)
The bits k8, k16, k24, k32, k40, k48, k56, k64 can be used for parity
check
DES Encryption Diagram
64-bit plaintext
Initial permutation
K1 Iteration 1
16 sub-keys of Iteration 2
K2
each 48-bits
K16 Iteration 16
32-bit Swap
Inverse permutation
64-bit ciphertext
Description
• DES operates on 64-bit blocks of plaintext. After an
initial permutation the block is broken into right half
and left half, each being 32 bits long
• There are 16 rounds of identical operations, call
function f, in which data are combined with 16 keys of
48 bits, one for each round
• After the 16th round the right and left halves are joined,
and a final permutation (the inverse of the initial
permutation) finishes the algorithm
• Because DES’s operation is very repetitive, it is readily
implementable in hardware, as well as software
DES Round Structure
• Uses two 32-bit L & R halves
• As for any Feistel cipher can describe as:
Li = Ri–1
Ri = Li–1 xor F(Ri–1, Ki)
• Takes 32-bit R half and 48-bit sub-key and:
– expands R to 48-bits using perm E (Transposition)
– adds to subkey (Substitution)
– passes through 8 S-boxes to get 32-bit result (S&T)
– finally permutes this using 32-bit perm P (transposition)
DES Round Structure
DES Module Operations
• Permutation boxes
– Specific boxes used in DES includes: PC1 and PC2 for sub-key
generation; IP, IP-1, E-box and P-box
• Substitution boxes
– 8 specific S-boxes are used in DES; This is the core of DES; This
step is non-linear
• Modulo 2 addition
– Addition in binary form; used in function f
• 32 bits registers
– Use only to store data. In the key generator two shift registers are
used to cyclically shift the data used in key generation
Permutation
1 0 1 0 0 1 0 0 0 Output
Substitution
Initial permutation
• 64 bits output of Initial
permutation is split:
K1 Iteration 1 – Left hand 32 bits sent to L
– Right hand 32 bits sent to R
K2 Iteration 2
56-bit key
K16 Iteration 16
32-bit Swap
Inverse permutation
64-bit ciphertext
Initial Permutation (IP)
• IP is determined as the following table
• It occurs before round one
• Bits in the plaintext are moved to next location, e.g. bit 58 to bit 1, bit
50 to bit 2 and bit 42 to bit 3, etc
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Initial Permutation (IP)
• Since M = 3570 E2F1 BA46 82C7HEX = (0011 0101
0111 0000 1110 0010 1111 0001 1011 1010 0100 0110
1000 0010 1100 0111), then IP(M) = [L0 R0] where
• L0 = 1010 1110 0001 1011 1010 0001 1000 1001 =
AE1BA189HEX
• R0 = 1101 1100 0001 1111 0001 0000 1111 0100 =
DC1F10F4HEX
• Now we have L0 and R0 ready for iteration!
Operations in Each Round
Structure
32 bits 32 bits
Li-1 Ri-1
Li Ri
32 bits 32 bits
f(Ri-1, Ki)
R (32 bits)
S1 S2 S3 S4 S5 S6 S7 S8
32 bits
Computation of f(Ri-1, Ki)
• Three types of boxes: E, S, P
• R (32 bits) is passed to expansion and permutation box E-
box
• 48 bits output of E-box is added modulo 2 to 48 bits sub-
key and result sent to S boxes
• S boxes (S1, S2…S8) store a set of numbers; input 48
(=68) bits used to look up numbers like a code book and
32 bits output is sent to permutation box P
• Permutation box P permutes 32 bit input producing a 32-
bit output
E-box used in DES
• The E-box expands 32 bits to 48 bits; it changes
the order of the bits as well as repeating certain
bits.
Bit 32 1 2 3 4 5 4 5 6 7 8 9
Goes to bit 1 2 3 4 5 6 7 8 9 10 11 12
Bit 8 9 10 11 12 13 12 13 14 15 16 17
Goes to bit 13 14 15 16 17 18 19 20 21 22 23 24
Bit 16 17 18 19 20 21 20 21 22 23 24 25
Goes to bit 25 26 27 28 29 30 31 32 33 34 35 36
Bit 24 25 26 27 28 29 28 29 30 31 32 1
Goes to bit 37 38 39 40 41 42 43 44 45 46 47 48
Substitution Boxes S
• Have eight S-boxes which map 6 to 4 bits
• Each S-box is actually 4 little 4 bit boxes
– outer bits 1 & 6 (row bits) select one rows
– inner bits 2-5 (col bits) are substituted
– result is 8 lots of 4 bits, or 32 bits
• Row selection depends on both data & key
– feature known as autoclaving (autokeying)
• Example:
S(1809123d11173839) = 5fd25e03
Input of S-boxes
• R0 = DC1F10F4HEX and
• K = K0 = 27A169E58DDAHEX ; (here K is not the secret key but a symbol for all sub-keys)
• E(R0) = 0110 1111 1000 0000 1111 1110 1000 1010 0001 0111 1010 1001 =
6F80FE8A 17A9HEX
• E(R0) K0 = 0100 1000 0010 0001 1001 0111 0110 1111 1001 1010 0111 0011 =
4821976F9A73HEX
• Input Z = 4821976F9A73HEX into S-boxes
R (32 bits)
E
48 bits K (48 bits)
+
Z
S-box
• After the sub-key is XORed with the expanded right blocked, 48-bit result
moves to the substitution operation, S-boxes
• The S-boxes in DES swap bits around in the 48-bit block in a reversible
manner
• Each S-box are differently defined.
• Each input “b1b2b3b4b5b6”, S box will output a hexadecimal number at
– Row = (b1b6)
– Column = (b2b3b4b5 )
S1 S2 S3 S4 S5 S6 S7 S8
P
32 bits
S-box used in DES – S1 and S2
S1 S2 S3 S4 S5 S6 S7 S8
A1EC961CHEX
P
32 bits
P-box used in DES
• The P-box permutation is determined as below which is a
straight permutation; no bits are used twice, and no bits are
ignored.
• P(A1EC961CHEX) = 0010 1011 1010 0001 0101 0011 0110
1100 = 2BA1536CHEX
Bit 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10
Goes to bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Bit 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
Goes to bit 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
DES Key Schedule
Generating subkeys used in each
round
• consists of:
– initial permutation of the key (PC1) which selects
56-bits in two 28-bit halves
– 16 stages consisting of:
• selecting 24-bits from each half
• permuting them by PC2 for use in function f,
• rotating each half separately either 1 or 2 places
depending on the key rotation schedule K
Sub-Key generations
PC1
48-bit sub-keys
C1 D1
PC2 K1
C2 D2
PC2 K2
C3 D3
C16 D16
PC2 K16
Permuted Choice 1 (PC1)
• The table below specifies how the key is loaded to memory in PC1.
• If 64-bit Secret Key K = [0101 1000 0001 1111 1011 1100 1001 0100
1101 0011 1010 0100 0101 0010 1110 1010], then PC1(K) = [L R]
where both L and R are 28 bits long and
L = [1011110011010001101001000101] and
R = [1101001000101110100001111111]
Bit 57 49 41 33 25 17 9 1 58 50 42 34 26 18
Goes to bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Bit 10 2 59 51 43 35 27 19 11 3 60 52 44 36
Goes to bit 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Bit 63 55 47 39 31 23 15 7 62 54 46 38 30 22
Goes to bit 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Bit 14 6 61 53 45 37 29 21 13 5 28 20 12 4
Goes to bit 43 44 45 46 47 48 49 50 51 52 53 54 55 56
Shift Registers C and D
• The contents of C = {C1, C2, … C16} and D = {D1, D2, … D16} are
circularly shifted to left by 1 or 2 bits (according to a shift table) prior to
each iteration
• Total of 28 bit shifts will be done after 16 rounds
• Shift tables is determined as below.
• Assume we are at the first round. According to the table, the number of
shift to left =1.
• C1(L) = 0111100110100011010010001011 and
D1(R) = 1010010001011101000011111111
• And C2(C1(L)) 1111001101000110100100010110 and
D2(D1(R)) = 0100100010111010000111111111
Round No. of Shift to left Round No. of Shift to left
1 1 9 1
2 1 10 2
3 2 11 2
4 2 12 2
5 2 13 2
6 2 14 2
7 2 15 2
8 2 16 1
Permuted Choice 2 (PC2)
• PC2 is determined by the table below
• Consider input X= [C1(L) D1(R)] and Y=[C2(L) D2(R)]
• K1 = PC2(X) = 27 A1 69 E5 8D DA HEX =
(00100111 10100001 01101001 11100101 10001101 11011010)
• K2 = PC2(Y) = DA91 DDD7 B748HEX =
(110110 101001 000111 011101 110101 111011 011101 001000)
Bit 14 17 11 24 1 5 3 28 15 6 21 10
Goes to bit 1 2 3 4 5 6 7 8 9 10 11 12
Bit 23 19 12 4 26 8 16 17 27 20 13 2
Goes to bit 13 14 15 16 17 18 19 20 21 22 23 24
Bit 41 52 31 37 47 55 30 40 51 45 33 48
Goes to bit 25 26 27 28 29 30 31 32 33 34 35 36
Bit 44 49 39 56 34 53 46 42 50 36 29 32
Goes to bit 37 38 39 40 41 42 43 44 45 46 47 48
Use Sub-keys to encrypt
64-bit plaintext
32-bit Swap
64-bit ciphertext
An example for first two rounds
First Round
• L0 = AE1BA189HEX and R0 = DC1F10F4HEX
• Sub-key K1 = 27A169E58DDAHEX
• f(R0,K1) = 2BA1536CHEX
• L0 f(R0,K1)=1000 0101 1011 1010 1111 0010 1110
0101=85BAF2E5HEX
• L1 = DC1F10F4HEX and R1 = 85BAF2E5HEX
L0 R0
L1 R1
Second Round
• L1 = DC1F10F4HEX and R1 = 85BAF2E5HEX
• Sub-key K2 = DA91DDD7B748HEX
• E(R1) =110000001011110111110101011110100 101011100001011
= C0BDF57A570BHEX
• E(R1) K2=000110100010110000101000101011011110 000001000011
• S1(000110)=0001; S2(100010)=1110;S3(110000)=1011; S4(101000)=1100;
S5(101011)=1110; S6(011110)=1011; S7(000001)=1101; S8(000011)=1111
• P(8 outputs of S-boxes) = 0101 1111 0011 1110 0011 1001 1111 0111
= 5F3E39F7HEX = f(R1,K2)
• L1 f(R1,K1)
= 1000 0011 0010 0001 0010 1001 0000 0011
L1 R1
= 8321 2903HEX
• L2= R1 = 85BAF2E5HEX ; R2= 83212903HEX
L1 f(R1, K2)
L2 R2
The last step to get Ciphertext
DES – Ciphertext
32 bits 32 bits
Li-1 Ri-1 • Express DES encryption
algebraically (in binary
number)
– Rj=Lj-1 f(Rj-1,Kj)
Li-1 f(Ri-1, Ki)
– Lj=Rj-1
• After 16 rounds of iterations,
For i=16 Li Ri the contents of L and R are
32 bits 32 bits swapped and input to Inverse
permutation
32-bit Swap • Finally, a 64-bit ciphertext is
Inverse permutation
done!
64-bit ciphertext
Inverse Initial Permutation (IP ) -1
56-bit key
K2 Iteration 2 Iteration 2 K15
=M
Strength of DES
• 56-bit key (256 = 7.2 x 1016 values) is susceptible to exhaustive key
search due to rapid advances in computing speed
• Have demonstrated breaks
– 1997 on a large network of computers in a few months
– 1998 on dedicated H/W in a few days (www.eff.org/descracker)
• EFF (Electronic Frontier Foundation) DES Cracker
• 1536 chips and search 88 billion keys/second
• $250,000 cost, won the RSA DES Challenge II Contest in less than 3
days (56 hours)
– 1999 above combined in 22 hours !! (DES Cracker + 100,000 computers)
– DES also theoretically broken using Differential or Linear Cryptanalysis
• DES Controversy
– Although the standard is public, the design criteria used are classified