專利名稱:橢圓曲線變換裝置、利用裝置和利用系統(tǒng)的制作方法
本申請以在日本申請的申請?zhí)枮樘卦钙?0-053204專利申請為基礎(chǔ),其內(nèi)容在此作為參考。
本發(fā)明涉及作為信息保密技術(shù)的一種密碼技術(shù),特別涉及用橢圓曲線實現(xiàn)的加密·解密技術(shù)、數(shù)字署名·驗證技術(shù)和鍵共有技術(shù)。
1.公開鍵密碼近年來,基于計算機技術(shù)和通信技術(shù)的數(shù)據(jù)通信正在廣泛地普及起來,在這種數(shù)據(jù)通信技術(shù)中,使用秘密通信方式或數(shù)字署名方式。這里,所謂秘密通信方式是除特定的通信對方之外不透露通信內(nèi)容的通信方式。所謂數(shù)字署名方式是對通信對方表示通信內(nèi)容的正當(dāng)性,同時證明發(fā)信者身份的通信方式。
這些秘密通信方式或數(shù)字署名方式中采用稱之為公開鍵密碼的密碼方式,公開鍵密碼是在通信對方多的時候容易管理每個通信對方不同的密碼鍵的方式,是為與多個通信對方進行通信而必不可少的基本技術(shù)。在采用公開鍵密碼的秘密通信中,雖然加密鍵和解密鍵不同,且解密鍵秘密,而加密鍵公開。
作為這種公開鍵密碼的安全性的根據(jù),是采用離散對數(shù)問題,在離散對數(shù)問題中,具代表性的有定義在有限體上的問題和定義在橢圓曲線上的問題。關(guān)于離散對數(shù)問題,在Neal Koblitz著的“數(shù)論和密碼學(xué)教程”(“ACourse in Number theory and Cryptography”,Springer-Verlag,1987)一書中作了詳細描述。
2.橢圓曲線上的離散對數(shù)問題以下來描述關(guān)于橢圓曲線上的離散對數(shù)問題。
所謂橢圓曲線上的離散對數(shù)問題是在把E(GF(p))為在有限體GF(p)上定義的橢圓曲線,并在用大的素數(shù)除橢圓曲線E的位數(shù)的情況下,把包含在橢圓曲線E內(nèi)的元G取為基點。這時,對于包含在橢圓曲線E內(nèi)的分配的元Y,如果存在Y=x*G(式1)的整數(shù)x,問題就是把x求出來。
這里,p是素數(shù),GF(p)是具有p個元的有限體。在本說明書中,符號*表示把包含在橢圓曲線內(nèi)的元多次相加的運算,如下式所示,x*G表示對包含在橢圓曲線內(nèi)的元G進行x次相加。
x*G=G+G+G+…+G把離散對數(shù)問題作為公開鍵密碼的安全性的根據(jù)的原因是對于具有多元的有限體GF(p)來說,上述的問題是極為困難的。
3.應(yīng)用橢圓曲線上的離散對數(shù)問題的エルガマル署名以下用
圖1來說明根據(jù)應(yīng)用上述橢圓曲線上的離散對數(shù)問題的エルガマル署名的數(shù)字署名方式。
該圖是表示根據(jù)上述エルガマル署名的數(shù)字署名方式步驟的順序圖。
用網(wǎng)絡(luò)把用戶A110、管理中心120、用戶B130連接起來。
把p取為素數(shù),設(shè)有限體GF(p)上的橢圓曲線為E,把E的基點取為G,E的位數(shù)設(shè)為q。即q是滿足(式2)q*G=0的最小正整數(shù)。
把x坐標(biāo)、y坐標(biāo)都為∞的點(∞,∞,)稱為無限遠點,用0來表示。在把橢圓曲線看作群時,這個無限遠點0的作用是加法運算中的「零元」。
(1)由管理中心120進行的公開鍵的生成管理中心120根據(jù)式3用預(yù)先通知的用戶A110的秘密鍵xA生成用戶A110的公開鍵YA(步驟S141~S142)。
(式3)YA=xA*G此后,管理中心120把素數(shù)p、橢圓曲線E和基點G公開為系統(tǒng)參數(shù),并對其他用戶B130公開用戶A110的公開鍵YA(步驟S143~S144)。
(2)由用戶A110進行的署名生成用戶A110生成隨機數(shù)k(步驟S145)。
然后,用戶A110計算(式4)R1=(rx,ry)=k*G(步驟S146),并由(式5)s×k=m+rx×xA(modq)計算s(步驟S147)。這里,m是用戶A110向用戶B130發(fā)送的信息。
另外,用戶A110把所得到的(R1、s)作為署名,并與信息m一起發(fā)送給用戶B130(步驟S148)。
(3)由用戶B130進行的署名驗證用戶B130通過判定(式6)s*R1=m*G+rx*YA是否成立來確認發(fā)送者即用戶A110的身份(步驟S149)。這可以由(式7)弄清楚。
(式7)s*R1={((m+rx×xA)/k)×k}*G=(m=rx×xA)*G=m*G+(rx×xA)*G=m*G+rx*YA4.橢圓曲線上的點的加法運算、2倍運算的計算量在應(yīng)用上述所示的橢圓曲線上的離散對數(shù)問題的エルガマル署名的數(shù)字署名方式中的公開鍵的生成、署名生成、署名驗證的各步驟中,進行橢圓曲線上的點的冪倍運算的計算。例如,式3所示的「xA*G 」、式4所示的「k*G」、式6所示的「s*R1」、「m*G」、「rx*YA」都是橢圓曲線上的點的冪倍運算。
關(guān)于橢圓曲線的運算公式在“Efficient elliptic curve exponentiation”(Miyaji,Ono,與Cohen著,Advances in cryptology_proceedings of ICICS′97,Lecturenotes in computer science,1997,Springer_verlag,282-290.)一文中作了詳細說明。
以下來說明橢圓曲線的運算公式。
把橢圓曲線的方程式設(shè)為y^2=x^3+a×x+b,設(shè)任意點P的坐標(biāo)為(x1,y1),設(shè)任意點Q的坐標(biāo)為(x2,y2)。這里,把由R=P+Q決定的點R的坐標(biāo)設(shè)為(x3,y3)。
在本說明書中,符號^表示冪運算,例如,2^3表示2×2×2。
在P≠Q(mào)的情況下,R=P+Q就成為加法運算,加法運算的公式表示如下。
x3={(y2-y1)/(x2-x1)}^2-x1-x2y3={(y2-y1)/(x2-x1)}(x1-x3)-y1在P=Q情況下,R=P+Q=P+P=2×P,R=P+Q就成為2倍運算,2倍運算的公式表示如下。
x3={(3x1^2+a)/2y1}^2-2x1y3={(3x1^2+a)/2y1}(x1-x3)-y1上述的運算是在定義橢圓曲線的有限體上的運算。
如上所述,在2維坐標(biāo)即仿射坐標(biāo)中,也就是在前述的坐標(biāo)中,在進行橢圓曲線上的加法運算的情況下,橢圓曲線上的一次加法運算之后,就必須作一次有限體上的倒數(shù)計算,一般,與有限體上的乘法運算相比,有限體上的倒數(shù)計算的計算量要有其計算量的10倍左右。
因此,為了削減計算量,就采用了稱之為射影坐標(biāo)的3維坐標(biāo)。
所謂射影坐標(biāo)是由3維X、Y、Z構(gòu)成的坐標(biāo)。
對于坐標(biāo)(X,Y,Z)和坐標(biāo)(X′,Y′,Z′),如果存在某數(shù)n,并有X′=nX、Y′=nY,Z′=nZ的關(guān)系,那么(X,Y,Z)=(X′,Y′,Z′)仿射坐標(biāo)(x,y)和射影坐標(biāo)(X,Y,Z)按照(x,y)→(x,y,1)(X,Y,Z)→(X/Y,Y/Z)(Z≠0時)的關(guān)系相互對應(yīng)。
這里,符號→使用如下所示的含義。即在集合S2的一個元對應(yīng)于集合S1的任意元時,表示為S1→S2。
以下,橢圓曲線的運算全都用射影坐標(biāo)來進行。
下面來說明射影坐標(biāo)上的橢圓曲線的加法計算公式、2倍公式。當(dāng)然,這些公式是與前述的仿射坐標(biāo)中的加法公式、2倍公式相匹配的。
冪倍的運算可以由橢圓曲線上的點的加法運算、2倍運算的重復(fù)來實現(xiàn)。雖然該冪倍運算中的加法運算的計算量不依賴于橢圓曲線的參數(shù),但是,2倍運算的計算量取決于橢圓曲線的參數(shù)。
這里,把p取為160位的素數(shù),把有限體GF(p)上的橢圓曲線設(shè)為E:y^2=x^3+ax+b當(dāng)用P=(X1,Y1,Z1)、Q=(X2,Y2,Z2)分別表示橢圓曲線E上的點P、Q時,R=(X3,Y3,Z3)=P+Q求解如下。
(ⅰ)P≠Q(mào)的情況這時,就成為加法運算。
(步驟1-1)中間值的計算計算如下。
(式8)U1=X1×Z2^2(式9)U2=X2×Z1^2(式10)S1=Y1×Z2^3(式11)S2=Y2×Z1^3(式12)H=U2-U1
(式13)r=S2-S1(步驟1-2)R=(X3,Y3,Z3)的計算計算如下(式14)X3=H^3-2×U1×H^2+r^2(式15)Y3=S1×H^3+r×(U1×H^2-X3)(式16)Z3=Z1×Z2×H(ⅱ)P=Q的情況(即R=2P)這時,就成為2倍運算。
(步驟2-1)中間值的計算計算如下。
(式17)S=4×X1×Y1^2(式18)M=3×X1^2+a×Z1^4(式19)T=2×S+M^2(步驟2-2)R=(Y3,Y3,Z3)的計算計算如下。
(式20)X3=T(式21)Y3=8Y1^4+M×(S-T)(式22)Z3=2×Y1×Z1然后,來說明進行橢圓曲線的加法運算、2倍運算情況下的計算量。這里,用1Mul表示有限體GF(p)上的一次乘法運算的計算量,用1Sq表示一次2次方運算的計算量。在一般的微機中,1Sq≈0.8Mul。
按照上述的例子,對于式8~式16中乘法運算的次數(shù)和2次方運算的次數(shù)進行計數(shù),就得到表示于P≠Q(mào)的情況的橢圓曲線上的加法運算的計算量,結(jié)果是12Mul+4Sq。式8、9、10、11、14、15、16中的加法運算的計算量分別是1Mul+1Sq、1Mul+1Sq、2Mul、2Mul、2Mul+2Sq、2Mul、2Mul,所以得到上面的結(jié)果。
按照上述的例子,對于式17~式22中乘法運算的次數(shù)和2次方運算的次數(shù)進行計數(shù),就得到表示于P=Q的情況的橢圓曲線上的2倍運算的計算量,結(jié)果是4Mul+6Sq。式17、18、19、21、22中的2倍運算的計算量分別是1Mul+1Sq、1Mul+3Sq、1Sq、1Mul+1Sq、1Mul,所以得到上面的結(jié)果。
在上述的次數(shù)的計數(shù)中,例如,由于能夠?qū)κ?4的H^3展開為H^3=H^2×H,所以,H^3的計算量就為1Mul+1Sq;由于能夠?qū)κ?8的Z1^4展開為Z1^4=(Z1^2)^2,所以,Z1^4的計算量就為2Sq。
對于式14的H^2,由于在前述的H^3計算過程中算出了H^2,所以就不再次對H^2的計算量進行計數(shù)。
在對乘法運算的次數(shù)進行計數(shù)時,對某值乘以一個小的值的乘法運算的次數(shù)不進行計數(shù),其原因說明如下。
所謂小的值是在式8~式22中成為乘法運算對象的小的固定值,具體地說,是2、3、4、8之類的值。這些值最多可以用4位2進制數(shù)來表示。另一方面,通常其他變量具有160位的值。
一般,在微處理器中,乘數(shù)和被乘數(shù)的乘法運算是被乘數(shù)的移位和重復(fù)進行加法運算。也就是說,如果用2進制數(shù)表示的乘數(shù)的每位是1,就把被乘數(shù)移位,以便使用2進制表示的被乘數(shù)的最下位與該位存在的位置相一致,從而得到一個比特列。對于乘數(shù)的全部位來說,把這樣得到的至少一個比特列全都加起來。
例如在160位的乘數(shù)和160位的被乘數(shù)的乘法運算中,把160位的被乘數(shù)移位160次,得到160個比特列,并把得到的160個比特列加起來。另一方面,在4位的乘數(shù)和160位的被乘數(shù)的乘法運算中,把160位的被乘數(shù)移位4次,得到4個比特列,并把4個比特列加起來。
由于按照上述的方法進行乘法運算,所以,在某值乘以一個小的值的情況下,前述的重復(fù)次數(shù)就少,因此,認為其計算量少,而不對乘法運算進行計數(shù)。
如上所述,在進行橢圓曲線的2倍運算的情況下,在式18中包含有橢圓曲線的參數(shù)a,如果采用一個小的值作為該參數(shù)a的值,橢圓曲線上的2倍運算的計算量可以削減1Mul,而成為3Mul+6Sq。關(guān)于加法運算,即使改變橢圓曲線的參數(shù),計算量也不變。
5.適宜于密碼的橢圓曲線的選擇下面來說明適宜于密碼的橢圓曲線的選擇方法,其詳細內(nèi)容記載于「IEEE P1363 Working draft」(1997年2月6日,IEEE發(fā)行)中。
重復(fù)如下的步驟就能得到適宜于密碼的橢圓曲線。
(步驟1)任意橢圓曲線的選擇選擇有限體GF(p)上的任意參數(shù)a、b,其中a、b滿足式23,p是素數(shù)。
(式23)4×a^3+27×b^2≠0(modp)用所選出的a、b來設(shè)橢圓曲線為E:y^2=x^3+a×x+b(步驟2)判定是否是適宜于密碼的橢圓曲線計算橢圓曲線E的元的個數(shù)#E(GF(p))。
(條件1)用大的素數(shù)除#E(GF(p))(條件2)在#E(GF(p))-(p+1)≠0,-1的情況下,采用橢圓曲線E。在不滿足條件1或條件2的情況下,廢棄橢圓曲線E,返回步驟1,再次重復(fù)任意橢圓曲線的選擇和判定。
6.現(xiàn)有技術(shù)存在的問題如上述的說明,在把小的值固定地選擇作為橢圓曲線的參數(shù)a時,在橢圓曲線的乘方運算中可以削減計算量,但是,預(yù)先固定地取參數(shù)則難以選擇適宜于密碼的安全的橢圓曲線。
反之,用上述說明的橢圓曲線的選擇方法來選擇適宜于密碼的安全的橢圓曲線時,不限定于可以選擇小的值作為橢圓曲線的參數(shù)a,但是不能削減計算量。
這樣,為了選擇適宜于密碼的安全的橢圓曲線,而又要削減計算量,兩者相互矛盾。
本發(fā)明的目的是為解決上述問題而提供把任意選擇的橢圓曲線作為適宜于密碼的安全的橢圓曲線變換為具有與該橢圓曲線等價的安全性且能夠削減計算量的橢圓曲線的橢圓曲線變換裝置、橢圓曲線變換方法和記錄有橢圓曲線變換程序的記錄媒體。
本發(fā)明的另外的目的是提供一種可以安全高速地進行運算的密碼裝置、解碼裝置、數(shù)字署名裝置、數(shù)字署名驗證裝置、鍵共有裝置等的利用裝置以及由所述利用裝置和所述橢圓曲線變換裝置構(gòu)成的利用系統(tǒng)。
如果把每個權(quán)利要求視為一個方案,那么,實現(xiàn)上述目的的橢圓曲線變換裝置是方案1所限定的裝置。
按照這樣的構(gòu)成,可以提供具有與隨機構(gòu)成的橢圓曲線相同的安全性、且在利用裝置中能夠高速進行運算的橢圓曲線,其實用價值非常大。
這里,也可以是方案2所限定的裝置。
在利用裝置中使用由這種橢圓曲線變換裝置變換來的橢圓曲線時,與變換前的橢圓曲線的參數(shù)a取近于160位的值的情況相比較,在進行橢圓曲線上的2倍運算中,可以削減1Mul的計算量。
這里,也可以是方案3所限定的裝置。
在利用裝置中使用由這種橢圓曲線變換裝置變換來的橢圓曲線時,與現(xiàn)有技術(shù)相比較,在進行橢圓曲線上的2倍運算中,可以削減2Sq的計算量。
實現(xiàn)上述目的的利用裝置是方案5所限定的裝置。
按照這樣的構(gòu)成,可以利用具有與隨機構(gòu)成的橢圓曲線相同的安全性、且在利用裝置中能夠高速進行運算的橢圓曲線,其實用價值非常大。
這里,也可以是方案6所限定的裝置。
按照這樣的構(gòu)成,由于使用變換來的橢圓曲線,與把變換前的橢圓曲線的參數(shù)a取近于160位的情況相比較,在橢圓曲線上的2倍運算中,可以削減1Mul的計算量。
這里,也可以是方案7所限定的裝置。
按照這樣的構(gòu)成,由于使用變換來的橢圓曲線,與現(xiàn)有技術(shù)相比較,在橢圓曲線上的2倍運算中,可以削減2Sq的計算量。
結(jié)合說明本發(fā)明的實施例的附圖所作的如下的說明,將會更清楚本發(fā)明的這些和其他的目的、優(yōu)點和特點。
附圖簡要說明圖1表示按照エルガマル署名的數(shù)字署名方式的步驟的順序圖。
圖2是按照本發(fā)明的一個實施例的橢圓曲線變換裝置的方框圖。
圖3是圖2所示的橢圓曲線變換裝置所使用的函數(shù)T(i)的說明表。
圖4是圖2所示的橢圓曲線變換裝置的動作流程圖。
圖5是圖2所示的橢圓曲線變換裝置的變換系數(shù)取得部的動作流程圖。
圖6是圖2所示的橢圓曲線變換裝置的變換橢圓曲線算出部的動作流程圖。
圖7是表示適用圖2所示的橢圓曲線變換裝置的鍵共有系統(tǒng)的動作步驟的順序圖。
用附圖來說明按照本發(fā)明的一個實施例的橢圓曲線變換裝置200。
1.橢圓曲線變換裝置200的構(gòu)成如圖2所示,橢圓曲線變換裝置200由參數(shù)接收部210、變換系數(shù)取得部220、變換橢圓曲線算出部230、參數(shù)發(fā)送部240構(gòu)成。
(參數(shù)接收部210)參數(shù)接收部210從外部裝置接收橢圓曲線的參數(shù)a、b、所述橢圓曲線上的元G和素數(shù)p。其中p是160位的素數(shù)。
在所述外部裝置中,包含使用公開鍵密碼的密碼裝置、解碼裝置、數(shù)字署名裝置、數(shù)字署名驗證裝置、鍵共有裝置等。所述外部裝置使用橢圓曲線上的離散對數(shù)問題作為公開鍵密碼的安全性的根據(jù),并具有所述橢圓曲線。
這里,用E:y^2=x^3+ax+b表示有限體GF(p)上的任意構(gòu)成的所述橢圓曲線,所述元G用G=(x0,y0)表示。
(變換系數(shù)取得部220)如圖3所示,變換系數(shù)取得部220具有函數(shù)T(i),在i=0、1、2、3、4時,函數(shù)T(i)分別具有-3、1、-1、2、-2的值。在i=5、6、7、8、9、10、…時,函數(shù)T(i)分別具有4、-4、5、-5、6、-6、…的值。
變換系數(shù)取得部220從i=0開始把i值每次加1,滿足(式24)-2^31+1≤T(i)≤2^31-1并計算出使(式25)T(i)^4×a(modp)成立的變換系數(shù)t,即有限體GF(p)上的元的變換系數(shù)t。
這里,式24表示取T(i)為32位以下。
在i=0時,函數(shù)T(i)具有-3的值,變換系數(shù)取得部220從i=0開始,把i的值每次加1,由于參照函數(shù)T(i)的值,所以最初參照-3的值。
除在i=0時函數(shù)T(i)具有-3的值之外,由于函數(shù)T(i)具有按絕對值順序從小到大的值,所以可以按順序從絕對值小的值進行參照。
(變換橢圓曲線算出部230)變換橢圓曲線算出部230對有限體GF(p)上構(gòu)成的變換橢圓曲線Et:y′^2=x′^3+a′×x+b′的參數(shù)a′、b′分別計算如下。
(式26)a′=a×t^4(式27)b′=b×t^6變換橢圓曲線算出部230把對應(yīng)于元G的變換橢圓曲線Et上的元Gt=(xt0,yt0)計算如下。
(式28)xt0=t^2×x0(式29)yt0=t^3×y0橢圓曲線E上的任意點被變換成為用上述那樣生成的參數(shù)a′、b′決定的變換橢圓曲線Et上的一點。
(參數(shù)發(fā)送部240)參數(shù)發(fā)送部240把前述計算出的變換橢圓曲線Et的參數(shù)a′、b′和元Gt(xt0,yt0)發(fā)送到所述外部裝置。
2.橢圓曲線變換裝置200的動作(橢圓曲線變換裝置200的全體的動作)下面用圖4所示的流程來說明橢圓曲線變換裝置200的全體的動作。
參數(shù)接收部210從外部裝置接受素數(shù)p、橢圓曲線E的參數(shù)a和b(步驟301),并接收所述橢圓曲線上的元G(步驟302)。接下來,變換系數(shù)取得部220算出變換系數(shù)t(步驟303),變換橢圓曲線算出部230算出在有限體GF(p)上構(gòu)成的變換橢圓曲線Et的參數(shù)a′、b′以及對應(yīng)于元G的變換橢圓曲線Et上的元Gt=(xt0,yt0)(步驟S304),參數(shù)發(fā)送部240向所述外部裝置發(fā)送所計算出的變換橢圓曲線Et的參數(shù)a′、b′以及元Gt(xt0,yt0)(步驟S305)。
(變換系數(shù)取得部220的動作)下面用圖5所示的流程圖來說明變換系數(shù)取得部220的動作。
變換系數(shù)取得部220把0值設(shè)定于i(步驟S311),然后,變換系數(shù)取得部220判定函數(shù)T(i)是否滿足-2^31+1≤T(i)≤2^31-1,如果不滿足該條件(步驟S312),就結(jié)束處理。如果滿足該條件(步驟S312),就計算出使T(i)=t^4×a(modp)成立的變換系數(shù)t(步驟S313),并判定所計算出的變換系數(shù)t是否是有限體GF(p)上的元,如果是有限體GF(p)上的元(步驟S314),就結(jié)束處理。如果不是有限體GF(p)上的元(步驟S314),就把i加1(步驟S315),再次返回步驟S312進行控制。
(變換橢圓曲線算出部230的動作)下面用圖6所示的流程圖來說明變換橢圓曲線算出部230的動作。
變換橢圓曲線算出部230計算出有限體GF(p)上構(gòu)成的變換橢圓曲線Et的參數(shù)a′=a×t^4(步驟S321)、參數(shù)b′=b×t^6(步驟S322)。
變換橢圓曲線算出部230作為對應(yīng)于元G的變換橢圓曲線Et上的元Gt=(xt0,yt0)算出xt0=t^2×x0(步驟S323),算出yt0=t^3×y0(步驟S324)。
3.變換橢圓曲線Et與橢圓曲線E是同型的證明這里,證明變換橢圓曲線Et:y′^2=x′^3+a×t^4×x′+b×t^6與橢圓曲線E:y^2=x^3+a×x+b是同型的。以下,橢圓曲線上的運算使用仿射坐標(biāo)運算。
取橢圓曲線E上的任意點P(x0,y0),這時,因為點P是E上的點,所以,滿足(式30)y0^2=x0^3+a×x0+b。
通過這種變換,點P就被變換為點P′(x0′,y0′)=(t^2×x0,t^3×y0)。
把式30的兩邊乘以t^6,得到t^6×y0^2=t^6×x0^3+t^6×a×x0+t^6×b變換后得到(t^3×y0)^2=(t^2×x0)^3+a×t^4×(t^2×x0)+b×t^6再次變換,得到y(tǒng)0′^2=x0′^3+a×t^4×x0′+b×t^6這表示點P′處在變換橢圓曲線Et上。
橢圓曲線E上的點向變換橢圓曲線Et上的點的變換用(x,y)→(x′,y′)=(t^2×x,t^3×y)來表示。在這里,因為t≠0,所以,容易理解如下的從變換橢圓曲線Et上的點向橢圓曲線E上的點的變換就是上述變換的逆變換。
(x′,y′)→(x,y)=(x′/(t^2),y′/(t^3))由上面的分析可知,橢圓曲線E上的點和變換橢圓曲線Et上的點是一一對應(yīng)的。
下面,取橢圓曲線E上的任意不同的兩點P=(x1,y1)、Q=(x2,y2),設(shè)R=P+Q,R的坐標(biāo)為(x3,y3)。這時,如上所述,成為x3={(y2-y1)/(x2-x1)}^2-x1-x2y3={(y2-y1)/(x2-x1)}(x1-x3)-y1然后通過本發(fā)明用的橢圓曲線變換,把橢圓曲線E上的點P、點Q、點R分別變換為變換橢圓曲線Et上的點P′、點Q′、點R′。點P′、點Q′、點R′的坐標(biāo)分別為(x1′,y1′)、(x2′,y2′)、(x3′,y3′)。這時,下式成立x1′=t^2×x1y1′=t^3×y1x2′=t^2×x2y2′=t^3×y2x3′=t^2×x3y3′=t^3×y3設(shè)R″=P′+Q′其中,這里的加法運算表示變換橢圓曲線上的加法運算。
如果設(shè)R″的坐標(biāo)為(x3″,y3″),那么x3″={(y2′-y1′)/(x2′-x1′)}^2-x1′-x2′y3″={(y2′-y1′)/(x2′-x1′)}(x1′-x3′)-y1′這里,如果該式中的x1′、y1′、x2′、y2′分別如上所述用x1、y1、x2、y2來表示,那么x3″={(t^3×y2-t^3×y1)/(t^2×x2-t^2×x1)}^2-t^2×x1-t^2×x2={t(y2-y1)/(x2-x1)}^2-t^2×x1-t^2×x2=t^2×{{(y2-y1)/(x2-x1)}^2-x1-x2}=t^2×x3=x3′y3″={(t^3×y2-t^3×y1)/(t^2×x2-t^2×x1)}×(t^2×x1-t^2×x3)-t^3×y1={t(y2-y1)/(x2-x1)}×t^2(x1-x3)-t^3×y1=t^3×{{(y2-y1)/(x2-x1)}×(x1-x3)-y1}=t^3×y3=y3′因此,可以理解R′和R″代表相等的點。
這樣,即使在本變換中,也能保障橢圓曲線上的加法運算。
下面來描述Q=P的情況,即2倍公式。
與前面一樣,對于橢圓曲線E上的任意點P,設(shè)R=P+P,按照用于本發(fā)明的橢圓曲線的變換,把橢圓曲線E上的點P、點R分別變換為變換橢圓曲線Et上的點P′、點R′。這里,點P、點R、點P′、點R′的坐標(biāo)分別設(shè)為(x1,y1)、(x3,y3)、(x1′,y1′)、(x3′,y3′)。這時,下式成立x1′=t^2×x1y1′=t^3×y1x3′=t^2×x3y3′=t^3×y3而且,設(shè)R″=P′+P′。
其中,這里的2倍運算表示變換橢圓曲線Et上的2倍運算。
設(shè)點R″的坐標(biāo)為(x3″,y3″),那么x3″={(3x1′^2+a)/2y1′}^2-2x1′y3″={(3x1′^2+a)/2y1′}(x1′-x3′)-y1′這里,如上所述,x1′、y1′分別用x1、y1來表示,得到x3″={{(t^2×3x1)^2+a}/(2×t^3×y1)}^2-2×t^2×x1=t^2{(3x1^2+a)/2y1}^2-t^2×2x1=t^2{{(3x1^2+a)/y1}^2-2x1}=t^2×x3={t(y2-y1)/(x2-x1)}^2-t^2×x1-t^2×x2=t^2{{(y2-y1)/(x2-x1)}^2-x1-x2}=t^2×x3=x3′y3″={{(t^2×3x1)^2+a}/(2×t^3×y1)}×(t^2×x1-t^2×x3)-t^3×y1=t^3{(3x1^2+a)/2y1}(x1-x3)-t^3×y1=t^3×{{(3x1^2+a)/2y1}(x1-x3)-y1}=t^3×y3=y3′因此,可知R′和R″表示相等的點。
這樣,即使在本變換中,橢圓曲線上的2倍運算也能得到保障。
按照上述的分析,可以證明橢圓曲線E和本發(fā)明中使用的變換所生成的變換橢圓曲線Et是同型的。
4.使用變換橢圓曲線Et的情況下的計算量的評價按照上述的實施例,因為把變換橢圓曲線Et的參數(shù)a′取為32位以下,所以,式18的計算量為3Sq。因此,橢圓曲線上的加法運算的計算量就為12Mul+4Sq,2倍運算的計算量為3Mul+6Sq。這樣,與橢圓曲線E的參數(shù)a是近于160位的值的情況相比較,在2倍運算中,可以削減1Mul的計算量。
如上所述,除在i=0時函數(shù)T(i)具有-3的值之外,函數(shù)T(i)具有按順序從絕對值小的值到絕對值大的值。因為可以按順序從絕對值小的值進行參照,所以,可以從計算量更少的變換橢圓曲線中按順序選擇合適的變換橢圓曲線。
按照上述的實施例,在變換橢圓曲線Et的參數(shù)a′為-3的情況下,式18可以變形為M=3×X1^2+a′×Z1^4=3×X1^2-3×Z1^4=3×(X1+Z1^2)×(X1-Z1^2)。
在最后的式子中,計算量為1Mu+1Sq,因此,橢圓曲線上的加法運算的計算量為12Mul+4Sq,2倍運算的計算量為4Mul+4Sq。這樣,與現(xiàn)有技術(shù)相比較,在2倍運算中,可以削減2Sq計算量。
如上所述,在i=0時函數(shù)T(i)具有-3的值,變換系數(shù)取得部220從i=0開始把i的值每次加1來參照函數(shù)T(i)值,所以,最初參照-3。因此,在2倍運算中,由于最初驗證與原來比較可以削減2Sq的計算量的情況,所以,有可能能夠一次就檢測出最合適的變換橢圓曲線。
因此,使用本實施例的變換橢圓曲線時,能夠使橢圓曲線上的計算高速化。
5.變形例變換系數(shù)取得部220也可以像下面那樣來決定變換系數(shù)t。變換系數(shù)取得部220設(shè)置有隨機數(shù)發(fā)生器,所述隨機數(shù)發(fā)生器隨機地產(chǎn)生有限體GF(p)上的元u(u≠0)。然后,變換系數(shù)取得部220判斷元u是否滿足(式31)-2^31+1≤u^4×a(modp)≤2^31-1。
在元u被判定為滿足式31的情況下,就把元u用作變換系數(shù)t。在元u被判定為不滿足式31的情況下,所述隨機數(shù)發(fā)生器再次隨機地產(chǎn)生元u,變換系數(shù)取得部220判斷元u是否滿足式31。
變換系數(shù)取得部220重復(fù)判定所述隨機數(shù)發(fā)生器產(chǎn)生的元u是否滿足式31,直到發(fā)現(xiàn)滿足式31的元u為止。
變換系數(shù)取得部220也可以用(式32)來代替(式31)(式32)u^4×a(modp)=36.橢圓曲線變換裝置200的適用例下面用圖7所示的順序圖來說明適用于上述所說明的橢圓曲線變換裝置200的鍵共有系統(tǒng)。
用網(wǎng)絡(luò)把用戶A450、管理中心460和用戶B470連接起來。
(1)由管理中心460進行的橢圓曲線的選擇管理中心460選擇素數(shù)p,選擇有限體GF(p)上的橢圓曲線E,并把E的基點取為G,把E的位數(shù)取為q(步驟S411)。其中q是滿足(式2)q*G=0的最小的正整數(shù)。
這里,E:y^2=x^3+a×x+bG=(x0,y0)接下來,管理中心460向橢圓曲線變換裝置200發(fā)送p、E、G(步驟S412)。
(2)由橢圓曲線變換裝置200進行的變換橢圓曲線的生成橢圓曲線變換裝置200計算出變換橢圓曲線Et,并計算出元Gt(步驟S421)。
這里,Et:y′^2=x′^3+a′×x′+b′a′=a×t^4b′=b×t^6Gt=(xt0,yt0)xt0=t^2×x0yt0=t^3×y0接下來,橢圓曲線變換裝置200向管理中心460發(fā)送Et、Gt(步驟S422)。
管理中心460再向各用戶發(fā)送p、Et、Gt(步驟S413)。
(3)由用戶進行的秘密鍵的設(shè)定和公開鍵的生成用戶A450設(shè)定秘密鍵xA(步驟S401),用戶B470設(shè)定秘密鍵xB(步驟S431)。
用戶A450用下式計算出公開鍵YA(步驟S402),并向用戶B470發(fā)送公開鍵YA(步驟S403)。
YA=xA*Gt用戶B470用下式計算出公開鍵YB(步驟S432),并向用戶A450發(fā)送公開鍵YB(步驟S433)。
YB=xB*Gt(4)由各用戶進行的共有鍵的生成用戶A450用xA*YB算出共有鍵(步驟S404),用戶B3470用xB*YA算出共有鍵(步驟S434)。
這里,由用戶A450算出的共有鍵xA*YB可以變形為xA*YB=(xA×xB)*Gt由用戶B470算出的共有鍵xB*YA可以變形為xB*YA=(xB×xA)*Gt=(xA×xB)*Gt因此,可以知道用戶A450算出的共有鍵xA*YB和用戶B470算出的共有鍵xB*YA是相同的。
7.其他變形例也可以把別的實施例之一作為上述所示的橢圓曲線變換方法。也可以把所述橢圓曲線變換方法作為包含計算機執(zhí)行的橢圓曲線變換程序的計算機可讀的記錄媒體。還可以經(jīng)通信線路傳送所述橢圓曲線變換程序。
也可以把上述所說明的橢圓曲線變換裝置適用于密碼裝置、解碼裝置、或由密碼裝置和解碼裝置構(gòu)成的密碼系統(tǒng)。
也可以把上述所說明的橢圓曲線變換裝置適用于數(shù)字署名裝置、數(shù)字署名驗證裝置、或由數(shù)字署名裝置和數(shù)字署名驗證裝置構(gòu)成的數(shù)字署名系統(tǒng)。
密碼裝置、解碼裝置、數(shù)字署名裝置、數(shù)字署名驗證裝置或鍵共有裝置也可以預(yù)先存儲由橢圓曲線變換裝置算出的橢圓曲線的參數(shù)a′、b′和元Gt,并用所存儲的橢圓曲線的參數(shù)a′、b′和元Gt來進行加密、解密、數(shù)字署名、數(shù)字署名驗證或鍵共有。
也可以把上述所示的實施例及其多個變形例組合起來。
雖然上面己經(jīng)參照附圖以實施例的方式充分說明了本發(fā)明,應(yīng)注意到各種變化和改型對于所屬領(lǐng)域的普通技術(shù)人員來說是顯而易見的。因此,這些變化和改型都應(yīng)包含于本發(fā)明之中,除非它們偏離本發(fā)明的宗旨。
權(quán)利要求
1.一種變換一個橢圓曲線E并生成一個其他橢圓曲線Et的橢圓曲線變換裝置,包含從外部接收素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、作為基點的元G的接收裝置,其中橢圓曲線E被定義在有限體GF(p)上,用y^2=x^3+ax+b來表示,元G存在于橢圓曲線E上,用G=(x0,y0)來表示;取得存在于有限體GF(p)上的變換系數(shù)t的變換系數(shù)取得裝置,其中變換系數(shù)t滿足條件t≠0,而且,與素數(shù)p相比,t^4×a(modp)的位數(shù)少;按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和新的基點元Gt的橢圓曲線算出裝置,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元Gt的x坐標(biāo)值、y坐標(biāo)值;向外部輸出算出的所述參數(shù)a′、b′和元Gt的輸出裝置。
2.根據(jù)權(quán)利要求1的橢圓曲線變換裝置,其特征在于p是160位的素數(shù),所述變換系數(shù)取得裝置取得滿足如下條件的變換系數(shù)t,t^4×a(modp)為32位以下的數(shù)。
3.根據(jù)權(quán)利要求1的橢圓曲線變換裝置,其特征在于所述變換系數(shù)取得裝置取得滿足如下條件的變換系數(shù)t,t^4×a(modp)為-3。
4.根據(jù)權(quán)利要求1的橢圓曲線變換裝置,其特征在于所述變換系數(shù)取得裝置設(shè)變量T,并設(shè)初始值為-3,按從位數(shù)小的值向位數(shù)大的值的順序取初始值以外的值,反復(fù)判定是否滿足條件T=t^4×a(modp),由此來取得變換系數(shù)t。
5.一種由變換一個橢圓曲線E并生成一個其他橢圓曲線Et的橢圓曲線變換裝置和利用所生成的橢圓曲線Et的利用裝置構(gòu)成的橢圓曲線利用系統(tǒng),其特征在于所述利用裝置設(shè)置有第一輸出裝置、第一接收裝置和利用裝置,所述橢圓曲線變換裝置設(shè)置有第二接收裝置、變換系數(shù)取得裝置、橢圓曲線算出裝置和第二輸出裝置;所述第一輸出裝置向所述橢圓曲線變換裝置輸出素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、作為基點的元G;其中橢圓曲線E被定義在有限體GF(p)上,并用y^2=x^3+ax+b表示,元G存在于橢圓曲線E上,并用G=(x0,y0)來表示;所述第二接收裝置從所述利用裝置接收素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、元G;所述變換系數(shù)取得裝置取得存在于有限體GF(p)上的變換系數(shù)t,其中變換系數(shù)t滿足條件t≠0,且與素數(shù)p比較,t^4×a(modp)位數(shù)少;所述橢圓曲線算出裝置按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和新的作為基點的元Gt,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0=t^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元Gt的x坐標(biāo)值、y坐標(biāo)值;所述第二輸出裝置向所述利用裝置輸出算出的所述參數(shù)a′、b′和元Gt所述第一接收裝置接收所述被輸出的參數(shù)a′、b′和元Gt;所述利用裝置用由素數(shù)p、所述接收到的參數(shù)a′和b′決定的橢圓曲線以及作為基點的元Gt根據(jù)定義在有限體GF(p)上的橢圓曲線上的運算進行把離散對數(shù)問題作為安全性的根據(jù)的加密、解密、數(shù)字署名、數(shù)字署名驗證或鍵共有。
6.根據(jù)權(quán)利要求5的橢圓曲線利用系統(tǒng),其特征在于p是160位的素數(shù),所述變換系數(shù)取得裝置取得滿足如下條件的變換系數(shù)t,t^4×a(modp)為32位以下的數(shù)。
7.根據(jù)權(quán)利要求5的橢圓曲線利用系統(tǒng),其特征在于所述變換系數(shù)取得裝置取得滿足如下條件的變換系數(shù)t,t^4×a(modp)為-3。
8.根據(jù)權(quán)利要求5的橢圓曲線利用系統(tǒng),其特征在于所述變換系數(shù)取得裝置設(shè)變量T,并設(shè)初始值為-3,按從位數(shù)小的值向位數(shù)大的值的順序取初始值以外的值,反復(fù)判定是否滿足條件T=t^4×a(modp),由此來取得變換系數(shù)t。
9.一種設(shè)置有第二接收裝置、變換系數(shù)取得裝置、橢圓曲線算出裝置和第二輸出裝置,從變換一個橢圓曲線E并生成一個其他橢圓曲線Et的橢圓曲線變換裝置接收并利用前述所生成的橢圓曲線Et的利用裝置,其特征在于所述利用裝置設(shè)置有第一輸出裝置、第一接收裝置和利用裝置;所述第一輸出裝置向所述橢圓曲線變換裝置輸出素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、作為基點的元G;其中橢圓曲線E被定義在有限體GF(p)上,并用y^2=x^3+ax+b表示,元G存在于橢圓曲線E上,并用G=(x0,y0)來表示;所述第二接收裝置從所述利用裝置接收素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、元G;所述變換系數(shù)取得裝置取得存在于有限體GF(p)上的變換系數(shù)t,其中變換系數(shù)t滿足條件t≠0,且與素數(shù)p比較,t^4×a(modp)位數(shù)少;所述橢圓曲線算出裝置按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和元Gt,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0=t^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元Gt的x坐標(biāo)值、y坐標(biāo)值;所述第二輸出裝置向所述利用裝置輸出算出的所述參數(shù)a′、b′和元Gt;所述第一接收裝置接收所述被輸出的參數(shù)a′、b′和元Gt;所述利用裝置用由素數(shù)p、所述接收到的參數(shù)a′和b′決定的橢圓曲線以及作為基點的元Gt根據(jù)定義在有限體GF(p)上的橢圓曲線上的運算進行把離散對數(shù)問題作為安全性的根據(jù)的加密、解密、數(shù)字署名、數(shù)字署名驗證或鍵共有。
10.一種利用變換一個橢圓曲線E所生成的橢圓曲線Et的利用裝置,包含存儲橢圓曲線Et的參數(shù)a′、參數(shù)b′和作為基點的元Gt的存儲裝置;利用由p、所述接收到的參數(shù)a′和b′決定的橢圓曲線以及作為基點的元Gt根據(jù)定義在有限體GF(p)上的橢圓曲線上的運算進行把離散對數(shù)問題作為安全性的根據(jù)的加密、解密、數(shù)字署名、數(shù)字署名驗證或鍵共有的利用裝置;其中參數(shù)a′、參數(shù)b′和元Gt由橢圓曲線變換裝置生成,所述橢圓曲線變換裝置設(shè)置有變換系數(shù)取得裝置、橢圓曲線算出裝置,p是素數(shù),橢圓曲線E被定義在有限體GF(p)上,并用y^2=x^3+ax+b表示,作為基點的元G存在于橢圓曲線E上,并用G=(x0,y0)來表示;所述變換系數(shù)取得裝置取得存在于有限體GF(p)上的變換系數(shù)t,其中變換系數(shù)t滿足條件t≠0,且與素數(shù)p比較,t^4×a(modp)位數(shù)少;所述橢圓曲線算出裝置按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和新的作為基點的元Gt,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0=t^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元G=t的x坐標(biāo)值、y坐標(biāo)值。
11.一種變換一個橢圓曲線E來生成一個其他橢圓曲線Et的橢圓曲線變換方法,包含如下步驟從外部接收素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、作為基點的元G的接收步驟,其中橢圓曲線E被定義在有限體GF(p)上,用y^2=x^3+ax+b來表示,元G存在于橢圓曲線E上,用G=(x0,y0)來表示;取得存在于有限體GF(p)上的變換系數(shù)t的變換系數(shù)算出步驟,其中變換系數(shù)t滿足條件t≠0,而且,與素數(shù)p相比,t^4×a(modp)的位數(shù)少;按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和作為新的基點的元Gt的橢圓曲線算出步驟,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0=t^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元Gt的x坐標(biāo)值、y坐標(biāo)值;向外部輸出所述被算出的參數(shù)a′、b′和元Gt的輸出步驟。
12.一種記錄著變換一個橢圓曲線E來生成一個其他橢圓曲線Et的橢圓曲線變換程序的計算機可讀的記錄媒體,所述程序包含如下步驟從外部接收素數(shù)p、橢圓曲線E的參數(shù)a和參數(shù)b、作為基點的元G的接收步驟,其中橢圓曲線E被定義在有限體GF(p)上,用y^2=x^3+ax+b來表示,元G存在于橢圓曲線E上,用G=(x0,y0)來表示;取得存在于有限體GF(p)上的變換系數(shù)t的變換系數(shù)算出步驟,其中變換系數(shù)t滿足條件t≠0,而且,與素數(shù)p相比,t^4×a(modp)的位數(shù)少;按照下式用取得的所述變換系數(shù)t算出橢圓曲線Et的參數(shù)a′、參數(shù)b′和作為新的基點的元Gt的橢圓曲線算出步驟,a′=a×t^4b′=b×t^6xt0=t^2×x0yt0=t^3×y0其中橢圓曲線Et被定義在有限體GF(p)上,用y′^2=x′^3+a′×x′+b′來表示,xt0、yt0分別是元Gt的x坐標(biāo)值、y坐標(biāo)值;向外部輸出所述被算出的參數(shù)a′、b′和元Gt的輸出步驟。
全文摘要
參數(shù)接收部210從外部接收橢圓曲線E的參數(shù)a、b橢圓曲線E上的元G;變換系數(shù)取得部220算出有限體GF(p)上的元即變換系數(shù)t,使t^4×a(modp)為32位以下;變換橢圓曲線算出部230用下式計算出在有限體GF(p)上構(gòu)成的橢圓曲線Et:y′^2=x′^3+a′×x′+b′的參數(shù)a′、b′,并由下式算出對應(yīng)于元G的橢圓曲線Et上的元Gt=(xt0,yt0),a′=a×t^4 b′=b×t^6 xt0=t^2×x0 yt0=t^3×y0 參數(shù)發(fā)送部240向外部輸出參數(shù)a′、b′以及元Gt(xt0,yt0)。
文檔編號H04L9/30GK1235446SQ99107608
公開日1999年11月17日 申請日期1999年3月4日 優(yōu)先權(quán)日1998年3月5日
發(fā)明者宮地充子 申請人:松下電器產(chǎn)業(yè)株式會社