專利名稱:具有增強保護以防選擇的密文攻擊的公用密鑰密碼系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明涉及使用將數(shù)字信息變換為密文的密鑰作為公用密鑰和將密文解密為原始數(shù)字信息的密鑰作為秘密密鑰的公用密鑰加密的方法,設備和系統(tǒng)。
隨著因特網(wǎng)和其他網(wǎng)絡的廣泛使用,人們經(jīng)常具有將數(shù)字信息的各種項目通過電話線發(fā)送到所需一方的機會。如果一個人希望將秘密信息通過電話線安全地發(fā)送到收信方,則該秘密信息需要被保護不被第三方使用。迄今為止已經(jīng)提出各種加密信息的方法以便提供保護不被使用。
根據(jù)密碼系統(tǒng)的基本方法,使用一個加密密鑰加密發(fā)送的數(shù)字信息,并且加密的數(shù)字數(shù)據(jù)發(fā)送到收信方。在收信方,使用一個解密密鑰將加密的數(shù)字數(shù)據(jù)解密為原始數(shù)字信息。
在下文,將數(shù)字信息變換為加密數(shù)據(jù)和發(fā)送加密數(shù)據(jù)的處理將叫做加密,而從加密數(shù)據(jù)恢復原始數(shù)字信息的處理叫做解密。發(fā)送的數(shù)字信息將叫做明文,而加密的數(shù)據(jù)叫做密文。因為數(shù)字信息或數(shù)據(jù)可以由數(shù)字值表達,所以將平等地處理代表明文和密文的數(shù)字信息或數(shù)據(jù)和數(shù)字值。
使用單獨的密鑰同時作為加密密鑰和解密密鑰的加密方法叫做共享密鑰密碼系統(tǒng),而使用不同密鑰作為加密密鑰和解密密鑰的加密方法叫做公用密鑰密碼系統(tǒng),其中公布加密密鑰作為公用密鑰和保持保密解密密鑰作為專用密鑰。
根據(jù)共享密鑰加密系統(tǒng),因為加密和解密密鑰是相同的,所以它們二者必須保持保密。但是,根據(jù)公用密鑰密碼系統(tǒng),希望發(fā)送數(shù)字信息給收信方的人使用公用密鑰加密數(shù)字信息為密文,和發(fā)送該密文給收信方。在收信方,接收者利用它自己的專用密鑰解密該密文。公用密鑰密碼系統(tǒng)在任何人可以產(chǎn)生密文,該密文可以只由某一個接收者解密,不需要發(fā)送者與接收者關(guān)于該專用密鑰通信方面是有利的。
下面將詳細描述常規(guī)的公用密鑰密碼系統(tǒng)。在描述常規(guī)公用密鑰密碼系統(tǒng)之前,下面首先簡要描述對于其理解所必需的數(shù)學基礎。這些數(shù)學細節(jié)由1982年Addison-Wesley發(fā)行公司,Dorothy Elizabeth Robling Denning的“密碼系統(tǒng)和數(shù)據(jù)安全”的第一章,第6節(jié)所覆蓋。
首先,下面描述余數(shù)。當“a”被N除時產(chǎn)生的余數(shù)“r”叫做“a”關(guān)于N的余數(shù)“r”,并且表示為“amod N=r”?!癮”關(guān)于N的余數(shù)等于“b”關(guān)于N的余數(shù)的事實被表示為“a=b(mod N)”。
gcd(P,Q)代表P和Q的最大公約數(shù)。(P|Q)代表P關(guān)于Q的雅可比符號值。雅可比值是這樣的即如果P1=P2(mod Q),則等式(P1|Q)=(P2|Q)滿足和等式(1|P)=1,(-1|P)=-1,(P1P2|Q)=(P1|Q)(P2|Q),(P|Q1Q2)=(P|Q1)(P|Q2)滿足。在上面的篇幅中詳細描述了雅可比符號的具體計算方法。雖然雅可比符號(P|Q)通常僅關(guān)于gcd(P,Q)=1的P和Q確定,但是根據(jù)本發(fā)明(P|Q)=0關(guān)于gcd(P,Q)≠1的P和Q確定。
在1980年的IEEE信息理論事物處理第IT-26卷,第6號,第726-729頁的H.C.Williams的“RSA公用密鑰加密過程修改”中詳細描述了雅可比符號定義的延伸。
計算延伸的雅可比符號的處理將從Denning的書,Williams的文章第106頁和雅可比符號的定義描述中變得清楚。具體地,為計算延伸的雅可比符號(P|Q),在確認gcd(P,Q)值的同時執(zhí)行計算雅可比符號的普通處理并且如果發(fā)現(xiàn)gcd(P,Q)不等于1,則終止正常的計算處理,并且計算的結(jié)果置為0。
如果存在滿足x2=a(mod p)的一個整數(shù)“x”,則“a”叫做模數(shù)p的兩次剩余,并且如果不存在這樣的整數(shù),則“a”叫做模數(shù)p的兩次非剩余。公知如果“p”是一個素數(shù),則滿足x2=a(mod p)的整數(shù)x的數(shù)最大是2,并且如果解彼此不同,則(a|p)=1,如果它們是多重根,則(a|p)=0,并且如果沒有解,則(a|p)=-1。
公知如果N是兩個素數(shù)的乘積,則滿足x2=a(mod N)的整數(shù)x的個數(shù)最多是4,和如果有4個不同的解,則(a|p)=1,如果有兩個不同的解,則(a|p)=0,a≠0,如果只有一個解,則a=0,和如果沒有解則(a|p)=-1。
Rabin加密方案已經(jīng)公知作為公用密鑰密碼體系。這種加密方案是計算機科學的麻省理工學院實驗室,Tech.Rep.LCS/TR212,劍橋MA計算機科學的麻省理工學院實驗室,1979年在M.O.Rabin“如因數(shù)分解一樣難處理的數(shù)字化簽名和公用密鑰功能”提出的密碼通信處理。Rabin加密方案是在Denning的書中第128頁詳細描述的。
根據(jù)Rabin加密方案,素數(shù)p,q用作保密密鑰和N=pq作為公用密鑰,和根據(jù)C=M2mod N執(zhí)行加密,此處M代表明文和C代表密文。P,q,N,M,C是從幾百比特到一千幾百比特范圍變化的數(shù)。如果N是從幾百比特到一千幾百比特范圍變化的數(shù),則將N因式分解為素數(shù)將由于包括的計算量實際變?yōu)椴豢赡艿?,并且公知破壞Rabin密文將和將N因式分解為素數(shù)一樣困難。
為根據(jù)Rabin加密方案將密文解密為明文,可以解決關(guān)于“x”的二次同余表達式X2=C(mod N)。為解出這個二次同余表達式,兩個二次同余表達式X2=C(mod p),X2=C(mod q)解出“x”。計算對于上面兩個疊和表達式的解的處理在Denning的書第116頁作了描述。一旦發(fā)現(xiàn)對于兩個二次同余表達式X2=C(mod p),X2=C(mod q)的解Xp,Xq,根據(jù)XN=qbpXp+pbqXqmod N可以發(fā)現(xiàn)對于二次同余表達式X2=C(mod N)的一個解XN,此處bp,bq滿足qbp=1(mod p),pbq=1(mod q)的值。解XN可以以上述的方式發(fā)現(xiàn)的事實可以通過替換二次同余表達式的解確認。
解Xp,Xq的每一個可以最多具有兩個值,并且因此解XN可以最多具有四個值。公知C的雅可比符號和XN可以具有的值的個數(shù)(即,二次同余表達式X2=C(mod N)的解的個數(shù),和XN的雅可比符號彼此如下相關(guān)如果((C|p),(C|q))=(0,0),則解的個數(shù)是1,和解XN的雅可比符號是((XN|p),(XN|q))=(0,0)。如果((C|p),(C|q))=(0,1),則解的個數(shù)是2,和解XN的雅可比符號可以取由((XN|p),(XN|q))=(0,1),(0,-1)表示的兩個值。如果((C|p),(C|q))=(1,0),則解的個數(shù)是2,和解XN的雅可比符號可以取由((XN|p),(XN|q))=(1,0),(-1,0)表示的兩個值。如果((C|p),(C|q))=(1,1),則解的個數(shù)是4,和解XN的雅可比符號可以取由((XN|p),(XN|q))=(1,1),(-1,-1),(-1,1),(1,-1)表示的四個值。
如上所述,Rabin方案在四個明文的最大值變換為一個密文C中存在問題,并且因此不可能從密文唯一地恢復明文。迄今,已經(jīng)習慣使用在1992年11月5日電子信函,第28卷,第23號,第2146-2147頁的.Shimada的“另一個實用的公用密鑰密碼系統(tǒng)”中提出的Rabin密碼系統(tǒng)。根據(jù)提出的改進的Rabin密碼系統(tǒng),取{0,1,...N-1}的一個值的密文C根據(jù)操作C=t(M)u(M)M2(mod N)從取{0,1,...N-1}的一個值的明文M中產(chǎn)生,此處t(M)是如果M≥(N+1)/2和t(M)=1則其值是t(M)=-1的一個函數(shù),另外,u(M)是其值是如果(M|N)=1則u(M)=2和否則u(M)=1的函數(shù)。在上面的文章中描述了這種加密方案能夠產(chǎn)生一一對應的功能。
但是,該改進的Rabin密碼系統(tǒng)在易受選擇性的密文攻擊上是不利的。具體地,如果四個密文C,-C mod N,2C mod N和-2C mod N利用關(guān)于密文C的公用密鑰解密,則得到二次同余表達式x2=C(mod N)的四個解作為各個相應的明文。當關(guān)于(x1|N)=1的解x1和(x2|N)=1的解x2計算gcd(x1-x2,N)時,得到那四個解的p或q的值作為最大公約數(shù)。
在普通的密碼通信中,密碼分析人員不可能得到這四個明文。在解密結(jié)果對任何人都公然可得到的數(shù)字簽名中,因為密碼分析人員可以自由地選擇對于解密設備的輸入(相應于密文),所以密碼分析人員可以進行選擇性的密文攻擊。為此,改進的Rabin密碼系統(tǒng)在它不能與數(shù)字簽名結(jié)合使用時是不利的。
因此本發(fā)明的一個目的是提供能夠從一個密文唯一地恢復明文并且得到對于選擇性密文攻擊的增強保護因此使它們可以用于數(shù)字簽名的方法、設備和系統(tǒng)。
為實現(xiàn)上述目的,根據(jù)下面描述的加密方法使用公用密鑰N加密明文M產(chǎn)生密文C,公用密鑰N具有其雅可比符號(2|p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2|q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq,和發(fā)送產(chǎn)生的密文C。根據(jù)下面描述的解密方法,使用第一保密密鑰p,第二保密密鑰q和公用密鑰N解密接收的密文C以便恢復原始明文M。
首先,加密方法將在下面描述。計算明文M的雅可比符號(M|N)和公用密鑰N的值。如果雅可比符號(M|N)的值是“-1”,輸出x被設置為明文M的值的兩倍值2M,和如果雅可比符號(M|N)的值是除“-1”以外的值時,輸出x被設置為明文M。接著,計算當輸出x的平方除以公用密鑰N時產(chǎn)生的余數(shù)x2mod N和輸出y被設置為計算的余數(shù)。計算當輸出y乘以2除以公用密鑰N時的余數(shù)2y mod N。如果雅可比符號(M|N)的值是“-1”,選擇余數(shù)2y mod N作為輸出z和如果雅可比符號(M|N)的值是除“-1”以外的值時,輸出z被設置為輸出y。公用密鑰N右移一位和計算通過移動公用密鑰N產(chǎn)生的輸出值(N-1)/2。計算當輸出z乘以-1除以公用密鑰N時的余數(shù)-z modN?;ハ啾容^輸出(N-1)/2和輸出z。如果z≤(N-1)/2選擇和輸出輸出z作為密文C,并且如果z>(N-1)/2,則密文C被設置為余數(shù)-z mod N。
下面將描述解密方法。計算密文C的雅可比符號(C|p)的值和第一保密密鑰p的值,并且計算密文C的雅可比符號(C|q)的值和第二保密密鑰q的值。計算雅可比符號(C|p)和雅可比符號(C|q)的乘積(C|p)(C|q)。如果雅可比符號(C|q)的值被設置為“0”,則輸出s(C)被設置為雅可比符號(C|p)和如果雅可比符號(C|q)的值是除“0”以外的值,則輸出s(C)被設置為雅可比符號(C|q)。接著,計算當密文C的值乘以-1除以公用密鑰N時的余數(shù)-C mod N。如果輸出s(C)是“-1”,則輸出z被置為余數(shù)-C mod N和如果輸出s(C)不是“-1”,則輸出z被置為密文c。計算當輸出z乘以1/2除以公用密鑰N時的余數(shù)z/2 mod N。如果乘積(C|p)(C|q)的值是“-1”,則輸出y被置為余數(shù)z/2 mod N和如果乘積(C|p)(C|q)的值不是“-1”,則輸出y被置為輸出z。如果輸出y不是0,則關(guān)于x的二次同余表達式x2的解中滿足(x|p)(x|q)≠1和其值等于或小于(N-1)/2的解和滿足(x|p)(x|q)≠1和其值等于或大于(n+1)/2的解,被輸出分別作為第一輸出xL和第二輸出xG,和如果輸出y是“0”,則輸出“0”作為第一輸出xL和第二輸出xG。計算當?shù)诙敵鰔G除以2時產(chǎn)生的商xG/2。如果乘積(C|p)(C|q)的值是“-1”,則選擇和輸出商xG/2作為明文M和如果乘積(C|p)(C|q)不是“-1”,則選擇和輸出第一輸出xL作為明文M。
因為沒有使用(x|p)(x|q)=1中的x,所以由解密設備產(chǎn)生的數(shù)字簽名將不會被選擇性密文破壞。因為明文和密文可以保持一一對應,所以可以從密文c中唯一恢復明文M。
本發(fā)明的上面和其他目的,特點和優(yōu)點將從參照附圖的下面描述中變得清楚,附圖示出本發(fā)明的一個例子。
圖1是根據(jù)本發(fā)明的公用密鑰密碼系統(tǒng)中的加密設備的方框圖;圖2是根據(jù)本發(fā)明的公用密鑰密碼系統(tǒng)中的解密設備的方框圖;圖3是圖1所示的加密設備的操作序列的流程圖;圖4是圖2所示的解密設備的操作序列的流程圖;圖5是圖3所示的步驟310中執(zhí)行的變換的示意圖;圖6是圖3所示的步驟320中執(zhí)行的變換的示意圖7是圖3所示的步驟330中執(zhí)行的變換的示意圖;和圖8是圖3所示的步驟340中執(zhí)行的變換的示意圖。
根據(jù)本發(fā)明的公用密鑰密碼系統(tǒng)包括用于利用公用密鑰N從明文M產(chǎn)生密文c的加密設備和用于利用保密密鑰p,q通過解密密文c重放原始明文M的解密設備。
如上所述,保密密鑰p,q是滿足((2/p),(2/q))=(-1,1)的一組素數(shù),和公用密鑰N是N=pq(x|y)表示關(guān)于“y”的雅可比符號“x”。
如圖1所示,該加密設備包括一個雅可比符號計算電路111,乘法器112,131,143,選擇器113,132,144,平方電路120,移位器141,和比較器142。
從輸入終端151輸入明文M,和提供給雅可比符號計算電路111,選擇器113和乘法器112。從輸入終端151輸入公用密鑰N,并且提供給雅可比符號計算電路111,移位器141,平方電路120,乘法器131和乘法器143。雅可比符號計算電路111計算雅可比符號(M|N)的值,并且將計算的值提供給選擇器113和選擇器132。乘法器112將明文M的值乘以2,并且輸出乘法結(jié)果2M。如果(M|N)=1,則選擇器113選擇和輸出來自乘法器112的輸出,即乘法結(jié)果2M。否則,選擇器113選擇和輸出明文M。
為了示例性目的,來自選擇器113的輸出將在下文由“x”表示。平方電路120計算當來自選擇器113的輸出x的平方除以N,即x2mod N計算產(chǎn)生的余數(shù),并且輸出該計算的結(jié)果。即,平方電路120執(zhí)行Rabin密文的加密。
為了示例性的目的,來自平方電路120的輸出在下文將由“y”表示。乘法器131計算當來自平方電路120的輸出y乘以2除以N時產(chǎn)生的余數(shù),即2y mod N,并且輸出計算的結(jié)果。如果(M|N)=-1,則選擇器132選擇并輸出來自乘法器131的輸出,即乘法結(jié)果2y mod N。否則,選擇器113選擇和輸出平方電路120的輸出y。為了示例性目的,來自選擇器132的輸出將在下文由“z”表示。移位器141將N向右移一位,并且輸出得到的值,即(N-1)/2,(由于公用密鑰N是一個奇數(shù))。比較器142比較來自移位器141的輸出,即(N-1)/2,和來自選擇器132的輸出z,并且將比較的結(jié)果提供給選擇器144。乘法器143計算當來自選擇器132的輸出z乘以-1除以N時產(chǎn)生的余數(shù),即,-z mod N,并且輸出計算的結(jié)果。雖然-z mod N可能正是(N-z)mod N,但是它將在下文叫做-z mod N。
如果來自比較器142的輸出表示z>(N-1)/2,則選擇器144選擇和輸出來自乘法器143的輸出-z mod N。否則,選擇器144選擇和輸出來自選擇器132的輸出z。輸出來自選擇器144的輸出作為來自輸出終端153的密文C。
如圖2所示,解密設備包括雅可比計算電路211,212,乘法器213,221,選擇器214,222,252,和除法器231,251。
從輸入終端263輸入密文C,并且提供給雅可比計算電路211,雅可比計算電路212,選擇器222,和乘法器221。從輸入終端264輸入公用密鑰N,并且提供給乘法器221,除法器231,和提取電路240。從輸入終端261輸入保密密鑰p,并且提供給雅可比計算電路211和提取電路240。從輸入終端262輸入保密密鑰q,并且提供給雅可比計算電路212和提取電路240。
雅可比計算電路211計算雅可比符號(C|p)的值,并且提供該計算的結(jié)果給乘法器213和選擇器214。雅可比計算電路212計算雅可比符號(C|q)的值,并且提供該計算的結(jié)果給乘法器213和選擇器214。乘法器213計算雅可比符號(C|p)和雅可比符號(C|q)的乘積,并且將計算的結(jié)果(C|p)(C|q)提供給選擇器232和選擇器252。如果來自雅可比計算電路212的輸出(C|q)是0,則選擇器214選擇并輸出來自雅可比計算電路211的輸出(C|p)。否則,選擇器214選擇和輸出來自雅可比計算電路212的輸出(C|q)。
為了示例性目的,來自選擇器214的輸出將在下文叫做s(C)。如果(C|q)=0,則來自選擇器214的輸出s(C)是s(C)=(C|p),和如果(C|q)≠0,則來自選擇器214的輸出s(C)是s(C)=(C|q)。乘法器221計算當密文C乘以-1除以N時產(chǎn)生的余數(shù),即-C mod N,并且輸出計算結(jié)果。雖然-C modN正是(N-c)mod N,但是它將在下文叫做-C mod N。如果來自選擇器214的輸出s(C)是-1,則選擇器222選擇和輸出來自乘法器221的輸出,即-C modN。否則,選擇器222選擇和輸出密文C。
為了示例性目的,來自選擇器222的輸出將在下文叫做“z”。除法器231計算當輸出z乘以1/2除以公用密鑰N時產(chǎn)生的余數(shù)z/2,并且輸出計算結(jié)果。將輸出z乘以1/2被公用密鑰N除意味著如果輸出z是一個偶數(shù),則輸出z被2除,和如果輸出z是一個奇數(shù),則輸出z被輸出z和公用密鑰N的和除。
如果來自乘法器213的輸出(C|p)(C|q)是-1,則選擇器232選擇和輸出來自除法器231的輸出,即z/2mod N。否則,選擇器232選擇和輸出z。
為了示例性目的,來自選擇器232的輸出將在下文叫做“y”。提取電路240確定關(guān)于x的二次同余表達式x2=C(mod N)的解,并且輸出滿足(x|p)(x|q)≠-1的解(那些解的個數(shù)最多是2)中的那些解。在輸出的解中,其值是(N-1)/2或小于(N-1)/2的值的解由xL表示,并且其值是(N+1)/2或大于xG的解由xG表示。如果y=0,則因為x2=C(mod N)只有一個解,即x=0,所以解是xL=xG=0。
除法器251計算當來自平方電路240的輸出xG被2除時產(chǎn)生的商,即,xG/2,并且輸出計算結(jié)果。如果來自乘法器213的輸出(C|p)(C|q)是-1,則選擇器252選擇和輸出來自除法器251的輸出,即xG/2。否則,選擇器252選擇和輸出xL。輸出來自選擇器252的輸出作為來自輸出終端265的明文M。
乘法器112,131,143,221和除法器231,251的具體安排將不在下面詳細描述,由于它們可以根據(jù)數(shù)學和邏輯電路111的基礎知識被容易地理解并且因此對本領域技術(shù)人員是顯而易見的,并且雅可比符號計算電路111,211,212和提取電路240的具體安排將不詳細描述,由于它們與在常規(guī)加密和解密設備中使用的電路是相同的并且因此對本領域技術(shù)人員顯而易見。
根據(jù)本發(fā)明的公共密鑰密碼系統(tǒng)的操作將在下面參照圖3和圖4描述。
圖3是圖1所示的加密設備的操作的示意圖。
在步驟311,雅可比符號計算電路111使用明文M計算雅可比符號(M|N)的值。如果雅可比符號(M|N)的值是-1,則控制進到步驟313。否則,控制進到步驟312。選擇器113根據(jù)雅可比符號(M|N)的值操作以便在步驟312設置x為x=M并且在步驟313設置x為x=2M。此后,步驟311,312,313將共同稱為步驟310。
在步驟320,平方電路120設置y為y=x2mod N。接著,選擇器113根據(jù)雅可比符號(M|N)的值操作。如果在步驟331雅可比符號(M|N)的值是-1,則控制進到步驟333。否則,控制進到步驟332。在步驟332,選擇器113設置z為z=2mod N。此后,步驟331,332,333將共同稱為步驟330。
在步驟341,比較器142比較來自移位器141的輸出(N-1)/2和z。選擇器144根據(jù)來自比較器142的比較結(jié)果操作。如果z>(N-1)/2,則控制進到步驟343。否則,控制進到步驟342。在步驟342,選擇器144設置C為C=z。在步驟343,選擇器144設置C為C=z mod N。選擇器144輸出C作為密文。此后,步驟341,342,343將共同稱為步驟340。
圖4是圖2所示的解密設備操作序列的示意圖。
在步驟411,選擇器222根據(jù)來自選擇器214的輸出s(C)操作。如果s(C)是-1,則控制進到步驟413。否則,控制進到步驟412。如果(C|p)=0則S(C)是定義為s(C)=(C|p)的值和如果(C|q)≠0則s(C)=(C|q)。在步驟412,選擇器222設置z為z=C。在步驟413,選擇器222設置z為z=-Cmod N。此后,步驟411,412,413將共同稱為步驟410。
在步驟421,選擇器232根據(jù)從乘法器213輸出的雅可比符號的乘積(C|p)(C|q)操作。如果(C|p)(C|q)是-1,則控制進到步驟423。否則,控制進到步驟422。在步驟422,選擇器232設置y為y=z。在步驟423,選擇器232設置y為y=z/2mod N。此后,步驟421,422,423將共同稱為步驟420。
在步驟430,提取電路240使用y確定對關(guān)于x的二次同余表達式x2=y(tǒng)(mod N)的解。在滿足(x|p)(x|q)≠1的解中,其值是(N-1)/2或小于該值的解由xL表示,和其值是(N+1)/2或大于該值的解由xG表示。如果在步驟430滿足(x|p)(x|q)≠1的只有一個解,則解xL=xG=0。
在步驟411,選擇器242根據(jù)從乘法器213輸出的雅可比符號的乘積(C|p)(C|q)操作。如果(C|p)(C|q)是-1,則控制進到步驟443。否則,控制進到步驟442。在步驟442,選擇器242設置M為M=xL。在步驟443,選擇器242設置M為M=xG/2。此后,步驟441,442,443將共同稱為步驟440。
圖5是圖3所示的步驟310中執(zhí)行的變換的示意圖。在圖5中,垂直安排在左側(cè)的方框組表示明文M可以取的值組。對于矢量(I,j)表示的組,屬于((M|p),(M|q)=(i,j)的明文M的值。
對于從上面數(shù)的第一到第八方框,屬于M≥(N+1)/2的明文M的值。對于從下數(shù)的第一到第九方框,屬于M≤(N-1)/2的明文M的值。由虛線表示的方框指示屬于那些方框的值將不作為明文使用。由實線表示的方框指示屬于那些方框的值將作為明文使用。
垂直安排在右側(cè)的方框組表示來自選擇器113的輸出x可以取的值。這些方框以如明文M可以取的值組的相同方式定義。對于向量(i,j)表示的組,屬于((x|p),(x|q))=(i,j)的x的值。
在步驟310,如果關(guān)于明文M的雅可比符號(M|N)的值是-1,則x被置為x=2M。否則,x被置為x=M。如上所述,本實施例使用((2|p),(2|q)=(-1,1)的保密密鑰。因此,在步驟310,((M|p),(M|q))=(1,-1)的組和((M|p),(M|q))=(-1,1)的組分別映射到((x|p),(x|q))=(1,1)的組和((x|p),(x|q))=(-1,-1)的組。其他明文組直接映射到右側(cè)的組。
如圖5所示,其他的組將不映射到相同的單獨組。因此可以看到在步驟310從M到x的變換是一對一的變換。應該注意關(guān)于x的((x|p),(x|q))=(1,1)或((x|p),(x|q))=(-1,-1)的x的值組,如A所示的,等于或大于(N+1)/2,(M|N)=1是滿足對應x的M,關(guān)于等于或小于(N-1)/2的x,如B所示,(M|N)=1滿足對應x的M。
圖6是圖3所示的步驟320中執(zhí)行的變換的示意圖。在圖6中,垂直安排在左側(cè)的方框組表示來自選擇器113的輸出x可以取的值組。對于矢量(I,j)表示的組,屬于((x|p),(x|q))=(i,j)的x的值。由虛線表示的方框指示屬于那些方框的值x將不使用。由實線表示的方框指示屬于那些方框的值可以使用。垂直安排在右側(cè)的方框組表示來自平方電路120的輸出y可以取的值。這些方框以如x可以取的值組的相同方式定義。對于向量(i,j)表示的組,屬于((y|p),(y|q))=(i,j)的y的值。
應該注意到圖6不象圖5,除了組(0,0)以外的每個組包括等于或大于(N+1)/2的值和等于或小于(N-1)/2的值。因為由y=x2mod N表示的變換在步驟320執(zhí)行,所以(y|p)和(y|q)的值是0或1,并且不能取-1。因此,除了對應于x=0的組,即,組(0,0),在x側(cè)的兩組映射到y(tǒng)側(cè)的單獨的組。
在y側(cè)的組中,如圖6的D所示,x側(cè)的兩組重疊和映射到組(0,1),(1,0),但是x的兩個值沒有映射到相同的y值。這是因為如果(y|p)和(y|q)之一是0,則關(guān)于x的二次同余表達式x2=y(tǒng)(mod N)可以最多具有兩個解,一個解是x0,而另一個解是N-x0。
具體地說,如果兩個解之一等于或小于(N-1)/2,則另一個解等于或大于(N+1)/2。由于可以從圖5看出,在這個實施例中,只有等于或小于(N-1)/2的一個值,用作對應于((y|p),(y|q))=(0,1),(1,0)的一個x值。關(guān)于y側(cè)的組的(1,1),如圖6所示,x的兩個值映射到相同的y值,并且如從圖5可以理解的,它們可以利用(M|N)的值區(qū)別,。
一個x值可以如下從圖6中的一個y值恢復
關(guān)于x的二次同余表達式的解中,由于如圖5所示,不使用(x|p)(x|q)=-1的x值,即((x|p)(x|q))=(-1,1),(1,-1)的x值,所以可以確定滿足(x|p)(x|q)≠-1的一個解。但是,存在滿足(x|p)(x|q)≠-1的兩個解的最大值。那些解中,其值等于或小于(N-1)/2的解將在下文由xL表示,并且其值等于或大于(N+1)/2的解將在下文由xG表示。
對于y=0,因為對于x2=y(tǒng)(mod N)只有一個解x=0,xL=xG=0。為了恢復x的原始值,有必要識別這兩個解中的哪個解是原始x值。由于從圖5可以看出,可以利用(M|N)的值識別它。具體地,如果(M|N)=1,則x的原始值是xG,并且否則,原始x值是xL。
圖7是說明圖3所示的步驟330中執(zhí)行的變換的示意圖。在圖7中,垂直安排在左側(cè)的方框組表示來自平方電路120的輸出y可以取的值組。對于矢量(I,j)表示的組,屬于((y|p),(y|q)=(i,j)的y的值。由虛線表示的方框指示屬于那些方框的值y將不使用。由實線表示的方框指示屬于那些方框的y值可以使用。垂直安排在右側(cè)的方框組表示來自選擇器132的輸出z可以取的值。這些方框以如y可以取的值組的相同方式定義。對于向量(i,j)表示的組,屬于((y|p),(y|q)=(i,j)的z的值。如果在步驟330關(guān)于y的雅可比符號(M|N)的值是-1,,則z如E所示的被設置為z=2y(mod N)。否則,z被設置為z=y(tǒng)。
如上所述,本實施例使用((2,p),(2,q))=(-1,1)的一個保密密鑰。如圖7所示,通過被設置z=2y(mod N),((y|p),(y|q))=(1,1)的y被映射到((z|p),(z|q))=(-1,1)的z。在圖6中,關(guān)于y側(cè)的組(1,1),x的兩個值重疊和映射到相同的y值。通過這個操作,重疊的y值被映射到兩個不同的x值。因此,可以理解x和y保持一一對應。
圖8是說明圖3所示的步驟340中執(zhí)行的變換的示意圖。在圖8中,垂直安排在左側(cè)的方框組表示來自選擇器132的輸出z可以取的值組。對于矢量(I,j)表示的組,屬于((z|p),(z|q))=(i,j)的z的值。對于從上面數(shù)的第一到第八方框,屬于z≥(N+1)/2的z值。對于從下數(shù)的第一到第九方框,屬于z≤(N-1)/2的z值。由虛線表示的方框指示屬于那些方框的值將不作為z值使用。由實線表示的方框指示屬于那些方框的值可以作為z值使用。垂直安排在右側(cè)的方框組表示來自選擇器144的輸出x可以取的值,即密文C可以取的值。這些方框以如明文M可以取的值組的相同方式定義。對于向量(i,j)表示的組,屬于((C|p),(C|q))=(i,j)的C的值。
在步驟340,如果z取等于或大于(N+1)/2的值,則C被置為C=-z(modN),并且否則,C被置為C=z。因此,如圖8所示,取等于或大于(N+1)/2的值和((z|p)(z|q))=(1,1),(-1,1),(0,1),(1,0)的z組映射到取等于或大于(N-1)/2和((C|p)(C|q))=(-1,-1),(1,-1),(0,-1),(-1,0)的C組。Z的其他組直接映射到右側(cè)的C組。如圖8中F所示,只有當C取值(1,-1),(-1,1)時,才滿足(C|p)(C|q)=1。只有關(guān)于對應于C的M,才滿足(M|N)=-1。
由于可以從圖8中可以看出,另一個組將不映射到同一單獨的圖。因此可以看出在步驟340從z到C的變換是一對一變換。因此可以從上面的描述中理解明文M和密文C通過根據(jù)本發(fā)明的加密處理保持一一對應。
為了從密文C恢復原始明文M,可以基本執(zhí)行上面加密處理的一個逆處理。但是,加密處理根據(jù)(M|N)的值和z的值是否等于或大于(N+1)/2改變。然而在解密處理中,因為M和z的值事先不知道,(M|N)的值和z的值是否等于或大于(N+1)/2必需從密文C中確定。
回顧圖5到圖8,表示滿足(M|N)=(C|p)(C|q)。根據(jù)這個事實可以從密文C中確定(M|N)的值。也可以從圖8看出如果s(C)=-1,則z的值是否等于或大于(N+1)/2。這個事實對于從密文C中決定z的值是否等于或大于(N+1)/2是有效的。
如果(C|q)=0,則s(C)是定義為s(C)=(C|p)的值和如果(C|q)≠0,則s(C)=(C|q)。因此,圖2所示的解密設備能夠從圖1所示的加密設備中輸出的密文中恢復原始明文,和圖4所示的解密處理能夠從由圖3所示的加密處理產(chǎn)生的密文中恢復原始明文。
雖然已經(jīng)使用具體項目描述本發(fā)明的優(yōu)選實施例,但是這種描述只是用于說明目的,并且應該理解在不脫離下面權(quán)利要求書的精神或范圍的情況下可以作出改變和變化。
權(quán)利要求
1.一種使用公用密鑰N加密明文M以便產(chǎn)生密文C的方法,其中公用密鑰N具有其雅可比符號(2|p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2|q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq,該方法包括步驟計算所述明文M的雅可比符號(M|N)和所述公用密鑰N的值;如果雅可比符號(M|N)的值是“-1”,則輸出x被設置為所述明文M的值的兩倍值2M,和如果雅可比符號(M|N)的值是除“-1”以外的值時則輸出x被設置為所述明文M;計算當所述輸出x的平方被所述公用密鑰N除時產(chǎn)生的余數(shù)x2mod N和輸出y被設置為計算的余數(shù);計算當所述輸出y乘以2被公用密鑰N除時的余數(shù)2y mod N;如果雅可比符號(M|N)的值是“-1”,則選擇余數(shù)2y mod N作為輸出z和如果雅可比符號(M|N)的值是除“-1”以外的值時輸出z被設置為所述輸出y;將所述公用密鑰N右移一位和計算通過移動所述公用密鑰N產(chǎn)生的值輸出(N-1)/2;計算當所述輸出z乘以-1除以所述公用密鑰N時的余數(shù)-z mod N;和互相比較所述輸出(N-1)/2和所述輸出z,如果z≤(N-1)/2則選擇和輸出所述輸出z作為所述密文C和輸出,并且如果z≥(N-1)/2,則設置密文C為所述余數(shù)-z mod N。
2.一種使用所述第一和第二保密密鑰p,q和所述公用密鑰N解密由使用公用密鑰N加密明文M產(chǎn)生的密文C以便恢復明文M的方法,其中公用密鑰N具有其雅可比符號(2|p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2|q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq,該方法包括步驟計算所述密文C的雅可比符號(C|p)的值和所述第一保密密鑰p的值;計算所述密文C的雅可比符號(C|q)的值和所述第二保密密鑰q的值;計算所述雅可比符號(C|p)和所述雅可比符號(C|q)的乘積(C|p)(C|q);如果所述雅可比符號(C|q)的值是“0”則設置輸出s(C)為雅可比符號(C|p)和如果所述雅可比符號(C|q)的值是除“0”以外的值則設置輸出s(C)為所述雅可比符號(C|q);計算當所述密文C的值乘以-1除以所述公用密鑰N時的余數(shù)-C mod N;如果所述輸出s(C)是“-1”,則設置輸出z為所述余數(shù)-c mod N和如果所述輸出s(C)不是“-1”,則設置輸出z為所述密文c;計算當所述輸出z乘以1/2除以公用密鑰N時的余數(shù)z/2 mod N;如果所述乘積(C|p)(C|q)的值是“-1”則設置輸出y為所述余數(shù)z/2 mod N和如果所述乘積(C|p)(C|q)的值不是“-1”則設置輸出y為所述輸出z;如果所述輸出y不是0,則輸出關(guān)于x的二次同余表達式x2=y(tǒng)(mod N)的解中滿足(x|p)(x|q)≠1和其值等于或小于(N-1)/2和滿足(x|q)(x|q)≠1和其值等于或大于(n+1)/2的解,分別作為第一輸出xL和第二輸出xG,和如果所述輸出y是“0”,則輸出“0”作為所述第一輸出xL和所述第二輸出xG;計算當所述第二輸出xG除以2時產(chǎn)生的商xG/2;和如果所述乘積(C|p)(C|q)的值是“-1”,則選擇和輸出所述商xG/2作為明文M和如果所述乘積(C|p)(C|q)不是“-1”,則選擇和輸出所述第一輸出xL作為明文M。
3.一種公用密鑰密碼方法,包括步驟使用根據(jù)權(quán)利要求1的方法加密明文M為密文C和發(fā)送該密文C;和使用根據(jù)權(quán)利要求2的方法解密該發(fā)送的密文C以便恢復明文M。
4.一種使用公用密鑰N加密明文M以便產(chǎn)生密文C的加密設備,其中公用密鑰N具有其雅可比符號(2|p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2|q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq,該加密設備包括一個雅可比符號計算電路,用于計算所述明文M的雅可比符號(M|N)和所述公用密鑰N的值;一個第一乘法器,用于加倍所述明文M的值和輸出加倍的結(jié)果作為輸出2M;一個第一選擇器,用于選擇來自所述第一乘法器的輸出2M和如果由所述雅可比符號計算電路計算的雅可比符號(M|N)的值是“-1”,則輸出該選擇的輸出作為一個輸出x和如果雅可比符號(M|N)的值是除“-1”以外的值時則選擇和輸出所述M作為一個輸出x;一個平方電路,用于計算當來自所述選擇器的所述輸出x的平方被所述公用密鑰N除時產(chǎn)生的余數(shù)x2mod N和輸出計算的余數(shù)作為輸出y;一個第二乘法器,用于計算當來自所述平方電路的所述輸出y乘以2被公用密鑰N除時產(chǎn)生的余數(shù)2y mod N和輸出計算的余數(shù);一個第二選擇器,用于如果由所述雅可比符號計算電路計算的雅可比符號(M|N)的值是“-1”,則選擇和輸出余數(shù)2y mod N作為輸出z和如果雅可比符號(M|N)的值是除“-1”以外的值時,則選擇和輸出來自所述平方電路的輸出y作為輸出z;一個移位器,用于將所述公用密鑰N右移一位和輸出通過移動所述公用密鑰N產(chǎn)生的值的輸出(N-1)/2;一個比較器,用于互相比較來自所述移位器的所述輸出(N-1)/2和來自所述第二選擇器的所述輸出z并且輸出比較的結(jié)果;一個第三乘法器,用于計算當所述輸出z乘以-1除以所述公用密鑰N時的余數(shù)-z mod N;和一個第三選擇器,用于如果如由來自所述比較器的比較結(jié)果表示的那樣z≤(N-1)/2,則選擇和輸出來自所述第二選擇器的所述輸出z作為所述密文C和如果如由來自所述比較器的比較結(jié)果表示的那樣z>(N-1)/2,則選擇和輸出來自所述第三乘法器的輸出-z mod N作為所述密文C。
5.一種使用所述第一和第二保密密鑰p,q和所述公用密鑰N解密由使用公用密鑰N加密明文M產(chǎn)生的密文C以便恢復明文M的解密設備,其中公用密鑰N具有其雅可比符號(2|p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2|q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq,該解密設備包括第一雅可比符號計算電路,用于計算所述密文C的雅可比符號(C|p)的值和所述第一保密密鑰p的值;第二雅可比符號計算電路,用于計算所述密文C的雅可比符號(C|q)的值和所述第二保密密鑰q的值;第一乘法器,用于計算由雅可比符號計算電路計算的所述雅可比符號(C|p)和由雅可比符號計算電路計算的所述雅可比符號(C|q)的乘積(C|p)(C|q);第一選擇器,用于如果由所述第二雅可比符號計算電路計算的所述雅可比符號(C|q)的值是“0”,則選擇和輸出由所述第一雅可比符號計算電路計算的雅可比符號(C|p)和如果由所述第二雅可比符號計算電路計算的所述雅可比符號(C|q)的值是除“0”以外的值,則選擇和輸出由所述第一雅可比符號計算電路計算的所述雅可比符號(C|q)作為輸出s(C);第二乘法器,用于計算當所述密文C的值乘以-1除以所述公用密鑰N時的余數(shù)-C mod N;第二選擇器,用于如果來自第一選擇器的所述輸出s(C)是“-1”,則選擇和輸出由所述第二乘法器計算的所述余數(shù)-c mod N作為輸出z和如果來自第一選擇器的所述輸出s(C)不是“-1”,則選擇和輸出所述密文C作為輸出z;第一除法器,用于計算當來自所述第二選擇器的所述輸出z乘以1/2除以所述公用密鑰N時的余數(shù)z/2 mod N并且輸出該計算的余數(shù);第三選擇器,用于如果由所述第一乘法器計算的所述乘積(C|p)(C|q)的值是“-1”,則選擇和輸出來自所述第一除法器的所述余數(shù)z/2 mod N作為輸出y和如果由所述第一乘法器計算的所述乘積(C|p)(C|q)的值不是“-1”,則選擇和輸出來自所述第二選擇器的輸出z作為輸出y;一個提取電路,用于如果來自所述第三選擇器的所述輸出y不是0,則輸出關(guān)于x的二次同余表達式x2=y(tǒng)(mod N)的解中滿足(x|p)(x|q)≠1和其值等于或小于(N-1)/2和滿足(x|p)(x|q)≠1和其值等于或大于(N+1)/2的解,分別作為第一輸出xL和第二輸出xG,和如果來自所述第三選擇器的所述輸出y是“0”,則輸出“0”作為所述第一輸出xL和所述第二輸出xG;第二除法器,用于計算當來自所述提取電路的所述第二輸出xG除以2時產(chǎn)生的商xG/2;和第四選擇器,用于如果由所述第一乘法器計算的所述乘積(C|p)(C|q)的值是“-1”,則選擇和輸出所述商xG/2作為明文M和如果由所述第一乘法器計算的所述乘積(C|p)(C|q)的值不是“-1”,則選擇和輸出所述第一輸出xL作為明文M。
6.一種公用密鑰密碼系統(tǒng),包括根據(jù)權(quán)利要求4的加密設備;和根據(jù)權(quán)利要求5的解密設備。
全文摘要
公開一種具有增強保護不受選擇性密文攻擊的公用密碼方法。加密設備使用公用密鑰N加密明文M以便產(chǎn)生密文C,其中公用密鑰N具有其雅可比符號(2丨p)是-1的一個素數(shù)的第一保密密鑰p和其雅可比符號(2丨q)是1的一個素數(shù)的第二保密密鑰q的乘積值pq。一種解密設備使用保密密鑰p,q和公用密鑰N解密密文C以便恢復原始明文M。因為不使用(x丨p)(x丨q)=-1中的x,所以由解密設備產(chǎn)生的數(shù)字簽名不能由選擇性密文攻擊破壞。
文檔編號G09C1/00GK1253437SQ9911926
公開日2000年5月17日 申請日期1999年7月16日 優(yōu)先權(quán)日1998年7月16日
發(fā)明者島田道雄, 吉川博晴 申請人:日本電氣株式會社, 理光系統(tǒng)開發(fā)株式會社