giải pháp để bảo vệ sự an toàn và bí mật của các thông tin nhạy cảm, quan trong ngày càng trở nên cấp thiết

18 201 0
giải pháp để bảo vệ sự an toàn và bí mật của các thông tin nhạy cảm, quan trong ngày càng trở nên cấp thiết

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES LỜI NĨI ĐẦU Từ trước cơng ngun người phải quan tâm tới việc làm thế nào để đảm bảo an toàn bí mật cho tài liệu, văn bản quan trọng, đặc biệt là lĩnh vực quân sự, ngoại giao Ngày với sự xuất hiện của máy tính, tài liệu văn bản giấy tờ và thông tin quan trọng số hóa và xử lý máy tính, truyền môi trường mạng- môi trường mà mặc định là khơng an toàn Do u cầu việc có chế, giải pháp để bảo vệ sự an toàn và bí mật của thông tin nhạy cảm, quan ngày càng trở nên cấp thiết An toàn bảo mật thông tin là môn học đảm bảo cho mục đích này Khó có thể thấy ứng dụng Tin học có ích nào lại khơng sử dụng thuật tốn mã hóa thơng tin Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Phần 1: Tổng quan toán Trong mật mã học, AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là thuật tốn mã hóa khới chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa Giớng tiêu chuẩn tiền nhiệm DES, AES kỳ vọng áp dụng phạm vi thế giới và nghiên cứu rất kỹ lưỡng AES chấp thuận làm tiêu chuẩn liên bang Viện công nghệ và tiêu chuẩn quốc gia Hoa Kỳ (NIST) sau q trình tiêu chuẩn hóa kéo dài năm Thuật toán thiết kế hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen Thuật toán đặt tên là "Rijndael" tham gia thi thiết kế AES Rijndael phát âm là "Rhine dahl" theo phiên âm q́c tế Q trình phát triển Thuật toán dựa bản thiết kế Square có trước của Daemen và Rijmen; cịn Square lại thiết kế dựa Shark Khác với với DES sử dụng mạng Feistel, Rijndael sử dụng mạng thay thế-hốn vị AES có thể dễ dàng thực hiện với tốc độ cao phần mềmhoặc phần cứng và không đòi hỏi nhiều nhớ Do AES là tiêu chuẩn mã hóa mới, triển khai sử dụng đại trà Mơ tả bài tốn Mặc dù tên AES và Rijndael thường gọi thay thế cho thực tế thuật tốn không hoàn toàn giống AES làm việc với khối liệu (đầu vào và đầu ra) 128 bít và khóa có độ dài 128, 192 hoặc 256 bít Rijndael có thể làm việc với liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm khoảng từ 128 tới 256 bít Các khóa sử dụng chu trình tạo q trình tạo khóa Rijndael Mỗi khóa là cột gồm byte Hầu hết phép toán thuật toán AES thực hiện trường hữu hạn của byte Mỗi khối liệu 128 bit đầu vào chia thành 16 byte (mỗi byte bit),có thể xếp thành cột, cột phần tử hay là ma trận 4x4 của byte,nó gọi là ma trận trạng thái, hay vắn tắt là trạng thái (tiếng Anh: state, trang thái Rijndael có thể có thêm cột) Trong q trình thực hiện thuật tốn toán tử tác động để biến đổi ma trận trạng thái này Trong phạm vi bài tập, chúng em tìm hiểu thuật tốn AES với liệu đầu vào là 128 bit và sử dụng khóa 128bit Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Phần 2: Mã Hóa AES Nguyên tắc Mã hóa AES sử dụng liệu đầu vào và key là hệ Hex, thế bản rõ và key phải chuyển đổi từ hệ ASCII sang hệ Hex Tùy thuộc vào độ dài của key sử dụng 128bit, 196bit và 256 bit mà AES có cách mã hóa với số lần lặp khác Cụ thể AES 128 AES 196 AES 256 Độ dài khóa(Nk) Kích thước khối (Nb) 4 Số lần lặp 10 12 14 Các bước thực hiện Khởi động vòng lặp AddRoundKey — Mỗi cột của trạng thái đầu tiên lần lượt kết hợp với khóa theo thứ tự từ đầu dãy khóa Vịng lặp SubBytes — là phép thế (phi tuyến) byte trạng thái thế byte khác theo bảng tra (Rijndael S-box) ShiftRows — dịch chuyển, hàng trạng thái dịch vịng theo sớ bước khác MixColumns — trình trộn làm việc theo cột khối theo phép biến đổi tuyến tính AddRoundKey Vịng lặp ći SubBytes ShiftRows AddRoundKey Mã hóa key Sau vòng lặp, đến bước AddRoundKey, kết quả (+) khóa round key Vậy Round key tính thế nào Phần này tìm hiểu cách mã hóa Round key Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Ta có key ban đầu: 2b 7e 15 16 28 Ae D2 A6 Ab F7 15 88 09 Cf 4f 3c Để thực hiện việc tính Round key(1) Đầu tiên ta lấy cột cuối của key ban đầu Đảo bit đầu tiên xuống 09 Cf 4f 3c Thành Cf 4f 3c 09 Sau ta so sánh với bảng S-box Cụ thể ta có: Cf=8a 4f=84 3c=eb 09=01 Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES 8a 84 Eb 01 Tiếp theo ta lấy cột từng cột của Key cũ(+)kết quả (+) Rcon Với Rcon= 01 00 00 00 2b 8a 01 A0 7e 84 00 Fa (+) (+) = 15 Eb 00 Fe 16 01 00 17 Sau tính ta có cột thứ của Round key(1) A0 Fa Fe 17 Tiếp tục ta lấy cột thứ của key (+) cột thứ nhất của RoundKey(1) không cộng với Rcon, ta có cơt thứ của RoundKey(1) A0 88 Fa 54 Fe 2c 17 bl Tiếp tục, ta lại lấy cột thứ của key (+) cột thứ của RoundKey (1) ta cột thứ của Roundkey(1) A0 88 23 Fa 54 A3 Fe 2c 39 17 bl 39 Tiếp tục, ta lại lấy cột thứ 4của key (+) cột thứ của RoundKey (1) ta cột thứ của Roundkey(1) A0 88 23 2a Fa 54 A3 6c Fe 2c 39 76 17 bl 39 05 Roundkey(1) Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Ći ta RoundKey(1) Tương tự ta tính RoundKey tiếp Trong bài này ta sử dụng khóa 128b nên có 10 lần lặp thế ta có 10 Roundkey F2 7a 59 C2 96 35 95 B9 80 F2 43 7a Roundkey(2) 3d 47 1e 80 16 23 47 Fe 7e 7d 3e 44 Roundkey(3) Ef A8 B6 44 52 71 A5 5b 25 41 7f 3b Roundkey(4) D4 8c Ca D1 83 F2 C6 9d B8 F8 87 Bc Roundkey(5) 6d 11 Db 88 0b F9 A3 3e 86 7a Fd 41 Roundkey(6) 4e 5f 84 54 5f A6 F7 C9 4f 0e F3 B2 Roundkey(7) Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: 73 59 F6 7f 6d 7a 88 3b Db 0b Ad 00 11 F9 15 bc Ca 00 93 fd 4e A6 Dc 4f Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Ea B5 31 D2 8d 2b 73 Ba F5 21 D2 60 Roundkey(8) 7f 8d 29 2f Ac 19 28 77 Fa D1 66 dc 29 F3 21 41 Roundkey(9) 57 5c 00 6e D0 C9 E1 14 Ee 3f F9 25 0c A8 89 C8 Roundkey(10) B6 63 0c A6 Khởi động vòng lặp Vd: cho Plantext và Key sau chuyển đổi sang ASCII Chuyển đổi từ bản rõ (hệ ASCII sang hệ Hex) (Plan text) 32 88 31 E0 43 5a 31 37 F6 30 98 07 A8 8d A2 34 Chuyển đổi key(hệ ASCII sang hệ Hex) (key) 2b 28 7e Ae 15 D2 16 A6 Ab F7 15 88 09 Cf 4f 3c Bước 1: Add Round Key Ta thực hiện lấy Plan text (+) Key Vd: 32 (+) 2b Biến đổi 32 hệ hex= 0011 0010 Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Biến đổi 2b hệ hex= 0010 1011 0011 0010 (+) 0010 1011 (=) 0001 1001 Cách tính: ta lấy từng số cộng với Nếu số (đều là sớ hay sớ 1) kết quả là 0, cịn sớ khác kết quả là số Từ kết quả 0001 1001 ta biến đổi hệ 16 kết quả là 19 Từ ta có bảng 19 3d E3 Be A0 F4 E2 2b 9a C6 8d 2a E9 F8 48 08 Tiếp theo, bắt đầu vào vòng lặp Vòng lặp B1: SubBytes Từ bảng ta đem so sánh với bảng S-Box Với giá trị 19, ta tìm đến hàng (1x) cột (x9) ta giá trị “d4” Với giá trị 3d, ta tìm đến hang (3x) cột d (xd) ta giá trị “27” Tương tự với giá trị cịn lại ta có bảng D4 E0 Viện Đại học Mở Hà Nội B8 1e Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES 27 11 ae Bf 98 F1 B4 5d E5 41 52 30 B2.Shiftrows Từ bảng thu sau thực hiện SubBytes, ta thực hiện bước Bước thực hiện chuyển bit tại hàng sau theo thứ tự: Hàng thứ không chuyển Hàng thứ chuyển bit đầu tiên vị trí bit ći cùng, bit cịn lại đẩy lên 27 bf B4 41 bf B4 41 27 Hàng thứ chuyển bit đầu tiên vị trí của bit ći cùng,các bit cịn lại đẩy lên Sau lại thực hiện việc chuyển lần 11 98 5d 52 98 5d 52 11 5d 52 11 98 Tương tự vậy,hàng thứ thực hiện chuyển vị trí bit đầu tiên xuống bit cuối và lặp lại lần ae F1 E5 30 F1 E5 30 ae E5 30 ae F1 30 ae Sau thực hiện chuyển bit, ta có kết quả D4 E0 bf B4 5d 52 30 ae F1 E5 B8 41 11 F1 1e 27 98 E5 B3.Mix Column Sau thực hiện việc chuyển bit, ta có bảng kết quả D4 E0 B8 1e bf B4 41 27 Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES 5d 52 11 98 30 ae F1 E5 Trong bước Mix Column, ta thực hiện việc nhân cột của bảng kết quả với ma trận mặc định (như hình vẽ) Cụ thể sau: Cột thứ 1: D4 Bf 5d 30 Ta lấy cột nhân với hàng theo quy tắc (D4.02) xor (bf.03) xor (5d.01)xor(30.01)=X1 Tính (D4.02) Biến đổi D4 hệ Hex:D4=11010100 Với sớ nhân là “02”, ta có cách thực hiện sau Ta thêm số “0” vào cuối của dãy sau chuyển hệ Hex, thế dãy số của biến đổi Cụ thể trường hợp này, số “1” đầu tiên của dãy bị loại bỏ D4=10101000 Sau đó, lấy kết quả sau thêm bit nhân với dãy bit (00011011) 10101000 Xor 00011011 = 10110011 Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Sau tiếp tục tính (bf.03) Trong trường hợp số nhân là “03”, ta có: 03=02+01 Từ (bf.03)=(bf.02) xor (bf.01) Với (bf.02) ta thực hiện tương tự tính (D4.02) Bf=10111111 Dịch bit: bf=01111110 01111110 Xor 00011011 = 01100101 Với (bf.01)=bf=10111111 Từ ta có (bf.03)=(bf.02)xor(bf.01) 01100101 Xor 10111111 = 11011010 Tương tự ta có (5d.01)=01011101 (30.01)=00110000 Từ đó: X1= (D4.02) xor (bf.03) xor (5d.01)xor(30.01) 1011 0011 Xor 1101 1010 Xor 0101 1101 Xor 0011 0000 X1= 0000 0100=04 Tiếp tục với đến hết ta có : Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES D4 Bf 5d 30 = 04 66 81 E5 Sau thực hiện xong bước MixColumn, ta có kết quả D4 bf 5d 30 E0 B4 52 ae B8 41 11 F1 1e 27 98 E5 = 04 66 81 E5 E0 Cb 19 9a B4 AddRound Key Từ kết quả của bảng MixColumn, ta (+) RoundKey tương ứng(Trong vòng +() RoundKey(1) và tương tự với vòng lặp lại) 04 E0 48 28 A4 68 A0 88 23 2a 66 Cb F8 06 Fa 54 A3 6c 9c 9f = 81 19 D3 26 7f 35 Fe 2c 39 76 17 bl 39 05 E5 9a 7a 4c F2 2b 48 F8 D3 7a 28 06 26 4c lặp thứ nhất 6b 5b Ea 43 02 6a 50 49 Roundkey(1) Sau kết thúc AddRoundKey, vòng lặp thứ bắt đầu Input là kết quả của vòng Addroundkey trước: Vịng Lặp Ći Như trình bày, với khóa k=128b, mã hóa AES thực hiện vịng lặp bao gồm bước Đến vịng lặp thứ 10(vịng ći), AES thực hiện bước SubBytes ShiftRows AddRoundKey Trong vịng lặp ći bỏ bước MixColumn Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Kết thúc vòng 10,ta thu kết quả: 39 02 25 dc 84 09 1d Fd Viện Đại học Mở Hà Nội dc 11 85 97 19 6a 0b 32 Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES Phần 3: Giải mã Thuật tốn giải mã trình bày sơ đồ ban đầu ta thấy thứ tự hàm biến đổi áp dụng khác so với thuật toán mã hóa dạng của danh sách khóa thuật tốn giữ ngun Tuy vậy, sơ đặc điểm của AES cho phép có thuật tốn giải mã tương đương có thứ tự áp dụng hàm biến đổi giớng với thuật tốn mã hóa ( tất nhiên là biến đổi cách làm ngược cảu chúng) Điều này làm cách thay đổi sách khóa Add Round Key: Ví dụ: Bản khóa: 39 25 84 1d 02 dc 09 Fd dc 11 85 97 19 6a 0b 32 D0 14 F9 A8 C9 Ee 25 89 E1 3f 0c C8 B6 63 0c A6 E9 31 7d B5 Cb 32 2c 72 3d 2e 89 5f Af 09 07 94 Round key 10: Kết quả: Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES InvShiftRows () Đây là q trình ngược lại so với trình ShiftRows() Ví dụ: Ban đầu: E9 31 7d B5 Cb 32 2c 72 3d 2e 89 5f Af 09 07 94 E9 31 7d 72 Cb 32 2c 5f 3d 2e 89 95 Af 09 07 B5 E9 31 89 72 Cb 32 07 5f 3d 2e 7d 95 Af 09 2c B5 E9 09 89 72 Cb 31 07 5f 3d 32 7d 95 Af 2e 2c B5 Trạng thái 1(xoay byte) Trạng thái 2(xoay byte): Kết quả(xoay byte): Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES InvSubBytes () Quá trình Process InvSubBytes tương tự với SubBytes, bảng sử dụng khác Bảng sử dụng là bảng S-Box nghịch đảo: Ví dụ: Ban đầu: E9 09 89 72 Cb 31 07 5f 3d 32 7d 95 Af 2e 2c B5 Eb 40 F2 1e 59 2e 38 84 8b A1 13 E7 1b C3 42 D2 Kết quả sau so bảng: Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES InvAddRows () Ban đầu Eb 40 F2 1e 59 2e 38 84 8b A1 13 E7 1b C3 42 D2 47 37 94 Ed 40 D4 E4 A5 A3 70 3a A6 4c 9f 42 bc Kết quả: Viện Đại học Mở Hà Nội Giáo viên hướng dẫn: Nhóm – Tin0310B1 Đề 2- Thuật tốn mã hóa AES InverseMixCollums () Hàm này là hàm ngược của hàm MixColum Hàm này làm việc cột của mảng trạng thái, coi cột là mô tô đa thức hạng tử Các cột xem là đa thức GF(28) và nhân theo modulo x4+1 với đa thức cố định là a-1(x): a-1(x)= {0b}x-3 + {0d}x-3+{09}x + {0e} Và có thể mô ta phép nhân ma trận sau: S’(x)= a-1(x) xor s(x) Trong 0

Ngày đăng: 29/08/2017, 10:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan