Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
3,65 MB
Nội dung
Chủ đề 4: Data Encryption Standard Advanced Encryption Standard PGS.TS Trần Minh Triết Nội dung Data Encryption Standard Advanced Encryption Standard Mã hóa tích (Product Cipher) Mã hóa sử dụng phép thay (substitution) hay phép đổi chỗ (transposition) khơng an tồn (do đặc tính ngơn ngữ) Sử dụng liên tiếp thao tác mã hóa đơn giản tạo cách mã hóa thơng tin an tồn Substitution kết hợp với Substitution an toàn phép Substitution Transposition kết hợp với Transposition an toàn phép Transposition Substitution kết hợp Transposition cho kết an toàn nhiều so với việc dùng loại thao tác (thay hay đổi chỗ) Đây ý tưởng mở đầu cho phương pháp mã hóa đại Quy trình mã hóa theo khối Key Schedule Secret Key Round Keys (Sub Keys) Data Path PlainText Quy trình mã hóa theo khối Data Path: Thơng thường, quy trình mã hóa bao gồm nhiều chu kỳ mã hóa (round) liên tiếp nhau; chu kỳ gồm nhiều thao tác mã hóa Key Schedule: Từ khóa gốc (secret key), phát sinh (có quy luật) giá trị khóa sử dụng chu kỳ mã hóa (round key) Kiến trúc chu kỳ mã hóa Kiến trúc phổ biến chu kỳ mã hóa: Kiến trúc Fiestel Ví dụ: Blowfish, Camellia, CAST-128, DES, FEAL, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, MISTY1, RC5, TEA, Triple DES, Twofish, XTEA Kiến trúc SPN Ví dụ: Rijndael – AES, Anubis… Data Encryption Standard Data Encryption Standard Mã hóa theo khối (block cipher) Ý tưởng: mã hóa tích (product cipher) Key: 56 bit Block: 64 bit Được IBM phát triển từ phương pháp Lucifer Chính thức cơng bố năm 1975 Được chọn Chuẩn xử lý thông tin liên bang (Federal Information Processing Standard - FIPS) năm 1976 Giải thuật mã hóa giải mã cơng bố Cơ sở Toán học mật mã việc thiết kế DES: thơng tin bí mật Quy trình Mã hóa theo kiến trúc Feistel Li-1 Ri-1 Ki-1 Chu kỳ mã hóa … Chu kỳ mã hóa i f … Chu kỳ mã hóa Nr Li Ri Li = Ri-1 Ri = Li-1 f (Ri-1, Ki-1) Quy trình Giải mã theo kiến trúc Feistel Li Ri Ki Chu kỳ giải mã Nr … Chu kỳ giải mã i f … Chu kỳ giải mã Li-1 Ri-1 Ri-1 = Li Li-1 = Ri f (Li, Ki) 10 Phép biến đổi ngược InvSubBytes Quá trình thay byte y InvSubBytes: Phép biến đổi affine: xi=y(i+2)mod8 y(i+5)mod8 y(i+7)mod8 di với {d7 d6 d5 d4 d3 d2 d1 d0} = {05} Xác định phần tử nghịch đảo x-1GF(28) x Quy ước {00}-1 = {00} 41 Phép biến đổi ngược InvSubBytes x0 0 x 1 1 x2 0 x3 = 1 x4 0 x5 0 x 1 6 x7 0 0 1 y0 1 0 0 0 y1 0 0 0 1 y2 1 0 0 y3 + 1 0 y 0 1 0 y5 0 1 0 y 0 0 1 0 y7 0 42 Phép biến đổi ShiftRows ShiftRows 43 Phép biến đổi ShiftRows Mỗi dòng trạng thái hành dịch chuyển xoay vòng số vị trí Byte sr,c dịng r cột c dịch chuyển đến cột (c + shift(r, Nb)) mod Nb Phép biến đổi ngược InvShiftRows: Byte sr,c dòng r cột c dịch chuyển đến cột (c- shift(r, Nb)) mod Nb shift(r, Nb) Nb 1 1 r 2 3 3 44 Phép biến đổi AddRoundKey S00 S10 S S010c S02 S03 SS111c S12 S13 S20 SS212c S22 S23 Wl W Wl+c l+1 Wl+2 Wl+3 S'20 S’ S'21 S' S'23 2c 22 S'30 S’ S'31 S'32 S'33 S30 S31 S32 S33 S3c l = round*Nb S’ 0c S' S'00 S'01 02 S'03 S'10 S’ S'11 1c S'12 S'13 3c AddRoundKey 45 Phép biến đổi AddRoundKey Từng byte trạng thái XOR với byte tương ứng mã khóa chu kỳ hành s’r,c = kr,csr,c , < r < 8, c < Nb Phép biến đổi ngược AddRoundKey AddRoundKey 46 Phép biến đổi MixColumns S00 S01 S02 S03 S10 S11 S12 S13 S20 S21i S22 S23 S'20 S30 S33 S'30 S'31 S'32 S'33 S S31 S32 S'00 S'01 S'02 S'03 a(x) S'10 S'11 S'12 S'13 S’ S' i 21 S'22 S'23 MixColumns 47 Phép biến đổi MixColumns Mỗi cột trạng thái hành biểu diễn dạng đa thức s(x) có hệ số GF(28) Thực phép nhân s’(x) = a(x) s(x) với a(x) = {03}x3+{01}x2+{01}x+{02} s0' ,c 02 ' s1,c = 01 s2' ,c 01 ' s3,c 03 03 01 01 s0,c s 02 03 01 1,c 01 02 03 s2,c 01 01 02 s3,c 48 Phép biến đổi ngược InvMixColumns Mỗi cột trạng thái hành biểu diễn dạng đa thức s(x) có hệ số GF(28) Thực phép nhân s’(x) = a-1(x) s(x) với a-1(x) = {0b}x3+{0d}x2+{09}x+{0e} s0' ,c 0e ' s1,c = 09 s2' ,c 0d ' s3,c 0b 0b 0d 09 s0,c s 0e 0b 0d 1,c 09 0e 0b s2,c 0d 09 0e s3,c 49 Phát sinh mã khóa chu kỳ Bảng mã khóa mở rộng mảng chiều chứa từ (có độ dài byte) Hàm phát sinh bảng mã khóa mở rộng phụ thuộc vào giá trị Nk, tức phụ thuộc vào độ dài mã khóa 50 Phát sinh mã khóa chu kỳ w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 w16 w17 M ãkhóa chu kỳ0 M ãkhóa chu kỳ1 M ãkhóa chu kỳ2 Bảng mã khóa mở rộng cách xác định mã khóa chu kỳ (Nb=6, Nk=4) 51 Phát sinh mã khóa chu kỳ KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk) begin i=0 while (i < Nk) w[i] = word[key[4*i], key[4*i+1], key[4*i+2],key[4*i+3]] i=i+1 end while i = Nk while (i < Nb * (Nr + 1)) word temp = w[i - 1] if (i mod Nk = 0) then temp = SubWord(RotWord(temp)) xor Rcon[i / Nk] else if (Nk = 8) and (i mod Nk = 4) then temp = SubWord(temp) end if w[i] = w[i - Nk] xor temp i=i+1 end while end 52 Phát sinh mã khóa chu kỳ Rcon[i] = (RC[i], {00}, {00}, {00}) với RC[i]GF(28) RC[1]=1 ({01}) RC[i] =x ({02})•(RC[i-1]) = x(i–1) 53 y Sbox x a b c d e f 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d 70 3e B5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f 8c a1 89 0d Bf e6 42 68 41 99 2d 0f b0 54 bb 16 54 y Sbox-1 x a b c d e f 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb 7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25 72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92 6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84 90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06 d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b 3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e a 47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b b fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4 c 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f d 60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef e a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61 f 17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d 55 ...Nội dung Data Encryption Standard Advanced Encryption Standard Mã hóa tích (Product Cipher) Mã hóa sử dụng phép thay (substitution)... Triple DES, Twofish, XTEA Kiến trúc SPN Ví dụ: Rijndael – AES, Anubis… Data Encryption Standard Data Encryption Standard Mã hóa theo khối (block cipher) Ý tưởng: mã hóa tích (product... bit x 23 Advanced Encryption Standard 24 Phương pháp mã hóa Rijndael Phương pháp Rijndael Vincent Rijmen Joan Daeman đề nghị Viện Tiêu chuẩn Công nghệ Hoa Kỳ (National Institute of Standards