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
54 trang |
Chia sẻ: tieuaka001 | Lượt xem: 1002 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Bảo mật thông tin - Bài 3: Mã hóa đối xứng hiện đại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Trình bày:
Ths. Lương Trần Hy Hiến
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 p0p1p2pn-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:
p0 = c0 s0, p1 = c1 s1,
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
7Trong 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).
(xem giáo trình)
b) Giai đoạn sinh số
8
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õ.
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
0
1
2
3
4
5
6
7
Đầu vào
3 bit
0
1
0
0
1
2
3
4
5
6
7
1
1
0
Đầu ra
3 bit
Lưu ý : Hộp S có tính thuận nghịch
Lưu ý : Hộp P có tính thuận nghịch
Đầu vào
4 bit
1
1
0
1
1
0
1
1
Đầu ra
4 bit
• Đề 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 w bitL0 R0
Vòng 1
K1
L1 R1
F+
Kn
Ln Rn
F+Vòng n
. . . . . .
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)
giao hoán thuận
vòng 1
K1
vòng 2
K2
vòng n
Kn
giao hoán nghịch
Bản mã (64 bit)
hoán đổi 32 bit
Khóa 56 bit
. . .
giao hoán
dịch vòng tráigiao hoán
dịch vòng tráigiao hoán
dịch vòng tráigiao hoán
. . .
Li-
1
mở rộng g/hoán
hộp S
giao hoán
Ri-1
x K
i
x
Li Ri
--- 48 bit
--- 48 bit
--- 32 bit
--- 32 bit
DEA là thuật toán cài đặt DES
32 bit bên phải của 64 bit data được nhân rộng lên
thành 48 bit. Bước này gọi là E-step (expansion
permutation)
Chi tiết E-step:
Chia 32 bit thành 8 nhóm, mỗi nhóm 4 bit
Mỗi nhóm thêm 1 bit bên trái và 1 bit bên phải mỗi nhóm 6 bit
Khóa 56 bit được chia làm 2 nữa. Mỗi nữa được dịch
(shift) rồi kết hợp với khóa 56 bit để tạo 48-bit round
key.
48 bit output của E-step được XOR với 48 bit round key.
Output được chia thành 8 nhóm 6-bit
• Mỗi nhóm 6bit sẽ được thay thế bằng nhóm 4 bit. Quá
trình thay thế này chứa trong S-box, xem hình slide kế
• Sau quá trình thay thế chúng ta có 32 bit
• 32 bit này được hoán vị bằng quá trình bên trong P-
box, hình 4
• Kết quả này được XOR với 32 bit nữa trái ban đầu để
tạo đầu ra bên phải cho vòng kế tiếp.
• Mục tiêu của S-box là tạo diffusion (khuếch tán).
Diffusion nghĩa là mỗi bit của plaintext phải ảnh
hưởng càng nhiều bit của ciphertext càng tốt
• Mục tiêu của P-box là tạo confusion. Confusion ở
đây có nghĩa là mối quan hệ giữa khóa và ciphertext
càng phức tạp càng tốt.
• Diffusion và confusion là hai yếu tố cốt lõi của mã hóa
theo block
Như trong hình slide kế, mỗi input 48-bit được
chia thành 8 nhóm, mỗi nhóm 6 bit. Mỗi nhóm
này được xử lý qua 1 S-box cho ra 1 nhóm 4-
bit. Vậy 8 S-box sẽ cho output 32bit.
Mỗi một S-box trong 8 S-box sẽ chứa bảng
4x16. Bit đầu tiên và cuối cùng của nhóm 6 bit
được giải mã để tìm ra dòng. 4 bit ở giữa đại
diện cho cột.
Mục tiêu của P-Box là hoán vị. Ở hình trên thì
bit thứ 16 của input sẽ là bit số 1 của output.
Bit thứ 7 của input sẽ là bit thứ 2 của output.
Và tiếp theo như bảng mô tả
Chú ý chỉ số bắt đầu là 1.
Khóa khởi đầu là 56bit, (8 byte, bit cuối là parity
bit)
Đầu tiên 56bit khóa được thông qua hoán vị 1
(Permuation Choice 1)
Bắt đầu mỗi vòng, khóa 56 bit được chia thành
2 nữa, mỗi nữa 28 bit. Shift vòng mỗi nữa 1
hoặc 2 bit
Để tạo round key, ghép 2 nữa lại và áp dụng
hoán vị 2 (permuation choice 2) để cho ra
output 48 bit.
Bước thay thế tạo diffusion mạnh. Nếu thay đổi
1 bit trong phần dữ liệu input thì sẽ tạo thay đổi
khoảng 34 bit trong phần ciphertext
Việc tạo roundkey giúp cho confusion mạnh.
Nếu thay đổi 1 bit trong khóa thì sẽ thay đổi
khoảng 35 bit trong ciphertext.
• Khóa 56 bit có 256 = 7,2 x 1016 giá trị có thể
• Phương pháp vét cạn tỏ ra không thực tế
• Tốc độ tính toán cao có thể phá được khóa
– 1997 : 70000 máy tính phá mã DES trong 96 ngày
– 1998 : Electronic Frontier Foundation (EFF) phá mã
DES bằng máy chuyên dụng (250000$) trong < 3
ngày
– 1999 : 100000 máy tính phá mã trong 22 giờ
• Vấn đề còn phải nhận biết được nguyên bản
Vì vậy NIST đề nghị các tổ chức sử dụng Triple-
DES (3-DES)
3DES
AES
39
• Sử dụng 3 khóa và chạy 3 lần giải thuật DES
– Mã hóa : C = EK3
[DK2
[EK1
[p]]]
– Giải mã : p = DK1
[EK2
[DK3
[C]]]
• Độ dài khóa thực tế là 168 bit
– Không tồn tại K4 = 56 sao cho C = EK4
(p)
• Vì sao 3 lần : tránh tấn công "gặp nhau ở giữa"
– C = EK2
(EK1
(p)) X = EK1
(p) = DK2
(C)
– Nếu biết một cặp (p, C)
• Mã hóa p với 256 khóa và giải mã C với 256 khóa
• So sánh tìm ra K1 và K2 tương ứng
• Kiểm tra lại với 1 cặp (p, C) mới; nếu OK thì K1 và K2 là khóa
• AES (Advanced Encryption Standard) được
công nhận chuẩn mới năm 2001
• Tên giải thuật là Rijndael (Rijmen + Daemen)
• An toàn hơn và nhanh hơn 3DES
• Kích thước khối : 128 bit
• Kích thước khóa : 128/192/256 bit
• Số vòng : 10/12/14
• Cấu trúc mạng S-P, nhưng không theo hệ Feistel
– Không chia mỗi khối làm đôi
Electronic Codebook – ECB
Mã hóa từng khối riêng rẽ
42
• Những khối lặp lại trong nguyên bản có thể thấy
được trong bản mã
• Nếu thông báo dài, có thể
– Giúp phân tích phá mã
– Tạo cơ hội thay thế hoặc bố trí lại các khối
• Nhược điểm do các khối được mã hóa độc lập
• Chủ yếu dùng để gửi thông báo có ít khối
– Ví dụ gửi khóa
Cipher Block Chaining – CBC
Khối nguyên bản hiện thời được XOR với khối bản mã trước đó
44
Mã hóa
p1
C1
K Mã hóa
C2
K Mã hóa
CN
K...
Mã hóa
Giải mã
C1
p1
K Giải mã
C2
p2
K Giải mã
CN
pN
K...
Giải mã
p2 pNIV
CN-1
CN-1IV
• Mỗi khối mã hóa phụ thuộc vào tất cả các khối nguyên
bản trước đó
– Sự lặp lại các khối nguyên bản không thể hiện trong bản mã hóa
– Thay đổi trong mỗi khối nguyên bản ảnh hưởng đến tất cả các
khối bản mã về sau
• Cần 1 giá trị đầu IV bên gửi và bên nhận đều biết
– Cần được mã hóa giống khóa
– Nên khác nhau đối với các thông báo khác nhau
• Cần xử lý đặc biệt khối nguyên bản không đầy đủ cuối
cùng
• Dùng mã hóa dữ liệu lớn, xác thực
• Giải pháp hữu hiệu và phổ biến nhất chống lại
các mối đe dọa đến an toàn mạng là mã hóa
• Để thực hiện mã hóa, cần xác định
– Mã hóa những gì
– Thực hiện mã hóa ở đâu
• Có 2 phương án cơ bản
– Mã hóa liên kết
– Mã hóa đầu cuối
47
• Công cụ mã hóa được sắp đặt ở 2 đầu của mọi
liên kết có nguy cơ bị tấn công
• Đảm bảo an toàn việc lưu chuyển thông tin trên
tất cả các liên kết mạng
• Các mạng lớn cần đến rất nhiều công cụ mã hóa
• Cần cung cấp rất nhiều khóa
• Nguy cơ bị tấn công tại mỗi chuyển mạch
– Các gói tin cần được mã hóa mỗi khi đi vào một
chuyển mạch gói để đọc được địa chỉ ở phần đầu
• Thực hiện ở tầng vật lý hoặc tầng liên kết
• Quá trình mã hóa được thực hiện ở 2 hệ thống
đầu cuối
• Đảm bảo an toàn dữ liệu người dùng
• Chỉ cần một khóa cho 2 đầu cuối
• Đảm bảo xác thực ở mức độ nhất định
• Mẫu lưu chuyển thông tin không được bảo vệ
– Các phần đầu gói tin cần được truyền tải tường minh
• Thực hiện ở tầng mạng trở lên
– Càng lên cao càng ít thông tin cần mã hóa và càng an
toàn nhưng càng phức tạp với nhiều thực thể và khóa
PSN : Packet-switching node
Công cụ mã hóa đầu cuối
Công cụ mã hóa liên kết
• Vấn đề đối với mã hóa đối xứng là làm sao phân
phối khóa an toàn đến các bên truyền tin
– Thường hệ thống mất an toàn là do không quản lý tốt
việc phân phối khóa bí mật
• Phân cấp khóa
– Khóa phiên (tạm thời)
• Dùng mã hóa dữ liệu trong một phiên kết nối
• Hủy bỏ khi hết phiên
– Khóa chủ (lâu dài)
• Dùng để mã hóa các khóa phiên, đảm bảo phân phối chúng
một cách an toàn
51
• Khóa có thể được chọn bởi bên A và gửi theo
đường vật lý đến bên B
• Khóa có thể được chọn bởi một bên thứ ba, sau
đó gửi theo đường vật lý đến A và B
• Nếu A và B đã có một khóa dùng chung thì một
bên có thể gửi khóa mới đến bên kia, sử dụng
khóa cũ để mã hóa khóa mới
• Nếu mỗi bên A và B đều có một kênh mã hóa
đến một bên thứ ba C thì C có thể gửi khóa theo
các kênh mã hóa đó đến A và B
1. Host gửi gói tin yêu cầu kết nối
2. FEP đệm gói tin; hỏi KDC khóa phiên
3. KDC phân phối khóa phiên đển 2 host
4. Gói tin đệm được truyền đi
FEP = Front End Processor
KDC = Key Distribution Center
54
Các file đính kèm theo tài liệu này:
- Unlock-hutech_is_03_mahoadoixunghiendai_9448.pdf