Tải bản đầy đủ (.docx) (38 trang)

bài tập lớn môn cơ sở an toàn và bảo mật thông tin đề tài gửi nhận một file dữ liệu giữa hai máy sử dụng thuật toán aes bằng java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.77 MB, 38 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

HỌC VIỆN KỸ THUẬT MẬT MÃ

<b>KHOA CÔNG NGHỆ THÔNG TIN</b>

<b>BÁO CÁO BÀI TẬP LỚN</b>

<b>MÔN CƠ SỞ AN TỒN VÀ BẢO MẬT THƠNG TIN</b>

<i><b>Đề tài: Gửi, nhận một file dữ liệu giữa hai máy sử dụngthuật toán AES bằng Java</b></i>

<small> </small> Sinh viên thực hiện:

Trần Thị Kim Liên CT030429Cao Hoàng Huy CT030126

<b> Giảng viên hướng dẫn: TS. Nguyễn Đào Trường </b>

Khoa Công nghệ thông tin – Học viện Kỹ thuật mật mã

<b>Hà Nội, 2021</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>MỤC LỤC</b>

<i><b>L I NÓI Đ UỜI NÓI ĐẦUẦU ...1</b></i>

<i><b>L I C M NỜI NÓI ĐẦU ẢM ƠN ƠN ...2</b></i>

<i><b>DANH M C HÌNH NHỤC HÌNH ẢNHẢM ƠN...3</b></i>

<i><b>DANH M C B NG BI UỤC HÌNH ẢNHẢM ƠNỂU ...4</b></i>

<i><b>CHƯƠNNG 1: GI I THI U THU T TOÁN MÃ HĨA AESỚI THIỆU THUẬT TỐN MÃ HĨA AESỆU THUẬT TỐN MÃ HĨA AESẬT TỐN MÃ HĨA AES...5</b></i>

<b>1Gi i thi u t ng quátới thiệu tổng quátệu tổng quátổng quát...5</b>

1.1 Đ c đi m kĩ thu tặc điểm kĩ thuật ểm kĩ thuật ật ...6

1.2 Đ c t thu t toán AESặc điểm kĩ thuật ả thuật toán AES ật ...7

<b>2Xây d ng b ng S-boxựng bảng S-boxảng S-box...7</b>

2.1 B ng S-box thu nả thuật toán AES ật ...7

2.2 B ng S-box ngh ch đ oả thuật toán AES ịch đảo ả thuật toán AES ...9

<b>3M r ng khóa (ExpandKey)ở rộng khóa (ExpandKey) ộng khóa (ExpandKey)...10</b>

<i><b>CHƯƠNNG 2: QUÁ TRÌNH MÃ HĨA...12</b></i>

<b>1Phép bi n đ i AddRoundKeyến đổi AddRoundKeyổng quát...13</b>

<b>2Phép bi n đ i SubBytesến đổi AddRoundKeyổng quát...13</b>

<b>3Phép bi n đ i ShiftRowến đổi AddRoundKeyổng quát...14</b>

<b>4Phép bi n đ i MixColumnsến đổi AddRoundKeyổng quát...15</b>

<i><b>CHƯƠNNG 3: QUÁ TRÌNH GI I MÃẢM ƠN...17</b></i>

<b>1Phép bi n đ i InvSubBytes()ến đổi AddRoundKeyổng quát...18</b>

<b>2Phép bi n đ i InvShiftRowsến đổi AddRoundKeyổng quát...18</b>

<b>3Phép bi n đ i InvMixColumns()ến đổi AddRoundKeyổng quát...19</b>

<b>4Phép bi n đ i ngh ch AddRoundKey()ến đổi AddRoundKeyổng quátịch AddRoundKey()...20</b>

<i><b>CHƯƠNNG 4: ĐÁNH GIÁ THU T TỐN AESẬT TỐN MÃ HĨA AES...21</b></i>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>1Ưu điểmu đi mểm ...21</b>

<b>2Nhược điểmc đi mểm ...21</b>

<b>3Ứng dụngng d ngụng ...21</b>

<i><b>CHƯƠNNG 5: L P TRÌNH SOCKET TCP/IP TRONG JAVAẬT TỐN MÃ HĨA AES...22</b></i>

<b>1T ng quan v Socketổng quátề Socket...22</b>

<b>2L p trình TCP Socket v i Javaập trình TCP Socket với Javaới thiệu tổng quát...24</b>

<i><b>PH L CỤC HÌNH ẢNH ỤC HÌNH ẢNH ...26</b></i>

<i><b>K T LU NẾT LUẬNẬT TỐN MÃ HĨA AES ...27</b></i>

<i><b>TÀI LI U THAM KH OỆU THUẬT TỐN MÃ HĨA AESẢM ƠN ...28</b></i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>LỜI NÓI ĐẦU</b>

AES là viết tắt của Advanced Encryption Standard, chuẩn mã hóa dữ liệurất phổ biến, dùng cho nhiều mục đích và được cả chính phủ Mỹ sử dụng đểbảo vệ các dữ liệu tuyệt mật. AES là kiểu mã hóa đối xứng dạng khối, nghĩa làmỗi khối văn bản có một kích thước nhất định được mã hóa, khác với mã hóadạng chuỗi khi từng kí tự được mã hóa. Đối xứng nghĩa là khóa để mã hóa vàgiải mã đều là một. AES được phát triển từ cuối những năm 90s để thay thếchuẩn mã hóa trước đó là Data Encryption Standard (DES) do IBM tạo ra đầunhững năm 70s. Vào năm 1998, DES trở thành 3DES hay cịn gọi là TripleDES, dùng thuật tốn DES để truyền thông điệp 3 lần liên tiếp với 3 khóa mãhóa khác nhau. 3DES khiến dữ liệu an tồn hơn trước kiểu tấn cơng brute forcethời đó.

15 thuật tốn được đề xuất thay thế DES, bắt đầu quy trình 5 năm củachính phủ Mỹ. AES được hai nhà mật mã học là Vincent Rijmen và JoanDaemen đề xuất, sau được gọi là “đơn Rijindael”. AES là chuẩn mở vì khi đóchuẩn thực sự cũng chưa được xác định. Trong q trình thiết kế, nó cũng nhậnbình luận, góp ý. Nó được Viện tiêu chuẩn và kỹ thuật quốc gia Hoa Kỳ pháttriển với mục tiêu dễ dùng cho cả phần cứng và phần mềm. Một số thay đổi vềkhóa và khối được thực hiện để tăng tính an tồn.NSA cũng tham gia xem xét15 bản đề xuất. Tới tháng 8/1999 chỉ cịn 5 thuật tốn (Rijndael, Serpent, RC6,Twofish và MARS). Các “ứng viên” được phân tích thêm về độ bảo mật, tínhdễ sử dụng, bản quyền, tốc độ, độ chính xác khi mã hóa và giải mã.

Người chiến thắng sau cùng là Rijndael, sau đó được đưa lên cho chínhphủ Mỹ vào năm 2002 và cả NSA cùng các tổ chức khác. Đến giờ, AES vẫnđược dùng cho các tài liệu tuyệt mật, được cho là FIPS (Federal InformationProcessing Standard - tiêu chuẩn xử lý thông tin liên bang). Sau đó nó đượcdùng trong khối tư nhân, là chuẩn mã hóa phổ biến nhất với mã hóa khóa đốixứng.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>LỜI CẢM ƠN</b>

Nhóm chúng em xin chân thành cảm ơn các thầy cô Trường Học viện kỹthuật Mật Mã nói chung, q thầy cơ của khoa Cơng nghệ thơng tin nói riêng đãtận tình dạy bảo, truyền đạt kiến thức cho em trong suốt quá trình học.

Kính gửi đến Thầy Nguyễn Đào Trường lời cảm ơn chân thành và sâu sắc,cảm ơn thầy đã theo sát và chỉ dẫn nhóm em trong q trình thực hiện đề tài này.Trong q trình tìm hiểu nhóm chúng em xin cảm ơn các bạn cùng lớp đãgóp ý, giúp đỡ nhóm chúng em rất nhiều trong q trình tìm hiểu và làm đề tài.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH MỤC HÌNH Ả</b>

Hình 1. 1 Quy trình mã hóa và giải mã bằng AES...7

Hình 1. 2 Cơng thức tính giá trị bảng S-box thuận...9

Hình 1. 3 Bảng S-box thuận...9

Hình 1. 4 Cơng thức tính giá trị bảng S-box nghịch đảo...10

Hình 1. 5 Bảng S-box nghịch đảo...10

Hình 1. 6 Quy trình mở rộng khóa (ExpandKey)...11

Hình 1. 7 Mở rộng khóa với khóa 128 bit...12YHình 2. 1 Phép biến đổi AddRoundKey()...14

Hình 2. 2 Phép biến đổi SubBytes()...15

Hình 2. 3 Bảng S-box...15

Hình 2. 4 Phép biến đổi ShiftRows()...16

Hình 2. 5 Ma trận chuyển đổi sử dụng trong phép biến đổi MixColumns()...16

Hình 2. 6 Phép biến đổi MixColumns() 1Hình 3. 1 Quy trình giải mã...18

Hình 3. 2 Phép biến đổi InvSubBytes()...19

Hình 3. 3 Phép biến đổi InvShiftRows()...20

Hình 3. 4 Phép biến đổi InvMixColumns()...20

Hình 3. 5 Phép biến đổi nghịch AddRoundKey()2Hình 5. 1 Mơ hình OSI và TCP/IP...23

Hình 5. 2 Q trình gửi-nhận gói tin...244

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Hình 5. 3 Lập trình TCP Socket...25Hình 5. 4 Quá trình gửi-nhận tin giữa Client-Server...26

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>DANH MỤC BẢNG BIỂU</b>

Bảng 1. 1 Bảng tổ hợp khóa-khối-vịng...8

6

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 1: GIỚI THIỆU THUẬT TOÁN MÃ HÓA AES</b>

<b>1Giới thiệu tổng quát</b>

Tiêu chuẩn Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóatiên tiến là một thuật tốn tiêu chuẩn của chính phủ Hoa Kỳ nhằm mã hóa vàgiải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ (NationalInstitute Standards and Technology– NIST) phát hành ngày 26/11/2001 vàđược đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (FederalInformation Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trìnhphê duyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý cơng nghệthơng tin năm 1996 và Luật An tồn máy tính năm 1997.

AES là một thuật tốn “mã hóa khối” (block cipher) ban đầu được tạo rabởi hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen. Kể từkhi được công bố là một tiêu chuẩn, AES trở thành một trong những thuật tốnmã hóa phổ biến nhất sử dụng khóa mã đối xứng để mã hóa và giải mã (một sốđược giữ bí mật dùng cho quy trình mở rộng khóa nhằm tạo ra một tập cáckhóa vịng). Ở Việt Nam, thuật tốn AES đã được công bố thành tiêu chuẩnquốc gia TCVN 7816:2007 năm 2007 về Thuật tốn mã hóa dữ liệu AES.

AES làm việc với các khối dữ liệu 128bit và độ dài khóa 128bit, 192bithoặc 256bit. Các khóa mở rộng sử dụng trong chu trình được tạo ra bởi thủ tụcsinh khóa Rijndael.

Hầu hết các phép toán trong thuật toán AES đều thực hiện trong mộttrường hữu hạn của các byte. Mỗi khối dữ liệu đầu vào 128bit được chia thành16byte, có thể xếp thành 4 cột, mỗi cột 4 phần tử hay một ma trận 4x4 của cácbyte, nó gọi là ma trận trạng thái.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Tùy thuộc vào độ dài của khóa khi sử dụng 128bit, 192bit hay 256bit màthuật toán được thực hiện với số lần lặp khác nhau.

<i><b><small>1.1</small>Đặc điểm kĩ thuật</b></i>

AES là một thuật tốn mã hóa khối đối xứng với độ dài khóa là 128 bít(một chữ số nhị phân có giá trị 0 hoặc 1), 192 bít và 256 bít tương ứng dọi làAES-128, AES-192 và AES-256. AES-128 sử dụng 10 vòng (round), AES-192sử dụng 12 vịng và AES-256 sử dụng 14 vịng.

Vịng lặp chính của AES thực hiện các hàm sau: SubBytes(), ShiftRows(),MixColumns() và AddRoundKey(). Ba hàm đầu của một vòng AES được thiếtkế để ngăn chặn phân tích mã bằng phương thức “mập mờ“ (confusion) vàphương thức “khuếch tán“ (diffusion), còn hàm thứ tư mới thực sự được thiếtkế để mã hóa dữ liệu. Trong đó “khuếch tán“ có nghĩa là các kiểu mẫu trongbản rõ (Dữ liệu đầu vào của phép mã hóa hoặc dữ liệu đầu ra của phép giải mã)được phân tán trong các bản mã (Dữ liệu đầu ra của phép mã hóa hoặc dữ liệuđầu vào của phép giải mã), “mập mờ“ nghĩa là mối quan hệ giữa bản rõ và bảnmã bị che khuất. Một cách đơn giản hơn để xem thứ tự hàm AES là: Trộn từngbyte (SubBytes), trộn từng hàng (ShiftRows), trộn từng cột (MixColumns) vàmã hóa (AddRoundKey).

8

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i><b><small>Hình 1. 1 Quy trình mã hóa và giải mã bằng AES</small></b></i>

<i><b><small>1.2</small>Đặc tả thuật toán AES</b></i>

Đối với thuật toán AES, độ dài của khối đầu vào, khối đầu ra và trạng tháilà 128 bít, số các cột (các từ có độ dài 32 bít) tạo nên trạng thái là Nb = 4.

Trong thuật toán AES, độ dài khóa mã K có thể là 128, 192 hay 256 bít.Độ dài khóa được biểu diễn bằng Nk = 4, 6 hoặc 8 thể hiện số lượng các từ 32bít (số cột) của khóa mã.

Đối với thuật tốn AES, số vịng được thay đổi trong q trình thực hiệnthuật tốn phụ thuộc vào kích cỡ khóa. Số vòng này được ký hiệu là Nr. Nr =10 khi Nk = 4, Nr = 12 khi Nk = 6 và Nr = 14 khi Nk = 8.

Các tổ hợp khóa-khối-vịng phù hợp đối với tiêu chuẩn này thể hiện trongBảng 1. Việc thực hiện cụ thể thuật tốn có liên quan đến độ dài khóa, kích cỡkhối và số vịng.

<i><b><small>Bảng 1. 1 Bảng tổ hợp khóa-khối-vịng</small></b></i>

Dạng khóa Độ dài khóa (Nk từ) Độ dài khối (Nb từ) Số vịng (Nr)

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Cơng thức tính các giá trị bảng S-box và bảng S- box tương ứng:

10

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i><b><small>Hình 1. 3 Cơng thức tính giá trị bảng S-box thuận</small></b></i>

<i><b><small>2.2</small>Bảng S-box nghịch đảo</b></i>

S-box nghịch đảo chỉ đơn giản là S-box chạy ngược. Nó được tính bằngphép biến đổi affine nghịch đảo các giá trị đầu vào. Phép biến đổi affine nghịchđảo được biểu diễn như sau:

<i><b><small>Hình 1. 2 Bảng S-box thuận</small></b></i>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<i><b><small>Hình 1. 4 Cơng thức tính giá trị bảng S-box nghịch đảo</small></b></i>

<i><b><small>Hình 1. 5 Bảng S-box nghịch đảo</small></b></i>

<b>3 Mở rộng khóa (ExpandKey)</b>

ExpandKey là thao tác tạo lược đồ khóa hay mở rộng khóa, tạo ra Nr+1khóa vịng từ khóa chính K, mỗi khóa vịng gồm Nb từ 32 bit, trong đó đối vớiAES thì Nb = 4, cịn Nr được xác định theo các phép biến đổi để tạo khóa vịng

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

trong ExpandKey là khác nhau đối với các giá trị khác nhau của kích thướckhóa K.

<b>Q trình sinh khóa gồm 4 bước:</b>

 Rotword: quay trái 8 bít SubBytes

 Rcon: tính giá trị Rcon(i) Trong đó :

<small>Rcon(i) = x(i-1) mod (x8 + x4 + x3 + x + 1).</small> ShiftRow

<i><b><small>Hình 1. 6 Quy trình mở rộng khóa (ExpandKey)</small></b></i>

Sau đây là việc mở rộng khóa đối với khóa mã 128 bit

14

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i><b><small>Hình 1. 7 Mở rộng khóa với khóa 128 bit</small></b></i>

Trong thao tác mở rộng khóa với khóa mã 128 bit có đầu vào là 16 byte (4word) 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ỗivịng dùng 4 word. Từ bốn word đầu vào w0w1w2w3, trong lần lặp đầu tiênthao 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ùythuộc chiều dài khóa) sinh ra bốn word cuối cùng w40w41w42w43 như hìnhvẽ

<b>Mục đích của ExpandKey: dùng để chống lại known-plaintext attack</b>

 Biết một số bit của khóa hay khóa con cũng khơng thể tính các bitcị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ạicá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 bitcủa các khóa con.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>CHƯƠNG 2: Q TRÌNH MÃ HĨA</b>

Tại thời điểm bắt đầu phép mã hóa, đầu vào được sao chép vào mảngtrạng thái sử dụng các quy ước. Sau phép cộng khóa vịng khởi đầu, mảngtrạng thái được biến đổi bẳng cách thực hiện một hàm vòng liên tiếp với sốvòng lặp là 10, 12 hoặc 14 (tương ứng với độ dài khóa), vịng cuối cùng khácbiệt khơng đáng kể với Nr-1 vịng đầu tiên. Trạng thái cuối cùng được chuyểnthành đầu ra. Hàm vịng được tham số hóa bằng cách sử dụng một lược đồkhóa – mảng một chiều chứa các từ 4 byte nhận từ phép mở rộng khóa.

Phép biến đổi cụ thể gồm SubBytes(), ShiftRows(), MixColumns() vàAddRoundKey() dùng để xử lý trạng thái.

<b>Mơ tả q trình mã hóa:</b>

2. ShiftRows — dịch chuyển, các hàng trong trạng thái được dịchvòng theo số bước khác nhau.

3. MixColumns — quá trình trộn làm việc theo các cột trong khốitheo một phép biến đổi tuyến tính.

4. AddRoundKeyIII. Vịng lặp cuối:

1. SubBytes2. ShiftRows3. AddRoundKey

16

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Tại chu trình cuối thì bước MixColumns khơng thực hiện

<b>1Phép biến đổi AddRoundKey</b>

<i><b><small>Hình 2. 1 Phép biến đổi AddRoundKey()</small></b></i>

<b>2Phép biến đổi SubBytes</b>

Biến đổi SubBytes() thay thế mỗi byte riêng rẽ của state Sr,c bằng một giátrị mới S’ r,c sử dụng bảng thay thế (S - box) được xây dựng ở trên.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i><b><small>Hình 2. 2 Phép biến đổi SubBytes()</small></b></i>

<i><b><small>Hình 2. 3 Bảng S-box</small></b></i>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>3Phép biến đổi ShiftRow</b>

<small></small> Trong biến đổi ShiftRows(), các byte trong ba hàng cuối cùng của trạng thái được dịch vòng đi các số byte khác nhau (độ lệch). Cụ thể :

<small>S’r,c = Sr,(c + shift ( r, Nb)) mod Nb (Nb = 4)</small>

<small></small> Trong đó giá trị dịch shift (r, Nb) phụ thuộc vào số hàng r như sau:

<small>Shift(1,4) = 1, shift(2,4) = 2, shift(3,4) = 3.</small>

<small></small> Hàng đầu tiên khơng bị dịch, ba hàng cịn lại bị dịch tương ứng:

<small>o</small> Hàng thứ 1 giữ nguyên.

<small>o</small> Hàng thứ 2 dịch vòng trái 1 lần.

<small>o</small> Hàng thứ 3 dịch vòng trái 2 lần.

<small>o</small> Hàng thứ 4 dịch vòng trái 3 lần.

<i><b><small>Hình 2. 4 Phép biến đổi ShiftRows()</small></b></i>

<b>4Phép biến đổi MixColumns</b>

 Biến đổi MixColumns() tính tốn trên từng cột của state. Các cột được coi như là đa thức trong trường GF(28) và nhân với một đa thức a(x) với:

<small>a(x) = (03)x^3 +(01)x^2 +(01)x + (02)</small>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

 Biến đổi này có thể được trình bày như phép nhân một ma trận, mà mỗi byteđược hiểu như là một phần tử trong trường GF(28): <small>s’(x) = a(x)  s(x):</small>

 Mơ tả bằng ma trận như sau :

<i><b><small>Hình 2. 5 Ma trận chuyển đổi sử dụng trong phép biến đổi MixColumns()</small></b></i>

<i><b><small>Hình 2. 6 Phép biến đổi MixColumns()</small></b></i>

20

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>CHƯƠNG 3: Q TRÌNH GIẢI MÃ</b>

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 q trình mã hóa. Nó giúp khơi phụclạ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ứcnăng AddRoundKey, InvSubBytes, InvShiftRows hoặc InvMixColumns để tạora 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 q trình mã hóa. Tuy nhiên, thứtự sử dụng các khóa vịng trong q trình giải mã ngược với q trình mã hóa

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i><b><small>Hình 3. 1 Quy trình giải mã</small></b></i>

22

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>1Phép biến đổi InvSubBytes()</b>

Phép biến đổi InvSubBytes() là nghịch đảo của phép thay thế theo byte SubBytes(), trong đó sử dụng một S-box nghịch đảo áp dụng cho mỗi byte của trạng thái.

<i><b><small>Hình 3. 2 Phép biến đổi InvSubBytes()</small></b></i>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>2Phép biến đổi InvShiftRows</b>

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ácnhau. Ở hàng đầu tiên (r=0) không thực hiện phép chuyển dịch, ba hàng dướicùng được dịch vịng Nb-shift(r,Nb) byte.

<i><b><small>Hình 3. 3 Phép biến đổi InvShiftRows()</small></b></i>

<b>3Phép biến đổi InvMixColumns()</b>

Phép biến đổi InvMixColumns() là phép biến đổi ngược củaMixColumns(). 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ử.

24

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i><b><small>Hình 3. 4 Phép biến đổi InvMixColumns()</small></b></i>

<b>4Phép biến đổi nghịch AddRoundKey()</b>

Phép biến đổi AddRoundKey() là phép biến đổi thuận nghịch vì nó chỉ ápdụng một phép tốn XOR nên nó được thực hiện như nhau ở cả phép mã hóavà phép giải mã.InvMixColumns của q trình giả mã là đảo của MixColumnstrong q trình mã hóa.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<i><b><small>Hình 3. 5 Phép biến đổi nghịch AddRoundKey()</small></b></i>

26

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>CHƯƠNG 4: ĐÁNH GIÁ THUẬT TOÁN AES</b>

- Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, vàchỉ yêu cầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mãhóa những thiết bị cầm tay nhỏ như ổ USB Flash, ổ đĩa CD,…

- Sử dụng như một hàm băm

- Xây dựng các hàm băm. Hàm băm Whilrpool là một ví dụ điển hình

</div>

×