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