iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Security

學密碼學也猜不到你的手機密碼系列 第 9

DAY 9- 《區塊密碼2》AES(1)- 加密過程

"AES, ACE, ASS, AIDS(喂)"
---
現今最廣泛使用的對稱式密碼 AES (Advanced Encryption Standard),由美國的 NIST 在2001年制定為標準。
目前還沒有人把他打下來。

AES 在選中之前不叫做 AES ,而是設計者自行決定名稱,投稿參選。
現今使用的這個 AES 原始名稱是Rijndael,由J. Daemen 和 V. Rijmen 所設計。
其他參選者有Twofish, Serpent 等等。不過最後是由 Rijndael 拿下了這場選拔。

加密過程

AES 是一個128位元的區塊加密演算法,密鑰長度可以是128, 192, 256位元。
所以會寫作AES-128、AES-192、AES-256
加密的過程有4個步驟,重複執行10, 12, 14回合(根據密鑰長度決定)。
加密過程如下圖。

一開始要先將資料處理一下,排列成4×4的表示方法。
我們要將128位元的資料分成16個位元組(bytes),再將每個位元組用16進位表示。

1. SubBytes

利用下面的S-box中的每一格代換掉。
這個S-box是經過設計的,能提供非線性的變換。

2.ShiftRows

即是將第一列不動,第二列向左旋轉一格,
第三列旋轉兩格,第四列旋轉三格。

3.MixColumn

將每一行看做一個向量和另一個固定的4×4的矩陣相乘。
矩陣相乘中的加法使用XOR,
乘法使用https://chart.googleapis.com/chart?cht=tx&chl=GF(2%5E8)中的乘法,這個就...看看就好(超不負責任)。
總之你還是會得到四格就對了。

如果你真的對這個乘法很有興趣的話,你可以看一下這個印度人。
然後當你發現他用十分鐘解完16格裡面的1格的時候...嗯。
有興趣的話可以去找找有限體裡的乘法。
重點是,不管如何計算,加減乘除,這些數字永遠會落在https://chart.googleapis.com/chart?cht=tx&chl=2%5E%7B8%7D 之內。

4.AddRoundKey

最後一步就是將你有的所有東西跟回合密鑰做XOR就完成了。

以上就是AES裡面最主要的4個步驟。
我們再從頭來過一次。

一開始我們有128位元的資料。
先將這些分成16個byte,再用16進位表示,放到4×4的格子裡。
接著先把他們和原始密鑰做XOR一次。
再來進入10個回合(假設密鑰長度128)的SubBytes,ShiftRows,MixColumns,AddRoundKey
注意到第十回合時不必做 MixColumns 的動作。

跟DES一樣,我們明天再來說如何製造回合密鑰,
以及AES的安全性。

圖片來源:
https://www.sciencedirect.com/topics/computer-science/advanced-encryption-standard
https://towardsdatascience.com/aes-encryption-256-bit-a9ae49cde0b6
https://slideplayer.com/slide/250044/
https://www.meme-arsenal.com/en/create/meme/1834508

參考資料:
https://www.youtube.com/watch?v=O4xNJsjtN6E


上一篇
DAY 8- 《區塊密碼1》DES(2)- 密鑰生成及安全性
下一篇
DAY 10-《區塊密碼2》AES(2)-密鑰排程及安全性
系列文
學密碼學也猜不到你的手機密碼30

尚未有邦友留言

立即登入留言