Mã nén
1Lecture 3: Chuẩn mã hóa dữ liệuDES (Data Encryption Standard)1. Vài nét về lịch sử phát triển DES2. Khái quát các vấn đề mã hóa DES3. Chi tiết giải thuật mã hóa DES4. Các phương thức sử dụng 2I. Vài nét về lịch sử phát triển DESDES được công bố vào tháng 1 năm 1977, DES là một chuẩn đã được sử dụng rộng rãi cho bảo mật dữ liệu trong các hệ thống máy tính. Kể từ đócứ 5 năm một lần, DES lại được Uỷ ban Tiêu chuẩn Quốc gia Mỹ xem xét lại. Theo công bố năm 1998 thì mọi hệ DES, với những khả năng của máy tính hiện nay, đều có thể bẻ khóa trong vòng 2 giờ.Tuy nhiên, cho đến nay DES vẫn là một mô hình chuẩn cho các ứng dụng bảo mật trong thực tế. 3II. Khái quát thuật toán mã hóa DES-DES làthuật toán mã hóa khối (block cipher) nghĩa lànó làm việc trên các khối bản rõ (plaintext blocks) 64 bít, (tương đương với 16 số hecxa) và trả về các khối mã hóa (ciphertext blocks) cùng kích thước 64 bít.- Để mã hóa, DES dùng các “keys” cũng có độ dài 64 bít. Tuy nhiên mỗi key đócó8 bít bị lờ đi trong giải thuật DES, vì vậy kích thước “key” thực sự là 56 bít. 40123456789EFABCD0E329232EA6D0D730E329232EA6D0D730123456789EFABCD0000000000000000Thuật toánmã hóaKhóa KThuật toánGiải mãMô hình mã hóa DESBản tin rõBản tin mã hóaKhóa để mã hóaBản tin cần mã hóaBản đã mã hóa0000000000000000 5• Sơ đồ khối thực hiện giải thuật DES- Input: Bản rõ M- Output: Bản mã hóa C* Các bước (lời giải thô):B1: Khối bản rõ 64 bít được hoán vị(hoán vị khởi đầu) để thay đổi thứ tựcủa các bít.B2: Chia bản rõ vừa hoán vị bít làmhai nửa trái L0và phải R0, mỗi nửa32 bít.B3: Dùng 16 vòng lặp, tính LnRn(n=1 16) theo quy tắc:Ln= Rn-1Rn=Ln-1+ f(Rn-1,Kn)B4: Tại vòng lặp cuối cùng n=16, tađươc L16R16 , đổi vị trí 2 nửa này chonhau thành R16L16B5: Hoán vị thứ tự bít cho R16L16, tađược đầu ra là bản mã hóa cần tìm. 6• Chi tiết các bước thực hiện của giải thuật DESĐể chi tiết hóa thuật toán DES, cần phải tìm hiểu một số vấn đề :1. Cách hoán vị bít.2. Cách tạo 16 khóa con Ki(Subkeys) từ K.3. Cách tính hàm f.4. Cách thức mã hóa khối dữ liệu 64 bít. 7Sơ đồ tạo các khóa con (Subkeys)Vòng1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Dịch trái1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1K+ (56bits)K (64bits)PC-1Bảng PC-1D0 (28bits)C0 (28bits)D1 (28bits)C1 (28bits)<< <<D16 (28bits)C16 (28bits)<< <<… … << <<Bảng dịch trái các bítK1 (48bits)PC-2K16 (48bits)PC-2… 57 49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 35 27 19 11 3 60 52 44 3663 55 47 39 31 23 15 7 62 54 46 38 30 2214 6 61 53 45 37 29 21 13 5 28 20 12 4Bảng PC-214 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 8 16 7 27 20 13 241 52 31 37 47 55 30 40 51 45 33 4844 49 39 56 34 53 46 42 50 36 29 32 8Ví dụ tạo các khóa con• Giả sử khóa K ban đầu, áp dụng bảng PC-1 tính K+:K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001K+ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111• Từ K+, chia 2 nửa C0D0, mỗi nửa 28 bít C0 = 1111000 0110011 0010101 0101111 D0 = 0101010 1011001 1001111 0001111 Bảng PC-1 (56 bít)57 49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 35 27 19 11 3 60 52 44 3663 55 47 39 31 23 15 7 62 54 46 38 30 2214 6 61 53 45 37 29 21 13 5 28 20 12 411 9Ví dụ tạo các khóa con (tiếp)• Ví dụ: Từ C0D0đã có ở trênC0 = 1111000011001100101010101111 D0 = 0101010101100110011110001111Vòng lặp 1: dịch trái C0D01 bít ta được cặp C1D1C1 = 1110000110011001010101011111D1 = 1010101011001100111100011110Vòng lặp 2: dịch trái C1D11 bít ta được.C2D2C2 = 1100001100110010101010111111D2 = 0101010110011001111000111101 Vòng1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Dịch trái1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1Bảng dịch trái các bít 10Ví dụ tạo các khóa con (tiếp)•Vậy, qua 16 vòng lặp ta sẽ có các cặp từ C1D1đến C16D16• Để hình thành các khóa Kn, 1≤n≤16, ta phải dựa vào các cặp CnDn đã tính ở trên và tra vào bảng hoán vị bít PC-2• Ví dụ: Giả sử ta đang cóC1D1= 1110000110 0110010101 0101111110 1010101100 1100111100 011110K1= 000110 110000 001011 101111 111111 000111 000001 110010•Tương tự, các khóa K2, K3,…, K16tương ứng tính được dựa vào C2D2, C3D3,…, C16D16và bảng PC-2Bảng PC-2 (48 bít)14 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 8 16 7 27 20 13 241 52 31 37 47 55 30 40 51 45 33 4844 49 39 56 34 53 46 42 50 36 29 32 [...]... liệu mã hoá, P: khối dữ liệu rõ và công thức toán học cho giải mã là: Pi = Dk(Ci) XOR (Ci-1), Co = IV 28 Các phương án sử dụng (tiếp) Phương thức mã phản hồi CFB - Mỗi khối dữ liệu plaintext sẽ được XOR với mã hoá của khối ciphertext trước đó để tạo thành khối ciphertext mới - Nếu khối đầu tiên có chỉ số là 1 thì công thức toán học cho việc mã hoá là: Ci = Ek(Ci-1) XOR Pi, Co = IV C: khối dữ liệu mã. .. toàn giống các bước ở trên, chỉ có sự khác nhau đó là các khoá phải được sử dụng theo thứ tự ngược lại Nghĩa là, nếu các khoá mã hoá cho mỗi vòng là k1, k2, k3 , , k15, k16 thì các khoá giải mã là k16, k15, , k3, k2, k1 25 Các phương án sử dụng 1 Triple DES (DES3 ) Thời gian của DES khá lâu, đôi khi không thích hợp với mọi loại ứng dụng 2 Véc tơ khởi tạo (IV) Véc tơ khởi tạo IV- Đó một khối giả để để... thức mã điện tử ECB - Đây là chế độ đơn giản nhất trong các chế độ - Bản tin được chia thành các khối và các khối được mã hoá độc lập với nhau - Nhược điểm: các khối plaintext giống nhau sẽ được mã hoá thành các khối ciphertext giống nhau Do vậy, nó không tốt trong việc giấu các mẫu dữ liệu và không được khuyến khích sử dụng trong các giao thức mật mã 27 Các phương án sử dụng (tiếp) Phương thức mã liên... 0123456789ABCDEF sau khi thực hiện giải thuật DES với khóa K=abcdefaa sẽ cho ra bản mã là: 85E813540F0AB405 40 39 38 37 36 35 34 33 8 7 6 5 4 3 2 1 Bảng IP-1 (64 bít) 48 16 56 24 64 47 15 55 23 63 46 14 54 22 62 45 13 53 21 61 44 12 52 20 60 43 11 51 19 59 42 10 50 1824 58 41 9 49 17 57 32 31 30 29 28 27 26 25 Vấn đề giải mã • Việc giải mã (Decryption) là quá trình làm ngược lại của mã hóa (encryption), hoàn toàn... hoá, P: khối dữ liệu rõ và công thức toán học cho giải mã là: Pi = Ek(Ci-1) XOR Ci, Co = IV 29 Các phương án sử dụng (tiếp) Phương thức phản hồi đầu ra OFB - Nếu khối đầu tiên có chỉ số là 1 thì công thức toán học cho việc mã hoá là: Ci = Pi XOR Oi Oi = Ek(Oi-1) Oo = IV C: khối dữ liệu mã hoá, P: khối dữ liệu rõ và công thức toán học cho giải mã là: Pi = Ci XOR Oi 30 • Khoảng 1975, Diffie và Hellman... toán hàm f P f(Rn-1,Kn) (32 bits) 21 Mã hóa khối dữ liệu 64 bits M (64 bít) Bảng IP IP (64 bít) L0 (32bits) L1=R0 16 vòng lặp tính LnRn R0 (32bits) R1=L0 ⊕ F(R0, K1) … f(R0,K1) f(R0,K1) ? … Ví dụ: Cho n = 1, K1 đã có, tính: L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010 R1 = L0 ⊕ f(R0,K1) L16=R15 R16=L15 ⊕ F(R15, K16) ?? R16 L16 Bảng IP-1 IP-1 C (đã mã hóa) 22 Mã hóa khối dữ liệu 64 bits • Sau khi... 1010 R16 L16 Bảng IP-1 IP-1 C (đã mã hóa) 12 Mã hóa khối dữ liệu 64 bits M (64 bít) Bảng IP IP (64 bít) L1=R0 R0 (32bits) R1=L0 ⊕ f(R0, K1) … … L16=R15 R16=L15 ⊕ f(R15, K16) Ví dụ: Cho n=1, với L0, R0, K1 đã có, tính được: L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010 R1 = L0 ⊕ f(R0,K1) f(R,K) ? L0 (32bits) 16 vòng lặp tính LnRn ?? R16 L16 Bảng IP-1 IP-1 C (đã mã hóa) 13 Các bước tính toán hàm... plaintext trước khi được mã hoá sẽ được XOR với khối ciphertext của khối plaintext trước đó - Như vậy: mỗi khối dữ liệu ciphertext sẽ phụ thuộc vào tất cả các khối plaintext đã được xử lý cho đến thời điểm đó - Để đảm bảo tính duy nhất của bản tin thì một véc tơ khởi tạo sẽ được sử dụng trước khối dữ liệu đầu tiên - Nếu khối đầu tiên có chỉ số là 1 thì công thức toán học cho việc mã hoá là: Ci = Ek(Pi... f(R15, K16) • Cứ thế cho 16 lần lặp • Tại vòng lặp n=16, ta được: L16 R16 • Đảo vị trí của 2 khối này cho nhau thành: R16L16 •Áp dụng Bảng hoán vị IP-1 cho R16L16 ta được thu bản mã hóa cần tìm R16 L16 Bảng IP-1 IP-1 C (đã mã hóa) 23 Ví dụ: Giả sử tại vòng lặp thứ 16 chúng ta thu được: L16 = 01000011 01000010 00110010 00110100 R16 = 00001010 01001100 11011001 10010101 • Đảo vị trí L16R16 thành: R16L16... 33 25 17 9 1 35 27 19 11 3 37 29 21 13 5 39 31 23 15 7 Xử lý qua 16 lần lặp, 1≤n≤16, tính LnRn theo quy tắc: Ln = Rn-1 Rn = Ln-1 ⊕ f(Rn-1 ,Kn ) R16=L15 ⊕ F(R15, K16) R16 L16 Bảng IP-1 IP-1 C (đã mã hóa) 11 Mã hóa khối dữ liệu 64 bits M (64 bít) 58 60 62 64 57 59 61 63 Bảng IP IP (64 bít) L0 (32bits) R0 (32bits) 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 Bảng IP (64 bít) 34 26 18 10 2 36 28 20 . toánGiải mãMô hình mã hóa DESBản tin rõBản tin mã hóaKhóa để mã hóaBản tin cần mã hóaBản đã mã hóa0000000000000000 5• Sơ đồ khối thực hiện giải thuật DES- . Chuẩn mã hóa dữ liệuDES (Data Encryption Standard)1. Vài nét về lịch sử phát triển DES2 . Khái quát các vấn đề mã hóa DES3 . Chi tiết giải thuật mã hóa DES4 .