學習筆記 DPA差分能量攻擊

2021-10-08 18:40:57 字數 1545 閱讀 2232

最近在學習偏信道攻擊,很多**裡都會提到或者用到dpa,它們主要講的是dpa的步驟,但是對於為什麼要那麼做我看得不太懂,下面是我的一些個人理解,如果有理解錯誤的地方歡迎指正。內容除了相關的博碩**以外,主要參考《能量分析攻擊》一書。

1.選擇所執行演算法的某個中間值。

這個中間值表現為乙個函式f(d,k),這裡的d一般是明文或者密文,而k是金鑰的一部分。為什麼這樣取中間值可以結合密碼的差分分析方法來理解,在差分分析方法裡,一般通過研究某乙個點(比如s盒)的輸入和輸出來獲取金鑰。所以這裡的中間值函式裡,d是變數,通過改變d的輸入來得到金鑰k的值。

2.測量密碼裝置在加/解密時的能量消耗。

這裡取d個資料分組,將這些資料記作向量

在每次裝置執行時,都記錄下乙個能量跡,(這裡的能量跡是指電壓差),對應於

理解時可以把這個矩陣當作乙個圖,其中列值當作時間軸,而每乙個元素就是在同一時間下的不同的點,大致是下面這樣:

也就是說矩陣的每一列都是由相同的操作所引起的能量消耗。在採集能量消耗時,有的密碼裝置會使用一些防禦側通道的手段導致能量軌跡錯位,還需要進行對齊。

3.計算假設的中間值

猜測k的值,針對每乙個k值,計算假設的中間值。將這些值記為向量

矩陣的每一列表示裝置d次加/解密執行所計算出的中間值。這裡的k是金鑰所有可能取的值,而實際的k值就是其中的某個,所以要確定哪一列是裝置在加/解密時處理的資料。

4.將中間值對映為能量值

將假設的中間值對映為實際的能量值,通過能量模型,比如漢明距離模型和漢明重量模型(這兩個模型在相關的**裡也經常提到),將假設的中間值v轉化為假設的能量值矩陣h。

5.比較假設能量消耗值和實際的能量跡

將得出的假設的能量值矩陣和實際測量的結果相比較,也就是把上面提到的矩陣h的每一列與矩陣t的每一列相對比,最後得出乙個新的矩陣r,r的每個元素可以理解為假設值與實際值的匹配程度,值越高,就表明實際的金鑰與猜測的金鑰相關性越強,根據這個匹配程度可以找出正確的金鑰。

概括一下就是,

1.先選擇乙個中間值函式,這個函式以金鑰k和已知的明文或者密文作為引數,求出中間值。

2.找出金鑰k所有可能的取值,由此得出很多個可能的中間值。

3.使用能量模型把這個中間值轉換為能量消耗值。

4.測量密碼裝置實際加/解密時的能量消耗

5.把實際的能量消耗跟剛才中間值轉化出來的能量值相對比,比較哪乙個k所生成的能量消耗資料與實際的能量消耗最匹配,就是所要求出的金鑰k。

以上是我理解的dpa的大體流程,而對於其中的每一步都還有很多細節,需要後續進一步學習和補充。如果有理解不對的地方歡迎交流。_(: 」∠)_

差分學習筆記

題面傳送門 首先明確,這是一道差分裸題,不要被它的藍標籤嚇到。演算法簡介 差分是一種和字首和類似的資料結構,畢竟在差分過程中要進行字首和,所以字首和是差分的基礎。差分能做到 o 1 修改,但要 o n 查詢,適用範圍不如字首和。差分適合查詢極少,修改大大多於查詢的題目。演算法實現 首先我們定義差分陣...

單金鑰差分攻擊和相關金鑰差分攻擊

單金鑰差分攻擊 是為了和 相關金鑰差分攻擊 區分開來才起的名字,其實就是原本的差分分析 differential cryptanalysis 在差分分析的過程中,我們控制金鑰不變,通過在明文上新增差分,來分析密文中產生的差異,所以稱之為單金鑰差分攻擊 single key attack 相關金鑰差分...

學習筆記 關於差分

本篇參考 顧z dalao的講解。現講一下差分陣列的定義吧。a i n j 1 b j 幾個栗子 原陣列1,3,5,2,4。差分陣列1,2,2,3,2。那麼這個陣列有什麼優勢呢?如果我們要在原陣列中修改一段區間的值,假如是給l到r這段區間加上x,那麼它在差分陣列中的體現就是 b l x,b r 1 ...