Data Encryption Standard DES... • Bảng hoán vị đầu IP và hoán vị cuối FP... Điểm yếu của DES.
Trang 1Data Encryption Standard (DES)
Trang 2K1 48-bit
K2 48- bit
K16 48 -bitHoán vị đầu
Hoán vị cuối
Mã hóa DES
Trang 3• Bảng hoán vị đầu IP và hoán vị cuối FP
Trang 5 Khóa ban đầu K
Trang 632 bit trái 32 bít phải
S-boxp
XorE
Xor
32 bit trái 32 bit phải
Khóa 48 bit
Trang 8 S-Box
Chyển khối 48 bit thành khối 32 bit
8 khối 6 bit: s1,s2 s8 (b1b2b3b4b5b6)
Chyển S1 thành khối 4 bit
b1b6 cho giá trị thập phân i
b2b3b4b5 cho giá trị thập phân j
kết quả tại dòng i cột j của bảng S1
Trang 9Vi du : chuyển S1 (110001) thành khối 4 bit
b1b6 (11) cho giá trị thập phân i = 3
b2b3b4b5b6 (1000) cho giá trị thập phân j = 8
Kết quả tại dòng 3 cột 8 của bảng S1 là 5(thập phân) = 0101(nhị phân)
Tương tự với các bảng S2,S3 S8(có bảng riêng)
Trang 14 Giải Mã DES
Trang 15 Điểm yếu của DES
Trang 17 Bước 1: viết tin đầu
R0
Trang 18 Bước 2 : Tạo khóa
Trang 19 Tiến hành phép xor giữa E(R 0 ) và K1
E(R0)= 011110 100001 010101 010101 011110 100001 010101 01 0101 k1 = 000110 110000 001011 10 1111 111111 000111 000001 110010E(R0) Xor k1 =011000 010001 011110 111010 100001 100110 010100 10 0111 S1 S2 S3 S4 S5 S6 S7 S8
Kết quả sau phép Xor ta chia thành 8 khối 6 bit sau
đó đưa các khối vào các hộp S-box tương ứng
Chuyển S1 ( 011000 ) thành khối 4 bit: b1b6 = 00 tức là cột i =0 và b2b3b4b5b6 = 1100 hàng j = 12 tra hộp S-Box1 => giá trị tương ứng là :5(0101)
vậy dãy bít 011000 qua S-box1 thành 0101
Trang 21 L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010
dịch trái 1 bit với C0 và D0
f(R1,k2) = 0011 1100 1010 1011 1000 0111 1010 0011
L3 = R2 = 1100 1100 0000 0001 0111 0111 0000 1001
Trang 22Vòng 3:
E(R2) = 11100101 10000000 00000010 10111010 11101000 01010011 k3 = 01010101 11111100 10001010 01000010 11001111 10011001 E(R2) xor k 3 := 10110000 01111100 10001000 11111000 00100111 11001010Đầu ra S-box : = 00100111 00010000 11100001 01101111
L4 = R3 = 10100010 01011100 00001011 11110100
Vòng 4:
E(R3) = 01010000 01000010 11111000 00000101 01111111 10101001 k4 = 01110010 10101101 11010110 11011011 00110101 00011101E(R3) xor k 4 : = 00100010 11101111 00101110 11011110 01001010 10110100Đầu ra S-box : = 00100001 11101101 10011111 00111010
f(R3,k4)= 10111011 00100011 01110111 01001100
L5 = R4 = 01110111 00100010 00000000 01000101
Vòng 5:
E(R4) = 10111010 11101001 00000100 00000000 00000010 00001010 k5 = 01111100 11101100 00000111 11101011 01010011 10101000E(R4) xor k 5 : = 11000110 00000101 00000011 11101011 01010001 10100010Đầu ra S-box : = 01010000 11001000 00110001 11101011
f(R4,k5)= 00101000 00010011 10101101 11000011
L6 = R5 = 10001010 01001111 10100110 00110111
Trang 23Vòng 6:
E(R5) = 11000101 01000010 01011111 11010000 11000001 10101111 k6 = 01100011 10100101 00111110 01010000 01111011 00101111 E(R5) xor k 6 : =10100110 11100111 01100001 10000000 10111010 10000000Đầu ra S-box : = 01000001 11110011 01001100 00111101
f(R5,k6) = 10011110 01000101 11001101 00101100
L7 = R6 = 11101001 01100111 11001101 01101001
Vòng 7
E(R6) = 11110101 00101011 00001111 11100101 10101011 01010011 K7 = 11101100 10000100 10110111 11110110 00011000 10111100E(R6) xor k 7 : = 00011001 10101111 10111000 00010011 10110011 11101111 Đầu ra S-box : = 00010000 01110101 01000000 10101101
f(R6,k7) = 10001100 00000101 00011100 00100111
L8 = R7 = 00000110 01001010 10111010 00010000
Vòng 8:
E(R7) = 00000000 11000010 01010101 01011111 01000000 10100000 k8 = 11110111 10001010 00111010 11000001 00111011 11111011 E(R7) xor k 7 : = 11110111 01001000 01101111 10011110 01111011 01011011 Đầu ra S-box : = 01101100 00011000 01111100 10101110
f(R7,k8) = 00111100 00001110 10000110 11111001
L9 = R8 = 11010101 01101001 01001011 10010000
Trang 24Vòng 9:
E(R8) = 01101010 10101011 01010010 10100101 01111100 10100001 k9 = 11100000 11011011 11101011 11101101 11100111 10000001 E(R8) xor k 9 : = 10001010 01110000 10111001 01001000 10011011 00100000 Đầu ra S-box : = 00010001 00001100 01010111 01110111
f(R8,k9) = 00100010 00110110 01111100 01101010
L10 = R9 = 00100100 01111100 11000110 01111010
Vòng 10:
E(R9) = 00010000 10000011 11111001 01100000 11000011 11110100 k10 = 10110001 11110011 01000111 10111010 01000110 01001111 E(R9) xor k 10 : = 10100001 01110000 10111110 11011010 10000101 10111011 Đầu ra S-box : = 11011010 00000100 01010010 01110101
f(R9,k10) = 01100010 10111100 10011100 00100010
L11 = R10 = 10110111 11010101 11010111 10110010
Vòng 11:
E(R10) = 01011010 11111110 10101011 11101010 11111101 10100101 k11 = 00100001 01011111 11010011 11011110 11010011 10000110 E(R10) xor k 11:= 01111011 10100001 01111000 00110100 00101110 00100011 Đầu ra S-box : = 01110011 00000101 10100010 0000001
f(R10,k11) = 11100001 00000100 11111010 00000010
L12 = R11 = 11000101 01111000 00111100 01111000
Trang 25Vòng 12:
E(R11) = 01100000 10101011 11110000 00011111 10000011 11110001 k12 = 01110101 01110001 11110101 10010100 01100111 11101001 E(R11) xor k 12 : = 00010101 11011010 00000101 10001011 11100100 00011000 Đầu ra S-box : = 01111011 10001011 00100110 00110101
f(R11,k12) = 110000100 11010001 10011111 1101010
L13= R12 = 01110101 10111101 00011000 01011000
Vòng 13:
E(R12) = 00111010 10111101 11111010 10001111 00000010 11110000 k13 = 10010111 11000101 11010001 11111010 10111010 01000001 E(R12) xor k 13 := 10101101 01111000 00101011 01110101 10111000 10110001 Đầu ra S-box : = 10011010 11010001 10001011 01001111
f(R12,k13) = 11011101 10111011 00101001 00100010
L14 = R13 = 00011000 11000011 00010101 01011010
Vòng 14:
E(R13) = 00001111 00010110 00000110 10001010 10101010 11110100 k14 = 01011111 01000011 10110111 11110010 11100111 00111010 E(R13) xor k 14:= 01010000 01010101 10110001 01111000 01001101 11001110 Đầu ra S-box : = 01100100 01111001 10011010 11110001
f(R13,k14) = 10110111 00110001 10001110 01010101
L15 = R14 = 11000010 10001100 10010110 00001101
Trang 26Vòng 15 :
E(R14) = 01100000 10101011 11110000 00011111 10000011 11110001 k15 = 10111111 10010001 10001101 00111101 00111111 00001010 E(R14) xor k 15 : = 01011111 11000101 11010100 01110111 11111111 01010001 Đầu ra S-box : = 10110010 11101000 10001101 00111100
f(R14,K15) = 01011011 10000001 00100111 01101110
L16= R15 = 01000011 01000010 00110010 00110100
E(R15) = 00100000 01101010 00000100 00011010 01000001 10101000 k16 = 11001011 00111101 10001011 00001110 00010111 11110101 E(R15) xor k 16 : = 11101011 01010111 10001111 00010100 01010110 01011101 Đầu ra S-box : = 10100111 10000011 00100100 00101001
f(R15,k16) = 11001000 11000000 01001111 10011000
R16 = 00001010 01001100 11011001 10010101
Trang 27 Cuối cùng ta thu được L16 và R16 ,
chuyển đổi qua FP ta thu được bản mã sau: