本發(fā)明涉及數(shù)據(jù)安全的技術(shù)領(lǐng)域,具體涉及一種公鑰驗(yàn)證的方法及裝置。
背景技術(shù):
目前,攻擊者一般可以通過采集密碼系統(tǒng)、加密芯片等硬件設(shè)備在進(jìn)行加密、解密或簽名操作時所泄露的功耗等信息,利用密碼學(xué)、概率、統(tǒng)計(jì)學(xué)原理,分析和破譯密鑰信息。
例如,在利用RSA公鑰加密算法進(jìn)行加密、解密或簽名操作的硬件設(shè)備中,攻擊者可以通過采集公鑰驗(yàn)證過程中產(chǎn)生的功耗信息并進(jìn)行分析,來破解該硬件設(shè)備的私鑰。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題是如何提高應(yīng)用公鑰加密算法的設(shè)備的安全性。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種公鑰驗(yàn)證的方法,所述方法包括:
獲取私鑰d、待驗(yàn)證的公鑰e、隨機(jī)數(shù)m和r,其中,1<m<N,N為模數(shù);
根據(jù)所述隨機(jī)數(shù)r、私鑰d以及待驗(yàn)證的公鑰e獲得第一指數(shù)α,所述第一指數(shù)α為包含所述隨機(jī)數(shù)r、私鑰d以及待驗(yàn)證的公鑰e的數(shù)學(xué)式;
對mα進(jìn)行運(yùn)算獲得第一值y;
根據(jù)所述第一值y判斷所述待驗(yàn)證的公鑰e是否為正確的公鑰。
可選地,所述根據(jù)所述隨機(jī)數(shù)r、私鑰d以及待驗(yàn)證的公鑰e獲得第一指數(shù)α,包括:
計(jì)算e*d-1的值,獲得第二值β;
計(jì)算r*β+d的值,獲得第三值γ;
計(jì)算γ*e的值,獲得第一指數(shù)α。
可選地,所述第一指數(shù)α=r*d*e。
可選地,采用如下公式對mα進(jìn)行運(yùn)算獲得第一值y:y=mα mod N。
可選地,所述第一指數(shù)α=e*d-r。
可選地,所述計(jì)算第一值y包括:
計(jì)算mα mod N的值,獲得第四值y1;
計(jì)算mr mod N的值,獲得第五值y2;
計(jì)算y1*y2mod N的值,獲得所述第一值y。
本發(fā)明實(shí)施例還提供了一種公鑰驗(yàn)證的裝置,所述裝置包括:
獲取單元,適于獲取私鑰d、待驗(yàn)證的公鑰e、隨機(jī)數(shù)m和r,其中,1<m<N,N為模數(shù);
第一計(jì)算單元,適于根據(jù)所述隨機(jī)數(shù)r、私鑰d以及待驗(yàn)證的公鑰e獲得第一指數(shù)α,所述第一指數(shù)α為包含所述隨機(jī)數(shù)r、私鑰d以及待驗(yàn)證的公鑰e的數(shù)學(xué)式;
第二計(jì)算單元,適于對mα進(jìn)行運(yùn)算獲得第一值y;
判斷單元,適于根據(jù)所述第一值y判斷所述待驗(yàn)證的公鑰e是否為正確的公鑰。
可選地,所述第一計(jì)算單元包括:
第一計(jì)算子單元,適于計(jì)算e*d-1的值,獲得第二值β;
第二計(jì)算子單元,適于計(jì)算r*β+d的值,獲得第三值γ;
第三計(jì)算子單元,適于計(jì)算γ*e的值,獲得第一指數(shù)α。
可選地,所述第一計(jì)算單元包括:第四計(jì)算子單元,適于r*d*e的值作為所述第一指數(shù)α。
可選地,所述第二計(jì)算單元包括:第一運(yùn)算子單元,適于將mα mod N的值作為所述第一值y。
可選地,所述第一計(jì)算單元包括:第五計(jì)算子單元,適于將d*e-r的值作為所述第一指數(shù)α。
可選地,所述第二計(jì)算單元包括:
第二運(yùn)算子單元,適于計(jì)算mα mod N的值,獲得第四值y1;
第三運(yùn)算子單元,適于計(jì)算mr mod N的值,獲得第五值y2;
第四運(yùn)算子單元,適于計(jì)算y1*y2mod N的值,獲得所述第一值y。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有以下有益效果:
通過根據(jù)隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e來獲得第一指數(shù)α,進(jìn)而可以使得在驗(yàn)證所述待驗(yàn)證的公鑰e是否為正確公鑰的過程中,模冪運(yùn)算的指數(shù)為隨機(jī)值。換言之,每次公鑰驗(yàn)證的過程中模冪運(yùn)算的指數(shù)都是變化的,因此可以消除公鑰驗(yàn)證過程中產(chǎn)生的中間值與各種泄露信息之間的對應(yīng)關(guān)系,防止攻擊者通過獲取所述對應(yīng)關(guān)系來破解所述私鑰d,提高應(yīng)用公鑰加密算法的設(shè)備的安全性。
附圖說明
圖1是本發(fā)明實(shí)施例中一種公鑰驗(yàn)證的方法流程圖;
圖2是本發(fā)明實(shí)施例中一種公鑰驗(yàn)證的裝置結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例中一種第一計(jì)算的單元的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例中一種第二計(jì)算的單元的結(jié)構(gòu)示意圖。
具體實(shí)施方式
目前,RSA等加密算法在實(shí)現(xiàn)時,往往需要用到公鑰e。在有些情況下,公鑰e并不是已知的,通常需要通過私鑰d來進(jìn)行驗(yàn)證。由于在公鑰驗(yàn)證的過程中,模冪運(yùn)算的指數(shù)e*d通常為固定值,導(dǎo)致公鑰驗(yàn)證過程中產(chǎn)生的中間值與所泄露的功耗信息之間存在一定的對應(yīng)關(guān)系,因此攻擊者可以通過獲取多次公鑰驗(yàn)證過程中產(chǎn)生的中間值與所泄露的功耗信息之間的對應(yīng)關(guān)系,破解私鑰d。
針對上述問題,本發(fā)明實(shí)施例提供了一種公鑰驗(yàn)證的方法,在所述方法 中,模冪運(yùn)算的指數(shù)α為包含所述隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e的數(shù)學(xué)式,由此可以使得每次模冪運(yùn)算的指數(shù)α都是變化的,也就可以消除公鑰驗(yàn)證過程中產(chǎn)生的中間值與各種泄露信息之間的對應(yīng)關(guān)系,防止攻擊者通過獲取所述對應(yīng)關(guān)系來破解所述私鑰d,提高應(yīng)用公鑰加密算法的設(shè)備的安全性。
為使本發(fā)明的上述目的、特征和有益效果能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施例做詳細(xì)地說明。
如圖1所示,本發(fā)明實(shí)施例提供了一種公鑰驗(yàn)證的方法,所述方法可以包括如下步驟:
步驟11,獲取私鑰d、待驗(yàn)證的公鑰e、隨機(jī)數(shù)m和r,其中,1<m<N,N為模數(shù)。
步驟12,根據(jù)所述隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e獲得第一指數(shù)α,所述第一指數(shù)α為包含所述隨機(jī)數(shù)r、私鑰d、待驗(yàn)證的公鑰e及p的數(shù)學(xué)式。
步驟13,對mα進(jìn)行運(yùn)算獲得第一值y。
步驟14,根據(jù)所述第一值y判斷所述待驗(yàn)證的公鑰e是否為正確的公鑰。
在具體實(shí)施中,m為(1,N)區(qū)間內(nèi)的隨機(jī)數(shù)。所述私鑰d為已知,待驗(yàn)證的公鑰e為預(yù)先設(shè)定值,通過步驟11-14來驗(yàn)證待驗(yàn)證的公鑰e是否為正確的公鑰。
在本發(fā)明的一實(shí)施例中,所述第一指數(shù)α=r*d*e。相應(yīng)地,第一值y=mαmod N,即y=mr*d*emod N。此時,可以通過驗(yàn)證y是否等于mr mod N,來驗(yàn)證所述待驗(yàn)證的公鑰e是否為正確的公鑰。
在本發(fā)明的另一實(shí)施例中,可以先計(jì)算e*d-1的值,獲得第二值β,再計(jì)算r*β+d的值,獲得第三值γ,最后將γ*e的值作為所述第一指數(shù)α,即所述第一指數(shù)α=d+(e*d-1)*r。相應(yīng)地,第一值y=m d+(e*d-1)*r mod N。此時可以通過驗(yàn)證y是否等于m,來驗(yàn)證所述待驗(yàn)證的公鑰e是否為正確的公鑰。
在本發(fā)明的又一實(shí)施例中,所述第一指數(shù)α=e*d-r。相應(yīng)地,根據(jù)所述第一指數(shù)α獲得第一值y時,可以先計(jì)算mαmod N的值,獲得第四值y1,再計(jì)算mr mod N的值,獲得第五值y2,最后計(jì)算y1*y2mod N的值獲得所述第 一值y。也就是說,y1=m e*d-r mod N,y2=mr mod N,所述第一值y=y(tǒng)1*y2mod N=m e*d-r mod N*mr mod N=m e*d mod N。此時可以通過驗(yàn)證y是否等于m,來驗(yàn)證所述待驗(yàn)證的公鑰e是否為正確的公鑰。
需要說明的是,在具體實(shí)施中,所述第一指數(shù)α可以存在其他數(shù)學(xué)式形式,只要所述數(shù)學(xué)式中包含所述隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e,且可以通過對mα進(jìn)行運(yùn)算獲得的第一值y來對待驗(yàn)證的公鑰e進(jìn)行驗(yàn)證即可。由于所述第一值y中帶有隨機(jī)數(shù)r,因此,在將所述第一值y作為隨機(jī)數(shù)m的指數(shù)參與運(yùn)算時,可以使得隨機(jī)數(shù)m的指數(shù)隨機(jī)化,也就可以使得每次模冪運(yùn)算時的指數(shù)不同,從而可以達(dá)到防止攻擊的目的。
需要說明的是,本發(fā)明實(shí)施例中所述公鑰驗(yàn)證的方法,既可以適用于簽名算法中,也可以適用于解密算法中。具體無論將所述公鑰驗(yàn)證的方法應(yīng)用與何種算法,均不構(gòu)成對本發(fā)明的限制,且均在本發(fā)明的保護(hù)范圍之內(nèi)。
為了使本領(lǐng)域技術(shù)人員更好地理解和實(shí)現(xiàn)本發(fā)明,以下對上述公鑰驗(yàn)證的方法對應(yīng)的裝置進(jìn)行詳細(xì)描述。
如圖2所示,本發(fā)明實(shí)施例提供了公鑰驗(yàn)證的裝置,所述裝置可以包括:獲取單元21、第一計(jì)算單元22、第二計(jì)算單元23以及判斷單元24。其中:
所述獲取單元21適于獲取私鑰d、待驗(yàn)證的公鑰e、隨機(jī)數(shù)m和r,其中,1<m<N,N為模數(shù)。所述第一計(jì)算單元22適于根據(jù)所述隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e獲得第一指數(shù)α,所述第一指數(shù)α為包含所述隨機(jī)數(shù)r、私鑰d及待驗(yàn)證的公鑰e的數(shù)學(xué)式。所述第二計(jì)算單元23適于對mα進(jìn)行運(yùn)算獲得第一值y。所述判斷單元24適于根據(jù)所述第一值y判斷所述待驗(yàn)證的公鑰e是否為正確的公鑰。
在本發(fā)明的一實(shí)施例中,如圖3所示,所述第一計(jì)算單元22可以包括:第一計(jì)算子單元31,第二計(jì)算子單元32以及第三計(jì)算子單元33。其中,所述第一計(jì)算子單元31適于計(jì)算e*d-1的值,獲得第二值β。所述第二計(jì)算子單元32適于計(jì)算r*β+d的值,獲得第三值γ。所述第三計(jì)算子單元33適于計(jì)算γ*e的值,獲得第一指數(shù)α
在本發(fā)明的另一實(shí)施例中,所述第一計(jì)算單元22可以包括第四計(jì)算子單 元(未示出)。所述第四計(jì)算子單元適于計(jì)算r*d*e的值,獲得所述第一指數(shù)α。
當(dāng)α=r*d*e或α=γ*e時,所述第二計(jì)算單元32包括:第一運(yùn)算子單元(未示出),適于將mα mod N的值作為所述第一值y。
在本發(fā)明的又一實(shí)施例中,所述第一計(jì)算單元22可以包括第五計(jì)算子單元(未示出)。所述第五計(jì)算子單元適于將d*e-r的值作為所述第一指數(shù)α。
此時,如圖4所示,所述第二計(jì)算單元23包括:第二運(yùn)算子單元41,第三運(yùn)算子單元42以及第四運(yùn)算子單元43。其中,所述第二運(yùn)算子單元41適于計(jì)算mα mod N的值,獲得第四值y1。所述第三運(yùn)算子單元42,適于計(jì)算mr mod N的值,獲得第五值y2。所述第四運(yùn)算子單元43,適于計(jì)算y1*y2mod N的值獲得所述第一值y。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計(jì)算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:ROM、RAM、磁盤或光盤等。
雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。