當攻擊者只有特定回合的波形時,是否可以執行 CPA(相關功率分析)?
我閱讀了很多關於使用 CPA 破壞 AES 的文件。
但大多數情況下,假設攻擊者擁有第一輪或最後一輪波形(跟踪)並利用 SubBytes。
我的問題是即使攻擊者只有某一輪波形,而不是第一個和最後一個波形,是否可以攻擊 AES-128(或 AES-256)。
即使攻擊者擁有多對明文和密文,難道只用特定輪次的波形就無法計算出加密密鑰嗎?
是的,一般來說,您可以對某些內輪 AES 執行密鑰恢復 DPA 攻擊。公共文獻中的大多數攻擊都是為了方便起見,在高度非線性操作(例如 SubBytes)之後從第一輪或最後一輪(*外輪)洩漏。*這種攻擊很容易實施。利用內部循環的洩漏變得有點棘手並且實施起來稍微麻煩一些,但是對於第二輪 AES(或倒數第二輪)以及在 DES 中更進一步,這當然是可能的。
讓我們回顧一下。DPA 攻擊的一個主要成分是分而治之。假設我們的目標是 AES-128。我們基本上將一個棘手的問題(在 128 位上執行密鑰恢復)分成 16 個小得多且可實現的問題(16 個 8 位 DPA,用於恢復第一輪或最後一輪子密鑰的每個字節)。DPA 攻擊本身基本上是在處理中間體時比較洩漏的預測 $ V $ 對照實際測量。普通 DPA 的目標是從中間體洩漏 $ V_i=F(X_i, K_i) $ 這是一個函式:
- 數據 $ X_i $ DPA 從業者知道的(例如明文或密文的一部分),以及
- 一部分 $ K_i $ 的(未知)子項。主要條件為 $ K_i $ 是DPA從業者可以有效地檢查每一個可能的價值 $ K_i $ . 這確保了 DPA 攻擊的執行時間保持可控,並且整個攻擊是實用的。
現在我們可以看到我們發現外輪 DPA 攻擊更容易的原因:有很多中間體 $ V $ 滿足這兩個條件。在您的範例中, SubBytes 的輸出是一個很好的選擇:從業者只需要列舉 $ 2^8 $ 子鍵。(還有其他額外的、不相關的原因使其成為一個不錯的選擇;即,它是高度非線性操作的輸出,有助於清除錯誤的子鍵假設,但這現在並不重要。)
請注意,如果我們選擇了中間 $ V $ 這取決於太多的關鍵位(在某種程度上,條件 $ K_i $ 以上不成立),那麼 DPA 攻擊將花費太多時間並且不實用,甚至比普通密碼分析(包括蠻力)更具優勢。
回到最初的問題,你可以在 AES 的第二輪中找到滿足這兩個屬性的中間體。例如,一個非常非常天真的攻擊可以針對第二輪的 SubBytes 輸出。攻擊需要列舉 $ 2^{40} $ 鍵。這肯定比計算量大得多 $ 2^8 $ ,但不是世界末日。
如果從業者可以通過將輸入文本的某些部分固定為恆定值來停用它們,則可以避免這種麻煩。假設我們的目標是中間體 $ V $ 這是四個 S-box 輸出的異或: $ V=S(P_1 + K_1) + S(P_2 + K_2) + S(P_3 + K_3) + S(P_4 + K_4) $ . 天真地,這意味著我們必須列舉 $ 2^{4w} $ $ w $ -bit子密鑰共同恢復 $ (K_1,K_2,K_3,K_4) $ . 如果我們修復 $ P_2 $ , $ P_3 $ 和 $ P_4 $ 為常數值,中間 $ V $ 可以改寫為 $ V=S(P_1 + K_1) + c $ 對於一些未知常數 $ c $ . 我們可以對“關鍵假設”執行 DPA $ (K_1, c) $ 服用 $ 2^{2w} $ 努力(然後重複恢復 $ K_2 $ , 等等)。總的來說,這大約需要 $ 2^{2w+2} $ 時間,小於聯合恢復所有子密鑰。(為了解釋起見,我已經過分簡化了一點,但是您可以在 AES 中找到適用此技術的中間體。)
從這裡開始,您可以使用其他技巧來瞄準內輪。它們稍微複雜一些,並將 DPA 與更傳統的對稱密碼分析相結合。儘管它們是在非常狹窄和特定的環境中描述的,但通常可以將它們移植到不同的算法或場景中。這裡有些例子:
- Handschuh 和 Preneel 在Blind Differential Cryptanalysis for Enhanced Power Attacks中給出了一種由側通道資訊輔助的差分攻擊,以利用特定洩漏模型下的第三輪或第四輪 DES。
- 碰撞攻擊也可以利用內輪的洩漏。一個例子是Ledig、Muller 和 Vallete的Enhancing Collision Attacks或Biryukov 和 Khovratovich的 Side-Channel Cryptanalysis 的兩種新技術。
- 這是針對第三輪 DES 的 DPA 攻擊,不需要 Gierlichs 和您的真正衝突。該攻擊使用具有正常模型的 DPA 和廉價的正常差分密碼分析步驟。這個可能比這個列表中的其他更容易理解。