Quá trình trên bao gồm các bước chính như AddRoundKey,SubBytes, ShiftRows, MixColumns và cách triển khai các bước để tạo ramức độ bảo mật cao.Ngoài ra, đề tài còn bao gồm tìm hiểu về sự
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Giảng viên hướng dẫn: TS Hoàng Văn Hiệp
Bộ môn: Kỹ Thuật Máy Tính
HÀ NỘI, 8/2023
Chữ ký của GVHD
Trang 2MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI VÀ NHIỆM VỤ CỦA ĐỒ ÁN 1
1.1 Giới thiệu đề tài 1
1.2 Nhiệm vụ của đồ án 1
1.2.1 Tổng Quan về AES và các chế độ mã hóa: 2
1.2.2 Phân Tích Hoạt Động của AES: 2
1.2.3 Triển Khai AES với Các Chế Độ ECB, CBC, CTR: 2
1.2.4 Đánh Giá Tốc Độ So Với Các Thuật Toán Mã Hóa Khác: 2
1.2.5 Tấn Công vào Thuật Toán AES: 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CỦA THUẬT TOÁN AES 4
2.1 Tổng quan về thuật toán AES và các chế độ mã hóa 4
2.1.1 Tổng quan về thuật toán AES 4
2.2 Phân tích hoạt động của thuật toán AES 8
2.2.1 Mở rộng khóa 10
2.2.2 AddRoundKey 11
2.2.3 SubBytes 12
2.2.4 ShiftRow 14
2.2.5 MixColumns 15
CHƯƠNG 3 KHAI VÀ ĐÁNH GIÁ THỰC NGHIỆM THUẬT TOÁN AES .16
3.1 Triển khai thuật toán AES 16
3.1.1 Ngôn ngữ lập trình sử dụng 16
3.1.2 Thư viện bổ sung 17
3.1.3 Áp dụng thuật toán AES với chế độ CBC để mã hóa 18
3.1.4 Quá trình giải mã 19
3.1.5 Kết quả chương trình 19
3.2 So sánh thuật toán AES với các thuật toán khác 22
CHƯƠNG 4 Tấn công vào AES 22
CHƯƠNG 5 KẾT LUẬN 23
5.1 Kết luận 23
5.2 Hướng phát triển của đồ án trong tương lai 23
TÀI LIỆU THAM KHẢO 25
Trang 3CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI VÀ NHIỆM VỤ CỦA ĐỒ ÁN 1.1 Giới thiệu đề tài
Trong thời đại số hóa và kết nối toàn cầu, bảo vệ thông tin quan trọng trướcnhững nguy cơ mất cắp và xâm nhập trở thành một vấn đề quan trọng hàngđầu Vì vậy, nghiên cứu về các phương pháp mã hóa và giải mã đóng vaitrò quan trọng trong việc bảo vệ dữ liệu quan trọng khỏi sự truy cập tráiphép Một trong những phương pháp được áp dụng phổ biến và nghiên cứurộng rãi trong lĩnh vực này là Thuật toán AES (Advanced EncryptionStandard), một thuật toán mã hóa đối xứng hiện đang được sử dụng trênnhiều thiết bị, cơ sở dữ liệu cũng như được áp dụng cho nhiều hệ thống bảomật hiện nay trên toàn cầu Thuật toán AES như nền móng để triển khai mãhóa và xác thực cho máy tính cá nhân và máy chủ
Qua quá trình phát triển, từ cơ sở nền tảng, thuật toán AES đã được pháttriển them và áp dụng cho các phần cứng Satoler.al triển khai AES dựatrên thư viện chuẩn CMOS [1], Daemenar.al sử dụng dữ liệu 32 bit và các
dữ liệu cơ bản trong tiến hành biến đổi các bước trong thuật toán AES đểcải thiện hiệu năng[2] Intel sử dụng tệp lệnh mở rộng AES-NIS để cảithiện hiệu năng và bảo mật cho thuật toán [3], đồng thời rất nhiều hệ thốngkhác cũng sử dụng thuật toán AES theo từng cách khác nhau [4][5][6][7]
Đề tài nghiên cứu này tập trung vào việc khám phá và hiểu rõ hơn về Thuậttoán AES - một bước quan trọng trong việc nâng cao khả năng bảo mật vàđảm bảo an toàn thông tin trong các hệ thống và ứng dụng khác nhau Đềtài tập trung vào phân tích hoạt động AES theo quá trình mã hóa dữ liệugốc thành dữ liệu mật;cũng như quá trình ngược lại từ bản mật trở thành dữliệu gốc Quá trình trên bao gồm các bước chính như AddRoundKey,SubBytes, ShiftRows, MixColumns và cách triển khai các bước để tạo ramức độ bảo mật cao
Ngoài ra, đề tài còn bao gồm tìm hiểu về sự phát triển của thuật toán AEScác ưu điểm của thuật toán AES so với các thuật toán ra đời trước đó nhưDES,RC5, BlowFish,newDES, SAFER, FEAL, …
Đồng thời, tính bảo mật của AES và các cơ chế mà thuật toán chống lại cáccuộc tấn công như tấn công dự đoán khóa, tấn công vùng nhớ tạm, và kiểutấn công khác cũng được nhắc tới trong đề tài này
Tóm lại, đề tài nghiên cứu về Thuật toán AES không chỉ đơn thuần là việchiểu về một thuật toán mã hóa cụ thể, mà còn là việc tìm hiểu về cáchchúng ta có thể áp dụng và tối ưu hóa nó để đảm bảo an toàn thông tintrong môi trường kỹ thuật số ngày càng phức tạp và đa dạng
Trang 41.2.1 Tổng Quan về AES và các chế độ mã hóa:
Tổng quan về AES sẽ cung cấp một tổng quan chi tiết về Thuật toán AES(Advanced Encryption Standard), bao gồm lịch sử phát triển của AES.Phần này cũng sẽ bao gồm giới thiệu về cách hoạt động chung của AES và
cơ chế chính trong việc biến đổi dữ liệu từ văn bản gốc thành dữ liệu mãhóa và ngược lại
1.2.2 Phân Tích Hoạt Động của AES:
Phân tích chi tiết về cách mà AES hoạt động bao gồm tìm hiểu về các bướcchính trong quá trình mã hóa và giải mã, như AddRoundKey, SubBytes,ShiftRows và MixColumns Phân tích này sẽ giúp ta hiểu rõ hơn về cáchcác phép biến đổi này tương tác với nhau để tạo ra mức độ bảo mật cao.Các nội dung về tổng quan và phân tích hoạt động của AES sẽ được trìnhbày trong chương 2: Cơ sở lý thuyết của Thuật toán AES
1.2.3 Triển Khai AES với Các Chế Độ ECB, CBC, CTR:
Nhiệm vụ tiếp theo là thực hiện triển khai thuật toán AES với các chế độ
mã hóa khác nhau như ECB (Electronic Codebook), CBC (Cipher BlockChaining) và CTR (Counter) Giới hạn nội dung trong đồ án bao gồm: phântích cách mỗi chế độ hoạt động và sự ảnh hưởng của các chế độ mã hóatính bảo mật và hiệu suất của thuật toán
1.2.4 Đánh Giá Tốc Độ So Với Các Thuật Toán Mã Hóa Khác:
Thực hiện đánh giá tốc độ của thuật toán AES so với các thuật toán mã hóakhác Trong giới hạn đồ án sẽ tiến hành các thử nghiệm để đo lường thờigian cần thiết để mã hóa và giải mã dữ liệu với AES và so sánh với cácthuật toán khác như DES, 3DES, và các thuật toán mã hóa hiện đại khác.Các nội dung về triển khai và đánh trên sẽ được trình bày tổng hợp trongchương 3: Triển khai và đánh giá thực nghiệm Thuật toán AES
1.2.5 Tấn Công vào Thuật Toán AES:
Cuối cùng là tiến hành nghiên cứu về các tấn công có thể được thực hiệntrên thuật toán AES Các cuộc tấn công phổ biến như tấn công brute force,tấn công dự đoán khóa và các phương pháp khác đã được thực hiện sẽ đánhgiá chính xác tính bảo mật của AES Điều này sẽ giúp đồ án phản ánhchính xác hơn về khả năng chống lại các cuộc tấn công và điều chỉnh cấuhình AES nhằm đưa ra các phương án tối ưu hóa tính bảo mật
Nội dung cuối cùng sẽ được trình bày trong chương 4: Bảo mật trong triểnkhai thuật toán AES
Trang 5Tổng kết lại, nhiệm vụ của đề án này nhằm đưa ra một cái nhìn toàn diện
về Thuật toán AES, từ cơ bản đến chi tiết hoạt động, triển khai thực tế,đánh giá hiệu suất và khả năng chống lại tấn công Điều này sẽ cung cấpmột nền tảng sâu rộ cho việc hiểu và ứng dụng AES trong lĩnh vực mật mãhọc và an ninh thông tin
Trang 6CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CỦA THUẬT TOÁN AES 2.1 Tổng quan về thuật toán AES và các chế độ mã hóa
2.1.1 Tổng quan về thuật toán AES
2.1.1.1 Lịch sử ra đời thuật toán AES
Thuật toán AES (Advanced Encryption Standard) (trong tài liệu gọi tắt làAES) là kết quả của một cuộc thi, được tổ chức bởi Cơ quan Tiêu chuẩn vàCông nghệ Quốc gia Hoa Kỳ (NIST), nhằm tìm ra một tiêu chuẩn mã hóamới và mạnh mẽ thay thế cho tiêu chuẩn mã hóa cũ DES (Data EncryptionStandard) (trong tài liệu gọi tắt là DES)
Sau đây là lịch sử ra đời của thuật toán AES [8]:
Năm 1997: Cuộc thi AES được khởi đầu bởi NIST Mục tiêu của cuộc thi
là chọn ra một thuật toán mã hóa mới để thay thế DES, mà đến thời điểm
đó đã được cho rằng không còn đủ bảo mật bởi sự phát triển của công nghệ
và tính toán của máy tính trong thời gian đó
Năm 1999: NIST công bố danh sách 15 ứng cử viên ban đầu cho cuộc thiAES Các thuật toán này bao gồm một loạt các ý tưởng và phương pháp mãhóa đa dạng
Năm 2000: NIST rút gọn danh sách ứng cử viên còn lại từ 15 xuống còn 5thuật toán: MARS, RC6, Rijndael, Serpent và Twofish
Năm 2001: Cuộc thi AES kết thúc khi NIST chọn thuật toán Rijndael làmtiêu chuẩn mã hóa mới Rijndael là một thuật toán mã hóa đối xứng được
đề xuất bởi hai nhà mật mã học người Bỉ là Vincent Rijmen và JoanDaemen
Tháng 11 năm 2001: NIST chính thức công bố AES như một tiêu chuẩnchính thức AES sử dụng các khóa có độ dài 128, 192 hoặc 256 bit và cóthể hoạt động ở các chế độ khác nhau như ECB, CBC, CFB, và OFB.Sau này, AES nhanh chóng trở thành tiêu chuẩn mã hóa được sử dụng rộngrãi trên toàn cầu Các ứng dụng và hệ thống từ thanh toán điện tử đến mạnglưới viễn thông và an ninh thông tin đều sử dụng AES để bảo vệ thông tinquan trọng
Lịch sử ra đời của AES không chỉ thể hiện quá trình lựa chọn và xây dựngmột thuật toán mã hóa mạnh mẽ, mà còn phản ánh sự cần thiết của việc cậpnhật và nâng cấp an ninh thông tin để đối phó với các thách thức ngày càngphát triển của thế giới kỹ thuật số
2.1.1.2 Tổng quan thuật toán AES
Thuật toán AES (Advanced Encryption Standard) là một thuật toán mã hóađối xứng Bằng cách biến đổi dữ liệu gốc thành dữ liệu mã hóa, dữ liệu sau
Trang 7mã hóa đucợ bảo mật và chỉ có thể được giải mã bởi người có khóa giải
mã AES được xem là một trong những tiêu chuẩn mã hóa mạnh mẽ và antoàn nhất hiện nay
Các đặc điểm quan trọng của AES bao gồm:
1 Kích thước khóa:
AES có thể được sử dụng với các kích thước khóa khác nhau, bao gồm 128bit, 192 bit và 256 bit Điều này cho phép lựa chọn mức độ bảo mật phùhợp với nhu cầu cụ thể (theo khuyến nghị của NIST) [9] Lấy bảng các độdài khóa btt
2 Số vòng lặp:
Quá trình mã hóa và giải mã trong AES được thực hiện thông qua nhiềuvòng lặp, với số vòng tùy thuộc vào kích thước khóa Mỗi vòng lặp baogồm một loạt các phép biến đổi, như thay thế byte (SubBytes), dịch byte(ShiftRows), trộn cột (MixColumns) và thêm khóa vòng (AddRoundKey)
3 Cơ chế hoạt động:
Quá trình mã hóa AES bắt đầu bằng việc chia dữ liệu thành các khối bit và thêm khóa để tạo ra khóa vòng Sau đó, các phép biến đổi tương ứngvới số vòng lặp được thực hiện lên dữ liệu Quá trình giải mã sẽ thực hiệncác phép biến đổi ngược lại theo thứ tự ngược
128-4 Chế độ mã hóa:
AES có thể được triển khai với các chế độ mã hóa khác nhau như ECB(Electronic Codebook), CBC (Cipher Block Chaining), CFB (CipherFeedback), và OFB (Output Feedback), để đáp ứng các yêu cầu bảo mật vàtính toán khác nhau
5 Tính bảo mật:
AES đã trải qua quá trình đánh giá khắt khe và được chứng minh là an toàn
và khó bị tấn công Nhiều nghiên cứu và thử nghiệm đã chứng minh tínhbảo mật cao của AES đối với các cuộc tấn công phổ biến tuy nhiên trongmột số trường hợp với cách triển khai hệ mật thuật toán AES có thể bộc lộnhững điểm yếu dễ bị tấn công
2.1.1.3 Các chế độ mã hóa được áp dụng thuật toán AES
AES là thuật toán mã khóa khối, vì vậy các chế độ mã hóa thường được sửdụng khi mã hóa dữ liệu có độ dài lớn hơn khối dữ liệu có thể kể đến như:ECB, CBC,CTR, OFD Trong giới hạn đồ án này, em chỉ đề cập tới 3 chế
độ mã hóa chính CBC, ECB và CTR
a) Electronic Code Book (CBC) (Chế độ mã hóa từ điển)
Trang 8Chế độ ECB là cách đơn giản nhất để mã hóa dữ liệu Trong chế độ này, dữliệu được chia thành các khối cố định và mỗi khối được mã hóa độc lậpbằng cùng một khóa
Hình 1 Cơ chế mã hóa của ECB
Hình 1 trình bày cơ chế hoạt động của ECB, theo đó các khối được mã hóacùng với 1 khóa Trước khi tiến hành mã hóa, dữ liệu cần được chia thànhcác khối có kích thước cố định và được quy định trong quá trình truyền tin,
mã hóa và giải mã để tránh khỏi việc sai sót trong quá trình áp dụng cơ chế
mã hóa
Khi chia dữ liệu thành các khối để thực hiện mã hóa, cần phải xử lý khối
dữ liệu ban đầu khi độ dài của dữ liệu không chia hết cho độ dài khối.Thông thường ta thường thêm phần đệm cho khối cuối cùng Phần đệm cầntuân thủ các yêu cầu bảo mật, có thể xử dụng chuẩn PKCS#07 (phụ lục 1)[9]
Vấn đề chính với ECB là nếu hai khối giống nhau được mã hóa bằng cùngmột khóa, chúng sẽ cho ra cùng một đầu ra mã hóa Điều này có nghĩa làcác mẫu trong dữ liệu gốc có thể dễ dàng nhận biết trong dữ liệu mã hóa
Do đó, ECB ít được sử dụng trong các ứng dụng bảo mật cao
b) Cipher Block Chaining Mode (CBC) (Chế độ mã hóa chuỗi)
Để bắt đầu mã hóa trong chế độ CBC, ta cần khởi tạo một khối ban đầu gọi
là “vector khởi tạo” (IV - Initialization Vector) Khối đầu tiên được XORvới “vector khởi tạo” sau đó mã hóa Tiếp theo mỗi khối dữ liệu XOR vớikhối dữ liệu trước đó đã được mã hóa trước đó sau đó mã hóa Tiếp tục nhưvậy cho đến khi hết dữ liệu.CBC giúp loại bỏ vấn đề đồng nhất trong ECB
và tăng tính ngẫu nhiên của dữ liệu mã hóa Tuy nhiên, CBC yêu cầu quản
lý vector khởi tạo một cách an toàn, kích thước của vector khởi tạo tuy theo
dữ liệu đầu vào và khối dữ liệu
Trang 9Hình 2 Cơ chế hoạt động mã hóa của CBC
Hình 2 trình bày tổng quan cơ chế mã hóa chuỗi, theo đó giá trị IV chính làvector khởi tạo Cần lưu ý rằng giá trị IV không phải là khóa trong quátrình mã hóa, mà IV đóng vai trò như một giá trị làm nhiễu (salt) đượcthêm vào để bảo vệ dữ liệu khỏi tấn công từ điển và tấn công chọn trướcbản rõ
Cũng giống như ECB, CBC yêu cầu dữ liệu được chia thành các khối cốđịnh.Khi chia dữ liệu thành các khối để thực hiện mã hóa, cần phải xử lýkhối dữ liệu ban đầu khi độ dài của dữ liệu không chia hết cho độ dài khối.Thông thường ta thường thêm phần đệm cho khối cuối cùng Phần đệm cầntuân thủ các yêu cầu bảo mật, có thể xử dụng chuẩn PKCS#07 (phụ lục 1)[9]
Hình 3 Cơ chế hoạt động giải mã của CBC
Trang 10Hình 3 trình bày cơ chế giãi mã của CBC, bằng cách thực hiện ngược lạiquá trình mã hóa cùng với thay thế khối mã hóa bằng khối giải mã, từngkhối mã hóa sẽ được giải mã và đưa trở lại bản rõ
So sánh với chế độ mã hóa ECB ta thấy dữ liệu đã được làm nhiễu và khó
có thể nhận ra bản gốc và bản rõ, từ đó phòng tránh tấn công từ điển và tấncông chọn trước bản rõ
Hình 4 Hình gốc Hình 5 ECB Hình 6 CBC
c) Chế độ mã hóa CTR
Chế độ CTR sử dụng một khối dữ liệu (gọi là "counter") đóng vai trò nhưmột bộ đếm Mỗi bộ đếm được mã hóa bằng khóa để tạo ra khóa mã hóatạm thời Khóa mã hóa tạm thời sau đó được XOR với khối dữ liệu ban đầu
để tạo ra dữ liệu mã hóa CTR rất hiệu quả vì có thể thực hiện song songtrên nhiều khối dữ liệu Tuy nhiên, nếu khóa mã hóa tạm thời được dùng lạihoặc dự đoán được, an toàn của chế độ này có thể bị ảnh hưởng
Hình 7 cơ chế hoạt động của CTR
Đầu tiên, ta cần khởi tạo vector IV như CBC, tuy nhiên khối mã hóa khôngtrực tiếp mã hóa dữ liệu mà mã hóa vector IV, sau khi lần lượt mã hóaIV,IV+1,IV+2,
Ta được một tập hợp các khối dữ liệu mới gọi là khóa tạm, đem khóa tạmXOR với dữ liệu ban đầu ta sẽ được bản mật
Đối với chế độ CTR, yêu cầu không xử dụng lại vector IV vì nếu sử dụnglại, khóa tam tạo ra là như nhau với 2 lần mã hóa, có thể dẫn đến tấn công
Trang 11từ điển Vì vậy yêu cầu IV được khởi tạo ngẫu nhiên, theo phân phốichuẩn.
2.2 Phân tích hoạt động của thuật toán AES
Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhaunhư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 bit và khóa có độ dài
128, 192 hoặc 256 bit 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 256bit 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 Hầu hết các phép toán trong thuật toán AES đều thựchiện trong một trường hữu hạn của các byte Mỗi khối dữ liệu 128 bit đầuvà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 (được gọi là ma trậntrạng thái, hay thường được gọi là state) Quá trình mã hóa gồm 4 bước
1 AddRoundKey: mỗi byte của khối dữ liệu được kết hợp vớikhóa con được sinh ra từ quá trình tạo khóa con Rijndeal
2 SubBytes: phép thế, trong đó mỗi byte sẽ được thay thế bằngmột byte khác theo bảng tra (Rijndael S-box)
3 ShiftRow: đổi chỗ các hàng trong khối theo phép toán dịchvòng
4 MixColumns: quá trình trộn, đổi chỗ các cột trong khối theomột phép biến đổi tuyến tính Tại chu trình cuối cùng thì bướcMixColumns được thay thế bằng bước AddRoundKey
Trang 12Hình 8 Cơ chế hoạt động mã hóa và giải mã cho mỗi khối của AES
Theo hình trên, mỗi khối dữ liệu sẽ trải qua các vòng (Rounds) mỗi vònggồm 4 bước: AddRoundKey, SubBytes, ShiftRow, MixColumns Kết quảcuối cùng thu được là giá trị bản tin sau khi mã hóa Độ dài của key là 128,
192, 256 Số lượng Rounds tùy thuộc vào độ dài khóa (tương ứng là10,12,14)
Key của mỗi Round là khác nhau là được tạo ra từ khóa chính bằng quátrình tạo khóa con Rijndean
2.2.1 Mở rộng khóa
Với AES-128,128 bit khóa ban đầu được mở rộng (expand key) thành 176byte, tổ chức thành 44 từ (word), mỗi từ 4 byte, vừa đủ 10 khóa phụ cho
10 vòng đối với AES 128 bit và 1 khóa cho thao tác ban đầu
Quy trình mở rộng khóa được mô tả như sau:
Trang 13128 bit ban đầu chia làm 4 từ (128 bit / 32 (bit/từ) = 4 từ) được đưa trực tiếp vào khóa ban đầu
W[0,3] = key Các từ khóa tiếp theo được mở rông bằng cách XỎ giữa từ khóa liền trước
nó với từ khóa cách nó 4 vị trí:
W[i]=W[i−1]⊕w [i−4 ] PT 1
Đối với các từ khóa ở vị trí chia hết cho 4 thì thực hiện như sau:
W[i]=trans(W[i−1])⊕w [i−4 ] PT 2
Trong đó phép trans là phép biến đổi được thực hiện qua 3 bước:
1 Dịch vòng sang phải 1 byte
2 Thay thế từng bytes theo S-box
3 XOR từng bit với giá trị tương ứng trong mảng R[i/4]
Số lượng phần tử trong mảng R là 10 và có giá trị được quy định như sau:
R[1] 01000000
R[2] 02000000
R[3] 04000000
R[4] 08000000
R[5] 10000000
R[6] 20000000
R[7] 40000000
R[8] 82000000
R[9] 1b000000
R[10] 36000000
2.2.2 AddRoundKey
Tại bước này, khóa con được kết hợp với các khối Khóa con trong mỗi chu trình được tạo ra từ khóa chính Mỗi khóa con có độ dài bằng 1 khối và được XOR lần lượt với các khối dữ liệu