Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng..., cho đến các lĩnh vực như thương mại, điện tử...Trong bài báo này, tôi giới thiệu về mã hóa khối và cụ thể là mã hóa DES, một trong những mã hóa ra đời sớm và phức tạp thuộc mã hóa khối.

1. Mã hóa khối

Các hệ mã cổ điển (ví dụ: mã hóa dịch chuyển, mã hóa thay thế, mã hóa Affine, mã hóa Vigenere, mã hóa Hill) đều có đặc điểm chung là từng ký tự của bản rõ được mã hoá tách biệt. Điều này làm cho việc phá mã trở nên dễ dàng hơn. Chính vì vậy, trên thực tế người ta hay dùng một kiểu mật mã khác, trong đó từng khối ký tự của bản rõ được mã hoá cùng một lúc như là một đơn vị mã hoá đồng nhất, gọi là phương pháp mã hóa “khối”.

Quá trình mã hóa khối bao gồm 2 thuật toán: mã hóa - ký hiệu E và giải mã - ký hiệu E-1. Cả 2 thuật toán đều tác động lên một khối đầu vào n bít sử dụng một khóa k bít để cho ra một khối đầu ra n bít. Đối với bất kỳ khóa nào, giải mã là hàm ngược của mã hóa, nghĩa là:

Trong đó M là khối thông tin và K là khóa bất kỳ.

Với mỗi khóa K, EK là một hoán vị (song ánh) của khối đầu vào. Mỗi khóa sẽ xác định một hoán vị trong tổng số 2n! khả năng.

Độ dài của khối thông tin, ký hiệu là n, thông thường là cố định ở 64 hoặc 128 bít. Một số thuật toán có độ dài khối thay đổi nhưng không phổ biến. Tính đến trước những năm giữa của thập kỷ 1990 thì độ dài 64 bít thường được sử dụng. Từ đó trở về sau thì khối 128 bít được sử dụng rộng rãi hơn. Trong các chế độ mã hóa khối thì người ta thường phải bổ sung thêm một số bít cho văn bản (tiếng Anh: padding) để văn bản chứa số nguyên lần các khối.

Hầu hết các thuật toán mã hóa khối sử dụng lặp đi lặp lại các hàm đơn giản. Mỗi chu kỳ lặp được gọi là một vòng và thông thường các thuật toán có từ 4 tới 32 vòng.

Các thành phần sử dụng trong thuật toán là các hàm toán học, các hàm lô gíc (đặc biệt là hàm XOR), hộp thế (S-box) và các phương pháp hoán vị.

2. Các loại mã hoá  “khối”

Qua thời gian thì có rất nhiều hệ mã “khối” ra đời và đã được phát triển. Có thể kể ra một số hệ mã sau: Lucifer (1969), DES (1977), Madryga (1984), 3-DES (1985)(t53), FEAL, REDOC, LOKI (1990), Khufu and Khafre (1990), RC2, RC4, IDEA (1990), MMB, CA-1.1, Shipjack, GOST, CAST, Blowfish, SAFER, AES (2001),..

3. Mã hóa DES

  1. Thuật toán

Gồm 3 bước:

Bước 1: Đưa vào văn bản gốc x, thực hiện phép hoán vị IP đầu tiên (thực chất là một lần mã hoá). Từ x 64 bit sẽ biến thành một từ mới IP(x), từ này được chia thành 2 nửa L0 và R0, mỗi nửa là một từ 32 bit.

Đặt x0 = IP(x) = L0R0, với L0 = 32 bit đầu tiên; R0 = 32 bit còn lại.

Bước 2: Từ đây, thực hiện 16 vòng mã hoá, dữ liệu được kết hợp với khoá qua hàm f theo qui tắc sau:

Li = Ri.

Ri = Li-1XOR f(Ri-1, Ki). với i = 1, 2, ..., 16, ta thu được các cặp (L1, R1), ..., (L16, R16).

trong đó XOR là phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2). f là một hàm mà ta sẽ mô tả ở sau, còn K1,K2, . . . ,K16 là các xâu bít độ dài 48 được tính như hàm của khoá K. ( trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K). K1, . . ., K16 sẽ tạo thành bảng khoá.

Bước 3: Áp dụng phép hoán vị nghịch đảo IP-1 cho xâu bít R16L16, ta thu được bản mã y. Tức là, y = IP-1(R16L16).

Z51

Z49

Ví dụ:

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

Bước 1: Bản rõ x được hoán vị theo phép hoán vị IP, thành IP(x). IP(x) = L­­0R0

L­­0= 1011 0010 0111 1100 1101 1000 1100 0001

R0= 1100 0011 1010 1001 1110 0001 1001 0101

Bước 2: thực hiện 16 vòng mã hóa với những phép toán giống nhau. Dữ liệu được kết hợp với nhau thông qua hàm f:

Li = Ri-1, Ri = Li-1 XOR f(Ri-1, ki)

a. tính khóa con k1 (48 bit) từ khóa gốc K= 134675588BBACDD1 (64 bit)= 0001 0011 0100 0110 0111 0101 0101 1000 1000 1011 1011 1010 1100 1101 1101 0001

  • Hoán vị PC-1: Kà C0D0
  • Hoán vị PC-2: C1D1à k1
  • Mở rộng xâu R0 (32 bit) thành xâu E(R0) (48 bit), theo hàm mở rộng E:

C0= 1111 0000 1100 1110 0010 0100 1010

D0= 0011 0011 0100 0110 0111 1000 1101

C1= LS1(C0)= 1110 0001 1001 1100 0100 1001 0101

D1= LS1(D0)= 0110 0110 1000 1100 1111 0001 1010

K1= 1001 1011 0010 0010 1100 0011 1111 1110 0101 0000 1111 0000

b. Tính hàm f(R0, k1)

Theo bước 1: R0= 1100 0011 1010 1001 1110 0001 1001 0101

Hoán vị E: R0 à E(R0):

E(R0)= 1110 0000 0111 1101 0101 0011 1111 0000 0011 1100 1010 1011

Theo a):

K1=     1001 1011 0010 0010 1100 0011 1111 1110 0101 0000 1111 0000

  • Tính E(R0) XOR k1= B1 B2 B3 B4 B5 B6 B7 B8
  • Tính C thông qua hộp S

011110 110101 111110 010000 000011 100110 110001 011011

C1= S1(0, 15)= (7)10­= (0111)2

C2= S2(3, 10)= (7)10­= (0111)2

C3= S3(2, 15)= (7)10­= (0111)2

C4= S4(0, 8)  = (1)10­= (0001)2

C5= S5(1, 1)  = (11)10­= (1011)2

C6= S6(2, 3)  = (5)10­= (0101)2

C7= S7(3, 8)  = (9)10­= (1001)2

C8= S8(1, 13)= (14)10­= (1110)2

Ta nhận được xâu C= C1 C2 C3 C4 C5 C6 C7 C8 (32 bit)

C = 0111 0111 0111 0001 1011 0101 1001 1110

f(R0, k1)= P(C)= 1110 1111 0000 0011 1110 0010 1011 1111

Bước 3: Kết quả là bản mã 86934A071EECDF75

  1. Ứng dụng của DES 

DES thường được dùng để mã hoá bảo mật các thông tin trong quá trình truyền tin cũng như  lưu trữ thông tin. Một ứng dụng quan trọng khác của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống (hệ thống quản lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm tính hợp lệ của một mã số bí mật (thẻ internet, thẻ điện thoại di động trả trước), hoặc của một thẻ thông minh (thẻ tín dụng, thẻ payphone…).

4. Độ an toàn của mã hoá  “khối”

-         Độ an toàn của khối: khối phải có độ dài đủ để chống lại các phương pháp phân tích thống kê và ngăn việc một số khối nào đó xuất hiện nhiều hơn các khối khác. Mặt khác sự phức tạp của thuật toán tăng theo hàm mũ với độ dài khối. Với khối có độ dài 64 bit là đủ độ an toàn.

-         Độ dài khoá: Khoá phải có độ dài đủ để chống lại các phương pháp vét cạn khoá ( Chống khả năng thử các khoá được sinh ra từ (N)bit khoá cho trước ).

-         Độ phức tạp: Bản mã phải phụ thuộc một cách phức tạp  vào bản rõ và khoá. Mục tiêu đặt ra ở đây là phải phức tạp hoá sự phụ thuộc của bộ mặt thống kê của bản mã vào bản rõ. IDEA đạt được diều này nhờ sử dụng 3 phép toán sẽ trình bày sau đây:

-         Sự phân bố: IDEA đã đạt được việc mỗi bít của bản rõ phải có ảnh hưởng tới nhiều bit của bản mã và mỗi bit khoá cũng tác động đến nhiều bit của bản mã. Điều này làm cho cấu trúc của bản rõ sẽ bị phá vỡ trong bản mã.

Trong bài báo này, tôi đã giới thiệu về mã hóa khối, các loại mã hóa khối và độ an toàn của nó. Bên cạnh đó, bài báo này cũng đã nêu thuật toán và ví dụ cụ thể của mã hóa DES. DES là mã hóa thuộc hệ mã hóa khối.

Tài liệu tham khảo

[1] Giáo trình An toàn và bảo mật thông tin, Trường Đại học Hàng hải, 2008

[2] Nguyễn Văn Kiên, Mật mã khối và mật mã khóa đối xứng, Trường Đại học Bách khoa Hà Nội, 2008

[3] Ngô Thị Tuyết Hà, Đồ án Bảo mật thông tin, 2005