Phiên bản thử nghiệm
BAN CƠ YẾU CHÍNH PHỦ
CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM MẬT MÃ
NATIONAL AGENCY OF CRYPTOGRAPHY AND INFORMATION SECURITY
Giới thiệu về thuật toán DES, 3DES và khuyến nghị khi sử dụng trong các sản phẩm mật mã dân sự
01:52:00 | 10-11-2021

1. Giới thiệu tổng quan về DES và 3DES

Thuật toán mã khối DES (Data Encryption Standard) là một thuật toán mã khối với kích thước khối 64 bít và kích thước khóa 56 bít, được công bố chính thức bởi Tổ chức Tiêu chuẩn xử lý thông tin liên bang Hoa Kỳ (FIPS) vào tháng 11/1976 và được xuất bản trong tài liệu FIPS PUB 46 (01/1977). Thuật toán DES đã trải quả nhiều lần cập nhật: năm 1988 (FIPS-46-1), 1993 (FIPS-46-2), 1998 (FIPS-46-3). Tiền thân của thuật toán DES là thuật toán Lucifer, một thuật toán do IBM phát triển. Cuối năm 1976, DES được chọn làm chuẩn mã hóa dữ liệu của Hoa Kỳ, sau đó được sử dụng rộng rãi trên toàn thế giới trong lĩnh vực an toàn, bảo mật thông tin trên môi trường số.

2. Một số đặc điểm kỹ thuật

Thuật toán DES được thiết kế để mã hóa và giải mã các khối dữ liệu 64 bít với một khóa có độ dài 64 bít. Việc giải mã phải được thực hiện bởi một khóa tương ứng như trong quá trình mã hóa, mỗi khóa gồm 64 bít, trong đó 56 bít được sử dụng để thực hiện mã hóa/giải mã trong thuât toán. 8 bít còn lại được dùng để kiểm tra/phát hiện lỗi.

Qúa trình mã hóa của DES được mô tả trong hình phía dưới. Theo hình 1, ta thấy mã hóa DES được thực hiện qua 16 vòng. Thông tin đầu vào là 64 bít, sẽ được chia thành 2 khối (block) trái (L) và phải (R). Sau đó từ khóa (56 bít) người ta tạo ra các khóa con (subkey) 48 bít gọi là Ki. Hàm f ở trên thực chất là 1 hàm hoán vị.

Trong quá trình mã hóa, dữ liệu đầu vào phải thực hiện quá trình hoán vị đầu (initial permutation) và hoán vị cuối (final permutation) sau vòng thứ 16. Việc thực hiện hoán vị phục vụ cho quá trình đưa thông tin vào và lấy thông tin ra từ các khối phần cứng, tạo điều kiện cho việc cài đặt phần cứng. Hàm cơ sở f cho phép đảm bảo tính bảo mật trong thuật toán DES này.

Hình 1: Quá trình mã hóa của DES

Việc thực hiện nhiều lần các bước lặp với tác dụng của f là nhằm tăng cường tính phi tuyến và tính khuếch tán đã có trong hàm f.

Cấu trúc của vòng lặp DES thực hiện theo công thức sau:

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

Trong đó (Li,Ri) là nửa trái và nửa phải lấy được của phép biến đổi vòng lặp thứ i. Chi tiết về hàm hoán vị f, bạn đọc có thể tham khảo thêm tại Tiêu chuẩn TCVN 11367-3:2016.

Thuật toán 3DES

Thuật toán 3DES sử dụng một nhóm khóa bao gồm 03 khóa DES là K1, K2 và K3, mỗi khóa có giá trị 56 bít. Thuật toán mã hóa thực hiện như sau:

Hình 2. Sơ đồ phép mã hóa 3DES

Quá trình mã hóa

Bản mã= EK3(DK2(EK1(Bản rõ)))

Trước tiên, thực hiện mã hóa DES với khóa K1, tiếp tục giải mã DES với khóa K2 và cuối cùng mã hóa DES với khóa K3 (E – Encryption: quá trình mã hóa; D - Decryption: quá trình giải mã; Bản rõ: Dữ liệu đầu vào của phép mã hóa hoặc dữ liệu đầu ra của phép giải mã; Bản mã: Dữ liệu đầu ra của phép mã hóa hoặc dữ liệu đầu vào của phép giải mã).

Quá trình giải mã

Hình 3: Sơ đồ phép giải mã 3DES

Bản rõ = DK1(EK2(DK3(Bản mã))

Quá trình giải mã với việc  giải mã với khóa K3, sau đó mã hóa với khóa K2, và cuối cùng giải mã với khóa K1..

3DES mã hóa một khối dữ liệu có giá trị 64 bít (bản rõ) thành một khối dữ liệu mới có giá trị 64 bít (bản mã). Các tiêu chuẩn chỉ ra phương thức lựa chọn nhóm khóa (K1, K2, K3) như sau:

Lựa chọn 1: K1, K2, K3 là các khóa độc lập

Lựa chọn 2: K1, K2 là hai khóa độc lập và  K3 = K1

Lựa chọn 3: K1=K2=K3

Lựa chọn 1 là phương thức mã hóa mạnh nhất với 168 bít khóa độc lập (168=3x56). Lựa chọn 2 ít bảo mật hơn với 112 bít khóa ( 2x56=112 bít) và lựa chọn 3 chỉ tương đương với việc mã hóa DES 1 lần với 56 bít khóa. Mỗi khóa DES thông thường được lưu trữ và truyền đi trong 8 byte, vì vậy một nhóm khóa yêu cầu 8 hoặc 16, 24 byte cho việc lưu trữ khóa.

3. Một số khuyến nghị khi sử dụng thuật toán DES và 3DES

Với sự phát triển của khoa hoạc kỹ thuật, DES không được xem là an toàn do độ dài 56 bít của khóa là quá nhỏ, nhiều kết quả nghiên cứu, phân tích cho thấy việc mã hóa có thể bị phá khóa, thuật toán 3DES  có tính an toàn cao hơn và được sử dụng trong thực tế nhiều hơn. Năm 2002 tiêu chuẩn mã hóa tiên tiến AES (Advanced Encryption Standard) được đề xuất thay thế cho tiêu chuẩn DES và 3DES, song vẫn có nhiều lĩnh vực áp dụng sử dụng DES, 3DES sau này. 

NIST đã đưa tra các khuyến nghị về sử dụng các thuật toán mật mã tại NIST Recommendations (2020). Trong đó khuyến nghị, 2TDEA (K1, K2 là hai khóa độc lập và  K3 = K1) chỉ được sử dụng trong các ứng dụng kế thừa (xử lý dữ liệu đã được mã hóa) và không áp dụng cho bảo mật dữ liệu thông tin; 3TDEA (K1, K2, K3 là các khóa độc lập) được dùng trong giai đoạn 2019-2030.

Tại Việt Nam, trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn 3DES và được xếp vào nhóm Tiêu chuẩn về an toàn thông tin.

(Nguồn https://www.keylength.com/en/4/)

Ngoài ra khi sử dụng người dùng cần chú ý khi lựa chọn khóa. Có nhiều khóa được xem là khóa yếu trong thuật toán DES, đó là các khóa dễ có khả năng bị đối tượng phá khóa do một số bít của khóa lặp lại và dễ dự đoán trước. Việc sử dụng khóa yếu có thể làm giảm tính bảo mật của DES, do đó tránh sử dụng các khóa yếu này. Một số ví dụ điểm hình về các khóa yếu [1]:

01010101 01010101

FEFEFEFE FEFEFEFE

E0E0E0E0 F1F1F1F1

1F1F1F1F 0E0E0E0E

Một số cặp khóa khi mã hóa thì bản rõ và bản mã là giống hệt nhau và cũng không được sử dụng. Các khóa bán-yếu đó là (theo định dạng thập lục phân):011F011F010E010E và 1F011F010E010E01

01E001E001F101F1 và E001E001F101F101

01FE01FE01FE01FE và FE01FE01FE01FE01

1FE01FE00EF10EF1 và E01FE01FF10EF10E

1FFE1FFE0EFE0EFE và FE1FFE1FFE0EFE0E

Ngoài ra còn 48 khóa sau chỉ tạo ra 4 khóa con khác nhau (thay vì 16 khóa con khác nhau) và cũng không được sử dụng. Đó là các khóa sau (theo định dạng thập lục phân):

01011F1F01010E0E   1F1F01010E0E0101    E0E01F1FF1F10E0E

0101E0E00101F1F1   1F1FE0E00E0EF1F1   E0E0FEFEF1F1FEFE

0101FEFE0101FEFE  1F1FFEFE0E0EFEFE   E0FE011FF1FE010E

011F1F01010E0E01   1FE001FE0EF101FE    E0FE1F01F1FE0E01

011FE0FE010EF1FE   1FE0E01F0EF1F10E   E0FEFEE0F1FEFEF1

011FFEE0010EFEF1   1FE0FE010EF1FE01   FE0101FEFE0101FE

01E01FFE01F10EFE   1FFE01E00EFE01F1   FE011FE0FE010EF1

FE01E01FFE01F10E   1FFEE0010EFEF101   FE1F01E0FE0E01F1

01E0E00101F1F101   1FFEFE1F0EFEFE0E   FE1FE001FE0EF101

01E0FE1F01F1FE0E   E00101E0F10101F1    FE1F1FFEFE0E0EFE

01FE1FE001FE0EF1   E0011FFEF1010EFE   FEE0011FFEF1010E

01FEE01F01FEF10E    E001FE1FF101FE0E    FEE01F01FEF10E01

01FEFE0101FEFE01   E01F01FEF10E01FE    FEE0E0FEFEF1F1FE

1F01011F0E01010E    E01F1FE0F10E0EF1    FEFE0101FEFE0101

1F01E0FE0E01F1FE   E01FFE01F10EFE01   FEFE1F1FFEFE0E0E

1F01FEE00E01FEF1   E0E00101F1F10101    FEFEE0E0FEFEF1F1

4. Kết luận

Hiện nay, với nhu cầu bảo mật thông tin, đặc biệt là bảo mật thông tin truyền trên mạng internet, việc úng dụng các thuật toán mật mã nói chung hay cụ thể là sử dụng các sản phẩm mật mã trong các lĩnh vực dân sự, an ninh quốc phòng và vô cùng cần thiết. Thuật toán DES với độ dài khóa 56 bít đã không còn an toàn, tuy nhiên thuật toán 3DES vẫn đang được sử dụng trong nhiều  sản phẩm mật mã dân sự. Bài viết tổng hợp các khuyến nghị để ứng dụng an toàn thuật toán 3DES trong bảo vệ bí mật, an ninh, thông tin. Người sử dụng cần kết hợp giữa các nhu cầu về bảo mật, yêu cầu hệ thống và các khuyến nghị trong phần 3 để đảm bảo an toàn, bí mật thông tin khi sử dụng thuật toán 3DES.

PCT. Nguyễn Thanh Sơn, Cục QLMMDS & KĐSPMM

 

 

Tài liệu tham khảo

[1] QCVN 4 : 2016/BQP Quy chuẩn kỹ thuật quốc gia về mã hóa dữ liệu sử dụng trong lĩnh vực ngân hàng. (National technical regulation on data encryption used in banking)

[2] TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) Công nghệ thông tin – Các kỹ thuật an toàn – Thuật toán mật mã – Phần 3: Mã khối.

 

Đường dây nóng
Phòng QLMMDS: 024 3775 6896
Trung tâm ĐGSPH: 024 3232 3313
Cục trưởng: 0903 234 845
P.Cục trưởng phụ trách: 0913 592 170