iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Security

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

DAY 10-《區塊密碼2》AES(2)-密鑰排程及安全性

"AE、AES、AED、AEIOU。"
---

密鑰排程 key schedule

以128位元的key做範例:
假設我們進行AES-128,那麼中間將經過11個AddRoundKey的過程,
也就是說,我們需要11把子密鑰。(其中第一把即是原始密鑰)
所以實際上我們要再生出10把回合密鑰。

還記得我們把128位元的明文排成什麼樣子嗎?
在這裡我們一樣要把128位元的密鑰排成那個樣子。

可以看到下圖左上角的矩陣,那個就是原始密鑰,
接著看到這個矩陣下面有四個箭頭,他的意思是說,我們令第一排的四個數字,
總共8×4 = 32位元為1個w(word)。
而128位元的key就是4個word。

以下的每一個操作都是以word為單位。

可以看到w4的建立過程比較繁瑣,而接下來所有 w(4n) 的建立都會經過此步驟。
最後一個word,也就是w3(w(4n-1))會先經過 g 函數。
g 函數的內容是:
要先向上旋轉一格,接著每一格都經過S-Box轉換後,最左邊的byte要和回合係數(RC)做XOR,
最後跟w0(w(4n-4))做XOR後得到的結果成為w4。

w5跟其他非 w(4n) 的word的建立就簡單許多,
只要將上一個 w(t-1) 和 w(t-3) 做XOR即得到 w(t)。

如此一直下去可以製造很多個子密鑰,
不過我們只需要前43個word就夠了(如果是128位元密鑰的話)。
如此一來我們就可以製造足夠多的子密鑰來使用。

安全性

暴力攻擊

AES的密鑰相較於DES長了許多,其最短的密鑰也有128位元,
因此使用暴力搜索需要搜尋https://chart.googleapis.com/chart?cht=tx&chl=2%5E%7B128%7D 種密鑰可能,最多需要https://chart.googleapis.com/chart?cht=tx&chl=2%5E%7B256%7D 種。

如果對https://chart.googleapis.com/chart?cht=tx&chl=2%5E%7B256%7D 沒有概念的話,大概是1後面77個0。
因此是無法暴力破解的。

分析攻擊

沒有有效的分析攻擊。

旁通道攻擊(side-channel attack)

旁通道攻擊是對實務上物理性質的攻擊,比如從聲音、時間、電力消耗取得資訊。
打個比方,當你要用電腦將演算法實現,那這台電腦就成了旁通道攻擊的對象。
我們知道電腦在處理0和1的時候消耗的電量是不一樣的,

那假設你有一台示波器可以知道你電腦隨時的耗電量,那就可以經由波型看出密鑰
(大概是這樣啦)

那也就是為什麼不要使用自己寫的加密程式,因為我們不知道怎麼寫能夠抵禦旁通道攻擊的演算法。
所以如果是經過設計的演算法,能夠抵禦旁通道攻擊,那麼 AES 目前還算安全。

(我找不到 AES 的 meme 啦)

圖片來源:
https://www.brainkart.com/article/AES-Key-Expansion_8410/
http://memegenerator.net/instance/25289451/high-expectations-asian-father-encrypted-using-des-why-not-aes

參考資料:
https://www.diva-portal.org/smash/get/diva2:1322924/FULLTEXT01.pdf
https://crypto.stackexchange.com/questions/58560/attacks-on-aes-128-192-256
https://www.atpinc.com/blog/what-is-aes-256-encryption


上一篇
DAY 9- 《區塊密碼2》AES(1)- 加密過程
下一篇
DAY 11- 區塊操作模式
系列文
學密碼學也猜不到你的手機密碼30

尚未有邦友留言

立即登入留言