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

an toàn và bảo mật httt nhóm 03 đề tài tìm hiểu về giải thuật mã hóa khóa bí mật aes

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 (2.07 MB, 26 trang )

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

<b>HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG</b>

<i><small>Hà Nội – 2024</small></i>

<small>I.Giới thiệu...3II.Quy trình mã hóa AES...4</small>

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

<small>IV.Đánh giá giải thuật AES...23</small>

<small>V.Các dạng tấn công và cách phòng chống...24</small>

<small>1.Các dạng tấn công...24</small>

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

<b>I. Giới thiệu</b>

Tiêu chuẩn Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiêntiế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ỳ (National InstituteStandards 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 (Federal Information ProcessingStandard – FIPS 197) sau quá trình kéo dài 5 năm trình phê duyệt, AES tuân theomục 5131 trong Luật Cải cách quản lý công nghệ thông tin năm 1996 và Luật Antồ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 ra bởihai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen. Kể từ khi đượccông bố là một tiêu chuẩn, AES trở thành một trong những thuật toán mã 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ác khóa vịng). Ở ViệtNam, thuật toán AES đã được công bố thành tiêu chuẩn quốc gia TCVN7816:2007 năm 2007 về Thuật tốn mã hóa dữ liệu AES.

AES là phương pháp mã hoá theo khối, với khối dữ liệu vào có kích thước 128bit và khố bí mật với kích thước có thể là 128, 192, hoặc 256 bit (là bội của 32 vàlớn nhất là 256 bit). AES được thiết kế dựa trên mạng hoán vị-thay thế(Substitution-permutation network) và nó có thể cho tốc độ thực thi cao khi cài đặttrên cả phần cứng và phần mềm. Đặc biệt, giải thuật AES đã được tích hợp vàocác bộ vi xử lý gần đây của hãng Intel dưới dạng tập lệnh AES-NI, giúp tăng đángkể tốc độ thực thi các thao tác mã hoá và giải mã dựa trên AES.

AES vận hành dựa trên một ma trận vuông 4x4, được gọi là state (trạng thái).Ma trận này gồm 16 phần tử, mỗi phần tử là 1 byte dữ liệu. State được khởi trị làkhối 128 bit bản rõ và qua quá trình biến đổi sẽ chứa khối 128 bit bản mã ở đầu ra.Như đã đề cập, AES hỗ trợ 3 kích thước khố và kích thước của khố quyết định

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

số vòng lặp cần thực hiện để chuyển đổi bản rõ thành bản mã. Số vòng lặp AEScần thực hiện theo kích thước khố như sau:

 10 vịng lặp với khố 128 bit; 12 vịng lặp với khố 192 bit; 14 vịng lặp với khố 256 bit.

Mỗi vịng bao gồm một số bước xử lý, trong đó có một bước phụ thuộc vào chínhkhố mã hố. Một tập hợp các vòng đảo ngược được áp dụng để biến đổi bản mãtrở lại bản rõ ban đầu bằng cách sử dụng cùng một khố mã hố.

<b>II. Quy trình mã hóa AES</b>

Bước 3: Các vịng lặp chính (Rounds): Có 4 hàm biến đổi dữ liệu được thực hiện trong mỗi vòng, bao gồm:

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

+ SubBytes: Hàm thay thế phi tuyến tính, trong đó mỗi byte trong state được thaythế bằng một byte khác sử dụng bảng tham chiếu S-box.

+ ShiftRows: Hàm đổi chỗ, trong đó mỗi dịng trong state được dịch một số bước theo chu kỳ.

+ MixColumns: Trộn các cột trong state, kết hợp 4 bytes trong mỗi cột.+ AddRoundkey

Bước 4: Vòng cuối (Final Round): Tương tự các vịng lặp chính, nhưng chỉ thực hiện 3 hàm biến đổi dữ liệu, bao gồm:

+ SubBytes+ ShiftRows+ AddRoundkey

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

<i><b>2. Chi tiết</b></i>

2.1.Mở rộng khóa (Sinh khóa phụ)

<i>2.1.1. Các bước sinh khoá phụ:</i>

B1: Rotword: quay trái 8 bit

B2: Subbytes: đối chiếu trong bảng Sbox B3: Rcon: tính Rcon(i) trong đó

Rcon(i) = x(i-1) mod (<i><small>x</small></i><sup>8</sup><small>+</small><i><small>x</small></i><sup>4</sup><small>+</small><i><small>x</small></i><sup>2</sup><small>+</small><i><small>x +1</small></i>)B4: Shiftrow

Lặp 10 vịng thì sinh ra 10 khố con đối với khố đầu vào là 128, 12 vịng đối với khố đầu vào là 192, 14 vịng đối với khố đầu vào 256

<i>2.1.2. Rotword</i>

Thực hiện hốn vị vịng một doubleword và trả kết quả về một doubleword

VD: Rotword (3c4fcf09) = 4fcf093c3c

<small>Khoá chính (Đầu vào)</small>

<small>Khố vịng (Đầu ra)</small>

<small>10 Khố vòng</small>

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

cf093c

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

<i>2.1.6. Ví dụ thực hiện sinh khoá:</i>

Thực hiện Rotword W(i-1)

Tham chiếu trên bảng S-box

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

W[i-1] XOR với Rcon[1] và W[i-4] thì ta được W[i]

W[i-4] XOR với W[i-1] ta vừa tính ở trên ta được W[i] tiếp theo và làm tiếp tục 2 lần nữa

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

Và ta thu được Round key 1 chưa Shifrow

Sau khi shifrow ta được Round key 1a0 88 23 2a

a3 6c fa3

17 b1 39

Tương tự ta thu được 10 Round key

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

Ví dụ:

<i>2.2.3. Hàm MixColumns</i>

Mỗi cột trong ma trận state được nhân với một đa thức c(x) = 3x<small>3</small> + x<small>2</small> + x + 2

1033 ].

Ta có thể biểu diễn kết quả 1 cột sau khi nhân như sau [CITATION Wik24 \l1033 ]:

<small>ShiftRows</small>

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

Ví dụ với ma trận sau:

- Để biến đổi cột đầu tiên, ta thực hiện như sau:

- Các phần tử của kết quả của phép nhân ma trận trên là:

= 1011 0011+ Tương tự:

{03}*{bf} = 1101 1010{01}*{5d} = 0101 1101{01}*{30} = 0011 0000

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

+ Thực hiện tính b0 bằng phép XOR:1 0 1 1 0 0 1 1

1 1 0 1 1 0 1 00 1 0 1 1 1 0 10 0 1 1 0 0 0 00 0 0 0 0 1 0 0

 b<small>0</small> = 0000 0100<small>2</small> = 04<small>16</small>

- Tương tự: b<small>1</small> = 66<small>16</small>

b<small>2</small> = 81<small>16</small>

b<small>3</small> = e5<small>16</small>

- Sau khi biến đổi cột đầu tiên ta được:

- Tương tự với các cột cịn lại ta có kết quả là:

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

Trong quá trình giải mã, ma trận ciphertext sẽ bị biến đổi bởi các hàm

<b>AddRoundKey, InvSubBytes, InvShiftRows và InvMixColumns để tạo ra các dữ </b>

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

<b>năng KeyExpansion như trong q trình mã hóa. Tuy nhiên, thứ tự sử dụng các khóa</b>

vịng trong q trình giải mã ngược với q 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.

<i><b>3. Các bước giải mã </b></i>

<small>AddRoundKey</small>

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

<b>Quá trình giải mã được thực hiện qua 4 hàm cơ bản là AddRoundKey, </b>

<b>InvSubBytes, InvShiftRows, InvMixColumns.</b>

Bước 1. Bước khởi tạo: Dữ liệu cần được mã hóa cipher_text kết hợp với khóa vịng thứ 10, round_key_10 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.

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.

<i><b>4. Ví dụ chi tiết</b></i>

Giả sử chuỗi dữ liệu cần giải mã cipher_text[127:0] và khóa vịng cuối cùng lấy từ q 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

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

Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte.

4.3.Hàm InvSubBytes

Nhiệm vụ của InvSubBytes là thực hiện thay thế từng byte của ma trận trạng thái, bằng một giá trị đã quy định trong chuẩn AES. Bảng quy định giá trị thay thế cho InvSubBytes gọi là S-box đảo (Inverse S-box).

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

Ví dụ, byte cần thay thế là Ha7 thì dị ở hàng “a” và cột 7 trong bảng S-box dảo sẽ được kết quả là H89

4.4.Hàm InvMixColumns

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

InvMixColumns của quá trình giả mã là đảo của MixColumns trong q trình mã hóa. Từng cột của ma trận trạng thái sẽ được nhân với ma trận chuyển đổi sau đây.

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

Tương tự với cách nhân của phần mã hóa, ta được một ma trận mới

<b>IV. Đánh giá giải thuật AES </b>

Kể từ khi được cơng nhận là giải thuật mã hóa tiên tiến, AES ngày càng đượcxã hội chấp nhận. Ban đầu AES chỉ được sử dụng để mã hóa các dữ liệu nhạycảm. Về sau này, người ta đã dùng nó để mã hóa các thơng tin bí mật. Giải thuậtAES-192/256 được sử dụng để bảo vệ các thông tin mật và tối mật. Nó được đưavào các tiêu chuẩn ISO, IETF, IEEE. Cho đến nay, hàng trăm sản phẩm ứng dụngdựa theo tiêu chuẩn mã hóa AES đã được NIST cấp chứng chỉ. Ở Việt Nam,Thông tư số 01/2011/TT-BTTTT ban hành ngày 04 tháng 01 năm 2011 của Bộthông tin truyền thông đã khuyến nghị sử dụng AES là giải thuật mã hóa sử dụngcho các thơng tin, văn bản trong các cơ quan Nhà nước.

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

<i>Ưu điểm của AES: </i>

Kỳ tun bố là có độ an tồn cao, được sử dụng làm tiêu chuẩn mã hóamới thay thế cho tiêu chuẩn DES đã lỗi thời. AES được sử dụng để mãhóa các thơng tin mật đến tuyệt mật.

 AES có cấu trúc đơn giản, rõ ràng và có mơ tả tốn học rất đơn giản.

<i>Nhược điểm của AES:</i>

cơng kênh bên” thì nó chưa thực sự an tồn.

dẫn tới một số mối nguy hiểm trong tương lai.

Giải thuật AES thực hiện hiệu quả cả bằng phần mềm và phần cứng. Thôngthường với những ứng dụng không yêu cầu cao về hiệu năng và tốc độ thì AESđược thực hiện ở dạng phần mềm. Với việc thực hiện trên phần mềm, thuật tốnAES có thể được viết bằng nhiều ngơn ngữ lập trình phổ biến hiện nay như C/C++, VB.NET, Java, C#... và có thể vận hành trên nhiều hệ điều hành như Windows,Linux… Khi thực hiện trên phần cứng, thuật tốn AES hỗ trợ thực hiện trên haidịng thiết bị: dòng thiết bị thứ nhất dựa vào một hệ vi xử lý phụ kết hợp với hệ vixử lý của máy tính, dịng thiết bị thứ hai thường được thiết kế ở dạng thẻ thôngminh hoặc các thiết bị giao tiếp thông qua cổng USB.

<b>V. Các dạng tấn công và cách phòng chống</b>

<i><b>1. Các dạng tấn công</b></i>

<i>Side-channel attack (tấn công kênh bên):</i>

Side Channels (Kênh bên) là các kênh đầu ra không mong muốn từ một hệ thống.Tấn công kênh bên (hay cịn gọi là tấn cơng kênh kề) là loại tấn công dễ thực hiệntrong các loại tấn cơng mạnh chống lại q trình triển khai mã hóa, và mục tiêu củaloại tấn cơng này là phân tích các nguyên tố, các giao thức, modul, và các thiết bịtrong mỗi hệ thống.

Phân loại :

- Tấn công thời gian:

o Kẻ tấn công đo thời gian thực hiện các hoạt động mật mã để suy rathơng tin về khóa bí mật hoặc dữ liệu được mã hóa.

o Ví dụ: Kẻ tấn cơng có thể đo thời gian cần thiết để giải mã một đoạn vănbản bằng các khóa khác nhau để tìm ra khóa chính xác.

- Tấn cơng dựa vào lỗi:

o Kẻ tấn công cố ý gây lỗi cho thiết bị điện tốn để thu thập thơng tin vềkhóa bí mật hoặc dữ liệu được mã hóa.

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

o Ví dụ: Kẻ tấn cơng có thể gây lỗi cho một chip xử lý để buộc nó tiết lộthơng tin về khóa bí mật.

- Tấn cơng phân tích năng lượng:

o Kẻ tấn công đo mức tiêu thụ điện năng của thiết bị điện tốn trong qtrình thực hiện các hoạt động mật mã để suy ra thông tin về khóa bí mậthoặc dữ liệu được mã hóa.

o Ví dụ: Kẻ tấn cơng có thể đo mức tiêu thụ điện năng của một chip xử lýđể phân biệt giữa các thao tác mã hóa với các thao tác khác.

- Tấn cơng phân tích điện từ:

o Kẻ tấn cơng thu thập các tín hiệu điện từ được phát ra từ thiết bị điệntốn trong q trình thực hiện các hoạt động mật mã để suy ra thơng tinvề khóa bí mật hoặc dữ liệu được mã hóa.

o Ví dụ: Kẻ tấn cơng có thể thu thập tín hiệu điện từ từ một card smartcardđể suy ra thơng tin về khóa bí mật được lưu trữ trên card.

<i><b>5. Cách phòng chống:</b></i>

<i> Phương pháp 1: Mã hóa cực mạnh</i>

- Sử dụng các biện pháp để tăng tính bảo mật của thuật tốn mã hóa AES:o Sử dụng khóa dài

o Cần bảo vệ khóa bí mật cẩn thận, tránh tiết lộ cho bất kỳ ai

o Sử dụng các kỹ thuật chống tấn công kênh bên: che chắn phần cứng,cân bằng tiêu thụ điện năng, sử dụng thuật tốn mã hóa chống SCA

<i> Phương pháp 2: Bảo vệ dữ liệu theo phương pháp vật lý </i>

- Nếu một kẻ tấn công không thể tiếp cận vật lý với dữ liệu, dĩ nhiên khả năngđánh cắp khóa mã hóa sẽ khó khăn hơn. Vì vậy, trước những cuộc tấn cơng qua âmthanh tiềm tàng, bạn có thể sử dụng các giải pháp bảo vệ vật lý như đặt laptop vàocác hộp cách ly âm thanh, không để ai lại gần máy tính khi đang giải mã dữ liệu hoặcsử dụng các nguồn âm thanh băng rộng tần số đủ cao để gây nhiễu.

<i>Phương pháp 3: Kết hợp cả 2 cách trên</i>

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

<b>VI. Demo mã hóa và giải mã AES</b>

<b>VII. Kết luận</b>

Bảo mật thông tin là một vấn đề lớn được quan tâm khơng chỉ trong lĩnh vực qn sự mà cịn trong lĩnh vực kinh doanh cũng như giữ bí mật các thông tin cá nhân. Với

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

sự phát triển mạnh mẽ về khoa học công nghệ và các hệ thống khơng dây thì vấn đề bảo mật ngày càng được chú trọng và phát triển. Bảo đảm bí mật thơng tin trở thành một vấn đề khơng thể thiếu khi nói đến giao dịch trên Internet.

Đối với người nghiên cứu về bảo mật thì quá trình chứng thực và trao đổi khóa trong mạng là vơ cùng quan trọng. Thơng qua tìm hiểu cấu trúc khung của các bản tingiúp cho người làm bảo mật có thể phát hiện các tấn cơng từ bên ngồi hay là các sự cố xảy ra trong mạng. Từ đó có thể đảm bảo cho hệ thống an toàn hơn.

Với các ưu điểm nổi bật, tiêu chuẩn mã hóa tiên tiến (AES) đã chứng tỏ đây chính là một tiêu chuẩn đáp ứng được các yêu cầu mật mã dữ liệu của thời đại mới. Việc tấn công để phá thuật toán này chỉ được các nhà khoa học đưa ra trên lý thuyết và đang còn nhiều vấn đề gây tranh cãi. Tuy hiện nay thuật toán AES được coi là an toàn nhưng với sự phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin và viễn thơng như hiện nay thì khơng có một thuật tốn nào đảm bảo an tồn trong tương lai.Vì vậy vấn đề bảo mật còn rất nhiều điều cần phải tìm hiểu.

Tài liệu tham khảo

<small>[1] H. X. Dậu, An toàn và bảo mật hệ thống thông tin, Hà Nội, 2021. [2] Wikipedia, “Rijndael S-box,” 5 7 2023. [Trực tuyến]. Available: </small>

<small> [Đã truy cập 22 3 2024].[3] Wikipedia, “Rijndael MixColumns,” 6 2 2024. [Trực tuyến]. Available: </small>

<small> [Đã truy cập 22 3 2024].</small>

</div>

×