本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及一種防止被加數(shù)側(cè)信道信息泄露的安全電路或者芯片以及安全處理方法。
背景技術(shù):
當(dāng)前信息安全領(lǐng)域,各種密碼分析手段不斷涌現(xiàn)。與針對(duì)安全算法的常規(guī)密碼分析方式不同,側(cè)信道分析更加關(guān)注安全算法在硬件中運(yùn)行時(shí)的特征,通過(guò)以功耗、電磁輻射、錯(cuò)誤誘導(dǎo)等方式所泄露的信息,極大限度地獲得與安全算法有關(guān)的機(jī)密數(shù)據(jù)。
加密硬件以半導(dǎo)體邏輯為基礎(chǔ),邏輯門(mén)由大量晶體管構(gòu)成,當(dāng)邏輯門(mén)上發(fā)生放電現(xiàn)象時(shí),電子從硅襯底流過(guò)、消耗能量,同時(shí)產(chǎn)生電磁輻射,而能量分析就是監(jiān)測(cè)硬件的功耗或者電磁輻射等能量信息的變化,利用統(tǒng)計(jì)方法和攻擊經(jīng)驗(yàn)對(duì)收集到的邊信息進(jìn)行分析;能量分析技術(shù)主要有以下四種:簡(jiǎn)單功耗分析(Simple Power Analysis)、簡(jiǎn)單電磁輻射分析(Simple Electromagnetic Analysis)以及相對(duì)應(yīng)的差分功耗分析(Differential Power Analysis)和差分電磁輻射分析(Differential Electromagnetic Analysis);目前,能量分析技術(shù)尤其是差分能量分析已被廣泛使用以竊取密碼電子器件所保護(hù)的數(shù)據(jù)。
由于涉及能量分析的側(cè)信道攻擊已經(jīng)觸及并正在越來(lái)越深的影響到銀行、金融、工商業(yè)和人民日常生活;國(guó)內(nèi)外關(guān)于能量攻擊防御方面的研究報(bào)道也逐步出現(xiàn),其主流技術(shù)包括:算法及其硬件實(shí)現(xiàn)中的掩碼技術(shù)、時(shí)鐘擾亂技術(shù)等,其中掩碼方法由于實(shí)現(xiàn)代價(jià)可控且不影響數(shù)字電路的工作特性,已經(jīng)受到廣泛關(guān)注。
針對(duì)側(cè)信道攻擊,常用的掩碼防護(hù)技術(shù)為:每一次數(shù)據(jù)傳輸時(shí),使用一個(gè)隨機(jī)數(shù)作為數(shù)據(jù)掩碼(MASK);將數(shù)據(jù)與掩碼相異或,得到的數(shù)據(jù)用來(lái)在芯片中傳輸或進(jìn)行其他的操作;因?yàn)槊恳淮蝹鬏斔褂玫难诖a均不相同,所以攻擊者多次采集得到的波形泄露的信息均不相同,這樣攻擊者將無(wú)法獲得數(shù)據(jù)的真實(shí)數(shù)值。
然而,如果重要信息經(jīng)過(guò)傳輸后需要進(jìn)行加法運(yùn)算;通常只能先將被掩碼的數(shù)據(jù)與掩碼相異或,得到真實(shí)的數(shù)據(jù),再進(jìn)行加法運(yùn)算;這樣又將泄露此重要數(shù)據(jù)的信息;目前解決此類(lèi)加法問(wèn)題的常用方法,經(jīng)典文獻(xiàn) “On boolean and arithmetic masking against differential power analysis”, Lecture Notes in Conputer Science Volume 1965, 2000, pp231-237.,Coron,J.S. and L.Goubin,兩位作者進(jìn)行了詳細(xì)描述;該方法通過(guò)軟件對(duì)數(shù)據(jù)進(jìn)行多次加法和異或的運(yùn)算,在不泄露數(shù)據(jù)信息的情況下得到加法結(jié)果,需要使用1位隨機(jī)數(shù)。
現(xiàn)有技術(shù)的不足之處,在芯片中通常將被保護(hù)數(shù)據(jù)與一個(gè)隨機(jī)掩碼(MASK)異或,對(duì)數(shù)據(jù)進(jìn)行掩碼保護(hù),由于每次使用的掩碼MASK均不相同;通常數(shù)據(jù)a與掩碼m相異或得到()。若要實(shí)現(xiàn)加法運(yùn)算,由于加法與異或是不同的運(yùn)算,通常只能先將掩碼數(shù)據(jù)()與掩碼m相異或得到a,再與數(shù)據(jù)b相加,這樣將會(huì)出現(xiàn)a的功耗信息,可被攻擊者發(fā)現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)中存在的不足,本發(fā)明的目的是,提供一種防止被加數(shù)側(cè)信道信息泄露的安全電路或者芯片以及安全處理方法,該安全電路及安全處理方法能夠要解決側(cè)信道攻擊中掩碼數(shù)據(jù)保護(hù)問(wèn)題,使用硬件實(shí)現(xiàn)從異或運(yùn)算向加法運(yùn)算轉(zhuǎn)移,并避免功耗信息泄露。
本發(fā)明為解決其技術(shù)問(wèn)題所采用的方案是,一種防止被加數(shù)側(cè)信道信息泄露的安全處理裝置,該安全處理裝置包括:
寄存器,用于輸入輸出數(shù)據(jù),由CPU通過(guò)總線寫(xiě)入,輸出數(shù)據(jù)存放在寄存器中,由CPU通過(guò)總線讀出;
改進(jìn)型加法器,由32個(gè)改進(jìn)型單比特全加器組成,其輸入端口為32位經(jīng)過(guò)掩碼的被加數(shù) ,32位加數(shù),32位掩碼,1位進(jìn)位輸入位,其輸出:32位數(shù)據(jù), 1位進(jìn)位輸出位,用于計(jì)算,將掩碼與被掩碼值異或的被加數(shù)相異或得到被加數(shù),然后將被加數(shù)與加數(shù)進(jìn)行加法運(yùn)算的到加法結(jié)果;
改進(jìn)型單比特全加器,由改進(jìn)型半加器組成,其輸入端口為:1位經(jīng)過(guò)掩碼的被加數(shù),1位掩碼,1位加數(shù),1位進(jìn)位,其輸出位為:1位本位結(jié)果,1位進(jìn)位結(jié)果;
改進(jìn)型半加器,其輸入端口為:1位經(jīng)過(guò)掩碼的被加數(shù), 1位掩碼,1位加數(shù),其輸出位為:1位半加器本位結(jié)果,1位半加器進(jìn)位結(jié)果;
乘法器,其輸入端口為:32位被乘數(shù)和32位乘數(shù),其輸出端口為:64位乘法結(jié)果。
優(yōu)選地,該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算本位結(jié)果的運(yùn)算分解為若干個(gè)異或操作,先將掩碼與加數(shù)進(jìn)行異或運(yùn)算,得到的結(jié)果再與經(jīng)過(guò)掩碼的被加數(shù)進(jìn)行異或運(yùn)算。
優(yōu)選地,該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算本位結(jié)果的運(yùn)算分解為若干個(gè)異或操作,先將經(jīng)過(guò)掩碼的被加數(shù)與加數(shù)進(jìn)行異或運(yùn)算,得到的結(jié)果再與掩碼進(jìn)行異或運(yùn)算。
優(yōu)選地,該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算進(jìn)位結(jié)果值的運(yùn)算進(jìn)行變形,分解為三個(gè)中間數(shù)據(jù)邏輯與的操作,中間數(shù)據(jù)1為經(jīng)過(guò)掩碼的被加數(shù)與掩碼的邏輯或運(yùn)算,中間數(shù)據(jù)2為經(jīng)過(guò)掩碼的被加數(shù)的邏輯非與掩碼的邏輯非進(jìn)行邏輯或操作得到的結(jié)果,先進(jìn)行中間數(shù)據(jù)2與加數(shù)的邏輯與操作,得到的結(jié)果與中間數(shù)據(jù)1進(jìn)行邏輯與操作。
優(yōu)選地,該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算進(jìn)位結(jié)果值的運(yùn)算進(jìn)行變形,分解為三個(gè)中間數(shù)據(jù)邏輯與的操作,中間數(shù)據(jù)1為經(jīng)過(guò)掩碼的被加數(shù)與掩碼的邏輯或運(yùn)算,中間數(shù)據(jù)2為經(jīng)過(guò)掩碼的被加數(shù)的邏輯非與掩碼的邏輯非進(jìn)行邏輯或操作得到的結(jié)果,先進(jìn)行中間數(shù)據(jù)1與加數(shù)的邏輯與操作,得到的結(jié)果與中間數(shù)據(jù)2進(jìn)行邏輯與操作。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理裝置使用改進(jìn)型加法器和乘法器,實(shí)現(xiàn)乘法操作,其輸入數(shù)據(jù)為:經(jīng)過(guò)掩碼的被乘數(shù),掩碼,乘數(shù),隨機(jī)數(shù);輸出數(shù)據(jù)為:乘法結(jié)果,實(shí)現(xiàn)方法為:取隨機(jī)數(shù),使用改進(jìn)型加法器計(jì)算得到,然后計(jì)算得到的結(jié)果。
一種集成電路安全芯片,包括上述所述的防止被加數(shù)側(cè)信道信息泄露的安全處理裝置。
一種防止被加數(shù)側(cè)信道信息泄露的安全處理方法,具體步驟如下:
1)將輸入數(shù)據(jù)存放在寄存器中,由CPU通過(guò)總線寫(xiě)入,輸出數(shù)據(jù)存放在寄存器中,有CPU通過(guò)總線讀出;
2)將改進(jìn)型加法器配置為,由32個(gè)改進(jìn)型單比特全加器組成,該改進(jìn)型單比特全加器的輸入位為:1位經(jīng)過(guò)掩碼的被加數(shù),1位掩碼,1位加數(shù), 1位進(jìn)位,其輸出位為:1位本位結(jié)果,1位進(jìn)位結(jié)果;
3)將改進(jìn)型半加器配置為,改進(jìn)型半加器的輸入為:1位經(jīng)過(guò)掩碼的被加數(shù),1位掩碼,1位加數(shù),其輸出位為:1位半加器本位結(jié)果,1位半加器進(jìn)位結(jié)果;
4)將改進(jìn)型單比特全加器配置為,由改進(jìn)型半加器組成,其輸入端口為:1位經(jīng)過(guò)掩碼的被加數(shù),1位掩碼,1位加數(shù),1位進(jìn)位,其輸出位為:1位本位結(jié)果,1位進(jìn)位結(jié)果;
5)將乘法器配置為, 其輸入端口為:32位被乘數(shù)和32位乘數(shù),其輸出端口為:64位乘法結(jié)果。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理方法,在該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算本位結(jié)果的運(yùn)算分解為若干個(gè)異或操作,先將掩碼與加數(shù)進(jìn)行異或運(yùn)算,得到的結(jié)果再與經(jīng)過(guò)掩碼的被加數(shù)進(jìn)行異或運(yùn)算。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理方法,在該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算本位結(jié)果的運(yùn)算分解為若干個(gè)異或操作,先將經(jīng)過(guò)掩碼的被加數(shù)與加數(shù)進(jìn)行異或運(yùn)算,得到的結(jié)果再與掩碼進(jìn)行異或運(yùn)算。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理方法,在該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算進(jìn)位結(jié)果值的運(yùn)算進(jìn)行變形,分解為三個(gè)中間數(shù)據(jù)邏輯與的操作,中間數(shù)據(jù)1為經(jīng)過(guò)掩碼的被加數(shù)與掩碼的邏輯或運(yùn)算,中間數(shù)據(jù)2為經(jīng)過(guò)掩碼的被加數(shù)的邏輯非與掩碼的邏輯非進(jìn)行邏輯或操作得到的結(jié)果,先進(jìn)行中間數(shù)據(jù)2與加數(shù)的邏輯與操作,得到的結(jié)果與中間數(shù)據(jù)1進(jìn)行邏輯與操作。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理方法,在該改進(jìn)型半加器的實(shí)現(xiàn)電路中,將計(jì)算進(jìn)位結(jié)果值的運(yùn)算進(jìn)行變形,分解為三個(gè)中間數(shù)據(jù)邏輯與的操作,中間數(shù)據(jù)1為經(jīng)過(guò)掩碼的被加數(shù)與掩碼的邏輯或運(yùn)算,中間數(shù)據(jù)2為經(jīng)過(guò)掩碼的被加數(shù)的邏輯非與掩碼的邏輯非進(jìn)行邏輯或操作得到的結(jié)果,先進(jìn)行中間數(shù)據(jù)1與加數(shù)的邏輯與操作,得到的結(jié)果與中間數(shù)據(jù)2進(jìn)行邏輯與操作。
優(yōu)選地,該防止被加數(shù)側(cè)信道信息泄露的安全處理方法,使用改進(jìn)型加法器和乘法器,實(shí)現(xiàn)乘法操作,其輸入數(shù)據(jù)為:經(jīng)過(guò)掩碼的被乘數(shù),掩碼,乘數(shù),隨機(jī)數(shù);輸出數(shù)據(jù)為:乘法結(jié)果,實(shí)現(xiàn)方法為:取隨機(jī)數(shù),使用改進(jìn)型加法器計(jì)算得到,然后計(jì)算得到的結(jié)果。
本發(fā)明的有益效果是,本電路使用改進(jìn)的加法器電路及其安全處理方法,用硬件電路實(shí)現(xiàn)從異或運(yùn)算到加法運(yùn)算的遷移,使得安全處理效率大大提高。
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
附圖說(shuō)明
圖1是本發(fā)明的改進(jìn)型加法器結(jié)構(gòu)示意圖。
圖2是本發(fā)明的改進(jìn)型加法器邏輯運(yùn)算示意圖。
圖3是本發(fā)明的改進(jìn)型加法器和乘法器乘法運(yùn)算具體實(shí)施例圖。
圖4是本發(fā)明的防止被加數(shù)側(cè)信道信息泄露的安全處理方法具體實(shí)施例圖。
具體實(shí)施方式
參看圖1所示,改進(jìn)型加法器結(jié)構(gòu)示意圖;該改進(jìn)型加法器的輸入端口分別為:32位經(jīng)過(guò)掩碼的被加數(shù)數(shù)據(jù),32位加數(shù)數(shù)據(jù),32位掩碼數(shù)據(jù),以及進(jìn)位輸入位,輸出端口為:32位加法結(jié)果Sum,以及1位進(jìn)位輸出位;電路中包含32個(gè)改進(jìn)型單比特全加器,每個(gè)改進(jìn)型單比特全加器的輸入端口為:1位經(jīng)過(guò)掩碼的被加數(shù),1位加數(shù),一位掩碼,1位進(jìn)位,每個(gè)單比特全加器的輸出端口為:1位結(jié)果,1位進(jìn)位。
參看圖1所示,改進(jìn)型加法器的輸入數(shù)據(jù)的32位,分別對(duì)應(yīng)32個(gè)改進(jìn)型單比特全加器的端口;改進(jìn)型加法器的輸入數(shù)據(jù)中32位,分別對(duì)應(yīng)32個(gè)改進(jìn)型單比特全加器的端口;改進(jìn)型加法器的輸入數(shù)據(jù)m的32位,分別對(duì)應(yīng)32個(gè)改進(jìn)型單比特全加器的端口;改進(jìn)型加法器的輸入數(shù)據(jù)與第1個(gè)改進(jìn)型單比特全加器的輸入端口相連接;每個(gè)改進(jìn)型單比特全加器的輸出端口與下一個(gè)改進(jìn)型單比特全加器的輸入端口相連接;第32個(gè)改進(jìn)型單比特全加器的輸出端口與改進(jìn)型加法器的輸出端口相連接。
參看圖2所示,為改進(jìn)型加法器邏輯運(yùn)算具體實(shí)施例示意圖;加數(shù)先與掩碼數(shù)據(jù)進(jìn)行邏輯異或運(yùn)算,得到中間數(shù)據(jù)d1,將中間數(shù)據(jù)d1與被加數(shù)進(jìn)行邏輯異或運(yùn)算,得到中間數(shù)據(jù),將與輸入進(jìn)位進(jìn)行邏輯異或運(yùn)算得到輸出結(jié)果,將與輸入進(jìn)位進(jìn)行邏輯與運(yùn)算得到中間數(shù)據(jù),被加數(shù)先取反得到,掩碼取反得到,將取反后的與取反后的進(jìn)行邏輯或運(yùn)算得到中間數(shù)據(jù)d2,將與進(jìn)行邏輯或運(yùn)算得到中間數(shù)據(jù)d3,將中間數(shù)據(jù)d2與加數(shù)進(jìn)行邏輯與運(yùn)算得到中間數(shù)據(jù)d4,再將d4與d3進(jìn)行邏輯與運(yùn)算得到中間數(shù)據(jù),將中間數(shù)據(jù)與中間數(shù)據(jù)進(jìn)行邏輯或運(yùn)算得到輸出結(jié)果。
參看圖3所示,為本發(fā)明的改進(jìn)型加法器和乘法器實(shí)現(xiàn)的具體實(shí)施例示意圖;該改進(jìn)型加法器和乘法器,實(shí)現(xiàn)乘法操作,其輸入數(shù)據(jù)為:經(jīng)過(guò)掩碼的被乘數(shù),掩碼,乘數(shù),隨機(jī)數(shù);輸出數(shù)據(jù)為:乘法結(jié)果,實(shí)現(xiàn)方法為:取隨機(jī)數(shù),使用改進(jìn)型加法器計(jì)算得到,然后計(jì)算得到的結(jié)果。
參看圖4所示,為本發(fā)明的一種具有實(shí)施例,該安全電路處理方法;
1)由CPU將32位經(jīng)過(guò)掩碼的被加數(shù),32位加數(shù),32位掩碼和1位進(jìn)位輸入位寫(xiě)入寄存器中;
2)寄存器中存放的32位經(jīng)過(guò)掩碼的被加數(shù),32位加數(shù),32位掩碼和1位進(jìn)位輸入位被連接到改進(jìn)型加法器相應(yīng)輸入端口作為數(shù)據(jù)輸入;
3)從改進(jìn)型加法器端口輸入的32位經(jīng)過(guò)掩碼的被加數(shù),32位加數(shù),32位掩碼,被分別連接到32個(gè)改進(jìn)型單比特全加器上,與每個(gè)改進(jìn)型單比特全加器上1位經(jīng)過(guò)掩碼的被加數(shù)端口,1位掩碼端口,1位加數(shù)端口相對(duì)應(yīng),改進(jìn)型加法器的1位進(jìn)位輸入位連接到第1個(gè)改進(jìn)型單比特全加器的1位進(jìn)位輸入端口上;
4)在改進(jìn)型單比特全加器中1位經(jīng)過(guò)掩碼的被加數(shù)端口,1位掩碼端口,1位加數(shù)端口通過(guò)改進(jìn)型半加器的計(jì)算,得到該改進(jìn)型半加器的運(yùn)算結(jié)果,包括1位半加器本位結(jié)果和1位半加器進(jìn)位結(jié)果;
5)將改進(jìn)型半加器的本位輸出結(jié)果與改進(jìn)型單比特全加器的進(jìn)位輸入位相異或,作為改進(jìn)型單比特全加器的1位本位輸出結(jié)果,將改進(jìn)型半加器的本位輸出結(jié)果與改進(jìn)型單比特全加器的進(jìn)位輸入位進(jìn)行與運(yùn)算,再和改進(jìn)型半加器的進(jìn)位輸出結(jié)果進(jìn)行或運(yùn)算,作為改進(jìn)型單比特全加器的1位進(jìn)位輸出結(jié)果;
6)將改進(jìn)型單比特全加器進(jìn)位結(jié)果,連接到下一個(gè)改進(jìn)型單比特全加器的進(jìn)位輸入端口;
7)將所有32個(gè)改進(jìn)型單比特全加器的本位結(jié)果合并,作為改進(jìn)型加法器的32位加法結(jié)果輸出,將第32個(gè)改進(jìn)型單比特全加器的進(jìn)位結(jié)果作為改進(jìn)型加法器的進(jìn)位輸出;
8)將改進(jìn)型加法器的32位加法結(jié)果和1位進(jìn)位輸出,保存在寄存器中,由CPU從寄存器中讀出。
上述僅為本發(fā)明的具體實(shí)施例,本領(lǐng)域普通技術(shù)人員在不脫離本發(fā)明技術(shù)思路的基礎(chǔ)上能有許多變形和變化,這些顯而易見(jiàn)形成的技術(shù)方案也包含在本發(fā)明保護(hù)的技術(shù)范圍內(nèi),故凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、同等替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利保護(hù)范圍之內(nèi)。