Aes

為什麼 SPA/DPA/CPA 等旁道攻擊是基於 AES SubBytes 常式的?

  • December 30, 2016

我對與側通道攻擊相關的 AES 有三個問題:

  1. 為什麼諸如 CPA 之類的旁道攻擊與 AES 中 SubBytes 常式的非線性相關?
  2. 以非線性方式使用替代BOX(SBOX)與“使用組合邏輯優化設計AES S-box”等文章中提出的組合SBOX有什麼區別?
  3. 使用組合 SBOX 是否可以避免側通道攻擊?

CPA 所針對的值的類型為 $ S(p\oplus k) $ 在哪裡 $ p $ 是明文並且 $ k $ 一個密鑰字節,和 $ S $ 將字節雙射映射到字節。一個人找到正確的鑰匙 $ k_0 $ 通過關聯漢明權重 $ S(p\oplus k) $ 與功耗,因為相關性的絕對值預計對於正確的密鑰是最高的 $ k_0 $ 當時 $ t_0 $ 當。。。的時候 $ S $ -box 輸出在 CPU 中處理。

現在假設對於第二個鍵 $ k_1\ne k_0 $ 的值 $ S(p\oplus k_0) $ 和 $ S(p\oplus k_1) $ 所有明文字節僅相差一個位 $ p $ . 那麼它們的漢明權重也僅相差 1,因此它們的漢明權重 $ S(p\oplus k_0) $ 和 $ S(p\oplus k_1) $ 是強相關的。所以每當 $ k_0 $ 給出了目前消耗和預測的漢明權重之間的高度相關性,因此也是如此 $ k_1 $ ,這使得兩個鍵很難區分,如果想知道哪一個是正確的。

如果 $ S $ 恰好是線性的,那麼 $ S(p\oplus k_0)\oplus S(p\oplus k_1) = S(k_0\oplus k_1) $ 獨立於 $ p $ . 因此,如果 $ S(k_0\oplus k_1) $ 具有漢明權重 1,恰好處於最後一段的糟糕情況(對於攻擊者)。為了 $ S $ 雙射線性,這發生在 $ 8 $ 不同的密鑰字節 $ k_1 $ 的。

作為 $ S $ -boxes 必須保護加密算法免受線性和差分攻擊,它們的選擇使得 $ S(x) $ 和 $ S(x\oplus\Delta) $ 是“盡可能線性獨立”。特別是,它們的漢明權重也具有盡可能小的相關性。因此,如果您與 $ S(x) $ (思考 $ x=p\oplus k_0 $ ),你不會有太多的相關性 $ S(x\oplus\Delta) $ (思考 $ \Delta=k_0\oplus k_1 $ ),使不同的密鑰字節易於區分。

說法不一,真實 $ S $ -boxes 滿足 DPA 的基本假設,即錯誤的密鑰對目前消耗給出隨機預測,而線性 $ S $ -boxes 違反了它。

總之,任何 $ S $ 適合“經典”密碼學的 -box 對 CPA 等側通道攻擊來說是不好的(= 好的目標),反之亦然。(有一些論文發表了關於發現 $ S $ - 對這兩個目的都有好處的盒子,但據我所知,還沒有找到,如果有的話我會感到驚訝。)

我不知道你問的那篇文章,但從摘要來看,作者只對 AES S-box 的高效(時間+空間)硬體實現感興趣,對側通道攻擊的安全性完全不感興趣(他們會提到它)。

對於針對 CPA 的安全性,您嘗試攻擊的中間值是如何在硬體中創建的並不重要,只要它(或與之相關的其他東西)顯示洩漏側通道資訊(如功耗)。

試圖在不使用動態隨機(動態=每次執行算法時新生成)的情況下對抗側通道攻擊,我不會打賭。看看所有白盒實現使用類似 DPA 的技術是多麼容易被破壞。

引用自:https://crypto.stackexchange.com/questions/42571