国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

旁路功耗分析中不同平臺的差異化研究*

2021-05-15 09:56:04
密碼學(xué)報(bào) 2021年2期
關(guān)鍵詞:掩碼毛刺旁路

郭 箏

智巡密碼(上海) 檢測技術(shù)有限公司, 上海201601

1 引言

旁路功耗分析是當(dāng)前對密碼芯片威脅最大的攻擊方式之一, 其原理是利用CMOS 電路在翻轉(zhuǎn)時(shí)產(chǎn)生的功耗和數(shù)據(jù)相關(guān)的特征, 通過猜測算法的中間結(jié)果來恢復(fù)密鑰. 目前已有大量的分析方法被提出, 其中應(yīng)用最為廣泛的就是差分功耗分析(DPA) 和由其衍生的相關(guān)性功耗分析(CPA). 一些實(shí)驗(yàn)也證實(shí), 如果不添加防護(hù)措施, 幾乎所有的密碼電路都易受此類攻擊的影響.

為了抵御旁路功耗分析, 一種常用的有效方法是掩碼, 其原理是使得算法運(yùn)算過程中的中間結(jié)果隨機(jī)化. 事實(shí)上, 在過去幾年中, 很多可選擇的針對DES 等分組密碼的掩碼方案被提出. 這些方法主要是考慮算法中非線性部分的掩碼, 該部分掩碼通常需要花費(fèi)較大的電路代價(jià); 相比之下, 線性部分容易進(jìn)行掩碼的添加. 目前的安全芯片設(shè)計(jì)中幾乎都會實(shí)現(xiàn)線性部分的掩碼, 非線性部分則是根據(jù)電路代價(jià)選擇性添加.

已有些研究提出了針對掩碼的安全性分析, 其中大多數(shù)研究者認(rèn)為, 即使加了掩碼, 但由于電路延遲產(chǎn)生的毛刺, 仍舊使得電路運(yùn)行過程中有真正的中間值泄露[1], 從而會使得分析成功. 文獻(xiàn)[2] 中基于SPICE 仿真證明了毛刺導(dǎo)致旁路信息泄露的現(xiàn)象. 文獻(xiàn)[3] 中討論了毛刺對于掩碼電路的影響. 文獻(xiàn)[4]中則利用功耗仿真的方法對電路中組合邏輯部分進(jìn)行了建模, 并發(fā)現(xiàn)利用一階分析方法亦可以偵測到掩碼電路中的泄露信息, 作者攻擊了掩碼后非線性邏輯的輸出, 某些比特的信息泄露較大, 這說明電路實(shí)現(xiàn)方式會影響最終的攻擊效果和結(jié)果. 文獻(xiàn)[5] 中使用作者自己提出的仿真器對多款A(yù)VR 微控制器進(jìn)行了仿真攻擊. 另有一些分析人員致力于研究抗毛刺的掩碼方案[6–8], 這些研究通常緊密依附于上述對于電路仿真的研究.

同樣是研究掩碼的信息泄露, 本文的立足角度不同. 基于對一款通過安全認(rèn)證的DES 實(shí)際芯片和相應(yīng)電路代碼的功耗分析比較, 指出兩者之間在各類分析模型下的分析結(jié)果差異, 并利用功耗仿真曲線可層次化計(jì)算模塊消耗功耗的特點(diǎn), 對泄露進(jìn)行定位和解釋.

值得一提的是, 本文的實(shí)驗(yàn)過程將結(jié)合功耗仿真和FPGA 驗(yàn)證的方法進(jìn)行. 其中仿真功耗由于無噪聲的緣故, 所以可能泄露更多的信息, 以至于一些研究者認(rèn)為其與真實(shí)情況相差過大, 不太具備參考價(jià)值.然而在本文看來, 功耗仿真是在代碼設(shè)計(jì)階段發(fā)現(xiàn)旁路信息泄露的重要手段, 有理由相信, 如果電路代碼的防護(hù)措施在仿真功耗分析下有效, 則該防護(hù)對于實(shí)際芯片也同樣有效.

本文余下的章節(jié)安排如下. 第2 節(jié)將闡述分析對象的防護(hù)措施結(jié)構(gòu). 第3 節(jié)將展示利用功耗仿真分析的結(jié)果. 第4 節(jié)將展示通過FPGA 實(shí)現(xiàn)的分析結(jié)果. 第5 節(jié)是對泄露的分析. 第6 節(jié)是一些防護(hù)建議. 最后是總結(jié), 并將針對仿真功耗、FPGA 等不同實(shí)現(xiàn)的分析方法, 給出一些未來可研究的方向.

2 DES 密碼電路的防護(hù)結(jié)構(gòu)

本文選擇了一款已通過(國內(nèi)) EAL 4+ 安全認(rèn)證的密碼芯片作為分析對象, 該密碼芯片中包含DES密碼算法, 采用了兩種防護(hù)措施. 第一種防護(hù)措施是僅對于線性部分的掩碼方案, 圖1 說明了DES 線性掩碼的運(yùn)算結(jié)構(gòu).

在該防護(hù)方法中, 線性部分都添加了掩碼, 且掩碼共同參與計(jì)算, 非線性部分的S 盒則利用原值進(jìn)行計(jì)算. 每輪運(yùn)算的掩碼不同, 在寄存器存取操作時(shí), 去掉舊掩碼時(shí)先掩上新的掩碼, 且為了避免寄存器輸入端的毛刺現(xiàn)象, 輪運(yùn)算寄存器置于新舊掩碼操作之間. 在算法計(jì)算過程中, 輪運(yùn)算寄存器始終保持兩輪的掩碼.

通常在攻擊硬件實(shí)現(xiàn)的密碼算法時(shí), 首先會考慮對輪寄存器的數(shù)據(jù)存儲過程進(jìn)行攻擊, 對于DES 算法, 可攻擊第一輪計(jì)算結(jié)果覆蓋明文的過程, 采用的功耗模型是漢明距離模型, 根據(jù)文獻(xiàn)[9], 有時(shí)候漢明重量模型也會有效. 根據(jù)上述描述的防護(hù)機(jī)制, 算法計(jì)算過程中的真值僅出現(xiàn)在非線性運(yùn)算部分, 因此, 該防護(hù)應(yīng)該有效抵御針對輪寄存器的功耗分析.

第二種防護(hù)是全掩碼, 在線性部分掩碼基礎(chǔ)上加上掩碼的S 盒, 即對非線性部分也進(jìn)行掩碼. 從理論上分析, 后一種防護(hù)使得算法在計(jì)算過程中, 不會出現(xiàn)真實(shí)的中間結(jié)果, 因此應(yīng)該能有效抵御任何對于線性邏輯和非線性邏輯的差分功耗分析.

事實(shí)上, 如果線性部分的防護(hù)措施添加恰當(dāng), 則能夠基本抵御差分功耗分析. 原因是非線性邏輯主要由組合邏輯組成, 其翻轉(zhuǎn)速度較快, 雖然存在毛刺現(xiàn)象, 但利用現(xiàn)有精度的示波器去發(fā)現(xiàn)此類毛刺并加以利用, 其分析代價(jià)也會十分巨大. 但在仿真實(shí)驗(yàn)中, 由于模擬采樣精度可以很高, 所以會發(fā)現(xiàn)由于毛刺產(chǎn)生的泄露. 在后續(xù)的實(shí)驗(yàn)中, 會對上述兩類防護(hù)分別進(jìn)行分析.

圖1 DES 線性掩碼的運(yùn)算結(jié)構(gòu)Figure 1 Operation structure of DES linear mask

3 基于功耗仿真的分析結(jié)果

3.1 實(shí)驗(yàn)過程

本文利用EDA 工具對DES 的verilog 代碼進(jìn)行綜合, 布局布線. 完成版圖后, 對網(wǎng)表進(jìn)行帶反標(biāo)時(shí)序參數(shù)的仿真. 利用功耗仿真工具PTPX, 可以得到不同明文輸入下電路的功耗曲線, 由此形成分析樣本,在本實(shí)驗(yàn)中準(zhǔn)備了4000 條功耗曲線作為分析樣本.同時(shí),為了作對比實(shí)驗(yàn),本文利用FPGA(Sasebo GII)對同樣的電路代碼進(jìn)行綜合仿真, 利用外部線性反饋移位寄存器每周期生成隨機(jī)掩碼. 通過示波器進(jìn)行功耗曲線采集, 由此形成與電路代碼對應(yīng)的分析樣本, 在本實(shí)驗(yàn)中利用FPGA 采集了30 萬條功耗曲線作為樣本.

對于DES 算法的攻擊, 通常利用非線性邏輯S 盒操作, 在無防護(hù)情況下, 單個(gè)S 盒可恢復(fù)4 比特密鑰數(shù)據(jù). 本文主要采取表1 所示的攻擊位置和攻擊模型, 采用的攻擊方法主要是相關(guān)性功耗分析.

表1 攻擊位置和攻擊模型Table 1 Attack location and attack model

針對線性部分掩碼防護(hù), 由于僅在S 盒輸出位置出現(xiàn)了真值, 理論上可抵御第一種、第二種和第三種攻擊, 而在第四種攻擊下有泄露. 針對全掩碼的防護(hù)方法, 理論上可抵御所有攻擊.

3.2 針對線性部分掩碼防護(hù)的分析

根據(jù)上述分析, 線性部分的掩碼將有效抵御針對輪寄存器的功耗分析, 即無法攻擊寄存器的存取操作,實(shí)際芯片的攻擊也顯示該防護(hù)方法有效. 對于電路代碼, 采取了表1 中攻擊選擇對其進(jìn)行分析, 圖2 顯示了對單個(gè)S 盒輸出的攻擊結(jié)果.

圖2 攻擊結(jié)果Figure 2 Attack result

圖2 中橫坐標(biāo)為曲線數(shù)量, 縱坐標(biāo)為相關(guān)性系數(shù), 紅色實(shí)線顯示的是正確密鑰下對應(yīng)的相關(guān)性系數(shù). 根據(jù)結(jié)果顯示, 除了S 盒輸出的漢明重量有泄漏之外, 攻擊輪寄存器的漢明重量也存在信息泄露. 這說明在算法執(zhí)行過程中, 有真值泄露, 根據(jù)分析結(jié)果所對應(yīng)的功耗模型可初步判斷與第一輪輸出結(jié)果相關(guān)的計(jì)算部分產(chǎn)生了泄露, 由于非線性部分未采取掩碼措施, 因此泄露可能出現(xiàn)在S 盒的輸出.

3.3 針對非線性部分掩碼防護(hù)的分析

根據(jù)第2 節(jié)的分析, 同時(shí)使用非線性和線性部分的掩碼, 在整個(gè)算法過程中將不出現(xiàn)真值, 因此無法通過旁路功耗分析攻擊寄存器存取和S 盒計(jì)算部分, 即抵御所有的攻擊方式. 實(shí)驗(yàn)結(jié)果也表明無信息泄露.

4 基于FPGA 的分析結(jié)果

同樣的, 對FPGA 采集的功耗曲線也做了相應(yīng)的分析, 結(jié)果如圖3 所示.

綜上試驗(yàn)結(jié)果, 結(jié)合實(shí)際芯片通過測評的結(jié)果, 表2 列出了不同平臺下, 兩種防護(hù)的實(shí)驗(yàn)結(jié)果.

從表2 中可以看出, 不同實(shí)驗(yàn)平臺下, 不同的防護(hù)措施表現(xiàn)出不同的防護(hù)能力. 同時(shí), 仿真平臺下, 第二種攻擊出現(xiàn)了泄露, 這與理論分析結(jié)果有所不同. 在下節(jié)中嘗試?yán)碚摻忉屵@些現(xiàn)象, 同時(shí)本文也認(rèn)為電路實(shí)現(xiàn)的差別對分析結(jié)果有影響.

圖3 攻擊結(jié)果Figure 3 Attack result

表2 不同平臺下兩種防護(hù)的實(shí)驗(yàn)結(jié)果Table 2 Experimental results of two kinds of protection on different platforms

5 泄露信息分析

泄露主要出現(xiàn)在線性部分的掩碼防護(hù)中,功耗仿真工具PTPX 可提取層次化模塊的功耗,因此在編寫電路代碼時(shí)將算法中的F 函數(shù)、E 置換和S 盒等運(yùn)算組件單獨(dú)寫成模塊, 便于對其功耗進(jìn)行單獨(dú)提取和分析. 采用與發(fā)現(xiàn)旁路信息泄露同樣的功耗模型, 分別對F 函數(shù)、E 置換和S 盒進(jìn)行了分析. 結(jié)果發(fā)現(xiàn)幾乎所有的泄露都出現(xiàn)在S 盒模塊中.

5.1 S 盒本身輸出的漢明重量的泄露

該泄露對應(yīng)第四種攻擊的結(jié)果. 由于S 盒輸出是真值, 雖然很快與掩碼進(jìn)行異或, 但由于數(shù)據(jù)延遲的影響, 會導(dǎo)致總線上出現(xiàn)數(shù)據(jù)真值. 通過觀察功耗仿真曲線, 發(fā)現(xiàn)S 盒和輸入信號和輸出信號變化時(shí)存在大量毛刺. 根據(jù)實(shí)驗(yàn)結(jié)果, 可以確定泄露位置都在S 盒計(jì)算的后半部分. 此時(shí)S 盒的真實(shí)結(jié)果陸續(xù)計(jì)算出來, 并在數(shù)據(jù)線上進(jìn)行輸出.

由于仿真精度較高, 可達(dá)到皮秒級別, 所以幾乎可以發(fā)現(xiàn)每個(gè)S 盒的真值泄露. 在實(shí)驗(yàn)中該泄露出現(xiàn)的位置是在明文輸入之后, 即S 盒已計(jì)算出實(shí)際結(jié)果, 但還未更新寄存器. 在FPGA 和實(shí)際芯片中, 由于采樣精度受到限制, 并且有外部器件產(chǎn)生的噪聲, 所以只能認(rèn)為有可能發(fā)生泄露, 但實(shí)際測量很困難.

5.2 輪計(jì)算結(jié)果的漢明重量的泄露

該泄露對應(yīng)第二種攻擊的結(jié)果. 同樣地, 對各個(gè)運(yùn)算組件分別進(jìn)行了功耗分析, 發(fā)現(xiàn)在輪計(jì)算之后有信息泄露. 由于該處的數(shù)值與真值和隨機(jī)掩碼數(shù)據(jù)相關(guān), 于是直接計(jì)算了隨機(jī)掩碼后的輪運(yùn)算數(shù)據(jù)和實(shí)際結(jié)果的相關(guān)性. 仿真功耗實(shí)驗(yàn)中的隨機(jī)掩碼數(shù)據(jù)來自于軟件隨機(jī)函數(shù)生成, 實(shí)驗(yàn)結(jié)果顯示相關(guān)性較大, 說明隨機(jī)數(shù)樣本的隨機(jī)性較弱. FPGA 實(shí)驗(yàn)中的隨機(jī)掩碼數(shù)據(jù)來自于線性移位寄存器, 實(shí)驗(yàn)結(jié)果顯示相關(guān)性較小, 說明該隨機(jī)數(shù)樣本的隨機(jī)性符合防護(hù)要求.

6 防護(hù)措施的改進(jìn)

雖然實(shí)際芯片和FPGA 未發(fā)現(xiàn)明顯泄露, 但仿真功耗的實(shí)驗(yàn)說明了泄露隱患的存在. 對于這些隱患,本文提出以下改進(jìn)建議.

6.1 線性操作部分需注意電路實(shí)現(xiàn)方式

電路實(shí)現(xiàn)對于功耗信息的泄露有較大影響. 根據(jù)圖1 的防護(hù)措施, 對于非線性部分的掩碼在進(jìn)入S 盒之前需要退去掩碼. 因此會出現(xiàn)帶掩碼的數(shù)據(jù), 子密鑰和去掩碼數(shù)據(jù)幾乎同時(shí)進(jìn)行異或操作的時(shí)候.

正常的異或順序是帶掩碼的數(shù)據(jù)和子密鑰先異或, 其結(jié)果再和掩碼數(shù)據(jù)異或. 但由于電路延遲的緣故,可能三個(gè)數(shù)據(jù)到來的時(shí)間會有差異. 如果子密鑰在最后到達(dá), 就會造成S 的輸入和任何掩碼無關(guān), 也就是說線性部分的掩碼作用在輪計(jì)算結(jié)果到S 盒之前完全消失.

圖4 顯示了當(dāng)3 個(gè)值幾乎同時(shí)異或時(shí),利用第一種攻擊方法的分析結(jié)果.分別用仿真平臺和FPGA 進(jìn)行了實(shí)驗(yàn).

圖4 攻擊結(jié)果Figure 4 Attack result

可以通過適當(dāng)加入延遲單元, 使得兩個(gè)異或操作分開, 則上述的攻擊模型對曲線無效, 同時(shí)可有效應(yīng)對第四種攻擊. 這樣一來, 該防護(hù)方案可抵御所有的一階攻擊. 由于該方案在每次運(yùn)算采用了不同的掩碼,因此也可有效抵御高階攻擊.

6.2 非線性操作部分采用隱藏的防護(hù)方法

根據(jù)上述分析, 掩碼中的泄露主要來自于非線性邏輯. 非線性邏輯的掩碼需要較高的電路面積代價(jià),因此可以考慮采用隱藏和掩碼結(jié)合的方式, 以時(shí)間代價(jià)換取面積的減少. 目前旁路攻擊的模型主要是針對非線性邏輯的, 可以通過功耗仿真的方法定位泄露細(xì)節(jié), 采取相應(yīng)的防護(hù)措施, 從而消除非線性邏輯實(shí)現(xiàn)過程中帶來的安全隱患.

7 總結(jié)與展望

本文對一類已通過安全認(rèn)證的密碼芯片的電路代碼進(jìn)行了仿真和FPGA 實(shí)驗(yàn), 以期驗(yàn)證芯片在設(shè)計(jì)階段抵御旁路功耗分析的能力, 并嘗試說明不同實(shí)現(xiàn)方式下, 功耗曲線和分析結(jié)果的差異. 通過一些對比實(shí)驗(yàn), 可做出以下總結(jié):

(1) 對于已加入掩碼防護(hù)的電路可能存在旁路信息泄露隱患, 利用仿真功耗精度高的特點(diǎn)可有效發(fā)現(xiàn).

(2) 不同階段、不同形式的功耗數(shù)據(jù),在同樣的分析方法下表現(xiàn)出一定的差異.功耗仿真平臺和FPGA的分析對于實(shí)際電路都有參考價(jià)值. 在同樣的泄露分析模型, 一般而言如果功耗仿真平臺未發(fā)現(xiàn)泄露, 則實(shí)際電路也能抵御相應(yīng)攻擊.

(3) 電路實(shí)現(xiàn)對于分析結(jié)果有較大影響. 處理好線性部分的掩碼, 可有效實(shí)現(xiàn)低代價(jià)的防護(hù)方案.

當(dāng)然有些問題還未徹底解決. 譬如雖然發(fā)現(xiàn)仿真曲線和實(shí)際曲線在分析方面的差異, 但造成這些差異的原因無法準(zhǔn)確解釋. 本文猜測信息的泄露來自于電路毛刺, 在仿真功耗中, 無噪聲且精度較高, 因此信噪比很高. 而在實(shí)際電路中, 受采樣頻率的影響, 可能無法精確采集到此類毛刺, 且由于噪聲的疊加, 使得信噪比較低. 此外, 不同結(jié)構(gòu)分組密碼算法的防護(hù)實(shí)現(xiàn)方式也值得進(jìn)一步研究.

旁路功耗分析技術(shù)在不斷發(fā)展, 該技術(shù)體現(xiàn)了微電子、計(jì)算機(jī)和密碼等領(lǐng)域的融合. 對于分析方法實(shí)施的研究, 可揭示新的可能存在的安全隱患, 有助于降低防護(hù)方案的成本.

猜你喜歡
掩碼毛刺旁路
旁路放風(fēng)效果理論計(jì)算
一種鑄鐵鉆孔新型去毛刺刀具的應(yīng)用
一種筒類零件孔口去毛刺工具
低面積復(fù)雜度AES低熵掩碼方案的研究
基于布爾異或掩碼轉(zhuǎn)算術(shù)加法掩碼的安全設(shè)計(jì)*
可抑制毛刺的鉆頭結(jié)構(gòu)
新型銅合金化學(xué)去毛刺劑的研制
急診不停跳冠狀動脈旁路移植術(shù)在冠心病介入失敗后的應(yīng)用
IVPN業(yè)務(wù)旁路解決方案
基于掩碼的區(qū)域增長相位解纏方法
黄浦区| 晋中市| 神农架林区| 东海县| 达拉特旗| 富平县| 庐江县| 广灵县| 长宁区| 松江区| 柘荣县| 丹巴县| 昌图县| 湛江市| 钦州市| 黄大仙区| 凤山市| 克东县| 铜鼓县| 神农架林区| 新津县| 泸溪县| 胶南市| 房产| 台南市| 金阳县| 宝清县| 额敏县| 安溪县| 涞水县| 彭水| 佛坪县| 天门市| 葵青区| 胶州市| 会同县| 新营市| 崇礼县| 清镇市| 天柱县| 肃北|