1. Trang chủ
  2. » Tất cả

Bài tiểu luận tiêu chuẩn mật mã hóa tiên tiến aes

31 12 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

Tiêu đề Tiêu chuẩn mật mã hóa tiên tiến AES
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành An Toàn Mạng
Thể loại Bài tiểu luận
Định dạng
Số trang 31
Dung lượng 1,6 MB

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

Nội dung

Bốn giai đoạn khác nhau được sử dụng, một giai đoạn hoán vị và ba giai đoạn thay thế: ➢ Substitute bytes: Sử dụng S-box để thực hiện thay thế từng byte của khối đầu vào ➢ ShiftRows: Một

Trang 1

BÀI TIỂU LUẬN Tiêu chuẩn mật mã hóa tiên tiến AES

Trang 2

Tên Nhiệm vụ

1 Giới thiệu về Tiêu chuẩn mật

mã hóa tiên tiến AES

2 Cấu trúc AES

3 Các hàm biến đổi AES

3.1 SubBytes 3.2 ShiftRows 3.1 MixColumns 3.2 AddRoundKey

4 Tạo khóa AES

5 Thực hiện mật mã AES

6 Thực hiện Giải mã AES

Trang 3

MỤC LỤC

Danh mục Hình – Bảng 4

Lý do chọn đề tài 5

Mục đích và phạm vi của tiểu luận 6

Chương 1 Giới thiệu về Tiêu chuẩn mật mã hóa tiên tiến AES 7

Chương 2 Cấu trúc AES 8

2.1 Cấu trúc chung 8

2.2 Cấu trúc chi tiết 10

Chương 3 Các hàm biến đổi AES 13

3.1 SubBytes 13

3.2 ShiftRows 15

3.3 MixColumns 16

3.4 AddRoundKey 20

Chương 4 Tạo khóa AES 21

Chương 5 Thực hiện mật mã AES 23

5.1 SubBytes 23

5.2 ShiftRow 24

5.3 MixColumns 24

5.4 AddRoundKey 25

Chương 6 Thực hiện Giải mã AES 26

6.1 InvSubBytes() 26

6.2 InvShiftRows() 27

6.3 InvMixColumns() 27

6.4 Biến đổi nghịch AddRoundKey() 28

Kết luận 30

Tài liệu tham khảo 31

Trang 4

Danh mục Hình – Bảng

Hình 2.1: Cấu trúc chung của quá trình mã hóa AES 9

Hình 2.2: Khóa và khóa mở rộng 10

Hình 2.3 Mã hóa AES và giải mã AES 11

Hình 2.4 vòng mã hóa AES 12

Hình 3.1: Hàm SubBytes 13

Bảng 3.1: S-Box mật mã hóa 14

Bảng 3.2: S-Box giải mật mã 14

Hình 3.2: Chuyển đổi hàng 15

Hình 3.3: Ví dụ dịch vòng của hàm ShiftRows 15

Hình 3.4: Các biến đổi của hàng và cột AES 16

Hình 3.5: Biến đổi của AddRoundKey 20

Bảng 3.3: Bảng xác định RC[j] 22

Hình 3.6: khóa mở rộng AES 22

Hình 5.1: Sơ đồ chuyển đổi SubByte 24

Bảng 5.1: Bảng chuyển đổi S-box 24

Hình 5.2: Sơ đồ chuyển đổi shiftrow 24

Hình 5.3: Sơ đồ chuyển đổi MixColumns 25

Hình 5.4: Sơ đồ chuyển đổi AddRoundKey 25

Hình 6.1 : Sơ đồ chuyển đổi Inv SubByte 27

Hình 6.2: Bảng chuyển đổi S-box nghịch đảo 27

Hình 6.3: Sơ đồ chuyển đổi ShiftRow nghịch đảo 27

Hình 6.4: Sơ đồ chuyển đổi MixColumns nghịch đảo 28

Hình 6.5: Sơ đồ giải mã AES 29

Trang 5

Lý do chọn đề tài

Chúng ta đang sống trong thời đại của cuộc cách mạng Internet kết nối toàn cầu Mạng Internet đã mở ra những cơ hội vô cùng to lớn cho con người trong công cuộc hành trình tìm kiếm tri thức, nhưng đồng thời cũng phát sinh một vấn đề quan trọng hơn

đó là đảm bảo sự an toàn của người sử dụng trên không gian mạng công khai đó Việc mất cắp, rò rỉ thông tin mang lại những rủi ro lớn cho cá nhân và doanh nghiệp

Vì thế hầu hết tại các doanh nghiệp lớn đều có ít nhất một kỹ thuật viên phụ trách về an toàn thông tin, nó đảm bảo cho họ an tâm hoạt động và bảo vệ các bí mật của tổ chức Việc tìm hiểu và làm chủ được những công nghệ bảo mật phổ biến các kỹ thuật mã hóa, giải mã các thông điệp; nắm được cách xây dựng một hệ thống mạng an toàn là vô cùng quan trọng đối với các sinh viên khối các ngành Công nghệ thông tin, Viễn thông,

An toàn thông tin,… quan trọng không kém đó là xây dựng được những chuẩn chính sách An toàn thông tin để bảo vệ hệ thống Đó cũng là lý do chính để nhóm chúng tôi chọn đề tài “Tiêu chuẩn mật mã hóa tiên tiến AES”

Trang 6

Mục đích và phạm vi của tiểu luận

Mục đích của bài tiểu luận là tìm hiểu về cấu trúc và các kỹ thuật mã hóa, giải mã của tiêu chuẩn mật mã hóa tiên tiến AES

Phạm vi của bài tiểu luận bao gồm 6 chương:

Chương 1: Giới thiệu về Tiêu chuẩn mật mã hóa tiên tiến AES Chương này

giới thiệu khái quát về lịch sử và các ứng dụng của tiêu chuẩn mã hóa tiên tiến AEA đối với vấn đề bảo mật

Chương 2: Cấu trúc AES Chương này tìm hiểu về cấu trúc chung và chi tiết các

thành phần của AES

Chương 3 Các hàm biến đổi AES Chương này tìm chi tiết về 4 hàm chính của

một cấu trúc AES (SubBytes, ShiftRows, MixColumns, AddRoundKey)

Chương 4 Tạo khóa AES Chương này là quá trình tạo khóa mở rộng cho một

Trang 7

Chương 1 Giới thiệu về Tiêu chuẩn mật mã hóa tiên tiến AES

Tiêu chuẩn mã hóa nâng cao (AES) thuật toán là một trong những mã hóa mật mã khối thuật toán được xuất bản bởi National Institute tiêu chuẩn và công nghệ (NIST) vào năm 2000 Mục đích chính của thuật toán này là thay thế DES thuật toán sau khi xuất hiện một số khía cạnh dễ bị tổn thươ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 toàn thế giới để giới thiệu một thuật toán mật mã khối sáng tạo để mã hóa và giải mã dữ liệu với cấu trúc mạnh mẽ và phức tạp

Từ khắp nơi trên thế giới, nhiều nhóm đã gửi thuật toán của họ NIST đã chấp nhận năm các thuật toán để đánh giá Sau khi thực hiện nhiều tiêu chí và thông số bảo mật,

họ đã chọn một trong số 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 AES thuật toán là thuật toán Rijndel Tuy nhiên, điều này tên đã không trở thành một cái tên phổ biến cho điều này thay vào đó, thuật toán được công nhận là Nâng cao Thuật toán tiêu chuẩn mã hóa (AES) xung quanh thế giới

Trang 8

Chương 2 Cấu trúc AES

2.1 Cấu trúc chung

AES là một phép lặp thay vì mật mã Feistel Nó dựa trên hai kỹ thuật phổ biến để

mã hóa và giải mã các dữ liệu đã biết là thay thế và hoán vị hay mạng thay thế và hoán

vị (substitution-permutation network) 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ý 128bit (16 byte) như một kích thước khối văn 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 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 bit (16 byte), 192 (24 byte) hoặc 256 bit (32 byte) Mỗi vòng này yêu cầu một khóa vòng, nhưng vì chỉ một khóa được nhập vào thuật toán, khóa này cần được mở rộng để lấy các khóa cho mỗi vòng, bao gồm cả vòng 0

N-1 vòng đầu tiên bao gồm bốn chức năng chuyển đổi riêng biệt: SubBytes, ShiftRows, MixColumns và AddRoundKey Vòng cuối cùng chỉ chứa ba phép biến đổi

và có một phép biến đổi ban đầu (AddRoundKey) trước vòng đầu tiên, có thể được coi

là Vòng 0

Hình 2.1 cho thấy cấu trúc tổng thể của quá trình mã hóa AES Mật mã có kích thước khối bản rõ là 128 bit (16 byte) Đầu ra của mỗi vòng là ma trận 4 * 4, với đầu ra của vòng cuối cùng là bản mã

Trang 9

Hình 2.1: Cấu trúc chung của quá trình mã hóa AES

Trang 10

Ngoài ra, hàm mở rộng khóa tạo ra N + 1 khóa vòng, mỗi khóa là một ma trận 4 *

4 riêng biệt Mỗi khóa vòng đóng vai trò là một trong những đầu vào cho phép biến đổi AddRoundKey trong mỗi vòng

Hình 2.2: Khóa và khóa mở rộng

2.2 Cấu trúc chi tiết

Hình 2.3 mô tả chi tiết hơn về mật mã AES, chỉ ra trình tự biến đổi trong mỗi vòng

và hiển thị chức năng giải mã tương ứng, hiển thị quá trình mã hóa đang tiến hành xuống trang và quá trình giải mã lên trang

Trang 11

Hình 2.3 Mã hóa AES và giải mã AES

AES xử lý toàn bộ khối dữ liệu dưới dạng một ma trận duy nhất trong mỗi vòng bằng cách sử dụng thay thế và hoán vị

Bốn giai đoạn khác nhau được sử dụng, một giai đoạn hoán vị và ba giai đoạn thay thế:

➢ Substitute bytes: Sử dụng S-box để thực hiện thay thế từng byte của khối đầu vào

➢ ShiftRows: Một phép hoán vị đơn giản

➢ MixColumns: Một sự thay thế sử dụng số học trên GF

➢ AddRoundKey: Một XOR bitwise đơn giản của khối hiện tại với một phần

Trang 12

đoạn AddRoundKey, tiếp theo là chín vòng mà mỗi vòng bao gồm tất cả bốn giai đoạn, tiếp theo là vòng thứ mười gồm ba giai đoạn Hình 2.4 mô tả cấu trúc của một vòng mã hóa đầy đủ

Hình 2.4 vòng mã hóa AES

Mỗi giai đoạn có thể dễ dàng đảo ngược Đối với các giai đoạn Replace Byte, ShiftRows và MixColumns, một hàm nghịch đảo được sử dụng trong thuật toán giải mã Đối với giai đoạn AddRoundKey, nghịch đảo đạt được bằng cách XOR cùng một khóa tròn vào khối, sử dụng kết quả A Ⓧ B Ⓧ B = A

Trang 13

Chương 3 Các hàm biến đổi AES

3.1 SubBytes

Hàm biến đổi byte thay thế được gọi là SubBytes, là một bảng tra cứu đơn giản (Hình 3.1) SubBytes chia nhỏ đầu vào thành các byte và chuyển từng byte qua S-Box (một ma trận 16*16 các giá trị byte) AES sử dụng cùng một S-Box (Bảng 3.1) cho tất

cả các byte Để đọc Bảng này, đầu vào byte được chia thành hai nửa 4 bit Nửa đầu xác định hàng và nửa sau xác định cột Ví dụ, giá trị theo mã hexa “19” tương ứng với hàng

1 và cột 9 của S-box, chứa giá trị “d4” Như vậy, giá trị “19” được ánh xạ thành giá trị

“d4”

Hình 3.1: Hàm SubBytes

Trang 14

Bảng 3.1: S-Box mật mã hóa

Trang 15

3.2 ShiftRows

Bước tiếp theo sau SubByte thực hiện trên trạng thái là ShiftRow Ý tưởng chính

đằng sau bước này là chuyển các byte trạng thái theo chu kỳ sang trái trong mỗi hàng

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 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 đã thay đổi vị trí của các byte ở trạng thái như minh

họa trong Hình 3.2

Hình 3.2: Chuyển đổi hàng

Hình 3.3: Ví dụ dịch vòng của hàm ShiftRows

Trang 16

3.3 MixColumns

Hình 3.4: Các biến đổi của hàng và cột AES

Hàm MixColumns là thực hiện phép biến đổi cột hỗn hợp tiến và được thực hiện trên từng cột riêng lẻ Mỗi byte của một cột được ánh xạ thành một giá trị mới là một hàm của tất cả bốn byte trong cột đó Phép biến đổi được thực hiện bằng phép nhân ma trận sau giống như bảng trạng thái (Hình 3.4):

Mỗi phần tử trong ma trận kết quả là tổng của các tích hàng và cột Các phép cộng

và phép nhân đều được thực hiện trong GF (28) Sự chuyển đổi MixColumns trên một cột Trạng thái có thể được biểu thị bằng

Trang 17

Trong bước Mix Column, ta sẽ thực hiện việc nhân các cột của bảng kết quả với ma trận mặc định sau đây:

Ta thực hiện Mix Column với bảng sau:

Trang 18

10101000 𝑋𝑜𝑟

00011010

= 10110011 Sau đó chúng ta tiếp tục tính (𝑏𝑓 03)

Trong trường hợp số nhân là “03”, ta có:

00011011

= 01100101 Với (𝑏𝑓 01) = 𝑏𝑓 = 10111111

Trang 19

Từ đó:

𝑋1 = (𝐷4.02) 𝑥𝑜𝑟 (𝑏𝑓 03) 𝑥𝑜𝑟 (5𝑑 01)𝑥𝑜𝑟(30.01)

1011 0011 𝑋𝑜𝑟

1101 1010 𝑋𝑜𝑟

0101 1101 𝑋𝑜𝑟

0011 0000

𝑋1 = 0000 0100 = 04 Tiếp tục với đến hết ta có:

=

Sau khi thực hiện xong bước MixColumn, ta có kết quả:

=

Trang 20

Hình 3.5: Biến đổi của AddRoundKey

AddRoundKey là phép biến đổi khóa tròn bổ sung về phía trước.Thực hiện XOR

128 bit trạng thái được sau khi thực hiện Mix Column với 128 bit của khóa tròn Như trong Hình 3.5, thao tác này được xem như là thao tác theo chiều cột giữa 4 byte của cột Trạng thái và một từ của khóa tròn; nó cũng có thể được xem như là một hoạt động ở mức byte Sau đây là một ví dụ về AddRoundKey:

Ma trận đầu tiên là Trạng thái, và ma trận thứ hai là khóa tròn

Phép biến đổi phím tròn bổ sung nghịch đảo giống với phép biến đổi phím tròn bổ sung chuyển tiếp, vì phép toán XOR là phép nghịch đảo của chính nó

Trang 21

Chương 4 Tạo khóa AES

Thuật toán mở rộng khóa AES với đầu vào gồm 4 từ (16 byte) khóa và tạo ra được

1 bảng tuyến tính gồm 44 từ (176 byte) Đây là đủ để cung cấp cho giai đoạn AddRoundKey ban đầu và mỗi 10 vòng sau đó của các mật mã

Điều quan trọng là sao chép vào các 4 từ đầu tiên của khóa mở rộng Phần còn lại của khóa mở rộng được điền vào 4 từ cùng một lúc.Mỗi từ được thêm vào w[i] phụ thuộc vào từ đứng ngay trước nó, w[i-1] ,và vị trí của 4 từ được quay trở lại, w[i-4]

Ta có thuật toán tạo khóa mở rộng như sau:

Thuận toán tạo khóa AES và hàm phức g Hàm phức g gồm các hàm con dưới đây:

➢ RotWord: thực hiện dịch 1 byte xoay trong về bên trái tức là đưa byte đầu xuống cuối và dịch trái với những byte còn lại Ví dụ: [B0, B1, B2, B3] được chuyển thành [B1, B2, B3, B0]

➢ SubWord thực hiện một byte thay trên từng byte của nó từ đầu vào, sử dụng S-box giống như trong phần SubByte ở trên

➢ Các kết quả của bước 1 và 2 được XORed với một vòng liên tục, RCON [j] Hàm Rcon[j] cho mỗi vòng sẽ là khác nhau và được định nghĩa như sau:

Rcon[j]=(RC[j],0,0,0) với RC[j] được xác định như bảng dưới đây:

Trang 22

Bảng 3.3: Bảng xác định RC[j]

Hình 3.6: khóa mở rộng AES

Trang 23

Chương 5 Thực hiện mật mã AES

Giai đoạn mã hóa của AES có thể được chia thành ba giai đoạn: vòng đầu tiên, các vòng chính và vòng cuối cùng Tất cả các giai đoạn sử dụng các phép toán con giống nhau trong các kết hợp khác nhau như sau:

Quy trình mật mã được thực hiện qua các giai đoạn sau

Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ mã hóa

𝑁𝑟 – 1 chu kỳ giải mã bình thường : mỗi chu kì bao gồm bốn biến đổi liên tiếp nhau: 𝑆ℎ𝑖𝑓𝑡𝑅𝑜𝑤𝑠 , 𝑆𝑢𝑏𝐵𝑦𝑡𝑒𝑠, 𝐴𝑑𝑑𝑅𝑜𝑢𝑛𝑑𝐾𝑒𝑦, 𝑀𝑖𝑥𝐶𝑜𝑙𝑢𝑚𝑛𝑠

Thực hiện chu kỳ giải mã cuối cùng Trong chu kỳ này , thao tác MixColumns được bỏ qua

Trong vòng chính, mỗi vòng trong thuật toán bao gồm 4 bước

5.1 SubBytes

Giai đoạn SubBytes của AES liên quan đến việc chia nhỏ đầu vào thành các byte

và chuyển từng byte qua S-box

Trang 24

Hình 5.1: Sơ đồ chuyển đổi SubByte

Bảng 5.1: Bảng chuyển đổi S-box

5.2 ShiftRow

Ngoại trừ hàng đầu tiên còn các hàng phía dưới chúng ta sẽ dịch sang trái 1 hàng

Trang 25

Hình 5.3: Sơ đồ chuyển đổi MixColumns

Trình bày trực quan của hoạt động MixColumns được hiển thị ở trên Không giống như phép nhân ma trận tiêu chuẩn, MixColumns thực hiện phép nhân ma trận theo Trường Galois 2 8 Mặc dù chúng tôi sẽ không mô tả chi tiết bước này, nhưng điều quan trọng cần lưu ý là phép nhân này có thuộc tính hoạt động độc lập trên mỗi cột của

ma trận ban đầu, tức là cột đầu tiên khi được nhân với ma trận, tạo ra cột đầu tiên của

Trang 26

Chương 6 Thực hiện Giải mã AES

Để giải mã một bản mã được mã hóa AES, cần phải hoàn tác từng giai đoạn của hoạt động mã hóa theo thứ tự ngược lại mà chúng đã được áp dụng Ba giai đoạn giải

Quy trình giải mã được thực hiện qua các giai đoạn sau :

Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ giải mãi

Nr – 1 chu kỳ giải mã bình thường : mỗi chu kì bao gồm bốn biến đổi liên tiếp nhau: InvShifRows, InvSubBytes, AddRoundKey, InvMixColumns

Thực hiện chu kỳ giải mã cuối cùng Trong chu kỳ này , thao tác InvMixColumns được bỏ qua

Trang 27

Hình 6.1 : Sơ đồ chuyển đổi Inv SubByte

Hình 6.2: Bảng chuyển đổi S-box nghịch đảo

6.2 InvShiftRows()

Phép biến đổi InvShiftRows() là phép biến đổi ngược của ShiftRows() Các byte trong ba từ cuối của trạng thái được dịch vòng theo số byte khác nhau Ở hàng đầu tiên (r=0) không thực hiện phép chuyển dịch, ba hàng dưới cùng được dịch vòng Nb-shift(r,Nb) byte

Hình 6.3: Sơ đồ chuyển đổi ShiftRow nghịch đảo

6.3 InvMixColumns()

Phép biến đổi InvMixColumns() là phép biến đổi ngược của MixColumns() Nó thao tác theo từng cột của trạng thái, xem mỗi cột như một đa thức bốn hạng tử

Trang 28

Hình 6.4: Sơ đồ chuyển đổi MixColumns nghịch đảo

6.4 Biến đổi nghịch AddRoundKey()

Phép biến đổi AddRoundKey() là phép biến đổi thuận nghịch vì nó chỉ áp dụng một phép toán XOR nên nó được thực hiện như nhau ở cả phép mã hóa và phép giải mã

Ngoài các phép giải mã trên, thuật toán AES còn cho phép thực hiện một phép giải

mã tương đương có cùng thứ tự các phép biến đổi như trong phép mã hóa (các biến đổi được thay bằng các phép biến đổi ngược) Có thể thực hiện được điều này là nhờ một thay đổi trong lược đồ khóa Hai tính chất tạo nên một phép giải mã tương đương là: Tính giao hoán giữa hai phép biến đổi SubBytes() và ShiftRows() (tính chất này cũng đúng với phép nghịch đảo InvSubBytes() và InvShiftRows()), Các phép toán trộn cột MixColumns() và InvMixColumns() là tuyến tính đối với đầu vào cột Các tính chất này cho phép đảo ngược thứ tự của các phép biến đổi InvSubBytes() và InvShiftRows() Thứ

tự của các phép biến đổi AddRoundKey() và InvMixColumns() cũng có thể đảo ngược với điều kiện đảm bảo rằng các cột của lược đồ khóa giải mã được chỉnh sửa bằng cách

sử dụng phép biến đổi InvMixColumns()

Hai hàm InvMixColumns và AddRoundKey không làm thay đổi thứ tự các byte trong ma trận nên nó có thể thực hiện luôn cả 2 hàm trong cùng 1 thời điểm:

Để thấy điều này, giả sử rằng cột đầu tiên của State Si là dãy là dãy (𝑦 0, 𝑦 1, 𝑦 2, 𝑦 3) và cột đầu tiên của khóa tròn wj là (𝑘 0, 𝑘 1, 𝑘 2, 𝑘 3) Sau đó, ta được:

Ngày đăng: 26/02/2023, 17:41

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

w