針對DES密碼芯片的CPA攻擊仿真設計方案
3 功耗分析仿真平臺
在系統的設計階段,人們大多利用計算機進(jìn)行數學(xué)仿真實(shí)驗,因為修改、變換模型比較方便和經(jīng)濟。在部件研制階段,可用已研制的實(shí)際部件或子系統去代替部分計算機仿真模型進(jìn)行半實(shí)物仿真實(shí)驗,以提高仿真實(shí)驗的可信度。在個(gè)別情況下,可進(jìn)行全物理的仿真實(shí)驗,這時(shí)計算機仿真模型全部被物理模型或實(shí)物所代替。
建立的仿真平臺如圖2所示。仿真平臺主要由邏輯模擬器、功耗估算器和功耗分析模塊組成??驁D中應用Mentor公司提供的ModelSim作為邏輯模擬器,邏輯模擬器輸入有:所設計密碼電路的硬件語(yǔ)言描述代碼、電路的激勵文件和一些反標延遲信息等。輸出的密碼電路的功耗仿真結果是以vcd格式存儲的文本文件,這個(gè)vcd文件包含了所有的信號模擬變化以及相應的仿真時(shí)刻標簽,然后用VisualC++對vcd文本文件進(jìn)行處理,得到模擬功耗數據,最后用MatLab對模擬功耗數據進(jìn)行統計分析,推測密鑰信息。
要統計DES密碼芯片中每個(gè)時(shí)鐘周期的模擬功耗值,可以通過(guò)統計關(guān)鍵寄存器中在相鄰時(shí)鐘周期內0、1的變化情況。根據式(2)所示已經(jīng)建立的功耗模型,將電路所處理的數據變化轉換為模擬功耗變化即可。
基于所建立的功耗分析仿真平臺,結合分組密碼算法DES算法進(jìn)行功耗分析攻擊實(shí)驗。下面是CPA攻擊的詳細步驟及結果分析。
?。?)用仿真的方法進(jìn)行攻擊的第1步是產(chǎn)生1個(gè)仿真功耗文件
任意選擇1 000個(gè)隨機明文和1個(gè)固定但隨機的密鑰。每輪加密之后,記錄下寄存器中數據二進(jìn)制序列的變化情況,根據建立的功耗泄漏模型,統計模擬功耗值。這樣仿真器就產(chǎn)生1個(gè)包含N×16的矩陣M1。
?。?)選擇寄存器中M個(gè)最高位,用與步驟(1)相同的明文及密鑰進(jìn)行仿真實(shí)驗
仿真器統計寄存器中位的變化數目,結果存儲在矩陣1 000×1的矩陣M2中,在這個(gè)驗證實(shí)驗中,選擇M為8,然后計算M1的所有列和M2的相關(guān)系數,如下:
ci=C(M1(1:1000,1),M2) ?。?)
式中,i=1,…10, M1(1:1000), i代表矩陣M1的第i列向量。步驟(1)和步驟(2)都用了同樣的明文的密鑰,所不同的是它們考慮的位變化的數目不同。第(2)步產(chǎn)生的值是第(1)步初始化密鑰加操作計算值的預測。如果計算是正確的,M2和M1的第一列的相關(guān)系數比其他列要高得多。圖3為預測的情況。
?。?)重復步驟(2),但使用一個(gè)不同的密鑰
這時(shí)產(chǎn)生1個(gè)功耗文件矩陣M3。與第(2)步一樣計算M3和M1所有列的相關(guān)系數:
式中,i=1,…10。由于實(shí)驗中使用了一個(gè)不同的密鑰產(chǎn)生M3,所以M3和M1所有列的相關(guān)系數將是很小的(或者說(shuō)是沒(méi)有相關(guān)性),包括第1列。通過(guò)計算得出如圖4所示的相關(guān)系數圖,圖中的曲線(xiàn)表明其結果和預測的相同。
評論