本發(fā)明涉及的是一種計算機安全領域的技術,具體是一種用于SM2簽名的密鑰檢測方法及其系統(tǒng)。
背景技術:
在現(xiàn)實中,密碼系統(tǒng)通常是以硬件或以硬件為表現(xiàn)形式的軟件來實現(xiàn)的,譬如:智能卡、RFID、密碼協(xié)處理器、SoC密碼芯片、密碼機。在這些密碼系統(tǒng)的實現(xiàn)環(huán)境中,攻擊者可以觀察和測量密碼變換的能量消耗、電磁輻射等信息,利用這些額外的信息有可能實現(xiàn)比傳統(tǒng)的數(shù)學分析更有效的密碼破譯。這種環(huán)境下的攻擊通常被人們稱為”旁路攻擊”(Side Channel Attack)。旁路攻擊通常包括簡單功耗分析(SPA)和差分功耗分析(DPA)。
其中,DPA攻擊是通過記錄密碼設備對大量不同數(shù)據(jù)進行加密或解密操作時的功耗曲線,利用統(tǒng)計方法從功耗曲線中恢復出密碼設備中的密鑰,其分析效果也相對更加有效。DPA的思想能夠應用于各種密碼算法的分析中,包括對稱密碼算法和公鑰密碼算法。通常來說公鑰密碼算法執(zhí)行時間更長,其泄露的功耗信息也越多,功耗信息利用方式也呈現(xiàn)多樣化。但目前針對公鑰ECC方案的分析,大都針對于其核心運算:標量乘運算。
由于標量乘運算是SM2乃至所有ECC方案安全性的基礎,研究者們也提出了許多種針對標量乘運算的分析方法,包括:傳統(tǒng)的DPA分析、水平分析以及水平碰撞分析等。為了防護這些分析方法,標量乘運算的實現(xiàn)方案也越來越安全,使得分析者很難從標量乘運算上獲得有用信息。
如圖1所示,基于橢圓曲線簽名方案的SM2包含三大部分:標量乘運算、生成簽名部分值r、生成整個簽名對(r,s)。在生成整個簽名對的過程中,存在針對密鑰的求逆操作,即:(d+1)-1mod n,其中:d為簽名的私鑰且為不少于160bytes的大數(shù),n為已知的SM2簽名方案的公共參數(shù)。求逆操作(d+1)-1mod n有兩種實現(xiàn)方式,一種為擴展歐幾里德算法,該實現(xiàn)方式需消耗更多的硬件資源包括寄存器和電路面積;另一種通過模冪實現(xiàn),即:(d+1)-1mod n=(d+1)n-2mod n。該方法能夠復用原電路中的模乘模塊,節(jié)省電路面積。
在傳統(tǒng)的DPA分析下,針對SM2簽名的分析一般分為兩種:一是針對標量乘運算進行分析,恢復標量,但由于SM2簽名方案的標量為隨機數(shù),因此該分析僅在單條曲線下分析才有意義;二是針對生成整個簽名對中的運算r×d進行DPA分析。而這兩種分析又非常易于防護:對于標量乘的分析在單條曲線下實現(xiàn)針對SPA的防護及水平攻擊防護;針對r×d分析,可通過修改生成整個簽名對中的求逆操作實現(xiàn),即:(d+1)-1*(k-r×d)mod n=(d+1)-1*(k-r×(d+1-1))mod n=((d+1)-1(k-r)-r)mod n,其中:k為SM2標量乘運算中的隨機數(shù);如此一來,r×d運算就在求逆操作中消失了,也無法進行分析;而大多數(shù)SM2防護,都是針對標量乘和簽名生成階段r×d進行設計,而往往忽略了(d+1)-1的防護。
經(jīng)過對現(xiàn)有技術的檢索發(fā)現(xiàn),中國專利文獻號CN104683102A,公布日2015.6.3,公開了一種SM2簽名計算方法和裝置,方法包括:獲取簽名r、未知的臨時密鑰k、私鑰d和模數(shù)n;計算第一值,所述第一值為私鑰d加1后的值;計算第二值,所述第二值為所述第一值的模逆;計算第三值,所述第三值為簽名r和所述未知的臨時密鑰k的和;計算第四值,所述第四值為第三值和所述第二值的乘積;獲取SM2的簽名結果S,所述簽名結果S為所述第四值減去r后對n取模的值。但該技術的分析對象在于第四值的產生過程,適用性較窄,在應用防護措施時,第四值有可能已經(jīng)變化。
技術實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術存在的上述不足,提出一種用于SM2簽名的密鑰檢測方法及其系統(tǒng),能夠在密鑰未知的情況下通過其公共信息建立模板,進而恢復完整的密鑰。
本發(fā)明是通過以下技術方案實現(xiàn)的:
本發(fā)明涉及一種用于SM2簽名的功耗分析方法,通過將待測密碼系統(tǒng)生成的SM2簽名的部分公共信息定位到簽名求逆階段,得到該部分公共信息在求逆階段的泄露位置;確定簽名輸出階段r或s的位置,然后根據(jù)r或s的單字節(jié)值對泄露位置的功耗曲線進行分類,建立每一類功耗曲線的單字節(jié)值的模板;再將待測密鑰的部分公共信息在求逆輸出階段的功耗曲線與模板進行匹配,匹配正確后即得待測密鑰的求逆結果,完成模板攻擊;最后根據(jù)求逆結果恢復所有字節(jié)信息,對所有字節(jié)信息求逆后減1,恢復密鑰信息。
所述的定位是指:確定求逆位置和r或s輸出后將完成標量乘運算后生成的部分與r或s的功耗曲線做相關性分析。
所述的單字節(jié)模板為:hi=(mi,Ci),i∈[0,255],其中:hi為值為i的模板,mi為功耗曲線的均值,Ci為功耗曲線的協(xié)方差矩陣。
所述的匹配的依據(jù)為:其中:p為功耗曲線與模板的匹配概率,t為被測功耗曲線。
所述的匹配候選正確值為:v*=argmaxi(p(t;hi)),其中:v*為匹配候選正確值,maxi()為所有i中概率最大值。
本發(fā)明涉及一種實現(xiàn)上述方法的檢測系統(tǒng),包括:定位模塊、模板處理模塊、匹配計算模塊和密鑰恢復模塊,其中:定位模塊將隨機輸入簽名結果中的公共信息通過相關性進行定位,并通過簽名結果輸出部分的功耗特征定位至簽名的求逆階段;模板處理模塊對定位模塊中的功耗曲線進行分類,并對每一類功耗曲線建立模板,計算模板信息;模板匹配模塊根據(jù)模板處理模塊中的模板信息與待測密鑰對應的功耗曲線進行匹配,將匹配正確的結果輸入至密鑰恢復模塊,通過密鑰恢復模塊得到正確的密鑰信息。
技術效果
與現(xiàn)有技術相比,本發(fā)明通過模板攻擊和線下計算,不需要知道密鑰或者攻擊者控制一臺與待測密碼系統(tǒng)完全相同或類似的設備,即可通過其公共信息建立模板進行模板攻擊,恢復最終密鑰;本發(fā)明關注點在于SM2簽名算法中防護方案的短板,即在標量乘運算與簽名生成階段添加了防護,針對求逆結果的分析仍然能夠恢復出簽名的私鑰;為SM2簽名算法的安全防護提供新的方向。
附圖說明
圖1為SM2簽名流程圖;
圖2為密鑰檢測方法示意圖;
圖3為SM2簽名的生成與求逆的存儲功耗曲線;
圖4為SM2簽名的生成與求逆的存儲功耗曲線部分放大圖;
圖5為求逆結果單字節(jié)功耗噪聲分布圖;
圖6為簽名結果單字節(jié)功耗噪聲分布圖;
圖7為恢復成功率圖;
圖8為檢測系統(tǒng)示意圖。
具體實施方式
下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
實施例1
如圖2所示,本實施例包括以下步驟:
步驟1、向密碼系統(tǒng)中隨機輸入明文,循環(huán)執(zhí)行SM2簽名,將部分公共信息r定位到簽名的求逆階段,得到r在求逆階段的泄露位置。
所述的定位是指:確定求逆位置和r或s輸出后將完成標量乘運算后生成的部分與r或s的功耗曲線做相關性分析。
由于r或s的輸出與求逆輸出具有相同模式,因此兩者都較易識別定位。
如圖3和圖4所示,求逆輸出階段和簽名輸出階段的功耗曲線具有相似的行為模式,即”計算‐存儲”,并且兩者在功耗表現(xiàn)上模式也相同。在[1950,2150]的區(qū)間范圍內,兩者功耗體現(xiàn)出高度相似,而該處細微的差異則是由于噪聲以及數(shù)據(jù)值不同造成的。
步驟2、根據(jù)單字節(jié)值對步驟1中的泄露位置的功耗曲線進行分類,建立每一類功耗曲線的單字節(jié)值的模板。
所述的單字節(jié)模板為:hi=(mi,Ci),i∈[0,255],其中:hi為值為i的模板,mi為功耗曲線的均值,Ci為功耗曲線的協(xié)方差矩陣。
步驟3、將待測密鑰的部分公共信息r′在求逆階段的功耗曲線與模板進行匹配,匹配正確后即得待測密鑰的求逆結果。
所述的匹配的依據(jù)為:其中:p為功耗曲線與模板的匹配概率,t為被測功耗曲線。
所述的匹配候選正確值為:v*=argmaxi(p(t;hi)),其中:v*為匹配候選正確值,maxi()為所有i中概率最大值。
步驟4、根據(jù)步驟3得到的求逆結果恢復所有字節(jié)信息,結合已知模數(shù)進行線下計算,恢復待測密鑰信息。
如圖8所示,本實施例涉及上述密鑰檢測方法的系統(tǒng),包括:定位模塊、模板處理模塊、匹配計算模塊和密鑰恢復模塊,其中:定位模塊將隨機輸入簽名結果中的公共信息通過相關性進行定位,并通過簽名結果輸出部分的功耗特征定位至簽名的求逆階段;模板處理模塊對定位模塊中的功耗曲線進行分類,并對每一類功耗曲線建立模板,計算模板信息;模板匹配模塊根據(jù)模板處理模塊中的模板信息與待測密鑰對應的功耗曲線進行匹配,將匹配正確的結果輸入至密鑰恢復模塊,通過密鑰恢復模塊得到正確的密鑰信息。
本實施例提出了一種新的信息利用方式,并尋找到了該信息利用的基礎,即:SM2簽名算法中不同位置的存儲操作具有相同的存儲模式及存儲硬件。相同的存儲模式及存儲硬件是指在同一平臺上實現(xiàn)的SM2簽名算法如ASIC或FGPA,它們在存儲器的硬件結構及存儲模式上是相同的,只是在不同的時間發(fā)生存儲行為。
所述的在不同的時間發(fā)生存儲行為,是指在標量乘運算后存儲結果坐標、計算得到簽名部分公共信息r并進行存儲、大數(shù)求逆結果存儲及其他中間值計算的存儲行為?;诓煌瑫r間的存儲行為,其硬件表現(xiàn)形式相同,那么其功耗泄露情況也相似。
所述的功耗泄露情況相似,是指其在不同位置的泄露符合模板攻擊的基本假設,即高斯噪聲符合相同的分布,如圖5和6所示。其中圖5展示了簽名輸出階段單點泄露最大值的噪聲分布情況,而圖6展示了求逆輸出階段單點泄露最大值的噪聲分布情況??梢钥吹剑瑑商帋缀醴南嗤姆植?,因此模板攻擊能夠發(fā)揮作用。
基于模板攻擊,可以利用部分簽名結果r的信息來建立模板,恢復(d+1)-1mod n結果后,再執(zhí)行線下計算(((d+1)-1)-1mod n)-1,即可得到全部簽名密鑰。
所述的SM2簽名方案中大數(shù)求逆,針對固定密鑰值,其求逆結果相同。這意味著,對于SM2簽名算法中大數(shù)求逆的模板匹配,能夠運用多條曲線進行分析,能夠保障其匹配的成功率,如圖7所示,在實驗情況下100條曲線即可達到95%的成功率。
本實施例對于SM2簽名方案中高階防護如標量運算的防護及簽名生成時的防護都能產生有效攻擊。