Tiêu chuẩn kỹ thuật về ƯDCNTT trong CQNN: Tiêu chuẩn 3DES – Thuật toán mã hóa khối 3 lần (20) 

Tổng quan về DES và 3DES

Thuật toán mã hóa khối DES (Data Encryption Standard) là một thuật toán khối với kích thước khối 64 bít và kích thước khóa 56 bít, được Tổ chức Tiêu chuẩn xử lý thông tin liên bang Hoa Kỳ (FIPS) công bố chính thức vào tháng 11/1976 và được xuất bản trong tài liệu có tên là FIPS PUB 46 vào tháng 01/1977. DES lần lượt được cập nhật vào năm 1988 (FIPS-46-1), 1993 (FIPS-46-2), 1998 (FIPS-46-3) Thuật toán mã hóa khối 3 lần 3DES (Triple Data Encryption Standard) là tên chung của việc áp dụng mã hóa một khối dữ liệu qua 03 lần mã hóa DES với 03 khóa khác nhau. 3DES công bố trong tài liệu tiêu chuẩn của Viện Tiêu chuẩn Quốc gia Hoa Kỳ ANSI (X 9.52–1998), tiêu chuẩn ISO/IEC (ISO/IEC 18033-3:2010) (ISO/IEC là Tổ chức tiêu chuẩn hoá quốc tế/Ủy ban kỹ thuật điện quốc tế (International Organization for Standardization/International Electrotechnical Commission)). Đối với nhiều tài liệu kỹ thuật, người ta phân biệt khái niệm DES (là một tiêu chuẩn) và thuật toán DEA (Data Encryption Algorithm, hay Thuật toán Mã hóa Dữ liệu) - thuật toán dùng trong chuẩn DES. Tương tự với 3DES là một tiêu chuẩn và TDEA (Triple Data Encryption Alogorithm) là thuật toán trong 3DES.
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. DES cùng với mã hóa bất đối xứng đã mở ra một thời kì mới cho ngành mã hóa thông tin. Đồng thời, việc nghiên cứu mã hóa thông tin cũng không còn là bí mật nữa mà đã trở thành một ngành khoa học máy tính bình thường. Tuy nhiên thuật toán 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 (thực hiện DES 3 lần) có tính an toàn cao hơn và được sử dụng trong thực tế nhiều hơn.

 

Đặc điểm kỹ thuật

 

Một số khái niệm về mã hóa

 Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể đọc hiểu được.

Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu. Có thể mô tả quy trình thực hiện mã hóa dữ liệu và giải mã dữ liệu như sau:
 

 

 

 

Hình 1: Quy trình mã hóa dữ liệu
 (Nguồn: Handbook of Applied Cryptography, A. Menezes, P . van Oorschot and S. V anstone)
 
Trong hệ mật mã cổ điển có hai kiểu phổ biến là mã hóa dòng (mã hóa trên từng bít của dòng dữ liệu) và mã hóa khối, trong đó mã hóa khối (block cipher) là kiểu mã hóa từng khối nhiều ký tự cùng một lúc, hai tham số ảnh hưởng tới mã hóa theo khối là kích thước khối và kích thước khóa. Thuật toán mã hóa khối xác định độ dài cố định của khối dữ liệu đầu vào và khối dữ liệu đầu ra. Khi thực hiện mã hóa, khối dữ liệu có độ dài tùy ý phải chia thành nhiều đơn vị có độ dài xác định trước sau đó áp dụng thuật toán mã hóa nhiều lần. Kết quả là các khối dữ liệu đầu ra được kết hợp theo một sơ đồ mật mã nào đó để thu được khối dữ liệu được mã hóa. Thuật toán DES là một hệ điển hình mã hóa khối, chúng ta sẽ tiếp tục tìm hiểu trong phần sau.  

 

Đặc tả thuật toán DES
 
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 64 bít sẽ chứa 56 bít sinh phát ngẫu nhiên và sử dụng như là các bít khóa trong thuật toán. Tám bít còn lại không được sử dụng bởi thuật toán, được dùng để phát hiện lỗi. Tám bít phát hiện lỗi được thiết lập để kiểm tra lỗi tương ứng với 8 byte trong khóa.
Quy trình mã hóa của DES được mô tả trong hình phía dưới. Theo hình 2, 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 2: 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 hỗn loạn, rắc rối (confusion) và tính khuếch tán (diffusion) đã 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.
Minh họa sơ đồ biến đổi cụ thể của hàm f được trong hình 3, trong hình này 32 bít của thành phần Ri-1 được mở rộng thành 48 bít rồi thực hiện biến đổi E (expansion: mở rộng với sự lặp lại một số bít). Thực hiện phép XOR với 48 bít của khóa Ki. Thu được kết quả 48 bít phân thành 8 nhóm 6 bít. Mỗi nhóm này sẽ đi vào một biến đổi đặc biệt gọi là biến đổi Si (có 8 Si khác nhau) và cho ra kết quả là 8 nhóm 4 bít. Từ đó, 32 bít hợp thành (sau khi qua 8 Si khác nhau) sẽ được hoán vị lại theo hàm hoán vị P để đưa ra kết quả cuối cùng của hàm f (tức nhân của Fi).
 
 
 Hình 3: Hàm f dùng trong DES

 

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 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: 

 

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 K(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ã
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:
1)   Lựa chọn 1: K1, K2, K3 là các khóa độc lập
2)   Lựa chọn 2: K1, K2 là hai khóa độc lập và  K3 = K1 

 

3)   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.

             Yêu cầu lưu trữ khóa
            Đối với một khóa riêng lẻ hay một nhóm khóa gồm 03 khóa sẽ phải:
-          Đảm bảo duy trì tính bảo mật;
-          Việc cấp phát khóa sử dụng một phương pháp đã được chấp thuận dựa trên việc sinh khóa ngẫu nhiên;
-          Nhóm khóa độc lập với các nhóm khóa khác;
-          Phải có tính toàn vẹn do mỗi khóa trong nhóm khóa không thể thay đổi theo thời gian trong quá trình sinh phát khóa, truyền tải và lưu trữ khóa;
-          Sử dụng một cách tuần tự theo thứ tự xác định trước;
-          Số lượng khóa là cố định với mỗi khóa đơn lẻ không thể làm sai lệch.
Khóa yếu
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. Cụ thể các khóa yếu là:
o   01010101 01010101
o   FEFEFEFE FEFEFEFE
o   E0E0E0E0 F1F1F1F1
o   1F1F1F1F 0E0E0E0E
Một số cặp khóa yếu nên tránh sử dụng:
o   011F011F010E010E và 1F011F010E010E01
o   01E001E001F101F1 và E001E001F101F101
o   01FE01FE01FE01FE và FE01FE01FE01FE01
o   1FE01FE00EF10EF1 và E01FE01FF10EF10E
o   1FFE1FFE0EFE0EFE và FE1FFE1FFE0EFE0E
48 khóa được coi là “có thể yếu” nên hạn chế sử dụng:
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
Tấn công bằng phương pháp vét cạn       
DES có 256=1017 khóa, nếu như biết một cặp bản gốc-bản gốc thì có thể tiến hành phép thử 1017 để tìm ra khóa phù hợp. Giả thiết một phép thử mất 10-6 giây trên một máy tính cá nhân thì sẽ mất 1011 giây để tìm khóa (gần 7300 năm). Tuy nhiên với sức mạnh của các máy tính chuyên dụng với chip mã có tốc độ lên tới 4.5x107 bít/s, việc phá mã trở nên nhanh chóng. Năm 1997, công ty bảo mật RSA tài trợ một số cuộc thi với giải thưởng lên tới 10.000 đô la Mỹ cho đội đầu tiên phá được thông điệp mã hóa bằng DES. Đội chiến thắng là dự án DESCHALL với những người dẫn đầu bao gồm Rocke Verser, Matt Curtin và Justin Dolske. Họ đã sử dụng hàng nghìn máy tính nối mạng để phá mã DES. Năm 1998, tổ chức Electronic Frontier Foundation (EFF), một tổ chức hoạt động cho quyền công dân trên Internet, xây dựng một hệ thống chuyên biệt để phá mã DES với giá thành 250.000 đô la Mỹ. DES đã bị giới nghiên cứu phê bình do sử dụng khóa có kích thước quá ngắn, do đó, thực tế 3DES được áp dụng phổ biến hơn với việc thực hiện 3 lần DES làm tăng độ phức tạp và tổng kích thước của khóa hơn.
 
 
Ứng dụng
 
DES và 3DES được ứng dụng rộng rãi trong các lĩnh vực mật mã, xác thực, an toàn thông tin... 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. 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.
1227 Go top

Sự kiện nổi bật

Ý kiến về Trang thông tin điện tử Cục Tin học hóa?
1. Đạt yêu cầu, 1180 phiếu (88 %)
2. Chưa đạt yêu cầu, 107 phiếu (8 %)
3. Cần thêm chủ đề, 57 phiếu (4 %)
Tổng số phiếu: 1344
THÔNG KÊ TRUY CẬP
  • Người trực tuyến Người trực tuyến
    • Khách Khách 28
    • Thành viên Thành viên 0
    • Tổng Tổng 28
    • Tổng lượt truy cập: Tổng lượt truy cập: 11278824