Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
463,99 KB
Nội dung
LỜI NĨI ĐẦU Từ trước cơng ngun người phải quan tâm tới việc làm để đảm bảo an tồn bí mật cho tài liệu, văn quan trọng, đặc biệt lĩnh vực quân sự, ngoại giao Ngày với xuất máy tính, tài liệu văn giấy tờ thơng tin quan trọng số hóa xử lý máy tính, truyền mơi trường mạng- môi trường mà mặc định không an tồn Do u cầu việc có chế, giải pháp để bảo vệ an toàn bí mật thơng tin nhạy cảm, quan ngày trở nên cấp thiết An toàn bảo mật thông tin môn học đảm bảo cho mục đích Khó thấy ứng dụng Tin học có ích lại khơng sử dụng thuật tốn mã hóa thơng tin Trong thời gian học tập trường Đại học công nghiệp Hà Nội, giúp đỡ tận tình giảng viên Ths.Đỗ Thị Minh Nguyệt, chúng em có thêm kiến thức mơn học ứng dụng An tồn bảo mật thông tin thực tế Trong phạm vi tập lớn, chúng em tìm hiểu 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 tập này! Chúng em xin chân thành cảm ơn! Hà nội, tháng năm 2013 Nhóm thực Phần 1: Tổng quan toán Trong mật mã học, AES (viết tắt từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) thuật tốn mã hóa khối 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 giới nghiên cứu kỹ lưỡng AES chấp thuận làm tiêu chuẩn liên bang Viện công nghệ 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 Vincent Rijmen Thuật toán đặt tên "Rijndael" tham gia thi thiết kế AES Rijndael phát âm "Rhine dahl" theo phiên âm quốc tế Quá trình phát triển Thuật tốn dựa thiết kế Square có trước Daemen 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ế-hoán vị AES dễ dàng thực với tốc độ cao phần mềmhoặc phần cứng khơng địi hỏi nhiều nhớ Do AES tiêu chuẩn mã hóa mới, triển khai sử dụng đại trà Mơ tả tốn Mặc dù tên AES Rijndael thường gọi thay cho thực tế thuật tốn khơng hồn tồn giống AES làm việc với khối liệu (đầu vào đầu ra) 128 bít khóa có độ dài 128, 192 256 bít Rijndael làm việc với liệu khóa có độ dài bội số 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 cột gồm byte Hầu hết phép toán thuật toán AES thực trường hữu hạn 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ử ma trận 4x4 byte, gọi ma trận trạng thái, hay vắn tắt trạng thái (tiếng Anh: state, trang thái Rijndael có thêm cột) Trong q trình thực thuật tốn tốn tử tác động để biến đổi ma trận trạng thái Trong phạm vi tập, chúng em tìm hiểu thuật toán AES với liệu đầu vào 128 bit sử dụng khóa 128bit Phân cơng tìm hiểu Thuật tốn AES thuật toán tiên tiến sử dụng nhiều giới tính an tồn Vì q trình tìm hiểu nhóm em phân cơng cơng việc cho thành viên 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 liệu đầu vào key hệ Hex, rõ key phải chuyển đổi từ hệ ASCII sang hệ Hex Tùy thuộc vào độ dài key sử dụng 128bit, 196bit 256 bit mà AES có cách mã hóa với số lần lặp khác Cụ thể Độ dài khóa(Nk) Kích thước khối (Nb) Số lần lặp AES 128 4 10 AES 196 12 AES 256 14 Các bước thực Khởi động vòng lặp AddRoundKey — Mỗi cột trạng thái kết hợp với khóa theo thứ tự từ đầu dãy khóa Vịng lặp SubBytes — phép (phi tuyến) byte trạng thái 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 cuối SubBytes ShiftRows AddRoundKey Mã hóa key Sau vịng lặp, đến bước AddRoundKey, kết (+) khóa round key Vậy Round key tính Phần tìm hiểu 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 việc tính Round key(1) Đầu tiên ta lấy cột cuối key ban đầu Đảo bit 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 8a 84 Eb 01 Tiếp theo ta lấy cột cột Key cũ(+)kết (+) Rcon Với Rcon= 01 00 00 00 2b 7e 15 16 8a (+) 84 Eb 01 00 (+) 00 01 A0 = 00 Fa Fe 17 Sau tính ta có cột thứ Round key(1) A0 Fa Fe 17 Tiếp tục ta lấy cột thứ key (+) cột thứ RoundKey(1) khơng cộng với Rcon, ta có cơt thứ RoundKey(1) A0 88 Fa 54 Fe 2c 17 bl Tiếp tục, ta lại lấy cột thứ key (+) cột thứ RoundKey (1) ta cột thứ 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ứ RoundKey (1) ta cột thứ Roundkey(1) A0 88 23 2a Fa 54 A3 6c Fe 2c 39 76 17 bl 39 05 Roundkey (1) Cuối ta RoundKey (1) Tương tự ta tính RoundKey tiếp Trong ta sử dụng khóa 128b nên có 10 lần lặp ta có 10 Roundkey F2 7a 59 73 C2 96 35 59 95 B9 80 F6 F2 43 7f 7a Roundkey (2) 3d 80 47 7d 47 1e 6d 16 23 7a Fe 7e 88 3e 44 3b Roundkey (3) Ef A8 B6 Db 44 52 71 0b A5 5b 25 Ad 41 3b 00 7f Roundkey (4) D4 8c Ca 11 D1 83 F2 C6 9d B8 15 F9 F8 87 Bc bc Roundkey (5) 6d 11 Db Ca 88 0b F9 00 A3 3e 86 93 7a 41 fd Fd Roundkey (6) 4e 5f 84 4e 54 5f A6 A6 F7 C9 4f 0e F3 Dc B2 4f Roundkey (7) Ea B5 31 D2 8d 7f 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 Key sau chuyển đổi sang ASCII Chuyển đổi từ 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 lấy Plan text (+) Key Vd: 32 (+) 2b Biến đổi 32 hệ hex= 0011 0010 Biến đổi 2b hệ hex= 0010 1011 0011 0010 (+) 0010 1011 (=) 0001 1001 Cách tính: ta lấy số cộng với Nếu số (đều số hay số 1) kết 0, cịn số khác kết số Từ kết 0001 1001 ta biến đổi hệ 16 kết 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 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 B8 1e 27 Bf B4 41 11 98 5d 52 ae F1 E5 30 B2.Shiftrows Từ bảng thu sau thực SubBytes, ta thực bước Bước thực chuyển bit hàng sau theo thứ tự: Hàng thứ không chuyển Hàng thứ chuyển bit vị trí bit cuố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 vị trí bit cuối cùng,các bit cịn lại đẩy lên Sau lại thực 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 chuyển vị trí bit xuống bit cuối lặp lại lần ae F1 E5 30 F1 E5 30 ae E5 30 ae F1 30 ae F1 E5 Sau thực chuyển bit, ta có kết D4 E0 B8 1e bf B4 41 27 5d 52 11 98 30 ae F1 E5 B3.Mix Column Sau thực việc chuyển bit, ta có bảng kết D4 E0 B8 1e bf B4 41 27 5d 52 11 98 30 ae F1 E5 Trong bước Mix Column, ta thực việc nhân cột bảng kết 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 “02”, ta có cách thực sau Ta thêm số “0” vào cuối dãy sau chuyển hệ Hex, dãy số biến đổi Cụ thể trường hợp này, số “1” dãy bị loại bỏ D4=10101000 Sau đó, lấy kết sau thêm bit nhân với dãy bit (00011011) 10101000 Xor 00011011 = 10110011 Sau tiếp tục tính (bf.03) Trong trường hợp số nhân “03”, ta có: 03=02+01 Từ (bf.03)=(bf.02) xor (bf.01) Với (bf.02) ta thực 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ó : D4 04 Bf 66 = 5d 30 81 E5 Sau thực xong bước MixColumn, ta có kết D4 E0 B8 1e bf B4 41 27 5d 52 11 98 30 ae F1 E5 = 04 E0 48 28 66 Cb F8 06 81 19 D3 26 E5 9a 7a 4c B4 AddRound Key Từ kết bảng MixColumn, ta (+) RoundKey tương ứng (Trong vòng lặp thứ +() RoundKey (1) tương tự với vòng lặp lại) 04 E0 48 28 A0 88 23 2a 66 Cb F8 06 Fa 54 A3 6c 81 19 D3 26 Fe 2c 39 76 E5 9a 7a 4c 17 bl 39 05 = A4 68 6b 02 9c 9f 5b 6a 7f 35 Ea 50 F2 2b 43 49 Roundkey (1) Sau kết thúc AddRoundKey, vòng lặp thứ bắt đầu Input kết 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 thực vịng lặp bao gồm bước Đến vòng lặp thứ 10 (vòng cuối), AES thực bước SubBytes ShiftRows AddRoundKey Trong vòng lặp cuối bỏ bước MixColumn Kết thúc vòng 10,ta thu 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 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 danh sách khóa thuật tốn giữ ngun Tuy vậy, sơ đặc điểm 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 biến đổi cách làm ngược cảu chúng) Điều làm cách thay đổi sách khóa 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 D0 C9 E1 B6 14 Ee 3f 63 F9 25 0c 0c A8 89 C8 A6 E9 Cb 3d Af 31 32 2e 09 Round key 10: Kết quả: 7d 2c 89 07 B5 72 5f 94 InvShiftRows () Đây trình ngược lại so với q trình ShiftRows() Ví dụ: Ban đầu: E9 Cb 3d Af 31 32 2e 09 7d 2c 89 07 B5 72 5f 94 E9 Cb 3d Af 31 32 2e 09 7d 2c 89 07 72 5f 95 B5 E9 Cb 3d Af 31 32 2e 09 89 07 7d 2c 72 5f 95 B5 Trạng thái 1(xoay byte) Trạng thái (xoay byte): Kết (xoay byte): E9 Cb 3d Af 09 31 32 2e 89 07 7d 2c 72 5f 95 B5 InvSubBytes () 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: Ví dụ: Ban đầu: E9 Cb 3d Af 09 31 32 2e 89 07 7d 2c 72 5f 95 B5 Eb 59 8b 1b 40 2e A1 C3 F2 38 13 42 1e 84 E7 D2 Eb 59 8b 1b 40 2e A1 C3 F2 38 13 42 1e 84 E7 D2 47 40 A3 4c 37 D4 70 9f 94 E4 3a 42 Ed A5 A6 bc Kết sau so bảng: InvAddRows () Ban đầu Kết quả: InverseMixCollums () Hàm hàm ngược hàm MixColum Hàm làm việc cột mảng trạng thái, coi cột mô tô đa thức hạng tử Các cột xem đa thức GF(28) nhân theo modulo x4+1 với đa thức cố định a-1(x): a-1(x)= {0b}x-3 + {0d}x-3+{09}x + {0e} Và mơ ta phép nhân ma trận sau: S’(x)= a-1(x) xor s(x) Trong 0