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

Bài giảng an toàn thông tin thuật toán DES và các hàm băm

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 (433.19 KB, 61 trang )

I. THUẬT TOÁN DES
(THE DATA ENCRYPTION STANDARD)

1


LỊCH SỬ CỦA THUẬT TOÁN DES
- Ngày 13/5/1973 ủy ban quốc gia về tiêu chuẩn

của Mỹ công bố yêu cầu về hệ mật mã áp dụng
cho toàn quốc. Điều này đã đặt nền móng cho
chuẩn mã hóa dữ liệu, hay là DES.
- Lúc đầu Des được công ty IBM phát triển từ hệ
mã Lucifer, công bố vào năm 1975.
- Sau đó Des được xem như là chuẩn mã hóa dữ
liệu cho các ứng dụng.

2


CẤU TRÚC THUẬT TOÁN
DES là thuật toán mã hóa khối, độ dài mỗi khối là

64 bit .
Khóa dùng trong DES có độ dài toàn bộ là 64 bit.
Tuy nhiên chỉ có 56 bit thực sự được sử dụng; 8
bit còn lại chỉ dùng cho việc kiểm tra.
Des xuất ra bãn mã 64 bit.

3



MÔ TẢ THUẬT TOÁN
Thuật toán được thực hiện trong 3 giai đoạn:
1. Cho bản rõ x (64bit) được hoán vị khởi tạo
IP (Initial Permutation) tạo nên xâu bit x 0.
x0=IP(x)=L0R0
L0 là 32 bit đầu tiên của x0.
R0 là 32 bit cuối của x0.

4


BỘ CHUYỂN VỊ IP

5

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


MÔ TẢ THUẬT TOÁN (tt.)
2.

6


Tính 16 vòng lặp của một hàm xác định. Ta sẽ tính L iRi với
1<=i<=16. Theo qui tắc:
for(i=1;i<=16,i++){
Li=Ri-1
Ri=Li-1f(Ri-1,Ki)
}
với:
 là phép XOR của hai xâu bit:
0  0=0 ,
1  1=0
1  0=1,
0  1=0
f là hàm mà ta sẽ mô tả sau.
Ki là các xâu có độ dài 48 bit được tính như là các hàm
của khóa K.
K1 đến K16 lập nên một lịch khóa.


Một
vòng
của
quá
trình
lập mã
được
mô tả
qua
hình
sau:


7


MÔ TẢ THUẬT TOÁN
3. Áp dụng hoán vị ngược IP-1 cho xâu bit R16L16 ta nhận được
bản mã y.
y= IP-1(R16L16).

8

40

8

48

16

56

24

64

32

39

7


47

15

55

23

63

31

38

6

46

14

54

22

62

30

37


5

45

13

53

21

61

29

36

4

44

12

52

20

60

28


35

3

43

11

51

19

59

27

34

2

42

10

50

18

58


26

33

1

41

9

49

17

57

25

Hoán
vị IP-1


Hoán vị IP-1
Hàm f lấy đối số đầu là xâu nhập Ri (32 bit)
đối số thứ hai là Ki (48bit) và tạo ra xâu xuất có
độ dài 32 bit. Các bước sau được thực hiện.
1. Đối số đầu Ri sẽ được “mở rộng” thành xâu có
độ dài 48 bit tương ứng với hàm mở rộng E cố
định.
E(Ri) bao gồm 32 bit từ Ri, được hoán vị theo

một cách thức xác định, với 16 bit được tạo ra 2
lần.


9


Hàm f (tt.)
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

Hàm mở rộng E
10


2. Tính E(Ri)  Ki và viết kết quả như là nối của 8
xâu 6bit.
B=B1B2B3B4B5B6B7B8
3. Bước kế tiếp là sử dụng 8 S-box (S1 ,S2, …,S8).
Mỗi Si là một mảng 4x16 cố định có các phần tử
là các số 0 đến 15.
Cho xâu có độ dài 6 bit Bj= b1b2b3b4b5b6, ta
tính Sj(Bj) như sau: Hai bit b1b6 xác định biểu diễn
nhị phân của hàng r của Sj (0<=r<=3) và 4 bit
b2b3b4b5 xác định biểu diễn nhị phân của cột c của
Sj (0<=c<=15).
Đầu ra của mỗi hộp S là một xâu xuất 4 bit.

11


Ví dụ: Ta có B1=011000 thì b1b6=00 (xác định r=0),
b2b3b4b5=1100 (xác định c=12), từ đó ta tìm được phần tử ở vị trí
(0,12) --> S1(B1)=0101 (tương ứng với số 5).

b2b3b4b5=1100

b1b6=00

14

4

13

1

2

15 11

8

3

10

6


12

5

9

0

7

0

15

7

4

14

2

13

1

10

6


12 11

9

5

3

8

4

1

14

8

13

6

2

11 15 12

9

7


3

10

5

0

15 12

8

2

4

9

1

7

3

14 10

0

6


13

5

11

Hộp S1
12

-Mỗi xâu xuất 4 bit của các hộp S được đưa vào
các Cj tương ứng: Cj = Sj(Bj) (1<=j<=8).


4. Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị
tương ứng với hoán vị cố định P. Kết quả có P(C)= f(Ri,Ki).

13

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

Hoán vị P


F

Sơ đồ hàm f
14



Khóa K
- K là một xâu có độ dài 64 bit trong đó 56 bit dùng

làm khóa và 8 bit dùng để kiểm tra sự bằng nhau
(phát hiện lỗi).
- Các bit ở các vị trí 8, 16,…, 64 được xác định,
sao cho mỗi byte chứa số lẻ các số 1, vì vậy từng
lỗi có thể được phát hiện trong mỗi 8 bit.
- Các bit kiểm tra sự bằng nhau là được bỏ qua khi
tính lịch khóa.

15


Quá trình tạo các khóa con (subkeys) từ khóa K được
mô tả như sau:
1. Cho khóa K 64 bit, loại bỏ các bit kiểm tra và

hoán vị các bit còn lại của K tương ứng với
hoán vị cố định PC-1. Ta viết PC1(K) = C0D0, với
C0 bao gồm 28 bít đầu tiên của PC-1(k) và D0 là
28 bit còn lại.

16


Các hoán vị cố định PC-1 và PC-2:
57


49

41

33

25

17

9

14

17

11

24

1

5

1

58

50


42

34

26

18

3

28

15

6

21

10

10

2

59

51

43


35

27

23

19

12

4

26

8

19

11

34

60

52

44

36


16

7

27

20

13

2

63

55

7

39

31

23

15

41

50


31

37

47

55

7

62

54

46

38

30

22

30

40

51

45


33

48

14

6

61

53

45

37

29

44

49

39

56

34

53


21

13

5

28

20

12

4

46

42

50

36

29

32

PC1

17


PC2


2. Với i nằm trong khoảng từ 1 đến 16, ta tính Ci, Di như sau:
for(i=1;i<=16;i++){
Ci = LSi(Ci-1)
Di = LSi(Di-1)
}
Và Ki = PC-2(CiDi).
- PC-2 là 1 hoán vị cố định khác.
- LSi biểu diễn phép chuyển chu trình sang trái của 1
hoặc của 2 vi trí tùy thuộc vào giá trị của i.
- Đẩy sang trái 1 vị trí nếu i= 1, 2, 9 hoặc 16, và đẩy 2
vị trí trong những trường hợp còn lại.

18


Sơ đồ tạo các
khóa con

19


Giải mã
Việc giải mã dùng cùng một thuật toán như
việc mã hoá.
Để giải mã dữ liệu đã được mã hoá, quá
trình giống như mã hoá được lặp lại nhưng các

chìa khoá phụ được dùng theo thứ tự ngược lại
từ K16 đến K1, nghĩa là trong bước 2 của quá trình
mã hoá dữ liệu đầu vào ở trên Ri-1 sẽ được XOR
với K17-i chứ không phải với Ki.

20


Thời gian thực hiện
 Tính bảo mật của một hệ mã hoá đối xứng là một hàm hai

tham số: độ phức tạp của thuật toán và độ dài của khoá.
 Giả sử rằng tính bảo mật chỉ phụ thuộc vào độ phức tạp
của thuật toán.
 Có nghĩa rằng sẽ không có phương pháp nào để phá vỡ
hệ thống mật mã hơn là cố gắng thử mọi khoá có thể,
phương pháp đó được gọi là brute-force attack. Nếu khoá
có độ dài 8 bít, suy ra sẽ có 28=256 khoá. Vì vậy, sẽ mất
nhiều nhất 256 lần thử để tìm ra khoá đúng.

21


Thời gian thực hiện (tt)
 Nếu khoá có độ dài 56 bít, thì sẽ có 256 khoá có thể

sử dụng. Giả sử một Suppercomputer có thể thử một
triệu khoá trong một giây, thì nó sẽ cần 2000 năm để
tìm ra khoá đúng. Nếu khoá có độ dài 64 bít, thì với
chiếc máy trên sẽ cần 600,000 năm để tìm ra khoá

đúng trong số 264 khoá. Nếu khoá có độ dài 128 bít,
thì sẽ mất 1025 năm để tìm ra khoá đúng. Vũ trụ chỉ
mới tồn tại 1010 năm, vì vậy 1025 thì một thời gian
quá dài. Với một khoá 2048 bít, một máy tính song
song thực hiện hàng tỉ tỉ phép thử trong một giây sẽ
tiêu tốn một khoảng thời gian là 10597 năm để tìm ra
khoá. Lúc đó vũ trụ có lẽ không còn tồn tại nữa.
22


Đặc điểm của mã DES
1. Tính chất bù của mã DES:
DES có tính chất bù:

trong đó :
Ā là phần bù của A theo từng bít (1 thay bằng
0 và ngược lại).
EK là bản mã hóa của E với khóa K. P và C là văn
bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã
hóa).
Do tính bù, ta có thể giảm độ phức tạp của tấn công
duyệt toàn bộ xuống 2 lần (tương ứng với 1 bít) với
điều kiện là ta có thể lựa chọn bản rõ.
23


2.

Các khóa yếu trong mã Des:
Ngoài ra DES còn có 4 khóa yếu (weak keys). Khi

sử dụng khóa yếu thì mã hóa (E) và giải mã (D) sẽ cho
ra cùng kết quả:
EK(EK(P)) = P or equivalently, EK = DK

Bên cạnh đó, còn có 6 cặp khóa nửa yếu (semiweak keys). Mã hóa với một khóa trong cặp, K1, tương
đương với giải mã với khóa còn lại, K2:
EK1(EK2(P))=P or equivalently EK1=DK2

Tuy nhiên có thể dễ dàng tránh được những khóa
này khi thực hiện thuật toán, có thể bằng cách thử hoặc
chọn khóa một cách ngẫu nhiên. Khi đó khả năng chọn
phải khóa yếu là rất nhỏ.
24


3. Triple DES: 
Triple-DES chính là DES với hai chìa khoá 56 bit.
Cho một bản tin cần mã hoá, chìa khoá đầu tiên được
dùng để mã hoá DES bản tin đó.
Kết quả thu được lại được cho qua quá trình giải mã
DES nhưng với chìa khoá là chìa khoá thứ hai.
Bản tin sau qua đã được biến đổi bằng thuật toán
DES hai lần như vậy lại được mã hoá DES một lần nữa
với chìa khoá đầu tiên để ra được bản tin mã hoá cuối
cùng.
Quá trình mã hoá DES ba bước này được gọi là
Triple-DES.

25



×