Ngày nay với sự xuất hiện của máy tính, các tài liệu văn bản giấy tờ và các thôngtin quan trọng đều được số hóa và xử lý trên máy tính, được truyền đi trong môi trườngmạng- một môi trườn
Trang 1LỜI NÓI ĐẦU
Từ trước công nguyên con người đã phải quan tâm tới việc làm thế nào để đảm bảo antoàn bí mật cho các tài liệu, văn bản quan trọng, đặc biệt là trong lĩnh vực quân sự, ngoạigiao Ngày nay với sự xuất hiện của máy tính, các tài liệu văn bản giấy tờ và các thôngtin quan trọng đều được số hóa và xử lý trên máy tính, được truyền đi trong môi trườngmạng- một môi trường mà mặc định là không an toàn
Do đó yêu cầu về việc có một cơ chế, giải pháp để bảo vệ sự an toàn và bí mật của cácthông tin nhạy cảm, quan trong 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 một ứng dụng Tin học có ích nàolại không sử dụng các thuật toán 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ìnhcủa giảng viên Ths.Đỗ Thị Minh Nguyệt, chúng em đã có thêm những kiến thức về mônhọ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àitậ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
Trang 2Phầ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ấpthuậ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à VincentRijmen 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ònSquare 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ỏinhiề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 (đầuvà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ạokhó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ántrong 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ỗicộ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 đầuvà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ềutrê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ôngviệc cho các thành viên như sau:
Trang 3Phạ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 đượcchuyể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
Trang 4Mã 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ậyRound 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 Roundkey
Ta có key ban đầu:
Thành
Cf4f3c09
Sau đó ta đi so sánh với bảng S-box
Trang 5Cụ thể ta có: Cf=8a
4f=843c=eb09=01
8a84Eb01Tiếp theo ta lấy cột từng cột của Key cũ(+)kết quả trên (+) Rcon
Với Rcon=
01000000
Trang 6A0 88
Fa 54
Fe 2c
17 blTiế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ộtthứ 3 của Roundkey(1)
A0 88 23
Fa 54 A3
Fe 2c 39
17 bl 39Tiế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ủaRoundkey(1)
A0 88 23 2a
Trang 7Fa 54 A3 6c
Fe 2c 39 76
17 bl 39 05Roundkey (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
F2C295F2
7a96B943
5935807a
7359F67fRoundkey (2)3d
80477d
4716Fe3e
1e237e44
6d7a883b
Roundkey (3)Ef
44A541
A8525b7f
B671253b
Db0bAd00Roundkey (4)
D4D1C6
8c839d
CaF2B8
11F915
Trang 8F8 87 Bc bcRoundkey (5)6d
Ca0093fdRoundkey (6)4e
4eA6Dc4fRoundkey (7)Ea
7f8d292fRoundkey (8)
575c006eRoundkey (9)
B6630c
Trang 9A8 89 C8 A6Roundkey (10)
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
(+)
Trang 10Từ 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”
Trang 11Tương tự với các giá trị còn lại ta có bảng
Trang 13Cột thứ 1:
D4Bf5d30
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ạibỏ
Trang 15046681E5
Sau khi thực hiện xong bước MixColumn, ta có kết quả
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)
Trang 16Sau 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:
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ả:
Trang 17Phầ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ậttoá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ậttoá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áchthay đổi sách khóa
1 Add Round Key:
Trang 21Hà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ảngtrạ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 đathứ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):