Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
3,68 MB
Nội dung
Mục Lục I Giới thiệu giải thuật AES Giới thiệu chung: - AES viết tắt Advanced Encryption Standard) chuẩn mã hóa liệu NIST công nhận năm 2001 - AES xây dựng dựa Rijndael cipher phát triển nhà mật mã học người Bỉ Joan Deamen Vincent Rijmen - Kích thước khối liệu AES 128 bít - Kích thước khóa 128, 192 256bit (là bội 32 lớn 256 bít) - AES thiết kế dựa mạng hốn vị- thay thế: đạt tốc độ cao phần mềm phần cứng - AES vận hành matran 4x4, gọi state (trạng thái) - Kích thước khóa định vào số vòng lặp chuyển đổi cần thực để chuyển rõ thành mã: + 10 vòng lặp ứng với 128 bit + 12 vịng lặp ứng với 192 bít + 14 vịng lặp ứng với 256 bít Giải thích: • Đối với 128 bít kích thước khóa mở rộng 44 từ Mỗi khóa gồm từ 44 từ chia thành 11 cụm khóa Mỗi vịng giải mã/ mã hóa sử dụng khóa cộng với khóa phần bắt đầu thuật tốn AES Như số vịng = số khóa – 1(mượn) => 128 bít ứng với 11-1 = 10 vịng • Đối với 192 bit kích thước khóa mở rộng 52 từ Mỗi khóa gồm từ, 52 từ chia thành 13 cụm khóa Mỗi vịng mã hóa/ giải mã sử dụng khóa cộng với khóa phần bắt đầu thuật tóa AES Như số vịng = số khóa – (mượn) => 192 bít tương ứng với 13 – = 12 vịng • Đối với 256 bit kích thước khóa mở rộng 60 từ Mỗi khóa gồm từ, 60 từ chia thành 13 cụm khóa Mỗi vịng mã hóa/ giải mã sử dụng khóa cộng với khóa phần bắt đầu thuật tóa AES Như số vịng = số khóa – (mượn) => 192 bít tương ứng với 13 – = 12 vịng - Mã hóa AES mã hóa theo mơ hình 128 bit khơng sử dụng ngun tắc hệ mã hóa Feistel mà sử dụng mơ hình mạng SPN AES dùng phép biến đổi để mã hóa khối: Add row key, Substitute bytes, Shift rows, Mix columns Mỗi phép biến đổi nhận tham số đầu vào có kích thước 128 bít cho kết đầu có kích thước 128 bít AES thực phép biến đổi nhiều lần tạo thành 10 vịng biến đổi Mơ tả khái qt giải thuật AES: - Mở rộng khóa: Các khóa phụ dùng vòng lặp sinh từ khóa AES sử dụng thủ tục sinh khóa Rijndael - Vòng khởi tạo: + AddRoundKey: byte state kết hợp với khóa phụ sử dụng XOR - Vịng lặp chính: + SubBytes: bước thay phi tuyến tính, byte state thay byte khác sử dụng bảng tham chiếu + ShiftRows: Bước đổi chỗ, dịng state dịch số bước theo chu kỳ + MixColumns: trộn cột state, kết hợp bytes cột + AddRoundKey - Vòng cuối gồm bước giống trừ bước MixColumns Sơ đồ bước xử lý AES Qua sơ đồ ta thấy trình mã hóa độ dài khối đầu vào 128 bít thực qua vịng lặp, vịng lặp thực qua bước vòng lặp cuối thực giống hệt khơng có giai đoạn MixColumns II Thuật tốn sinh khóa Sơ đồ bước xử lý AES - Nhìn vào sơ đồ ta thấy việc sinh khóa phụ bước đầu giai đoạn mã hóa, Q trình sinh khóa phụ thực vòng khởi tạo AddRoundKey Bước thực chia bước: + Rotword: quay trái bít + SubBytes + Rcon: tính tốn giá trị Rcon(i) + Shiftrow 128 bít ban đầu mở rộng thành 176 byte, tổ chức thành 44 từ, từ bytes, vừa đủ để tạo thành 10 khóa phụ cho 10 vịng mã hóa thuật tốn cộng với khóa phụ cho thao tác cộng khóa ban đầu Như thuật tốn sinh khóa phụ AES thực chất thuật tốn mở rộng bốn từ khóa (128 bit) ban đầu 44 từ Thao tác cộng khóa thực qua bước sau: Giả sử ta có matran sau thực sinh khóa: 2b 28 Ab 09 7e Ae F7 Cf 15 D2 15 4f 16 A6 88 3c Rotword: - Bốn từ khóa gốc đưa trực tiếp vào phép cộng khóa ban đầu tức w[0,3] = key Lấy cột cuối matran thực rotWord quay trái bit: 09 Cf 4f 3c SubBytes - Thao tác thay byte, thao tác có chức thay byte mảng trạng thái thành byte khác sử dụng matran kích thước 16 x16 (S-box) Nguyên tắc thay byte hiểu: ứng với byte trạng thái hành, bit bên trái dùng để chọn 16 dịng, bít bên phải dùng để chọn 16 cột Giá trị ô tương ứng với dòng cột chọn thay cho byte hành - Giải thích thiết lập nên bảng S-box: + B1: Điền số từ 0-225 vào bảng matran 16x16 theo hàng Với hệ Hex, hàng gồm số {00}, {01}, …{0F} Hàng gồm số: {10}, {11},…, {1F} Điều có nghĩa hàng x cột y có giá trị {xy} +B2: thay byte bảng giá trị nghịch đảo trường GF(28) Quy ước nghịch đảo {00} {00} + B3: Đối với byte bảng, ký hiệu bít b7b6b5b4b3b2b1b0 Thay bít bi giá trị b’i tính sau: Với ci bít thứ i số {63}, tức tính toán tương đương với phép nhân ma trận sau GF(28) (B’ = XB ⊕ C): Việc + Trong phép cộng thực phép XOR Hình trình bày nội dung bảng S-box sau tính tốn Ví dụ: xét giá trị {95}, bước 1, giá trị dòng cột {95}, sau bước tính nghịch đảo giá trị {8A} có dạng nhị phân 10001010 Thực phép nhân ma trận: Kết dạng thập lục phân {2A} - Ở bước thực cách đem so sánh với bảng S-box S-box tạo cách xác định nghịch đảo cho số lượng định GF (2 ) = GF (2) [ x ] / ( x + x + x + x + 1), trường hữu hạn Rijndael Zero, mà khơng có nghịch đảo, ánh xạ tới khơng Sau nghịch đảo biến đổi cách sử dụng sau biến đổi afin: biến đổi afin tổng hợp nhiều phép quay byte vector, nơi Ngoài hoạt động XOR Cf 4f 3c 09 Rcon Rcon mảng số Mảng gồm 10 từ ứng với 10 vòng AES Bốn byte phần tử Rcon[j] (RC[j],0,0,0) với RC[j] mảng 10 byte thực cách tính theo cơng thức Rcon(i) = xi-1 mod x8 + x4 + x3 + x + Cứ thực phép chia lấy phần dư ta Rcon vòng Với i số thứ tự vòng AES Ví dụ với i = => phần dư thực phép chia Do Rcon[1] = Ví dụ i = 10 ta thực phép chia lấy dư x cho x8 + x4 + x3 + x + ta có: Dư: X9 X9+x5+x4+x2+x x5+x4+x2+x x8 + x4 + x3 + x + x Do phần dư x5+x3+x+1 Phép chia thực trường GF(2 8) phần dư quy đổi hệ Hexa 110110 = 36 Tương tự với i = 2,3,…, ta bảng giá trị sau: j RC[j] 1 2 4 8 B 10 36 Kết thúc: - Sau có cột mã hóa sử dụng phép tốn XOR với số vòng (Rcon), số khác biệt với vòng lặp - Sử dụng phép toán xor với cột input trước thực tính tốn, ta chuyển dạng ASCII chuyển qua hệ Hex để thực tính tóa XOR 8a 01 84 00 eb XOR 00 01 00 XOR = Thực phép tốn XOR có nghĩa hai giá trị cho kết Còn ngược lại Các cột lại sử dụng phép toán XOR với cột matran có nghĩa cột matran ban đầu XOR với cột vừa tạo trên: A0 fa fe XOR = 17 Tương tự ta tìm cột có giá trị 2b 28 Ab 09 A0 88 23 2a F2 7a 23 73 7e Ae F7 Cf fa 54 A3 6c C2 96 A3 59 15 D2 15 4f fe 2c 39 76 95 B9 39 F6 16 A6 88 3c 17 B1 39 05 F2 43 39 7f … … … … … … … … D0 C9 E1 B6 14 ee 3f 63 F9 25 0c 0c A8 89 C8 A6 Cipher key Round key Round key Round key 10 Tương tự matran thứ được thực qua bước matran khác với Rcon Rcon[2] III Mã hóa Giới thiệu chung - Nhìn vào sơ đồ ta cần có input state Cipher Key - Giả sử liệu đầu vào 2C:¿êZ0r11ŸóĨ7(BEL)4 Key : +~NAKSNY(ôấêẵ,NAKờHTÔO< State c sinh t ni dung ta cần mã hóa Từ nội dung ta chuyển đổi nội dung thành bit => ta có mảng bit Từ mảng bit 1/2 byte ta chuyển đổi chúng thành kí hiệu hệ hexa => ta chuyển đổi chúng thành ma trận state Ví dụ mảng bit: 0011001000110011 Ta tách chúng byte khác nhau: - + byte thứ nhất: 00110010 => 32(hexa) + byte thứ 2: 00110011=>33(hexa) - Sau ta xếp vào ma trận state có dạng sau: Tương tự cách với Cipher Key ko phải nội dung mà key dc người dùng nhập vào: Ma trận đưa thêm vào để thực mã hóa Khi có input ta bắt đầu mã hóa: Nhìn hình vẽ ta có phép biến đổi SubBytes - - Các byte thông qua bảng tra S-box Đây q trình phi tuyến thuật tốn Hộp S-box tạo từ phép biến đổi khả nghịch trường hữu hạn GF (28) có tính chất phi tuyến Để chống lại công dựa đặc tính đại số, hộp S-box tạo nên cách kết hợp phép nghịch đảo với phép biến đổi affine khả nghịch Hộp S-box chọn để tránh điểm bất động (fixed point) Giải thích ví dụ: + Lấy bảng state lấy vị trí ma trận ví dụ a11 => so sánh với S box: + Lần lượt thay tất giá trị bảng S - Box => ta dc giá trị state tương ứng - Nguyên tắc thay byte hiểu: ứng với byte trạng thái hành, bit bên trái dùng để chọn 16 dịng, bít bên phải dùng để chọn 16 cột Giá trị tương ứng với dịng cột chọn thay cho byte hành ShiftRows - - Phép biến đổi dùng phép mã hóa áp dụng lên trạng thái cách chuyển dịch vòng ba hàng cuối trạng thái theo số lượng byte offset khác Cách thực hiện: Các hàng dịch vòng số bước định Đối với AES, hàng đầu giữ nguyên Mỗi byte hàng thứ dịch vịng trái vị trí Tương tự, hàng thứ dịch vòng vị trí Do vậy, cột khối đầu bước bao gồm byte đủ cột khối đầu vào Đối với Rijndael với độ dài khối khác số vị trí dịch chuyển khác Giải thích ví dụ: + Hàng dịch byte 10 + Hàng dịch byte + Hàng dịch byte, ta matran: MixColumns - Dùng để: Phép biến đổi phép mã hóa thực cách lấy tất cột trạng thái trộn với liệu chúng (một cách độc lập nhau) để tạo cột - Cách thực hiện: - Bốn byte cột kết hợp lại theo phép biến đổi tuyến tính khả nghịch Mỗi khối byte đầu vào cho khối byte đầu với tính chất byte đầu vào ảnh hưởng tới byte đầu Cùng với bước ShiftRows, MixColumns tạo tính chất khuếch tán cho thuật toán Mỗi cột xem đa thức trường hữu hạn nhân với đa thức {\displaystyle c(x)=3x^{3}+x^{2}+x+2} {\displaystyle c(x)=3x^{3}+x^{2}+x+2} (modulo {\displaystyle x^{4}+1} {\displaystyle x^{4}+1}) Vì thế, bước xem phép nhân ma trận trường hữu hạn - Giải thích ví dụ: 11 + Việc nhân matran thực cách + Ta lấy cột nhân với hàng theo quy tắc sau: (D4 * 02) XOR (BF * 03) XOR (5D * 01) XOR (30 * 01) + Biến đổi nhị phân D4 = 11010100 + Phép nhân trường GF(2^8) có hai trường hợp trường hợp b7= thực bình thường đa thức với đa thức, trường hợp b7 = thực mức độ byte phép dịch trái (thêm số cuối dãy)và sau thực phép tốn XOR Quay lại ví dụ việc D4 có b7 = ta thực phép XOR với dãy số 10101000 00011011 (môi trường GF(2^8)) 10110011 + Tiếp theo thực phép tính (BF*03), BF= 10111111 Tách 03 = 02 + 01 Do (BF*03) = (BF*02) XOR (BF*01) Với (BF*02) ta tính tương tự bước 01111110 XOR 00011011 (mơi trường GF(2^8)) XOR 01100101 Với (BF*01) = BF = 10111111 Do kết phép tính (D4 * 02) XOR (BF * 03) XOR (5D * 01) XOR (30 * 01) thực phép XOR biểu thức sau: 10110011 Xor 01100101 Xor 10111111 Xor Xor 01011101 00110000 00000100 = 04 (Hex) - Làm tương tự với việc nhân cột khác ta matran cuối có giá trị sau: 12 AddRoundKey - Phép biến đổi phép mã hóa phép giải mã Trong đó, khóa vịng (các giá trị sinh từ khóa mã quy trình mở rộng khóa) cộng thêm vào trạng thái phép toán XOR (phép tốn loại trừ) Độ dài khóa vòng độ dài trạng thái - Cách thực hiện: Khóa kết hợp với khối Khóa chu trình tạo từ khóa với q trình tạo khóa Rijndael; khóa có độ dài giống khối Q trình kết hợp thực cách XOR bít khóa với khối liệu - Giải thích ví dụ: Thực phép XOR với key sinh phần sinh khóa phụ Đưa số hệ nhị phân thực phép XOR , ta kết Ví dụ 04 = 00000100 XOR 10100100 = a4 A0 = 10100000 Kết luận: Những phép biến đổi sử dụng vòng Làm tương tự vòng lại Riêng vòng lặp cuối ko dùng MixColumns Và kết cuối mã hóa đưa ra: 13 IV Giải mã Giới thiệu chung 14 - Thực quy trình giải mã qua giai đoạn: + Điều cần thực thao tác AddRoundKey trước thực chu kì giải mã + Trong chu kì bao gồm bước biến đổi liên tiếp: AddRoundKey, InvShiftRows, InvSubBtes, AddRoundKey, Inverse mix cols + Thực chu kì giải mã cuối nhiên chu kì bước biến đổi “InvMixColumns” bỏ qua + Việc thực giải mã gồm 10 vịng liệu đầu vào 128 bít + Q trình giải mã ngược lại mã hóa 2.AddRoundKey - Bản khóa : 39 25 84 1d 02 dc dc 11 09 85 15 Fd 97 19 6a 0b 32 - Round key 10: D0 14 F9 A8 - - C9 Ee 25 89 E1 3f 0c C8 B6 63 0c A6 Kết quả: đưa cách chuyển sang hệ nhị phân XOR sau lại chuyển hệ Hex 3916 = 001110012 XOR => 11101001 = E9 D016 = 110100002 Làm tương tự ta matran kết quả: E9 31 7d B5 Cb 32 2c 72 3d 2e 89 5f Af 09 07 94 InvShiftRows Tương tự biến đổi ShiftRows thay dịch trái biến đổi dịch phải Ban đầu: E9 31 7d B5 Dòng thứ nguyên, dòng thứ xoay phải bit: E9 09 89 72 Cb 3d Af 32 2c 09 2c 89 07 72 5f 94 dòng thứ xoay phải byte, dòng thứ xoay phải byte, Cb 31 07 5f 3d 32 7d 94 Af 2c 2c B5 4.InvSubBtes - Quá trình Process InvSubBytes tương tự với SubBytes, bảng sử dụng khác Bảng sử dụng bảng S-Box nghịch đảo: 16 - Sau đối chiếu so sánh bảng ta matran là: EB 40 F2 1C 59 2E 38 84 8B A1 13 E7 1B C3 42 D2 59 2E 38 84 8B A1 13 E7 A3 70 3A A6 4C 9F 42 BC AddRoundKey Bước thực phép XOR với key 9: EB 40 F2 1C Kết quả: 47 37 94 ED 40 D4 E4 A5 6.Inverse mix cols - Mỗi cột ma trận state nhân với đa thức modulo cho đa thức 17 1B C3 42 D2 Hay viết dạng ma trận: Nhân cột với matran: Việc nhân giống hệt mã hóa ta kết nhân phép tính 87 F2 4d 97 6e 4c 90 ec 46 E7 4a C3 A6 8c D8 95 Làm tương tự với vịng lặp theo sơ đồ mã hóa giải mã, kết cuối sau vòng lặp thứ 10 • • • • • Các điểm mạnh điểm yếu Ưu điểm: Thuật toán AES thực việc xử lý nhanh Mã chương trình ngắn gọn, thao tác xử lý sử dụng nhớ Tất bước xử lý việc mã hóa giải mã thiết kế thích hợp với chế xử lý song song Yêu cầu đơn giản việc thiết kế tính linh hoạt xử lý đặt đáp ứng Độ lớn khối liệu mã khóa chínhcó thể tùy biến linh hoạt từ 128 đến 256-bit với điều kiện chia hết cho 32 Số lượng chu kỳ thay đổi tùy thuộc vào yêu cầu riêng đặt cho ứng dụng hệ thống cụ thể - Nhược điểm: • • Mã chương trình thời gian xử lý việc giải mã tương đối lớn việc mã hóa Khơng thể tận dụng lại tồn đoạn chương trình mã hóa bảng tra cứu cho việc giải mã Khi cài đặt phần cứng, việc giải mã sử dụng lại phần mạch điện tử sử dụng việc mã hóa với trình tự sử dụng khác Mơ tả tốn học đơn giản • • 18 • AES khơng đủ an tồn dạng công Side channel attack Các dạng công vào AES cách phịng chống Tấn cơng bên dạng công Tấn công kênh bên không cơng trực tiếp vào thuật tốn mã hóa mà thay vào đó, cơng lên hệ thống thực thuật tốn có sơ hở làm lộ liệu Tháng năm 2005 Daniel.J.Bernstin ông bố công lên hệ thống mã hóa AES OpenSL Một máy chủ thiết kế để đưa tối đa thông tin thời gian thu công cần tới 200 triệu rõ lựa chọn Một số người cho công thực Internet với khoảng cách vài điểm mạng Tháng 10 năm 2005, Adi Shamir nhà nghiên cứu khác có nghiên cứu minh họa vài dạng khác Trong đó, cơng lấy khóa AES với 800 lần ghi 65 mili giây Tấn công yêu cầu kẻ công có khả chạy chương trình hệ thống thực mã hóa Có phương pháp cơng bên: Tấn cơng thời gian: Q trình triển khai thuật tốn mã hóa thường thực tính tốn khoảng thời gian khơng đổi, để tối ưu hóa hiệu suất Nếu hoạt động liên quan đến thơng số bí mật, từ biến thời gian rị rỉ số thơng tin cung cấp thơng tin q trình triển khai, phân tích thống kê cụ thể thu thơng số bí mật Về bản, cơng thời gian hình thức lấy thơng tin cá nhân người dùng cách đo thời gian người thực mã hóa Ngun tắc cơng đơn giản: phải khai thác thời điểm thực Tấn công dựa vào lỗi: Hầu hết thiết bị thực q trình mã hóa khác thường đáng tin cậy Lỗi phần cứng lỗi xảy trình triển khai modul mã hóa thực tế chứng minh ảnh hưởng nghiêm trọng đến bảo mật Những hành vi đầu bị lỗi trở thành kênh kề quan trọng, nguyên nhân làm tăng lỗ hổng bảo mật mã hóa Có hai loại cơng kênh kề dựa vào lỗi Loại thứ kênh sinh từ lỗi tính tốn q trình tính tốn mã hóa modul bị cơng Những lỗi ngẫu nhiên hay cố ý, gây Loại thứ hai công kênh kề dựa lỗi, cách cố ý gửi liệu đầu vào bị lỗi đến modul bị công Modul gửi thông báo lỗi đến người sử dụng, q trình tính tốn bị ngừng lại Tóm lại, công dựa vào lỗi thực qua hai bước: chèn lỗi (fault injection) khai thác lỗi Bước bao gồm chèn lỗi thời điểm thích hợp q trình xử lý Việc chèn lỗi phụ thuộc vào phần cứng thiết bị Lỗi phát sinh thẻ thơng minh tác động vào mơi trường đặt điều kiện bình thường Một số lỗi bất thường điện áp cao thấp bất thường, đồng hồ, nhiệt độ, xạ, ánh sáng Bước thứ hai bao gồm khai thác kết sai hành vi bất thường Việc khai thác lỗi phụ thuộc vào trình triển khai thiết kế phần mềm Trong trường hợp thuật tốn phụ thuộc vào đặc điểm kỹ thuật thuật tốn 19 Tùy thuộc vào loại phân tích áp dụng, việc chèn lỗi phải thực khoảng thời gian định Tấn cơng phân tích lượng: Ngồi thời gian hoạt động lỗi, lượng tiêu thụ thiết bị mật mã cung cấp nhiều thông tin hoạt động thông số hệ thống Tấn cơng phân tích lượng áp dụng vào triển khai phần cứng hệ thống mật mã Loại công thực hiệu chứng minh công thành công thẻ thông minh hệ thống chuyên dụng lưu trữ khóa bí mật Về bản, cơng phân tích lượng chia thành Tấn cơng phân tích lượng đơn giản (Simple Power Analysis SPA) Tấn cơng phân tích lượng vi sai (Differential Power Analysis DPA) Trong công SPA, dựa vào dấu vết lượng tiêu thụ để đoán thời gian thực thi liệu, giá trị đầu vào, đầu Tấn công DPA sử dụng phương pháp thống kê q trình xử lý Tấn cơng điện từ: Như thiết bị điện, thành phần máy tính thường tạo xạ điện từ, kẻ công quan sát xạ điện từ phát hiểu mối quan hệ q trình tính tốn liệu, từ suy thơng tin tính tốn liệu Tấn cơng phân tích điện từ (ElectroMagnetic Analysis EMA) phân thành loại chính: Phân tích điện từ đơn giản (Simple ElectroMagnetic Analysis SEMA) Phân tích điện từ vi sai (Differential ElectroMagnetic Analysis DEMA) Có phương pháp chống lại cơng phân tích điện từ (EM attack): giảm cường độ tín hiệu giảm thơng tin tín hiệu Kỹ thuật giảm cường độ tín hiệu bao gồm thiết kế lại mạch để giảm phát sinh ý muốn thiết lập vùng bảo mật để giảm 20 ... hóa với trình tự sử dụng khác Mơ tả tốn học đơn giản • • 18 • AES khơng đủ an tồn dạng cơng Side channel attack Các dạng cơng vào AES cách phịng chống Tấn công bên dạng công Tấn công kênh bên... kết hợp bytes cột + AddRoundKey - Vòng cuối gồm bước giống trừ bước MixColumns Sơ đồ bước xử lý AES Qua sơ đồ ta thấy q trình mã hóa độ dài khối đầu vào 128 bít thực qua vịng lặp, vịng lặp thực... vòng lặp cuối thực giống hệt khơng có giai đoạn MixColumns II Thuật tốn sinh khóa Sơ đồ bước xử lý AES - Nhìn vào sơ đồ ta thấy việc sinh khóa phụ bước đầu giai đoạn mã hóa, Quá trình sinh khóa phụ