CHUẨN MÃ HỐ DỮ LIỆU DES

Một phần của tài liệu Giáo trình bảo mật thông tin (Trang 45 - 55)

DES - viết tắt của cụm từ Data Encryption Standard là một thuật tốn mã hố khối ra đời giữa những năm 1970 và đƣợc sử dụng phổ biến trong vịng 30 năm sau đĩ.

Vào những năm 1973, 1974 máy tính đã bắt đầu đƣợc sử dụng nhiều trong các ngân hàng, cơng ty tài chính lớn. Nhu cầu giữ bí mật thơng tin đã trở nên cấp thiết nhƣng các thuật tốn cổ điển lại khơng đáp ứng đƣợc. Viện chuẩn và cơng nghệ Hoa Kỳ NIST (National Institute of Standards and Technology) đã kêu gọi xây dựng các thuật tốn mã hĩa mới và an tồn hơn. Sau đĩ các ngân hàng Mỹ đã đặt hàng cho cơng ty IBM - ngƣời khổng lồ trong lĩnh vực điện tốn thời đĩ, thiết kế một thuật tốn mã hố hồn tồn mới. Lúc đầu, IBM đƣa ra thuật tốn Lucifer và sau đĩ thuật tốn này đƣợc thiết kế, chỉnh sửa lại thành thuật tốn DES. Năm 1976 DES đã đƣợc NIST cơng nhận là chuẩn mã hố dữ liệu, và đến năm 1981 DES trở thành chuẩn mật mã của ANSI (American National Standards Institute). DES đƣợc sử dụng rộng rãi trên thế giới, đặc biệt là trong các giao dịch ngân hàng, thơng tin liên lạc. Định kỳ, ANSI cơng nhận lại chuẩn mật mã cho thời gian 5 năm tiếp theo. DES là thuật tốn mã hĩa khối đƣợc sử dụng phổ biến trong suốt gần 30 năm, từ năm 1976 đến những năm gần đây.

Quá trình mã hĩa một khối 64-bit đầu vào bằng DES thơng qua các bƣớc: (1) Hốn vị ban đầu IP (Initial Permutation); (2) 16 vịng tính tốn phức tạp cĩ sử dụng khĩa; (3) Hốn vị kết thúc, là nghịch đảo của IP. Quy trình mã hố và tạo khố của thuật tốn DES cĩ thể đƣợc mơ tả trong sơ đồ sau:

Hình 4.3 Lược đồ thuật tốn mã hố DES

Phần bên trái của hình vẽ là quy trình mã hố dữ liệu. Phần bên phải là quy trình tạo các khố con (subkey). Chi tiết hơn, chúng ta cĩ thể xem xét phần dƣới đây.

4.2.1 Biến đổi khố mã hố

Hình 4.4 Tạo khố con của DES

Các bảng PC1 và PC2 là thành phần của thuật tốn và cĩ giá trị nhƣ sau:

Bắt đầu từ khĩa ban đầu 64 bit, ta bỏ các bit là bội số của 8 và nhận đƣợc khĩa 56 bit. Qua phép biến đổi bảng PC1, ta chọn đƣợc hai chuỗi 28 bit C0 và D0. Các chuỗi Ci và Di đƣợc quay trái riêng rẽ đi một bit hay hai bit. Sau đĩ sử dụng bảng PC2, chúng ta sẽ chọn đƣợc 16 khố 48 bit đƣợc sử dụng cho 16 vịng tính tốn.

Ví dụ, quá trình tạo khố sẽ thực hiện các bƣớc nhƣ sau: Giả sử khố 64 bit ban đầu là: K = 0x5b5a57676a56676e. Sau khi bỏ đi bit cuối cùng ở mỗi byte các bit cịn lại sẽ đƣợc biến đổi bằng PC1 để nhận đƣợc 56 bit gồm hai nửa C0 và D0. Nhƣ vậy, PC1(K) = PC1(0x5b5a57676a56676e) = 0x00ffd820ffec9370 = {C0, D0}. Trong đĩ C0= 0x00ffd820 và D0= 0xffec9370. Do các chuỗi C0 và D0 cĩ độ dài 28 bit nên để biểu diễn chúng trong 4 byte (32 bit) chúng ta bổ sung thêm vào cuối mỗi chuỗi 4 bit ảo. Các bit ảo này chỉ dùng để biểu diễn, khơng tham gia vào các quá trình tính tốn. Quá trình đĩ đƣợc minh hoạ qua hình dƣới đây:

Hình 4.6 Biến đổi PC1

Tiếp theo, các chuỗi C0 và D0 sẽ quay trái 1 bit để đƣợc C1, D1 tƣơng ứng. Sau đĩ, các giá trị C1 và D1 sẽ đƣợc biến đổi bằng PC2 để cĩ khố con

Hình 4.7 Biến đổi PC2

C1 = 0x01ffb040; D1 = 0xffd926f0; PC2(C1, D1) = K(1) = 0x38091b262f3a270f. Các chuỗi C1 và D1 tiếp tục đƣợc quay trái để cĩ C2, D2 và sau đĩ đƣợc biến đổi bởi PC2 để cĩ K(2),.v.v. Cứ nhƣ vậy, ta sẽ thu đƣợc 16 khố con để tham gia vào 16 vịng tính tốn trong quy trình mã hố. Đối với khố đầu vào nhƣ trên ta sẽ cĩ:

K(1) = 0x38091b262f3a270f K(2) = 0x280919321d321f2f K(3) = 0x390529323f2b270b K(4) = 0x292f0d10192f1d3f K(5) = 0x03251d131f3b372a K(6) = 0x1b3505193b0d353b K(7) = 0x033c0709133f393e K(8) = 0x0634261b3f1d3738 K(9) = 0x07342a09373f383c K(10) = 0x0633260c3e153f38 K(11) = 0x0602330d261f283f K(12) = 0x1416302c3d373a34 K(13) = 0x300a36242e122f3f K(14) = 0x340a38272d3f2a17 K(15) = 0x381b18221d321f37 K(16) = 0x380b082e3d2f0e17

4.2.2 Biến đổi dữ liệu

Dữ liệu đƣợc mã hố sẽ phải qua các biến đổi bởi hốn vị khởi tạo IP, sau đĩ dữ liệu sẽ tiếp tục với 16 vịng biến đổi và kết thúc bởi hốn vị kết thúc IP-1. Ví dụ, nếu 64 bit dữ liệu đầu vào là 0x675a69675e5a6b5a thì biến đổi IP sẽ nhƣ sau:

Hình 4.8 Biến đổi IP

Vậy IP(0x675a69675e5a6b5a) = 0xffb2194d004df6fb. Tiếp theo, dữ liệu sẽ đi qua 16 vịng tính tốn. Một vịng tính tốn thứ i sẽ cĩ dạng:

Dữ liệu chia thành hai nửa 32 bit: Li-1 và Ri-1.

- Hàm mở rộng E(Ri-1) biến đổi 32 bit thành 48 bit

- Kết quả XOR với khĩa K(i)

- 8 S-box biến đổi 48 bit thành 32 bit

- Hốn vị P xáo trộn 32 bit nhận đƣợc

- Kết quả XOR với Li-1 để cho ra Ri

Nhƣ vậy:

Ri = Li-1 XOR P[S(E(Ri-1) XOR K(i)] và Li = Ri-1

Ta sẽ xem xét từng phép biến đổi một qua ví dụ cụ thể. Hàm E mở rộng dữ liệu từ 32 bit thành 48 bit nhƣ hình dƣới đây:

Hình 4.10 Hàm biến đổi E

Hàm E biến đổi dữ liệu bằng cách lặp lại một số bit đã cĩ. Kết quả của phép biến đổi là 48 bit sẽ đƣợc lƣu trong 8 byte, mỗi byte chứa 6 bit. Nhƣ vậy ta cĩ: E(R0) = E(0x004df6fb) = 0x2000091b3e2d1f36.

Hình 4.11 XOR với khố con

Phép XOR đƣợc thực hiện theo từng cặp bit tƣơng ứng. Kết quả cĩ thể

viết nhƣ sau: A = E(R0) XOR K(1) = 0x2000091b3e2d1f36 XOR

0x38091b262f3a270f = 0x1809123d11173839. Kết quả này sẽ đi qua 8 S- box, mỗi S-box biến đổi 6 bit thành 4 bit:

Hình 4.12 S-box S1

Hình 4.13 Các S-box của DES

DES cĩ 8 S-box, đƣợc đánh số từ S1 đến S8 nhƣ hình trên. S-box cũng nhƣ các bảng khác đều là thành phần của DES và đƣợc cơng bố cơng khai. Trong ví dụ trên ta cĩ S1(0x18) = 5; S2(0x09) = f,... Tổng hợp lại, ta cĩ: S (0x1809123d11173839) = 0x5fd25e03. Nhƣ vậy, 8 S-box đã biến đổi dữ liệu từ 48 bit thành 32 bit.

Tiếp theo, hàm hốn vị P xáo trộn 32 bit nhận đƣợc sau các S-box:

Hình 4.14 Hàm hốn vị P

Kết quả hốn vị P sẽ đƣợc tiếp tục XOR với nửa dữ liệu bên trái:

Hình 4.15 XOR với dữ liệu trái

Kết quả của vịng tính tốn đầu ta cĩ: R1 = L0 XOR P(B) = 0xffb2194d XOR 0x746fc91a = 0x8bddd057. Trong khi đĩ L1 = R0 = 0x004df6fb. Thực hiện 16 vịng lặp tƣơng tự nhƣ vậy (riêng vịng cuối cùng khơng đổi chỗ L16 và R16 cho nhau) dữ liệu nhận đƣợc sẽ đi qua hốn vị kết thúc IP-1 để cĩ đƣợc kết quả cuối cùng của thuật tốn:

Cuối cùng ta cĩ kết quả của thuật tốn: DES (K, PlainText) = DES (0x5b5a57676a56676e, 0x675a69675e5a6b5a) = 0x974affbf86022d1f.

Một phần của tài liệu Giáo trình bảo mật thông tin (Trang 45 - 55)