1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến AES

28 62 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 1,89 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

HỌ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 2

MỤ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 3

Bả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 4

Danh 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 5

Danh 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 6

MỞ ĐẦ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 7

I 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 8

toà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 10

Hì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 11

Hì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 12

4.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 13

Hì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 14

Hì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 15

V 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 16

Hì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 17

5.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

Ngày đăng: 16/08/2021, 17:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w