Mã khối (Block Cipher)

Một phần của tài liệu bài giảng an toàn bảo mật thông tin (Trang 39 - 42)

CHƢƠNG 3 MÃ HÓA ĐỐI XỨ NG HIỆN ĐẠ I

3.2 Mã khối (Block Cipher)

3.2.1 Mã khối an tồn lý tưởng

Phép tốn XOR có một hạn chế là chỉ cần biết một cặp khối bản rõ và bản mã, người ta có thể dễ dàng suy ra được khóa và dùng khóa đó để giải các khối bản mã khác (known- plaintext attack). Xét lại ví dụ đầu chương:

bản rõ: 1111 0000 0011 (head)

khóa: 0101 0101 0101

bản mã: 1010 0101 0110 (FBCG)

Nếu biết bản mã c0 = 1010 có bản rõ tương ứng là p0 = 1111, thì có thể dễ dàng suy ra khóa là 0101. Nói một cách tổng quát, nếu giữa bản rõ P và bản mã C có mối liên hệ tốn học thì việc biết một số cặp bản rõ-bản mã giúp ta có thể tính được khóa K. (như trong trường hợp mã Hill)

Do đó để chống phá mã trong trường hợp known-plaintext hay choosen-plaintext, chỉ có thể là làm cho P và C khơng có mối liên hệ tốn học. Điều này chỉ có thể thực hiện được

Bản rõ Bản mã 0000 1110 0001 0100 0010 1101 0011 0001 0100 0010 0101 1111 0110 1011 0111 1000 1000 0011 1001 1010 1010 0110 1011 1100 1100 0101 1101 1001 1110 0000 1111 0111

37 Lúc này khóa là tồn bộ bảng trên. Người gởi cũng như người nhận phải biết tồn bộ

bảng trên để mã hóa và giải mã. Đối với người phá mã, nếu biết một số cặp bản rõ - bản mã thì cũng chỉ biết được một phần của bảng tra cứu trên. Do đó khơng suy ra được bản rõ cho các bản mã cịn lạị Hay nói cách khác, muốn phá mã thì phải biết được tất cả các cặp bản rõ và bản mã. Nếu chọn kích thước của khối là 64 bít thì số dịng của bảng khóa là 264, một con số rất lớn (và có khoảng 264! bảng khóa như vậy). Lúc này việc nắm tất cả các cặp bản rõ-bản mã của bảng khóa là điều không thể đối với người phá mã. Trường hợp này ta gọi là mã khối an toàn lý tưởng.

Tuy nhiên, khi kích thước khối lớn thì số dịng của bảng khóa cũng lớn và gây trở ngại cho việc lưu trữ cũng như trao đổi khóa giữa người gởi và người nhận. Bảng khóa có 264 dịng mỗi dịng 64 bít do đó kích thước khóa sẽ là 64x 264= 270 ≈ 1021 bít. Do đó mã khối an tồn lý tưởng là không khả thi trong thực tế.

3.2.2 Mạng SPN

Trong thực tế, người ta chỉ tìm cách để chỉ cần dùng một khóa có kích thước ngắn để giả lập một bảng tra cứu có độ an tồn xấp xỉ độ an tồn của mã khối lý tưởng. Cách thực hiện là kết hợp hai hay nhiều mã hóa đơn giản lại với nhau để tạo thành một mã hóa tổng (product cipher), trong đó mã hóa tổng an tồn hơn rất nhiều so với các mã hóa thành phần. Các mã hóa đơn giản thường là phép thay thế (substitution, S-box) và hoán vị (Permutation, P-box). Do đó người ta hay gọi mã hóa tổng là Substitution-Permutation Network (mạng SPN). Hình dưới minh họa một mạng SP.

Bít đầu vào 0 1 2 S1 S4 Bít đầu ra 0 1 2 P1 S2 P2 S5 P3 11 S3 S6 11

Việc kết hợp các S-box và P-box tạo ra hai tính chất quan trọng của mã hóa là tính nếu ta lập một bản tra cứu ngẫu nhiên giữa bản rõ và bản mã. Ví dụ:

khuếch tán (diffusion) và tính gây lẫn (confusion). Hai tính chất này do Claude Shannon giới thiệu vào năm 1946, và là cơ sở của tất cả các mã khối hiện naỵ

• Tính khuếch tán: một bít của bản rõ tác động đến tất cả các bít của bản mã, hay nói cách khác, một bít của bản mã chịu tác động của tất cả các bít trong bản rõ. Việc làm như vậy nhằm làm giảm tối đa mối liên quan giữa bản rõ và bản mã, ngăn chặn việc suy ra lại khóạ Tính chất này có được dựa vào sử dụng P-box kết hợp S-box.

• Tính gây lẫn: làm phức tạp hóa mối liên quan giữa bản mã và khóạ Do đó cũng ngăn chặn việc suy ra lại khóạ Tính chất này có được dựa vào sử dụng S-box.

3.2.3 Mơ hình mã Feistel

Mơ hình mã Feistel là một dạng tiếp cận khác so với mạng SP. Mơ hình do Horst Feistel đề xuất, cũng là sự kết hợp các phép thay thế và hoán vị. Trong hệ mã Feistel, bản rõ sẽ được biến đổi qua một số vòng để cho ra bản mã cuối cùng:

38

K1 K2 K3 Kn-1

PC1C2Cn

Trong đó bản rõ P và các bản mã Ci được chia thành nửa trái và nửa phải:

P = (L0, R0) K1

Ci = (Li, Ri) i = 1, 2, …n

Quy tắc biến đổi các nửa trái phải này qua các vòng được thực hiện như sau:

Li = Ri-1

Ri = Li-1 F(Ri-1, Ki)

Kimột khóa con cho vịng thứ i. Khóa con này được sinh ra từ khóa K ban đầu theo một thuật tốn sinh khóa con (key schedule): K → K1 → K2 → … → Kn

F là một hàm mã hóa dùng chung cho tất cả các vịng. Hàm F đóng vai trị như là phép thay thế cịn việc hốn đổi các nửa trái phải có vai trị hốn vị. Bản mã C được tính từ kết xuất của vịng cuối cùng:

C = Cn = (Ln, Rn)

Sơ đồ tính tốn của hệ mã Feistel được thể hiện trong hình bên dưới: plaintext L0 R0 F L1 R1 … … Ln-1 Rn-1

K K1 … Kn Ln Rn ciphertext

Hình 3-3. Mơ hình mã khối Feistel

Để giải mã quá trình được thực hiện qua các vòng theo thứ tự ngược lại:

C → Ln, Rn

Ri-1= Li (theo mã hóa Li = Ri-1 )

Li-1 = Ri F(Ri-1, Ki) (theo mã hóa Ri = Li-1 F(Ri-1, Ki) )

39 Và cuối cùng bản rõ là P = (L0, R0).

Hệ mã Feistel có điểm quan trọng là việc chia các bản mã thành hai nửa trái phải giúp cho hàm F không cần khả nghịch (khơng cần có F-1). Mã hóa và giải mã đều dùng chiều thuận của hàm F. Hàm F và thuật tốn sinh khóa con càng phức tạp thì càng khó phá mã.

Ứng với các hàm F và thuật tốn sinh khóa con khác nhau thì ta sẽ có các phương pháp mã hóa khác nhau, phần tiếp theo sẽ trình bày mã hóa DES, là một phương pháp mã hóa dựa trên nguyên tắc của hệ mã Feistel.

Một phần của tài liệu bài giảng an toàn bảo mật thông tin (Trang 39 - 42)

Tải bản đầy đủ (DOCX)

(190 trang)
w