Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG 1
- -
BÀI TIỂU LUẬN TÌM HIỂU VÀ MÔ PHỎNG HỆ THỐNG MẬT MÃ HÓA TIÊN TIẾN AES
: An ninh mạng viễn thông : Phạm Anh Thư
: 06 : 06 : Vũ Trọng Linh
Vũ Đình Trường Trịnh Xuân Đạt
Trang 2MỤC LỤC
Bảng phân công công việc 3
Danh mục thuật ngữ 4
Danh mục hình ảnh 5
MỞ ĐẦU 6
I Giới thiệu chung 7
1.1 Giới thiệu 7
1.2 Sơ lược lịch sử AES 7
II Các tiêu chí đánh giá thuật toán AES 8
2.1 Bảo mật 8
2.2 Chi phí 8
2.3 Đặc điểm thực hiện và thuật toán 8
III Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES 8
IV Quá trình mã hóa 9
4.1 Phép biến đổi SubBytes 10
4.2 Phép biến đổi ShiftRow 12
4.3 Phép biến đổi MixColumns 12
4.4 Phép biến đổi AddRoundKey 13
4.5 Mở rộng khóa (ExpandKey) 14
V Quá trình giải mã 15
5.1 Tổng quan về giải mã AES-128 15
5.2 Chức năng AddRoundKey đảo 17
5.3 Chức năng InvShiftRows 17
5.4 Chức năng InvSubBytes 18
5.5 Chức năng InvMixColumns 19
5.6 Chức năng InvKeyExpansion 23
VI Demo thuật toán AES bằng Python 24
6.1 Giới thiệu 24
6.2 Thiết lập ứng dụng 25
6.2.1 Các thư viện hỗ trợ cho ứng dụng 25
6.2.2 Thuật toán mã hóa 25
6.2.3 Thuật toán giải mã 26
6.2.4 Các trường hợp được ứng dụng 27
VII Kết luận 27
Tài liệu tham khảo 28
Trang 3Bảng phân công công việc
Vũ Đình Trường– B17DCVT Danh mục thuật ngữ viết tắt
I Giới thiệu chung
II Các tiêu chí đánh giá thuật toán AES Trịnh Xuân Đạt – B17DCVT Mục lục
Danh mục hình ảnh
Mở đầu
III Cấu trúc cơ bản của thuật toán AES
IV Quá trình mã hóa
Tổng hợp word
Vũ Trọng Linh – B17DCVT219 Bảng phân công công việc
Lý do chọn đề tài
Mục đích và phạm vi tiểu luận
VII Quá trình giải mã
VIII Demo thuật toán AES bằng Python
Kết luận
Tổng hợp word
Trang 4Danh mục thuật ngữ
AES Advanced Encryption
Standard
Chuẩn mã hóa tiên tiến
DES Data Encryption Standard Chuẩn mã hóa dữ liệu SPN Substitution and
Permutation Network
Mạng thay thế và hoán vị
SubByte Substitute byte Thay thế byte
Inv SubByte Inverse Substitute byte Đảo thay thế byte Inv Shift Row Inverse Shift Row Đảo chuyển hàng Inv Mix Columns Inverse Mix Columns Đảo trộn cột
Inv Add Round Key Inverse Add Round Key Đảo thêm khóa vòng
Trang 5Danh mục hình ảnh
Hình 1 Cấu trúc cơ bản của AES 9
Hình 2 Kiến trúc mã hóa chung của AES 10
Hình 3 Bảng S-box 11
Hình 4 Ví dụ phép biến đổi SubBytes 11
Hình 5 Ví dụ phép biến đổi ShiftRow 12
Hình 6 Ví dụ phép biến đổi MixColumns 13
Hình 7 Ví dụ về AddRoundKey 13
Hình 8 Mở rộng khóa 14
Hình 9 Quá trình giải mã (Inverse Cipher) 16
Hình 10 Ma trận khóa vòng thứ 10 và ma trận dữ liệu đã mã hóa 16
Hình 11 Chức năng AddRoundKey 17
Hình 12 Chức năng InvShiftRows 17
Hình 13 Bảng S-box đảo của chuẩn AES 18
Hình 14 Chức năng InvSubBytes 18
Hình 15 Ma trận chuyển đổi dùng trong InvMixColumns 19
Hình 16 Chức năng InvMixColumns 22
Hình 17 Mạch nguyên lý nhân một byte A với các phần tử trong ma trận chuyển đổi InvMixColumns 23
Trang 6MỞ ĐẦU
Với sự phát triển ngày càng mạnh về nhu cầu truyền tin và bảo mật trên Internet hiện nay thì chúng ta rất cần một thuật toán mã hóa đủ mạnh, cực kỳ khó phá để thay thế các thuật toán mã hóa đã cũ và lỗi thời Hiện nay có rất nhiều thuật toán mã hóa tiên tiến, một trong số đó là thuật toán mã hóa tiên tiến AES Với những ưu điểm vượt trội của mình thì AES đã và đang được kỳ vọng là thuật toán tiên tiến nhất được đưa vào áp dụng trên toàn cầu trong tương lai gần Đó chính là lý do chúng em chọn đề tài này làm bài tiểu luận
Mục đích của bài tiểu luận là giúp mọi người có cái nhìn tổng quan nhất về thuật toán mã hóa tiên tiến AES Qua bài tiểu luận chúng ta có thể hiểu được những vấn đề
cơ bản về AES như cấu trúc cơ bản của thuật toán, quá trình mã hóa và giải mã
Phạm vi của bài tiểu luận sẽ xoay quanh những vấn đề cơ bản của thuật toán mã hóa tiên tiến AES
Về cấu trúc của bài tiểu luận, chúng em chia thành 7 phần lớn như sau:
I Giới thiệu chung
II Các tiêu chí đánh giá thuật toán AES
III Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES
IV Quá trình mã hóa
Trang 7I Giới thiệu chung
có thẩm quyền là Giải mã Giải mã trái với mã hóa Đây là quá trình chuyển đổi văn bản mật mã thành bản gốc mà không bỏ sót bất kỳ từ nào Để thực hiện các quy trình này, mật mã dựa vào các phép tính toán học cùng với một số thay thế và hoán vị có hoặc không có khóa
Ngày nay, có một số thuật toán đã có sẵn để mã hóa và giải mã dữ liệu nhạy cảm, thường được chia thành ba loại Một là mật mã đối xứng: là cùng một khóa được sử dụng để mã hóa và giải mã dữ liệu Thứ hai là mật mã không đối xứng Loại mật mã này dựa trên hai khóa khác nhau để mã hóa và giải mã Cuối cùng, hàm băm mật mã không
sử dụng khóa mà thay vào đó nó được trộn dữ liệu
Khóa đối xứng hiệu quả hơn và nhanh hơn nhiều so với Không đối xứng Một số thuật toán đối xứng phổ biến là AES, S-DES và 3DES Mục đích chính của bài báo này
sẽ cung cấp thông tin chi tiết về thuật toán Tiêu chuẩn mã hóa nâng cao (AES) cho dữ liệu mã hóa và giải mã, sau đó thực hiện so sánh giữa thuật toán AES và DES để đưa ra một số ý tưởng tại sao lại thay thế thuật toán DES thành AES
1.2 Sơ lược lịch sử AES
AES (Advanced Encryption Standard ) là một trong những thuật toán mật mã
khối đối xứng phổ biến và được sử dụng trên toàn thế giới Thuật toán này có một cấu trúc đặc biệt riêng để mã hóa và giải mã dữ liệu quan trọng và được áp dụng trong phần cứng và phần mềm trên toàn thế giới Rất khó để tin tặc lấy được dữ liệu thực khi mã hóa bằng thuật toán AES Cho đến nay không phải là bất kỳ bằng chứng nào để đánh lừa thuật toán này AES có khả năng xử lý ba kích thước khóa khác nhau như AES 128,
192 và 256 bit và mỗi mật mã này có kích thước khối 128 bit Bài báo cáo này chúng sẽ đưa ra cái nhìn tổng quan về thuật toán AES và giải thích chi tiết một số tính năng quan trọng của thuật toán này
Thuật toán AES là một trong những thuật toán mã hóa mật mã khối được Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) xuất bản vào năm 2000 Mục đích chính của thuật toán này là thay thế thuật toán DES sau khi xuất hiện một số khía cạnh dễ bị tấn công của nó NIST đã mời các chuyên gia làm việc về mã hóa và bảo mật dữ liệu trên
Trang 8toàn thế giới để giới thiệu một thuật toán mật mã khối cải tiến để mã hóa và giải mã dữ liệu với cấu trúc mạnh mẽ và phức tạp
Sau khi thực hiện các tiêu chí và đánh giá các thông số bảo mật khác nhau, họ đã chọn một trong năm thuật toán mã hóa được đề xuất bởi hai nhà mật mã học người Bỉ Joan Daeman và Vincent Rijmen Tên ban đầu của thuật toán AES là thuật toán Rijndel Tuy nhiên, tên này đã không trở thành một tên phổ biến cho thuật toán này thay vào đó
nó được công nhận là thuật toán Tiêu chuẩn mã hóa nâng cao (AES) trên khắp thế giới
II Các tiêu chí đánh giá thuật toán AES
Ba tiêu chí quan trọng đã được NIST sử dụng để đánh giá các thuật toán được gửi bởi các chuyên gia mật mã
2.1 Bảo mật
Một trong những khía cạnh quan trọng nhất mà NIST đã xem xét để lựa chọn thuật toán đó là bảo mật Lý do chính đằng sau điều này là rõ ràng vì mục đích chính của AES là cải thiện vấn đề bảo mật của thuật toán DES AES có khả năng tốt nhất để bảo vệ dữ liệu nhạy cảm khỏi những kẻ tấn công và không cho phép chúng phá dữ liệu
mã hóa so với các thuật toán được đề xuất khác Điều này đạt được bằng cách thực hiện nhiều thử nghiệm trên AES dựa trên lý thuyết và các cuộc tấn công thực tế
2.2 Chi phí
Một tiêu chí khác được NIST nhấn mạnh để đánh giá các thuật toán đó là chi phí Một lần nữa, các yếu tố đằng sau các biện pháp này cũng rõ ràng do một mục đích chính khác của thuật toán AES là cải thiện hiệu suất thấp của DES AES là một trong những thuật toán được NIST đề cử vì nó có thể có hiệu quả tính toán cao và có thể được sử dụng trong nhiều ứng dụng, đặc biệt là trong các liên kết băng thông rộng với tốc độ cao
2.3 Đặc điểm thực hiện và thuật toán
Tiêu chí này rất quan trọng để ước tính các thuật toán nhận được từ các chuyên gia mật mã Một số khía cạnh quan trọng đã được đo lường trong giai đoạn này là tính linh hoạt, tính đơn giản và tính phù hợp của thuật toán đối với sự đa dạng của việc triển khai phần cứng và phần mềm
III Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES
AES là một thuật toán mã hóa mới thay thế mật mã DES Nó dựa trên hai kỹ thuật phổ biến để mã hóa và giải mã dữ liệu là mạng thay thế và hoán vị (Substitution and Permutation Network SPN) SPN là một số phép toán được thực hiện trong các thuật toán mật mã khối AES có khả năng xử lý 128 bit (16 byte) như kích thước khối bản rõ
cố định 16 byte này được biểu diễn trong ma trận 4x4 và AES hoạt động trên ma trận byte Ngoài ra, một tính năng quan trọng khác trong AES là số vòng Số vòng phụ thuộc vào độ dài của khóa Có ba kích thước khóa khác nhau được sử dụng bởi thuật toán AES
để mã hóa và giải mã dữ liệu như (128, 192 hoặc 256 bit) Các kích thước khóa quyết
Trang 9định đến số vòng như AES sử dụng 10 vòng cho khóa 128 bit, 12 vòng cho khóa 192 bit và 14 vòng cho khóa 256 bit
Hình 1 Cấu trúc cơ bản của AES
IV Quá trình mã hóa
Mã hóa là một kỹ thuật phổ biến đóng vai trò chính để bảo vệ dữ liệu khỏi những
kẻ xâm nhập Thuật toán AES sử dụng một cấu trúc cụ thể để mã hóa dữ liệu nhằm mang lại sự bảo mật tốt nhất Để làm được điều đó, nó dựa vào số vòng và bên trong mỗi vòng bao gồm bốn quy trình phụ Mỗi vòng bao gồm bốn bước sau để mã hóa khối 128 bit
Trang 10Hình 2 Kiến trúc mã hóa chung của AES
4.1 Phép biến đổi SubBytes
Bước đầu tiên của mỗi vòng bắt đầu với phép biến đổi SubBytes Bước này phụ thuộc vào bảng S-box phi tuyến để thay thế một byte trong ma trận trạng thái thành một
byte khác
Trang 11Hình 3 Bảng S-box
Ta có ví dụ sau đây về phép biến đổi SubBytes:
Hình 4 Ví dụ phép biến đổi SubBytes
Trong ví dụ, ta sẽ thay tham số EA trong ma trận trạng thái bằng số 87 trong bảng S-box 87 chính là giao điểm của hàng E và cột A trong bảng S-box
Trang 124.2 Phép biến đổi ShiftRow
Bước tiếp theo sau SubByte thực hiện trên ma trận trạng thái là ShiftRow Trong quá trình này, các byte của hàng số 0 vẫn giữ nguyên và không thực hiện bất kỳ hoán vị nào Trong hàng đầu tiên, chỉ có một byte được chuyển theo vòng tròn sang trái Hàng thứ hai được dịch chuyển hai byte sang trái Hàng cuối cùng được dịch chuyển ba byte sang trái Kích thước của ma trận trạng thái mới không bị thay đổi mà vẫn giữ nguyên như kích thước ban đầu 16 byte nhưng xáo trộn các byte để tạo các cột khác nhau trước
khi sử dụng cột cho thao tác MixColumns
Trang 13Hình 6 Ví dụ phép biến đổi MixColumns
b1 = (b1 * 2) XOR (b2 * 3) XOR (b3 * 1) XOR (b4 * 1)
Và cứ tiếp tục như vậy cho đến khi tất cả các cột của ma trận trạng thái kết thúc
4.4 Phép biến đổi AddRoundKey
Trong thao tác AddRoundKey, 128 bit của ma trận state sẽ được XOR với 128 bit của khóa con của từng vòng Vì sử dụng phép XOR nên phép biến đổi ngược của AddRoundKey trong cấu trúc giải mã cũng chính là AddRoundKey Việc kết hợp với khóa bí mật tạo ra tính làm rối (confusion) của mã hóa Sự phức tạp của thao tác mở rộng khóa (KeySchedule) giúp gia tăng tính làm rối này
Hình 7 Ví dụ về AddRoundKey
Trang 14Hình 8 Mở rộng khóa
Trong thao tác mở rộng khóa với khóa mã 128 bit có đầu vào là 16 byte (4 word) của khóa mã, và sinh ra một mảng khóa vòng (Nr+1)x4=44 từ (word) hay 176 byte 44 word này được sử dụng cho 11 vòng mã hóa của AES, mỗi vòng dùng 4 word Từ bốn word đầu vào w0w1w2w3, trong lần lặp đầu tiên thao tác ExpandKey sinh ra bốn word w4w5w6w7, lần lặp thứ 2 từ w4w5w6w7 sinh ra w8w9w10w11 , cứ như thế cho đến lần lặp thứ 10 (tùy thuộc chiều dài khóa) sinh ra bốn word cuối cùng w40w41w42w43 như hình vẽ
Mục đích của ExpandKey: dùng để chống lại known-plaintext attack
Biết một số bit của khóa hay khóa con cũng không thể tính các bit còn lại
Không thể tính ngược: biết một khóa con cũng không thể tính lại các khóa con trước
đó
Tính khuếch tán: một bit của khóa chính tác động lên tất cả các bit của các khóa con
Trang 15V Quá trình giải mã
5.1 Tổng quan về giải mã AES-128
Mã hóa chuyển một "bản rõ" (plaintext) thành một "bản mã" (ciphertext) thông qua một khóa mã (key) giúp che dấu thông tin gốc ban đầu Giải mã là quá trình nghịch đảo (Inverse cipher) của quá trình mã hóa Nó giúp khôi phục lại bản rõ từ một bản mã
Trong quá trình giải mã, ma trận ciphertext sẽ bị biến đổi bởi các chức năng AddRoundKey, InvSubBytes, InvShiftRows hoặc InvMixColumns để tạo ra các dữ liệu trung gian gọi là ma trận trạng thái Ma trận khóa mã sẽ bị biến đổi bởi chức năng KeyExpansion như trong quá trình mã hóa Tuy nhiên, thứ tự sử dụng các khóa vòng trong quá trình giải mã ngược với quá trình mã hóa, nghĩa là khóa vòng số 10 sẽ được
sử dụng đầu tiên Tiếp theo đó là khóa vòng số 9, số 8, , cuối cùng là khóa mã gốc
Quá trình giải mã được thực hiện qua 5 chức năng cơ bản là AddRoundKey, InvSubBytes, InvShiftRows, InvMixColumns và InvKeyExpansion Chú ý, InvKeyExpansion không phải là một chức năng được mô tả trong chuẩn mà là một tên gọi được tác giả thêm vào để chỉ quá trình biến đổi ngược giá trị khóa vòng từ khóa vòng số 10 đến khóa mã gốc
Bước 1 Bước khởi tạo: Dữ liệu cần được mã hóa cipher_text[127:0] kết hợp với khóa vòng thứ 10, round_key_10[127:0], bằng chức năng AddRoundKey
Bước 2 Bước lặp giải mã: kết quả bước 1 được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes, AddRoundKey và InvMixColumns Bước này được lặp lại 9 lần Chú ý, InvKeyExpansion thực hiện song song với bước AddRoundKey để tạo khóa vòng cho chức năng này
Bước 3 Bước tạo ngõ ra: Sau 9 lần lặp ở bước 2, kết quả được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes và AddRoundKey với khóa mã ban đầu để khôi phục lại plain_text[127:0]
Trang 16Hình 9 Quá trình giải mã (Inverse Cipher)
Quá trình giải mã AES-128 sẽ được giải thích trên một ví dụ cụ thể Giả sử chuỗi
dữ liệu cần mã hóa cipher_text[127:0] và khóa vòng cuối cùng lấy từ quá trình mã hóa round_key_10[127:0] có giá trị như sau:
cipher_text[127:0] = 69 c4 e0 d8 6a 7b 04 30 d8 cd b7 80 70 b4 c5 5a
round_key_10[127:0] = 13 11 1d 7f e3 94 4a 17 f3 07 a7 8b 4d 2b 30 c5
Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte
Hình 10 Ma trận khóa vòng thứ 10 và ma trận dữ liệu đã mã hóa
Giá trị dùng làm ví dụ lấy từ phần "INVERSE CIPHER (DECRYPT)" của phụ lục "C.1 AES-128 (Nk=4, Nr=10)" của tài liệu mô tả chuẩn mã hóa
Trang 175.2 Chức năng AddRoundKey đảo
Chức năng AddRoundKey đảo trong quá trình giải mã cũng chính là chức năng AddRoundKey trong quá trình mã hóa nên gọi chung là AddRoundKey
Hình 11 Chức năng AddRoundKey 5.3 Chức năng InvShiftRows
InvShiftRows là đảo của chức năng ShiftRows InvShiftRows thực hiện quay phải từng hàng của ma trận trạng thái, sinh ra từ bước trước đó, theo byte với hệ số quay tăng dần từ 0 đến 3 Hàng đầu tiên có hệ số quay là 0 thì các byte được giữ nguyên vị trí Hàng thứ hai có
hệ số quay là 1 thì các được quay một byte Hàng thứ ba quay hai byte và hàng thứ tư quay
ba byte
Hình 12 Chức năng InvShiftRows