Aes
AES加密過程中哪個子操作成本更高?
在 AES 加密過程中,有各種子操作,如 SubByte、MixColumns、ARK 等。我的問題是這些操作中哪個更昂貴?在Dan Boneh的影片講座中,提到了 AES 的查找表實現比使用有限域乘法執行 MixColumns 函式的實現更快。
我沒有找到任何關於它有多快的資訊?此外,就單個 CPU 時間而言,各個子操作之間是否存在任何關係?
查表實現通常將 SubBytes 和 ShiftRows 步驟與 MixColumns 步驟結合起來。
不同的實現/硬體/等使一般陳述不可能,但本文提供了一些關於表查找實現的基準和資訊。
它不一定會在所有系統中都更快。根據本文:
無論如何,必須注意,為查找表使用大量記憶體對於小型系統(例如智能卡)來說太昂貴了,並且被認為是不安全的,因為監視對查找表的訪問可能會在某些情況下允許推斷密鑰。
順便說一句,加速 AES 的另一種(更好)方法是將指令內置到硬體中
如果您正在執行軟體實現,則 MixColumns 將花費最長的時間,因為您必須在從記憶體中提取然後將其放回後進行乘法運算。一般來說,在軟體中,您會使用查找表來實現天真的方法,因此未記憶體的所有內容都會很昂貴。我說這是幼稚的,因為它容易受到定時攻擊,例如本文中的。在“作業”問題類型的實現中,sbox 幾乎總是一個查找表。
如果您想在軟體中進行實際的 AES 實現,您必須首先了解 AES 如何受時序影響,以及記憶體如何不以恆定時間執行。你會喜歡明確地計算一切。
如果您有硬體,我們會以焦耳為代價,這不是設備物理之外的任何人談論的內容。這個網站上有答案,我在其中討論了不同選擇所需的功率。從“軟體”的角度來看,如果您有 AES-NI 指令,那麼這些步驟的成本沒有區別,因為它們都是為您抽象的。