專利名稱:簽名生成裝置、簽名生成方法以及簽名生成程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及作為信息安全技術(shù)的軟件混淆方法,尤其涉及數(shù)字簽名方 法的混淆技術(shù)。
背景技術(shù):
在安裝密碼軟件時(shí),如果直接安裝密鑰或密碼算法,則在軟件被解析 后即可輕而易舉地非法使用。因此,迫切希望有使軟件解析變得困難的防 篡改軟件技術(shù)。作為防篡改軟件技術(shù),在專利文獻(xiàn)1中記載有如下方式 轉(zhuǎn)換運(yùn)算和運(yùn)算區(qū)域,使轉(zhuǎn)換前的運(yùn)算區(qū)域很難被推測(cè),從而使軟件解析 變得困難。
該方式通過一次轉(zhuǎn)換等來進(jìn)行轉(zhuǎn)換。例如,在轉(zhuǎn)換密鑰和數(shù)據(jù)的加法 運(yùn)算時(shí),轉(zhuǎn)換密鑰和數(shù)據(jù),對(duì)轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行轉(zhuǎn)換后的區(qū)域內(nèi)的加法運(yùn) 算,對(duì)其結(jié)果執(zhí)行逆轉(zhuǎn)換,從而得到密鑰和數(shù)據(jù)的加法運(yùn)算結(jié)果。通過將 這樣被混淆的加法運(yùn)算方法用于使用公鑰密碼的加密程序或解密程序,可 提高針對(duì)解析程序而得到密鑰的攻擊的安全性。
以下,說明專利文獻(xiàn)l中公開的技術(shù)的具體例子。
在此,說明對(duì)輸入a、 b輸出運(yùn)算結(jié)果a+b的程序,即,由主要運(yùn)算 模塊、逆轉(zhuǎn)換模塊以及輸出模塊構(gòu)成的加法運(yùn)算程序。
轉(zhuǎn)換模塊保持整數(shù)kl、 k2,在接受輸入值a、 b時(shí),使用所保持的整 數(shù)kl、 k2,將輸入值a、 b分別轉(zhuǎn)換成ta-klxa+k2、 tb=klxb+k2。其中, x表示乘法運(yùn)算。接著,主要運(yùn)算模塊對(duì)值ta、 tb計(jì)算tab-ta+tb。逆轉(zhuǎn)換 模塊對(duì)tab計(jì)算c二 (tab—2xk2) /kl。輸出模塊輸出運(yùn)算結(jié)果c。
在進(jìn)行上述處理時(shí),由于tab-ta+tb-klxa+k2+klxb+k2二klx (a +b)十2xk2,所以(tab—2xk2) /kl=a+b成立。因此,成為c-a+b, 加法運(yùn)算程序能夠由輸入值a、 b計(jì)算出a和b的加法運(yùn)算結(jié)果。
在此,在實(shí)現(xiàn)了解析困難的轉(zhuǎn)換模塊和逆轉(zhuǎn)換模塊時(shí),第三者(解析 者)可解析的僅是ta、 tb、 tab。由這些值推測(cè)a、 b是很困難的,因此可將
a、 b隱蔽起來。
在專利文獻(xiàn)1中,通過一次轉(zhuǎn)換來轉(zhuǎn)換數(shù)據(jù),難以解析數(shù)據(jù)本身,但 運(yùn)算種類即"加法運(yùn)算"在轉(zhuǎn)換目標(biāo)中也執(zhí)行"加法運(yùn)算",無法達(dá)到將運(yùn)算 種類隱蔽起來的程度。
在專利文獻(xiàn)2中,根據(jù)如果具有某種信息(陷門)則易解的帶陷門的 離散對(duì)數(shù)問題,通過將"加法運(yùn)算"轉(zhuǎn)換成"乘法運(yùn)算"或者"橢圓曲線上的群 的加法運(yùn)算",進(jìn)行運(yùn)算種類的隱蔽。
此外,在此說明以往采用的橢圓DSA (Digital Signature Algorithm:數(shù) 字簽名算法)簽名方式(以下稱作"以往的橢圓DSA簽名方式")。以往的 橢圓DSA簽名方式記載在非專利文獻(xiàn)3的第四頁,因此,在此簡單進(jìn)行說 明。
(1) 參數(shù)
在以往的橢圓DSA簽名方式中,將橢圓曲線E的方程式y(tǒng)A2=XA3 + axx+b的變量a、 b、橢圓曲線E的定義域GF (p)、基點(diǎn)P和基點(diǎn)的級(jí)數(shù) (order) q作為參數(shù)進(jìn)行保持。在此,x、表示x的y次冪,q和P滿足q*P =0。 O是橢圓曲線的群的零元,*表示橢圓曲線的純量倍運(yùn)算,9* 表示 將q個(gè)P相加。
(2) 私鑰和公鑰
設(shè)私鑰為ks (0<ks<q),設(shè)KP-k^P為公鑰。 (簽名生成)
在以往的橢圓DSA簽名方式的簽名生成中,在以下步驟中生成成為簽 名對(duì)象的消息m的數(shù)字簽名S。
(步驟Sl)計(jì)算h=Hash (m)。在此,Hash (m)是m的散列值。 由消息求出散列值的散列函數(shù)例如是SHA-1。散列函數(shù)詳細(xì)記載在非專利 文獻(xiàn)1的192 195頁。
(步驟S2)選擇隨機(jī)數(shù)k,計(jì)算橢圓曲線上的點(diǎn)R-WP。
(步驟S3)計(jì)算r-x (R) modq。在此,x (R)表示R的x坐標(biāo)。
(步驟S4)計(jì)算s- (h+rxks) /kmodq。
(步驟S5)輸出S- (r, s),結(jié)束。
(4)簽名驗(yàn)證
在以往的橢圓DSA簽名方式的簽名驗(yàn)證中,通過以下步驟驗(yàn)證數(shù)字簽 名S,輸出驗(yàn)證結(jié)果(OK或者NG)。 (步驟SIO)計(jì)算h-Hash (m)。
(步驟Sll)計(jì)算R'- (h/smodq) *P+ (r/smodq) *KP,得到r' =x (R')。
(步驟S12)檢查r -r'是否成立。在成立時(shí)輸出OK,結(jié)束;在不成 立時(shí)輸出NG,結(jié)束。
專利文獻(xiàn)1:美國專利第6,594,761號(hào)說明書 專利文獻(xiàn)2:國際公開第2005/098795號(hào)小冊(cè)子 專利文獻(xiàn)3:日本專利第3,402,441號(hào)說明書
非專利文獻(xiàn)1 :岡本龍明、山本博資、"現(xiàn)代喑號(hào)"、產(chǎn)業(yè)圖書(1997
年)
非專利文獻(xiàn)2 : Henri Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer-Verlag, 1993, pp. 16-19
非專利文獻(xiàn)3: I. Blake, G Seroussi and N. Smart, "Elliptic Curves in Cryptography", CAMBRIDGE UNIVERSITY PRESS, 1999
非專禾ij文獻(xiàn)4: N. Kunihiro and K. Koyama, "Two Discrete Log Algorithms for Super-Anomalous Elliptic Curves",SCIS,99, 1999, pp.869-874
在以往的橢圓DSA簽名方式的簽名生成中,不僅需要使私鑰ks保密, 還需要使隨機(jī)數(shù)k保密。這是因?yàn)楫?dāng)隨機(jī)數(shù)k被第三者知道時(shí),可使用步 驟S4的式子逆運(yùn)算ks。
但是,在上述現(xiàn)有例的方式中,進(jìn)行運(yùn)算(加法運(yùn)算)的轉(zhuǎn)換,可使 解析使用該運(yùn)算的部分變得困難,但在以往的橢圓DSA簽名方式的簽名生 成中,無法使解析隨機(jī)數(shù)k變得困難。
發(fā)明內(nèi)容
因此,本發(fā)明鑒于上述問題,其目的在于,提供一種能夠使簽名生成 處理中使用的值成為解析困難的簽名生成裝置、簽名生成方法、簽名生成 程序、記錄介質(zhì)以及集成電路。
為了達(dá)到上述目的,本發(fā)明提供一種簽名生成裝置,以群G和群Ga
上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群G上的基本元P以及群Ga上的基 本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息的數(shù)字簽名,其 特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì), 各分解對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施 將任意正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì) 基本元Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪 的冪運(yùn)算而計(jì)算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單 元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上 述分解值存儲(chǔ)單元中選擇與選擇出的數(shù)u對(duì)應(yīng)的分解組;生成單元,對(duì)選 擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上述群G的基本運(yùn)算, 生成第一冪元,對(duì)選擇出的分解組中包含的、且與上述2個(gè)以上的第一分 解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn)算,生成第二冪元;以 及簽名單元,將生成的上述第一冪元和消息分別轉(zhuǎn)換成群Ga上的元,對(duì)轉(zhuǎn) 換后的第一冪元、轉(zhuǎn)換后的消息以及上述第二冪元實(shí)施上述群Ga上的運(yùn) 算,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第 二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。 發(fā)明效果
根據(jù)上述所示的結(jié)構(gòu),簽名生成裝置不僅能夠隱蔽數(shù)字簽名中使用的 值,而且能夠隱蔽運(yùn)算本身。
在此,也可以是,上述多個(gè)數(shù)分別是由長度為2以上的預(yù)定長度構(gòu)成 的比特串所表現(xiàn)的數(shù),分解對(duì)按照上述由預(yù)定長度構(gòu)成的比特串的各比特 值對(duì)應(yīng),上述選擇單元將選擇出的上述數(shù)u轉(zhuǎn)換成由上述預(yù)定長度的比特 串構(gòu)成的比特表現(xiàn),從上述分解值存儲(chǔ)單元中選擇由與各個(gè)比特的值相對(duì) 應(yīng)的分解對(duì)構(gòu)成的上述分解組。
根據(jù)該結(jié)構(gòu),簽名生成裝置能夠容易地選擇要使用的被隱蔽的值。
在此,也可以是,上述生成單元,對(duì)由按照每個(gè)比特值選擇出的分解 對(duì)構(gòu)成的上述分解組中包含的2個(gè)以上的第一分解值,實(shí)施上述群G的基 本運(yùn)算,生成上述第一冪元,對(duì)由按照每個(gè)比特值選擇出的分解對(duì)構(gòu)成的 上述分解組中包含的、且與上述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分 解值,實(shí)施上述群Ga的上述基本運(yùn)算,生成上述第二冪元。
根據(jù)該結(jié)構(gòu),在群G和群Ga的基本運(yùn)算中,能夠隱蔽要使用的值和 運(yùn)算。
在此,也可以是,上述第一冪元包括2個(gè)以上的值,上述簽名單元具
有轉(zhuǎn)換部,將對(duì)上述消息的散列值作為冪,對(duì)上述基本元Pa實(shí)施群Ga 的上述冪運(yùn)算,由此將上述散列值轉(zhuǎn)換成屬于上述群Ga的轉(zhuǎn)換后散列值; 第一運(yùn)算部,使用上述第一冪元中包括的1個(gè)值計(jì)算第一數(shù)據(jù);第二運(yùn)算 部,對(duì)上述轉(zhuǎn)換后散列值實(shí)施上述群Ga上的基本運(yùn)算,計(jì)算屬于上述群 Ga的第三冪元;逆轉(zhuǎn)換部,在上述群Ga或者上述群Ga中實(shí)際包含的子群 Sa中,對(duì)上述第二冪元和上述第三冪元分別實(shí)施在上述轉(zhuǎn)換部中進(jìn)行的轉(zhuǎn) 換的冪運(yùn)算的逆運(yùn)算,由此求出第一離散對(duì)數(shù)和第二離散對(duì)數(shù);第三運(yùn)算 部,使用上述第一離散對(duì)數(shù)和上述第二離散對(duì)數(shù)計(jì)算第二數(shù)據(jù);以及數(shù)據(jù) 生成部,生成由上述第一數(shù)據(jù)和上述第二數(shù)據(jù)的組構(gòu)成的數(shù)字簽名。
根據(jù)該結(jié)構(gòu),簽名生成裝置在簽名單元中,能夠隱蔽要使用的值和運(yùn)算。
在此,也可以是,上述簽名生成裝置還具有轉(zhuǎn)換后私鑰存儲(chǔ)單元,將 私鑰作為冪,對(duì)Jl述基本元Pa實(shí)施上述群Ga的基本運(yùn)算,存儲(chǔ)有屬于上 述群Ga的轉(zhuǎn)換后私鑰,上述第二運(yùn)算部對(duì)下述運(yùn)算結(jié)果和上述轉(zhuǎn)換后散列 值,實(shí)施上述群Ga上的基本運(yùn)算,計(jì)算上述第三冪元,上述運(yùn)算結(jié)果是針 對(duì)上述轉(zhuǎn)換后私鑰實(shí)施將上述第一數(shù)據(jù)作為冪的上述群Ga的冪運(yùn)算而得 到的上述群Ga上的元。
根據(jù)該結(jié)構(gòu),簽名生成裝置在第二運(yùn)算部中,能夠隱蔽要使用的值和 運(yùn)算。
在此,也可以是,上述群G和上述群Ga是整數(shù)剩余環(huán)的乘法群,上 述群G和上述群Ga各自的基本運(yùn)算是對(duì)各元實(shí)施乘法運(yùn)算的乘法運(yùn)算, 上述群G和上述群Ga各自的冪運(yùn)算是將正整數(shù)作為冪數(shù)的冪乘運(yùn)算。
根據(jù)該結(jié)構(gòu),在簽名生成裝置中,第一、第二以及第三冪元的生成中 使用的運(yùn)算是乘法運(yùn)算,不同于冪乘運(yùn)算,因此能夠隱蔽運(yùn)算。
在此,也可以是,上述群G是橢圓曲線的群,上述子群Sa是異常橢圓 曲線的群,上述群G和上述群Ga各自的基本運(yùn)算是對(duì)各元實(shí)施橢圓曲線 上的加法運(yùn)算的運(yùn)算,上述群G和上述群Ga各自的冪運(yùn)算是對(duì)上述正整 數(shù)實(shí)施橢圓曲線上的乘法運(yùn)算的運(yùn)算。在此,也可以是,上述群G是橢圓 曲線的群,上述群Ga是2個(gè)異常橢圓曲線的直積,上述群G和上述群Ga 各自的基本運(yùn)算是對(duì)各元實(shí)施橢圓曲線上的加法運(yùn)算的運(yùn)算,上述群G和 上述群Ga各自的冪運(yùn)算是對(duì)正整數(shù)實(shí)施橢圓曲線上的乘法運(yùn)算的運(yùn)算。
根據(jù)這些結(jié)構(gòu),在簽名生成裝置中,第一、第二以及第三冪元的生成 中使用的運(yùn)算是橢圓曲線上的加法運(yùn)算,不同于整數(shù)的加法運(yùn)算,因此能
夠隱蔽運(yùn)算。
此外,本發(fā)明提供一種簽名生成裝置,以群G和群Ga上的離散對(duì)數(shù) 問題為安全性依據(jù),對(duì)群G上的基本元P以及群Ga上的基本元Pa實(shí)施重 復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息的數(shù)字簽名,其特征在于,預(yù) 先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解對(duì)包括 第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意正整數(shù) 作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元Pa實(shí)施 將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn)算而計(jì) 算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述 多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ) 單元中選擇與選擇出的數(shù)u對(duì)應(yīng)的分解對(duì);以及簽名單元,將選擇出的分 解對(duì)中包含的第一分解值和消息分別轉(zhuǎn)換成群Ga上的元,對(duì)轉(zhuǎn)換后的第一 分解對(duì)、轉(zhuǎn)換后的消息以及選擇出的分解對(duì)中包含的第二分解值實(shí)施上述 群Ga上的運(yùn)算,解出離散對(duì)數(shù)問題,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù), 使用計(jì)算出的第一離散對(duì)數(shù)和第二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。
根據(jù)該結(jié)構(gòu),簽名生成裝置能夠隱蔽數(shù)字簽名中使用的值。
圖1是表示簽名生成系統(tǒng)1的概要的框圖。
圖2是表示簽名生成裝置10的結(jié)構(gòu)的框圖。
圖3是表示表存儲(chǔ)部102中存儲(chǔ)的各表的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖4是表示簽名生成程序110中包含的各模塊的圖。
圖5是表示表生成裝置20的結(jié)構(gòu)的框圖。
圖6是表示簽名生成處理的動(dòng)作的流程圖,接圖7。
圖7是表示簽名生成處理的動(dòng)作的流程圖,上接圖6。
圖8是表示表生成裝置20的動(dòng)作的流程圖。
圖9是表示在本發(fā)明中由值r、 h生成值s (= (rxks +h) /kmodq) 時(shí)的動(dòng)作的概要的圖。
圖IO是表示本發(fā)明的DSA橢圓簽名方式的特征部分的圖。 符號(hào)說明
1 簽名生成系統(tǒng) 10 簽名生成裝置
20表生成裝置
30消息接受裝置
40簽名數(shù)據(jù)發(fā)送裝置
50簽名數(shù)據(jù)接收裝置
60互聯(lián)網(wǎng)
101處理器
102表存儲(chǔ)部
103秘密參數(shù)存儲(chǔ)部
104公開參數(shù)存儲(chǔ)部
105轉(zhuǎn)換后私鑰存儲(chǔ)部
106程序存儲(chǔ)部
110簽名生成程序
121散列值生成模塊
122隨機(jī)數(shù)生成模塊
123選擇模塊
124隨機(jī)元生成模塊
125轉(zhuǎn)換模塊
126主要運(yùn)算模塊
127逆轉(zhuǎn)換模塊
128乘法運(yùn)算模塊
129除法運(yùn)算模塊
130簽名數(shù)據(jù)生成模塊
201公開參數(shù)存儲(chǔ)部
202隨機(jī)數(shù)生成部
203群運(yùn)算部
204存儲(chǔ)處理部
具體實(shí)施例方式
以下,參照
用于實(shí)施發(fā)明的優(yōu)選實(shí)施方式。 1.第一實(shí)施方式
1.1準(zhǔn)備
在此,為了說明本發(fā)明涉及的實(shí)施方式,先說明必要的"橢圓曲線上的 橢圓純量乘運(yùn)算"。
作為一例,說明10(^P的計(jì)算。
當(dāng)表示成100* =2 (2 (P+2 (2 (2 (P+2P)))))時(shí),100*P通過基 于橢圓曲線上的點(diǎn)的6次2倍運(yùn)算和2次加法運(yùn)算來進(jìn)行計(jì)算。
這樣,橢圓純量乘運(yùn)算歸結(jié)于基于橢圓曲線上的2倍運(yùn)算和加法運(yùn)算 的運(yùn)算。
在此,設(shè)橢圓曲線E的方程式為y"二xA3+axx+b,設(shè)橢圓曲線上的 任意點(diǎn)P的坐標(biāo)為(xl, yl),設(shè)任意點(diǎn)Q的坐標(biāo)為(x2, y2)。在此,設(shè) 由R^P+Q確定的點(diǎn)R的坐標(biāo)為(x3, y3)。
在P^Q時(shí),R-P+Q成為橢圓曲線上的加法運(yùn)算的運(yùn)算。以下表示加 法運(yùn)算的公式。
x3 = { (y2—yl) / (x2—xl) }A2 —xl—x2
y3 = { (y2—yl) / (x2—xl) } (xl—x3) —yl
在P=Q時(shí),R=P+Q=P+P=2xP, R=P+Q成為橢圓曲線上的2
倍運(yùn)算的運(yùn)算。以下表示2倍運(yùn)算的公式。
x3 = { (3xxlA2+a) / (2xyl) }八2 — (2xxl)
y3 = { (3xxlA2+a) / (2xyl) } (xl—x3) _yl
在此,上述運(yùn)算是定義橢圓曲線的有限域上的運(yùn)算。
另外,對(duì)于橢圓曲線的運(yùn)算公式,在"Efficient elliptic curve
exponentiation" ( Miyaji, Ono ,and Cohen 著 , Advances in
cryptology國proceedings of ICICS,97, Lecture notes in computer science, 1997,
Springer-verlag, 282-290)中有詳細(xì)說明。 1.2簽名生成系統(tǒng)1的結(jié)構(gòu)
說明作為本發(fā)明涉及的實(shí)施方式的簽名生成系統(tǒng)1。
如圖1所示,簽名生成系統(tǒng)1包括簽名生成裝置10、表生成裝置20、
消息接受裝置30、簽名數(shù)據(jù)發(fā)送裝置40以及簽名數(shù)據(jù)接收裝置50。
消息接受裝置30通過用戶操作接受消息m,將接受的消息m輸出到
簽名生成裝置10。
表生成裝置20生成本發(fā)明的橢圓DSA簽名方式(以下簡稱作"橢圓 DSA簽名方式")的簽名生成中使用的多個(gè)元對(duì)和轉(zhuǎn)換后私鑰,將生成的多 個(gè)元對(duì)和轉(zhuǎn)換后私鑰存儲(chǔ)到簽名生成裝置10。在此,元對(duì)是指第一橢圓曲 線上的群的元和第二橢圓曲線上的群的元的組。此外,轉(zhuǎn)換后私鑰是指對(duì) 私鑰實(shí)施第二橢圓曲線上的橢圓純量乘運(yùn)算后的運(yùn)算結(jié)果。
另外,元對(duì)和轉(zhuǎn)換后私鑰的詳細(xì)情況將在后面說明。
簽名生成裝置10從消息接受裝置30接受消息m,對(duì)接受的消息m通 過橢圓DSA簽名方式的簽名生成來生成簽名數(shù)據(jù)S (= (r, s))。
簽名生成裝置10將生成的簽名數(shù)據(jù)S和從消息接受裝置30接受的消 息m輸出到簽名數(shù)據(jù)發(fā)送裝置40。
簽名數(shù)據(jù)發(fā)送裝置40例如通過互聯(lián)網(wǎng)60與簽名數(shù)據(jù)接收裝置50網(wǎng)絡(luò) 連接。簽名數(shù)據(jù)發(fā)送裝置40若從簽名生成裝置10接受消息m和針對(duì)消息 m的簽名數(shù)據(jù)S,則將接受的消息m和簽名數(shù)據(jù)S經(jīng)由互聯(lián)網(wǎng)60發(fā)送到簽 名數(shù)據(jù)接收裝置50。
簽名數(shù)據(jù)接收裝置50從簽名數(shù)據(jù)發(fā)送裝置40經(jīng)由互聯(lián)網(wǎng)60接收消息 m和針對(duì)消息m的簽名數(shù)據(jù)S時(shí),進(jìn)行簽名驗(yàn)證。
1.3簽名生成裝置10的結(jié)構(gòu)
在此,說明簽名生成裝置10的結(jié)構(gòu)。
如圖2所示,簽名生成裝置10包括處理器101、表存儲(chǔ)部102、秘密 參數(shù)存儲(chǔ)部103、公開參數(shù)存儲(chǔ)部104、轉(zhuǎn)換后私鑰存儲(chǔ)部105以及程序存 儲(chǔ)部106。
(1) 處理器IOI
處理器101構(gòu)成計(jì)算機(jī)系統(tǒng),通過讀入程序存儲(chǔ)部106中存儲(chǔ)的簽名 生成程序110,由讀入的簽名生成程序110和硬件資源協(xié)動(dòng)來實(shí)現(xiàn)功能。
處理器101從程序存儲(chǔ)部106中存儲(chǔ)的簽名生成程序110, 一個(gè)一個(gè) 地讀出計(jì)算機(jī)指令進(jìn)行解釋,根據(jù)該解釋結(jié)果進(jìn)行動(dòng)作。
另外,簽名生成程序110的詳細(xì)情況將在后面說明。
(2) 表存儲(chǔ)部102
表存儲(chǔ)部102存儲(chǔ)有多個(gè)元對(duì),該元對(duì)是屬于第一群G的元和屬于第 二群Ga的元的對(duì)。另外,元對(duì)由表生成裝置20生成。
(2-1)關(guān)于第一群G和第二群Ga
第一群G是橢圓DSA簽名方式中使用的以橢圓曲線E的點(diǎn)為元的群。 在此,設(shè)橢圓曲線E的方程式為yA2-xA3+axx+b。在設(shè)由具有橢圓曲線 E的方程式的域GF (p)上的橢圓曲線的點(diǎn)構(gòu)成的群為E (GF (p))時(shí), 第一群G是E (GF (p))。
第二群Ga相對(duì)于n-plxp2 (pl、 p2是素?cái)?shù)),成為由GF (pl)上的 橢圓曲線Ea的點(diǎn)構(gòu)成的群Ea (GF (pl))、和由GF (p2)上的橢圓曲線 Ea的點(diǎn)構(gòu)成的群Ea (GF (p2))的直積Ea (GF (pl)) xEa (GF (p2))。 Z/nZ不是域而是環(huán)。雖然在數(shù)學(xué)上不稱作"Z/nZ上的橢圓曲線",但在此為 了方便,將該直積稱作Z/nZ上的橢圓曲線的群。另外,Z是整數(shù)環(huán),Z/nZ 是以數(shù)n為模的整數(shù)剩余環(huán)。 ,
在此,設(shè)橢圓曲線Ea的方程式為yA2=XA3+aaxx+ba。此外,設(shè)素 數(shù)pl和p2是與橢圓曲線E的基點(diǎn)的級(jí)數(shù)q不同的數(shù),使第三者無法知道 地進(jìn)行生成和管理。
與Ea (GF (pl))上的點(diǎn)Pal- (xal, yal) modpl禾卩Ea (GF (p2)) 上的點(diǎn)PC- (xa2, ya2) mod p2對(duì)應(yīng)的Z/nZ上的橢圓曲線Ea (GF (pl)) xEa (GF (p2))的點(diǎn)Pa- (xa, ya) modn按照以下方式定義。設(shè)xa為 滿足xa mod pl =xal 、 xa mod p2=xa2的數(shù),設(shè)ya為滿足ya mod pl =yal 、 yamodp2=ya2的數(shù)。
通過該定義,設(shè)與Ea (GF (pl)) xEa (GF (p2))上的點(diǎn)Pa- (xa, ya) modn對(duì)應(yīng)的Ea(GF(pl))上的點(diǎn)Pal為Pal-(xal, yal) modpl, Ea (GF (p2))上的點(diǎn)Pa2為Pa2二 (xa2, ya2) modp2,從而將Ea (GF (pl))、 Ea (GF (p2))視為Ea (GF (pl)) xEa (GF (p2))的子群。
在橢圓曲線Ea中,設(shè)mod pl下的橢圓曲線的級(jí)數(shù)、即點(diǎn)的個(gè)數(shù)為pl 。 將這樣的域GF (pl)上的橢圓曲線稱作異常(Anomalous)橢圓曲線。并 且,設(shè)modp2下的橢圓曲線的級(jí)數(shù)為p2,即在域GF (p2)上也是異常橢 圓曲線。此時(shí),Z/nZ上的橢圓曲線稱作超級(jí)異常(Super-Anomalous)橢圓 曲線。超級(jí)異常橢圓曲線在非專利文獻(xiàn)4中有詳細(xì)記載。此時(shí),由于Z/nZ 上的橢圓曲線的群是Ea (GF (pl)) xEa (GF (p2)),因此,橢圓曲線的 級(jí)數(shù)是n (=plxp2)。 設(shè)素?cái)?shù)pl的比特?cái)?shù)為2xlen+l比特。另外,pl的比特?cái)?shù)也可以大于 2xlen+l。 len例如是160。 p2例如是n-plxp2的比特?cái)?shù)成為1024那樣的 較大的素?cái)?shù)。
(2-2)關(guān)于表存儲(chǔ)部102中存儲(chǔ)的元對(duì)
表存儲(chǔ)部102存儲(chǔ)2xlen個(gè)元對(duì)PP一 (i, j)。這里,i是0或者1, j 是O至lJlen—l的值的某個(gè),"—"表示下標(biāo)文字,i, j是PP的索引。PP_ (i, j) = (v— (i, j) *Pmodp, v_ (i, j) *Pamodn)。承表示對(duì)P進(jìn)行橢圓曲 線E上的純量倍運(yùn)算、對(duì)Pa進(jìn)行橢圓曲線Ea上的純量倍運(yùn)算。v_ (i, j) 是len比特的值。在此,要注意? _ (i, j)中包含的2點(diǎn)的純量相等。
在此,以下表示元對(duì)的存儲(chǔ)方法的一例。
表存儲(chǔ)部102具有用于存儲(chǔ)多個(gè)元對(duì)的區(qū)域。
如圖3所示,表存儲(chǔ)部102存儲(chǔ)有表T101、 T102.....T103。即,表
存儲(chǔ)部102具有l(wèi)en個(gè)表。
表T101包括表名稱T110 (在此是"表0")、 二進(jìn)制項(xiàng)目T120、 T121 (在此是"O"、 "1")以及各二進(jìn)制項(xiàng)目T120、 T121中的元對(duì)T130、 T131。 l個(gè)表中存儲(chǔ)有2個(gè)元對(duì),因此,表存儲(chǔ)部102通過存儲(chǔ)len個(gè)表,來存儲(chǔ) 2xlen個(gè)元對(duì)。
表名稱T110與值j相對(duì)應(yīng)。艮卩,表名稱TllO (表0)與j二O相對(duì)應(yīng), 表名稱Tlll (在此是表l)與j二l相對(duì)應(yīng)。由此,將表名稱與j-O、...、 len—l分別對(duì)應(yīng)起來。
此外,在元對(duì)T130中,P一 (0, 0)是v— (0, 0) *Pmodp, Pa_ (0, 0)是v— (0, 0) *Pamodn。在元對(duì)T130中,P_ (1, 0)是v— (1, 0) *Pmodp, Pa_ (1, 0)是v— (1, 0) *Pamodn。要注意PP— (i, j) = (P— (i, j), Pa一 (i, j))。
各個(gè)元對(duì)與二進(jìn)制數(shù)相對(duì)應(yīng)。具體地說,在二進(jìn)制數(shù)的值是0的情況
下,與二進(jìn)制項(xiàng)目"O"中的元對(duì)對(duì)應(yīng);在二進(jìn)制數(shù)的值是1的情況下,與
二進(jìn)制項(xiàng)目'T'中的元對(duì)對(duì)應(yīng)。
(3) 秘密參數(shù)存儲(chǔ)部103
秘密參數(shù)存儲(chǔ)部103具有防篡改性,存儲(chǔ)有素?cái)?shù)pl 。
(4) 公開參數(shù)存儲(chǔ)部104
公開參數(shù)存儲(chǔ)部104分別存儲(chǔ)有橢圓曲線E的方程式y(tǒng)A2=XA3+axX 十b中的變量a、 b、素?cái)?shù)p、橢圓曲線E上的基點(diǎn)P及其級(jí)數(shù)q、橢圓曲線 Ea的方程式y(tǒng)A2-x^+aaxx+ba中的變量aa、 ba、合數(shù)n (=plxp2)以 及橢圓曲線Ea上的點(diǎn)Pa,來作為參數(shù)。在此,存儲(chǔ)點(diǎn)是指存儲(chǔ)點(diǎn)的坐標(biāo)。 此外,p、 q是len比特的素?cái)?shù)。
(5) 轉(zhuǎn)換后私鑰存儲(chǔ)部105
轉(zhuǎn)換后私鑰存儲(chǔ)部105存儲(chǔ)利用對(duì)私鑰ks實(shí)施第二橢圓曲線Ea上的 橢圓純量乘運(yùn)算轉(zhuǎn)換私鑰ks而成的轉(zhuǎn)換后私鑰KST (=ks*Pa)。轉(zhuǎn)換后私 鑰KST由表生成裝置20生成。
(6) 程序存儲(chǔ)部106
程序存儲(chǔ)部106存儲(chǔ)有簽名生成程序110。
如圖4所示,簽名生成程序110包括散列值生成模塊121、隨機(jī)數(shù)生 成模塊122、選擇模塊123、隨機(jī)元生成模塊124、轉(zhuǎn)換模塊125、主要運(yùn) 算模塊126、逆轉(zhuǎn)換模塊127、乘法運(yùn)算模塊128、除法運(yùn)算模塊129以及 簽名數(shù)據(jù)生成模塊130。
本程序?qū)ψ鳛檩斎氲南輸出m的簽名數(shù)據(jù)S (= (r, s))。
各模塊是組合機(jī)械語言形式的多個(gè)指令代碼而構(gòu)成的計(jì)算機(jī)程序。上 述機(jī)械語言形式是由處理器101解碼執(zhí)行的形式。 (6-1)散列值生成模塊121
散列值生成模塊121從消息接受裝置30接受作為輸入的消息m,對(duì)接 受的消息m實(shí)施散列函數(shù),計(jì)算消息m的散列值h。散列函數(shù)例如是SHA-l。
散列值生成模塊121將散列值h輸出到轉(zhuǎn)換模塊125。 (6-2)隨機(jī)數(shù)生成模塊122
隨機(jī)數(shù)生成模塊122生成len比特的隨機(jī)的正整數(shù)(隨機(jī)數(shù))u,將生 成的隨機(jī)數(shù)u輸出到選擇模塊123。 (6-3)選擇模塊123
選擇模塊123從隨機(jī)數(shù)生成模塊122接受隨機(jī)數(shù)u,將接受的隨機(jī)數(shù)u 轉(zhuǎn)換成比特表現(xiàn)。
選擇模塊123針對(duì)轉(zhuǎn)換成比特表現(xiàn)的隨機(jī)數(shù)u-u—0+U_lx2+u_2x2A2 + ...+u_ (len—1) x2A (len—l),從表存儲(chǔ)部102中選擇PP— (u—0, 0)、
PP_ (u_l, 1)、 PP— (u一2, 2)、…、PP_ (u_ (len—l), len—l)(在此, 相對(duì)于i-O、 1、 2、 ...、 len—1, uj二0或者l)。
在此,將u—k中的下標(biāo)k (k=0、 1、 ...、 len—1)的值與表存儲(chǔ)部102 中存儲(chǔ)的表的表名稱對(duì)應(yīng)。B卩,u—0與表0對(duì)應(yīng),uj與表l對(duì)應(yīng),...,u— len—l與表len—l對(duì)應(yīng)。
選擇模塊123將選擇出的PP— (u—0, 0)、 PP— (u_l, 1)、 PP— (u_2,
2).....PP— (u— (len—l), len—1)輸出到隨機(jī)元生成模塊124。
(64)隨機(jī)元生成模塊124
隨機(jī)元生成模塊124從選擇模塊123接受len個(gè)元對(duì)PP一 (u_i, i)== (P— (u_i, i), Pa— (u_i, i)),使用由公開參數(shù)存儲(chǔ)部104存儲(chǔ)的橢圓曲 線E的參數(shù)a、 b、素?cái)?shù)p以及橢圓曲線E上的基點(diǎn)P,在橢圓曲線E上對(duì) 所接受的元對(duì)中分別包含的P一 (u_i, i)進(jìn)行加法運(yùn)算,從而計(jì)算出Pk (= (v一 (u—0, 0) *P+v— (u—1, 1) *P+...+v_ (u—len—1, len—l) *P)(在 此,i=0、 1、 2、 "、 len—1)。另夕卜,要注意Pk= (v—(u_0, 0) +v_(u—l, 1) +...+v— (u一 (len—1), len—1)) *P。
隨機(jī)元生成模塊124使用由公開參數(shù)存儲(chǔ)部104存儲(chǔ)的橢圓曲線Ea 的參數(shù)aa、 ba、合數(shù)n,在橢圓曲線Ea上對(duì)Pa— (u_i, i) modn (i=0、 1、 2、…、len—l)進(jìn)行加法運(yùn)算,Pakmodn (= (v_ (u_0, 0) *Pa+v_ (u_l, 1) *Pa+...+v— (u_len—l, len—1) *Pa))。在此,要注意Pak-(v— (u一O, 0) +v_ (u—1, 1) +..,+v_ (u_ (len—l), len—l)) *Pa。
隨機(jī)元生成模塊124將計(jì)算出的Pk輸出到主要運(yùn)算模塊126,將計(jì)算 出的Pak輸出到逆轉(zhuǎn)換模塊127。 (6-5)轉(zhuǎn)換模塊125 轉(zhuǎn)換模塊125若從散列值生成模塊121接受散列值h,則使用由公開 參數(shù)存儲(chǔ)部104存儲(chǔ)的橢圓曲線Ea的參數(shù)aa、 ba、合數(shù)n、橢圓曲線Ea 上的點(diǎn)Pa以及接受的散列值h,計(jì)算hPa-MPamodn。
轉(zhuǎn)換模塊125將計(jì)算出的hPa輸出到主要運(yùn)算模塊126。
(6-6)主要運(yùn)算模塊126 主要運(yùn)算模塊126從隨機(jī)元生成模塊124接受Pk,從轉(zhuǎn)換模塊125接 受hPa。
主要運(yùn)算模塊126計(jì)算r=x (Pk) modq。在此,x (Pk)表示Pk的 x坐標(biāo)o
主要運(yùn)算模塊126使用由轉(zhuǎn)換后私鑰存儲(chǔ)部105存儲(chǔ)的轉(zhuǎn)換后私鑰 KST、由公開參數(shù)存儲(chǔ)部104存儲(chǔ)的橢圓曲線Ea的參數(shù)aa、 bb、合數(shù)n, 在橢圓曲線Ea上計(jì)算出r*KST,并與hPa進(jìn)行橢圓曲線Ea上的加法運(yùn)算, 成為Qa=r*KST+hPa。
主要運(yùn)算模塊126將計(jì)算出的r輸出到簽名數(shù)據(jù)生成模塊130,將計(jì)算 出的Qa輸出到逆轉(zhuǎn)換模塊127。 (6-7)逆轉(zhuǎn)換模塊127
逆轉(zhuǎn)換模塊127從隨機(jī)元生成模塊124接受Pak,從主要運(yùn)算模塊126 接受Qa。
逆轉(zhuǎn)換模塊127使用由秘密參數(shù)存儲(chǔ)部103存儲(chǔ)的素?cái)?shù)pl,計(jì)算Qa 相對(duì)于Pamodpl的離散對(duì)數(shù)cQ和Pak相對(duì)于Pamodpl的離散對(duì)數(shù)ck。 逆轉(zhuǎn)換模塊127將計(jì)算出的離散對(duì)數(shù)cQ、ck輸出到乘法運(yùn)算模塊128。 首先,表示求出Qa的離散對(duì)數(shù)cQ時(shí)的處理。 (步驟S20)計(jì)算Qal-Qamodpl, Pal=Pamodpl。 (步驟S21 )計(jì)算Qal相對(duì)于Pal的離散對(duì)數(shù)cQ(即滿足Qal =cQ*Pal 的cQ)o
接著,表示求出Pak的離散對(duì)數(shù)ck時(shí)的處理。 (步驟S30)計(jì)算ckl-Pakmodpl, Pal=Pamodpl。 (步驟S31)計(jì)算ckl相對(duì)于Pal的離散對(duì)數(shù)ck (即滿足ckl=ck*Pal 的ck)。
在此,在步驟S21和S31中計(jì)算出的離散對(duì)數(shù)cQ和ck是異常橢圓曲 線上的離散對(duì)數(shù)問題的解。
解異常橢圓曲線上的離散對(duì)數(shù)問題的方法在非專利文獻(xiàn)3的88~91頁 中有詳細(xì)記載。由于計(jì)算方法記載在該文獻(xiàn)中,因此在此省略說明。
另外,設(shè)逆轉(zhuǎn)換模塊127是為了使處理內(nèi)容的解析變得困難而通過硬 件對(duì)策或軟件對(duì)策在具有防篡改性的區(qū)域執(zhí)行的模塊。 (6-8)乘法運(yùn)算模塊128
乘法運(yùn)算模塊128若從逆轉(zhuǎn)換模塊127接受離散對(duì)數(shù)cQ、 ck,則生成 隨機(jī)數(shù)P。
乘法運(yùn)算模塊128使用由公開參數(shù)存儲(chǔ)部104存儲(chǔ)的橢圓曲線E上的 基點(diǎn)P的級(jí)數(shù)q,將生成的P與離散對(duì)數(shù)cQ和ck相乘,計(jì)算cQ' =cQX Pmodq, ck' =ckX|3modq。
乘法運(yùn)算模塊128將計(jì)算出的cQ' 、 ck'輸出到除法運(yùn)算模塊129。 另外,設(shè)乘法運(yùn)算模塊128為了使處理內(nèi)容的解析變得困難而通過硬 件對(duì)策或軟件對(duì)策在具有防篡改性的區(qū)域來執(zhí)行。 (6-9)除法運(yùn)算模塊129
除法運(yùn)算模塊129從乘法運(yùn)算模塊128接受cQ' 、 ck'。
除法運(yùn)算模塊129計(jì)算作為ck'的基于mod q的逆元的cki。在此, 滿足ckiXck' =lmodq。
除法運(yùn)算模塊129將cki和cQ'相乘并進(jìn)行mod q,求出 s==cki XcQ' modq。逆元的計(jì)算在非專利文獻(xiàn)2中有詳細(xì)記載。
除法運(yùn)算模塊129將計(jì)算出的s輸出到簽名數(shù)據(jù)生成模塊130。 (6-10)簽名數(shù)據(jù)生成模塊130
簽名數(shù)據(jù)生成模塊130從主要運(yùn)算模塊126接受r,從除法運(yùn)算模塊 129接受s。
簽名數(shù)據(jù)生成模塊130將從主要運(yùn)算模塊126接受的r和從除法運(yùn)算 模塊129接受的s作為一對(duì),生成簽名數(shù)據(jù)S- (r, s)。
簽名數(shù)據(jù)生成模塊130將散列值生成模塊121接受的消息m和生成的 簽名數(shù)據(jù)S輸出到簽名數(shù)據(jù)發(fā)送裝置40。
1.4表生成裝置20的結(jié)構(gòu)
在此,說明表生成裝置20的結(jié)構(gòu)。
如圖5所示,表生成裝置20包括公開參數(shù)存儲(chǔ)部201 、隨機(jī)數(shù)生成部 202、群運(yùn)算部203以及存儲(chǔ)處理部204。 (1)公開參數(shù)存儲(chǔ)部201
公開參數(shù)存儲(chǔ)部201分別存儲(chǔ)有橢圓曲線E的方程式y(tǒng)A2=XA3+axx +b的變量a、 b、素?cái)?shù)p、橢圓曲線E上的基點(diǎn)P及其級(jí)數(shù)q、橢圓曲線 Ea的方程式,2-xA3+aaxx+ba的aa、 ba、合數(shù)n以及橢圓曲線Ea上的 點(diǎn)Pa,來作為參數(shù)。在此,存儲(chǔ)點(diǎn)是指存儲(chǔ)點(diǎn)的坐標(biāo)。
(2) 隨機(jī)數(shù)生成部202
隨機(jī)數(shù)生成部202生成2xlen個(gè)len比特的隨機(jī)數(shù)v— (i, j) (i=0或 者l, j=0、 1、…、len—l)。
隨機(jī)數(shù)生成部202生成1個(gè)len比特的隨機(jī)數(shù)ks (其中,0<ks<q)。另 外,要注意隨機(jī)數(shù)生成部202生成的隨機(jī)數(shù)ks是私鑰。
(3) 群運(yùn)算部203
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線E的參數(shù)a、 b、素?cái)?shù)p以及基點(diǎn)P,計(jì)算與隨機(jī)數(shù)L(i, j)(i-O或者l, j=0、 1、...、 len—l)相對(duì)應(yīng)的純量倍點(diǎn)v一 (i, j) *P。
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線Ea的參數(shù) aa、 bb、合數(shù)n以及橢圓曲線Ea上的點(diǎn)Pa,計(jì)算與隨機(jī)數(shù)7_ (i, j) (i= 0或者1, j=0、 1.....len—l)相對(duì)應(yīng)的純量倍點(diǎn)v— (i, j) *Pa。
群運(yùn)算部203使用生成的各純量倍點(diǎn)v一 (i, j) * 和純量倍點(diǎn)、(i, j) *Pa,生成圖3所示的表T101、 T102、…、T103。由此,群運(yùn)算部203 生成2xlen個(gè)元對(duì)。
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線Ea的參數(shù) aa、 bb、合數(shù)n以及橢圓曲線Ea上的點(diǎn)Pa,計(jì)算對(duì)隨機(jī)數(shù)ks的純量倍點(diǎn) KST=ks*Pa。
另外,要注意計(jì)算出的純量倍點(diǎn)KST是轉(zhuǎn)換后私鑰。
(4) 存儲(chǔ)處理部204
存儲(chǔ)處理部204將由群運(yùn)算部203生成的表TlOl、 T102、 ...、 T103 存儲(chǔ)到簽名生成裝置10的表存儲(chǔ)部102。由此,存儲(chǔ)處理部204可將元對(duì) (v_ (i, j) *P, v一 (i, j) *Pa) "=0或者1, j=0、 1、…、len—l)存 儲(chǔ)到簽名生成裝置10的表存儲(chǔ)部102。
存儲(chǔ)處理部204將由群運(yùn)算部203計(jì)算出的KST (=ks*Pa)存儲(chǔ)到簽 名生成裝置10的轉(zhuǎn)換后私鑰存儲(chǔ)部105。
1.5簽名生成裝置10的動(dòng)作
在此,說明由簽名生成裝置10進(jìn)行的簽名數(shù)據(jù)的生成動(dòng)作。另外,設(shè) 在表存儲(chǔ)部102中預(yù)先通過表生成裝置20存儲(chǔ)len— 1個(gè)表T101 、T102、...、 T103,在轉(zhuǎn)換后私鑰存儲(chǔ)部105中預(yù)先通過表生成裝置20存儲(chǔ)轉(zhuǎn)換后私鑰
KST。
(1) 動(dòng)作概要
簽名生成裝置IO通過處理器101從存儲(chǔ)于程序存儲(chǔ)部106的簽名生成 程序110中一個(gè)一個(gè)地讀出計(jì)算機(jī)指令進(jìn)行解釋,根據(jù)該解釋結(jié)果,讀出 表存儲(chǔ)部102、秘密參數(shù)存儲(chǔ)部103、公開參數(shù)存儲(chǔ)部104以及轉(zhuǎn)換后私鑰 存儲(chǔ)部105,同時(shí)生成對(duì)消息m的簽名數(shù)據(jù)S。簽名數(shù)據(jù)S的生成處理的 具體動(dòng)作將在后面說明。
(2) 簽名生成處理的動(dòng)作
在此,使用圖6和圖7所示的流程圖說明生成簽名數(shù)據(jù)S的簽名生成 處理的動(dòng)作。
散列值生成模塊121從消息接受裝置30接受作為輸入的消息m(步驟 S100),計(jì)算接受的消息m的散列值h (步驟S105)。
隨機(jī)數(shù)生成模塊122生成len比特的正整數(shù)(隨機(jī)數(shù))u (步驟SllO)。
選擇模塊123根據(jù)隨機(jī)數(shù)u的比特表現(xiàn)(U=u_0+U_lx2+U_2x2A2+... +u— (len—l) x2A (len—l)(相對(duì)于i二O、 1、 2、…、len—l, u—i-O或 者1),選擇表存儲(chǔ)部102中存儲(chǔ)的元對(duì)PP_ (u_0, 0)、 PP_ (u_l, 1)、 PP_ (u_2, 2)、…、PP— (u一 (len—l), len—l)(步驟S115)。
隨機(jī)元生成模塊124對(duì)由選擇模塊123選擇出的PP一 (u_i, i) = (P_
(u一i, i), Pa— (u_i, i)) (i-O、 1、 2.....len—1),使用公開參數(shù)存儲(chǔ)
部104中存儲(chǔ)的橢圓曲線E的參數(shù)a、 b、素?cái)?shù)p、橢圓曲線E上的基點(diǎn)P,
在橢圓曲線E上將P— (u—i, i) (i=0、 1、 2.....len—l)相加,從而計(jì)
算Pk (= (v_ (u_0, 0) *P+v— (u—1, 1) *P+...+v_ (ujen—l, len— 1) *P)(步驟S120)。
隨機(jī)元生成模塊124使用公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線Ea 的參數(shù)aa、 ba、合數(shù)n,在橢圓曲線Ea上將Pa— (u_i, i) modn (i-l、 2、…、len—l)相加,從而計(jì)算Pak (= (v_ (u—0, 0) *Pa+v_ (u—1, 1) *Pa+...+v_ (u—len—l, len—l) *Pa)(步驟S125)。
轉(zhuǎn)換模塊125使用公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線Ea的參數(shù) aa、 ba、合數(shù)n、橢圓曲線Ea上的點(diǎn)Pa以及散列值h,計(jì)算hPa=h*Pamod n (步驟S130)。
主要運(yùn)算模塊126計(jì)算r-x (Pk) modq (步驟S135)。在此,x (Pk) 表示Pk的x坐標(biāo)。
主要運(yùn)算模塊126使用轉(zhuǎn)換后私鑰存儲(chǔ)部105中存儲(chǔ)的轉(zhuǎn)換后私鑰 KST、以及公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線Ea的參數(shù)aa、 bb、合數(shù) n,在橢圓曲線Ea上計(jì)算^KST (步驟S140)。
主要運(yùn)算模塊126通過與hPa進(jìn)行橢圓曲線Ea上的加法運(yùn)算,計(jì)算 Qa=r*KST+hPa (步驟S145)。
逆轉(zhuǎn)換模塊127使用秘密參數(shù)存儲(chǔ)部103中存儲(chǔ)的素?cái)?shù)pl,計(jì)算Qa 相對(duì)于Pamodpl的離散對(duì)數(shù)cQ (步驟S150)。
逆轉(zhuǎn)換模塊127使用秘密參數(shù)存儲(chǔ)部103中存儲(chǔ)的素?cái)?shù)pl,計(jì)算Pak 相對(duì)于Pamodpl的離散對(duì)數(shù)ck (步驟S155)。
乘法運(yùn)算模塊128生成隨機(jī)數(shù)卩(步驟S160)。
乘法運(yùn)算模塊128使用公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線E上的 基點(diǎn)P的級(jí)數(shù)q、在步驟S150中計(jì)算出的離散對(duì)數(shù)cQ以及隨機(jī)數(shù)p,計(jì) 算cQ' -cQX卩modq (步驟S165)。
乘法運(yùn)算模塊128使用公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線E上的 基點(diǎn)P的級(jí)數(shù)q、在步驟S155中計(jì)算出的離散對(duì)數(shù)ck以及隨機(jī)數(shù)p,計(jì)算 ck' -ckX卩modq (步驟S170)。
除法運(yùn)算模塊129計(jì)算在步驟S170中計(jì)算出的ck'基于mod q的逆 元即cki (步驟S175)。在此,cki是滿足ckiXck' 二lmodq的值。
除法運(yùn)算模塊129使用公開參數(shù)存儲(chǔ)部104中存儲(chǔ)的橢圓曲線E上的 基點(diǎn)P的級(jí)數(shù)q、在步驟S175中計(jì)算出的cki以及在步驟S165中計(jì)算出的 cQ',計(jì)算s二ckiXcQ' mod q (步驟S180)。
簽名數(shù)據(jù)生成模塊130生成將在步驟S135中生成的r和在步驟S180 中生成的s作為一對(duì)的簽名數(shù)據(jù)S- (r, s)(步驟S185)。
簽名數(shù)據(jù)生成模塊130將散列值生成模塊121接受的消息m和生成的 簽名數(shù)據(jù)S輸出到簽名數(shù)據(jù)發(fā)送裝置40。
1.6表生成裝置20的動(dòng)作
在此,使用圖8所示的流程圖說明由表生成裝置20進(jìn)行的表和轉(zhuǎn)換后 私鑰的生成動(dòng)作。 隨機(jī)數(shù)生成部202生成2Xlen個(gè)len比特的隨機(jī)數(shù)v_ (i, j) (i=0、 1, j=0、 1、…、len—l)(步驟S200)。
隨機(jī)數(shù)生成部202生成1個(gè)len比特的隨機(jī)數(shù)(私鑰)ks (步驟S205)。 其中,ks是滿足(Xks〈q的數(shù)。
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線E的參數(shù)a、
b、素?cái)?shù)p、基點(diǎn)P,計(jì)算與隨機(jī)數(shù)v— (i, j) (i=0、 1, j=0、 1.....len
—1)相對(duì)應(yīng)的純量倍點(diǎn)v— (i, j) *P (步驟S210)。
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線Ea的參數(shù) aa、 bb、合數(shù)n以及橢圓曲線Ea上的點(diǎn)Pa,計(jì)算與隨機(jī)數(shù)v— (i, j) (i= 0、 l,j=0、 1.....len—1)相對(duì)應(yīng)的純量倍點(diǎn)v—(i, j) *Pa (步驟S215)。
群運(yùn)算部203使用生成的各純量倍點(diǎn)v— (i, j) *P、純量倍點(diǎn)v— (i, j) *Pa,生成len個(gè)表T101、 T102、…、T103 (步驟S220)。
群運(yùn)算部203使用公開參數(shù)存儲(chǔ)部201中存儲(chǔ)的橢圓曲線Ea的參數(shù) aa、 bb、合數(shù)n以及橢圓曲線Ea上的點(diǎn)Pa,計(jì)算對(duì)隨機(jī)數(shù)ks的純量倍點(diǎn) (轉(zhuǎn)換后私鑰)KST=ks*Pa (步驟S225)。
存儲(chǔ)處理部204將在步驟S220中生成的表T101、 T102.....T103存
儲(chǔ)到簽名生成裝置10的表存儲(chǔ)部102,將在步驟S225中計(jì)算出的KST(= ks*Pa)存儲(chǔ)到簽名生成裝置10的轉(zhuǎn)換后私鑰存儲(chǔ)部105 (步驟S230)。
由此,存儲(chǔ)處理部204可將元對(duì)(v_ (i, j) *P, v_ (i, j) *Pa) (i =0或者1, j=0、 1、…、len—l)存儲(chǔ)到簽名生成裝置10的表存儲(chǔ)部102。
1.7實(shí)施方式的動(dòng)作驗(yàn)證
在此,以下表示上述實(shí)施方式中的簽名生成程序110生成與在以往的 橢圓DSA簽名方式的簽名生成中生成的簽名相同的簽名的情況。
在簽名生成程序110中,隨機(jī)元生成模塊124計(jì)算隨機(jī)的點(diǎn)Pk。并且, 在簽名生成程序110中,隨機(jī)元生成模塊124計(jì)算超級(jí)異常橢圓曲線Ea上 的Pak。
在此,表存儲(chǔ)部102的元對(duì)中包含的橢圓曲線E上的點(diǎn)和超級(jí)異常橢 圓曲線Ea上的點(diǎn)分別成為對(duì)點(diǎn)P、點(diǎn)Pa的離散對(duì)數(shù)相同的值。B卩,由選 擇模塊123選擇元對(duì),由隨機(jī)元生成模塊124在各自的橢圓曲線E、 Ea上 將選擇出的元對(duì)中包含的點(diǎn)相加,因此,Pk相對(duì)于P的離散對(duì)數(shù)和Pak相
對(duì)于Pa的離散對(duì)數(shù)成為相同的值(在此是L(uJ), 0) +v—(u_l, 1)+... +v_ (ujen—l, len—l))。將該離散對(duì)數(shù)視為以往的橢圓DSA簽名方式 的步驟S2中生成的隨機(jī)數(shù)k,從而簽名生成程序IIO生成的S= (r, s) 與在以往的橢圓DSA簽名方式的簽名生成中生成的簽名S相同。
以下表示簽名生成程序110生成的S= (r, s)與在以往的橢圓DSA 簽名方式的簽名生成中生成的簽名S相同的情況。
考慮點(diǎn)Qa相對(duì)于點(diǎn)Pa的離散對(duì)數(shù)cQ。如上所述,Qa=r*KST+hPa, KST=ks *Pa, hPa=h *Pa。由此可知,Qa= (rXks+h) *Pa。因此,點(diǎn) Qa相對(duì)于點(diǎn)Pa的離散對(duì)數(shù)cQ成為cQ=rXks+h。此夕卜,點(diǎn)Pak相對(duì)于 點(diǎn)Pa的離散對(duì)數(shù)ck成為ck=k。
以下,表示其理由。
由上述所示的步驟S30, ckl=Pakmodpl, Pal=Pamodpl,由上述 所示的步驟S31, ckl=ck*Pal,因此,ckl=Pakmodpl=ck*Pamodpl。 另一方面,通過Pak的計(jì)算方法,Pak=k *Pa mod n。在此,n=plXp2, 因此,成為(Pak mod n) mod pi =Pak mod pi , ckl =Pak mod pi =k *Pa mod pl。因此,通過該式,ckl=ck*Pal=ck*Pamodpl=k*Pamodpl。通過 該式可知,成為ck=k。
如上述(6—9)所示,由于形成s-ckiXcQ' modq=cQ' /ck' mod q=cQXp/ (ckxp) modq= (rXks+h) /kmodq,因此,除法運(yùn)算模塊 129計(jì)算出在以往的橢圓DSA簽名方式的簽名生成的步驟S4中求出的值s。
此外,由簽名生成程序110的主要運(yùn)算模塊126計(jì)算出的值r與以往 的橢圓DSA簽名方式的簽名生成相同,是點(diǎn)P的k倍點(diǎn)。
因此,由主要運(yùn)算模塊126計(jì)算出的值r和由除法運(yùn)算模塊129計(jì)算 出的值s的組與在以往的橢圓DSA簽名方式的簽名生成中生成的簽名S相 同。
由以上可知,實(shí)施方式的簽名生成程序IIO可正確地進(jìn)行簽名生成。 1.8實(shí)施方式的效果
當(dāng)秘密參數(shù)存儲(chǔ)部103、簽名生成程序110的逆轉(zhuǎn)換模塊127和乘法 運(yùn)算模塊128解析困難的情況下,解析者不知道作為n的因數(shù)的pl、 p2, 因此,無法解開超級(jí)異常橢圓曲線中的離散對(duì)數(shù)問題。解析者雖然可解析
轉(zhuǎn)換后私鑰KST和Pak,但無法解開超級(jí)異常橢圓曲線中的離散對(duì)數(shù)問題, 因此,無法根據(jù)它們求出私鑰ks和Pak的離散對(duì)數(shù)k。
在此,以下說明設(shè)計(jì)無法求出Pak的離散對(duì)數(shù)k那樣的系統(tǒng)的理由。 如果解析者能夠知道k,則r、 s、 h以及q也能夠被解析者知道,因此,解 析者能夠由s- (rXks+h) /kmodq求出私鑰ks。因此,需要設(shè)計(jì)無法求 出Pak的離散對(duì)數(shù)k那樣的系統(tǒng)。
此外,在以往的橢圓DSA簽名方式的簽名生成中,不僅需要使私鑰 ks秘密,還需要使隨機(jī)數(shù)k秘密。
這是因?yàn)椋礹、 r、 s能夠被解析者(攻擊者)知道,并且,當(dāng)被知 道隨機(jī)數(shù)k時(shí),可通過步驟S4求出私鑰ks。
因此,本發(fā)明在使用隨機(jī)數(shù)k和私鑰ks的步驟S2和4中,使解析者 的解析變得困難。
在本發(fā)明中,如上所述,為了使步驟S4的解析變得困難,通過利用采 用超級(jí)異常橢圓的同態(tài)型轉(zhuǎn)換,將私鑰ks和隨機(jī)數(shù)k轉(zhuǎn)換成超級(jí)異常橢圓 上的點(diǎn),使得解析者無法解析。從而解析者無法知道私鑰ks,因此,實(shí)施 方式的簽名生成系統(tǒng)是安全的。
在此,使用圖9說明以往的橢圓DSA簽名方式和本發(fā)明的橢圓DSA 簽名方式的對(duì)應(yīng)。
圖9表示本發(fā)明的橢圓DSA簽名方式的動(dòng)作中與以往的橢圓DSA簽 名方式的簽名生成中的步驟S4相對(duì)應(yīng)的動(dòng)作部分。
圖9中由虛線包圍的處理群310對(duì)應(yīng)于圖6所示的步驟S140。在此, 處理群310由轉(zhuǎn)換后私鑰存儲(chǔ)部105和計(jì)算r*KST的處理群301構(gòu)成。
處理群311對(duì)應(yīng)于步驟S130。在此,處理群311包括公開參數(shù)存儲(chǔ)部 104和計(jì)算hPa的處理群302。
將處理群310和處理群311的結(jié)果相加的處理群303對(duì)應(yīng)于步驟S145。
計(jì)算離散對(duì)數(shù)問題cQ的處理群304對(duì)應(yīng)于步驟S150,計(jì)算離散對(duì)數(shù) ck的處理群305對(duì)應(yīng)于步驟S155。
將卩與處理群304和305的計(jì)算結(jié)果分別相乘的處理群306對(duì)應(yīng)于步 驟S160 S170。
并且,計(jì)算簽名數(shù)據(jù)S- (r, s)中包含的數(shù)據(jù)s的處理群307對(duì)應(yīng)于
步驟S175、 S180。
處理群320在可解析的區(qū)域執(zhí)行,如上所述,處理群321為了使處理 內(nèi)容的解析變得困難,通過硬件對(duì)策或軟件對(duì)策在具有防篡改性的區(qū)域執(zhí) 行。
在此,如上所述,私鑰ks被預(yù)先轉(zhuǎn)換成KST (=ks*Pa)并進(jìn)行存儲(chǔ)。 私鑰ks自身不會(huì)在進(jìn)行簽名生成時(shí)出現(xiàn),因此解析者無法知道私鑰ks。此 外,隨機(jī)數(shù)k不會(huì)以原值在可解析的區(qū)域出現(xiàn)。隨機(jī)數(shù)k在可解析的區(qū)域 被轉(zhuǎn)換成超級(jí)異常橢圓上的點(diǎn),因此解析變得困難。
此外,在利用采用超級(jí)異常橢圓的同態(tài)型轉(zhuǎn)換時(shí),需要異常橢圓Ea 中的WP以取代隨機(jī)數(shù)k,并且,為了計(jì)算k,需要有采用橢圓DSA簽名 方式進(jìn)行簽名的橢圓E的k*Pk和異常橢圓Ea中的k*Pa。
因此,本發(fā)明使用表存儲(chǔ)部102、隨機(jī)數(shù)生成模塊122、選擇模塊123 以及隨機(jī)元生成模塊124,不生成并使用k,而計(jì)算出l^P和l^Pa。由此, 在由以往的橢圓DSA簽名方式的步驟S2求出R(-1^P)時(shí),隨機(jī)數(shù)k出 現(xiàn),但在本發(fā)明中,不出現(xiàn)隨機(jī)數(shù)k而計(jì)算出Pk (=k*P),因此,無法在 計(jì)算Pk時(shí)求出k。此外,根據(jù)計(jì)算結(jié)果求出k也變得困難。
以往,為了使解析私鑰ks和隨機(jī)數(shù)k變得困難,在執(zhí)行步驟S2和步 驟S4時(shí),需要實(shí)施硬件對(duì)策。但是,在本發(fā)明中,解開離散對(duì)數(shù)問題,對(duì) 使用解的動(dòng)作部分(處理群304、 305以及306)實(shí)施硬件對(duì)策以使解析變 得困難即可。由此,由于實(shí)施硬件對(duì)策的部分被限定,因此,簽名生成裝 置的安裝比以往更加容易。
此外,圖10表示以往的橢圓DSA簽名方式的簽名生成的各步驟和本 發(fā)明的簽名生成裝置10的構(gòu)成要素的動(dòng)作之間的對(duì)應(yīng)。另外,各構(gòu)成要素 間的連接線己在圖2和圖4中表示,因此在圖10中省略。
通過散列值生成模塊121可實(shí)現(xiàn)與步驟Sl同等的動(dòng)作。
在步驟S2中,通過由表存儲(chǔ)部102、隨機(jī)數(shù)生成模塊122、選擇模塊 123以及隨機(jī)元生成模塊124構(gòu)成的構(gòu)成群401,可實(shí)現(xiàn)與步驟S2同等的 動(dòng)作。
通過由主要運(yùn)算模塊126進(jìn)行的值r的計(jì)算,可實(shí)現(xiàn)與步驟S3同等的 動(dòng)作。
通過由轉(zhuǎn)換模塊125、主要運(yùn)算模塊126、逆轉(zhuǎn)換模塊127、乘法運(yùn)算 模塊128以及除法運(yùn)算模塊129構(gòu)成的構(gòu)成群402,可實(shí)現(xiàn)與步驟S4同等 的動(dòng)作。
通過簽名數(shù)據(jù)生成模塊130可實(shí)現(xiàn)與步驟S5同等的動(dòng)作。
此外,按照各模塊的動(dòng)作利用秘密參數(shù)存儲(chǔ)部103、公開參數(shù)存儲(chǔ)部 104以及轉(zhuǎn)換后私鑰存儲(chǔ)部105。
此外,由逆轉(zhuǎn)換模塊127和乘法運(yùn)算模塊128構(gòu)成的構(gòu)成群402,如 上所述是為了使解析變得困難而需要實(shí)施硬件對(duì)策的部分。
另外,為了使解析變得困難而實(shí)施硬件對(duì)策,但不限于此。只要是使 解析變得困難的對(duì)策,也可以是其他對(duì)策而不限于硬件對(duì)策。
1.9變形例
以上說明的實(shí)施方式是實(shí)施本發(fā)明的一例,本發(fā)明不限于該實(shí)施方式, 可在不脫離其要旨的范圍內(nèi)以各種方式來實(shí)施。例如,以下的情況也包含 在本發(fā)明中。
(1) 在實(shí)施方式中,將p、 q、 u的比特?cái)?shù)len設(shè)為160,但不限于此。 也可以設(shè)為大于160,例如192、 224。此外,將n的比特?cái)?shù)設(shè)為1024,但 不限于此。也可以設(shè)為大于1024,例如2048、 4096。
(2) 在實(shí)施方式中,是簽名生成程序的方式,但也可以將其設(shè)為加密 程序或解密程序。
(3) 在實(shí)施方式中,作為第二群使用橢圓曲線Ea上的群,但不限于 此。作為第二群也可以利用整數(shù)剩余環(huán)的乘法群或其他群。
此外,在實(shí)施方式中進(jìn)行橢圓曲線的純量倍運(yùn)算來轉(zhuǎn)換整數(shù),但不限 于此。作為轉(zhuǎn)換整數(shù)的運(yùn)算也可以使用群的冪運(yùn)算。在此,冪運(yùn)算是指群 的基本運(yùn)算、即求出在整數(shù)剩余環(huán)中進(jìn)行了整數(shù)次乘法運(yùn)算以及在橢圓曲 線上的群中進(jìn)行了整數(shù)次橢圓曲線加法運(yùn)算而得到的結(jié)果的運(yùn)算。因此, 整數(shù)剩余環(huán)的乘法群的冪運(yùn)算是冪乘運(yùn)算,橢圓曲線上的群的冪運(yùn)算是橢 圓曲線的純量倍運(yùn)算。在實(shí)施方式中,第二群Ga是Ea (GF (pl)) XEa (GF (p2)),離散對(duì)數(shù)問題是在該"子群"即Ea (GF (pl))中解開,但 在整數(shù)剩余環(huán)Z/nZ的乘法群或其他群的"子群"中也可以解開離散對(duì)數(shù)問 題。此外,也可以將第二群設(shè)為專利文獻(xiàn)3中的整數(shù)剩余環(huán)的乘法群。(4) 在上述實(shí)施方式中,第二群Ga設(shè)為相對(duì)于合數(shù)n (=plXp2) 的Z/nZ上的橢圓曲線上的群,但不限于此。另外,pl、 p2是互不相同的素 數(shù)。
第二群Ga也可以是相對(duì)于合數(shù)n (=plAmXp2)的Z/nZ上的橢圓曲 線上的群。其中,m是l以上的整數(shù)。在此,plAm表示pl的m次冪。
或者,第二群Ga也可以是相對(duì)于合數(shù)n (=plAmXp2)的Z/nZ上的 乘法群。其中,m是l以上的整數(shù)。此時(shí),第二群的子群也可以是Z/plAm Z上的乘法群。
(5) 在上述實(shí)施方式中,簽名生成裝置10利用隨機(jī)元生成模塊124 生成2個(gè)隨機(jī)元(Pk、 Pak),但不限于此。
隨機(jī)元生成模塊124也可以僅生成1個(gè)隨機(jī)元(例如Pk)。在該情況 下,簽名生成裝置10存儲(chǔ)2Xlen個(gè)P—(i, j)以取代2Xlen個(gè)元對(duì)(i=0、 1, j=0、 1、…、len—l)。簽名生成裝置10若生成len比特的隨機(jī)數(shù)u, 則使用生成的隨機(jī)數(shù)u計(jì)算第一群G的元Pk。計(jì)算方法與上述實(shí)施方式所 示的方法相同,因此,在此省略說明。由此,簽名生成裝置10可計(jì)算第一 群G的元Pk,以不讓第三者知道隨機(jī)數(shù)k。
或者,隨機(jī)元生成模塊124也可以生成2個(gè)以上的隨機(jī)元(Pk、 Pakl、 Pak2、…、Pakn) (n是l以上的整數(shù))。
(6) 在上述實(shí)施方式中,簽名生成裝置10中的選擇模塊123將由隨 機(jī)數(shù)生成模塊122生成的正整數(shù)u轉(zhuǎn)換成比特?cái)?shù)由len比特構(gòu)成的比特表 現(xiàn),選擇與各比特對(duì)應(yīng)的元對(duì),但不限于此。
選擇模塊123也可以根據(jù)由隨機(jī)數(shù)生成模塊122生成的正整數(shù)u,直 接求出元對(duì)。
此時(shí),表存儲(chǔ)部102對(duì)正整數(shù)1、 2、 3、,存儲(chǔ)元對(duì)(v—1*P, v_l*Pa)、 (v_2*P, v_2*Pa)、 (v—3*P, v—3*Pa)、…。
選擇模塊123從表存儲(chǔ)部102存儲(chǔ)的表中,選擇與由隨機(jī)數(shù)生成模塊 122生成的正整數(shù)u對(duì)應(yīng)的元對(duì)(v_u*P, v_u*Pa)。
隨機(jī)元生成模塊124對(duì)選擇出的元對(duì)(v_u*P, v_u*Pa),設(shè)為Pk= v_u*P, Pak=v_u*Pa。
以下的動(dòng)作與實(shí)施方式相同,因此在此省略說明。
以下說明另一個(gè)例子。
或者,表存儲(chǔ)部102存儲(chǔ)元對(duì)(v—1*P, v_l*Pa)、 (v—2*P, v_2*Pa)、 (v_3*P, v—3*Pa)、 (v_t*P, v_t*Pa)。 t是l以上的整數(shù)。
選擇模塊123按照以下方式選擇1個(gè)以上的元對(duì)。
選擇模塊123在正整數(shù)u是t以下的情況下,從表存儲(chǔ)部102存儲(chǔ)的 表中選擇元對(duì)(v_u*P, v_u*Pa)。
選擇模塊123在正整數(shù)u大于t的情況下,取得成為u=tl+t2+"- + tp的tl、 t2、、 tp。在此,p是2以上的整數(shù),tl、 t2、、 tp分別是t 以下的數(shù)。選擇模塊123從表存儲(chǔ)部102存儲(chǔ)的表中選擇與取得的tl、t2、…、 tp分別對(duì)應(yīng)的元對(duì)(v_tl*P, v_tl*Pa)、 (v_t2*P, v—t2*Pa)、、 (v_tp*P, v_tp*Pa)。
隨機(jī)元生成模塊124在選擇出的元對(duì)是1個(gè)的情況下,對(duì)選擇出的元 對(duì)(v_u*P, v_u*Pa),設(shè)為Pk-v—u*P, Pak=v—u*Pa。
隨機(jī)元生成模塊124在選擇出的元對(duì)是2個(gè)以上的情況下,對(duì)選擇出 的元對(duì)(v_tl*P, v_tl*Pa)、 (v_t2*P, v_t2*Pa)、、 (v—tp*P, v_tp*Pa), 在橢圓曲線E上將v一t"P、 v—t2*P、、 v—tp*P相加來計(jì)算Pk,在橢圓曲 線Ea上將v_tl*Pa、 v—t2*Pa、、 v_tp*Pa相加來計(jì)算Pak。
以后的動(dòng)作與實(shí)施方式相同,因此在此省略說明。 (7)在上述實(shí)施方式中,隨機(jī)元生成模塊124使用由選擇模塊123 選擇出的全部len個(gè)元對(duì)計(jì)算Pk和Pak,但不限于此。
隨機(jī)元生成模塊124也可以從選擇出的len個(gè)元對(duì)中選擇w個(gè)元對(duì), 使用選擇出的w個(gè)元對(duì)計(jì)算Pk和Pak。在此,w是2以上len以下的數(shù)。
例如,數(shù)w預(yù)先給出,隨機(jī)元生成模塊124從選擇出的len個(gè)元對(duì)中 隨機(jī)選擇w個(gè)元對(duì)。
此外,作為其他例子,隨機(jī)元生成模塊124從選擇出的len個(gè)元對(duì)中 既可以僅選擇與比特值"l"對(duì)應(yīng)的w個(gè)元對(duì),也可以僅選擇與比特值"0" 對(duì)應(yīng)的w個(gè)元對(duì)。
或者,隨機(jī)元生成模塊124也可以比較比特值是"1"的比特的個(gè)數(shù)和 比特值是"O"的比特的個(gè)數(shù),僅選擇與個(gè)數(shù)較多的比特t對(duì)應(yīng)的w個(gè)元對(duì)。
或者,數(shù)w預(yù)先給出,隨機(jī)元生成模塊124從選擇出的len個(gè)元對(duì)中
選擇上位比特w個(gè)元對(duì)。另外,隨機(jī)元生成模塊124也可以從選擇出的len 個(gè)元對(duì)中選擇下位比特w個(gè)元對(duì)。
在此,w是2以上len以下的數(shù),但w也可以是l以上len以下的數(shù)。 在w=l的情況下,隨機(jī)元生成模塊124對(duì)選擇出的元對(duì)(v一WP, v—u*Pa), 設(shè)為Pk=v_u*P, Pak=v—u*Pa。
(8) 本發(fā)明的分解組既可以是上述實(shí)施方式所示的表存儲(chǔ)部102的存 儲(chǔ)內(nèi)容,也可以是對(duì)每個(gè)正整數(shù)u的多個(gè)分解對(duì)(即元對(duì))、即對(duì)正整數(shù)u 的各比特選擇出的分解對(duì)的組合。
(9) 在上述實(shí)施方式中,簽名生成由簽名生成程序進(jìn)行生成,但不限于此。
簽名生成也可以由生成簽名的硬件進(jìn)行生成。
艮P,簽名生成程序中包含的各模塊也可以由實(shí)現(xiàn)上述說明的功能的單 元構(gòu)成。
(10) 具體而言,上述各裝置是由微處理器、ROM、 RAM、硬盤單元、 顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計(jì)算機(jī)系統(tǒng)。上述RAM或者硬盤單元 中存儲(chǔ)有計(jì)算機(jī)程序。通過上述微處理器按照上述計(jì)算機(jī)程序進(jìn)行動(dòng)作, 各裝置實(shí)現(xiàn)其功能。在此,為了實(shí)現(xiàn)預(yù)定的功能,計(jì)算機(jī)程序是組合了多 個(gè)表示對(duì)計(jì)算機(jī)的指令的指令代碼而構(gòu)成的。
(11) 構(gòu)成上述各裝置的構(gòu)成要素的一部分或者全部也可以由1個(gè)系 統(tǒng)LSI (Large Scale Integration:大規(guī)模集成電路)構(gòu)成。系統(tǒng)LSI是在1 個(gè)芯片上集成多個(gè)結(jié)構(gòu)部而制造出來的超多功能LSI,具體而言,是構(gòu)成為 包含微處理器、ROM、 RAM等的計(jì)算機(jī)系統(tǒng)。上述RAM中存儲(chǔ)有計(jì)算機(jī) 程序。通過上述微處理器按照上述計(jì)算機(jī)程序進(jìn)行動(dòng)作,系統(tǒng)LSI實(shí)現(xiàn)其 功能。
(12) 構(gòu)成上述各裝置的構(gòu)成要素的一部分或者全部也可以由可相對(duì) 于各裝置拆裝的IC卡或者單體的模塊構(gòu)成。上述IC卡或者上述模塊是由 微處理器、ROM、 RAM等構(gòu)成的計(jì)算機(jī)系統(tǒng)。上述IC卡或者上述模塊也 可以包含上述超多功能LSI。通過微處理器按照計(jì)算機(jī)程序進(jìn)行動(dòng)作,上述 IC卡或者上述模塊實(shí)現(xiàn)其功能。該IC卡或者該模塊也可以具有防篡改性。
(13) 本發(fā)明也可以是上述所示的方法。此外,既可以是利用計(jì)算機(jī)
實(shí)現(xiàn)這些方法的計(jì)算機(jī)程序,也可以是由上述計(jì)算機(jī)程序構(gòu)成的數(shù)字信號(hào)。 此外,本發(fā)明也可以是將上述計(jì)算機(jī)程序或者上述數(shù)字信號(hào)記錄到計(jì)
算機(jī)可讀取的記錄介質(zhì),例如軟盤、硬盤、CD-ROM、MO、DVD、DVD-ROM、 DVD-RAM、 BD (Blu-ray Disc)、半導(dǎo)體存儲(chǔ)器等。此外,也可以是這些 記錄介質(zhì)中記錄的上述計(jì)算機(jī)程序或者上述數(shù)字信號(hào)。
此外,本發(fā)明也可以是將上述計(jì)算機(jī)程序或者上述數(shù)字信號(hào)經(jīng)由電通 信線路、無線或者有線通信通路、以互聯(lián)網(wǎng)為代表的網(wǎng)絡(luò)、數(shù)據(jù)廣播等進(jìn) 行傳送。
此外,本發(fā)明是具有微處理器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng),上述存儲(chǔ)器存 儲(chǔ)有上述計(jì)算機(jī)程序,上述微處理器也可以按照上述計(jì)算機(jī)程序進(jìn)行動(dòng)作。
此外,也可以是通過將上述程序或者上述數(shù)字信號(hào)記錄并移送到上述 記錄介質(zhì),或者通過經(jīng)由上述網(wǎng)絡(luò)等移送上述程序或者上述數(shù)字信號(hào),來 由獨(dú)立的其他計(jì)算機(jī)系統(tǒng)實(shí)施。
(14)也可以是這些實(shí)施方式和變形例的組合。
2.總結(jié)
本發(fā)明的目的在于提供一種源代碼混淆方法,使攻擊者解析安裝有以 有限域上或橢圓曲線上的離散對(duì)數(shù)問題為安全性依據(jù)的簽名方式(例如 DSA簽名方式或ECDSA簽名方式)的程序變得困難。
以下表示本發(fā)明的特征。
(1)本發(fā)明是使簽名生成裝置執(zhí)行的簽名生成程序,上述簽名生成裝 置使用私鑰生成對(duì)消息的數(shù)字簽名,上述簽名生成裝置具有表存儲(chǔ)部, 存儲(chǔ)有多個(gè)元對(duì),該元對(duì)是屬于第一群G的第一元和屬于第二群Ga的第 二元的對(duì);程序存儲(chǔ)部,存儲(chǔ)有上述簽名生成程序;以及處理器,從上述 程序存儲(chǔ)部中存儲(chǔ)的上述簽名生成程序中 一個(gè)一個(gè)地讀出計(jì)算機(jī)指令進(jìn)行 解釋,按照該解釋結(jié)果進(jìn)行動(dòng)作,上述簽名生成程序包括整數(shù)生成模塊, 生成第一整數(shù);選擇模塊,根據(jù)上述第一整數(shù)從由上述表存儲(chǔ)部存儲(chǔ)的多 個(gè)上述元對(duì)中選擇多個(gè)上述元對(duì)進(jìn)行輸出;以及群運(yùn)算模塊,使用上述選 擇模塊輸出的多個(gè)上述對(duì),計(jì)算屬于上述第一群G的第三元和屬于上述第 二群Ga的第四元,上述第一元是對(duì)屬于上述第一群G的預(yù)先給出的元即 第一基本元P和作為預(yù)先給出的正整數(shù)的冪數(shù)進(jìn)行以上述冪數(shù)為冪的上述
第一基本元P在上述第一群G中的冪運(yùn)算而得到的元,上述第二元是對(duì)屬 于上述第二群Ga的預(yù)先給出的元即第二基本元Pa和作為預(yù)先給出的正整 數(shù)的冪數(shù)進(jìn)行以上述冪數(shù)為冪的上述第二基本元Pa在上述第二群Ga中的 冪運(yùn)算而得到的元。
(2) 在上述(1)的簽名生成程序中,也可以是,上述選擇模塊按照 上述第一整數(shù)的每個(gè)比特值選擇1個(gè)上述對(duì)。
(3) 在上述(2)的簽名生成程序中,也可以是,上述第三元是對(duì)上 述選擇模塊選擇出的上述對(duì)的每一個(gè)中包含的屬于上述第一群G的所有元 進(jìn)行上述第一群G的基本運(yùn)算而作為結(jié)果得到的上述第一群G的元,上述 第四元是對(duì)上述選擇模塊選擇出的上述對(duì)中的每一個(gè)中包含的屬于上述第 二群Ga的所有元進(jìn)行上述第二群Ga的基本運(yùn)算而作為結(jié)果得到的上述第 二群Ga的元。
(4) 在上述(1) (3)的任意一個(gè)所述的簽名生成程序中,也可以 是,上述簽名生成程序還包括轉(zhuǎn)換模塊,通過進(jìn)行上述第二群Ga上的冪 運(yùn)算,將整數(shù)轉(zhuǎn)換成屬于上述第二群的元;主要運(yùn)算模塊,進(jìn)行上述第二 群Ga上的基本運(yùn)算;以及逆轉(zhuǎn)換模塊,進(jìn)行上述第二群Ga或者上述第二 群Ga真實(shí)包含的上述第二群Ga的子群Sa中的上述轉(zhuǎn)換模塊進(jìn)行的轉(zhuǎn)換 的逆轉(zhuǎn)換。
(5) 在上述(1) ~ (4)的任意一個(gè)所述的簽名生成程序中,也可以 是,上述簽名生成裝置還具有存儲(chǔ)有轉(zhuǎn)換后私鑰的轉(zhuǎn)換后私鑰存儲(chǔ)部,上 述轉(zhuǎn)換后私鑰是根據(jù)上述私鑰和上述第二基本元生成的屬于上述第二群的 元,上述簽名生成程序還包括轉(zhuǎn)換后私鑰運(yùn)算模塊,使用上述轉(zhuǎn)換后私 鑰存儲(chǔ)部中存儲(chǔ)的轉(zhuǎn)換后私鑰,進(jìn)行上述第二群Ga的冪運(yùn)算。
(6) 在上述(1) (5)的任意一個(gè)所述的簽名生成程序中,也可以 是,上述第一群G和上述第二群Ga是整數(shù)剩余環(huán)的乘法群。
(7) 在上述(1)所述的簽名生成程序中,也可以是,上述第二群Ga 相對(duì)于使用2個(gè)素?cái)?shù)p、 q和正整數(shù)m表示的n-pAmXq,是Z/nZ的乘法 群(其中x、表示x的y次冪)。
(8) 在上述(7)所述的簽名生成程序中,也可以是,上述子群Sa 是Z/pAmZ的乘法群。
(9) 在上述(8)所述的簽名生成程序中,也可以是,上述正整數(shù)m是2。
(10) 在上述(1) (5)的任意一個(gè)所述的簽名生成程序中,也可 以是,上述第一群G是橢圓曲線的群,上述子群Sa是異常橢圓曲線的群。
(11) 在上述(1) (5)的任意一個(gè)所述的簽名生成程序中,也可 以是,上述第二群Ga是2個(gè)異常橢圓曲線的群的直積。
(12) 在上述(1) (5)、 (11)以及(12)的任意一個(gè)所述的簽名 生成程序中,也可以是,上述逆轉(zhuǎn)換模塊具有將屬于上述第二群Ga的元還 原成屬于上述子群Sa的元的還原單元。
(13) 本發(fā)明是使進(jìn)行群運(yùn)算的運(yùn)算裝置執(zhí)行的運(yùn)算程序,上述運(yùn)算 裝置具有表存儲(chǔ)部,存儲(chǔ)有多個(gè)屬于第一群G的第一元和屬于第二群Ga 的第二元的對(duì);程序存儲(chǔ)部,存儲(chǔ)有上述簽名生成程序;以及處理器,從
上述程序存儲(chǔ)部中存儲(chǔ)的上述簽名生成程序中 一個(gè)一個(gè)地讀出計(jì)算機(jī)指令
進(jìn)行解釋,按照該解釋結(jié)果進(jìn)行動(dòng)作,上述運(yùn)算程序包括整數(shù)生成模塊, 生成第一整數(shù);選擇模塊,根據(jù)上述第一整數(shù)從由上述表存儲(chǔ)部存儲(chǔ)的多 個(gè)上述對(duì)中選擇多個(gè)上述對(duì);以及群運(yùn)算模塊,使用上述選擇模塊選擇出 的多個(gè)上述對(duì),計(jì)算屬于上述第一群G的第三元和屬于上述第二群Ga的 第四元,上述第一元是對(duì)預(yù)先給出的屬于上述第一群G的元即第一基本元 P和作為預(yù)先給出的正整數(shù)的冪數(shù)進(jìn)行以上述冪數(shù)為冪的上述第一基本元 P在上述第一群G中的冪運(yùn)算而得到的元,上述第二元是對(duì)預(yù)先給出的屬 于上述第二群Ga的元即第二基本元Pa和作為預(yù)先給出的正整數(shù)的冪數(shù)進(jìn) 行以上述冪數(shù)為冪的上述第二基本元Pa在上述第二群Ga中的冪運(yùn)算而得 到的元。
(14) 本發(fā)明是使用私鑰生成對(duì)消息的數(shù)字簽名的簽名生成裝置,上 述簽名生成裝置具有表存儲(chǔ)部,存儲(chǔ)有多個(gè)屬于第一群G的第一元和屬 于第二群Ga的第二元的對(duì);整數(shù)生成部,生成第一整數(shù);選擇部,根據(jù)上 述第一整數(shù)從由上述表存儲(chǔ)部存儲(chǔ)的多個(gè)上述對(duì)中選擇多個(gè)上述對(duì);以及 群運(yùn)算部,使用上述選擇部選擇出的多個(gè)上述對(duì),計(jì)算屬于上述第一群G 的第三元和屬于上述第二群Ga的第四元,上述第一元是對(duì)預(yù)先給出的屬于 上述第一群G的元即第一基本元P和作為預(yù)先給出的正整數(shù)的冪數(shù)進(jìn)行以
上述冪數(shù)為冪的上述第一基本元P在上述第一群G中的冪運(yùn)算而得到的 元,上述第二元是對(duì)預(yù)先給出的屬于上述第二群Ga的元即第二基本元Pa 和作為預(yù)先給出的正整數(shù)的冪數(shù)進(jìn)行以上述冪數(shù)為冪的上述第二基本元Pa 在上述第二群Ga中的冪運(yùn)算而得到的元。
(15) 在上述(14)所述的簽名生成裝置中,也可以是,上述選擇部 按照上述第一整數(shù)的每個(gè)比特值選擇1個(gè)上述對(duì)。
(16) 在上述(14)或者(15)所述的簽名生成裝置中,也可以是, 上述第三元是對(duì)上述選擇部選擇出的上述對(duì)的每一個(gè)中包含的屬于上述第 一群G的所有元進(jìn)行上述第一群G的基本運(yùn)算而作為結(jié)果得到的上述第一 群G的元,上述第四元是對(duì)上述選擇部選擇出的上述對(duì)的每一個(gè)中包含的 屬于上述第二群Ga的所有元進(jìn)行上述第二群Ga的基本運(yùn)算而作為結(jié)果得 到的上述第二群Ga的元。
(17) 上述所示的簽名生成程序中的簽名方式以有限域上或橢圓曲線 上的離散對(duì)數(shù)問題為安全性依據(jù),因此,能夠使攻擊者解析變得困難,其 價(jià)值很大。
此外,上述所示的簽名生成裝置采用以有限域上或橢圓曲線上的離散 對(duì)數(shù)問題為安全性依據(jù)的簽名方式進(jìn)行簽名生成,因此,能夠使攻擊者解 析變得困難,其價(jià)值很大。
(18) 此外,本發(fā)明是以群G上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群 G上的基本元P實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算的運(yùn)算裝置,其特征在于, 預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解值,各分解值是 對(duì)基本元P實(shí)施以任意正整數(shù)為冪的冪運(yùn)算而計(jì)算出的群G上的元,上述 運(yùn)算裝置具有分解對(duì)存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上 述多個(gè)數(shù)中隨機(jī)選擇數(shù)ii,從上述分解值存儲(chǔ)單元中選擇與選擇出的數(shù)u 對(duì)應(yīng)的分解組;以及生成單元,對(duì)選擇出的分解組中包含的所有分解值實(shí) 施上述群G的基本運(yùn)算,生成冪元。
(19) 如以上說明那樣,根據(jù)本發(fā)明,不僅能夠隱蔽運(yùn)算中使用的值, 還能夠隱蔽運(yùn)算本身。
工業(yè)上的可利用性
構(gòu)成本發(fā)明的各裝置、各方法以及計(jì)算機(jī)程序在需要安全可靠地處理
信息的所有產(chǎn)業(yè)中,能夠在經(jīng)營上或持續(xù)反復(fù)地使用。此外,構(gòu)成本發(fā)明 的各裝置、各方法以及各計(jì)算機(jī)程序在電器設(shè)備制造產(chǎn)業(yè)中,能夠在經(jīng)營 上或持續(xù)反復(fù)地制造、銷售。
權(quán)利要求
1.一種簽名生成裝置,以群G和群Ga上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群G上的基本元P以及群Ga上的基本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息的數(shù)字簽名,其特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選擇與選擇出的數(shù)u對(duì)應(yīng)的分解組;生成單元,對(duì)選擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上述群G的基本運(yùn)算,生成第一冪元,對(duì)選擇出的分解組中包含的、且與上述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn)算,生成第二冪元;以及簽名單元,將生成的上述第一冪元和消息分別轉(zhuǎn)換成群Ga上的元,對(duì)轉(zhuǎn)換后的第一冪元、轉(zhuǎn)換后的消息以及上述第二冪元實(shí)施上述群Ga上的運(yùn)算,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。
2. 根據(jù)權(quán)利要求1所述的簽名生成裝置,其特征在于, 上述多個(gè)數(shù)分別是由長度為2以上的預(yù)定長度構(gòu)成的比特串所表現(xiàn)的數(shù),分解對(duì)按照由上述預(yù)定長度構(gòu)成的比特串的各比特值對(duì)應(yīng), 上述選擇單元將選擇出的上述數(shù)u轉(zhuǎn)換成由上述預(yù)定長度的比特串構(gòu)成的比特表現(xiàn),從上述分解值存儲(chǔ)單元中選擇由與各個(gè)比特的值相對(duì)應(yīng)的分解對(duì)構(gòu)成的上述分解組。
3. 根據(jù)權(quán)利要求2所述的簽名生成裝置,其特征在于, 上述生成單元,對(duì)按照每個(gè)比特值選擇出的分解對(duì)所構(gòu)成的上述分解組中包含的2個(gè) 以上的第一分解值,實(shí)施上述群G中的基本運(yùn)算,生成上述第一冪元, 對(duì)按照每個(gè)比特值選擇出的分解對(duì)所構(gòu)成的上述分解組中包含的、且與上述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值,實(shí)施上述群Ga中的 上述基本運(yùn)算,生成上述第二冪元。
4. 根據(jù)權(quán)利要求1所述的簽名生成裝置,其特征在于, 上述第一冪元包括2個(gè)以上的值, 上述簽名單元具有轉(zhuǎn)換部,將對(duì)上述消息的散列值作為冪,對(duì)上述基本元Pa實(shí)施群Ga 中的上述冪運(yùn)算,由此將上述散列值轉(zhuǎn)換成屬于上述群Ga的轉(zhuǎn)換后散列 值;第一運(yùn)算部,使用上述第一冪元中包括的1個(gè)值計(jì)算第一數(shù)據(jù);第二運(yùn)算部,對(duì)上述轉(zhuǎn)換后散列值實(shí)施上述群Ga上的基本運(yùn)算,計(jì)算 屬于上述群Ga的第三冪元;逆轉(zhuǎn)換部,在上述群Ga或者上述群Ga中真實(shí)包含的子群Sa中,對(duì) 上述第二冪元和上述第三冪元分別實(shí)施在上述轉(zhuǎn)換部中進(jìn)行的轉(zhuǎn)換的冪運(yùn) 算的逆運(yùn)算,由此求出第一離散對(duì)數(shù)和第二離散對(duì)數(shù);第三運(yùn)算部,使用上述第一離散對(duì)數(shù)和上述第二離散對(duì)數(shù)計(jì)算第二數(shù) 據(jù);以及數(shù)據(jù)生成部,生成由上述第一數(shù)據(jù)和上述第二數(shù)據(jù)的組構(gòu)成的數(shù)字簽名。
5. 根據(jù)權(quán)利要求4所述的簽名生成裝置,其特征在于, 上述簽名生成裝置還具有轉(zhuǎn)換后私鑰存儲(chǔ)單元,該轉(zhuǎn)換后私鑰存儲(chǔ)單元將私鑰作為冪,對(duì)上述基本元Pa實(shí)施上述群Ga的基本運(yùn)算,存儲(chǔ)有屬 于上述群Ga的轉(zhuǎn)換后私鑰,上述第二運(yùn)算部對(duì)下述運(yùn)算結(jié)果和上述轉(zhuǎn)換后散列值實(shí)施上述群Ga 上的基本運(yùn)算,來計(jì)算上述第三冪元,其中該運(yùn)算結(jié)果是針對(duì)上述轉(zhuǎn)換后 私鑰實(shí)施將上述第一數(shù)據(jù)作為冪的上述群Ga的冪運(yùn)算而得到的上述群Ga 上的元。
6. 根據(jù)權(quán)利要求5所述的簽名生成裝置,其特征在于, 上述群G和上述群Ga是整數(shù)剩余環(huán)的乘法群,上述群G和上述群Ga各自的基本運(yùn)算是對(duì)各元實(shí)施乘法運(yùn)算的乘法 運(yùn)算,上述群G和上述群Ga各自的冪運(yùn)算是將正整數(shù)作為冪數(shù)的冪乘運(yùn)算。
7. 根據(jù)權(quán)利要求6所述的簽名生成裝置,其特征在于,上述群Ga相對(duì)于使用2個(gè)素?cái)?shù)p、 q和正整數(shù)m表現(xiàn)的n=pAmX q, 是Z/nZ的乘法群,八是表示冪乘運(yùn)算的運(yùn)算符,X是表示乘法運(yùn)算的運(yùn)算 符,Z是整數(shù)環(huán),Z/nZ是整數(shù)剩余環(huán)。
8. 根據(jù)權(quán)利要求7所述的簽名生成裝置,其特征在于, 上述子群Sa是Z/ p^m Z的乘法群。
9. 根據(jù)權(quán)利要求8所述的簽名生成裝置,其特征在于, 上述正整數(shù)m是2。
10. 根據(jù)權(quán)利要求4所述的簽名生成裝置,其特征在于, 上述群G是橢圓曲線的群,上述子群Sa是異常橢圓曲線的群,上述群G和上述群Ga各自的基本運(yùn)算是對(duì)各元實(shí)施橢圓曲線上的加 法運(yùn)算的運(yùn)算,上述群G和上述群Ga各自的冪運(yùn)算是對(duì)上述正整數(shù)實(shí)施橢圓曲線上 的乘法運(yùn)算的運(yùn)算。
11. 根據(jù)權(quán)利要求4所述的簽名生成裝置,其特征在于, 上述群G是橢圓曲線的群,上述群Ga是2個(gè)異常橢圓曲線的直積,上述群G和上述群Ga各自的基本運(yùn)算是對(duì)各元實(shí)施橢圓曲線上的加 法運(yùn)算的運(yùn)算,上述群G和上述群Ga各自的冪運(yùn)算是對(duì)正整數(shù)實(shí)施橢圓曲線上的乘 法運(yùn)算的運(yùn)算。
12. 根據(jù)權(quán)利要求4所述的簽名生成裝置,其特征在于, 上述逆轉(zhuǎn)換部包括還原部,該還原部將屬于上述群Ga的元還原成屬于上述子群Sa的元,上述逆轉(zhuǎn)換部使用上述還原部將上述第二冪元和上述第三冪元分別還 原成屬于上述子群Sa的元,對(duì)還原后的元分別實(shí)施上述逆運(yùn)算,由此求出 上述第一離散對(duì)數(shù)和上述第二離散對(duì)數(shù)。
13. —種簽名生成裝置,以群G和群Ga上的離散對(duì)數(shù)問題為安全性 依據(jù),對(duì)群G上的基本元P以及群Ga上的基本元Pa實(shí)施重復(fù)多次基本運(yùn) 算的冪運(yùn)算,從而生成對(duì)消息的數(shù)字簽名,其特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解 對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意 正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元 Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn) 算而計(jì)算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選 擇與選擇出的數(shù)u對(duì)應(yīng)的分解對(duì);以及簽名單元,將選擇出的分解對(duì)中包含的第一分解值和消息分別轉(zhuǎn)換成 群Ga上的元,對(duì)轉(zhuǎn)換后的第一分解對(duì)、轉(zhuǎn)換后的消息以及選擇出的分解對(duì) 中包含的第二分解值實(shí)施上述群Ga上的運(yùn)算,解出離散對(duì)數(shù)問題,計(jì)算第 一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第二離散對(duì)數(shù), 生成對(duì)消息的數(shù)字簽名。
14. 一種簽名生成方法,在簽名生成裝置中使用,上述簽名生成裝置 以群G和群Ga上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群G上的基本元P以 及群Ga上的基本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息 的數(shù)字簽名,其特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解 對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意 正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元 Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn) 算而計(jì)算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;上述簽名生成方法具有選擇步驟,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選 擇與選擇出的數(shù)U對(duì)應(yīng)的分解組;生成步驟,對(duì)選擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上 述群G的基本運(yùn)算,生成第一冪元,對(duì)選擇出的分解組中包含的、且與上 述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn) 算,生成第二冪元;以及簽名步驟,將生成的上述第一冪元和消息分別轉(zhuǎn)換成群Ga上的元,對(duì) 轉(zhuǎn)換后的第一冪元、轉(zhuǎn)換后的消息以及上述第二冪元實(shí)施上述群Ga上的運(yùn) 算,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第 二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。
15. —種簽名生成程序,在簽名生成裝置中使用,上述簽名生成裝置 以群G和群Ga上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群G上的基本元P以 及群Ga上的基本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息 的數(shù)字簽名,其特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解 對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意 正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元 Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn) 算而計(jì)算出的群Ga上的元,上述簽名生成裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;上述簽名生成程序具有選擇步驟,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選 擇與選擇出的數(shù)U對(duì)應(yīng)的分解組;生成步驟,對(duì)選擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上 述群G的基本運(yùn)算,生成第一冪元,對(duì)選擇出的分解組中包含的、且與上 述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn) 算,生成第二冪元;以及簽名步驟,將生成的上述第一冪元和消息分別轉(zhuǎn)換成群Ga上的元,對(duì) 轉(zhuǎn)換后的第一冪元、轉(zhuǎn)換后的消息以及上述第二冪元實(shí)施上述群Ga上的運(yùn) 算,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第 二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。
16. 根據(jù)權(quán)利要求15所述的簽名生成程序,其特征在于, 上述多個(gè)數(shù)分別是由長度為2以上的預(yù)定長度構(gòu)成的比特串所表現(xiàn)的數(shù),分解對(duì)按照由上述預(yù)定長度構(gòu)成的比特串的各比特值對(duì)應(yīng), 上述選擇步驟將選擇出的上述數(shù)u轉(zhuǎn)換成由上述預(yù)定長度的比特串構(gòu)成的比特表現(xiàn),從上述分解值存儲(chǔ)單元中選擇與各個(gè)比特的值相對(duì)應(yīng)的分 解對(duì)所構(gòu)成的上述分解組。
17. 根據(jù)權(quán)利要求16所述的簽名生成程序,其特征在于, 上述生成步驟中,對(duì)按照每個(gè)比特值選擇出的分解對(duì)所構(gòu)成的上述分解組中包含的2個(gè) 以上的第一分解值,實(shí)施上述群G中的基本運(yùn)算,生成上述第一冪元, 對(duì)按照每個(gè)比特值選擇出的分解對(duì)所構(gòu)成的上述分解組中包含的、且與上述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值,實(shí)施上述群Ga中的 上述基本運(yùn)算,生成上述第二冪元。
18. 根據(jù)權(quán)利要求15所述的簽名生成程序,其特征在于, 上述簽名生成程序被記錄在計(jì)算機(jī)可讀取的記錄介質(zhì)中。
19. 一種簽名生成裝置的集成電路,上述簽名生成裝置以群G和群Ga 上的離散對(duì)數(shù)問題為安全性依據(jù),對(duì)群G上的基本元P以及群Ga上的基 本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪運(yùn)算,從而生成對(duì)消息的數(shù)字簽名,其 特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解 對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意 正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元 Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn) 算而計(jì)算出的群Ga上的元,上述集成電路具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選 擇與選擇出的數(shù)u對(duì)應(yīng)的分解組;生成單元,對(duì)選擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上 述群G的基本運(yùn)算,生成第一冪元,對(duì)選擇出的分解組中包含的、且與上 述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn) 算,生成第二冪元;以及簽名單元,將生成的上述第一冪元和消息分別轉(zhuǎn)換成群Ga上的元,對(duì) 轉(zhuǎn)換后的第一冪元、轉(zhuǎn)換后的消息以及上述第二冪元實(shí)施上述群Ga上的運(yùn) 算,計(jì)算第一離散對(duì)數(shù)和第二離散對(duì)數(shù),使用計(jì)算出的第一離散對(duì)數(shù)和第 二離散對(duì)數(shù),生成對(duì)消息的數(shù)字簽名。
20. —種運(yùn)算裝置,以群G和群Ga上的離散對(duì)數(shù)問題為安全性依據(jù), 對(duì)群G上的基本元P以及群Ga上的基本元Pa實(shí)施重復(fù)多次基本運(yùn)算的冪 運(yùn)算,其特征在于,預(yù)先將分解組與多個(gè)數(shù)分別對(duì)應(yīng),各分解組包括多個(gè)分解對(duì),各分解 對(duì)包括第一分解值和第二分解值,各第一分解值是對(duì)基本元P實(shí)施將任意 正整數(shù)作為冪的冪運(yùn)算而計(jì)算出的群G上的元,各第二分解值是對(duì)基本元 Pa實(shí)施將與該第二分解值對(duì)應(yīng)的第一分解值中使用的正整數(shù)作為冪的冪運(yùn) 算而計(jì)算出的群Ga上的元, 上述運(yùn)算裝置具有分解值存儲(chǔ)單元,存儲(chǔ)上述多個(gè)分解組;選擇單元,從上述多個(gè)數(shù)中隨機(jī)選擇數(shù)u,從上述分解值存儲(chǔ)單元中選 擇與選擇出的數(shù)u對(duì)應(yīng)的分解組;以及生成單元,對(duì)選擇出的分解組中包含的2個(gè)以上的第一分解值實(shí)施上 述群G的基本運(yùn)算,生成第一冪元,對(duì)選擇出的分解組中包含的、且與上 述2個(gè)以上的第一分解值分別對(duì)應(yīng)的第二分解值實(shí)施上述群Ga的基本運(yùn) 算,生成第二冪元。
全文摘要
本發(fā)明提供一種能夠使解析簽名生成處理中使用的值變得困難的簽名生成裝置。簽名生成裝置通過隨機(jī)數(shù)生成模塊生成由len比特構(gòu)成的隨機(jī)數(shù)u,由選擇模塊將生成的隨機(jī)數(shù)u轉(zhuǎn)換成比特表現(xiàn),從表存儲(chǔ)部取得與各比特值對(duì)應(yīng)的元對(duì)。簽名生成裝置通過隨機(jī)元生成模塊對(duì)取得的所有元對(duì)實(shí)施第一群G和第二群的基本運(yùn)算,計(jì)算第一群G上的元Pk和第二群Ga上的元Pak。簽名生成裝置使用消息m的散列值h、第一群G上的元Pk和第二群Ga上的元Pak、轉(zhuǎn)換模塊、主要運(yùn)算模塊、逆轉(zhuǎn)換模塊、乘法運(yùn)算模塊、除法運(yùn)算模塊以及簽名數(shù)據(jù)生成模塊,生成對(duì)消息m的簽名數(shù)據(jù)S。
文檔編號(hào)H04L9/32GK101351988SQ20068004982
公開日2009年1月21日 申請(qǐng)日期2006年12月26日 優(yōu)先權(quán)日2005年12月28日
發(fā)明者大森基司, 布田裕一, 滿保雅浩 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社