Báo Cáo BTL môn An Toàn Bảo Mật( đề tài AES)
lượt xem 100
download
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à một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện công nghệ và tiêu chuẩn quốc gia Hoa Kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Báo Cáo BTL môn An Toàn Bảo Mật( đề tài AES)
- LỜI NÓI ĐẦU Từ trước công nguyên con người đã phaỉ quan tâm tới viêc̣ lam ̀ thế naò để đam̉ baỏ an toaǹ bí mâṭ cho cać taì liêu, ̣ văn ban̉ quan trong,̣ đăc̣ biêṭ là trong lĩnh vực quân sự, ngoaị giao . Ngày nay với sự xuât́ hiêṇ cuả maý tinh,́ cać taì liêụ văn ban̉ giâý tờ và cać thông tin quan trong ̣ đều được số hóa và xử lý trên maý tinh, ́ được truyền đi trong môi trường mạng- một môi trường mà măc̣ đinh ̣ là không an toan. ̀ Do đó yêu câù về viêc̣ có môṭ cơ chê,́ giaỉ phaṕ để bao ̉ vệ sự an toan ̀ và bí mâṭ cuả cać thông tin nhaỵ cam, ̉ quan trong ngày càng trở nên câṕ thiêt. ́ An toàn bảo mật thông tin là môn hoc̣ đam ̉ baỏ cho muc̣ đich ́ nay. ̀ Khó có thể thâý môṭ ứng dung ̣ Tin hoc̣ có ich ́ naò laị không sử dung ̣ cać thuâṭ toan ́ mã hóa thông tin. Trong thời gian học tập tại trường Đại học công nghiệp Hà Nội, được sự giúp đỡ tận tình của giảng viên Ths.Đỗ Thị Minh Nguyệt, chúng em đã có thêm những kiến thức về môn học cũng như ứng dụng của An toàn bảo mật thông tin trong thực tế. Trong phạm vi bài tập lớn, chúng em sẽ tìm hiểu về hệ mã hóa AES (Advanced Encryption Standard). Chúng em xin chân thành cảm ơn giảng viên Ths. Đỗ Thị Minh Nguyệt đã giúp đỡ chúng em hoàn thành bài tập này! Chúng em xin chân thành cảm ơn! Hà nội, tháng 1 năm 2013 Nhóm thực hiện
- Phần 1: Tổng quan về bài 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à một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện công nghệ và tiêu chuẩn quốc gia Hoa Kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen. Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES. Rijndael được phát âm là "Rhine dahl" theo phiên âm quốc tế. Quá trình phát triển Thuật toán được dựa trên bản thiết kế Square có trước đó của Daemen và Rijmen; còn Square lại được thiết kế dựa trên Shark. Khác với với DES sử dụng mạng Feistel, Rijndael sử dụng mạng thay thế-hoán vị. AES có thể dễ dàng thực hiện với tốc độ cao bằng phần mềmhoặc phần cứng và không đòi hỏi nhiều bộ nhớ. Do AES là một tiêu chuẩn mã hóa mới, nó đang được triển khai sử dụng đại trà. Mô tả bài toán Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau nhưng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với các khối dữ liệu (đầu vào và đầu ra) 128 bít và khóa có độ dài 128, 192 hoặc 256 bít trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trong khoảng từ 128 tới 256 bít. Các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa con Rijndael. Mỗi khóa con cũng là một cột gồm 4 byte. Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn của các byte. Mỗi khối dữ liệu 128 bit đầu vào được chia thành 16 byte (mỗi byte 8 bit),có thể xếp thành 4 cột, mỗi cột 4 phần tử hay là một ma trận 4x4 của các byte,nó được 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 trong Rijndael có thể có thêm cột) . Trong quá trình thực hiện thuật toán các 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 sẽ tìm hiểu về thuật toán AES với dữ liệu đầu vào là 128 bit và sử dụng khóa 128bit. 3. Phân công tìm hiểu Thuật toán AES là 1 trong những thuật toán tiên tiến và đang được sử dụng nhiều trên thế giới vì tính an toàn. Vì thế trong quá trình tìm hiểu nhóm em sẽ phân công công việc cho các thành viên như sau: Phạm Đăng Hảo: Tìm hiểu cách thức mã hóa AES Trần Văn Minh: Tìm hiểu cách thức giải mã AES
- Phần 2: Mã Hóa AES Nguyên tắc Mã hóa AES sử dụng dữ liệu đầu vào và key là hệ Hex, vì thế bản rõ và key phải được chuyển đổi từ hệ ASCII sang hệ Hex. Tùy thuộc vào độ dài của key khi sử dụng 128bit, 196bit và 256 bit mà AES có các cách mã hóa với số lần lặp khác nhau. Cụ thể Độ dài khóa(Nk) Kích thước khối (Nb) Số lần lặp AES 128 4 4 10 AES 196 6 4 12 AES 256 8 4 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 được kết hợp với một khóa con theo thứ tự từ đầu dãy khóa. Vòng lặp SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte trong trạng thái sẽ được thế bằng một byte khác theo bảng tra (Rijndael S-box) ShiftRows — dịch chuyển, các hàng trong trạng thái được dịch vòng theo số bước khác nhau. MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính. AddRoundKey Vòng lặp cuối SubBytes ShiftRows AddRoundKey Mã hóa key Sau mỗi vòng lặp, đến bước AddRoundKey, kết quả sẽ được (+) 1 khóa round key. Vậy Round key được tính như thế nào. Phần này chúng ta sẽ tìm hiểu về cách mã hóa Round key Ta có key ban đầu: 2b 28 Ab 09 7e Ae F7 Cf 15 D2 15 4f
- 16 A6 88 3c Để thực hiện việc tính Round key(1). Đầu tiên ta sẽ lấy cột cuối cùng của key ban đầu. Đảo bit đầu tiên xuống dưới 09 Cf 4f 3c Thành Cf 4f 3c 09 Sau đó ta đi so sánh với bảng S-box Cụ thể ta có: Cf=8a 4f=84 3c=eb 09=01 8a 84 Eb 01
- Tiếp theo ta lấy cột từng cột của Key cũ(+)kết quả trên (+) 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 khi tính ta có cột thứ 1 của Round key(1) A0 Fa Fe 17 Tiếp tục ta sẽ lấy cột thứ 2 của key (+) cột thứ nhất của RoundKey(1) nhưng không cộng với Rcon, ta có côt thứ 2 của RoundKey(1) A0 88 Fa 54 Fe 2c 17 bl Tiếp tục, ta lại lấy cột thứ 3 của key (+) cột thứ 2 của RoundKey (1) ta được cột thứ 3 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ứ 3 của RoundKey (1) ta được cột thứ 4 của Roundkey(1) A0 88 23 2a Fa 54 A3 6c Fe 2c 39 76 17 bl 39 05 Roundkey(1)
- Cuối cùng ta RoundKey(1). Tương tự ta sẽ tính các RoundKey tiếp. Trong bài này ta sử dụng khóa 128b nên sẽ có 10 lần lặp. vì thế ta sẽ có 10 Roundkey F2 7a 59 73 C2 96 35 59 95 B9 80 F6 F2 43 7a 7f Roundkey(2) 3d 47 1e 6d 80 16 23 7a 47 Fe 7e 88 7d 3e 44 3b Roundkey(3) Ef A8 B6 Db 44 52 71 0b A5 5b 25 Ad 41 7f 3b 00 Roundkey(4) D4 8c Ca 11 D1 83 F2 F9 C6 9d B8 15 F8 87 Bc bc Roundkey(5) 6d 11 Db Ca 88 0b F9 00 A3 3e 86 93 7a Fd 41 fd Roundkey(6) 4e 5f 84 4e 54 5f A6 A6 F7 C9 4f Dc 0e F3 B2 4f Roundkey(7)
- Ea B5 31 7f D2 8d 2b 8d 73 Ba F5 29 21 D2 60 2f Roundkey(8) Ac 19 28 57 77 Fa D1 5c 66 dc 29 00 F3 21 41 6e Roundkey(9) D0 C9 E1 B6 14 Ee 3f 63 F9 25 0c 0c A8 89 C8 A6 Roundkey(10) Khởi động vòng lặp Vd: cho Plantext và Key sau khi 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 Ab 09 7e Ae F7 Cf 15 D2 15 4f 16 A6 88 3c
- Bước 1: Add Round Key Ta thực hiện lấy Plan text (+) Key Vd: 32 (+) 2b Biến đổi 32 về hệ hex= 0011 0010 Biến đổi 2b về hệ hex= 0010 1011 0011 0010 (+) 0010 1011 ______________ (=) 0001 1001 Cách tính: ta lấy từng số cộng với nhau. Nếu 2 số bằng nhau (đều là số 0 hay số 1) thì kết quả sẽ là 0, còn 2 số khác nhau kết quả là số 1 Từ kết quả 0001 1001 ta biến đổi về hệ 16 thì kết quả là 19 Từ đó ta có bảng 19 A0 9a E9 3d F4 C6 F8 E3 E2 8d 48 Be 2b 2a 08 Tiếp theo, bắt đầu vào vòng lặp Vòng lặp B1: SubBytes Từ bảng trên ta đem so sánh với bảng S-Box Với giá trị 19, ta tìm đến hàng 1 (1x) cột 9 (x9) ta được giá trị “d4”
- Với giá trị 3d, ta tìm đến hang 3 (3x) cột d (xd) ta được giá trị “27” Tương tự với các giá trị còn lại ta có bảng D4 E0 B8 1e 27 Bf B4 41 11 98 5d 52 ae F1 E5 30 B2.Shiftrows Từ bảng thu được sau khi thực hiện SubBytes, ta thực hiện bước 2. Bước 2 sẽ thực hiện chuyển các bit tại các hàng về sau theo thứ tự: Hàng thứ 1 không chuyển Hàng thứ 2 chuyển bit đầu tiên về vị trí bit cuối cùng, các bit còn lại sẽ đẩy lên trên. 27 bf B4 41 bf B4 41 27 Hàng thứ 3 chuyển bit đầu tiên về vị trí của bit cuối cùng,các bit còn lại sẽ được đẩy lên. Sau đó lại thực hiện việc chuyển 1 lần nữa 11 98 5d 52 98 5d 52 11 5d 52 11 98 Tương tự như vậy,hàng thứ 4 sẽ thực hiện chuyển vị trí bit đầu tiên xuống bit cuối cùng và lặp lại 2 lần ae F1 E5 30 F1 E5 30 ae E5 30 ae F1 30 ae F1 E5 Sau khi thực hiện chuyển bit, ta có kết quả D4 E0 B8 1e bf B4 41 27 5d 52 11 98 30 ae F1 E5
- B3.Mix Column Sau khi thực hiện việc chuyển bit, ta có bảng kết quả D4 E0 B8 1e bf B4 41 27 5d 52 11 98 30 ae F1 E5 Trong bước Mix Column, ta sẽ thực hiện việc nhân các cột của bảng kết quả với ma trận mặc định (như hình vẽ). Cụ thể như sau: Cột thứ 1: D4 Bf 5d 30 Ta sẽ 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 về hệ Hex:D4=11010100 Với số nhân là “02”, ta có cách thực hiện như sau Ta sẽ thêm số “0” vào cuối cùng của dãy sau khi chuyển về hệ Hex, vì thế dãy số của chúng ta sẽ biến đổi. Cụ thể trong trường hợp này, số “1” đầu tiên của dãy sẽ bị loại bỏ D4=10101000 Sau đó, chúng ta sẽ lấy kết quả sau khi thêm bit nhân với dãy bit (00011011) 10101000
- Xor 00011011 = 10110011 Sau đó chúng ta 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ự như 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ó :
- D4 04 Bf 66 = 5d 81 30 E5 Sau khi thực hiện xong bước MixColumn, ta có kết quả D4 E0 B8 1e 04 E0 48 28 bf B4 41 27 66 Cb F8 06 = 5d 52 11 98 81 19 D3 26 30 ae F1 E5 E5 9a 7a 4c B4. AddRound Key Từ kết quả của bảng MixColumn, ta (+) RoundKey tương ứng(Trong vòng lặp thứ nhất sẽ +() RoundKey(1) và tương tự với các vòng lặp còn lại) A0 88 23 2a A4 68 6b 02 04 E0 48 28 Fa 54 A3 6c 9c 9f 5b 6a 66 Cb F8 06 Fe 2c 39 76 = 7f 35 Ea 50 81 19 D3 26 17 bl 39 05 F2 2b 43 49 E5 9a 7a 4c Roundkey(1) Sau khi kết thúc AddRoundKey, vòng lặp thứ 2 bắt đầu Input sẽ là kết quả của vòng Addroundkey trước: Vòng Lặp Cuối Như đã trình bày, với khóa k=128b, mã hóa AES sẽ thực hiện 9 vòng lặp bao gồm 4 bước. Đến vòng lặp thứ 10(vòng cuối), AES sẽ chỉ thực hiện 3 bước SubBytes ShiftRows AddRoundKey Trong vòng lặp cuối sẽ bỏ đi bước MixColumn
- Kết thúc vòng 10,ta sẽ thu được kết quả: 39 02 dc 19 25 dc 11 6a 84 09 85 0b 1d Fd 97 32
- Phần 3: Giải mã Thuật toán giải mã được trình bày như sơ đồ ban đầu ta đã thấy thứ tự các hàm biến đổi được áp dụng khác so với thuật toán mã hóa trong khi dạng của danh sách khóa 2 thuật toán vẫn giữ nguyên. Tuy vậy, một sô đặc điểm của AES cho phép chúng ta có một thuật toán giải mã tương đương có thứ tự áp dụng các hàm biến đổi giống với thuật toán mã hóa ( tất nhiên là biến đổi bằng cách làm ngược cảu chúng). Điều này làm được bằng cách thay đổi sách khóa. 1. Add Round Key: Ví dụ: Bản khóa: 39 02 dc 19 25 dc 11 6a 84 09 85 0b 1d Fd 97 32 Round key 10: D0 C9 E1 B6 14 Ee 3f 63 F9 25 0c 0c A8 89 C8 A6 Kết quả: E9 Cb 3d Af 31 32 2e 09 7d 2c 89 07 B5 72 5f 94 2. InvShiftRows () Đây là quá trình ngược lại so với quá trình ShiftRows() Ví dụ:
- Ban đầu: E9 Cb 3d Af 31 32 2e 09 7d 2c 89 07 B5 72 5f 94 Trạng thái 1(xoay 1 byte) E9 Cb 3d Af 31 32 2e 09 7d 2c 89 07 72 5f 95 B5 Trạng thái 2(xoay 2 byte): E9 Cb 3d Af 31 32 2e 09 89 07 7d 2c 72 5f 95 B5 Kết quả(xoay 3 byte): E9 Cb 3d Af 09 31 32 2e 89 07 7d 2c 72 5f 95 B5 3. InvSubBytes () Quá trình Process InvSubBytes tương tự với SubBytes, nhưng các bảng được sử dụng khác nhau. Bảng được sử dụng là các bảng S-Box nghịch đảo:
- Ví dụ: Ban đầu: E9 Cb 3d Af 09 31 32 2e 89 07 7d 2c 72 5f 95 B5 Kết quả sau khi so bảng: Eb 59 8b 1b 40 2e A1 C3 F2 38 13 42 1e 84 E7 D2 4. InvAddRows () Ban đầu Eb 59 8b 1b 40 2e A1 C3 F2 38 13 42 1e 84 E7 D2
- Kết quả: 47 40 A3 4c 37 D4 70 9f 94 E4 3a 42 Ed A5 A6 bc 4. InverseMixCollums () Hàm này là hàm ngược của hàm MixColum. Hàm này làm việc trên các cột của mảng trạng thái, coi mỗi cột như là một mô tô đa thức 4 hạng tử. Các cột được xem là các đa thức trên GF(28) và được nhân theo modulo x4+1 với 1 đ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 bằng phép nhân ma trận như sau: S’(x)= a-1(x) xor s(x) Trong đó 0
- Ví dụ: Ban đầu: 47 40 A3 4c 37 D4 70 9f 94 E4 3a 42 Ed A5 A6 bc Tiến hành: dòng Cột Tất cả các cột được thực hiện cùng 1 cách như trên và kết quả thu được như sau: 87 F2 4d 97 6e 4c 90 Ec 46 E7 4a C3 A6 8c D8 95 Làm tương tự với các vòng lặp theo sơ đồ mã hóa và giải mã, kết quả cuối cùng sau vòng lặp thứ 10 là bản rõ như sau: 32 88 31 E0 43 5a 31 37 F6 30 98 07 A8 8d A2 34
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn