Thuật tốn mã hóa liệu DES – Encipher Lưu đồ thuật tốn mã hóa Thuật tốn DES sử dụng để mã hóa giải mã block (khối) liệu 64 bit dựa key (khóa mã) 64 bit Chú ý, block đánh số thứ tự bit từ trái sang phải 1, bit bên trái bit số bit cuối bên phải bit số 64 Q trình giải mã mã hóa sử dụng key thứ tự phân phối giá trị bit key trình giải mã ngược với q trình mã hóa Một block liệu hoán vị khởi tạo (Initial Permutation) IP trước thực tính tốn mã hóa với key Cuối cùng, kết tính tốn với key hốn vị lần để tạo ra, hoán vị đảo hoán vị khởi tạo gọi (Inverse Initial Permutation) IP-1 Việc tính tốn dựa key định nghĩa đơn giản hàm f, gọi hàm mã hóa, hàm KS, gọi hàm phân phối key (key schedule) Hàm KS hàm tạo khóa vịng (round key) cho lần lặp mã hóa Có tất 16 khóa vịng từ K1 đến K16 Giải thuật mã hóa DES 2 Hốn vị khởi tạo
NHĨM 5: ĐỖ VĂN QN BÙI VIỆT HỒNG ĐÀM XN VIỆT Thuật tốn mã hóa liệu DES – Encipher Lưu đồ thuật tốn mã hóa Thuật tốn DES sử dụng để mã hóa giải mã block (khối) liệu 64 bit dựa key (khóa mã) 64 bit Chú ý, block đánh số thứ tự bit từ trái sang phải 1, bit bên trái bit số bit cuối bên phải bit số 64 Q trình giải mã mã hóa sử dụng key thứ tự phân phối giá trị bit key trình giải mã ngược với q trình mã hóa Một block liệu hoán vị khởi tạo (Initial Permutation) IP trước thực tính tốn mã hóa với key Cuối cùng, kết tính tốn với key hốn vị lần để tạo ra, hoán vị đảo hoán vị khởi tạo gọi (Inverse Initial Permutation) IP-1 Việc tính tốn dựa key định nghĩa đơn giản hàm f, gọi hàm mã hóa, hàm KS, gọi hàm phân phối key (key schedule) Hàm KS hàm tạo khóa vịng (round key) cho lần lặp mã hóa Có tất 16 khóa vịng từ K1 đến K16 Giải thuật mã hóa DES 2 Hốn vị khởi tạo - IP Hoán vị thay đổi ví trí bit chuỗi giá trị không làm thay đổi giá trị bit Đây bước quy trình mã hóa liệu 64 bit liệu đầu vào, gọi plaintext, hốn vị theo bảng mơ tả sau Sơ đồ hoán vị khởi tạo, ký hiệu IP Chuỗi bit đầu vào đánh số từ đến 64 (tính từ trái qua phải) Sau đó, bit thay đổi vị trí sơ đồ IP, bit số 58 đặt vào vị trí đầu tiên, bit số 50 đặt vào vị trí thứ Cứ vậy, bit thứ đặt vào vị trí cuối cùng. Sau hốn vị, chuỗi bit phân làm hai đoạn, đoạn 32 bit để bắt đầu vào quy trình tính tốn mã hóa với key Đoạn bên trái ký hiệu L, đoạn bên phải ký hiệu R Đoạn L gồm bit từ bit số đến bit số 32, đoạn R gồm bit từ bit số 33 đến bit số 64 Đoạn L lần tính tốn sau đoạn R lần tính tốn trước Đoạn R lần tính tốn sau tính từ đoạn R trước qua hàm mã hóa f(R, K) XOR với đoạn L lần tính trước 3 Hàm mã hóa f (R ,K) Tính tốn hàm mã hóa f(R,K) Đầu tiên, 32 bit đoạn R đánh số từ đến 32 theo thứ tự từ trái qua phải Giá trị chuyển đổi thông qua bảng tra E để tạo thành giá trị 48 bit Bit chuỗi giá trị 48 bit bit số 32 R, bit thứ bit số R, bit thứ bit số R bit cuối bit số R Bảng tra E Sau tra bảng E, giá trị 48 bit XOR với 48 bit khóa vịng (cách tạo khóa vịng 48 bit trình bày sau) Kết phép XOR chia làm block đánh số từ đến theo thứ tự từ trái qua phải, block bit Mỗi block biến đổi thông qua hàm lựa chọn riêng biệt Tương ứng với block có hàm chuyển đổi (selection function) riêng biệt S1, S2, S3, S4, S5, S6, S7 S8 Các hàm S (selection fuction) Việc chuyển đổi giá trị hàm S1, S2, , S8 thực cách tách block bit thành hai phần Phần thứ tổ hợp bit bit cuối block để tạo thành bit chọn hàng bảng S, bảng S có hàng đánh số từ đến theo thứ tự từ xuống Phần thứ bit lại dùng để chọn cột bảng S, bảng S có 16 cột đánh số từ đến 15 theo thứ tự từ trái qua phải Như vậy, với block bit ta chọn giá trị bảng S Giá trị nằm khoảng từ đến 15 quy đổi thành chuỗi nhị phân bit tương ứng Các chuỗi nhị phân có sau chuyển đổi từ S1 đến S8 ghép lại theo thứ tự từ trái qua phải để tạo thành giá trị 32 bit Ví dụ việc thực chuyển đổi hàm S, giả sử, giá trị block bit 011011 Ta tách chuỗi làm hai tổ hợp giá trị 01 (bit bit cuối cùng) 1101 (4 bit giữa) Hai tổ hợp dùng để chọn hàng cột tương ứng hình minh họa sau: Minh họa việc sử dụng hàm S1 Tổ hợp 01 chọn hàng 1, tổ hợp 1101 chọn cột 13 kết trả có giá trị nhị phân bit 0101 Qua bước chuyển đổi với hàm lựa chọn S, kết thu giá trị 32 bit Giá trị đưa qua hàm hoán vị P để tạo giá trị hàm f Hoán vị P thuật tốn tính hàm mã hóa f (R ,K) Giá trị 32 bit thu từ chuyển đổi với hàm lựa chọn S đánh số từ đến 32 theo thứ tự từ trái qua phải Theo bảng hoán vị P, bit sau hoán vị bit số 16, bit thứ bit số bit cuối bit số 25 Hàm tính tốn mã hóa f (R, K) định nghĩa sau: Trong đó: P (): phép hốn vị P Sn: phép chuyển đổi block n (n chạy từ đến 8) với hàm lựa chọn S Bn: block bit thứ n (n chạy từ đến 8) Block lấy từ phép tốn XOR khóa vịng K giá trị hàm E(R) E(R): hàm chuyển đổi giá trị R 32 bit thành giá trị 48 bit Tính khóa vịng - KS Một key có 64 bit có 56 bit sử dụng để thực tính tốn giá trị khóa vịng Key chia làm byte Các bit vị trí 8, 16, 32, 40, 48, 56 64 bit parity sử dụng để kiểm tra độ xác key theo byte key phân phối đường truyền đến mã hóa giải mã xảy lỗi Parity sử dụng parity lẻ (odd parity) Thuật tốn tính khóa vịng Key gốc thực hốn vị lựa chọn PC-1 Key đánh số từ đến 64 theo thứ tự từ trái qua phải Bảng hoán vị lựa chọn PC-1 Bảng hoán vị lựa chọn PC-1 có hai phần Phần đầu dùng để xác định giá trị C0 phần sau dùng để xác định giá trị D0 Theo bảng C0 chuỗi bit có thứ tự 57, 49, 41, , 36 lấy từ key gốc, D0 chuỗi bit có thứ tự 63, 55, 47, , lấy từ key gốc Sau xác định giá trị ban đầu để tính key C0 D0 khóa vịng Kn (với n từ đến 16) tính theo ngun tắc giá trị khóa vịng thứ n tính từ giá trị khóa vịng thứ n-1 Trong Cn Dn tạo từ Cn-1 Dn-1 cách dịch trái giá trị với số bit quy định bảng sau đây: Bảng quy định số bit dịch trái tính khóa vịng Ví dụ, theo bảng trên, C3 D3 có từ C2 D2 cách dịch trái bit Hay C16 D16 có từ C15 D15 cách dịch trái bit Dịch trái hiểu quay trái minh họa sau đây: 10 Hình 11 Minh họa phép dịch trái tính khóa vịng Sau tính Cn Dn chuỗi CnDn đánh số từ đến 56 theo thứ tự từ trái sang phải hoán vị lựa chọn lần theo bảng hoán vị PC-2 Hình 12 Bảng hốn vị lựa chọn PC-2 Như bit khóa vịng Kn bit số 14 chuỗi CnDn, bit thứ bit số 17 chuỗi CnDn bit cuối bit số 32 chuỗi CnDn 11 Hoán vị khởi tạo đảo IP-1 Đây bước cuối để tạo giá trị mã hóa Giá trị lần lặp mã hóa cuối hốn vị khởi tạo đảo IP-1 tạo giá trị mã hóa plaintext Bảng hốn vị khởi tạo đảo IP-1 Ví dụ mã hóa DES Giả sử ta có liệu cần mã hóa key là: M = 00123456789abcde (Hex) = 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 K = 0133457799bbcdff (Hex) = 0000 0001 0011 0011 0100 0101 0111 0111 1001 10001 1011 1011 1100 1100 1111 1111 Từ hai đầu vào này, giá trị bước tính tốn mã hóa DES minh họa chi tiết sau 6.1 Hoán vị khởi tạo – IP Thơng điệp M đánh số vị trí bit từ trái qua phải sau: Sắp xếp lại thứ tự bit M theo bảng hoán vị IP, kết có sau bước là: IP(M) = 98fecc00e054f0aa (Hex) = 1001 1000 1111 1110 1100 1100 0000 0000 1110 0000 0101 0100 1111 0000 1010 1010 12 6.2 tốn giá trị khóa vịng – KS Để tính tốn hàm mã hóa f, cần có giá trị khóa cho lần lặp mã hóa Key ban đầu đánh số thứ tự bit từ trái qua phải sau: Sau xếp bit theo bảng hốn vị PC-1 Hình 1-8, kết thu hai giá trị đầu sau: C0 = f0ccaab (Hex) = 1111 0000 1100 1100 1010 1010 1011 D0 = aaccf0a (Hex) = 1010 1010 1100 1100 1111 0000 1010 Để tính khóa vịng K1 C0 D0 dịch (quay) trái bit Giá trị thu sau dịch trái là: C1 = e199557 (Hex) = 1110 0001 1001 1001 0101 0101 0111 D1 = 5599e15 (Hex) = 0101 0101 1001 1001 1110 0001 0101 Hai chuỗi C1 D1 ghép lài thành chuỗi 56 bit e1995575599e15 Chuỗi hốn vị bảng PC-2 Hình 1-11 để giá trị khóa vịng 48 bit thứ K1. K1 = 1b02efdb49a5 (Hex) Để tính khóa vịng K2 lấy C1 D1 dịch trái với số lượng bit theo bảng Hình 1-9, lấy kết hốn vị theo bảng PC-2 Q trình tiếp tục khóa vịng cuối K16 Kết khóa vịng 48 bit thu là: K2 = 69aed925ae66 (Hex) K3 = 55fc8ab4acd2 K4 = 72add2ad8657 K5 = 7cec071fe6c2 K6 = 63a51e3cc545 K7 = 6c84b78ae4c6 K8 = f7883aece781 K9 = c0dbeb27b839 K10 = b1f347631d76 K11 = 215fc30d89be K12 = 7171f5455cd5 K13 = 95c5d14b80fd K14 = 5743b783đ8d K15 = bf91850a17b5 K16 = cb3d0bbc7072 13 6.3 Tính hàm mã hóa f (R, K) Sau bước hốn vị khởi tạo IP, giá trị IP(M) tách làm hai phần là: R0 = e054f0aa (Hex) = 1110 0000 0101 0100 1111 0000 1010 1010 L0 = 98fecc00 (Hex) = 1001 1000 1111 1110 1100 1100 0000 0000 Giá trị 32 bit R0 tra qua bảng E để tạo giá trị 48 bit. E(R0) = 7002a97a1555 (Hex) Giá trị XOR với khóa vòng thứ K1 kết quả XOR(E(R0), K1) = 6b0046a15cf0 (Hex) Giá trị chia thành nhóm theo thứ tự từ trái qua phải, nhóm bit để đưa đến bảng S Ví dụ tra bảng S Các giá trị đầu sau bước tra bảng S ghép lại theo thứ tự từ S1 đến S8 để giá trị 32 bit. S1() S2() S3() S4() S5() S6() S7() S8() = 10010101110100111010110101010000 = 95d3ad50 (Hex) Giá trị hoán vị bảng P giá trị hàm f. 14 F (R0, K1) = 97d1619a (Hex) = 1001 0111 1101 0001 0110 0001 1001 1010 Tương tự, ta có giá trị hàm f vịng lặp mã hóa cịn lại sau: f (R1, K2) = 88488d0b (Hex) f (R2, K3) = da3b2692 f (R3, K4) = f44950b2 f (R4, K5) = d83237fd f (R5, K6) = afc43b25 f (R6, K7) = 4e5123a2 f (R7, K8) = 6cfdecb8 f (R8, K9) = fb0600b1 f (R9, K10) = d51508e4 f (R10, K11) = fcf67146 f (R11, K12) = 704fa3a5 f (R12, K13) = 7bfe2806 f (R13, K14) = 65fc7a48 f (R14, K15) = 513f1d11 f (R15, K16) = cbf5252d 6.4 Giá trị vịng lặp mã hóa Giá trị hàm f (R, K) sử dụng để tính giá trị Rn Ln vịng lặp mã hóa theo cơng thức: 15 Thay vào cơng thức ta có kết sau: 6.5 Hoán vị khởi tạo đảo IP-1 Giá trị R16 L16 vịng lặp mã hóa cuối ghép lại thành chuỗi 64 bit để thực hoán vị theo bảng IP-1 Kết phép hoán vị giá trị mã hóa (ciphertext) cần tính IP-1(R16, L16) = 1abff69d5a93e80b (Hex) = 0001 1010 1011 1111 1111 0110 1001 1101 0101 1010 1001 0011 1110 1000 0000 1011 16 Thuật toán giải mã liệu DES Các bước trình giải mã liệu thực tương tự trình mã hóa liệu Trong q trình giải mã có số thay đổi sau: Đầu vào lúc liệu cần giải mã (ciphertext) đầu kết giải mã (plaintext) Khóa vịng sử dụng vịng lặp giải mã có thứ tự ngược với q trình mã hóa Nghĩa là, vịng lặp giải mã đầu tiên, khóa vịng sử dụng K16 Tại vòng lặp giải mã thứ 2, khóa vịng sử dụng K15, vịng lặp giải mã cuối khóa vịng sử dụng K1 17 18 ... để tạo giá trị mã hóa Giá trị lần lặp mã hóa cuối hốn vị khởi tạo đảo IP-1 tạo giá trị mã hóa plaintext Bảng hốn vị khởi tạo đảo IP-1 Ví dụ mã hóa DES Giả sử ta có liệu cần mã hóa key là: ... bước trình giải mã liệu thực tương tự q trình mã hóa liệu Trong q trình giải mã có số thay đổi sau: Đầu vào lúc liệu cần giải mã (ciphertext) đầu kết giải mã (plaintext) Khóa vịng sử dụng... vịng lặp giải mã có thứ tự ngược với q trình mã hóa Nghĩa là, vịng lặp giải mã đầu tiên, khóa vịng sử dụng K16 Tại vịng lặp giải mã thứ 2, khóa vịng sử dụng K15, vòng lặp giải mã cuối khóa vịng sử