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

In document AN TOÀN VÀ BẢO MẬT THÔNG TIN (Page 50-55)

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

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

Mã khối (như mã DES) được áp dụng để mã hóa một khối dữ liệu có kích thước xác định. Để mã hóa một bản tin dài, bản tin được chia ra thành nhiều khối ( ) và áp dụng mã khối cho từng khối một. Có nhiều mô hình áp dụng mã khối là ECB, CBC, CTR, OFB và CFB.

3.6.1 Electronic Codebook – ECB

Trong mô hình ECB, mỗi khối được mã hóa một cách riêng rẽ, dùng chung một khóa K.

Hình 3-8. Mô hình ECB của mã khối

Trong mã hóa ECB, nếu Pi = Pj thì Ci = Cj và ngược lại. Có thể thấy rằng mã ECB tương tự như mã hóa đơn bảng cổ điển, trong đó PiCi giống như là các chữ cái, còn khóa K cùng với mã khối giống như là một phép hoán vị. Do đó, người phá mã có thể dựa vào một số đặc tính thống kê của dữ liệu để tiến hành phá mã, giống như dùng thống kê tần suất chữ cái để phá mã mã hóa đơn bảng (dù rằng Pi có kích thước lớn nên đặc tính thống

b) Quá trình giải mã a) Quá trình mã hóa

p0 p1 … pn-1

c0 c1 … cn-1

K P

C

K

E K

E E

c0 c1 … cn-1

p0 p1 … pn-1

K C

P

D K K

D D

51 kê cũng khó phát hiện hơn). Vì vậy mã hóa ECB chỉ thích hợp để mã hóa những bản tin ngắn.

Hình 3-9. Mã hóa ECB không che dấu hết thông tin (nguồn: trích từ [3])

Để minh họa đặc tính thống kê của dữ liệu, hình trên thể hiện một tấm ảnh được mã hóa bằng ECB. Dù rằng mỗi khối đã được biến đổi qua phép mã hóa, tuy nhiên nhìn tổng thể thì vẫn tồn tại một sự liên hệ nào đó giữa các khối.

3.6.2 Cipher Block Chaining – CBC

Trong mô hình CBC, bản mã của một lần mã hóa được sử dụng cho lần mã hóa tiếp theo:

với i = 1, 2, 3… n-1

Do đó để mã hóa khối đầu tiên, người ta dùng một khối dữ liệu giả được gọi là vector khởi tạo (initialization vector – IV) và được chọn ngẫu nhiên:

Để giải mã, tiến hành ngược lại:

với i = 1, 2, … n-1

52

Hình 3-10. Mô hình CBC của mã khối

Người mã hóa và người giải mã phải dùng chung vector khởi tạo IV. Vector khởi tạo không cần giữ bí mật nên thường được gắn vào trước bản mã trước khi truyền thông điệp ( ).

Có thể thấy rằng nội dung của bản mã Ci không chỉ phụ thuộc vào bản rõ Pi mà còn phụ thuộc vào tất cả các bản rõ đứng trước và IV. Do đó nếu có hai bản rõ giống nhau thì hai bản mã sẽ không giống nhau (do IV ngẫu nhiên). Điều này khắc phục được hạn chế của mô hình ECB, từ bản mã người phá mã không thể phát hiện ra những đặc tính thống kê của dữ liệu.

Ngược lại, đối với việc giải mã, bản rõ Pi không chỉ phụ thuộc vào bản mã Ci mà còn phụ thuộc vào bản mã Ci-1 đứng trước. Do đó nếu xảy lỗi trên đường truyền, chỉ cần một bít bị hỏng thì dẫn đến không thể giải mã được bản mã đó và bản mã tiếp theo sau.

b) Quá trình giải mã a) Quá trình mã hóa

p0 p1 … pn-1

c0 c1 … cn-1

P

E

c0 c1 … cn-1

p0 p1 … pn-1

P

D

IV

IV

D

D

E

E

53

Hình 3-11. Bức ảnh sau khi mã hóa dùng mô hình CBC (nguồn: trích từ [3])

3.6.3 Counter – CTR

Đến thời điểm này, chúng ta đã tìm hiểu hai cách tiếp cận để chống lại việc phá mã dựa trên thống kê tần suất. Cách tiếp cận thứ nhất là theo mô hình của mã dòng, dùng một bộ sinh khóa ngẫu nhiên (confusion – làm rối). Cách tiếp cận thứ hai là theo mô hình CBC của mã khối, dùng các khối phía trước tác động đến bản mã của các khối đi sau (diffusion – khuếch tán).

Xét lại mô hình mã dòng:

Trong đó s0, s1, s2, … được sinh ra từ bộ sinh số ngẫu nhiên.

CTR thực ra là một phương pháp mã hóa thuộc loại mã dòng, tuy nhiên bộ sinh khóa ngẫu nhiên có dùng đến mã khối để sinh số. Kích thước của đơn vị mã hóa là kích thước mã khối (ví dụ nếu dùng mã DES thì đơn vị mã hóa là 64 bít). Với một vector khởi tạo ban đầu, công thức sinh số như sau:

Do hiệu ứng lan truyền (Avalanche Effect) của mã khối nên có thể xem bộ sinh khóa trên sinh ra một dãy số ngẫu nhiên theo nguyên tắc thiết kế của mã dòng.

3.6.4 Output Feedback – OFB

Mô hình CTR là một mã dòng trong đó đơn vị mã hóa có kích thước cố định là b bít, với b là kích thước mã khối. Để mã hóa với đơn vị mã hóa có kích thước bất kỳ, mô hình OFB được đề xuất. Mô hình này có hai điểm khác so với mô hình CTR:

p0 p1 … pn-1

c0 c1 … cn-1

s0 s1 sn-1

P

C

54

 Chỉ dùng s bít đầu tiên của khóa sinh ra bởi bộ sinh khóa, với s là kích thước đơn vị mã hóa dùng trong phép XOR.

 Để tăng thêm tính ngẫu nhiên của bộ sinh khóa, s bít này của khóa được ghép vào vector khởi tạo IV cho lần mã hóa tiếp theo. Phép ghép được thực hiện bằng cách đẩy trái IV s bít và đưa s bít của khóa vào s bít thấp của IV.

Register = IV;

for i = 0 to n-1 do Ti = E(Register, K);

Ti = Ti SHR (b-s); // lấy s bít đầu của Ti Ci = Pi XOR Ti;

Register = Register SHL s;

Register = Register OR Ti; next i

Hình 3-12. Mô hình OFB của mã khối

Giống như mô hình ECB, trong mô hình CTR và OFB, mỗi khối được mã hóa một cách riêng rẽ, không phụ thuộc vào nhau.

3.6.5 Cipher Feedback – CFB

Mô hình CFB có thay đổi một chút so với mô hình OFB. Mô hình OFB dùng s bít của khóa do bộ sinh khóa tạo ra để ghép với IV cho lần mã hóa tiếp theo. Còn mô hình CFB dùng s bít của bản mã để ghép với IV.

Mã khi K

C0

Mã khi

K K Mã khi

P0 s

b b bít

s

C1 P1 s

b

s

C2 P2 s

b

s

IV

Thanh ghi dịch trái s bít

b b

s s

s

s bít

s

s s

55

Hình 3-13. Mô hình CFB của mã khối

Do đó giống như mô hình CBC, có thể thấy rằng nội dung của bản mã Ci không chỉ phụ thuộc vào bản rõ Pi mà còn phụ thuộc vào tất cả các bản rõ đứng trước và IV. Ngược lại, đối với việc giải mã, bản rõ Pi không chỉ phụ thuộc vào bản mã Ci mà còn phụ thuộc vào bản mã Ci-1 đứng trước.

In document AN TOÀN VÀ BẢO MẬT THÔNG TIN (Page 50-55)