<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

信息安全裝置及橢圓曲線運算裝置的制作方法

文檔序號:2403477閱讀:336來源:國知局
專利名稱:信息安全裝置及橢圓曲線運算裝置的制作方法
技術領域:
本發明涉及能夠對抗基于功率消耗量測量的功率分析攻擊,可以 安全、可靠地對信息進行處理的信息安全技術。
背景技術:
近些年來,在由硬件或軟件安裝的加密模塊中進行加密處理時, 以該加密處理中的各種副信息為線索,對該加密處理中所使用的加密 密鑰進行分析的各種破譯方法,進行了研究。
例如,在被稱為定時攻擊的破譯方法中,在加密模塊中加密處理 所需的時間,根據該加密處理中所用的加密密鑰的值,有盡管微小但 確實存在的不同,利用這一點進行該加密密鑰的破譯。另外,在被稱
為Simple Power Analysis(簡單功率分析攻擊)、及Differential Power Analysis(差分功率分析攻擊)的破譯方法中,采用進行加密處理時的加 密模塊的功率消耗量作為副信息。
已有報告指出,這些破譯方法,近些年來可以以便宜的價格得到 高性能的測量設備,即使對安裝IC卡這樣的加密模塊的實際產品也 可以進行分析。
在下面的說明中,以上述的加密處理時的加密模塊功率消耗量的 變化,即功率波形為線索,對加密密鑰進行分析的破譯方法,總稱為 "功率分析攻擊"。關于定時攻擊,在非專利文獻1中進行了詳細說 明,而關于功率分析攻擊,在非專利文獻2中進行了詳細敘述。
下面,說明對橢圓曲線加密的簡單功率分析攻擊。關于橢圓曲線 加密,在非專利文獻5中進行了詳細敘述,另夕卜,關于橢圓ElGamal 加密及橢圓DSA簽名方式,在非專利文獻3中進行詳細敘述。
(橢圓曲線加密的簡單功率分析攻擊)
在橢圓曲線加密的解密處理中,計算作為正整數的私鑰ks和作
為密文一部分的橢圓曲線上的點C的標量乘法點k^C。此處,ks*C 表示將ks個點C相加所得到的橢圓曲線上的點。該計算方法,例如 是已知有在非專利文獻5的69頁的帶符號Window法。下面對帶符 號Window法進行說明。以下,設Window的寬度為3比特。
步驟S801:使v—ks,取v—0,v—l,v—2,......,v—b,使v=v_0+v—1
X2A3+v—2X2A6+......+v—bX2A(bX3)。再使v—(b+1)—0。此處,b表
示(len/3以上的最小整數)-l, len表示v的比特數,"X "表示整數 相乘,x、表示x的y次冪。例如len-52時,b=18-l=17。
步驟S802:在以下的步驟S8021 S8026中,生成整數串 {w_i}(i=l, 2, ......, b+l)。
步驟S8021: c—0
步驟S8022:判斷是否是v_c〉2A2,當v—c>2A2時,轉到步驟 S8023,否則轉到步驟S8024。
步驟S8023: w—c—v—c-2A3, v—(c+1)—v_(c+l)+l ,轉到步驟S8025 步驟S8024: w—c—v—c 步驟S8025: c—c+1
步驟S8026:判斷是否是c〉b+l。當c〉b+l時,轉到步驟S803, 否則轉到步驟S8022
步驟S803:在以下的步驟S8031 S8035中,生成表(P一i〉。
步驟S8031: P—0—0、 P—2—Dob(C),此處,O表示橢圓曲線的 零源,Dob表示橢圓曲線的2倍運算,Dob(C)是C的2倍點。
步驟S8032: c—3
步驟S8033: P_c—P—(c-l)+C
步驟S8034: c—c+l
步驟S8035:判斷是否是0>2"2=4。當c>2A2時,轉到步驟S804, 否則轉到步驟S8033。
步驟S804:在以下的步驟S8041 S8047中,計算標量乘法點R。 步驟S8041: c—b+l
步驟S8042:判斷是否是w—c=0。當 _0=0時,c—c-l。 步驟S8043: R—P—(w一c)
步驟S8044: c—c-l
步驟S8045:判斷是否是c〈0。當c〈0時,轉到步驟S805。
步驟S8046: R—Dob(Dob(Dob(P—(w—c))))
步驟S8047:判斷w—c是正、負還是0。當w_c<0時,R—Add(R, -P_(-w_c》,當w—c>0時,R—Add(R, P_(w_c》,當w—c=0時,什 么也不做。轉到步驟S8044,此處Add是橢圓曲線的加法運算,Add(R, P一(wj))是對R和P一(wj)的橢圓曲線的加法運算的結果。
步驟S805:輸出R,結束。
在上述方法中,利用整數串(w—力和表(P—i》計算標量乘法點。在 步驟S8047中當w_c=0時,未執行橢圓曲線運算。另夕卜,在步驟S8042 中,當wj-0時,由于不進行橢圓曲線的運算,而減去c,因此這一 部分不執行橢圓曲線的運算。這樣,當w_c=0時,與不是這種情況 時處理不同。
(橢圓曲線的2倍運算和橢圓曲線加法運算的公式) 以下,表示橢圓曲線的2倍運算和橢圓曲線加法運算的公式。關 于該公式,在非專利文獻4中進行了詳細敘述。此處,以點坐標為 Jacobian坐標,進行橢圓曲線的運算(加法運算及2倍運算)。
(a) 橢圓曲線的加法公式
對于P1氣X1, Yl, Zl), P2=(X2, Y2, Z2),使P3=P1+P2=(X3, Y3, Z3)
X3=-HA3-2 X Ul X H八2+一2 Y3=-S1 XHA3+rX(Ul XHA2-X3) Z3=Z1XZ2XH
其中,U1=X1XZ2A2, U2=X2XZ1A2, S1=Y1XZ2A3, S2=Y2 XZ1A3, H=U1-U2, r=S2-Sl。
(b) 橢圓曲線的2倍運算公式
對于P1氣X1, Yl, Zl),使P4-2氺P1-(X4, Y4, Z4)。 X4=T
Y4=-8XY1A4+MX(S-T) Z4=2XY1XZ1
其中,S=4XX1XY1A2, M=3XXlA2+aXZlA4, T=-2S+MA2。
從上述看出,在橢圓曲線加法運算中,2次方計算執行4次,乘 法執行12次。與此相比,橢圓曲線2倍運算中,2次方計算執行6 次,乘法執行4次。
這樣,橢圓曲線計算和橢圓曲線2倍運算,由于2次方計算及乘 法的次數不同,所以加密模塊中的消耗功率波形不同。從而,通過觀 測功率波形,可以分析橢圓曲線的2倍運算,加法運算的順序。從該 分析結果,攻擊者可以知道有無w_c=0的情況。另外,攻擊者可以 根據是否是w_c=0的信息縮小私鑰ks的搜索空間。
(現有的對橢圓曲線加密的簡單功率分析攻擊的對策方法)
在上述的簡單功率分析攻擊中,利用了在w—c=0時計算處理不 同的情況。為此,為了防御該攻擊,只要通過在w—c=0時增加偽計 算處理,使w—c=0時與不是這一情況時的計算處理相同即可。具體 地說,用以下的算法進行計算。
步驟S901: v—ks,取v—0, v—1, v—2, ......, v一b使v=v—0+v_l
X2A3+v—2X2A6+ +v_bX2A(bX3)。再使v—(b+1)—0。此處,b表
示(len/3以上的最小整數)-l , len表示v的比特數,"X "表示整數 的乘法,xAy表示x的y次方。例如,len-52時,b=18-l=17。
步驟S902:在以下的步驟S9021 S9026中,生成整數串 {w—i}(i=l, 2, ......, b+l)。
步驟S9021: c—0
步驟S9022:判斷是否是v_c>2A2,當v_c>2A2時,轉到步驟 S9023,否則轉到步驟S9024。
步驟S9023: w_c—v—c-2A3, v_(c+l)—v—(c+l)+l ,轉到步驟 S9025。
步驟S9024: w—c—v—c
步驟S9025: c—c+1
步驟S9026:判斷是否是c〉b+l。當c〉b+l時,轉到步驟S903, 否則轉到步驟S9022
步驟S903:在以下的步驟S9031 S9035中,生成表(P—i}。
步驟S9031: P_0—0、 P—2—Dob(C)。 步驟S9032: c—3 步驟S9033: P—c—P—(c-l)+C 步驟S9034: c—c+1
步驟S9035:判斷是否是c〉2^4。當c〉2A2時,轉到步驟S904, 否則轉到步驟S9033。
步驟S904:在以下的步驟中,計算標量乘法點R。 步驟S904h c—b+1
步驟S9042 : 判斷是否w_c=0 。當w_c=0時,D — Dob(Dob(Dob(C))), D—Add(R,C), c—c-l。 步驟S9043: R—P_(w_c) 步驟S9044: c—c-1
步驟S9045:判斷是否c〈0。當c〈0時,轉到步驟S905。
步驟S9046: R—Dob(Dob(Dob(P_(w—c))))
步驟S9047:判斷w_c是正、負還是0。當w—c<0時,R—Add(R, -P_(-w—c)),當w_c>0時,R—Add(R, P_(w—c)),當w—c=0時,D —Add(R,C)。轉到步驟S9044,此處Add是橢圓曲線的加法運算, Add(R, P—(w一c))是對R和P—(w—c)的橢圓曲線的加法運算的結果。
步驟S905:輸出R,結束。
在上述對簡單功率攻擊的對策方法中,D是與計算結果沒關系的 偽的點,在步驟S9042及步驟S9047執行的Q運算為偽運算。在步 驟S9042中當w—c=0時,執行3次偽橢圓曲線2倍運算和1次偽橢 圓曲線加法運算。即使在不是w—c-O時,也執行步驟S9046的3次 橢圓曲線2倍運算、步驟S9047的1次橢圓曲線加法運算,所以w_c=0 時和w—c^O時執行相同的運算。另外,在步驟S9047,當w^-0時 執行偽的加法,執行與w—c#0時相同的運算。
從而,上述對簡單功率攻擊的對策方法中,由于w—c=0時也與 w—c#0時執行相同的運算,所以功率波形相同,攻擊者根據功率波 形無法知道是否是w_c=0的信息。
非專禾!j文獻1: Paul C. Kocher, "Timing attacks on implementations
of Diffie-Hellman, RSA, DSS, and Other Systems", In Neal Koblitz, editor, CRYPTO,96, LNCS 1109, Springer-Verlag, 1996, pp. 104-113.
非專利文獻2: P. Kocher, J. Jaffe, and B. Jun, "Differential Power Analysis", Advances in Cryptology-CRYPTO,99, LNCS, 1666, Springer-Verlag, 1999, pp.388-397.
非專利文獻3:岡本龍明、山本博資、[現代喑號]、産業図書(1997
年)
非專利文獻4: A. Miyaji, T. Ono and H. Cohen, "Efficient elliptic curve exponentiation", ICICS,97, Springer-Verlag, 1999, pp.282-291.
非專利文獻5: I. Blake, G. Seroussi andN. Smart, "Elliptic Curves in Cryptography", London Mathematical Society Lecture Note Series 265, CAMBRIDGE UNIVERSITY PRESS, 1999
在上述對簡單功率攻擊的對策方法中,除P一^P以外,在表中還 存放P—2、 P_3、 P—4三點。但是,在IC卡等資源受限制的狀況下, 希望減小表的量。

發明內容
本發明的目的在于提供一種信息安全裝置、橢圓曲線運算裝置、 方法及計算機程序,在保持對簡單功率分析攻擊的耐受性的同時,可 以削減使用的表量。
(解決課題的手段)
為了達到上述目的,本發明的信息安全裝置,以將素數p作為模 的剩余域F上所定義的橢圓曲線E上的離散對數問題為根據,利用在 橢圓曲線E上的點C乘以作為小于素數p的正整數的系數k來計算 出點PC的橢圓曲線運算,安全而可靠地處理信息,其特征在于,包 括點存儲單元,存儲橢圓曲線E上的點C;位存儲單元,存儲系數
k的所有位的值;取得單元,從位存儲單元取得1個位的值W;乘法 運算單元,其數量與取得的上述位所能表示的值的種類的數量相同; 選擇單元,選擇與取得的上述位的值W相對應的乘法運算單元;以 及重復控制單元,對于系數k的所有的位,對上述取得單元、上述選擇單元及上述乘法運算單元進行控制,以便重復地進行1個位的值W 的取得、與取得的位的值w相對應的乘法運算單元的選擇、以及所
選擇的乘法運算單元進行的乘法運算,各乘法運算單元,在橢圓曲線
E上,將上述點C乘以取得的上述位的值w所得到的乘法運算結果, 在與該位相對應的位置上進行加法運算,當存在滿足取得的上述位的 值w用2t除得開、而用2W除不開的條件的非負整數t時,與該位的 值w相對應的上述乘法運算單元,在橢圓曲線E上,進行包括點Q 乘以w/2t而得到的點的加法運算或點Q乘以lw/2tl而得的點的減法運 算的運算。
此處,點存儲單元相當于實施方式的被運算值存放部224,位存 儲單元相當于分割信息存放部223,取得單元相當于取得部241,選 擇單元相當于選擇部242,多個乘法運算單元分別相當于Window運 算部251 25S,重復控制單元相當于重復控制部243。另外,實施方 式中的Window在此以位(digit)來表示。
(發明的效果)
根據該構成,與該位的值w相對應的上述乘法運算單元,在橢 圓曲線E上,進行包括點Q乘以w/2t所得到的點的加法運算或點Q 乘以lw/2tl所得到的點的減法運算的運算,所以例如當各位的比特長為 3時,在加法運算或減法運算中使用的點,除了C之外,只有3T, 當各位的比特長為4時,加法運算或減法運算中使用的點,除了 C
之外,只有3氺c、 5*<:及7*(:。
按照現有技術,例如當各位的比特長為3時,在加法運算或減法
運算中使用的點,除了c之外,有2*0、 3*(:及4*(:,而當各位的比
特長為4時,在加法運算或減法運算中使用的點,除了 C之外,有 2*C、 3*C、 4*C、 5*C、 6*C、 7*C及8*C。
這樣,根據本發明,與現有技術比較,可以減少在加法運算或減 法運算中所使用的點,可以削減使用的表量。
此處,也可以是,取得的上述位為sw比特長,當存在上述非負 整數t時,與上述位的值w相對應的上述乘法運算單元,依次進行 (sw+l)次運算,在上述多個運算中的第(sw-t+l)個運算,是橢圓曲線E
上的上述加法運算或上述減法運算,其他運算是橢圓曲線E上的2 倍運算。
通過這一構成,可得到與現有技術同樣的運算結果,并且可以減 少加法運算或減法運算中使用的點的數量。
此處,也可以是,上述信息安全裝置還包括表生成單元,該表生 成單元以點Q為初始的加法運算點,通過重復進行對加法運算點加 上2*Q而得到新的加法運算點,從而生成除點Q之外的2SW"個加法 運算點;當存在非負整數t時,與該位的值w相對應的上述乘法運算 單元,使用由上述表生成單元所生成的上述加法運算點,作為點Q 乘以w/2t或lw/2t,得到的點。
通過這一構成,由于通過表生成單元,2sw'1個加法運算點被算出, 所以可以減少乘法運算單元中的運算次數。
此處,也可以是,取得的上述位是3比特長,當上述位的值w 為2時,對應的乘法運算單元依次進行橢圓曲線E上的2倍運算、2 倍運算、加法運算及2倍運算,上述加法運算是加上上述點C的運算, 當上述位的值w為4時,對應的乘法運算單元依次進行橢圓曲線E 上的2倍運算、加法運算、2倍運算及2倍運算,上述加法運算是加 上上述點C的運算,當上述位的值w為-2時,對應的乘法運算單元 依次進行橢圓曲線E上的2倍運算、2倍運算、減法運算及2倍運算, 上述減法運算是減去上述點C的運算。
通過這一構成,在加法運算或減法運算中使用的點,除了 C之外, 只有3*(:,與現有技術比較,可以削減使用的表量。
此處,也可以是,取得的上述位是4比特長,當上述位的值w 為2時,對應的乘法運算單元依次進行橢圓曲線E上的2倍運算、2 倍運算、2倍運算、加法運算及2倍運算,上述加法運算是加上上述 點C的運算,當上述位的值w為4時,對應的乘法運算單元依次進 行橢圓曲線E上的2倍運算、2倍運算、加法運算、2倍運算及2倍 運算,上述加法運算是加上上述點C的運算,當上述位的值w為6 時,對應的乘法運算單元依次進行橢圓曲線E上的2倍運算、2倍運 算、2倍運算、加法運算及2倍運算,上述加法運算是加上點3*C的運算,當上述位的值w為8時,對應的乘法運算單元依次進行橢圓 曲線E上的2倍運算、加法運算、2倍運算、2倍運算及2倍運算, 上述加法運算是加上上述點C的運算,當上述位的值w為-6時,對 應的乘法運算單元依次進行橢圓曲線E上的2倍運算、2倍運算、2 倍運算、減法運算及2倍運算,上述減法運算是減去點3*(:的運算, 當上述位的值w為-4時,對應的乘法運算單元依次進行橢圓曲線E 上的2倍運算、2倍運算、減法運算、2倍運算及2倍運算,上述減 法運算是減去點C的運算,當上述位的值w為-2時,對應的乘法運 算單元依次進行橢圓曲線E上的2倍運算、2倍運算、2倍運算、減 法運算及2倍運算,上述減法運算是減去點C的運算。
通過這一構成,在加法運算或減法運算中使用的點,除了 C之外, 只有3*匚5*<:及7*<:,與現有技術比較,可以削減使用的表量。
此處,也可以是,上述加法運算或上述減法運算及上述2倍運算, 分別包括偽運算,使得它們以相同順序執行相同種類的運算。
根據該構成,由于加法運算或減法運算及2倍運算,分別以相同 的順序執行相同種類的運算,所以即使要以功率波形為線索進行分 析,在加法運算或減法運算及2倍運算中,輸出同樣的功率波形,很 難明確區別2者。這樣,可以對抗功率分析攻擊。
此處,也可以是,當取得的上述位是a比特長時,在存在上述非 負整數t時,與上述位的值w相對應的上述乘法運算單元,依次進行 (a+l)次運算,在上述多個運算中的第(a-t+l)個運算是橢圓曲線E上的 上述加法運算或上述減法運算,其他運算是橢圓曲線E上的2倍運算, 當取得的上述位是b比特長時,在存在上述非負整數t時,與上述位 的值w相對應的上述乘法運算單元,依次進行(b+l)次運算,在上述 多個運算中的第(b-t+l)個運算是橢圓曲線E上的上述加法運算或上 述減法運算,其他運算是橢圓曲線E上的2倍運算。
根據該構成,即使混合存在不同比特長的位時,也可以進行運算。
此處,也可以是,上述信息安全裝置是加密裝置,采用計算點 WC的橢圓曲線運算,對信息進行加密。
根據這一構成,可以對抗信息加密時的功率分析攻擊。
此處,也可以是,上述信息安全裝置是解密裝置,采用計算點
PC的橢圓曲線運算,對加密的信息進行解密。
根據這一構成,可以對抗對加密的信息進行解密時的功率分析攻擊。
此處,也可以是,上述信息安全裝置是數字簽名生成裝置,采用
計算點k*C的橢圓曲線運算,對信息進行數字簽名。
根據這一構成,可以對抗數字簽名生成時的功率分析攻擊。 此處,也可以是,上述信息安全裝置是數字簽名驗證裝置,采用
計算點PC的橢圓曲線運算,進行數字簽名的驗證。
根據這一構成,可以對抗數字簽名驗證時的功率分析攻擊。 此處,也可以是,上述信息安全裝置是密鑰共有裝置,采用計算
點wc的橢圓曲線運算,生成與其他密鑰共有裝置之間共有的密鑰。
根據這一構成,可以對抗密鑰共有時的功率分析攻擊。
另外,本發明的橢圓曲線運算裝置,以將素數p作為模的剩余域
F上所定義的橢圓曲線E上的離散對數問題為根據,利用在橢圓曲線 E上的點C乘以作為小于素數p的正整數的系數k來計算點k*C,其 特征在于,該橢圓曲線運算裝置包括點存儲單元,存儲橢圓曲線E 上的點C;位存儲單元,存儲系數k的所有位的值;取得單元,從位 存儲單元取得1個位的值W;乘法運算單元,其數量與取得的上述位 所能表示的值的種類的數量相同;選擇單元,選擇與取得的上述位的 值W相對應的乘法運算單元;以及重復控制單元,對于系數k的所 有的位,對上述取得單元、上述選擇單元及上述乘法運算單元進行控 制,以便重復地進行1個位的值W的取得、與取得的位的值W相對 應的乘法運算單元的選擇、以及所選擇的乘法運算單元進行的乘法運 算,各乘法運算單元,在橢圓曲線E上,將上述點C乘以取得的上
述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行
加法運算,當存在滿足取得的上述位的值w用2t除得開、而用2t+1 除不開的條件的非負整數t時,與該位的值w相對應的上述乘法運算 單元,在橢圓曲線E上,進行包括點Q乘以w/2t而得到的點的加法 運算或點Q乘以lw/2tl而得的點的減法運算的運算。
根據這一構成,與現有技術比較,可以減少在加法運算中所使用 的點,可以削減使用的表量。
如上述說明的那樣,通過本發明的信息安全裝置及橢圓曲線運算 裝置,可以取得在保持對簡單功率分析攻擊的耐受性的同時,與現有 技術相比可削減使用的表量的效果。


圖1是表示本發明所涉及的1實施方式的點發行系統10的構成
的系統構成圖。
圖2是表示橢圓曲線運算部208的構成的方框圖。
圖3是表示分割信息生成部222的操作的流程圖。
圖4是表示橢圓曲線加法運算部226的加法運算操作及橢圓曲線
2倍運算部227的2倍運算操作的流程圖。下接圖5。
圖5是表示橢圓曲線加法運算部226的加法運算操作及橢圓曲線
2倍運算部227的2倍運算操作的流程圖。上接圖4。
圖6是表示表生成部225的表(P—0的生成操作的流程圖。
圖7表示在sw=3時,由表生成部225戶;f生成的表(P一i)的一例。
圖8表示在sw=4時,由表生成部225所生成的表《P一i)的一例。
圖9表示在sw=5時,由表生成部225所生成的表(PJ)的一例。
圖IO表示標量乘法運算部229的運算步驟的流程圖。下接圖11。
圖11表示標量乘法運算部229的運算步驟的流程圖。上接圖10。
圖12是用于說明圖11的步驟S161 S168的各運算的意義的
sw=3吋的運算變換表320。
圖13是表示橢圓曲線運算部208的操作的流程圖。
圖14是表示點發行系統10的操作的流程圖。
圖15是表示數字簽名系統的操作的流程圖。
圖16是表示密鑰共有系統的操作的流程圖。
圖17表示sw=4時的運算變換表330。
圖18是表示標量乘法運算部229的構成的方框圖。
具體實施例方式
1、實施方式l
下面,對本發明所涉及的1實施方式的點發行系統io進行說明。 1.1點發行系統io的構成
點發行系統IO,如圖1中所示,由IC卡100及點發行裝置200 構成。
通過點發行裝置200的操作者,將IC卡100安裝在點發行裝置 200上,點發行裝置200生成點,對生成的點施行加密算法,生成加 密點,并將生成的加密點發送給IC卡100。
此處,點是在用戶購買商品或接受服務時,從銷售者及服務提供 者接受的優惠信息,以后用戶在購買商品或接受服務時,作為對銷售 者及服務提供者的等價支付的一部分或全部而加以利用。
IC卡100接受加密點,對接受的加密點實施對應于上述加密的 解密算法,生成解密點,并將生成的解密點存儲在內部。
點發行裝置200及IC卡100,是分別以素數p為模的剩余域F 上所定義的橢圓曲線E上的離散對數問題為根據,利用在橢圓曲線E 上的點C乘以作為小于素數p的正整數的系數k而計算點k*C的橢 圓曲線運算,安全而可靠地處理信息的信息安全裝置。
此處,對信息進行安全處理,是指例如在二者間進行信息通信時, 該信息不讓第三者知道,該通信也稱為秘密通信。
1.2公鑰加密方式及離散對數問題
在本實施方式中,上述加密算法及解密算、法,基于使用橢圓曲線 上的運算的公鑰加密方式。
在使用公鑰加密方式的秘密通信中,加密密鑰和解密密鑰不同, 解密密鑰是私有的,但加密密鑰是公開的。
作為該公鑰加密方式安全性的根據,可使用在橢圓曲線上所定義 的離散對數問題,關于離散對數問題,在NealKoblitz著的"A Course in Number theory and Cryptography" , Springer-Verlag, 1987中進行了 詳細敘述。
下面,對橢圓曲線上的離散對數問題進行說明。
所謂橢圓曲線上的離散對數問題是,
假設E(GF(p))為在有限域GF(p)上定義的橢圓曲線,當橢圓曲線 E的位數用大的素數除得開時,將橢圓曲線E中所包含的元G作為 基點。這時,如果對橢圓曲線E中所包含的給出的元Y,存在滿足
Y=x*G
的整數x,則求出x的問題。
此處,p是素數,GF(p)是具有p個元的有限域。在本說明書中, 符號*表示對橢圓曲線中包含的元進行多個加法運算的運算,x*G, 如下式所示,表示對橢圓曲線中包含的元G相加x個。
x*G=G+G+G+......+G
將離散對數問題作為公鑰加密安全性的根據,是因為對于有多個 元的有限域GF(p),上述問題極為難的緣故。 1.3點發行裝置200的構成
點發行裝置200,如圖l中所示,由公鑰存儲部20K加密處理 部202、通信部203、控制部204、信息存儲部205、輸入受理部206、 顯示部207及橢圓曲線運算部208構成。
橢圓曲線運算部208,如圖2中所示,由輸入部230、冪乘(^含 倍)系數存放部221、分割信息生成部222、分割信息存放部223、被 運算值存放部224、表生成部225、橢圓曲線加法運算部226、橢圓 曲線2倍運算部227、表存放部228、標量乘法運算部229及輸出部 231構成。
點發行裝置200,是生成點并將生成的點進行加密寫入IC卡100 中的裝置,并且,在銷售商品時,也是計算銷售額、顯示所計算的銷 售額、打印收據、將生成的上述點存儲在內部、保管使用者支付的貨 款等進行保管的現金寄存裝置。
點發行裝置200,具體來說是由微處理器、ROM、 RAM、硬盤 單元、顯示器單元、及鍵盤等構成的計算機系統。在上述RAM或上 述硬盤單元中存儲計算機程序。通過上述微處理器根據上述計算機程 序進行操作,點發行裝置200實現其部分功能。
(1)信息存儲部205及公鑰存儲部201
信息存儲部205,用于存儲素數p、以素數p為模的剩余域Fp上 定義的橢圓曲線E(Fp)上的基點B及橢圓曲線E(Fp)的系數。另外具 有對所生成的點Pm進行存儲的區域。
上述橢圓曲線E(Fp),作為一例,是)^x^aXx+b,上述系數是 a及b。
公鑰存儲部201,用于存儲對應于下述的私鑰(私有密鑰)ks而生 成的公鑰Kp。此處公鑰Kp是通過IC卡100或密鑰管理裝置,按以下 所示的公式算出來的。
公鑰Kp-私鑰1 *基點B
(2) 控制部204
控制部204,生成作為上述優惠信息的點Pm,并將生成的點Pm 寫入信息存儲部205。然后,對加密處理部202,輸出表示對點Pm 加密并發送給IC卡IOO的指示。
(3) 通信部203、輸入受理部206及顯示部207
通信部203,在加密處理部202或控制部204的控制的基礎上, 在與IC卡100之間進行信息的發送接收。
輸入受理部206,受理來自點發行裝置200的操作者的信息或指 示的輸入,并將受理了輸入的信息或指示,輸出給控制部204。
顯示部207,通過控制部204的控制,顯示各種信息。
(4) 加密處理部202
加密處理部202,從控制部204接受表示對點Pm加密并發送給 IC卡IOO的指示。
當接受上述指示時,加密處理部202生成隨機數r,從信息存儲 部205讀出基點B,然后,以生成的隨機數r為冪乘系數k,輸出給 橢圓曲線運算部208的輸入部230,以讀出的基點B為被冪乘點C, 輸出給輸入部230。然后,從橢圓曲線運算部208的輸出部231,接 受冪乘點k*C=r*B作為運算結果,使第1密文sh冪乘點r*B.
接著,加密處理部202從公鑰存儲部201讀出公鑰Kp,然后以 生成的隨機數r為冪乘系數k,輸出給輸入部230,以讀出的公鑰kp 為被冪乘點C,輸出給輸入部230。然后從輸出部231接受冪乘點
k*C=r*Kp,作為運算結果。
然后,加密處理部202從信息存儲部205讀出點Pm,對讀出的 點Pm和接收的冪乘點r*Kp的x坐標值進行"異或",生成第2密 文s2-點Pm xor(冪乘點r*Kp的x坐標值)。此處"xor"是表示"異 或"的運算符。
然后,加密處理部202,將生成的第l密文sl及第2密文s2通 過通信部203發送給IC卡100。 (5)橢圓曲線運算部208
橢圓曲線運算部208,如上所述,由輸入部230、冪乘系數存放 部221、分割信息生成部222、分割信息存放部223、被運算值存放 部224、表生成部225、橢圓曲線加法運算部226、橢圓曲線2倍運 算部227、表存放部228、標量乘法運算部229及輸出部231構成。
(5-l)冪乘系數存放部221及被運算值存放部224
冪乘系數存放部221,具有只存儲l個冪乘系數k的區域。冪乘 系數k是標量,冪乘系數k的比特數為len。
而被運算值存放部224,具有只存儲1個被冪乘點G的區域。被 冪乘點G是橢圓曲線上的點。
(5-2)輸入部230及輸出部231
輸入部230,從加密處理部202接受冪乘系數k,當冪乘系數存 放部221中已經存儲了冪乘系數時,將接受的冪乘系數k蓋寫在冪乘 系數存放部221上,而當冪乘系數存放部221未存儲冪乘系數時,將 接受的冪乘系數k寫入冪乘系數存放部221中。
另外,輸入部230從加密處理部202接受被冪乘點C,當被運算 值存放部224中已經存儲了被冪乘點時,將接受的被冪乘點C蓋寫在 被運算存放部224上,而當被運算值存放部224中未存儲被冪乘點時, 將接受的被冪乘點C寫入被運算存放部224中。
輸出部231,從標量乘法運算部229接受冪乘點PC,將接受的 冪乘點k*C輸出給加密處理部202。
(5-3)分割信息存放部223
分割信息存放部223,具有存放下述的(b+l)個整數w—i(i=l、 2、
3、……、b+l)組成的整數串(w一i)的區域。
(5-4)分割信息生成部222
分割信息生成部222,從冪乘系數存放部221讀出冪乘系數k, 如以下所示,根據讀出的冪乘系數k生成由作為分割信息的整數 w_i(i=l、 2、 3、……、b+l)構成的整數串(w—i}。
此處,w一i是sw比特的帶符號整數值。sw是帶符號Window法 的Window寬度,作為一例,sw=3。這時,w—i取"-3" 、 "-2"、 "國1"、 "0"、 "1"、 "2"、 "3"及"4"中的某個值。b是"(len/sw 以上的最小的整數)-l" , len是下述的變量v的比特數,"X "是表 示整數的乘法的運算符,"xAy"是表示x的y次方的運算。
例如,le『52時,b=18-l=17。下面作為一個例子sw=3,但是sw 既可以是"2",也可以是"4"以上。
關于分割信息生成部222的操作,利用圖3中所示的流程圖進行 說明。
分割信息生成部222,將冪乘系數k代入變量v(v—ks),取v一0,v一1, v一2, ......, v—b,使v=v—0+v—lX2Asw+v—2X2A(2Xsw)+......+v_b X 2A(b X sw)。再使v—(b+1)—O(步聚S131)。此處v—i(i=0、 1 、2、… b)為sw比特。
然后,分割信息生成部222,在計數器變量c中代入0(c—O)(步 驟S132)
接著,分割信息生成部222,判斷是否v—c>2A(sw-l),當v—c> 2A(sw-l)時(步驟S133中是),計算w—c —v—c-2A3及v—(c+1)— v—(c+l)+l(步驟S134)。當v—c《2A(sw-l)時(步驟S133中否)時,向w—c 代入v—c(w—c—v-c)(步驟SI35)。
接著,分割信息生成部222,計算c—c+l(步驟S136)。
接著,分割信息生成部222,判斷是否c〉b+l,當c〉b+l時(步 驟S137中是),將整數串(w—iM乍為分割信息存放在分割信息存放部 223中(步驟S138),結束分割信息的生成處理。當c《b+l時(步驟S137 中否),返回步驟S133,重復處理。
(5-5)橢圓曲線加法運算部226及橢圓曲線2倍運算部227
橢圓曲線加法運算部226,從表生成部225或標量乘法運算部229 接受橢圓曲線上的2點P1-(X1, Yl, Z1)和P2-(X2, Y2, Z2)以及這 些點的加法運算指示,對于接受的P1-(X1, Yl, Z1)及P2-(X2, Y2, Z2),如下所示,使Pl和P2在橢圓曲線上進行加法運算,計算點 P3=P1+P2=(X3, Y3, Z3),然后將計算出的點P3輸出給表生成部225 或標量乘法運算部229。
而橢圓曲線2倍運算部227,從表生成部225或標量乘法運算部 229接受橢圓曲線上的點P1-(X1, Yl, Z1)及P1的2倍運算的指示, 對于接受的點P1=(X1, Yl, Zl),如下所示,在橢圓曲線上對點P1 進行2倍運算,計算作為點P1的2倍點的、點P4=2*P1=(X4, Y4, Z4),然后將計算出的點P4輸出給表生成部225或標量乘法運算部 229。
(橢圓曲線加法運算部226的加法運算的細節、及橢圓曲線2倍 運算部227的2倍運算的細節)
在本實施方式中,增加了偽運算,以使在橢圓曲線加法運算部 226及橢圓曲線2倍運算部227中所使用的運算及其順序相同。
下面,為了明確了解偽運算是"偽運算",通過變量D表示偽 運算結果的代入目的地。在本實施方式中使用的橢圓曲線加法運算及 橢圓曲線2倍運算,是對Jacobian坐標的計算。關于Jacobian坐標, 在非專利文獻4中進行了詳細敘述。
在對橢圓曲線加法運算部226及橢圓曲線2倍運算部227的詳細 運算進行說明之前,對所使用的運算函數按以下定義。
Sqr(X):表示X的2次方
Mul(X,Y):表示X和Y的相乘。即使在X-Y時,在記載為 Mul(X, Y)的情況下,也不是用Sqr(X)進行2次方計算,同樣是以X 的相乘進行計算。
Mul2(X):表示X和2的乘法。
Mul3(X):表示X和3的乘法。
Mul4(X):表示X和4的乘法。
Mul8(X):表示X和8的乘法。
Sub(X,Y):表示從X減去Y的減法。
(橢圓曲線加法運算部226的加法運算操作)
下面,利用4及圖5中所示的流程圖說明橢圓曲線加法運算部 226的加法操作。
橢圓曲線加法運算部226,按照以下所示的步驟進行加法運算。
Z22—Sqr(Z2) D—Mul4(Xl) U1—Mul(Xl,Z22) Z12—Sqr(Zl) D—Mul2(Yl) Z13—Mul(Z22,Zl) Z23—Mul(Z22,Z2) U2—Mul(X2,Z12)
51— Mul(Yl,Z23)
52— Mul(Y2,Z13) D—Mul3(Z12) H—Sub(U2,Ul) H2—Sqr(H) U1H—Mul(Ul,H2) U2H—Mul2(UlH) r—Sub(S2,Sl) r2—Sqr(r) D一Mul8(r) UHX—Sub(UlH,X3) H3—Mul(H2,H) S1H3—Mul(Sl,H3) rH—Sub(r2,H3) X3—Sub(rH,U2H) Z1Z2—Mul(Zl,Z2) Z3—Mul(ZlZ2,H)
(步驟S401) (步驟S402) (步驟S403) (步驟S404) (步驟S405) (步驟S406) (步驟S407) (步驟S408) (步驟S409) (步驟S410) (步驟S411) (步驟S412) (步驟S413) (步驟S414) (步驟S415) (步驟S416) (步驟S417) (步驟S418) (步驟S419) (步驟S420) (步驟S421) (步驟S422) (步驟S423) (步驟S424) (步驟S425)rU—Mul(r,UHX) (步驟S426)
Y3—Sub(rU,SlH3) (步驟S427)
(橢圓曲線2倍運算部227的2倍運算的操作)
下面,利用4及圖5中所示的流程圖說明橢圓曲線2倍運算部 227的2倍運算的操作。
橢圓曲線2倍運算部22,按照以下所示的步驟進行2倍運算。
Y12—Sqr(Yl) X41—Mul4(Xl) S—Mul(X41,Y12) X12—Sqr(Xl) Y21—Mul2(Yl) Z4—Mul(Y21,Zl) Z12—Mul(Zl,Zl) Z14—Mul(Z12,Z12) D—Mul(Yl,Z12) aZ14—Mul((國a), Z14) X32—Mul3(X12) M—Sub(X32,aZ14) M2—Sqr(M) D—Mul(S,M2) S2—Mul2(S) X4—Sub(M2,S2) Y14—Sqr(Y12) Y814—Mul8(Y14) ST—Sub(S,X4) MST—Mul(M,ST) D—Mul(D,MST) Y4—Sub(MST,Y814) D—Sub(Y4,S2) D—Mul(Zl,Z12)
(步驟S501) (步驟S502) (步驟S503) (步驟S504) (步驟S505) (步驟S506) (步驟S507) (步驟S508) (步驟S509) (步驟S510) (步驟S511) (步驟S512) (步驟S513) (步驟S514) (步驟S515) (步驟S516) (步驟S517) (步驟S518) (步驟S519) (步驟S520) (步驟S521) (步驟S522) (步驟S523) (步驟S524)
D—Mul(D,M) D—Mul(X4,ST) D—Sub(D,Y4)
(步驟S525) (步驟S526) (步驟S527)
在步驟S510中出現的(-a),是橢圓曲線方程式為yA2=XA3+aXx+b 時的參數a的負值,預先計算好。
如圖4及圖5中所示可知,橢圓曲線加法運算部226和橢圓曲線 2倍運算部227以相同的順序執行運算。
(5-6)表存放部228
表存放部228,具有1個以上存放由表生成部225生成的橢圓曲 線上的點的區域。
(5-7)表生成部225
表生成部225,如下所述,生成由橢圓曲線上的點構成的表(PJ〉, 并將生成的表(PJ)存放在表存放部228中。
此處,表(PJ),包括1個以上的橢圓曲線上的點P—i(i=l, 2, 3、……)。
關于表生成部225的表(P』的生成操作,禾偶圖6中所示的流 程圖進行說明。
表生成部225,從被運算值存放部224讀出被冪乘點C,表生成 部225對P_i—C及Q—ECD(C)進行運算(步驟S141)。
此處,ECD表示橢圓曲線上的2倍運算,并表示用橢圓曲線2 倍運算部227進行計算。例如,ECD(A)表示對橢圓曲線上的點A進 行計算的2倍運算的運算結果,ECD(A)=2*A。表生成部225對橢圓 曲線2倍運算部227輸出橢圓曲線上的點C及2倍運算的指示,并從 橢圓曲線2倍運算部227接受2倍運算的運算結果。
然后,表生成部225對計數器變量i,計算i—1(步驟S142)。
然后,表生成部225計算i—i+l(步驟S143),計算2^-2,判斷是 否》2^-2。在i〉2Sw^時(步驟S144),結束表生成的處理。
當不是i〉2sw-2時(步驟S144),表生成部225計算P—i — ECA(P—(i漏l), Q)。艮口計算ECA(P一(i-l), Q)= P—(i-l)+Q(步驟S145)。
此處,ECA表示橢圓曲線上的加法運算,并表示用橢圓曲線加 法運算部226進行計算。例如,ECA(A, B)表示對橢圓曲線上的點A 及點B計算出的加法運算結果,ECD(A)=A+B。表生成部225對橢圓 曲線加法運算部226輸出橢圓曲線上的點A和點B以及加法運算的 指示,從橢圓曲線加法運算部226接受加法運算的運算結果。
然后,表生成部225將P—i存放在表存放部228中(步驟S146), 返回步驟S143,重復進行處理。
從上述處理可知P—i=(2Xi-l)*C。
在sw=3、 4及5時,通過表生成部225生成的表(Pj)的例子分 別如圖7、圖8及圖9中所示。
當s『3時,如圖7中所示,表311(P—i}=(3C)。而當s『4時, 如圖8中所示,表312(P—i}=(3C、 5C、 7C)。當sw=5時,如圖9中 所示,表313(P—i}=(3C、 5C、 7C、 9C、 IIC、 13C、 15C)。
(5-8)標量乘法運算部229
標量乘法運算部229利用分割信息存放部223中所存放的整數串 (w一i)和表存放部228中所存放的表(PJh按以下所示,對冪乘系數 計算k倍的點"C。
標量乘法運算部229如圖18中所示,由取得部241、選擇部242、 重復控制部243、 Window運算部251、 252、 253、 254、 255、 256、 257、 258、初始運算部244、寄存器部245及運算輸出部246構成。
關于標量乘法運算部229的運算步驟,利用圖10 圖11中所示 的流程圖迸行說明。
在下述說明中,ECA是由橢圓曲線加法運算部226進行的加法 運算。標量乘法運算部229在進行加法運算時,對橢圓曲線加法運算 部226輸出橢圓曲線上的2點及加法運算的指示,從橢圓曲線加法運 算部226接受加法運算的運算結果。另外,ECD是橢圓曲線2倍運 算部227進行的2倍運算。標量乘法運算部229在進行2倍運算時, 對橢圓曲線2倍運算部227輸出橢圓曲線上的1點及2倍運算的指示, 從橢圓曲線2倍運算部227接受2倍運算的運算結果。
在下述中,作為一個例子設Window的寬度為"3比特",即sw=3 進行說明。 標量乘法運算部229的初始運算部244,計算c—b+l(步驟S151)。
此處,c是對處理次數進行計數的計數器變量,寄存器部245由 具有的寄存器構成。b如上所述,是"(len/sw以上的最小整數)-l"。 寄存器部245還具有分別構成下述變量D及變量R的2個寄存器。
接著,標量乘法運算部229的初始運算部244,判斷是否w_c=0。 當w_c=0時(步驟S152),運算D—ECD(C),D—ECD(D),D—ECD(D), D—ECA(R, C), c—c-l(步驟S153)。
接著,取得部241取得P—(w—c),標量乘法運算部229的初始運 算部244運算R—P(w一c)(步驟S154),重復控制部243運算c—c-l(步 驟S155)。
接著,標量乘法運算部229的重復控制部243,判斷是否c<0, 當c<0時(步驟S156),運算輸出部246將R輸出給輸出部231(步驟 S158),結束運算處理。
當c》0時(步驟S156),取得部241取得P—(w_c),標量乘法運算 部229的選擇部242,對應于w一c的值(步驟S157)進行以下的處理。
當w—c=-3時(步驟S157),選擇部242選擇Window運算部251, Window運算部251進行R—ECD(R), R—ECD(R), R—ECD(R), R —ECA(R, -P一2)運算(步驟S161)。
當w—c=-2時(步驟S157),選擇部242選擇Window運算部252, Window運算部252進行R—ECD(R), R—ECD(R), R—ECA(R, -P—1), R—ECD(R)運算(步驟SI62)。
當w—c=-l時(步驟S157),選擇部242選擇Window運算部253, Window運算部253進行R—ECD(R), R—ECD(R), R—ECD(R), R —ECD(R, - _1)運算(步驟3163)。
當w_c=0時(步驟S157),選擇部242選擇Window運算部254, Window運算部254進行R—ECD(R), R—ECD(R), R—ECD(R), D —ECA(R, PJ)運算(步驟S164)。
當w—c=l時(步驟S157),選擇部242選擇Window運算部255, Window運算部255進行R—ECD(R), R—ECD(R), R—ECD(R), R —ECA(R, P—l)運算(步驟S165)。
當w—c=2時(步驟S157),選擇部242選擇Window運算部256, Window運算部256進行R—ECD(R), R—ECD(R), R—ECA(R, P—1), R—ECD(R)運算(步驟SI66)。
當w_c=3時(步驟S157),選擇部242選擇Window運算部257, Window運算部257進行R—ECD(R), R—ECD(R), R—ECD(R), R —ECA(R, P—2)運算(步驟S167)。
當w—c=4時(步驟S157),選擇部242選擇Window運算部258, Window運算部258進行R—ECD(R), R—ECA(R, P—1), R—ECD(R), R—ECD(R)運算(步驟S168)。
然后,返回步驟S155重復進行處理。
(關于步驟S161 S168的各運算)
此處,關于圖11的步驟S161 S168中各運算的意義,利用圖 12中所示的運算變換表320進行說明。
在此,為方便起見,將根據w_c值所進行的多個運算稱為Window 運算。
例如,在步驟S164中所進行的R—ECD(R)、 R—ECD(R)、 R— ECD(R)及D—ECA(R, P—l)是1個Window運算,而在步驟S165中 所進行的R—ECD(R)、 R—ECD(R)、 R—ECD(R)及R—ECA(R, P—1) 是1個Window運算。
另外,為了方便起見,將Window運算中所包含的ECA及ECD 稱為基本運算。
運算變換表320,作為一個例子,當Window的寬度為"3比特" 時,艮Ps^3時,對每個可取得的w—c的值,表示了該w—c的值、與 其對應的現有Window運算、與其對應的標量乘法運算部229進行的 Window運算(與本發明相關聯的Window運算)、表示由標量乘法運 算部229進行的Window運算所包含的基本運算的運算順序的基本運 算順序、及表示Window運算所包含的基本運算個數的基本運算次數 間的關系。
此處,作為一個例子,由于Window的寬度為"3比f寺",所以 w c取"0" 、 "1" 、 "2" 、 "3" 、 "4"、"國3" 、 "-2"及中的某一個。
下面,當w—c取各值時,對現有的Window運算、標量乘法運算 部229的Window運算、基本運算順序及基本運算次數進行說明。
(a) 當w_c=0時
對w—c=0的現有Window運算,是"R—23R" , "R—23R"表 示使變量R的值,向高位移位Window寬度所示的比特數(此處為3 比特)。
另一方面,對w_c=0的標量乘法運算部229的Window運算,是 "R—23R"及"D—R+C"。此處對于"R—23R",如上所述。另夕卜, "D—R+C"是偽的加法運算,目的是為了使w—c=0時的Window運 算所包含的基本運算的種類及其數量,與其他情況(即w_C0時)的 Window運算所包含的基本運算的種類及其數量一致。
此處,"R—23R",在標量乘法運算部229中,通過R—2XR、 R—2XR、 R—2XR進行運算。
這一運算通過23R=2 X (2 X (2 X R))進行。
從而,在由對w_c=0的標量乘法運算部229進行的Window運算 中,按照2倍運算、2倍運算、2倍運算、偽加法運算的順序,進行 多個基本運算。(參照步驟S164)
這樣,在由對w_c=0的標量乘法運算部229進行的Window運算 所包含的基本運算個數是"4"。
(b) 當w—c=l時
對w_c=l的現有Window運算,是"R—23R+C" 。 "R—23R+C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加C。
對w_c=l的標量乘法運算部229的Window運算,是"R— 23R+C"。
這樣,對w—c=l的現有Window運算,與標量乘法運算部229 的Window運算是相同的。
此處,"R—23R+C",在標量乘法運算部229中,通過R—2X R、 R—2XR、 R—2XR、 R—R+C進行運算。(參照步驟S165)
從而,在由對w_c=l的標量乘法運算部229進行的Window運算 中,按照2倍運算、2倍運算、2倍運算、加法運算的順序,進行多 個基本運算。
這樣,在由對w—c=l的標量乘法運算部229進行的Window運算 所包含的基本運算個數為"4"。
(c) 當w_c=2時
對w_c=2的現有Window運算,是"R—23R+2C" 。 "R—23R+2C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加2C。
另一方面,對w_c=2的標量乘法運算部229的Window運算,是 "R—2(22R+C)"。
根據2(22R+C)=23R+2C可知,對w—c=2的現有Window運算的 結果,與標量乘法運算部229的Window運算結果是相同的。
此處,"R—2(22R+C)",在標量乘法運算部229中,通過R—2 XR、 R—2XR、 R—R+C、 R—2XR進行運算。(參照步驟S166)
這一運算通過2(22R+C)=2 X (2 X (2 X R)+C)進行。
從而,在由對w_c=2的標量乘法運算部229進行的Window運算 中,按照2倍運算、2倍運算、加法運算、2倍運算的順序,進行多 個基本運算。
此處,上述加法運算是點C乘以wj/2t所得到的點的加法運算。 這樣,對w—c=2的標量乘法運算部229進行的Window運算所包 含的基本運算個數為"4"。
(d) 當w_c=3時
對w—c=3的現有Window運算,是"R—23R+3C"。 "R—23R+3C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加3C。
對w—c=3的標量乘法運算部229的Window運算,是"R— 23R+3C"。
這樣,對w—c=3的現有Window運算,與標量乘法運算部229 的Window運算是相同的。
此處,"R—23R+3C",在標量乘法運算部229中,通過R—2 XR、 R—2XR、 R—2XR、 R—R+3C進行運算。(參照步驟S167) 這一運算通過23R+3C=2 X (2 X (2 X R))+3C進行。 從而,在由對w_c=3的標量乘法運算部229進行的Window運算 中,按照2倍運算、2倍運算、2倍運算、加法運算的順序,進行多 個基本運算。
這樣,對w—c=3的標量乘法運算部229進行的Window運算所包 含的基本運算個數為"4"。
(e) 當w_c=4時
對w—c=4的現有Window運算,是"R—23R+4C" 。 "R—23R+4C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加4C。
另一方面,對w—c=4的標量乘法運算部229的Window運算,是 "R—22(2R+C)"。
根據22(2R+C)=23R+4C可知,對w_c=4的現有Window運算的 結果,與標量乘法運算部229的Window運算結果是相同的。
此處,"R—22(2R+C),,,在標量乘法運算部229中,通過R—2 XR、 R—R+C、 R—2XR、 R—2XR進行運算。(參照步驟S168)
這一運算通過22(2R+C)=2 X 2 X ((2 X R)+C)進行。
從而,在由對w_c=4的標量乘法運算部229進行的Window運算 中,按照2倍運算、加法運算、2倍運算、2倍運算的順序,進行多 個基本運算。
此處,上述加法運算是點C乘以w一c/2t所得到的點的加法運算。 這樣,對w_c=4的標量乘法運算部229進行的Window運算所包 含的基本運算個數為"4"。
(f) 當w_c=-3時
對w—c=-3的現有Window運算,是"R—23R-3C"。 "R—23R-3C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加-3C(即從變量R減去3C)。
對w c=-3的標量乘法運算部229的Window運算,是"R—23R+3C"。
這樣,對w—c=_3的現有Window運算,與標量乘法運算部229 的Window運算是相同的。
此處,"R—23R-3C",在標量乘法運算部229中,通過R—2 XR、 R—2XR、 R—2XR、 R—R+(-3C)進行運算。(參照步驟S161)
這一運算通過23R-3C=2 X (2 X (2 X R))+(-3C)進行。
從而,對w—c=-3的標量乘法運算部229進行的Window運算中, 按照2倍運算、2倍運算、2倍運算、加法運算(此處是減法運算)的順 序,進行多個基本運算。
這樣,對w_c=-3的標量乘法運算部229進行的Window運算所 包含的基本運算個數為"4"。
(g) 當w—c=-2時
對w—c=-2的現有Window運算,是"R—23R-2C" 。 "R—23R-2C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加-2C(即從變量R減去2C)。
另一方面,對w_c=-2的標量乘法運算部229的Window運算, 是"R—2(22R-C),,。
根據2(22R-C)=23R-2C可知,對w—c=-2的現有Window運算的 結果,與標量乘法運算部229的Window運算結果是相同的。
此處,"R—2(22R-C)",在標量乘法運算部229中,通過R—2 XR、 R—2XR、 R—R+(-C)、 R—2XR進行運算。(參照步驟S162)
這一運算通過2(22R-C)=2 X (2 X (2 X R)+(-C》進行。
從而,對w—c=-2的標量乘法運算部229進行的Window運算中, 按照2倍運算、2倍運算、加法運算(此處是減法運算)、2倍運算的順 序,進行多個基本運算。
此處,上述減法運算是點C乘以I w_c/2t I所得到的點的減法運算。
這樣,對w—c=-2的標量乘法運算部229進行的Window運算所 包含的基本運算個數為"4"。
(h) 當w_c=-l時
對w—c=-l的現有Window運算,是"R—23R-C"。 "R—23R-C" 表示使變量R的值,向高位移位Window寬度所示的比特數(此處為 3比特),此后,變量R加-C(即從變量R減去C)。
對w—c=-l的標量乘法運算部229的Window運算,是"R— 23R-C"。
這樣,對w—c=-l的現有Window運算,與標量乘法運算部229 的Window運算是相同的。
此處,"R—23R-C",在標量乘法運算部229中,通過R—2X R、 R—2XR、 R—2XR、 R—R+(-C)進行運算。(參照步驟S163)
這一運算通過23R-3C=2 X (2 X (2 X R))+(-C)進行。
從而,對w_c=-l的標量乘法運算部229進行的Window運算中, 按照2倍運算、2倍運算、2倍運算、加法運算(此處是減法運算)的順 序,進行多個基本運算。
這樣,對w—c--l的標量乘法運算部229進行的Window運算所 包含的基本運算個數為"4"。
1.4橢圓曲線運算部208的操作
關于橢圓曲線運算部208的操作,利用圖13中所示的流程圖進 行說明。
輸入部230,從加密處理部202接受冪乘系數k,并將接受的冪 乘系數k寫入冪乘系數存放部221(步驟S121),從加密處理部202接 受被冪乘點C,并將接受的被冪乘點C寫入被運算值存放部224中(步 驟S122)。
接著,分割信息生成部222,根據冪乘系數k生成作為分割信息 的整數串(w一i),并將生成的整數串(w一i)存放在分割信息存放部223 中(步驟S123)。
然后,表生成部225利用被冪乘點C,生成表(P—i},并將表(P—i} 存放在表存放部228中(步驟S124)。
然后,標量乘法運算部229使用分割信息存放部223中所存放的 整數串(w—i)和表存放部228中的存放的表(P一i),計算冪乘點WC(步 驟S125)。
然后,輸出部231從標量乘法運算部229接受冪乘點WC,并將 所取得的冪乘點k*C輸出給加密處理部202(步驟S126)。 1.5 IC卡100的構成
IC卡100,如圖1中所示,由私鑰存儲部101、解密處理部102、 通信部103、控制部104、信息存儲部105及橢圓曲線運算部108構 成。
IC卡IOO,具體來說是由微處理器、ROM、 RAM等構成的計算 機系統。在上述RAM中存儲計算機程序。通過上述微處理器按照上 述計算機程序進行操作,IC卡100實現其部分功能。
(1) 信息存儲部105及私鑰存儲部101
信息存儲部105,存儲素數P、橢圓曲線E(Fp)的系數及基點B。 還具有用于存儲所生成的解密點Pm'的區域。 私鑰存儲部101,用于存儲私鑰ks。
(2) 通信部103
通信部103,從點發行裝置200接收第1密文sl及第2密文s2。 若接收第1密文sl及第2密文s2,則對于控制部104,將表示已接 收了的意思通知給控制部104。并將接收的第1密文sl及第2密文 s2輸出給解密處理部102。
(3) 控制部104
控制部104,接受表示已從通信部103接收了第1密文sl及第2 密文s2的意思的通知。當接受上述通知時,對解密處理部102輸出 對第1密文sl及第2密文s2進行解密生成解密點的指示。
(4) 解密處理部102
解密處理部102,從控制部104接受表示對第1密文sl及第2 密文s2進行解密生成解密點的指示,并從通信部103接受第1密文 sl及第2密文s2。
當接受上述指示時,解密處理部102從私鑰存儲部101讀出私鑰 ks,然后以接受的第1密文sl為被冪乘點k,輸出給橢圓曲線運算部 108,以讀出的私鑰ks為冪乘系數C,輸出給橢圓曲線運算部108。 然后,從橢圓曲線運算部108接受運算結果k^sl,計算解密點Pm^
第2密文s2 xor(運算結果ks*sl的x坐標值)。 在此,按照
Pm'=s2 xor(ks*sl的x坐標值) =(Pm xor(r*Kp的x坐標值)) xor(ks r*B的x坐標值) =Pm xor(r ks*B的x坐標值)xor(r ks*B的x坐標值) =Pm
可知解密點Pm'與點Pm —致。
然后,解密處理部102將生成的解密點Pm'寫入信息存儲部105。 (5)橢圓曲線運算部108
橢圓曲線運算部108,由于具有與點發行裝置200所具有的橢圓 曲線運算部208相同的構成,故其詳細說明予以省略。
橢圓曲線運算部108,從解密處理部102接受被冪乘點k及冪乘 系數C,計算出冪乘點PC,并將計算出的冪乘點"C輸出給解密處 理部102。
1.6點發行系統10的操作
對于點發行系統10的操作,利用圖14中所示的流程圖進行說明。
(l)私鑰ks及公鑰Kp的生成操作
以下所示的操作,在點發行裝置200發行點之前進行。
IC卡100的解密處理部102,生成私鑰ks,將生成的私鑰ks寫 入私鑰存儲部IOI(步驟SlOl)。然后,解密處理部102從信息存儲部 105讀出基點B,并對生成的上述私鑰ks和讀出的基點B實施橢圓 冪乘運算,生成公鑰Kp二k^B。這時,橢圓冪乘運算由橢圓曲線運算 部108進行(步驟S102)。然后,解密處理部102將生成的公鑰Kp通 過通信部103發給點發行裝置200(步驟S103)。
點發行裝置200的加密處理部202,從IC卡100通過通信部203 接收公鑰Kp,并將接收的公鑰Kp寫入公鑰存儲部201(步驟S104)。
此處,IC卡100生成私鑰ks,以生成的私鑰ks為基礎生成公鑰 Kp,將生成的公鑰Kp發送給點發行裝置200,但是也可以按下所示 進行。
艮P,點發行系統10,還包括密鑰管理裝置(公鑰生成裝置)。IC 卡100生成私鑰ks,并將生成的私鑰ks存儲在內部。
密鑰管理裝置,包括從IC卡lOO安全取得私鑰ks,并對取得 的私鑰ks進行存儲的私鑰存儲部;對基點B進行存儲的基點存儲部; 從私鑰存儲部讀出私鑰ks,并從基點存儲部讀出基點B,利用私鑰 ks和基點B,生成公鑰Kp-k^B的橢圓曲線運算部;以及將生成的 公鑰Kp發送給點發行裝置200的發送部。此處,密鑰管理裝置具有 的橢圓曲線運算部,與IC卡100具有的橢圓曲線運算部相同。
(2)點的發行操作
點發行裝置200的控制部204生成點Pm,并將生成的點Pm寫 入信息存儲部205,然后,對加密處理部202輸出表示對點Pm加密 并發送給IC卡100的指示(步驟Slll)。
加密處理部202,當從控制部204接受表示對點Pm加密并發送 給IC卡100的指示時,生成隨機數r(步驟S112),從信息存儲部205 讀出基點B,以生成的隨機數r為冪乘系數,輸出給橢圓曲線運算部 208,并以讀出的基點B為被冪乘點,輸出給橢圓曲線運算部208, 從橢圓曲線運算部208,作為運算結果接受冪乘點r*B,使第1密文 sl-冪乘點產B(步驟S113)
然后,加密處理部202從公鑰存儲部201讀出公鑰Kp,以生成 的隨機數r為冪乘系數,輸出給橢圓曲線運算部208,以讀出的公鑰 Kp為被冪乘點,輸出給橢圓曲線運算部208,從橢圓曲線運算部208, 接受作為運算結果的冪乘點r*Kp,加密處理部202從信息存儲部205 讀出點Pm,對讀出的點Pm和接受的冪乘點^Kp進行加法運算,生 成第2密文s2-點Pm xor(冪乘點r*Kp的x坐標值)(步驟Sl 14)。
然后,加密處理部202,將生成的第l密文sl及第2密文s2通 過通信部203發送給IC卡IOO(步驟Sl 15)。
解密處理部102,從點發行裝置200通過通信部103接受第1密 文sl及第2密文s2(步驟S115)。
然后,解密處理部102從私鑰存儲部101讀出私鑰ks,以接受的 第l密文sl作為被冪乘點,輸出給橢圓曲線運算部108,以讀出的私
鑰ks為冪乘系數,輸出給橢圓曲線運算部108。橢圓曲線運算部108 對ks*sl進行運算,解密處理部102從橢圓曲線運算部108接受運算 結果ks*sl,計算解密點Pm,-第2密文s2 xor(運算結果ks*sl的x坐 標值)(步驟S116)。
然后,解密處理部102,將計算所得到的解密點Pm'寫入信息存 儲部105(步驟S117)。
2、實施方式2
下面對本發明所涉及的另一實施方式的數字簽名系統(圖中未示 出)進行說明。
數字簽名系統,由用戶A裝置(也稱簽名生成裝置)、用戶B裝置 (也稱簽名驗證裝置)及管理中心裝置他稱管理裝置)構成(各裝置在圖 中未示出),用戶A裝置、用戶B裝置及管理中心裝置分別通過互聯
網進行連接。
用戶A裝置、用戶B裝置及管理中心裝置,具體地說分別是由 微處理器、ROM、 RAM、硬盤單元、顯示器單元、鍵盤及鼠標器等 構成的計算機系統。在上述RAM或上述硬盤中存儲計算機程序。通 過上述微處理器根據上述計算機程序進行操作,各裝置實現其部分功 能。
用戶A裝置、用戶B裝置及管理中心裝置,分別是在以素數P 為模的剩余域F上所定義的橢圓曲線E上的離散對數問題作為根據, 利用橢圓曲線E上的點C乘以作為小于素數p的正整數的系數k、算 出點k*C的橢圓曲線運算,對信息進行可靠處理的信息安全裝置。
此處,所說的對信息進行可靠處理,是指例如使信息在二者間進 行通信時,發送方發送的信息無改變地到達接收方。
用戶A裝置,將消息與數字簽名數據一起發送給用戶B裝置, 用戶B裝置,將消息與數字簽名數據一起接收,通過接收的數字簽名
數據進行簽名驗證。
此處,假定在以素數p為模的剩余域Fp上定義的橢圓曲線E(Fp), 以E的位數為q。 B是橢圓曲線E上的基點。
用戶A裝置,包括生成私鑰xA的私鑰生成部;將生成的私鑰xA安全發送給管理中心裝置的私鑰發送部;存儲應發送的消息m的 消息存儲部;從管理中心裝置接收素數p、橢圓曲線E的系數、基點 B的參數接收部;存儲接收的素數p、橢圓曲線E的系數及基點B的 參數存儲部;生成隨機數r的隨機數生成部;生成第1簽名數據 Rl=(rx, ry)=r*B,并根據sXr=m+rxXXA(mod q)計算第2簽名數據 s的簽名生成部;將所得到的簽名數據(Rl, s)和消息m發送給用戶B 裝置的發送部;以及根據簽名生成部的指示,進行橢圓曲線上的點的 橢圓冪乘運算的橢圓曲線運算部。
管理中心裝置,包括從用戶A裝置安全取得私鑰xA的取得部; 存儲素數p、橢圓曲線E的系數、基點B的參數存儲部;利用取得的 私鑰xA,計算公鑰YA-xA+G的公鑰計算部;公開素數p、橢圓曲線 E的系數及基點G的公開部;通過互聯網將公鑰YA發送給用戶B 裝置的發送部;以及根據公鑰計算部的指示,進行橢圓曲線上的點的 橢圓冪乘運算的橢圓曲線運算部。
用戶B裝置,包括從管理中心裝置接收素數p、橢圓曲線E的 系數及基點G的參數接收部,存儲取得的素數P、橢圓曲線E的系數 及基點G的參數存儲部;從管理中心裝置接收公鑰YA的公鑰接收部; 存儲接收的公鑰YA的公鑰存儲部;從用戶A裝置接收簽名數據(Rl, S)的簽名數據接收部;從用戶A裝置接收消息m的消息接收部;用 戶B裝置計算S*R1及m*G+rx*YA并判斷S*Rl=m*G+rx*YA是否 成立,當成立時,輸出表示驗證成功的成功信息,當驗證失敗時,輸 出表示驗證失敗的失敗信息的驗證部;以及根據驗證部的指示,進行 橢圓曲線上的點的橢圓冪乘運算的橢圓曲線運算部。
用戶A裝置、用戶B裝置及管理中心裝置分別具有的橢圓曲線 運算部,與實施方式l中所示的橢圓曲線運算部208相同。
下面利用圖15中所示的流程圖對數字簽名系統的操作進行說明。
(私鑰xA及公鑰YA的生成)
用戶A裝置生成私鑰xA(步驟S201)。
管理中心裝置,從用戶A裝置安全取得私鑰xA,利用取得的私
鑰xA,計算公鑰YA-xA承B(步驟S202)。
然后,管理中心裝置,公開素數p、橢圓曲線E的系數及基點 B(步驟S204、步驟S207),通過互聯網,將公鑰YA發送給用戶B裝 置(步驟S205)。
用戶B裝置,取得素數p、橢圓曲線E的系數及基點B(步驟S204), 接收公鑰YA(步驟S205),將接收的公鑰YA存儲在內部(步驟S206)。
用戶A裝置,也取得素數p、橢圓曲線E的系數及基點G(步驟 S207)。
(數字簽名數據的生成和簽名的驗證)
用戶A裝置,生成隨機數r(步驟S211),并生成第1簽名數據 Rl-(rx,ry)^+B(步驟S212),
根據sXr=m+rxXxA(mod q)計算第2簽名數據s(步驟S213),此 處,m是從用戶A裝置發送給用戶B裝置的消息。
然后,用戶A裝置,將所得到的簽名數據(R1、 s)和消息m發送 給用戶B裝置(步驟S214)。
用戶B裝置,從用戶A裝置接收簽名數據(R1、 s)和消息m(步驟 S214)。
然后,用戶B裝置,計算s*Rl及n^G+n^YA(步驟S215),判 斷S*Rl=m*G+rx*YA是否成立(步驟S216),當成立時(步驟S216中 是),驗證成功,可以確認用戶A裝置的身份。當不成立時(步驟S216 中否),驗證失敗,不能確認用戶A裝置的身份。
5、實施方式3
下面,對本發明所涉及的另一實施方式的密鑰共有系統(圖中未 示出),進行說明。
密鑰共有系統由用戶A裝置(也稱密鑰利用裝置)、用戶B裝置(也
稱密鑰利用裝置)及管理中心裝置(也稱管理裝置)構成(各裝置在圖中 未示出),用戶A裝置、用戶B裝置及管理中心裝置分別通過互聯網 進行連接。用戶A裝置、用戶B裝置及管理中心裝置,具體地說分 別是由包括微處理器、ROM、 RAM等構成的計算機系統。微處理器 根據計算機程序進行操作,各裝置實現其功能。
用戶A裝置及用戶B裝置,是在以素數p為模的剩余域F上所 定義的橢圓曲線E上的離散對數問題作為根據,利用橢圓曲線E上 的點C乘以作為小于素數p的正整數的系數k、算出點k*C的橢圓曲 線運算,對信息進行安全處理的信息安全裝置。
此處,所說的對信息安全進行處理,如上所述是指例如使信息在 二者間進行通信時,該信息不讓第三方知道。
用戶A裝置和用戶B裝置,按如下所示,取得同一共有密鑰, 而不讓第三者知道。
管理中心裝置,包括選擇橢圓曲線E(Fp)系數及基點B的選擇 部;對選擇的橢圓曲線E的系數、基點B及素數p進行存儲的參數 存儲部;及公開素數p、橢圓曲線E(Fp)及基點G的公開部。
此處,假定是在以素數p為模的剩余域Fp上定義的上述橢圓曲 線E, B是橢圓曲線E上的基點。
用戶A裝置,包括從管理中心裝置取得素數p、橢圓曲線E的 系數及基點B的參數取得部;利用隨機數設定私鑰xA的私鑰設定部; 計算公鑰YA=xA*B的公鑰計算部;將計算出的公鑰YA發送給用戶 B裝置的公鑰發送部;從用戶B裝置接收公鑰YB的公鑰接收部;計 算共有密鑰xA*YB=(xAXxB)*B的共有密鑰計算部;以及根據公鑰 計算部及共有密鑰計算部的指示,進行橢圓曲線上的點的橢圓冪乘運 算的橢圓曲線運算部。
用戶B裝置也具有與用戶A裝置同樣的構成。
用戶B裝置,包括從管理中心裝置取得素數p、橢圓曲線E的 系數及基點B的參數取得部;利用隨機數設定私鑰xB的私鑰設定部; 計算公鑰YB=xB*B的公鑰計算部;將計算出的公鑰YB發送給用戶 A裝置的公鑰發送部;從用戶A裝置接收公鑰YA的公鑰接收部;計 算共有密鑰xB*YA=(xBXxA)*B的共有密鑰計算部;以及根據公鑰 計算部及共有密鑰計算部的指示,進行橢圓曲線上的點的橢圓冪乘運 算的橢圓曲線運算部。
用戶A裝置及用戶裝置B分別具有的橢圓曲線運算部,與實施 方式1的點發行裝置200具有的橢圓曲線運算部相同。
下面,利用圖16中所示的流程圖,對密鑰共有系統的操作進行 說明。
管理中心裝置,對橢圓曲線E的系數及基點進行選擇(步驟 S311),對素數p、橢圓曲線E的系數及基點B進行公開涉驟S312)。
用戶A裝置,設定私鑰xA(步驟S301),計算公鑰¥人=^*8(步 驟S302),將公鑰YA發送給用戶B裝置(步驟S303)。
另一方面,用戶B裝置,設定私鑰xB(步驟S321),計算公鑰 YB^BfB(步驟S322),將公鑰YB發送給用戶A裝置(步驟S323)。
用戶A裝置,計算共有密鑰xA豐YBKxAXxB^B(步驟S304)。
用戶B裝置,計算共有密鑰xB+YAKxBXxA^B(步驟S324)。
此處,共有密鑰xB承YA-(xBXxA^B
=(xAXxB)*B =共有密鑰xA*YB
這樣,用戶A裝置和用戶B裝置可以取得同一共有密鑰,而不 讓第三者知道。
6、實施方式1的效果
在實施方式1的點發行裝置200具有的橢圓曲線運算部208中, 由于橢圓曲線加法運算部226及橢圓曲線2倍運算部227分別以相同 的順序執行相同運算(參照圖4 圖5),所以分析功率波形的攻擊者, 不能根據功率波形區別是執行了橢圓曲線加法運算及橢圓曲線2倍 運算中的哪一個。
另外,標量乘法運算部229,由于橢圓曲線加法運算及橢圓曲線 2倍運算的運算次數的合計不因對計數器c的w_c的值而改變,同樣 是4次,所以橢圓曲線加法運算及橢圓曲線2倍運算的運算次數的合 計不因冪乘系數的值而改變,是相同的。從而,即使在攻擊者知道運 算次數時,有關冪乘系數的信息也不會泄漏給攻擊者。因此,實施方 式l,對簡單功率分析攻擊是安全的。
另外,當Window的寬度s『3時,存放在表存放部228的表中 的點,除了P一^C之外,只有P一2-3W—點。而在現有的簡單功率 分析攻擊對策方法中,存放在表存放部228的表中的點,除了PJ-C
之外,是?_2、 P—3、 P—4的3點,實施方式1與現有方法相比,表的 尺寸削減到了 1/3。
在實施方式1中,對每個sw比特的分割信息保持運算次數的合 計一定,但是也可以對1個冪乘系數的運算整體保持運算次數合計一 定。這時,為了在1個冪乘系數的運算整體上調整運算次數,應一邊 測量運算次數一邊進行運算處理。與此相比,在實施方式1中,每個 sw比特保持運算次數的合計一定,即使對1個冪乘系數的運算整體 也不必注意運算次數,具有控制容易的效果。
上述效果,對實施方式2及3也相同。
7、其他變形例
上述說明的各實施方式,只是本發明實施的一例,本發明并不限 于這些實施方式,只要在不脫離其宗旨的范圍內,可以以各種形式實 施。例如,以下的情況也包括在本發明內。
(1) 在實施方式1中,表生成部225使用橢圓曲線加法運算部226 和橢圓曲線2倍運算部227,對橢圓曲線加法運算及和橢圓曲線2倍 運算進行計算,但是,表生成部225也可以執行除去了橢圓曲線加法 運算部226及橢圓曲線2倍運算部227中的偽運算之后的通常的橢圓 曲線加法運算及橢圓曲線2倍運算。
(2) 在實施方式中,sw=3,但是sw也可以是2及4以上的值。這 時,在標量乘法運算部229中,與w^值相對應的Window運算灘 當于圖10 圖11的步驟S157、步驟S161 S168),按以下進行。
在與w—c值相對應的Window運算中,進行(sw+l)次基本運算。 (i)當w一c為0以外的情況、且存在滿足w一c可用2、除開而用 2、t+l)除不開的非負整數t時,在(sw+l)次基本運算中,從最初開始 第(sw-t+l)次的基本運算進行R —ECA(R, sgn(w_c)*P—((abs (w—c/2At)+l)/2)),在(sw+l)次基本運算中,其他sw次基本運算進行R —ECD(R)。
此處,sgn(w—c)是w—c的符號。當w—c〉0時,sgn(w—c)=l,當 w—c < 0時,sgn(w_c)=-1 。
abs(wj;)是w一c的絕對值。
(ii)當w_c=0時,進行sw次R—ECD(R)的基本運算,然后執行D —ECA(R, P_l)。例如,當s『5, w—c;12時,執行R—ECD(R), R 一ECD(R), R—ECD(R), R—ECA(R,-P—2), R—ECD(R), R—ECD(R)。
當s『2時,由于除PJ夕卜,不存在表中包含的點,所以不必新 計算點去求表的要素。因此,也可以沒有表生成部225及表存放部 228,包括也可以沒有表生成部225的處理。這時,表的尺寸,由于 沒有除P一1之外的點,所以為O,減小表程度的效果是顯著的。
(3)圖12表示了 sw=3時的運算變換表320。這里,圖17表示sw=4 時的運算變換表330。
此處,由于Window的寬度為"4比特",所以w_c取"0"、
1 ,,"2""g,,"4,'"5,,"6,,《7,, w y
"_6" 、 "-5"、"畫4"、"畫3" 、 "-2"及"國l" , 16個值中的一個。
下面,當w—c取各值時,對現有的Window運算、標量乘法運算 部229的Window運算、基本運算順序及基本運算次數進行說明。
(a)當w_c=0時
對w—c=0的現有Window運算,是"R—24R" 。 "R—24R"表 示使變量R的值,向高位移位Window寬度所示的比特數(此處為4 比特)。
另一方面,對w—c=0的標量乘法運算部229的Window運算,是 "R—24R"及"D—R+C"。此處關于"R—24R",如上所述。另夕卜, "D—R+C"是偽的加法運算,目的是為了使w—c=0時的Window運 算所包含的基本運算的種類及其數量,與其他情況中的(即w_C#0時 的)Window運算基本包含的基本運算的種類及其數量一致。
此處,"R—24R",在標量乘法運算部229中,通過R—2XR、 R—2XR、 R—2XR、 R—2XR進行運算。
這一運算通過24R=2 X (2 X (2 X (2 X R)))進行。
從而,在對w—c=0的標量乘法運算部229進行的Window運算中, 按照2倍運算、2倍運算、2倍運算、2倍運算、偽加法運算的順序,
進行多個基本運算。
這樣,對w c=0的標量乘法運算部229進行的Window運算所包
含的基本運算個數為"5"。
(b) w_c=l、 3、 5、 7、 -7、 -5、 -3、 -1時
在w—c=l、 3、 5、 7、 -7、 -5、 -3、 -1時,J見有的Window運算, 分別是"R—24R+C"、 "R—24R+3C"、 "R—24R+5C"、 "R—24R+7C"、 "R—24R-7C" 、 "R—24R-5C" 、 "R—24R-3C" 、 "R—24R-1C"。
"R—24R+C"表示使變量R的值,向高位移位Window寬度所示 的比特數(此處為4比特),此后變量R加C。關于其他運算也相同。
另外,w—c=l、 3、 5、 7、 -7、 -5、 -3、 -1時的標量乘法運算部229 的Window運算,與現有的Window運算相同。
這時的標量乘法運算部229的各Window運算,按2倍運算、2 倍運算、2倍運算、2倍運算、加法運算的順序,進行多個基本運算。
這時的標量乘法運算部229進行的Window運算所包含的基本運 算個數為"5"。
(c) w—c=2、 4、 6、 8、 -6、 -4、畫2時
在w—c=2、 4、 6、 8、 -6、 -4、 -2時,現有的Window運算,分別 是"R—24R+2C"、 "R—24R+4C"、 "R—24R+6C" 、 "R—24R+8C"、 "R—24R-6C" 、 "R—24R-4C" 、 "R—24R-2C"。
"R—24R+2C"表示使變量R的值,向高位移位Window寬度所 示的比特數(此處為4比特),此后變量R加2C。關于其他運算也相 同。
另外,w—c=2、 4、 6、 8、 -6、 -4、 -2時的標量乘法運算部229的 Window運算,分別是"R—2(23R+Q" 、 "R—22(22R+C)" 、 "R— 2(23R+3C)"、 "R—23(2R+C)" 、 "R—2(23R-3C)" 、 "R—22(22R-C)"、 "R—2(23R-C)"。這些運算結果與現有的Window運算的結果相同。
此處,例如w一c-2時的"R—2(23R+C)",在標量乘法運算部229 中,通過R—2XR、 R—2XR、 R—2XR、 R—R+C、 R—2XR進行運算。
從而,對w_c=2時的標量乘法運算部229的各Window運算,按 2倍運算、2倍運算、2倍運算、加法運算、2倍運算的順序,進行多 個基本運算。
這樣,對w_c=2的標量乘法運算部229進行的Window運算所包 含的基本運算個數為"5"。
在w—c=4、 6、 8、 -6、 -4、 -2時,也如圖17所示。
(4) 在各實施方式中,將冪乘系數全部按每個sw比特的一定比特 串進行分割,生成sw比特的分割信息,但是也不限于此。比特數也 可以不固定。當分割信息的比特數不一定時,采用分割信息的標量乘 法運算部的運算處理也可以不是一定次數。這時每個分割信息的運算 處理次數,也可以取決于分割信息的比特長,但是不取決于除此之外 的分割信息的比特長以外的信息。
當分割信息的比特數為a比特長時,對應于分割信息值的 Window運算部,依次進行(a+l)次運算。此處,上述多個運算中第 (a-t+l)次運算,是橢圓曲線E上的上述加法運算,其他運算是橢圓曲 線E上的2倍運算。
而當分割信息的比特數為b比特長時(此處,a^b),對應于分割 信息值的Window運算部,依次進行(b+l)次運算。此處,上述多個運 算中第(b-t+l)次運算,是橢圓曲線E上的上述加法運算,其他運算是 橢圓曲線E上的2倍運算。
(5) 在各實施方式中,當w—c-0時,在sw次R—ECD(R)的基本 運算之后,執行了D—ECA(R, P—1),但是偽運算處理既可以是與其 他點的加法運算,也可以是橢圓曲線2倍運算。
(6) 在各實施方式中,方程式使用了 yA2=xA3+aXx+b形式的 Weierstrass型橢圓曲線,使用了 Jacobian坐標,但是并不限于此。例 如也可以使用其他坐標(Projective坐標)。這時也可以附加偽運算,不 能區別橢圓曲線加法運算和橢圓曲線2倍運算。另外,也可以將橢圓 曲線2倍運算置換成橢圓曲線加法運算,使用可以運算的Hessian橢 圓及Jacobian橢圓。這時在橢圓曲線加法運算和橢圓曲線2倍運算的 內部運算中也可以沒有偽運算。
(7) 在各實施方式中,使用橢圓曲線執行冪乘運算,但是也可以執 行超橢圓曲線或其他代數曲線的Jacobian群的冪乘運算。
(8) 本發明也可以將各實施方式的橢圓曲線運算部用于橢圓
ElGamal加密、PSEC-KEM及其他橢圓曲線或其他代數曲線上的加密 方式中。
例如,也可以在將加密方式的加密算法中的私鑰作為冪乘系數的 冪乘運算中,使用各實施方式的橢圓曲線運算部,在將加密方式的解 密算法中的私鑰作為冪乘系數的冪乘運算中,使用各實施方式的橢圓 曲線運算部。
另外,在橢圓DSA簽名方式、橢圓ElGamal簽名方式、橢圓NR 簽名方式、橢圓MR簽名方式、橢圓PV簽名方式、橢圓AO簽名方 式等橢圓曲線上的簽名方式,或代數曲線的簽名方式中,也可以使用 各實施方式的橢圓曲線運算部。
如上所述,在以橢圓曲線上的簽名方式的簽名生成算法中的隨機 數為冪乘系數的冪乘運算中,也可以使用橢圓曲線運算部。
關于橢圓ElGamal加密及橢圓DSA簽名方式,在非專利文獻3 中有詳細敘述。
(9)在實施方式1的點發行系統10中,用戶購買商品或接受提供 的服務時,作為從銷售方及服務提供方接受的優惠信息,然后在用戶 購買商品或接受提供的服務時,以對銷售方及服務提供方的等價支付 的一部分或全部利用的點,作為秘密通信對象,點發行裝置200對生 成的點進行加密,并將加密點發送給IC卡100, IC卡100對加密點 進行解密,生成解密點,并對生成的解密點進行存儲。
但是,秘密通信的對象,并不限于上述的點。
也可以適用于如下所述的現金結算系統。
例如,以可以代替現金使用的電子貨幣為秘密通信對象,IC卡 存儲電子貨幣,用戶在購買商品時,IC卡對相當于商品購買金額的 電子貨幣進行加密并發送,并從內部存儲的電子貨幣中減去發送的部 分。代替點發行裝置200具有同樣構成的收銀裝置,接收加密電子貨 幣,對接收的加密電子貨幣進行解密,再現電子貨幣、并存儲。
另外,代替上述IC卡,也可以是用于利用美術館及博物館等各 種設施的IC卡類型的電子票,如上所述,存儲相當于電子貨幣的信 息。各種設施的入口設置的入場管理裝置,請求支付相當于各種設施 使用費用的電子貨幣,上述電子票對所請求金額的電子貨幣進行加密 并發送,入場管理裝置,接收加密電子貨幣,對接收的加密電子貨幣 進行解密,生成電子貨幣,進行存儲。
另外,也可以是利用鐵路、公交車等交通工具時所使用的ic卡
類型的IC卡車票,如上所述,存儲相當于電子貨幣的信息。交通機
構車站的入口所設置的入場管理裝置,發送識別該站的識別信息,ic
卡車票接收、存儲上述識別信息。交通機構車站的出口設置的出口管
理裝置,從IC卡車票接收上述識別信息,利用接收的識別信息和設
置該出口管理裝置的站,通過收費表,計算乘車金額,請求支付相當
于計算出的乘車收費金額的電子貨幣,ic卡車票,對請求金額的電
子貨幣進行加密并發送,出口管理裝置接收加密電子貨幣,對接收的 加密電子貨幣進行解密,生成、存儲電子貨幣。
在上述的加密及解密中,橢圓曲線上的離散對數問題用作安全性 的根據,進行橢圓冪乘運算。進行該橢圓冪乘運算的各裝置,具有與
橢圓曲線運算部208相同的橢圓曲線運算部。
上述各裝置,是在以素數p為模的剩余域F上所定義的橢圓曲線 E上的離散對數問題作為根據,利用橢圓曲線E上的點C乘以作為小 于素數p的正整數的系數k、算出點HC的橢圓曲線運算,對信息進 行安全處理的信息安全裝置。
(10) 在上述的現金結算系統中,對于所發送的現金金額、發送源、 發送目的地等,有時要求其正當性的證明。這時,可使用實施方式2 中所示的數字簽名及簽名驗證。
在這樣的數字簽名及簽名驗證中,橢圓曲線上的離散對數問題用 作安全性的根據,進行橢圓冪乘運算。進行該橢圓冪乘運算的各裝置 具有與橢圓曲線運算部208相同的橢圓曲線運算部。
上述的各裝置,是以素數p為模的剩余域F上所定義的橢圓曲線 E上的離散對數問題為根據,利用在橢圓曲線E上的點C乘以作為小 于素數p的正整數的系數k、計算點WC的橢圓曲線運算,可靠地處 理信息的信息安全裝置。
(11) 秘密通信的對象不限于上述的點及電子貨幣等。
本發明,可適用于在由內容加密裝置和內容再現裝置構成的內容 分配系統中,例如也可以將電影、動態圖像、聲音、音樂、小說、數 據庫等數字信息作為秘密通信的對象。這些內容,可從內容提供者對 用戶,通過銷售、租賃記錄了這些內容的記錄媒體進行提供。另外, 可通過數字廣播及互聯網從內容提供者提供給用戶。
內容提供者持有的內容加密裝置,對作為數字作品的電影進行加
密,記錄在DVD上,用戶持有的內容再現裝置,從DVD讀出加密 的數字作品,解密后生成電影,將生成的電影以聲音及影像進行再現、 顯示及輸出。
在上述的加密及解密中,橢圓曲線上的離散對數問題用作安全性 的根據,進行橢圓冪乘運算。進行該橢圓冪乘運算的內容加密裝置及 內容再現裝置,具有與橢圓曲線運算部208相同的橢圓曲線運算部。
在上述的例子中,也可以將對內容進行加密及解密的內容密鑰, 作為實施方式1中所示的秘密通信的對象。這時,內容密鑰與實施方 式1中所示的方法同樣,進行加密及解密。
這時,內容通過內容密鑰,使用下述的共用密鑰加密方式,進行 加密及解密。
上述的各裝置,是以素數p為模的剩余域F上所定義的橢圓曲線 E上的離散對數問題為根據,利用在橢圓曲線E上的點C乘以作為小 于素數p的正整數的系數k、計算點1^C的橢圓曲線運算,安全地處 理信息的信息安全裝置。
(12)在上述的內容分配系統中,對數字作品進行加密時使用的加 密技術,例如也可以使用DES(Data Encryption Standard:數據加密標 準)或AES(Advanced Encryption Standard:高級加密標準)。DES及 AES等加密技術被稱為所謂共用密鑰加密方式(或私鑰加密方式)。
在上述內容分配系統中,在采用這種共用密鑰加密方式時,在構 成內容分配系統的加密裝置和再現裝置之間,如何安全共有同一私鑰 是一個課題。
實施方式3中所示的密鑰共有系統,提供了解決這一課題的方法。
通過實施方式3中所示的密鑰共有系統,在內容加密裝置(相當 于實施方式3的用戶A裝置)和內容再現裝置(相當于實施方式3的用 戶B裝置)之間,共有不讓第三者知道的私鑰,此后使用共有密鑰加 密方式的加密算法,在內容加密裝置中,使用共有的私鑰,對數字作 品進行加密,生成加密數字作品,然后,在內容再現裝置中,使用共 有的私鑰,對加密數字作品進行解密。
在上述的密鑰共有中,橢圓曲線上的離散對數問題用作安全性的 根據,進行橢圓冪乘運算。進行該橢圓冪乘運算的內容加密裝置及內 容再現裝置,具有與橢圓曲線運算部208相同的橢圓曲線運算部。
(13)上述的各實施方式及變形例,可適用于以下所示的情況。
(a) 各實施方式及變形例,在秘密的消息傳輸中使用。關于這一 點, 在上述記載中以秘密通信進行了說明。
(b) 各實施方式及變形例,可在認證中使用。所謂認證是指消息是 否由如自稱那樣的人物發送、及消息未被篡改的驗證。另外,各實施 方式及變形例可在身份的證明中使用。身份證明,是指例如是否具有 對數據庫的訪問權、或對設施的訪問權(入室權)的證明,或者本人是 否是所說的人物的證明。另外,各實施方式及變形例還可在防止否認 中使用。所謂防止否認,是指例如用于對抗實際已同意某個事、但卻 聲稱未同意的人。
(c) 各實施方式及變形例,在密鑰交換中使用。所謂密鑰交換,是 指例如兩個人使用廣播電波并同意用于在某個私鑰加密方式中使用 的私鑰。在上述記載中以密鑰共有進行了說明。
(d) 各實施方式及變形例,可在擲硬幣(也稱作Bit Commitment: 比特承諾)中使用。所謂擲硬幣,例如住在不同城市的2個國際象棋 手,用電子郵件決定誰執白。
(e) 各實施方式及變形例,可以在秘密共享中使用。所謂秘密共享, 是指例如,某個秘密信息,可以由共同工作的k個人利用,但k-l個 人卻不能利用。
(f) 各實施方式及變形例,可以在零知識證明中使用。所謂零知識 證明,是指例如某個人對已成功解決數論或組合論的問題的事,僅通 過提供解是什么這樣一點信息,而使他人相信此事。
(14) 上述各裝置,具體地說是由微處理器、ROM、 RAM、硬盤 單元、顯示器單元、鍵盤、及鼠標器等構成的計算機系統。在上述 RAM或上述硬盤中存儲計算機程序。此處,計算機程序,為了實現 規定的功能,由多個表示對計算機的命令的指令代碼組合構成。通過 上述微處理器按上述計算機程序操作,各裝置實現各功能。即,上述 微處理器1個1個讀出上述計算機程序中所包含的指令,解讀讀出的 指令,根據解讀結果進行操作。
(15) 構成上述各裝置的構成要素的一部分或全部,也可以由1個 系統LSI(Large Scale Integration:大規模集成電路)構成。系統LSI是 將多個構成部集成在1個芯片上制造的超多功能的LSI,具體地說是 包括微處理器、ROM、 RAM等構成的計算機系統。在上述RAM中 存儲計算機程序。通過上述微處理器根據上述計算機程序進行操作, 系統LSI實現其功能。
另外,構成上述各裝置的構成要素的各部分,即可以分別作成l 個芯片,也可以單片化使其包含1部分或全部。此處,LSI因集成度 不同,也有的稱為IC、系統LSI、超LSI、甚LSI。
另外,集成電路化的方法并不限于LSI,也可以用專用電路或通 用處理器實現。也可以在LSI制造后,利用對可以編程的FPGA(Field Programmable Gate Array:現場可編程門陣列)及LSI內部的電路單元 的連接及設定進行再構成的可重構處理器。
(16) 構成上述各裝置的構成要素的一部分或全部,也可以由可以 在各裝置上裝卸的IC卡或單體模塊構成。上述IC卡或上述模塊,是 由微處理器、ROM、 RAM等構成的計算機系統。上述IC卡或上述 模塊,也可以包括上述超多功能LSI。通過微處理器根據計算機程序 進行操作,上述IC卡或上述模塊實現其功能。該IC卡或該模塊也可 以具有防篡改性。
(n)本發明也可以作為上述所示的方法。這些方法既可以是由計
算機實現的計算機程序,也可以是由上述計算機程序構成的數字信 號。
另外,本發明,也可以將上述計算機程序或上述數字信號記錄在
計算機可以讀取的記錄媒體,例如軟盤、硬盤、CD-ROM、 MO、 DVD、 DVD-ROM、 DVD-RAM、 BD(Blu-ray Disc:藍光光盤)、半導體存儲 器等中。另外,也可以是在這些記錄媒體上所記錄的上述計算機程序 或上述數字信號。
另外,本發明將上述計算機程序或上述數字信號通過電氣通信線 路、無線或有線通信線路、以互聯網為代表的網絡、數據廣播等進行 傳輸。
另外,本發明也可以是具有微處理器和存儲器的計算機系統,上 述存儲器存儲上述計算機程序,上述微處理器根據上述計算機程序進 行操作。
另外,也可以通過將上述程序或上述數字信號存儲在上述記錄媒 體上進行轉移,或經過上述網絡等將上述程序或上述數字信號進行轉 發,由獨立的其他計算機系統實施。
(18)如上所述,本發明,是對預先賦予的秘密信息和作為輸入的 橢圓曲線上的點,執行橢圓曲線上的標量乘法運算的橢圓曲線運算裝 置,其特征在于;包括對上述秘密信息進行分割,生成分割信息的 分割信息生成部;對于2個上述橢圓曲線上的點,生成在上述橢圓曲 線的群上加法運算之后的結果所得到的點的橢圓曲線加法運算部;對 于1個上述橢圓曲線上的點,生成在上述橢圓曲線的群上2倍之后的 結果所得到的點的橢圓曲線2倍運算部;以及根據第1上述橢圓曲線 上的點和上述分割信息,使用上述橢圓曲線加法運算部和上述橢圓曲 線2倍運算部,生成第2上述橢圓曲線上的點的標量乘法運算部;上
述標量乘法運算部進行控制,以使得使用上述橢圓曲線加法運算部和
上述橢圓曲線2倍運算部的次數合計后的值不依賴于上述秘密信息
的比特長以外的信息而保持一定,上述橢圓曲線加法運算部和上述橢
圓曲線2倍運算部中的每個,具有執行橢圓曲線定義域上的乘法運算 的乘法運算單元、執行上述定義域上的2次方運算的2次方運算單元、 執行上述定義域上的加法運算的加法運算單元,上述橢圓曲線加法運 算部和上述橢圓曲線2倍運算部執行的上述乘法運算、上述2次方運算及上述加法運算的順序相同。
此處,也可以是,上述標量乘法運算部,根據一個上述分割信息,
進行控制,以使得使用上述橢圓曲線加法運算部和上述橢圓曲線2倍 運算部的次數合計后的值不依賴于上述分割信息的比特長以外的信 息而保持一定。
此處,也可以是,上述橢圓曲線運算裝置,還具有表生成部,該 表生成部對1個以上預先賦予的正整數,計算以上述正整數為標量的 上述橢圓曲線上的點的標量乘法點,將其結果的每個存放在表中,在 上述橢圓曲線加法運算部使用的2個上述橢圓曲線上的點之中,至少 一個是上述表中所存放的上述標量乘法點。
此處,也可以是,上述分割信息生成部,將上述秘密信息分割成 具有預先賦予的比特數的多個上述分割信息。
此處,也可以是,上述橢圓曲線2倍運算部,具有執行對計算結 果無影響的偽的上述乘法運算的偽乘法運算單元。
此處,也可以是,上述橢圓曲線2倍運算部,具有將定義域的元 的2次方運算的結果,使用上述元和上述元的乘法運算得到的2次方 運算代替單元。
此處,也可以是,上述正整數是奇數。
此處,也可以是,上述分割信息生成部,生成多個sw比特的上 述分割信息,上述標量乘法運算部,執行(sw+l)次運算處理,當上述 分割信息w是0以外、并且上述分割信息w由2At(t為非負整數)除得 開而由2A(t+l)除不開時,第(sw-t+l)個上述運算處理使用上述橢圓曲 線加法運算部,其他上述運算處理使用上述橢圓曲線2倍運算部。
本發明,是對預先賦予的秘密信息和作為輸入的橢圓曲線上的 點,執行橢圓曲線上的標量乘法運算的橢圓曲線運算方法,其特征在 于;包括對上述秘密信息進行分割,生成分割信息的分割信息生成 步驟;對于2個上述橢圓曲線上的點,生成在上述橢圓曲線的群上加 法運算之后的結果所得到的點的橢圓曲線加法運算步驟;對于1個上 述橢圓曲線上的點,生成在上述橢圓曲線的群上2倍之后的結果所得 到的點的橢圓曲線2倍運算步驟;以及根據第1上述橢圓曲線上的點
和上述分割信息,使用上述橢圓曲線加法運算步驟和上述橢圓曲線2 倍運算步驟,生成第2上述橢圓曲線上的點的標量乘法運算步驟;上 述標量乘法運算步驟進行控制,以使得使用上述橢圓曲線加法運算步 驟和上述橢圓曲線2倍運算步驟的次數合計后的值不依賴于上述秘 密信息的比特長以外的信息而保持一定,上述橢圓曲線加法運算步驟 和上述橢圓曲線2倍運算步驟中的每個,具有執行橢圓曲線定義域上 的乘法運算的乘法運算單元、執行上述定義域上的2次方運算的2次 方運算單元、執行上述定義域上的加法運算的加法運算單元,上述橢 圓曲線加法運算步驟和上述橢圓曲線2倍運算步驟執行的上述乘法 運算、上述2次方運算及上述加法運算的順序相同。
此處,也可以是,上述標量乘法運算步驟,根據一個上述分割信 息,進行控制,以使得使用上述橢圓曲線加法運算部和上述橢圓曲線 2倍運算部的次數合計后的值不依賴于上述秘密信息而保持一定。
此處,也可以是,上述橢圓曲線運算方法,還具有表生成步驟, 該表生成步驟對1個以上預先賦予的正整數,計算以上述正整數為標 量的上述橢圓曲線上的點的標量乘法點,將其結果的每個存放在表 中,在上述橢圓曲線加法運算步驟使用的2個上述橢圓曲線上的點之 中,至少一個是上述表中所存放的上述標量乘法點。
此處,也可以是,上述分割信息生成步驟,將上述秘密信息分割 成具有預先賦予的比特數的多個上述分割信息。
此處,也可以是,上述正整數是奇數。
此處,也可以是,上述分割信息生成步驟,生成多個sw比特的 上述分割信息,上述標量乘法運算步驟,執行(sw+l)次運算處理,當 上述分割信息w是0以外、并且上述分割信息w由2、(t為非負整數) 除得開而由2A(t+l)除不幵時,第(sw-t+l)個上述運算處理使用上述橢 圓曲線加法運算步驟,其他上述運算處理使用上述橢圓曲線2倍運算
另外,本發明,是使橢圓曲線運算裝置執行的程序,該橢圓曲線 運算裝置對預先賦予的秘密信息和作為輸入的橢圓曲線上的點,執行 橢圓曲線上的標量乘法運算,其特征在于;該程序使上述橢圓曲線運算裝置執行下列步驟對上述秘密信息進行分割,生成分割信息的分 割信息生成步驟;對于2個上述橢圓曲線上的點,生成在上述橢圓曲 線的群上加法運算之后的結果所得到的點的橢圓曲線加法運算步驟; 對于1個上述橢圓曲線上的點,生成在上述橢圓曲線的群上2倍之后 的結果所得到的點的橢圓曲線2倍運算步驟;以及根據第1上述橢圓 曲線上的點和上述分割信息,使用上述橢圓曲線加法運算步驟和上述 橢圓曲線2倍運算步驟,生成第2上述橢圓曲線上的點的標量乘法運 算步驟;上述標量乘法運算步驟進行控制,以使得使用上述橢圓曲線 加法運算步驟和上述橢圓曲線2倍運算步驟的次數合計后的值不依 賴于上述秘密信息的比特長以外的信息而保持一定,上述橢圓曲線加 法運算步驟和上述橢圓曲線2倍運算步驟中的每個,具有執行橢圓曲 線定義域上的乘法運算的乘法運算單元、執行上述定義域上的2次方 運算的2次方運算單元、執行上述定義域上的加法運算的加法運算單 元,上述橢圓曲線加法運算步驟和上述橢圓曲線2倍運算步驟執行的 上述乘法運算、上述2次方運算及上述加法運算的順序相同。
此處,也可以是,上述標量乘法運算步驟,根據一個上述分割信 息,進行控制,以使得使用上述橢圓曲線加法運算部和上述橢圓曲線 2倍運算部的次數合計后的值不依賴于上述秘密信息而保持一定。
此處,也可以是,上述橢圓曲線運算方法,還具有表生成步驟, 該表生成步驟對1個以上預先賦予的正整數,計算以上述正整數為標 量的上述橢圓曲線上的點的標量乘法點,將其結果的每個存放在表 中,在上述橢圓曲線加法運算步驟使用的2個上述橢圓曲線上的點之 中,至少一個是上述表中所存放的上述標量乘法點。
此處,也可以是,上述分割信息生成步驟,將上述秘密信息分割 成具有預先賦予的比特數的多個上述分割信息。
此處,也可以是,上述正整數是奇數。
此處,也可以是,上述分割信息生成步驟,生成多個sw比特的 上述分割信息,上述標量乘法運算步驟,執行(sw+l)次運算處理,當 上述分割信息w是0以外、并且上述分割信息w由2At(t為非負整數) 除得開而由2A(t+l)除不開時,第(sw-t+l)個上述運算處理使用上述橢
圓曲線加法運算步驟,其他上述運算處理使用上述橢圓曲線2倍運算
7 另外,本發明,是對預先賦予的秘密信息和作為輸入的橢圓曲線 上的點執行橢圓曲線上的標量乘法運算的橢圓曲線運算裝置的集成 電路,其特征在于;包括對上述秘密信息進行分割,生成分割信息 的分割信息生成部;對于2個上述橢圓曲線上的點,生成在上述橢圓 曲線的群上加法運算之后的結果所得到的點的橢圓曲線加法運算部; 對于l個上述橢圓曲線上的點,生成在上述橢圓曲線的群上2倍之后 的結果所得到的點的橢圓曲線2倍運算部;以及根據第1上述橢圓曲 線上的點和上述分割信息,使用上述橢圓曲線加法運算部和上述橢圓 曲線2倍運算部,生成第2上述橢圓曲線上的點的標量乘法運算部; 上述標量乘法運算部進行控制,以使得使用上述橢圓曲線加法運算部 和上述橢圓曲線2倍運算部的次數合計后的值不依賴于上述秘密信 息的比特長以外的信息而保持一定,上述橢圓曲線加法運算部和上述 橢圓曲線2倍運算部中的每個,具有執行橢圓曲線定義域上的乘法運 算的乘法運算單元、執行上述定義域上的2次方運算的2次方運算單 元、執行上述定義域上的加法運算的加法運算單元,上述橢圓曲線加 法運算部和上述橢圓曲線2倍運算部執行的上述乘法運算、上述2次 方運算及上述加法運算的順序相同。
此處,也可以是,上述標量乘法運算部,根據一個上述分割信息, 進行控制,以使得使用上述橢圓曲線加法運算部和上述橢圓曲線2倍 運算部的次數合計后的值不依賴于上述秘密信息而保持一定。
G9)也可以將上述實施方式及上述變形例分別進行組合。
(產業上的可利用性)
如上所述,根據本發明,可以防止由簡單功率分析攻擊而造成的 安全性下降。
構成本發明的各裝置、各方法及各計算機程序,在需要對信息進 行安全可靠處理的所有產業中,可以經營性地、持續地及反復地使用。 另外,構成本發明的各裝置,在電器設備制造產業中,可以經營性地、 持續地及反復地制造、銷售。
權利要求
1、一種信息安全裝置,以將素數p作為模的剩余域F上所定義的橢圓曲線E上的離散對數問題為根據,利用在橢圓曲線E上的點C乘以作為小于素數p的正整數的系數k來計算出點k*C的橢圓曲線運算,安全而可靠地處理信息,其特征在于,包括點存儲單元,存儲橢圓曲線E上的點C;位存儲單元,存儲系數k的所有位的值;取得單元,從位存儲單元取得1個位的值w;乘法運算單元,其數量與取得的上述位所能表示的值的種類的數量相同;選擇單元,選擇與取得的上述位的值w相對應的乘法運算單元;以及重復控制單元,對于系數k的所有的位,對上述取得單元、上述選擇單元及上述乘法運算單元進行控制,以便重復地進行1個位的值w的取得、與取得的位的值w相對應的乘法運算單元的選擇、以及所選擇的乘法運算單元進行的乘法運算,各乘法運算單元,在橢圓曲線E上,將上述點C乘以取得的上述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行加法運算,當存在滿足取得的上述位的值w用2t除得開、而用2t+1除不開的條件的非負整數t時,與該位的值w相對應的上述乘法運算單元,在橢圓曲線E上,進行包括點Q乘以w/2t而得到的點的加法運算或點Q乘以|w/2t|而得的點的減法運算的運算。
2、 如權利要求1所述的信息安全裝置,其特征在于 取得的上述位為sw比特長,當存在上述非負整數t時,與上述位的值w相對應的上述乘法運 算單元,依次進行(sw+l)次運算,在上述多個運算中的第(sw-t+l)個 運算,是橢圓曲線E上的上述加法運算或上述減法運算,其他運算是 橢圓曲線E上的2倍運算。
3、 如權利要求2所述的信息安全裝置,其特征在于 上述信息安全裝置還包括表生成單元,該表生成單元以點Q為 初始的加法運算點,通過重復進行對加法運算點加上2*Q而得到新 的加法運算點的運算,從而生成除點Q之外的2SW"個加法運算點;當存在非負整數t時,與該位的值w相對應的上述乘法運算單元, 使用由上述表生成單元所生成的上述加法運算點,作為點Q乘以w/21 或lw/2l而得到的點。
4、 如權利要求2所述的信息安全裝置,其特征在于 取得的上述位是3比特長,當上述位的值w為2時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、加法運算及2倍運算,上述加法運算 是加上上述點C的運算,當上述位的值w為4時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、加法運算、2倍運算及2倍運算,上述加法運算 是加上上述點C的運算,當上述位的值w為-2時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、減法運算及2倍運算,上述減法運算 是減去上述點C的運算。
5、 如權利要求2所述的信息安全裝置,其特征在于 取得的上述位是4比特長,當上述位的值w為2時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、2倍運算、加法運算及2倍運算,上 述加法運算是加上上述點C的運算,當上述位的值w為4時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、加法運算、2倍運算及2倍運算,上 述加法運算是加上上述點C的運算,當上述位的值w為6時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、2倍運算、加法運算及2倍運算,上 述加法運算是加上點3*C的運算,當上述位的值w為8時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、加法運算、2倍運算、2倍運算及2倍運算,上 述加法運算是加上上述點c的運算,當上述位的值w為-6時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、2倍運算、減法運算及2倍運算,上 述減法運算是減去點3*C的運算,當上述位的值w為-4時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、減法運算、2倍運算及2倍運算,上 述減法運算是減去點C的運算,當上述位的值w為-2時,對應的乘法運算單元依次進行橢圓曲 線E上的2倍運算、2倍運算、2倍運算、減法運算及2倍運算,上 述減法運算是減去點C的運算。
6、 如權利要求2所述的信息安全裝置,其特征在于 上述加法運算或上述減法運算及上述2倍運算,分別包括偽運算,使得它們以相同順序執行相同種類的運算。
7、 如權利要求1所述的信息安全裝置,其特征在于 當取得的上述位是a比特長時,在存在上述非負整數t時,與上述位的值w相對應的上述乘法運算單元,依次進行(a+l)次運算,在 上述多個運算中的第(a-t+l)個運算是橢圓曲線E上的上述加法運算或 上述減法運算,其他運算是橢圓曲線E上的2倍運算,當取得的上述位是b比特長時,在存在上述非負整數t時,與上 述位的值w相對應的上述乘法運算單元,依次進行(b+l)次運算,在 上述多個運算中的第(b-t+l)個運算是橢圓曲線E上的上述加法運算 或上述減法運算,其他運算是橢圓曲線E上的2倍運算。
8、 如權利要求1所述的信息安全裝置,其特征在于 上述信息安全裝置是加密裝置,采用計算點k*C的橢圓曲線運算,對信息進行加密。
9、 如權利要求1所述的信息安全裝置,其特征在于 上述信息安全裝置是解密裝置,采用計算點k*C的橢圓曲線運算,對加密的信息進行解密。
10、 如權利要求1所述的信息安全裝置,其特征在于上述信息安全裝置是數字簽名生成裝置,采用計算點wc的橢圓曲線運算,對信息進行數字簽名。
11、 如權利要求1所述的信息安全裝置,其特征在于 上述信息安全裝置是數字簽名驗證裝置,釆用計算點k*C的橢圓曲線運算,進行數字簽名的驗證。
12、 如權利要求1所述的信息安全裝置,其特征在于-上述信息安全裝置是密鑰共有裝置,采用計算點k*C的橢圓曲線運算,生成與其他密鑰共有裝置之間 共有的密鑰。
13、 一種橢圓曲線運算裝置,以將素數p作為模的剩余域F上所 定義的橢圓曲線E上的離散對數問題為根據,利用在橢圓曲線E上 的點C乘以作為小于素數p的正整數的系數k來計算點k*C,其特征 在于,該橢圓曲線運算裝置包括點存儲單元,存儲橢圓曲線E上的點C; 位存儲單元,存儲系數k的所有位的值; 取得單元,從位存儲單元取得1個位的值W;乘法運算單元,其數量與取得的上述位所能表示的值的種類的數 量相同;選擇單元,選擇與取得的上述位的值W相對應的乘法運算單元;以及重復控制單元,對于系數k的所有的位,對上述取得單元、上述 選擇單元及上述乘法運算單元進行控制,以便重復地進行1個位的值W的取得、與取得的位的值W相對應的乘法運算單元的選擇、以及 所選擇的乘法運算單元進行的乘法運算,各乘法運算單元,在橢圓曲線E上,將上述點C乘以取得的上 述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行 加法運算,當存在滿足取得的上述位的值w用2l除得開、而用2t+1除不開的 條件的非負整數t時,與該位的值w相對應的上述乘法運算單元,在 橢圓曲線E上,進行包括點Q乘以w/》而得到的點的加法運算或點 Q乘以lw/2tl而得的點的減法運算的運算。
14、 一種集成電路,用于橢圓曲線運算,該橢圓曲線運算以將素 數p作為模的剩余域F上所定義的橢圓曲線E上的離散對數問題為根 據,利用在橢圓曲線E上的點C乘以作為小于素數p的正整數的系 數k來計算點"C,其特征在于,該集成電路包括點存儲單元,存儲橢圓曲線E上的點C;位存儲單元,存儲系數k的所有位的值; 取得單元,從位存儲單元取得1個位的值W;乘法運算單元,其數量與取得的上述位所能表示的值的種類的數 量相同;選擇單元,選擇與取得的上述位的值w相對應的乘法運算單元;以及重復控制單元,對于系數k的所有的位,對上述取得單元、上述 選擇單元及上述乘法運算單元進行控制,以便重復地進行1個位的值 w的取得、與取得的位的值w相對應的乘法運算單元的選擇、以及 所選擇的乘法運算單元進行的乘法運算,各乘法運算單元,在橢圓曲線E上,將上述點C乘以取得的上 述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行 加法運算,當存在滿足取得的上述位的值w用2t除得開、而用2t+1除不開的 條件的非負整數t時,與該位的值w相對應的上述乘法運算單元,在 橢圓曲線E上,進行包括點Q乘以w/2t而得到的點的加法運算或點 Q乘以lw/2t,得的點的減法運算的運算。
15、 一種方法,用于信息安全裝置,該信息安全裝置以將素數p 作為模的剩余域F上所定義的橢圓曲線E上的離散對數問題為根據, 利用在橢圓曲線E上的點C乘以作為小于素數p的正整數的系數k 來計算點k*C的橢圓曲線運算,安全而可靠地處理信息,其特征在于上述信息安全裝置,包括點存儲單元,存儲橢圓曲線E上的點C;以及位存儲單元,存儲系數k的所有位的值,上述方法包括 取得步驟,從位存儲單元取得l個位的值w; 乘法運算步驟,其數量與取得的上述位所能表示的值的種類的數 量相同;選擇步驟,選擇與取得的上述位的值w相對應的乘法運算步驟;以及重復控制步驟,對于系數k的所有的位,對上述取得步驟、上述 選擇步驟及上述乘法運算步驟進行控制,以便重復地進行1個位的值 w的取得、與取得的位的值w相對應的乘法運算步驟的選擇、以及 所選擇的乘法運算步驟中進行的乘法運算,各乘法運算步驟,在橢圓曲線E上,將上述點C乘以取得的上 述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行 加法運算,當存在滿足取得的上述位的值w用2t除得開、而用2t+1除不開的 條件的非負整數t時,在與該位的值w相對應的上述乘法運算步驟中, 在橢圓曲線E上,進行包括點Q乘以w/2t而得到的點的加法運算或 點Q乘以lw/2tl而得的點的減法運算的運算。
16、 一種計算機程序,用于信息安全裝置,該信息安全裝置以將 素數p作為模的剩余域F上所定義的橢圓曲線E上的離散對數問題為 根據,利用在橢圓曲線E上的點C乘以作為小于素數p的正整數的 系數k來計算點WC的橢圓曲線運算,安全而可靠地處理信息,其特 征在于上述信息安全裝置,包括點存儲單元,存儲橢圓曲線E上的點C;以及位存儲單元,存儲系數k的所有位的值,上述計算機程序包括取得步驟,從位存儲單元取得1個位的值W;乘法運算步驟,其數量與取得的上述位所能表示的值的種類的數 量相同;選擇步驟,選擇與取得的上述位的值W相對應的乘法運算步驟;以及 重復控制步驟,對于系數k的所有的位,對上述取得步驟、上述 選擇步驟及上述乘法運算步驟進行控制,以便重復地進行1個位的值 W的取得、與取得的位的值W相對應的乘法運算步驟的選擇、以及 所選擇的乘法運算步驟中進行的乘法運算,各乘法運算步驟,在橢圓曲線E上,將上述點C乘以取得的上 述位的值w所得到的乘法運算結果,在與該位相對應的位置上進行 加法運算,當存在滿足取得的上述位的值w用除得開、而用2t+1除不開的 條件的非負整數t時,在與該位的值w相對應的上述乘法運算步驟中, 在橢圓曲線E上,進行包括點Q乘以w/2t而得到的點的加法運算或 點Q乘以lw/2l而得的點的減法運算的運算。
17、如權利要求16所述的計算機程序,其特征在于 上述計算機程序,記錄在計算機可讀取的記錄媒體上。
全文摘要
在保持對簡單功率分析攻擊的耐受性的同時,可削減使用的表量。IC卡(100),利用在橢圓曲線E上的點C乘以作為小于素數p的正整數的系數k來計算點k*C的橢圓曲線運算,對加密的信息進行解密。點k*C的運算,是將上述點C乘以取得的系數k的位(Window)的值所得到的相乘結果,在與該位相對應的位置上進行加法運算,并對所有位進行該運算。當存在滿足取得的上述位的值可用2<sup>t</sup>除得開,而用2<sup>t+1</sup>除不開的條件的非負整數t時,各位的乘法運算,包括在橢圓曲線E上,點Q乘以w/2<sup>t</sup>所得到的點的加法運算。
文檔編號G09C1/00GK101198998SQ20068002185
公開日2008年6月11日 申請日期2006年4月25日 優先權日2005年4月27日
發明者布田裕一, 松崎棗 申請人:松下電器產業株式會社
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影