Tải bản đầy đủ (.pdf) (54 trang)

Bài giảng Bảo mật thông tin - Bài 3: Mã hóa đối xứng hiện đại

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 (3 MB, 54 trang )

Trình bày:
Ths. Lương Trần Hy Hiến
o/hutech/baomatthongtin


1.

Mã dòng

2.

Mã khối

3.

DES

4.

Một số thuật toán mã khối khác

5.

Các mô hình ứng dụng mã khối

6.

Bố trí công cụ mã hóa

7.


Quản lý trao đổi khóa bí mật
2








Kích thước một đơn vị mã hóa: gồm k bít.
Bản rõ được chia thành các đơn vị mã hóa:
P p0p1p2…pn-1 (pi: k bit)
Một bộ sinh dãy số ngẫu nhiên: dùng một khóa K
ban đầu để sinh ra các số ngẫu nhiên có kích thước
bằng kích thước đơn vị mã hóa:
StreamCipher(k)  S = s0s1s2 …sn-1 (si: k bit)
Mỗi số ngẫu nhiên được XOR với đơn vị mã hóa
của bản rõ để có bản mã.

C0 = p0  s0, c1 = p1  s1… ;
C= c0c1c2… cn-1

3


Quá trình giải mã được thực hiện ngược lại,
bản mã C được XOR với dãy số ngẫu nhiên S
để cho ra lại bản rõ ban đầu:
 p 0 = c 0  s 0, p 1 = c 1  s 1, …



4





Tiny RC4
RC4

5








Đơn vị mã hóa của TinyRC4 là 3 bít.
TinyRC4 dùng 2 mảng S và T mỗi mảng gồm 8
số nguyên 3 bít.
Khóa là một dãy gồm N số nguyên 3 bít.
Bộ sinh số mỗi lần sinh ra 3 bít để sử dụng
trong phép XOR.
Quá trình sinh số của TinyRC4 gồm hai giai
đoạn:

6



Trong giai đoạn này, trước tiên dãy S gồm các số nguyên 3 bít từ 0 đến 7 được
sắp thứ tự tăng dần. Sau đó dựa trên các phần tử của khóa K, các phần tử của S
được hoán vị lẫn nhau đến một mức độ ngẫu nhiên nào đó.
Ví dụ: mã hóa bản rõ P = 001000110 (từ “bag‟) với khóa K gồm 3 số 2, 1, 3 (N=3).
7
(xem giáo trình)


b) Giai đoạn sinh số

Trong giai đoạn này, các phần tử của S tiếp tục được hoán vị. Tại
mỗi bước sinh số, hai phần tử của dãy S được chọn để tính ra số k 3 bít
là số được dùng để XOR với đơn vị mã hóa của bản rõ.
8


Cơ chế hoạt động của RC4 cũng giống như
TinyRC4 với các đặc tính sau:
 Đơn vị mã hóa của RC4 là một byte 8 bít.
 Mảng S và T gồm 256 số nguyên 8 bít
 Khóa K là một dãy gồm N số nguyên 8 bít với N
có thể lấy giá trị từ 1 đến 256.
 Bộ sinh số mỗi lần sinh ra một byte để sử dụng
trong phép XOR.
(xem giáo trình)
9





So với mã hóa dòng

– Mã hóa khối xử lý thông báo theo từng khối
– Mã hóa luồng xử lý thông báo 1 bit hoặc 1 byte mỗi

lần



Giống như thay thế các ký tự rất lớn ( 64 bit)

– Bảng mã hóa gồm 2n đầu vào (n là độ dài khối)
– Mỗi khối đầu vào ứng với một khối mã hóa duy nhất
• Tính thuận nghịch

– Độ dài khóa là n x 2n bit quá lớn




Xây dựng từ các khối nhỏ hơn
Hầu hết các hệ mã hóa khối đối xứng dựa trên
cấu trúc hệ mã hóa Feistel
10


Mạng thay thế (S) - hoán vị (P) đề xuất bởi
Claude Shannon vào năm 1949

• Là cơ sở của các hệ mã hóa khối hiện đại
• Dựa trên 2 phép mã hóa cổ điển


– Phép thay thế : Hộp S
– Phép hoán vị : Hộp P



Đan xen các chức năng
– Khuếch tán : Hộp P (kết hợp với hộp S)
• Phát tỏa cấu trúc thống kê của nguyên bản khắp bản mã

– Gây lẫn : Hộp S
• Làm phức tạp hóa mối quan hệ giữa bản mã và khóa


Đầu vào
3 bit

0

1
0

0
1
2
3
4

5
6
7

0
1
2
3
4
5
6
7

Lưu ý : Hộp S có tính thuận nghịch

Đầu ra
3 bit

1
1
0


Đầu vào
4 bit

Đầu ra
4 bit

1


1

1

0

1
0

1

1

Lưu ý : Hộp P có tính thuận nghịch










Đề xuất bởi Horst Feistel dựa trên khái niệm hệ
mã hóa tích hợp thuận nghịch của Shannon
Phân mỗi khối dài 2w bit thành 2 nửa L0 và R0
Xử lý qua n vòng
Chia khóa K thành n khóa con K1, K2,..., Kn

Tại mỗi vòng i
– Thực hiện thay thế ở nửa bên trái Li-1 bằng cách XOR

nó với F(Ki, Ri-1)
– F thường gọi là hàm chuyển đổi hay hàm vòng
– Hoán vị hai nửa Li và Ri


Nguyên bản (2w bit)
w bit

L0
+

Vòng 1

. . .

L1

R0

K1

F

. . .
+

Vòng n


w bit

R1
Kn

F

Ln

Rn

Ln+1

Rn+1
Bản mã (2w bit)











Được đặt tên của nhà mã hóa Horst Feistel của IBM và
được ứng dụng đầu tiên trong Lucifer cipher
Mã hóa theo cấu trúc Feistel sử dụng chung thuật toán

cho việc giải mã và mã hóa
Cấu trúc Feistel bao gồm nhiều vòng xử lý plaintext, mỗi
vòng sẽ sử dụng kĩ thuật thay thế trước rồi kĩ thuật thay
đổi vị trí.
Input block tại mỗi vòng được chia làm hai nữa: L và R
Trong mỗi vòng, R không thay đổi, L sẽ thông qua một
xử lý tùy thuộc vào R và khóa.
Sau đó hoán chuyển L và R. Nghĩa là R vòng trước là L
của vòng hiện tại




Độ dài khối
– Khối càng lớn càng an toàn (thường 64 bit)



Độ dài khóa
– Khóa càng dài càng an toàn (thường 128 bit)



Số vòng
– Càng nhiều vòng càng an toàn (thường 16 vòng)



Giải thuật sinh mã con
– Càng phức tạp càng khó phá mã




Hàm vòng
– Càng phức tạp càng khó phá mã



Ảnh hưởng đến cài đặt và phân tích


Li, Ri nữa trái và nữa phải của chuỗi input ở
vòng thứ i
 Li = Ri-1
 Ri = Li-1 ⊕ F(Ri-1, Ki)
 F: hàm Feistel




⊕: XOR







Là quá trình tương tự được thực hiện ngược lại
[A ⊕ B] ⊕ C = A ⊕ [B ⊕ C ]

A⊕A=0
A⊕0=A





Giống giải thuật mã hóa, chỉ khác
– Bản mã là dữ liệu đầu vào
– Các khóa con được dùng theo thứ tự ngược lại



Tại mỗi vòng kết quả đầu ra chính là các dữ liệu
đầu vào của quá trình mã hóa
– Đối với quá trình mã hóa
• Li = Ri-1
• Ri = Li-1  F(Ri-1, Ki)

– Đối với quá trình giải mã
• Ri-1 = Li
• Li-1 = Ri  F(Li, Ki)














DES (Data Encryption Standard) được công nhận
chuẩn năm 1977
Phương thức mã hóa được sử dụng rộng rãi nhất
Tên giải thuật là DEA (Data Encryption Algorithm)
Là một biến thể của hệ mã hóa Feistel, bổ sung
thêm các hoán vị đầu và cuối
Kích thước khối : 64 bit
Kích thước khóa : 56 bit
Số vòng : 16
Từng gây nhiều tranh cãi về độ an toàn
23


24


Nguyên bản (64 bit)

Khóa 56 bit

giao hoán

giao hoán thuận
vòng 1
vòng 2


K1

giao hoán

dịch vòng trái

K2

giao hoán

dịch vòng trái

. . .

. . .
vòng n
hoán đổi 32 bit
giao hoán nghịch

Bản mã (64 bit)

Kn

giao hoán

dịch vòng trái



×