Tải bản đầy đủ (.ppt) (27 trang)

Data Encryption Standard (DES) pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (501.29 KB, 27 trang )


Data Encryption Standard (DES)
Data Encryption Standard (DES)

DES

Khối 64 bit

Khóa 56 bít

16 vòng lặp mã hóa

Mỗi vòng lặp kết hợp Hoán vị + Đơn thế
Mã hóa DES
Khóa 56 bít

Tin


Tin 64- bit Khóa 64 bit
Vòng 1
Vòng 2
FP
Vòng 16
Mã 64- bit
IP KS
K1 48-bit
K2 48- bit
K16 48 -bit
Hoán vị đầu
Hoán vị cuối


Mã hóa DES




Bảng hoán vị đầu IP và hoán vị cuối FP
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
40 8 48 16 56 24 32
39 7 47 15 55 23 31
38 6 46 14 54 22 30
37 5 45 13 53 21 29
36 4 44 12 52 20 28
35 3 43 11 51 19 27
34 2 42 10 50 18 26
33 1 41 9 49 17 25
Bảng FP (IP
-1
) Bảng IP
IP(b1b2 b64) = b58b50 b7 FP(b1b2 b64) = b40b8 b25

57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27

19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Bảng KS1

KS1 chuyển khối 64 bit thành 2 khối 28 bit

KS1(b1b2 b64) = b57b49 b36b63 b4

KS2 chuyển 2 khối 28 bit thành khối 48 bit

KS2(b1b2 b56) = b14b17 32
Bảng KS2


Khóa ban đầu K

(C
0
,D

0
) =KS1(K)

K
i
= KS2(C
i
,D
i
)

Ci

Dịch chuyển vòng tròn sang trái 1bit Ci-1
nếu i = 1,2,9,16

Dịch chuyển vòng tròn sang trái 2 bit Ci-1
trong các trường hợp khác

Tương tự cho Di

32 bit trái 32 bít phải
S-box
p
Xor
E
Xor
32 bit trái 32 bit phải
Khóa 48 bit


Vòng lặp DES


E(b1b2 b32) = b32b1 b1

P(b1b2 b32) = b16b7 b25
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Bảng E
Bảng P


S-Box

Chyển khối 48 bit thành khối 32 bit


8 khối 6 bit: s1,s2 s8 (b
1
b
2
b
3
b
4
b
5
b
6
)

Chyển S1 thành khối 4 bit

b
1
b
6
cho giá trị thập phân i

b
2
b
3
b
4
b
5

cho giá trị thập phân j

kết quả tại dòng i cột j của bảng S1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 23 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Hộp S thứ 1
Vi du : chuyển S1 (110001) thành khối 4 bit
b
1
b
6
(11) cho giá trị thập phân i = 3
b
2
b
3
b
4
b
5
b
6
(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)


15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Hộp S thứ 2
Hộp S thứ 3

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 12 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Hộp S thứ 4
Hộp S thứ 5

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

Hộp S thứ 6
Hộp S thứ 7

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Hộp S thứ 8


Giải Mã DES

Sử dụng cùng 1 dãy khóa

Thứ tự các khóa được đảo ngược

Thực hiện cùng số vòng lặp


Điểm yếu của DES

Tìm khóa bằng vét cạn:
Có 2^56 khả năng.

Sử dụng tính bù để loại trừ số khả năng khóa
C = DES(k,m) => C = DES(k , m)
ví dụ: 1011 = 0100

Khóa yếu
C = DES(k,m) và m = DES(k,c)

C = DES(k
1
,m) và m = DES(k
2
,c)

Mã thám

Visai

Tuyến tính

Davies

Bài tập
Bài tập

Cho một bản rõ có nội dung như sau:
“0123456789ABCDEF”

Sử dụng khóa:
“133457799BBCDEF1”

Mã hóa DES ?


Bước 1: viết tin đầu
vào dạng nhị phân:
0000 0001 0010 0011
0100 0101 0110 0111

1000 1001 1010 1011
1100 1101 1110 1111

Cho qua bảng IP ta thu
được L0 và R 0:
L0 = 1100 1100 0000 0000
1100 1100 1111 1111
R0 = 1111 0000 1010 1010
1111 0000 1010 1010

Mở rộng R0 qua bảngE:
E(R0) = 0111 1010 0001 0101
0101 0101 0111 1010
0001 0101 0101 0101
1 1 0 0 1 1 0 0
0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0
1 1 1 1 1 1 1 1
1 1 1 1 0 0 0 0
1 0 1 0 1 0 1 0
1 1 1 1 0 0 0 0
1 0 1 0 1 0 1 0
0 1 1 1 1 0
1 0 0 0 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 1 1 1 0
1 0 0 0 0 1
0 1 0 1 0 1
0 1 0 1 0 1

IP
E
L0
R0




Bước 2 : Tạo khóa

Khóa dạng nhị phân:
0001 0011 0011 0100
0101 0111 0111 1001
1001 1011 1011 1100
1101 1111 1111 0001

Cho khóa qua bảng
KS1 & KS2 :
Ta được K1(48bit)
0001 1011 0000 0010
1110 1111 1111 1100
0111 0000 0111 0010

1 1 1 1 0 0 0
0 1 1 0 0 1 1
0 0 1 0 1 0 1
0 1 0 1 1 1 1
0 1 0 1 0 1 0
1 0 1 1 0 0 1
1 0 0 1 1 1 1

0 0 0 1 1 1 1
0 0 0 1 1 0
1 1 0 0 0 0
0 0 1 0 1 1
1 0 1 1 1 1
1 1 1 1 1 1
0 0 0 1 1 1
0 0 0 0 0 1
1 1 0 0 1 0
C0
D0
KS1
KS2


Tiến hành phép xor giữa E(R
0
) và K1

E(R
0
)= 011110 100001 010101 010101 011110 100001 010101 01 0101
k1 = 000110 110000 001011 10 1111 111111 000111 000001 110010
E(R
0
) 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: b
1
b
6
= 00
tức là cột i =0 và b
2
b
3
b
4
b
5
b
6
= 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


Tương tự với :

S2(010001 1100)

S3(0111101000)

S4(1110100010)

S5(1000011011)


S6(1001101101)

S7(0101001001)

S8(1001110111)
Dãy bit thay thế:
0101 1100 1000 0010 1011 0101 1001 0111

0010 0011 0100 1110 1010 1001 1011 1011
Sau khi qua hộp P ta đem kết quả XOR với L0 ->R1:
1110 1111 0100 1010 0110 0101 0100 0100
P


L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010

Tiến hành dịch bit với C0 và D0
dịch trái 1 bit với C
0
và D
0

C1 : 1110 0001 1001 1001 0101 0101 1111
D1 : 1010 1010 1100 1100 1111 0001 1110

Với L1 , R1, (C
1
,D
1

) làm đầu vào của vòng 2

Vòng 2:
E(R1) = 0111 0101 1110 1010 0101 0100 0011 0000 1010 1010 0000 1001
k2 = 0111 1001 1010 1110 1101 1001 1101 1011 1100 1001 1110 0101
E(R1) xor k 2 : = 0000 1100 0100 0100 1000 1101 1110 1011 0110 0011 1110 1100
Đầu ra S-box : = 1111 1000 1101 0000 0011 1010 1010 1110
f(R1,k2) = 0011 1100 1010 1011 1000 0111 1010 0011
L3 = R2 = 1100 1100 0000 0001 0111 0111 0000 1001

Vò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
f(R2,k3) = 01001101 00010110 01101110 10110000
L4 = R3 = 10100010 01011100 00001011 11110100
Vòng 4:
E(R3) = 01010000 01000010 11111000 00000101 01111111 10101001
k4 = 01110010 10101101 11010110 11011011 00110101 00011101
E(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 10101000
E(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

Vò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 10111100
E(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

Vò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

Vò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

×