DES (Data Encryption Standard)
Last updated
Was this helpful?
Last updated
Was this helpful?
DES(Data Encryption Standard) là thuật toán mã hóa theo khối, nó xử lý từng khối thông tin của bản rõ có độ dài xác định là 64 bit. Trước khi đi vào 16 chu trình chính, khối dữ liệu cần bảo mật sẽ được tách ra thành từng khối 64 bit, và từng khối 64 bit này sẽ lần lượt được đưa vào 16 vòng mã hóa DES để thực hiện. Tiền thân của nó là 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 nước Mỹ, 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 trong ngành mã hóa thông tin. Trước DES, viện nghiên cứu và sử dụng mã hóa dữ liệu chỉ giới hạn trong chính phủ và quân đội.
Đầu vào của DES là khối 64 bit, đầu ra cũng là khối 64 bit. Khóa mã hóa có độ dài 56 bit, nhưng thực chất ban đầu là 64 bit, được lấy đi các bit ở vị trí chia hết cho 8 dùng để kiểm tra tính chẵn lẻ.
Thuật toán sinh khóa con
Sơ đồ tổng quát:
Thực hiện hoán vị
Gọi C_0 là nửa trái của PC1K
Gọi D_0 là nửa phải của PC1K
Sau khi thực hiện PC1 như hình ảnh trên và bỏ các bit kiểm tra 8, 16, 24, 32, 40, 48, 56, 64
thì PC1K có độ dài 56 bit
Tính các giá trị dịch vòng C_i, D_i
Chúng ta có thể nhìn bảng trên để dễ hình dung.
Thực hiện hoán vị PC2 và gán khóa con K_i
Sau khi thực hiện hoán vị PC2 khóa K_i có độ dài 48 bit
Giai đoạn 1
Plaintext 64bit được đưa vào IP , 1 chuỗi C sẽ được tạo ra bằng cách thực hoán vị các bit của plaintext theo hoán vị IP
Tiếp theo C sẽ được chia làm 2 phần L_0 (32 bit đầu) và R_0 ( 32 bit cuối)
Giai đoạn 2
Lấy R_0 đi qua hàm Feistel, Với giá trị đầu vào R_{i-1} (32 bit), K_i (48 bit)
R_{i-1} khi đi qua hoán vị E sẽ tăng độ dài từ 32 -> 48 bit để cùng độ dài và thực hiện XOR với K_i
Tính
Tách kết quả của phép tính trên thành 8 khối, mỗi khối 6 bit và đưa lần lượt vào bảng S-box : S1, S2, S3, S4, ..., S8 .
Với mỗi S-box sẽ có 6bit đầu vào và 4 bit đầu ra
Kết quả từ 8 khối 6bit sẽ cho ra 8 khối 4 bit C_i
Mỗi 4 bit đầu ra của các S-box sẽ được ghép lại, theo thứ tự các và được đem vào P-box.
Giai đoạn 3
Áp dụng hoán vị kết thúc FP cho R_{16}L_{16} ta thu được bản mã
Quá trình giải mã của DES cũng tương tự quá trình mã hóa. Chỉ khác nhau ở: Li = Ri-1
. Ri = Li-1 ⊕ f(Ri-1, K16-i+1)
. Như vậy khóa K của hàm F sẽ đi từ khóa K16 -> K1.
Hàm Feistel(F)
Đầu vào hàm f có 2 biến:
Biến thứ nhất: Ri-1 là xâu bit có độ dài 32 bit. - Biến thứ hai: Ki là xâu bit có độ dài 48 bit. Đầu ra của hàm f là xâu có độ dài 32 bit. Quy trình hoạt động của hàm f như sau:
Biến thứ nhất Ri-1 được mở rộng thành một xâu có độ dài 48 bit theo một hàm mở rộng hoán vị E (Expansion permutation). Thực chất hàm mở rộng E(Ri-1) là một hoán vị có lặp trong đó lặp lại 16 bit của Ri-1.
Tính
Tách kết quả của phép tính trên thành 8 xâu 6 bit B1, B2, …, B8.
Đưa các khối 8 bit Bi vào 8 bảng S1, S2, …, S8 (được gọi là các hộp S-box). Mỗi hộp S-Box là một bảng 4*16 cố định có các cột từ 0 đến 15 và các hàng từ 0 đến 3. Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6 ta tính được Si(Bi) như sau: hai bit b1b6 xác định hàng r trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si. Khi đó, Si(Bi) sẽ xác định phần tử Ci = Si(r,c), phần tử này viết dưới dạng nhị phân 4 bit. Như vậy, 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit Ci với (1 ≤ i ≤ 8).
Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán vị P (P-Box). Kết quả P(C ) sẽ là kết quá của hàm f(Ri-1,Ki).
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.
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ố bits 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ể là:
Triple DES (3DES) là một phương pháp mã hóa dữ liệu, được phát triển để tăng cường bảo mật của thuật toán DES (Data Encryption Standard) truyền thống. Thay vì chỉ sử dụng một khóa như trong DES, Triple DES thực hiện ba lần mã hóa với ba khóa khác nhau, hoặc hai khóa trong một số phiên bản. Điều này giúp tăng độ mạnh của mã hóa, làm cho việc tấn công trở nên khó khăn hơn.
Quá trình mã hóa
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ã
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:
Với K1, K2, K3 là các khóa độc lập. Là phương thức mã hóa mạnh nhất với 168 bit khóa độc lập (168=3x56)
Với K1, K2 là hai khóa độc lập và K3 = K1. Ít bảo mật hơn với 112 bit khóa ( 2x56=112 bit)
Với K1=K2=K3. 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.
Ưu và nhược điểm của 3DES
Ưu điểm: Khác với DES, thuật toán mã hoá 3DES được mã hoá 3 lần DES với kích cỡ không gian khoá 168 bit cho nên an toàn hơn rất nhiều so với DES.
Nhược điểm: Vì 3DES sử dụng 3 lần mã hoá DES cho nên tốc độ mã hoá sẽ chậm hơn rất nhiều so với DES. Phần mềm ứng dụng tỏ ra rất chậm đối với hình ảnh số và một số ứng dụng dữ liệu tốc độ cao vì kích thước khối 64 bit vẫn còn là một nhược điểm đối với những hệ có tốc độ của thế kỷ 21.
Khóa yếu
Một số cặp khóa yếu nên tránh sử dụng
Ngoài ra còn có 48 khóa được coi là “có thể yếu” nên hạn chế sử dụng
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.