專利名稱:一種基于杠桿函數(shù)和超遞增序列的數(shù)字簽名方法
(一)技術(shù)領(lǐng)域公開密鑰數(shù)字簽名方法(簡稱公鑰數(shù)字簽名方法或簽名方法)屬于密碼技術(shù)和計算機技術(shù)領(lǐng)域,是信息安全的核心技術(shù)之一。
背景技術(shù):
密碼技術(shù)的發(fā)展經(jīng)歷了古典密碼技術(shù)、對稱密碼技術(shù)和公鑰密碼技術(shù)三個階段。1978年,美國學者Diffie和Hellman提出公鑰密碼體制的思想,標志著公鑰密碼技術(shù)的來臨。目前,普遍使用的數(shù)字簽名技術(shù)有RSA方案、Rabin方案和E1Gamal方案(參見《應(yīng)用密碼學》,美國Bruce Schneier著,吳世忠、祝世雄等譯,機械工業(yè)出版社,2000年1月,第334-342頁)。為了提高安全性,ElGamal方案常在橢圓曲線上實現(xiàn),此時,它叫ECC方案。另外還有一個DSA簽名方案,它是ElGamal簽名方案的改進。
上述方法都是美國人發(fā)明的。它們的安全性基于大數(shù)難于計算的復(fù)雜性,即在有限的時間和資源內(nèi),對大數(shù)進行因式分解或離散對數(shù)求解幾乎是不可能的。但是,隨著計算機運算速度的提高,它們的安全強度有被削弱的可能。
發(fā)明內(nèi)容本發(fā)明是對“一種基于杠桿函數(shù)和超遞增序列的公鑰加密方法”(專利號ZL03156920.X)的一個引申和補充,所以,兩者的數(shù)學前提以及產(chǎn)生公開密鑰與私有密鑰的方案都是一致的。
通過本發(fā)明,使基于杠桿函數(shù)和超遞增序列的公鑰密碼系統(tǒng)既能用于數(shù)據(jù)加密,也能用于數(shù)字簽名。
數(shù)字簽名技術(shù)用于計算機網(wǎng)絡(luò)和通信網(wǎng)絡(luò)中雙方身份的確認和保證傳輸內(nèi)容的不可抵賴性、以及金融票據(jù)交易和文件簽發(fā)中身份的鑒別。
本發(fā)明希望我們國家在公鑰加密與數(shù)字簽名領(lǐng)域能夠擁有自己的核心技術(shù),以確保國家的信息安全和主權(quán)安全,同時提高我國防范金融欺詐的技術(shù)手段。
本節(jié)內(nèi)容略去了對有關(guān)性質(zhì)和結(jié)論的證明,如果需要補上,我們將立即呈交。
3.1兩個基本概念3.1.1超遞增序列設(shè)A1,A2,…,An為n個互不相同的正整數(shù),且滿足Ai>∑Ai(i=2,3,…,n;j=1,2,…,i-1)則稱這樣的正整數(shù)序列為超遞增序列,記為{A1,A2,…,An},簡記為{Ai}。
性質(zhì)對于任意的正整數(shù)m(1≤m≤n),從超遞增序列{Ai}中任選m個項,則該m個項的累加和(即子集和)E=Ai1+Ai2+···+Aim]]>是唯一確定的。
3.1.2杠桿函數(shù)設(shè)l(.)是由整數(shù)到整數(shù)的單射函數(shù),其定義域為{1,2,…,n},值域為{5,6,…,n+4}。
在ZL03156920.X加密方法中,當從公鑰推導(dǎo)私鑰或破譯密文時,需考慮{l(i)}的全排列數(shù)n!,當n足夠大時,窮舉{l(i)}的全排列是不可行的;但從私鑰和密文恢復(fù)明文時只需考慮{l(i)}的累加和,在n的多項式時間內(nèi)有解。因此,若以密文為支點,則l(.)是“公開”一端計算量大,“私有”一端計算量小。我們稱具有上述性質(zhì)的l(.)為杠桿函數(shù)。
在本方法中,仍需要杠桿函數(shù)的概念。
3.2數(shù)字簽名的技術(shù)方案本發(fā)明是一種基于杠桿函數(shù)和超遞增序列的公鑰數(shù)字簽名方法,簡稱REESSE2數(shù)字簽名方法,根據(jù)該方法,可制造數(shù)字簽名芯片,或開發(fā)數(shù)字簽名軟件等。因此,本發(fā)明是一種生產(chǎn)數(shù)字簽名產(chǎn)品所必須遵循的基本原理與技術(shù)方案,而不是物理產(chǎn)品本身。
本數(shù)字簽名方案,由密鑰生成、數(shù)字簽名和身份驗證等三部分組成。
3.2.1數(shù)字簽名與身份驗證操作假設(shè)用戶P欲通過網(wǎng)絡(luò)向用戶Q發(fā)送一個具有自己數(shù)字簽名的文件或消息F,其操作過程如下密鑰生成首先,用戶P應(yīng)該去第3方權(quán)威機構(gòu)(CA認證中心或數(shù)字證書中心)領(lǐng)取一對由密鑰生成部件輸出的私鑰(Private Key)與公鑰(Public Key),私鑰必須由用戶P自己保管,不得外泄;公鑰則允許以公鑰證書的形式向外界公開發(fā)放,以便于使用。
數(shù)字簽名操作用戶P在運行數(shù)字簽名部件的機器上用自己的私鑰對文件或消息F進行簽名,得到簽名碼,并把文件F連同簽名碼發(fā)送給用戶Q。
身份驗證操作用戶Q從CA中心獲得用戶P的公鑰證書,在運行身份驗證部件的機器上對接收到的文件F和其簽名碼進行驗證,以鑒定簽名碼是否為用戶P所為,文件F在傳輸過程中是否已被修改。
3.2.2密鑰生成部分密鑰生成部分供CA認證中心使用,用來產(chǎn)生一對私鑰和公鑰。其實現(xiàn)方法是
(1)隨機產(chǎn)生項數(shù)為n的超遞增序列{A1,A2,…,An}(2)找到一個正素數(shù)M>Σi=1nAi,]]>其滿足q|(M-1)且S2|(M-1)這里,q<n+4為任意素數(shù),S∈(264, )為素常數(shù)(3)隨機產(chǎn)生兩兩不同的函數(shù)值l(i),5≤l(i)≤(n+4),i=1,2,…,n(4)選取適當?shù)恼麛?shù)W<M和Z<M(5)計算非超遞增序列Ci←(Ai+Z*l(i))*W mod M,i=1,2,…,n最后,以({Ai}、{l(i)}、W、Z、M)作為私鑰,以({Ci}、M)作為公鑰。
注意在本文中,{l(i)}是{l(1),l(2),…,l(n)}的簡寫,{Ci}是{C1,C2,…,Cn}的簡寫。“*”為乘法?!癿od“代表求余。“gcd”代表最大公約數(shù)。 代表S不能整除U。
3.2.3數(shù)字簽名發(fā)送方即簽名方以自己的私鑰({Ai}、{l(i)}、W、Z、M)作為簽名密鑰。設(shè)F為待簽文件或消息,Hash為單向散列函數(shù)。
(1)令消息摘要H=Hash(F),其二進制形式為b1b2…bn(2)計算k←Σi=1nbi*l(i),]]>E←Σi=1nbi*Ai]]>(3)當xS≡H(mod M)有解(即H(M-1)/S)≡1(mod M))時,H←H+1(4)找到一隨機整數(shù)R<M使得U←((-H)R+E*W)S*H mod M滿足 和xS≡U(mod M)無解,其中,(-H)+H=M(5)計算V←((-H)(-R)+k*Z*W)Umod M,其中,(-R)+R=M-1算法執(zhí)行后,得到數(shù)字簽名碼(U、V),其可隨文件F一起發(fā)送給驗證者。
3.2.4身份驗證接收方以發(fā)送方的公開密鑰({Ci}、M)作為驗證密鑰。設(shè)F為待簽文件或消息,(U、V、Q)為其簽名碼。
(1)令消息摘要H=Hash(F),其二進制形式為b1b2…bn(2)計算E‾←Σi=1nbi*CimodM]]>(3)當xS≡H(mod M)有解時,H←H+1(4)計算X←UU*VSmod M,Y←((-H)E*S*H)Umod M(5)若X=Y(jié)、V≠1、U(M-1)/S≠1且 ,則簽名者身份有效且F未被修改,否則,簽名者身份無效或F在傳輸中已被修改算法執(zhí)行后,可以達到鑒別簽名真?zhèn)?、防發(fā)送者抵賴和抗攻擊者修改的目的。
3.3本數(shù)字簽名方法的安全性通過論證,基于杠桿函數(shù)和超遞增序列的公鑰數(shù)字簽名方法具有相當高的安全性,當它與加密方法配合使用時能滿足實際應(yīng)用的需要。
具體過程略(如果需要補上,我們將立即呈交)。
3.4優(yōu)點和積極效果3.4.1安全性較高在目前所用的RSA、ElGamal等數(shù)字簽名方案中,利用了大數(shù)難于計算的問題,隨著計算機速度的提高,它們的安全性將受到影響。而本數(shù)字簽名方法是利用了l(.)函數(shù)的不確定性,只是在被窮舉時才考慮計算機的運算速度,所以,具備更高的安全性。
3.4.2運算速度較快在本數(shù)字簽名方法中,無論是簽名還是驗證,主要涉及模加和模乘運算,它們只是n(一般n≤128)的線性函數(shù)。模冪運算的次數(shù)非常有限,且由于模數(shù)M較小,因此,速度也會很快。
3.4.3對國家安全有利互聯(lián)網(wǎng)是一種開放網(wǎng),在上面?zhèn)鬏數(shù)男畔⒈仨氝M行加密和簽名。由于我國政府、國防、金融、稅務(wù)等重要部門業(yè)已使用互聯(lián)網(wǎng)作為通信工具,所以,信息安全關(guān)系到國家安全和經(jīng)濟安全。但是,泱泱一個大國的信息安全不能建立在外來的密碼算法基礎(chǔ)之上,因此,研究我們自己的公開密鑰加密與簽名算法顯得勢在必行和具有重大意義。
具體實施方式
基于杠桿函數(shù)和超遞增序列的公鑰數(shù)字簽名方法的特點是它能夠讓每一用戶得到兩個密鑰,一個密鑰可以公開,一個密鑰只能私人擁有。這樣,就不會擔心密鑰在傳遞過程中泄密了。當約定通信者在網(wǎng)上傳輸信息時,發(fā)送者使用自己的私有密鑰對文件或消息進行數(shù)字簽名,接收者收到文件和簽名碼后使用發(fā)送者的公開密鑰對其進行驗證。
每個用戶可以到指定的CA(Certificate Authentication)認證中心取得兩個密鑰。CA認證中心是對用戶進行登記且對密鑰進行產(chǎn)生、分發(fā)和管理的一個機構(gòu)。它利用3.2.2節(jié)的密鑰生成方法產(chǎn)生用戶的公開密鑰與私有密鑰。
本數(shù)字簽名方法可以用邏輯電路芯片或程序語言來實現(xiàn),它包括兩部分(1)以3.2.2節(jié)內(nèi)容作為密鑰生成方法,由CA認證中心使用;(2)以3.2.3節(jié)和3.2.4節(jié)內(nèi)容作為數(shù)字簽名與身份驗證方法,由一般用戶使用。
下面舉例說明基于互素序列的公開密鑰數(shù)字簽名方法在下面,我們采用的Hash函數(shù)為H0=101110 (二進制數(shù))
Hi=(Hi-1Bi)((~Hi-1)Λ(~Bi)) (i=1,2,…,L)其中,表示二進制的異或運算,Λ表示二進制的與運算,~表示二進制的非運算,Bi表示n比特長的消息分組,L等于消息的總比特數(shù)除以n。
上述Hash函數(shù)只用來說明問題,實際應(yīng)用中的Hash函數(shù)比該Hash函數(shù)復(fù)雜。
4.1密鑰生成實例設(shè)超遞增序列{Ai}為1、3、7、12、25、51,其長度為6,即n=6(實際應(yīng)用中,超遞增序列長度至少應(yīng)為80)。
令素常數(shù)S=7,實際應(yīng)用中應(yīng)該S>264。
找到M=1471>1+3+7+12+25+51=99。
不難驗證,M滿足(72*2*3*5)|(M-1)。
隨機產(chǎn)生l(1)=6,l(2)=5,l(3)=10,l(4)=9,l(5)=7,l(6)=8。
選取W=123<M和Z=321<M。
計算Ci=(Ai+Z*l(i))W mod M,得到非超遞增序列C1=(A1+Z*l(1))W mod M=(1+321*6)123 mod 1471=237021 mod 1471=190C2=(A2+Z*l(2))W mod M=(3+321*5)123 mod 1471=197784 mod 1471=670C3=(A3+Z*l(3))W mod M=(7+321*10)123 mod 1471=395691 mod 1471=1463C4=(A4+Z*l(4))W mod M=(12+321*9)123 mod 1471=356823 mod 1471=841C5=(A5+Z*l(5))W mod M=(25+321*7)123 mod 1471=279456 mod 1471=1437C6=(A6+Z*l(6))W mod M=(51+321*8)123 mod 1471=322137 mod 1471=1459以({Ci}、M)作為公開密鑰,以({Ai}、{l(i)}、W、Z、M)作為私有密鑰。
4.2數(shù)字簽名實例設(shè)({Ai}{l(i)}、W、Z、M)為簽名用的私鑰。
設(shè)待簽文件或消息F的二進制形式為011010 101000 111000。
由于n=6,故每個消息分組長度為6比特,則L=18/6=3。
(1)利用Hash函數(shù)計算消息摘要H1=(H0B1)((~H0)Λ(~B1))=(101110011010)(010001Λ100101)=110101H2=(H1B2)((~H1)Λ(~B2))=(110101101000)(001010Λ010111)=011111H3=(H2B3)((~H2)Λ(~B3))=(011111111000)(100000Λ000111)=100111b1b2b3b4b5b6=H3=100111即為消息摘要,其10進制形式為H=25+22+2+1=39。
(2)計算k=Σi=16bi*l(i)=1*l(1)+1*l(4)+1*l(5)+1*l(6)=6+9+7+8=30.]]>E=Σi=1nbi*AimodM=1*A1+1*A4+1*A5+1*A6=1+12+25+51=89]]>
(3)因為H(M-1)/S)≡391470/7≡666(mod 1471),所以H=39時,xS≡H(mod M)無解。注意,根據(jù)同余方程的性質(zhì),如果H(M-1)/S≡1(mod M),則說明有解。
(4)計算(-H)=1471-39=1432。令R=15<M。
計算U=((-H)R+E*W)S*H mod M=(143215+89*123)7*39 mod M=1432294*39 mod 1471=1394*39 mod 1471=1410。
不難驗證, 和U(M-1)/Smod 1471=666≠1成立。
(5)計算(-R)=1470-15=1455。
計算V=((-H)(-R)+k*Z*W)Umod M=(14321455+30*321*123)1410mod M=(14321125)1410mod 1471=1432120mod 1471=1444。
所以,(1410、1444)即為簽名碼,其二進制形式可附在文件后面發(fā)送給接收方。
4.3身份驗證實例設(shè)({Ci}、M)為驗證用的公鑰,(1410、1444)為簽名碼。
文件或消息F的二進制形式為011010 101000 111000。
由于n=6,故每個消息分組長度為6比特,則L=18/6=3。
(1)利用Hash函數(shù)計算消息摘要H1=(H0B1)((~H0)Λ(~B1))=(101110011010)(010001Λ100101)=110101H2=(H1B2)((~H1)Λ(~B2))=(110101101000)(001010Λ010111)=011111H3=(H2B3)((~H2)Λ(~B3))=(011111111000)(100000Λ000111)=100111b1b2b3b4b5b6=H3=100111即為消息摘要,其10進制形式為H=25+22+2+1=39。
(2)計算E‾=Σi=1nbi*CimodM=C1+C4+C5+C6mod1471]]>=190+841+1437+1459+mod1471=985.]]>(3)因為H(M-1)/S≡391470/7≡666(mod 1471),所以H≡39時,xS≡H(mod M)無解。
(4)計算X=UU*VSmod M=14101410*14447mod M=271*1347 mod 1471=229計算Y=((-H)E*S*H)Umod M=(1432985*7*39)1410mod M=(716*39)1410mod 1471=229。
(5)X=Y(jié)=229、V≠1、U(M-1)/S≠1且 ,所以,簽名有效。
這說明對方身份正確,并且文件或消息F在簽名前與簽名后是一致的,即在通信過程中沒有被他人篡改。
舉例完畢。
權(quán)利要求
1.一種基于杠桿函數(shù)和超遞增序列的數(shù)字簽名方法,由密鑰生成、數(shù)字簽名和身份驗證三個部分組成,密鑰生成部分用來產(chǎn)生用戶的一對私有密鑰和公開密鑰(即私鑰和公鑰),數(shù)字簽名部分供發(fā)送方使用自己的私鑰對文件或消息產(chǎn)生簽名碼,身份驗證部分供接收方使用發(fā)送方的公鑰來驗證簽名碼,其特征在于●密鑰生成部分采用了下列步驟(1)隨機產(chǎn)生項數(shù)為n的超遞增序列{A1,A2,…,An)(2)找到一個正素數(shù)M>Σi=1nAi,]]>其滿足q|(M-1)且S2|(M-1)這里,q<n+4為任意素數(shù), 為素常數(shù)(3)隨機產(chǎn)生兩兩不同的函數(shù)值l(i),5≤l(i)≤(n+4),i=1,2,…,n(4)選取適當?shù)恼麛?shù)W<M和Z<M(5)計算非超遞增序列Ci=(Ai+Z*l(i))*W mod M,i=1,2,…,n結(jié)束后,以({Ci}、M)作為公鑰,以({Ai}、{l(i)}、W、Z、M)作為私鑰,其中,公鑰可以對外界公開,私鑰只能由用戶私自擁有;●數(shù)字簽名部分采用了下列步驟發(fā)送方以自己的私鑰({Ai}、{l(i)}、W、Z、M)作為簽名密鑰,針對文件F(1)令消息摘要H=Hash(F),其二進制形式為b1b2…bn(2)計算k=Σi=1nbi*l(i),]]>E=Σi=1nbi*Ai]]>(3)當xS≡H(mod M)有解(即H(M-1)/S≡1(mod M))時,H=H+1(4)找到一隨機整數(shù)R<M使得U=((-H)R+E*W)S*H mod M滿足 且xS≡U(mod M)無解,其中,(-H)+H=M(5)計算V=((-H)(-R)+k*Z*W)Umod M,其中,(-R)+R=M-1最后,得到簽名碼(U、V),它們可附在文件F后面發(fā)送給接收方;●身份驗證部分采用了下列步驟接收方以發(fā)送方的公鑰({Ci}、M)作為驗證密鑰,針對文件F和簽名碼(U、V)(1)令消息摘要H=Hash(F),其二進制形式為b1b2…bn(2)計算E=Σi=1nbi*cimodM]]>(3)當xS≡H(mod M)有解時,H=H+1(4)計算X=UU*VSmod M,Y=((-H)E‾*S*H)UmodM]]>(5)若X=Y(jié)、V≠1、U(M-1)/S≠1且 則簽名者身份有效且F未被修改,否則,簽名者身份無效或F在傳輸中已被修改。
全文摘要
密碼學、計算機科學;利用杠桿函數(shù)、超遞增序列的性質(zhì)和n次模根求解難題設(shè)計出一個公開密鑰數(shù)字簽名方法,包括密鑰生成、數(shù)字簽名和身份驗證三個部分;其用戶擁有一個私鑰和一個公鑰,且從公鑰不能推出私鑰;私鑰用于生成文件或消息的簽名碼,公鑰用于驗證文件或消息的簽名碼;該方法能有效抵御已有分析手段的攻擊,可用于計算機和通信網(wǎng)絡(luò)中任何文件、數(shù)據(jù)的簽名與驗證,以及電子政務(wù)、電子商務(wù)中的身份鑒定與內(nèi)容確認。
文檔編號G06F21/00GK1832402SQ20061007590
公開日2006年9月13日 申請日期2006年4月21日 優(yōu)先權(quán)日2006年4月21日
發(fā)明者蘇盛輝 申請人:蘇盛輝