欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實(shí)現(xiàn)ecc密碼體制中簽名算法的大整數(shù)求模運(yùn)算裝置及求模方法

文檔序號(hào):7740308閱讀:243來(lái)源:國(guó)知局
專利名稱:實(shí)現(xiàn)ecc密碼體制中簽名算法的大整數(shù)求模運(yùn)算裝置及求模方法
技術(shù)領(lǐng)域
本發(fā)明屬于通信技術(shù)領(lǐng)域,涉及橢圓曲線密碼體制ECC中的大整數(shù)求模運(yùn)算裝置,用于移動(dòng)終端間通信的認(rèn)證和不可否認(rèn)服務(wù)的數(shù)字簽名。

背景技術(shù)
當(dāng)前的密碼體制一般可劃分為兩種類型,即對(duì)稱密碼體制和公鑰密碼體制。
對(duì)稱密碼體制需要通信雙方A和B共享同一密鑰K,并且要保證A和B在協(xié)商密鑰的時(shí)候,信道是保密且保真的。這就導(dǎo)致了它的密鑰分發(fā)的問(wèn)題和密鑰的管理問(wèn)題,除此之外由于兩個(gè)或多個(gè)實(shí)體共享密鑰,所以對(duì)稱密鑰體制不能實(shí)現(xiàn)用于認(rèn)證和不可否認(rèn)服務(wù)的數(shù)字簽名。
與對(duì)稱密碼體制不同,公鑰密碼體制僅要求密鑰的交換是保真的,并不要求其是保密的。每個(gè)實(shí)體選擇一個(gè)密鑰對(duì),即公鑰與私鑰,其中公鑰對(duì)外是公開(kāi)的,私鑰自己保密,這種密鑰對(duì)需具備一個(gè)特點(diǎn)僅由公鑰不能計(jì)算出私鑰。由于每一個(gè)實(shí)體都具有唯一的私鑰,因此可以提供數(shù)據(jù)源和數(shù)據(jù)完整性的認(rèn)證以及不可否認(rèn)性服務(wù)。這樣,公鑰密碼圓滿地解決了上述對(duì)稱密碼面臨的三個(gè)問(wèn)題。
在公鑰加密機(jī)制中,雖然基于大整數(shù)因子分解問(wèn)題的加密機(jī)制RSA是目前主流的加密機(jī)制,但是RSA目前卻面臨著越來(lái)越嚴(yán)重的來(lái)自安全方面的挑戰(zhàn)。第六屆國(guó)際密碼學(xué)會(huì)議對(duì)應(yīng)用于公鑰密碼系統(tǒng)的加密算法推薦了兩種RSA算法和ECC算法。RSA算法的特點(diǎn)之一是數(shù)學(xué)原理簡(jiǎn)單,在工程應(yīng)用中比較易于實(shí)現(xiàn),但它的單位安全強(qiáng)度相對(duì)較低。橢圓曲線密碼算法建立在深?yuàn)W和復(fù)雜的數(shù)學(xué)理論之上,它的單位安全強(qiáng)度相對(duì)較高。這兩種算法安全強(qiáng)度的比較如表1所示。
表1RSA和ECC安全密鑰長(zhǎng)度的比較 需要指出的是,由于ECC的復(fù)雜度較高,它的運(yùn)算通常比較慢。需要找到一種用硬件來(lái)實(shí)現(xiàn)ECC密碼體制的方案去提高運(yùn)算速度。ECC密碼體制主要是由有限域?qū)?、橢圓曲線層、橢圓曲線密碼協(xié)議層和一些特殊功能算法組成的,見(jiàn)圖2,其中有限域是基礎(chǔ),因此首先要找到一種適合硬件來(lái)實(shí)現(xiàn)的有限域。
有限域包括二進(jìn)制域和素?cái)?shù)域。二進(jìn)制域里的元素都是用0和1表示,而構(gòu)成二進(jìn)制域有一種方法是采用正規(guī)基表示法,在正規(guī)基表示法下域中元素的加法、減法以及平方開(kāi)方運(yùn)算分別對(duì)應(yīng)異或和移位操作,而這在硬件中如FPGA是非常容易實(shí)現(xiàn)的。但是即便作此選擇,在橢圓曲線密碼協(xié)議中,主要是ECDSA數(shù)字簽名算法里,除了二進(jìn)制域正規(guī)基下的運(yùn)算之外,還有一部分是素?cái)?shù)域的運(yùn)算,而求模運(yùn)算就是其中的一個(gè)關(guān)鍵步驟。
ECDSA的數(shù)字簽名算法如下。
ECDSA簽名的生成 輸入?yún)?shù)組D=(q,F(xiàn)R,S,a,b,P,n,h),私鑰d,消息m。
輸出簽名(r,s)。
(1)選擇k∈[1,n-1]。
(2)計(jì)算kP=(x1,y1),并將x1轉(zhuǎn)換為整數(shù)
(3)計(jì)算

若r=0,則跳至步驟(1)。
(4)計(jì)算e=H(m)。
(5)計(jì)算s=k-1(e+dr)mod n。若s=0,則跳至步驟(1)。
(6)返回(r,s)。
ECDSA簽名的驗(yàn)證 輸入?yún)?shù)組D=(q,F(xiàn)R,S,a,b,P,n,h),公鑰Q,消息m,簽名(r,s)。
輸出判斷簽名是否合法。
1)檢驗(yàn)r和s是否區(qū)間[1,n-1]內(nèi)的整數(shù)。若任何一個(gè)檢驗(yàn)失敗,則返回(“拒絕該簽名”)。
2)計(jì)算e=H(m)。
3)計(jì)算w=s-1 mod n。
4)計(jì)算u1=ew mod n和u2=rw mod n。
5)計(jì)算X=u1P+u2Q。
6)若X=∞,則返回(“拒絕該簽名”)。
7)將X的橫坐標(biāo)x1轉(zhuǎn)換為整數(shù)

;計(jì)算
8)若v=r,則返回(“接收該簽名”);否則,返回(“拒絕該簽名”)。
從上述ECDSA的數(shù)字簽名算法中可以看出,生成算法里的第(3)步和第(5)步以及驗(yàn)證算法里的第3)步、第4)步和第7)步都需要用到素?cái)?shù)域上的求模運(yùn)算。在當(dāng)今技術(shù)條件下,為了滿足密碼算法的安全性,密鑰等參數(shù)的位寬至少要在160比特以上,而160比特位寬以上的素域求模運(yùn)算就是一些大整數(shù)的求模運(yùn)算,本發(fā)明所提及的大整數(shù)指的是160比特位寬以上的整數(shù)。
現(xiàn)有的求模技術(shù)主要有三種第一種是依據(jù)求模的定義,通過(guò)將被求模量a循環(huán)多次減模n的方法去計(jì)算a mod n,這種方法理論上雖然簡(jiǎn)單通用,但是實(shí)際中并不適用于大整數(shù)間的求模,因?yàn)殡S著數(shù)據(jù)位寬的增大它的計(jì)算時(shí)間將會(huì)是一個(gè)天文數(shù)字,實(shí)際不可行;第二種是由美國(guó)標(biāo)準(zhǔn)與技術(shù)研究所NIST在數(shù)字簽名標(biāo)準(zhǔn)中給出的一些特殊素域上的快速求模算法,但這些快速求模算法只能針對(duì)特殊情況使用,不具有一般性;第三種是Barrett約減方法,該方法具有通用性也適用于大整數(shù),但是需要一種高成本的與模相關(guān)的計(jì)算來(lái)支持。如果不能找到一種通用有效且低成本的FPGA實(shí)現(xiàn)方法來(lái)提高大整數(shù)的求模運(yùn)算效率,將無(wú)法體現(xiàn)出ECC在二進(jìn)制域正規(guī)基表示下的硬件實(shí)現(xiàn)優(yōu)勢(shì)。


發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述已有技術(shù)的不足,提供一種實(shí)現(xiàn)ECC密碼體制中簽名算法的大整數(shù)求模運(yùn)算裝置及求模方法,以提高對(duì)數(shù)字簽名過(guò)程中的大整數(shù)求模運(yùn)算的效率,體現(xiàn)出ECC在二進(jìn)制域正規(guī)基表示下的硬件實(shí)現(xiàn)優(yōu)勢(shì)。
為實(shí)現(xiàn)上述目的,本發(fā)明的大整數(shù)求模運(yùn)算裝置包括 整數(shù)寄存器,用于存儲(chǔ)待求模整數(shù)a的值,且在運(yùn)算過(guò)程中更新a的值; 模值寄存器,用于存儲(chǔ)模n的值,模值寄存器中的數(shù)據(jù)在運(yùn)算過(guò)程中保持不變; 模值查找模塊,用于查找模值寄存器中的數(shù)據(jù)模n在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_n; 整數(shù)查找模塊,用于查找整數(shù)寄存器中的數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_a; 位數(shù)相減模塊,將count_a與count_n相減,求得兩者的位差值count_c=count_a-count_n; 移位寄存器,根據(jù)所得位差值將模值寄存器中的數(shù)據(jù)n向左移位兩次,以得到移位結(jié)果v和m,其中v=n<<count_c,m=n<<count_c-1; 數(shù)據(jù)相減模塊,將整數(shù)寄存器中的數(shù)據(jù)a和移位寄存器的輸出結(jié)果v或m進(jìn)行相減,當(dāng)a≥v時(shí),得到相減后的結(jié)果a′=a-v,當(dāng)a<v時(shí),得到相減后的結(jié)果a′=a-m,并將整數(shù)寄存器中的數(shù)據(jù)a更新為a′; 輸出模塊,判斷整數(shù)寄存器中的數(shù)據(jù)a與模值寄存器中的數(shù)據(jù)n的大小,并輸出最終的求模運(yùn)算的結(jié)果R,當(dāng)a>n時(shí)R=0,當(dāng)a=n時(shí),R=a-n,當(dāng)a<n時(shí),R=a。
為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)現(xiàn)ECC密碼體制中簽名算法的大整數(shù)求模方法,包括以下步驟 步驟1將ECDSA簽名算法中產(chǎn)生的素?cái)?shù)域上的位寬不小于160比特的大整數(shù)輸入到整數(shù)寄存器中; 步驟2將ECDSA簽名算法里基點(diǎn)P的階輸入到模值寄存器中; 步驟3查找模值寄存器中的數(shù)據(jù)模n在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_n; 步驟4查找整數(shù)寄存器中的數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_a; 步驟5計(jì)算count_a與count_n之間的位差值count_c=count_a-count_n,當(dāng)count_c≤0時(shí),執(zhí)行步驟8,當(dāng)count_c>0時(shí),執(zhí)行步驟6; 步驟6根據(jù)所得位差值count_c將模值寄存器中的數(shù)據(jù)n向左移位兩次,以得到移位結(jié)果v和m,其中v=n<<count_c,m=n<<count_c-1; 步驟7將整數(shù)寄存器中的數(shù)據(jù)a和移位結(jié)果v或m進(jìn)行相減,當(dāng)a≥v時(shí),得到相減后的結(jié)果a′=a-v,當(dāng)a<v時(shí),得到相減后的結(jié)果a′=a-m,并將整數(shù)寄存器中的數(shù)據(jù)a更新為a′,返回步驟4; 步驟8當(dāng)整數(shù)寄存器中的數(shù)據(jù)a=n,輸出最終結(jié)果R=0,當(dāng)a>n,輸出最終結(jié)果R=a-n,當(dāng)a<n,輸出最終結(jié)果R=a。
本發(fā)明具有如下優(yōu)點(diǎn) 1)本發(fā)明的求模方法由查找運(yùn)算和減法運(yùn)算組成,這兩種運(yùn)算的理論簡(jiǎn)單,易于實(shí)現(xiàn),無(wú)需復(fù)雜的技術(shù)作為支持,較已知技術(shù)成本低; 2)本發(fā)明的求模方法對(duì)求模數(shù)據(jù)的位寬長(zhǎng)度沒(méi)有特殊要求,它適用于所有位寬長(zhǎng)度的整數(shù)求模運(yùn)算,較已知技術(shù)通用性強(qiáng); 3)本發(fā)明的求模方法在計(jì)算a mod n時(shí),整數(shù)寄存器中的數(shù)據(jù)a在每次更新后都至少可以降低一個(gè)有效位,當(dāng)a的位寬是L,n的位寬是S時(shí),理論上最慢經(jīng)過(guò)L-S次循環(huán)操作之后,即可得到最終結(jié)果,較已知技術(shù)運(yùn)算效率高。



圖1是已知橢圓曲線密碼體制的整體結(jié)構(gòu)示意圖 圖2是本發(fā)明求模運(yùn)算裝置的結(jié)構(gòu)示意圖; 圖3是本發(fā)明求模方法的流程圖; 圖4是本發(fā)明整數(shù)查找模塊中查找表的結(jié)構(gòu)示意圖; 圖5是本發(fā)明的仿真結(jié)果圖。

具體實(shí)施例方式 本發(fā)明的實(shí)際開(kāi)發(fā)平臺(tái)基于FPGA,但不限于FPGA。
參照?qǐng)D2,本發(fā)明的大整數(shù)求模運(yùn)算裝置,包括整數(shù)寄存器,模值寄存器,整數(shù)查找模塊,模值查找模塊,位數(shù)相減模塊,移位寄存器,數(shù)據(jù)相減模塊和輸出模塊。其中 整數(shù)寄存器,首先用于存儲(chǔ)系統(tǒng)外部輸入的待求模的大整數(shù)a,并將該寄存器中的當(dāng)前值輸出給整數(shù)查找模塊、數(shù)據(jù)相減模塊和輸出模塊,此外該整數(shù)寄存器還需要保存數(shù)據(jù)相減模塊完成運(yùn)算后的輸出結(jié)果a′,并在保存的同時(shí)將當(dāng)前寄存器中的數(shù)據(jù)a更新為a′,但在數(shù)據(jù)相減模塊未完成運(yùn)算之前,整數(shù)寄存器中的數(shù)據(jù)保持a不變。整數(shù)寄存器的位寬定義為ECDSA簽名算法中有限域元素的位寬的2倍。
模值寄存器,用于存儲(chǔ)系統(tǒng)外部輸入的整數(shù)模n,并將該整數(shù)模n輸出給模值查找模塊。模值寄存器的位寬與ECDSA簽名算法中有限域元素的位寬相同。
整數(shù)查找模塊,用于查找整數(shù)寄存器輸入的數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位所在的位數(shù)count_a,并將其輸出給位數(shù)相減模塊。整數(shù)查找模塊中包含一個(gè)查找表,如圖4所示。該查找表由0,1和任意態(tài)x組成,它是一個(gè)L*L規(guī)模的正方形矩陣,其中L為系統(tǒng)外部輸入的大整數(shù)a的位寬,該查找表存儲(chǔ)了整數(shù)寄存器中數(shù)據(jù)a的最高位存在的所有情況,在查找的時(shí)候如果數(shù)據(jù)a的形式對(duì)應(yīng)表中的第一行,則輸出count_a=L,如果數(shù)據(jù)a的形式對(duì)應(yīng)表中的第二行,則輸出count_a=L-1,如果數(shù)據(jù)a的形式對(duì)應(yīng)表中的最后一行,則輸出count_a=1。
模值查找模塊,用于查找模值寄存器輸入的數(shù)據(jù)n在二進(jìn)制表示形式下的最高有效位所在的位數(shù)count_n,并將其輸出給位數(shù)相減模塊。模值查找模塊中也包含一個(gè)查找表,該查找表和整數(shù)查找模塊中的查找表在結(jié)構(gòu)上是一樣,不同的是模值查找模塊中的查找表矩陣的邊長(zhǎng)等于數(shù)據(jù)模n的位寬,而整數(shù)查找模快中的查找表矩陣的邊長(zhǎng)是系統(tǒng)外部輸入的大整數(shù)a的位寬。
位數(shù)相減模塊,將整數(shù)查找模塊的查找結(jié)果count_a與模值查找模塊的查找結(jié)果count_n相減,求得兩者的位差值count_c=count_a-count_n,然后輸出給移位寄存器和輸出模塊。
移位寄存器,首先存儲(chǔ)模值寄存器中的模值n,然后根據(jù)位數(shù)相減模塊的輸出結(jié)果count_c對(duì)模值n進(jìn)行移位,移位分為兩次,第一次將n<<count_c,即將n左移count_c位,得到移位結(jié)果v,第二次將n<<count_c-1,即將n左移count_c-1位,得到移位結(jié)果m,并將兩次移位的結(jié)果v和m輸出給整數(shù)相減模塊。移位寄存器的位寬定義為ECDSA簽名算法中有限域元素的位寬的2倍。
整數(shù)相減模塊,包括一個(gè)判斷模塊和一個(gè)減法模塊。該判斷模塊判斷整數(shù)寄存器輸入的數(shù)據(jù)a和移位寄存器的輸出結(jié)果v的大小關(guān)系,并劃分成a≥v和a<v兩種情況,當(dāng)a≥v時(shí),由減法模塊做減法運(yùn)算,得到差值結(jié)果a′=a-v,當(dāng)a<v時(shí),由減法模塊做減法運(yùn)算,得到差值結(jié)果a′=a-m,并將a′輸出給整數(shù)寄存器。
輸出模塊,包括一個(gè)判斷模塊和一個(gè)減法模塊。該判斷模塊判斷整數(shù)寄存器中的數(shù)據(jù)a與模值寄存器中的數(shù)據(jù)n的大小關(guān)系,并劃分成a>n、a=n和a<n三種情況,當(dāng)a>n時(shí),直接輸出最終的求模結(jié)果R=0,當(dāng)a=n時(shí),先由減法模塊做減法運(yùn)算R=a-n,再輸出最終的求模結(jié)果R,當(dāng)a<n時(shí),直接輸出最終的求模結(jié)果R=a。
基于上述大整數(shù)求模運(yùn)算裝置,本發(fā)明對(duì)大整數(shù)求模進(jìn)行求模的基本思想是只要保證在一次減法運(yùn)算中被減數(shù)A與減數(shù)B做減法之后得到的結(jié)果r依然比B要大,則r1和rn在模B的條件下是相等的,其中r1是A減去1個(gè)B得到的差值結(jié)果,rn是A減去多個(gè)B得到的差值結(jié)果,例如A=23,B=3,則有A-B=20,A-2B=17,A-3B=14,很顯然20,17和14這三個(gè)數(shù)在模3的條件下是相等的,其結(jié)果都等于2。因此,只要保證被減數(shù)A在減去B之后所得結(jié)果r依然比B要大,那么通過(guò)每次減去盡可能多的B,就可以做到在每次做完減法運(yùn)算之后被減數(shù)A都至少可以減少一位有效位。將此思想用于計(jì)算a mod n,則當(dāng)a的位寬是L,n的位寬是S時(shí),理論上,最多采用L-S+1次減法運(yùn)算,便可得到最終結(jié)果。
參照?qǐng)D3,本發(fā)明的大整數(shù)求模方法,包括如下步驟 步驟1初始化整數(shù)寄存器和模值寄存器中的數(shù)據(jù)為0。
步驟2將ECDSA簽名算法中產(chǎn)生的素?cái)?shù)域上的位寬不小于160比特的大整數(shù)a輸入到整數(shù)寄存器中,為了方便說(shuō)明,設(shè)a的位寬是L,則在整數(shù)寄存器中a的表示形式為(al-1,al-2...a2,a1,a0)2。
步驟3將ECDSA簽名算法里基點(diǎn)P的階n輸入到模值寄存器中,為了方便說(shuō)明,設(shè)n的位寬是S,則在模值寄存器中n的表示形式為(ns-1,ns-2...n2,n1,n0)2。
步驟4將模值寄存器中的數(shù)據(jù)模n輸入到模值查找模塊中,查找模n在二進(jìn)制表示形式下的最高有效位即ns-1所在的位數(shù),并記為count_n。
步驟5將整數(shù)寄存器中的數(shù)據(jù)a輸入到整數(shù)查找模塊中,查找數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位即al-1所在的位數(shù),并記為count_a。
步驟6用位數(shù)減法模塊計(jì)算count_a與count_n之間的位差值count_c=count_a-count_n,count_c的數(shù)值將作為一個(gè)判斷條件來(lái)選擇下一步的運(yùn)算。當(dāng)count_c≤0時(shí),執(zhí)行步驟9,當(dāng)count_c>0時(shí),執(zhí)行步驟7。
步驟7將模值寄存器中的數(shù)據(jù)n輸入到移位寄存器中,并根據(jù)count_c將模值寄存器中的數(shù)據(jù)n向左移位兩次,分別得到移位結(jié)果v和m,其中v=n<<count_c,即數(shù)據(jù)n左移count_c位,m=n<<count_c-1,即數(shù)據(jù)n左移count_c-1位。理論上,移位結(jié)果v和m是數(shù)據(jù)n的2次冪整數(shù)倍里最接近a當(dāng)前值的兩個(gè)數(shù)。
步驟8將移位寄存器的移位結(jié)果v和m,整數(shù)寄存器里當(dāng)前的數(shù)據(jù)a和模n寄存器里的數(shù)據(jù)模n全部輸入到整數(shù)相減模塊中,并做如下運(yùn)算 8.1)當(dāng)a≥v,做減法a′=a-v運(yùn)算,并將結(jié)果a′輸出給整數(shù)寄存器,更新整數(shù)寄存器中的數(shù)據(jù)a為a′; 8.2)當(dāng)a<v,做減法a′=a-m運(yùn)算,并將結(jié)果a′輸出給整數(shù)寄存器,更新整數(shù)寄存器中的數(shù)據(jù)a為a′; 經(jīng)過(guò)本步驟的運(yùn)算,整數(shù)寄存器中的數(shù)據(jù)a在數(shù)值上至少降低了一個(gè)有效位,返回到步驟5,即重新查找當(dāng)前整數(shù)寄存器中的數(shù)據(jù)a的最高有效位。
步驟9將整數(shù)寄存器中的數(shù)據(jù)a和模值寄存器中的數(shù)據(jù)n輸入到輸出模塊,根據(jù)a和n的數(shù)值關(guān)系輸出不同的求模結(jié)果R 1)當(dāng)a=n,直接輸出最終結(jié)果R=0; 2)當(dāng)a>n,先做一次減法運(yùn)算求得R=a-n,然后輸出最終結(jié)果R; 3)當(dāng)a<n,直接輸出最終結(jié)果R=a; 以上步驟5,步驟6,步驟7和步驟8這四個(gè)步驟為一次循環(huán),每次循環(huán)在數(shù)值上至少可降低整數(shù)寄存器中數(shù)據(jù)a的一個(gè)有效位。在大整數(shù)a的位寬為L(zhǎng),模n的位寬是S的情況下,完成一次求模運(yùn)算最多需要L-S個(gè)循環(huán)周期。如果按照一個(gè)時(shí)鐘周期完成一個(gè)步驟的方式來(lái)計(jì)算,則完成一次求模運(yùn)算最多需要4(L-S)+7個(gè)時(shí)鐘周期。如此,在兆赫茲級(jí)的時(shí)鐘下,百位寬的大整數(shù)做一次求模運(yùn)算所需要的時(shí)間也是微秒級(jí)的。
本發(fā)明的效果可以通過(guò)以下仿真進(jìn)一步說(shuō)明 本發(fā)明的大整數(shù)求模運(yùn)算裝置在軟件Quartus2下進(jìn)行仿真,仿真結(jié)果如圖5所示。其中 圖5(a)是求模運(yùn)算開(kāi)始時(shí)刻的波形圖,該圖中輸入端口a所示的200位寬長(zhǎng)度的數(shù)據(jù)0xffffffffffffffffffffffffffffffffffffffffffffffffff即為輸入到本發(fā)明整數(shù)寄存器中的大整數(shù)a;輸入端口n所示的163位寬長(zhǎng)度的數(shù)據(jù)0X4000000000000000000020108a2e0cc0d99f8a5ef即為輸入到本發(fā)明模值寄存器中的數(shù)據(jù)模n,按照ECDSA算法的要求,該數(shù)據(jù)必須是一個(gè)素?cái)?shù);輸入端口nEN為低電平的時(shí)候表示求模運(yùn)算正式開(kāi)始,從圖5(a)中可以看出求模運(yùn)算的開(kāi)始時(shí)刻是450ns。
圖5(b)是求模運(yùn)算結(jié)束時(shí)刻的波形圖,該圖中輸出端口R所示的163位寬長(zhǎng)度的數(shù)據(jù)0x3ffffffffff7fbdd747cefda224b7504d99f8a5ee即為該求模運(yùn)算的最終輸出結(jié)果;輸出端口nDONE為低電平的時(shí)候代表求模運(yùn)算結(jié)束,從圖5(b)中可以看出求模運(yùn)算的結(jié)束時(shí)刻是15.85us。
本仿真的時(shí)鐘為10Mhz即100ns,理論上,如果按照一個(gè)時(shí)鐘周期完成一個(gè)步驟的方式來(lái)計(jì)算,該仿真最多耗時(shí)100*4*(200-163)ns+700ns=15500ns即155個(gè)時(shí)鐘周期,實(shí)際仿真結(jié)果表明整個(gè)求模運(yùn)算耗時(shí)15.4us,即154個(gè)時(shí)鐘周期,與理論分析值基本一致。
權(quán)利要求
1.一種實(shí)現(xiàn)ECC密碼體制中簽名算法的大整數(shù)求模運(yùn)算裝置,包括
整數(shù)寄存器,用于存儲(chǔ)待求模整數(shù)a的值,且在運(yùn)算過(guò)程中更新a的值;
模值寄存器,用于存儲(chǔ)模n的值,模值寄存器中的數(shù)據(jù)在運(yùn)算過(guò)程中保持不變;
模值查找模塊,用于查找模值寄存器中的數(shù)據(jù)模n在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_n;
整數(shù)查找模塊,用于查找整數(shù)寄存器中的數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_a;
位數(shù)相減模塊,將count_a與count_n相減,求得兩者的位差值count_c=count_a-count_n;
移位寄存器,根據(jù)所得位差值將模值寄存器中的數(shù)據(jù)n向左移位兩次,以得到移位結(jié)果v和m,其中v=n<<count_c,m=n<<count_c-1;
數(shù)據(jù)相減模塊,將整數(shù)寄存器中的數(shù)據(jù)a和移位寄存器的輸出結(jié)果v或m進(jìn)行相減,當(dāng)a≥v時(shí),得到相減后的結(jié)果a′=a-v,當(dāng)a<v時(shí),得到相減后的結(jié)果a′=a-m,并將整數(shù)寄存器中的數(shù)據(jù)a更新為a′;
輸出模塊,判斷整數(shù)寄存器中的數(shù)據(jù)a與模值寄存器中的數(shù)據(jù)n的大小,并輸出最終的求模運(yùn)算的結(jié)果R,當(dāng)a>n時(shí)R=0,當(dāng)a=n時(shí),R=a-n,當(dāng)a<n時(shí),R=a。
2.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中整數(shù)寄存器的位寬是ECDSA簽名算法中有限域元素的位寬的2倍。
3.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,模值寄存器的位寬與ECDSA簽名算法中有限域元素的位寬相同。
4.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中模值查找模塊包含一個(gè)由數(shù)據(jù)0,1和任意態(tài)x組成的查找表,該查找表存儲(chǔ)模值寄存器中數(shù)據(jù)模n的最高位存在的所有情況。
5.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中整數(shù)查找模塊包含一個(gè)由數(shù)據(jù)0,1和任意態(tài)x組成的查找表,該查找表存儲(chǔ)整數(shù)寄存器中整數(shù)a的最高位存在的所有情況。
6.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中移位寄存器的位寬等于ECDSA簽名算法中有限域元素的位寬的2倍。
7.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中數(shù)據(jù)相減模塊包括一個(gè)判斷模塊和一個(gè)減法模塊,判斷模塊判斷整數(shù)寄存器中的數(shù)據(jù)a和移位寄存器的輸出結(jié)果v的大小關(guān)系,當(dāng)a≥v時(shí),由減法模塊做減法運(yùn)算,得到結(jié)果a′=a-v,當(dāng)a<v時(shí),由減法模塊做減法運(yùn)算,得到結(jié)果a′=a-m,并將a′提供給整數(shù)寄存器。
8.根據(jù)權(quán)利要求1所述的求模運(yùn)算裝置,其中輸出模塊包括一個(gè)判斷模塊和一個(gè)減法模塊,判斷模塊判斷整數(shù)寄存器中的數(shù)據(jù)a與模值寄存器中的數(shù)據(jù)n的大小關(guān)系,當(dāng)a>n時(shí),直接輸出最終的求模結(jié)果R=0,當(dāng)a=n時(shí),先由減法模塊做減法運(yùn)算R=a-n,再輸出最終的求模結(jié)果R,當(dāng)a<n時(shí),直接輸出最終的求模結(jié)果R=a。
9.一種實(shí)現(xiàn)ECC密碼體制中簽名算法的大整數(shù)求模運(yùn)算方法,包括
步驟1將ECDSA簽名算法中產(chǎn)生的素?cái)?shù)域上的位寬不小于160比特的大整數(shù)輸入到整數(shù)寄存器中;
步驟2將ECDSA簽名算法里基點(diǎn)P的階輸入到模值寄存器中;
步驟3查找模值寄存器中的數(shù)據(jù)模n在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_n;
步驟4查找整數(shù)寄存器中的數(shù)據(jù)a在二進(jìn)制表示形式下的最高有效位所在的位數(shù),并記為count_a;
步驟5計(jì)算count_a與count_n之間的位差值count_c=count_a-count_n,當(dāng)count_c≤0時(shí),執(zhí)行步驟8,當(dāng)count_c>0時(shí),執(zhí)行步驟6;
步驟6根據(jù)所得位差值count_c將模值寄存器中的數(shù)據(jù)n向左移位兩次,以得到移位結(jié)果v和m,其中v=n<<count_c,m=n<<count_c-1;
步驟7將整數(shù)寄存器中的數(shù)據(jù)a和移位結(jié)果v或m進(jìn)行相減,當(dāng)a≥v時(shí),得到相減后的結(jié)果a′=a-v,當(dāng)a<v時(shí),得到相減后的結(jié)果a′=a-m,并將整數(shù)寄存器中的數(shù)據(jù)a更新為a′,返回步驟4;
步驟8當(dāng)整數(shù)寄存器中的數(shù)據(jù)a=n,輸出最終結(jié)果R=0,當(dāng)a>n,輸出最終結(jié)果R=a-n,當(dāng)a<n,輸出最終結(jié)果R=a。
全文摘要
本發(fā)明公開(kāi)了一種實(shí)現(xiàn)ECC密碼體制中簽名算法的大整數(shù)求模運(yùn)算裝置。它包括整數(shù)寄存器,模值寄存器,整數(shù)查找模塊,模值查找模塊,位數(shù)相減模塊,移位寄存器,數(shù)據(jù)相減模塊和輸出模塊。整數(shù)寄存器存儲(chǔ)待求模整數(shù)a的值;模值寄存器存儲(chǔ)模n的值;模值查找模塊查找模n最高有效位所在的位數(shù);整數(shù)查找模塊查找整數(shù)寄存器中數(shù)據(jù)a的最高有效位所在的位數(shù);通過(guò)位數(shù)相減模塊求得整數(shù)a和模值n的最高有效位的位差值;當(dāng)位差值大于0時(shí),先由移位寄存器將數(shù)據(jù)n向左移位兩次,再由數(shù)據(jù)相減模塊將數(shù)據(jù)a和移位結(jié)果進(jìn)行相減得到結(jié)果a′,并把整數(shù)寄存器中的數(shù)據(jù)a更新為a′;當(dāng)位差值小于等于0時(shí),由輸出模塊輸出最終的求模結(jié)果。本發(fā)明較已知技術(shù)成本低,通用性強(qiáng),效率高。
文檔編號(hào)H04L9/32GK101763241SQ201010013629
公開(kāi)日2010年6月30日 申請(qǐng)日期2010年1月20日 優(yōu)先權(quán)日2010年1月20日
發(fā)明者李小平, 劉彥明, 董慶寬, 李寧, 謝楷, 白麗娜 申請(qǐng)人:西安電子科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
岳西县| 柳江县| 韶山市| 霍城县| 新建县| 明星| 石屏县| 鲁山县| 鹰潭市| 商都县| 鄂伦春自治旗| 拉萨市| 喀什市| 克什克腾旗| 阿拉善盟| 平湖市| 泸州市| 南投市| 静乐县| 庆云县| 海阳市| 田阳县| 太保市| 泸州市| 福建省| 河北区| 延庆县| 大丰市| 四平市| 定边县| 万山特区| 太仆寺旗| 三门县| 方山县| 沂南县| 盘锦市| 长垣县| 西峡县| 大英县| 启东市| 贺州市|