Hoán vị khởi tạo IP
Xáo trộn 64 bit dữ liệu và chia 2 nửa R0, L0 (32 bit)
Các phép tính ở vòng thứ i trong 16 vòng lặp
Hàm mở rộng E(Ri-1) (32 bit 48 bit)
XOR với khóa Ki
8 S-box (6 bit 4 bit)
Hoán vị P xáo 32 bit nhận được
XOR với Li-1 để cho ra Ri
45 trang |
Chia sẻ: mamamia | Lượt xem: 1889 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Bài giảng Chương 4 mã hóa theo khối và des, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level Fifth level Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) ‹#› Bảo Mật Thông Tin Trần Nhật Quang Khoa Công Nghệ Thông Tin – ĐH Sư Phạm Kỹ Thuật TP HCM trannhatquang4810@gmail.com Chương 4 Mã Hóa Theo Khối và DES (tt) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 2 DES (tiếp theo) Sử dụng DES trong thực tế Các Kiểu sử dụng (Mode of use): ECB, CBC, OFB, và CFB Các Nội Dung Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 3 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 4 Hoán vị khởi tạo IP Xáo trộn 64 bit dữ liệu và chia 2 nửa R0, L0 (32 bit) Các phép tính ở vòng thứ i trong 16 vòng lặp Hàm mở rộng E(Ri-1) (32 bit 48 bit) XOR với khóa Ki 8 S-box (6 bit 4 bit) Hoán vị P xáo 32 bit nhận được XOR với Li-1 để cho ra Ri Tóm lại : Ri = Li-1 XOR P( S(E(Ri-1) XOR Ki) ) Còn : Li = Ri-1 (vòng 16 không đảo chỗ R16 và L16) Hoán vị kết thúc FP ( = IP-1 ) Quá Trình Mã Hóa Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 5 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 6 Là bước đầu của quá trình mã hóa. Gồm 2 bước: Làm thay đổi trật tự các bit nguồn (xét khối nguồn 64 bit). Chia thành 2 nửa (mỗi phần 32 bit): Các bit chẵn chọn vào nửa đầu, lẻ vào nửa sau. Nói chung không tăng độ an toàn của thuật toán mà chỉ làm cho thuật toán phức tạp hơn. Ví dụ: IP (675a6967 5e5a6b5a) = (ffb2194d 004df6fb) Hoán Vị Khởi Tạo (Intial Permutation – IP) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 0 1 1 0 0 1 1 1 67 0 1 0 1 1 0 1 0 5a 0 1 1 0 1 0 0 1 69 0 1 1 0 0 1 1 1 67 0 1 0 1 1 1 1 0 5e 0 1 0 1 1 0 1 0 5a 0 1 1 0 1 0 1 1 6b 0 1 0 1 1 0 1 0 5a 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 ff b2 19 4d 00 4d f6 fb IP 6464 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 8 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 9 Khối nửa phải R(i-1)Ri: Mở rộng E (32 48 bit) XOR với khóa 48 bit Thay thế S Hoán vị P XOR với nửa trái Ri = Li-1 XOR P( S [E(Ri-1) XOR Ki ] ) Khối nửa trái L(i-1)Li: Li = Ri-1 Các Phép Tính Ở Vòng i L(i) = R(i-1) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 10 Mở rộng 32 bit 48 bit. Dùng các bit trong 32 bit để thêm thành 2 cột 2 bên. Đệm thêm 2 cột bit ảo vào (bit 0) để đủ 8 bit để ghi thành số hexa. Ví dụ: E(00 4d f6 fb) = 20 00 09 1b 3e 2d 1f 36 Hàm Mở Rộng E (Expansion Function) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5 9 13 17 21 25 29 1 32 4 8 12 16 20 24 28 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 ff b2 19 4d 00 4d f6 fb 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 3248 20 00 09 1b 3e 2d 1f 36 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 12 Khối nửa phải R(i-1)Ri: Mở rộng E (32 48 bit) XOR với khóa 48 bit Thay thế S Hoán vị P XOR với nửa trái Ri = Li-1 XOR P( S [E(Ri-1) XOR Ki ] ) Khối nửa trái L(i-1)Li: Li = Ri-1 Các Phép Tính Ở Vòng i L(i) = R(i-1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A = E(R0) XOR K1 = 20 00 09 1b 3e 2d 1f 36 XOR 38 09 1b 26 2f 3a 27 0f = 18 09 12 3d 11 17 38 39 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 A (48 bit) 20 00 09 1b 3e 2d 1f 36 48 bit sau mở rộng Subkey 48 bit XOR = Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 14 Khối nửa phải R(i-1)Ri: Mở rộng E (32 48 bit) XOR với khóa 48 bit Thay thế S Hoán vị P XOR với nửa trái Ri = Li-1 XOR P( S [E(Ri-1) XOR Ki ] ) Khối nửa trái L(i-1)Li: Li = Ri-1 Các Phép Tính Ở Vòng i L(i) = R(i-1) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 15 Cần các S-box biến đổi 48 bit (khối A). Ta dùng 8 S-box, mỗi cái sẽ biến đổi 6 bit thành 4 bit. Mỗi S-box có 4 hàng và 16 cột (được đánh số từ 0). Mỗi phần tử của S-box là một số hexa (4 bit). Các S-box 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 e 4 d 1 2 f b 8 3 a 6 c 5 9 0 7 1 0 f 7 4 e 2 d 1 a 6 c b 9 5 3 8 2 4 1 e 8 d 6 2 b f c 9 7 3 a 5 0 3 f c 8 2 4 9 1 7 5 b 3 e a 0 6 d S1 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 16 6 bit đầu vào được biến đổi như sau: 2 bit đầu và cuối tạo thành chỉ số hàng (0-3) 4 bit giữa tạo thành chỉ số cột (0-f) Kết quả là số hexa (4-bit) của bảng nằm tại giao điểm Ví dụ: Ta có 6 bit : (011000)2 , khi đó: Hàng = (00)2 = 016 Cột = (1100)2 = c16 S1(011000)2 = 516 = (0101)2 S-box 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 e 4 d 1 2 f b 8 3 a 6 c 5 9 0 7 1 0 f 7 4 e 2 d 1 a 6 c b 9 5 3 8 2 4 1 e 8 d 6 2 b f c 9 7 3 a 5 0 3 f c 8 2 4 9 1 7 5 b 3 e a 0 6 d S1 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 e 4 d 1 2 f b 8 3 a 6 c 5 9 0 7 1 0 f 7 4 e 2 d 1 a 6 c b 9 5 3 8 2 4 1 e 8 d 6 2 b f c 9 7 3 a 5 0 3 f c 8 2 4 9 1 7 5 b 3 e a 0 6 d 5 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 2 c 4 1 7 a b 6 8 5 3 f d 0 e 9 1 e b 2 c 4 7 d 1 5 0 f a 3 9 8 6 2 4 2 1 b a d 7 8 f 9 c 5 6 3 0 e 3 b 8 c 7 1 e 2 d 6 f 0 9 a 4 5 3 2 f 1 8 e 6 b 3 4 9 7 2 d c 0 5 a 1 3 d 4 7 f 2 8 e c 0 1 a 6 9 b 5 2 0 e 7 b a 4 d 1 5 8 c 6 9 3 2 f 3 d 8 a 1 3 f 4 2 b 6 7 c 0 5 e 9 3 a 0 9 e 6 3 f 5 1 d c 7 b 4 2 8 1 d 7 0 9 3 4 6 a 2 8 5 e c b f 1 2 d 6 4 9 8 f 3 0 b 1 2 c 5 a e 7 3 1 a d 0 6 9 8 7 4 f e 3 b 5 2 c 4 7 d e 3 0 6 9 a 1 2 8 5 b c 4 f 1 d 8 b 5 6 f 0 3 4 7 2 c 1 a e 9 2 a 6 9 0 c b 7 d f 1 3 e 5 2 8 4 3 3 f 0 6 a 1 d 8 9 4 5 b c 7 2 e 6 c 1 a f 9 2 6 8 0 d 3 4 e 7 5 b 1 a f 4 2 7 c 9 5 6 1 d e 0 b 3 8 2 9 e f 5 2 8 c 3 7 0 4 a 1 d b 6 3 4 3 2 c 9 5 f a b e 1 7 6 0 8 d 7 4 b 2 e f 0 8 d 3 c 9 7 5 d 6 1 1 d 0 b 7 4 9 1 a e 3 5 c 2 f 8 6 2 1 4 b d c 3 7 e a f 6 8 0 5 9 2 3 6 b d 8 1 4 a 7 9 5 0 f e 2 3 c 8 d 2 8 4 6 f b 1 a 9 3 e 5 0 c 7 1 1 f d 8 a 3 7 4 c 5 6 b 0 e 9 2 2 7 b 4 1 9 c e 2 0 6 a d f 3 5 8 3 2 1 e 7 4 a 8 d f c 9 0 3 5 6 b VD: S(18 09 12 3d 11 17 38 39) = 5f d2 5e 03 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 18 Tóm Tắt Tính B 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B = S(A) = S(E(R0) XOR K1) = S(18 09 12 3d 11 17 38 39) = 5f d2 5e 03 0 c S1 5 1 4 S2 f 0 9 S3 d 3 e S4 2 1 8 S5 5 1 b S6 e 2 c S7 0 3 c S8 3 A (48 bit) B (32 bit) Hàng Cột 18 09 12 3d 11 17 38 39 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 19 Khối nửa phải R(i-1)Ri: Mở rộng E (32 48 bit) XOR với khóa 48 bit Thay thế S Hoán vị P XOR với nửa trái Ri = Li-1 XOR P( S [E(Ri-1) XOR Ki ] ) Khối nửa trái L(i-1)Li: Li = Ri-1 Các Phép Tính Ở Vòng i L(i) = R(i-1) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 20 Sắp xếp lại các bit trong B (đầu ra của S-box (32 bit)). Ví dụ: P(B) = P(5f d2 5e 03) = 74 6f c9 1a Hoán Vị P (Permutation) 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3232 0 1 0 1 5 1 1 1 1 f 1 1 0 1 d 0 0 1 0 2 0 1 0 1 5 1 1 1 0 e 0 0 0 0 0 0 0 1 1 3 0 1 1 1 7 0 1 0 0 4 0 1 1 0 6 1 1 1 1 f 1 1 0 0 c 1 0 0 1 9 0 0 0 1 1 1 0 1 0 a 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3232 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 22 Khối nửa phải R(i-1)Ri: Mở rộng E (32 48 bit) XOR với khóa 48 bit Thay thế S Hoán vị P XOR với nửa trái Ri = Li-1 XOR P( S [E(Ri-1) XOR Ki ] ) Khối nửa trái L(i-1)Li: Li = Ri-1 Các Phép Tính Ở Vòng i L(i) = R(i-1) 0 1 1 1 7 0 1 0 0 4 0 1 1 0 6 1 1 1 1 f 1 1 0 0 c 1 0 0 1 9 0 0 0 1 1 1 0 1 0 a 1 1 1 1 f 1 1 1 1 f 1 0 1 1 b 0 0 1 0 2 0 0 0 1 1 1 0 0 1 9 0 1 0 0 4 1 1 0 1 d 32 bit Nửa Trái vòng trước 32 bit sau hoán vị XOR 1 0 0 0 8 1 0 1 1 b 1 1 0 1 d 1 1 0 1 d 1 1 0 1 d 0 0 0 0 0 0 1 0 1 5 0 1 1 1 7 = P(B) = 74 6f c9 1a Li-1 = ff b2 19 4d Ri = P(B) XOR Li-1 = 8b dd d0 57 Li = Ri-1 = 00 4d f6 fb Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 24 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 25 Là bước cuối cùng sau 16 vòng tính toán. Kết quả chính là đầu ra của DES. Chính là nghịch đảo của IP (hoán vị ban đầu – Initial Permutation): FP = IP-1 Ví dụ: FP (06 8d dd cd 1d 4c ce bf ) = (97 4a ff bf 86 02 2d 1f ) Hoán Vị Kết Thúc FP (Final Permutation) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 FP 6464 0 0 0 0 0 1 1 0 06 1 0 0 0 1 1 0 1 8d 1 1 0 1 1 1 0 1 dd 1 1 0 0 1 1 0 1 cd 0 0 0 1 1 1 0 1 1d 0 1 0 0 1 1 0 0 4c 1 1 0 0 1 1 1 0 ce 1 0 1 1 1 1 1 1 bf 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 97 4a ff bf 86 02 2d 1f 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 27 Tóm Tắt DES Khóa ban đầu: K = (5b5a5767, 6a56676e) Dữ liệu đầu vào: P = (675a6967, 5e5a6b5a) IP(P) = (L0 = ffb2194d, R0 = 004df6fb) Vòng 1 f(R00= 004df6fb, SK01 =(38 09 1b 26 2f 3a 27 0f)) = 746fc91a L00 Vòng 2 f(R01= 8bddd057, SK02 =(28 09 19 32 1d 32 1f 2f)) = 7add38ae L01 Vòng 3 f(R02= 7a90ce55, SK03 =(39 05 29 32 3f 2b 27 0b)) = a5e3f499 L02 Vòng 4 f(R03= 2e3e24ce, SK04 =(29 2f 0d 10 19 2f 1d 3f)) = c5403e1c L03 Vòng 5 f(R04= bfd0f049, SK05 =(03 25 1d 13 1f 3b 37 2a)) = 91a62c82 L04 Vòng 6 f(R05= bf98084c, SK06 =(1b 35 05 19 3b 0d 35 3b)) = 6aeb6bc3 L05 Vòng 7 f(R06= d53b9b8a, SK07 =(03 3c 07 09 13 3f 39 3e)) = 1e9f7513 L06 Vòng 8 f(R07= a1077d5f, SK08 =(06 34 26 1b 3f 1d 37 38)) = 59d1851c L07 Vòng 9 f(R08= 8cea1e96, SK09 =(07 34 2a 09 37 3f 38 3c)) = 0fc4b474 L08 Vòng 10 f(R09= aec3c92b, SK10 =(06 33 26 0c 3e 15 3f 38)) = 8de55e67 L09 Vòng 11 f(R10= 010f40f1, SK11 =(06 02 33 0d 26 1f 28 3f)) = dced7991 L10 Vòng 12 f(R11= 722eb0ba, SK12 =(14 16 30 2c 3d 37 3a 34)) = 898d0def L11 Vòng 13 f(R12= 88824d1e, SK13 =(30 0a 36 24 2e 12 2f 3f)) = 34cee3c3 L12 Vòng 14 f(R13= 46e05379, SK14 =(34 0a 38 27 2d 3f 2a 17)) = 6a4754b1 L13 Vòng 15 f(R14= e2c519af, SK15 =(38 1b 18 22 1d 32 1f 37)) = 5bac9dc6 L14 Vòng 16 f(R15= 1d4ccebf, SK16 =(38 0b 08 2e 3d 2f 0e 17)) = e448c462 L15 L16= 068dddcd, R16= 1d4ccebf Kết quả mã hóa: C = FP(L16, R16) = (974affbf, 86022d1f) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 29 Do DES được thiết kế theo Cấu trúc Feistel nên việc Giải mã được thực hiện theo trình tự ngược lại với Mã hóa. Giải Mã DES Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 30 Trong ví dụ tạo khóa hãy: Chỉ ra cách để tạo ra khóa con ở vòng thứ 3: SK3 = (39 05 29 32 3f 2b 27 0b) từ khóa ban đầu: K = 5b 5a 57 67 6a 56 67 6e Trong ví dụ mã hóa hãy: Hãy chạy thử bằng tay vòng tính toán thứ 3: Vòng 3: f (R02=7a 90 ce 55, SK03= 39 05 29 32 3f 2b 27 0b) = a5 e3 f4 99 Luyện Tập Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 31 Trong nhiều thuật toán khối, có những khóa cần phải tránh dùng vì nó sẽ làm giảm độ phức tạp của thuật toán. Ví dụ: các khóa chỉ tạo ra được 1 khóa con duy nhất trong tất cả các vòng lặp. Định nghĩa: Khóa k của DES gọi là yếu (weak) nếu Ek(Ek(x)) = x, x Cặp khóa (k1, k2) của DES gọi là hơi yếu (semi-weak) nếu: Ek1(Ek2(x)) = x, x Các khóa hơi yếu chỉ tạo ra được 2 khóa con khác nhau trong tất cả các vòng lặp. DES có 4 khóa yếu và 6 cặp hơi yếu. DES còn có những khóa chỉ tạo ra 4 khóa con khác nhau. Khóa Yếu (Weak Keys) Các Khóa Yếu Của DES Khóa yếu (HEX) C0 D0 0101 0101 0101 0101 { 0 }28 { 0 }28 FEFE FEFE FEFE FEFE { 1 }28 { 1 }28 1F1F 1F1F 0E0E 0E0E { 0 }28 { 1 }28 E0E0 E0E0 F1F1 F1F1 { 1 }28 { 0 }28 C0 D0 Khóa hơi yếu (HEX) C0 D0 {01}14 {01}14 01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01 {10}14 {10}14 {01}14 {10}14 1FE0 1FE0 0EF1 0EF1 E01F E01F F10E F10E {10}14 {01}14 {01}14 {0}28 01E0 01E0 01F1 01F1 E001 E001 F101 F101 {10}14 {0}28 {01}14 {1}28 1FFE 1FFE 0EFE 0EFE FE1F FE1F FE0E FE0E {10}14 {1}28 {0}28 {01}14 011F 011F 010E 010E 1F01 1F01 0E01 0E01 {0}28 {10}14 {1}28 {01}14 E0FE E0FE F1FE F1FE FEE0 FEE0 FEF1 FEF1 {1}28 {10}14 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 33 Phải tránh các khóa yếu trong chương trình tạo khóa Thiết kế S-box Là 4 hàm thay thế, một trong số đó được chọn bởi cặp 2 bits 1 và 6 Mỗi hàm sẽ thay thế các bit 2,3,4,5 bởi các bit đích Cần tạo ra hiệu ứng thác và tính toàn vẹn Thiết kế hoán vị Có 5 hoán vị: IP, IP-1, P, E, PC1, PC2 IP, IP-1, PC1 là những hàm tạo nên liên kết DES với bên ngoài E, P, PC2 làm việc với S-box: bảo đảm sự phụ thuộc của các bit đích vào khóa và các bit nguồn Cần hỗ trợ tạo ra hiệu ứng thác và tính toàn vẹn Đặc Điểm Thiết Kế DES Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 34 Cần cải tiến DES để tránh bị vét cạn khóa. DES 3 lớp (Triple DES): sử dụng DES 3 lần: C = DESK3 { DES-1K2 { DESK1 (P) } } Hiện vẫn chưa bị bẻ mã, sử dụng rộng rãi, tuy nhiên tốc độ chậm (giảm 3 lần). (xem thêm trong [5]) Triple DES Kiểu Sử Dụng(Mode Of Use) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 35 Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 36 DES mã hóa mỗi lần 64 bit dữ liệu Để mã hóa dữ liệu > 64 bit ta thực hiện mã hóa lần lượt các khối Các kiểu phối hợp mã hóa các khối được gọi mà Kiểu sử dụng (Mode of use) hay Chế độ hoạt động (Mode of operation) của thuật toán mã hóa. Các thuật toán mã hóa khối có 4 kiểu sử dụng phổ biến trong thực tế: ECB, CBC, OFB, và CFB Mã Hóa Dữ Liệu > 64 bit Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 37 Là kiểu sử dụng đơn giản nhất. Thông điệp được chia thành các khối (64 bit) độc lập và được mã hóa riêng rẽ. Các khối hoàn toàn độc lập với nhau. Ci = DESK (Pi) Electronic Codebook (ECB) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 38 Các tính chất của ECB Khối nguồn (gần) giống nhau sẽ tạo nên các khối mã (gần) giống nhau và ngược lại. Các khối độc lập với nhau: Thay đổi thứ tự các khối nguồn sẽ chỉ làm thay đổi trật tự các khối mã. Do các khối mã độc lập nên kẻ lạ có thể xen vào 1 khối mà người nhận không thể biết. Hơn nữa sự lặp lại các khối giống nhau sẽ tạo điều kiện cho việc thám mã. Do đó ECB chỉ có tác dụng tốt khi số lượng các khối của thông điệp nguồn không lớn. Ưu Và Khuyết Của ECB Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 39 Các khối của thông điệp liên kết với nhau trong quy trình mã hóa. Đầu vào cần thêm 1 vector khởi tạo (Initial Vector - IV) để bắt đầu mã hóa: C0 = IV Ci = DESK (Pi XOR Ci-1), ( i = 1..n ) Cipher Block Chaining (CBC) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 40 Mỗi khối đích phụ thuộc vào tất cả các khối nguồn trước đó Thay đổi trên đường truyền hoặc thay đổi ở khối nguồn sẽ được thể hiện ở khối mã sau khi xảy ra sự thay đổi Vector khởi tạo (IV) cần được thông báo cho cả người gửi lẫn người nhận Tuy nhiên nếu IV được gửi công khai, kẻ lạ có thể thay đổi IV và các bit ở khối thứ nhất cho phù hợp Do đó IV cần được cố định hoặc được mã hóa và gửi bằng ECB ở phần đầu của thông điệp Xử lý khả năng khối cuối cùng < 8 byte (64 bit) Bổ sung thêm các byte cho đủ 8 byte. Ví dụ: [b1 b2 b3] [b1 b2 b3 00 00 00 00 05] – thêm 5 byte Ưu Và Khuyết Của CBC Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 41 Thông điệp được chia thành các khối 64 bit. Mỗi khối coi là 1 dòng bit sẽ được XOR với 64 bit đầu ra của DESK(J) (J1 IV). Kết quả C còn dùng làm đầu vào cho vòng sau. Khi đó: ( i = 1..n ) Ji = Ci-1 ; với C0 = IV Ci = Pi XOR DESK (Ji) ; Cả khi mã hóa và giải mã CFB thuật toán khối luôn ở trạng thái mã hóa. Lỗi nếu xảy ra sẽ bị lan truyền cho các khối sau đó. Cipher FeedBack (CFB) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 42 Cipher FeedBack (CFB) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 43 Thông điệp nguồn được chia thành các khối 64 bit P và sẽ được coi như là 1 dòng bit. Đầu ra của thuật toán khối một mặt XOR với các khối P để cho các khối C, mặt khác sẽ làm nguồn cho thuật toán khối sau: Oi = DESK (Oi-1) ; với O0 = IV; i=1..n Ci = Pi XOR Oi Các Oi không phụ thuộc vào thông điệp. Output FeedBack (OFB) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 44 Output FeedBack (OFB) Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 45 Vét cạn khóa (Exhaustive Key Search) Tấn công cấu trúc (Structural Attacks) Thám mã vi phân (differential cryptanalysis) Thám mã tuyến tính (linear cryptanalysis) Tấn công khóa (related key attacks) Tấn công thực hiện (Implementation Attacks) Thám mã thời gian (timing attacks) Thám mã năng suất (power attacks) Thám mã sai sót (differential fault analysis) Tấn công ảo (Inventing Attacks) Một Số Dạng Thám Mã Mã Hóa Theo Khối Bảo Mật Thông Tin Chương 4. Mã Hóa Theo Khối và DES (tt) 46 [1] Đặng Trường Sơn, BMTT_05_DES_Usage.ppt, ĐH Sư Phạm Kỹ Thuật TP HCM. [2] William Stallings, Cryptography and Network Security Principles and Practices, Fourth Edition, Prentice Hall, November 16, 2005. [3] Dương Anh Đức và Trần Minh Triết, Mã hóa và ứng dụng, Đại học Quốc gia thành phố Hồ Chí Minh, 2005. [4] [5] Tài Liệu Tham Khảo