專(zhuān)利名稱(chēng):一種快速公開(kāi)密鑰數(shù)字簽名算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息加密領(lǐng)域,特別涉及一種適用實(shí)體鑒別硬件密碼器的快速公開(kāi)密鑰數(shù)字簽名算法。
背景技術(shù):
數(shù)字簽名算法是公鑰基礎(chǔ)設(shè)施(PKI)的核心技術(shù)之一,重要的數(shù)字簽名算法都被授予過(guò)專(zhuān)利。目前國(guó)際上使用較多的公開(kāi)密鑰數(shù)字簽名算法主要有RSA和DSA算法、以及基于橢圓曲線(xiàn)離散對(duì)數(shù)問(wèn)題的公鑰簽名算法。
如何防止私鑰泄密是PKI技術(shù)推廣應(yīng)用中的一個(gè)至關(guān)重要的問(wèn)題。采用可隨身攜帶的小型硬件如IC-卡和USB-卡存儲(chǔ)私鑰,避免將其放在計(jì)算機(jī)硬盤(pán)中是提高私鑰保密性的一個(gè)有效措施。但是,如果不能在硬件密碼器中完成所有與私鑰相關(guān)的運(yùn)算,而需要在簽名過(guò)程中把私鑰調(diào)入主機(jī)內(nèi)存,則私鑰通過(guò)主機(jī)被竊取的危險(xiǎn)性依然存在。由于現(xiàn)有公鑰簽名算法依賴(lài)大指數(shù)乘方運(yùn)算實(shí)現(xiàn)解密,其計(jì)算量大,目前還缺乏合適的國(guó)產(chǎn)CPU或國(guó)產(chǎn)集成芯片可用于制作普及型硬件密碼器。雖然市場(chǎng)上有可用的進(jìn)口產(chǎn)品,但價(jià)格偏高,也不利于我國(guó)建立自主的信息安全體系。故我國(guó)“十五”863計(jì)劃把研制具有自主知識(shí)產(chǎn)權(quán)的公鑰算法芯片和設(shè)計(jì)可證明安全性的新的公鑰體制(包括加密和簽名算法)作為重點(diǎn)課題列入信息安全技術(shù)主題和超大規(guī)模集成電路設(shè)計(jì)專(zhuān)項(xiàng)。
發(fā)明內(nèi)容
本發(fā)明需要解決的技術(shù)問(wèn)題是研究出一種新的公鑰簽名算法,使之具有簡(jiǎn)單快速的特點(diǎn),易于采用運(yùn)算能力較弱的國(guó)產(chǎn)CPU或集成規(guī)模較低的國(guó)產(chǎn)芯片制作實(shí)體鑒別硬件密碼器。本發(fā)明的目的,是采用以下技術(shù)方案來(lái)實(shí)現(xiàn)的,其特征是(a)選取一個(gè)RSA模數(shù)n=pq,其中p和q是兩個(gè)秘密的大數(shù)素;(b)選取兩個(gè)小于n的正整數(shù)λ1和λ2作為私鑰,其中g(shù)cd(λ1-λ2,n)=1;(c)按如下公式計(jì)算兩個(gè)小于n的正整數(shù)σ1和σ2σ1=(λ1+λ2)(mod n) (1)
σ2=(λ1λ2)(mod n)(2)公鑰取為三元組(n,σ1,σ2);(d)對(duì)信息M的簽名算法分為兩步,第一步計(jì)算M的散列值,并將其分解為一對(duì)小于n的正整數(shù)m1和m2,即將信息映射為一個(gè)二元組(m1,m2);第二步(m1,m2)的數(shù)字簽名取為s=μ1x(mod n)。
(3)其中x是一個(gè)公開(kāi)的系統(tǒng)參數(shù),可取為較小的正整數(shù),μ1滿(mǎn)足如下方程(λ1μ1+λ2μ2)(mod n)=m1, (4)(μ1+μ2)(mod n)=m2; (5)(e)對(duì)信息M的簽名驗(yàn)證算法分為三步第一步計(jì)算M的散列值,并將其映射為(m1,m2);第二步根據(jù)由(1)和(2)確定的公鑰與私鑰之間的關(guān)系以及μ1和μ2所滿(mǎn)足的方程(5)和(6)計(jì)算ε=(μ1x+μ2x)(mod n), (6)δ=(μ1μ2)x(mod n); (7)第三步驗(yàn)證數(shù)字簽名s是否滿(mǎn)足如下方程(s2-εs+δ)(mod n)=0,(8)若滿(mǎn)足,則接受簽名為真,否則予以拒絕。
本發(fā)明的有益效果是可以用一個(gè)很小的x保證簽名算法的安全性,從而產(chǎn)生出迄今為止世界上最快速的公開(kāi)密鑰數(shù)字簽名算法。該算法能夠有效降低開(kāi)發(fā)實(shí)體鑒別硬件密碼器對(duì)芯片集成技術(shù)的要求,為采用國(guó)產(chǎn)化產(chǎn)品滿(mǎn)足我國(guó)電子商務(wù)和電子政務(wù)的需求提供一項(xiàng)實(shí)用的新技術(shù)。將本發(fā)明的簽名算法邏輯和RSA的簽名驗(yàn)證算法邏輯封裝在一起可以構(gòu)成一種互補(bǔ)公鑰算法的實(shí)體鑒別密碼器。這種硬件密碼器的特點(diǎn)是對(duì)微處理器的運(yùn)算能力或芯片的集成規(guī)模要求不高,造價(jià)低廉,在客戶(hù)-服務(wù)器應(yīng)用體系中能夠作為獨(dú)立的客戶(hù)端,與服務(wù)器實(shí)現(xiàn)雙向身份驗(yàn)證,特別適用于電子政務(wù)應(yīng)用。
四
附圖是實(shí)施本發(fā)明所需要的模塊及其相互之間邏輯關(guān)系的框圖。
五具體實(shí)施例方式
以下結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施方法作進(jìn)一步的說(shuō)明。
(一)摸數(shù)計(jì)算。該模塊產(chǎn)生秘密素?cái)?shù)p和q,并計(jì)算模數(shù)n=pq。摸數(shù)可由用戶(hù)自己計(jì)算,也可由密鑰管理中心提供,并由密鑰管理中心保管其素?cái)?shù)因子,以滿(mǎn)足密鑰托管的要求,如附圖所示。只要p和q保密,摸數(shù)可以共享,這個(gè)特點(diǎn)可以減輕密鑰管理中心的負(fù)擔(dān)。
(二)密鑰計(jì)算。本模塊首先采用隨機(jī)數(shù)發(fā)生器生成秘密隨機(jī)數(shù)λ1,λ2,并按(1)和(2)計(jì)算公鑰σ1,σ2。
(三)簽名。本模塊先采用公知的算法如SHA和MD5算出信息的散列值,并將其分為兩半,高位部分為m1,低位部分為m2,再按如下公式算出(4)和(5)的解μ1=(m2-λ2m1)(λ1-λ2)-1(mod n),(9)μ2=(m2-λ1m1)(λ2-λ1)-1(mod n), (10)最后按(3)算出簽名,其中x可取為一個(gè)8比特的短整數(shù)。
(四)簽名驗(yàn)證。根據(jù)(9)和(10)可得ρ=μ1μ1(mod n)=(m22-σ1m1m2+σ2m12)(4σ2-σ12)-1(mod n); (11)本模塊根據(jù)(11)計(jì)算δ=ρx(mod n),并采用如下遞推公式計(jì)算ε=zxz1=(μ1+μ2)(mod n)=m2,(12)z2=(μ12+μ22)(mod n)=(m22-2ρ)(mod n),(13)zi+1=(μ1i+1+μ2i+1)(mod n)=[(μ1+μ2)(μ1i+μ2i)-μ1μ2(μ1i-1+μ2i-1)(mod n)=(m2zi-ρzi-1)(mod n),i=3,4,...x, (14)本模塊并引入如下公式加速ε的計(jì)算過(guò)程z2i=(μ12i+μ22i)(mod n)=[(μ1i+μ2i)2-2(μ1μ2)i](mod n)=(zi2-2ρi)(mod n)。(15)(六)實(shí)體鑒別硬件密碼器。如附圖所示,由于RSA的簽名驗(yàn)證算法邏輯與本發(fā)明的簽名算法邏輯基本相同,且兩者計(jì)算量相當(dāng),故可以在一個(gè)硬件密碼器中同時(shí)封裝以上兩種算法邏輯。在客戶(hù)-服務(wù)器應(yīng)用體系中,本發(fā)明的算法用于客戶(hù)端的簽名,RSA的算法用于對(duì)服務(wù)器簽名的驗(yàn)證,從而實(shí)現(xiàn)客戶(hù)端與服務(wù)器的雙向身份驗(yàn)證。
權(quán)利要求
1.一種公開(kāi)密鑰數(shù)字簽名算法,其特征在于(a)選取一個(gè)RSA模數(shù)n=pq,其中p和q是兩個(gè)秘密的大數(shù)素;(b)選取兩個(gè)小于n的正整數(shù)λ1和λ2作為私鑰,其中g(shù)cd(λ1-λ2,n)=1;(c)按如下公式計(jì)算兩個(gè)小于n的正整數(shù)σ1和σ2σ1=(λ1+λ2)(mod n) (1)σ2=(λ1λ2)(mod n)(2)公鑰取為三元組(n,σ1,σ2);(d)對(duì)信息M的簽名算法分為兩步,第一步計(jì)算M的散列值,并將其分解為一對(duì)小于n的正整數(shù)m1和m2,即將信息映射為一個(gè)二元組(m1,m2);第二步(m1,m2)的數(shù)字簽名取為s=μ1x(mod n)。
(3)其中x是一個(gè)公開(kāi)的系統(tǒng)參數(shù),可取為較小的正整數(shù),μ1滿(mǎn)足如下方程(λ1μ1+λ2μ2)(mod n)=m1, (4)(μ1+μ2)(mod n)=m2; (5)(e)對(duì)信息M的簽名驗(yàn)證算法分為三步第一步計(jì)算M的散列值,并將其映射為(m1,m2);第二步根據(jù)由(1)和(2)確定的公鑰與私鑰之間的關(guān)系以及μ1和μ2所滿(mǎn)足的方程(4)和(5)計(jì)算ε=(μ1x+μ2x)(mod n),(6)δ=(μ1μ2)x(mod n); (7)第三步驗(yàn)證數(shù)字簽名s是否滿(mǎn)足如下方程(s2-εs+δ)(mod n)=0,(8)若滿(mǎn)足,則接受簽名為真,否則予以拒絕。
2.如權(quán)利要求1所述的公開(kāi)密鑰數(shù)字簽名算法的實(shí)現(xiàn)方法,其特征在于(a)進(jìn)行簽名時(shí),按如下公式算出(4)和(5)的解μ1=(m2-λ2m1)(λ1-λ2)-1(mod n), (9)μ2=(m2-λ1m1)(λ2-λ1)-1(mod n), (10)(b)進(jìn)行簽名驗(yàn)證時(shí),先根據(jù)(9)和(10)算出ρ=μ1μ1(mod n)=(m22-σ1m1m2+σ2m12)(4σ2-σ12)-1(mod n);(11)而后根據(jù)(11)計(jì)算δ=ρx(mod n),并采用如下遞推公式計(jì)算ε=zxz1=(μ1+μ2)(mod n)=m2,(12)z2=(μ12+μ22)(mod n)=(m22-2ρ)(mod n), (13)zi+1=(μ1i+1+μ2i+1)(mod n)=[(μ1+μ2)(μ1i+μ2i)-μ1μ2(μ1i-1+μ2i-1)(mod n)=(m2zi-ρzi-1)(mod n),i=3,4,...x, (14)同時(shí)采用如下公式加速ε的計(jì)算過(guò)程z2i=(μ12i+μ22i)(mod n)=[(μ1i+μ2i)2-2(μ1μ2)i](mod n)=(zi2-2ρi)(mod n)。 (15)
全文摘要
一種迄今為止世界上最快速的公開(kāi)密鑰數(shù)字簽名算法,能夠有效降低開(kāi)發(fā)實(shí)體鑒別硬件密碼器對(duì)芯片集成技術(shù)的要求,為采用國(guó)產(chǎn)化產(chǎn)品滿(mǎn)足我國(guó)電子商務(wù)和電子政務(wù)的需求提供一項(xiàng)實(shí)用的新技術(shù)。
文檔編號(hào)H04L9/30GK1555150SQ20031012115
公開(kāi)日2004年12月15日 申請(qǐng)日期2003年12月22日 優(yōu)先權(quán)日2003年12月22日
發(fā)明者鄭建德 申請(qǐng)人:鄭建德