验证装置的制作方法

xiaoxiao2020-6-27  107

专利名称:验证装置的制作方法
技术领域
本发明涉及在公开密钥密码系统等密码系统中验证密文等的匹配性的验证装置。
背景技术
存在一种利用了由整数的剩余类关于乘法形成的群或由椭圆曲线上的点形成的 群等有限群(finite group)的密码系统。在利用了有限群的密码系统中,为了验证密文的匹配性等,有时根据有限群的元 h、s以及整数e,来判断是否为h = e 将有限群的群运算以加法方式描述的情况)或者 h = si将有限群的群运算以乘法方式描述的情况)。专利文献1 日本特开2004-201124号公报专利文献2 国际公开00/39668号公报专利文献3 美国专利7110538号公报非专利文献 1 :R. P. Gallant、R. J. Lambert、S. A. Vanstone "Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms" Crypto 2001、 LNCS 2139、第 190 200 页、2001 年。非专禾Ij 文献 2 “ 18033-2 information Technology-Security techniques-Encryption algorithms-Part2 :Asymmetric ciphers"IS0/IEC 18033—2、 2006 年。# # ^lJ i K 3 :R. Cramer> V. Shoup "Design and Analysis of Practical Public—Key Encryption Schemes secure against Adaptive Chosn Ciphertext Attack" Cryptology ePrint Archive、http://eprint. iacr. org、2001 年。__专禾Ij文献 4 :D. Boneh、X. Boyen “Efficient Selective-ID Secure Identity Based Encryption Without Random Oracle”EUR0CRYPT 2004、LNCS 3027、第 223 238 页、2004年。非专利文献 5 :Χ· Boyen "The BBl Identity-Based Cryptosystem :A Standard for Encryption and Key Encapsulation" Submissions for IEEE P1363. 3> http:// grouper, ieee. org/groups/1363/IBC/submissions/index, html、2006 年。# # ^lJ ; K 6 :M. Barbosa> L. Chen, Z. Cheng、M. Chimley、A. Dent、P. Farshim> K. Harrison、J. Malone-Lee、N. P. Smart、F. Vercauteren “SK-KEM :An Identity-Based KEM,,Submissions for IEEE P1363. 3> http://grouper, ieee. org/groups/1363/IBC/ submissions/index, html。非专利文献 7 :M. Bellare> C. Namprempre、G. Neven "Security Proofs for Identity-Based Identification and Signature Schemes"EUR0CRYPT 2004>LNCS 3027、 2004 年。

发明内容
(发明要解决的问题)存在如下情况利用于密码系统的有限群的阶数非常大,计算机等处理装置进行 一次群运算需要大量的时间。本发明是例如为了解决如上所述的问题而完成的,其目的在于使用计算机等处理 装置来高速地判断是否为h = s · e。(用于解决问题的方案)本发明所涉及的验证装置的特征在于,具有处理数据的处理装置、整数分割部、 验证值算出部以及验证判断部,所述整数分割部使用所述处理装置,输入有限群G的阶数ρ和整数e,根据所输入 的阶数P和整数e,算出满足ei · e ε e2(mod ρ)的整数力和整数e2,所述验证值算出部使用所述处理装置,输入所述有限群G的元s和所述有限群G 的元h,根据所输入的元s和元h、以及所述整数分割部所算出的整数ei和整数e2,算出所 述有限群G的元a ( = θι · h-e2 · s),所述验证判断部使用所述处理装置,根据所述验证值算出部所算出的元a,在所述 元a为所述有限群G的单位元的情况下,判断为验证成功。本发明所涉及的验证装置的特征在于,所述整数分割部使用所述处理装置,算出满足所述整数ei的绝对值小于所述阶数 P的平方根、并且所述整数e2小于所述阶数ρ的平方根这种条件的整数ei和整数e2。本发明所涉及的验证装置的特征在于,所述验证装置还具有存储数据的存储装置,所述整数分割部具有第一剩余存储部、第二剩余存储部、初始值设定部、适合性判 断部、第三剩余算出部以及分割整数输出部,所述第一剩余存储部使用所述存储装置存储整数V1,所述第二剩余存储部使用所述存储装置存储整数v2,所述初始值设定部使用所述处理装置,将所述阶数ρ作为所述整数V1而存储到所 述第一剩余存储部中,将所述整数e作为所述整数V2而存储到所述第二剩余存储部中,所述适合性判断部使用所述处理装置,在所述第二剩余存储部所存储的整数V2小 于所述阶数P的平方根的情况下,判断为满足输出条件,所述第三剩余算出部使用所述处理装置,在所述适合性判断部没有判断为满足输 出条件的情况下,根据所述第一剩余存储部所存储的整数V1和所述第二剩余存储部所存储 的整数V2,算出将所述整数V1除以所述整数V2而得到的余数并设为整数V3,将所述第二剩 余存储部所存储的整数V2作为所述整数V1而存储到所述第一剩余存储部中,将所算出的整 数V3作为所述整数V2而存储到所述第二剩余存储部中,所述分割整数输出部使用所述处理装置,在所述适合性判断部判断为满足输出条 件的情况下,将所述第二剩余存储部所存储的整数V2作为所述整数e2而输出。本发明所涉及的验证装置的特征在于,所述整数分割部还具有第一系数存储部、第二系数存储部、商算出部以及第三系 数算出部,
所述第一系数存储部使用所述存储装置,存储整数t1;所述第二系数存储部使用所述存储装置,存储整数t2,所述初始值设定部还使用所述处理装置,将0作为所述整数^而存储到所述第一 系数存储部中,将1作为所述整数t2而存储到所述第二系数存储部中,所述商算出部使用所述处理装置,根据所述第一剩余存储部所存储的整数V1和所 述第二剩余存储部所存储的整数V2,算出不超过将所述整数V1除以所述整数V2而得到的商 的最大整数并设为整数q,所述第三系数算出部使用所述处理装置,在所述适合性判断部没有判断为满足输 出条件的情况下,根据所述第一系数存储部所存储的整数、、所述第二系数存储部所存储 的整数t2以及所述商算出部所算出的整数q,算出从所述整数、减去所述整数t2与所述整 数q之积而得到的整数并设为整数t3,将所述第二系数存储部所存储的整数t2作为所述整 数、而存储到所述第一系数存储部中,将所算出的整数t3作为所述整数t2而存储到所述 第二系数存储部中,所述分割整数输出部还使用所述处理装置,在所述适合性判断部判断为满足输出 条件的情况下,将所述第二系数存储部所存储的整数t2作为所述整数ei而输出。本发明所涉及的验证装置的特征在于,所述验证值算出部使用所述处理装置,算出Σ (η1 · Pi)(其中,η是大于等于2的 规定的整数,i是大于等于0且小于等于k的整数,k是以η进制表示所述整数ei的绝对值 和所述整数e2时的位数的最大值,Pi是所述有限群G的元,Pi = ei,sgn · eu · h-e^ · s, θι, sgn是1或-1,i和e2, i是大于等于0且小于等于n-1的整数,θι =吖sgn · Σ (Iii ·吖》、 β2=Σ (H^e2,,))并设为所述有限群G的元a。本发明所涉及的密文解密装置的特征在于,具有存储数据的存储装置、处理数据 的处理装置、密钥存储部、密文输入部、密文验证部、验证装置以及解密文生成部,所述密钥存储部使用所述存储装置,存储用于解密密文的密钥,所述密文输入部使用所述处理装置,输入密文,所述密文验证部使用所述处理装置,根据所述密钥存储部所存储的密钥和所述密 文输入部所输入的密文,算出输入到所述验证装置的整数e、所述有限群G的元S、以及所述 有限群G的元h,所述验证装置输入所述密文验证部所算出的整数e、所述有限群G的元S、以及所 述有限群G的元h,判断是否验证成功,所述解密文生成部使用所述处理装置,在所述验证装置判断为验证成功的情况下, 利用所述密钥存储部所存储的密钥对所述密文输入部所输入的密文进行解密来生成解密文。本发明所涉及的密文解密装置的特征在于,所述密文解密装置还具有密码参数存储部、识别存储部、识别元算出部以及识别 元存储部, 所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数ρ、所述有限群 G的生成元gl、以及所述有限群G的元R, 所述识别存储部使用所述存储装置,存储用于识别所述密文解密装置的比特串 ID,
所述识别元算出部使用所述处理装置,根据所述识别存储部所存储的比特串ID, 算出通过规定的散列函数H1对所述比特串ID进行散列得到的散列值并设为整数H1(ID),根 据所述密码参数存储部所存储的生成元gl、所述密码参数存储部所存储的元R、以及所算出 的整数H1(ID),将所述生成元gl的整数H1 (ID)倍的元与所述元R相加来设为所述有限群G 的元 Q( = IHH1(ID) · gl),所述识别元存储部使用所述存储装置,存储所述识别元算出部所算出的元Q,所述密钥存储部使用所述存储装置,存储有限群G2的元Did,所述密文输入部使用所述处理装置,输入所述有限群G的元U和比特串V作为所 述密文,所述密文验证部具有配对值算出部、比特串算出部以及整数算出部,所述配对值算出部使用所述处理装置,根据所述密文输入部所输入的元U和所述 密钥存储部所存储的元Did,利用规定的配对函数e算出所述元U与所述元Did的配对值并 设为配对值α ( = e(U, Did)),所述比特串算出部使用所述处理装置,根据所述配对值算出部所算出的配对值 α,算出通过规定的散列函数H2对所述配对值α进行散列得到的散列值并设为比特串 Η2( α ),根据所述密文输入部所输入的比特串V和所算出的比特串Η2(α ),取得所述比特串 V与所述比特串H2(Ci)的逻辑异或并设为比特串m( = V XOR Η2(α)),所述整数算出部使用所述处理装置,根据所述比特串算出部所算出的比特串m,算 出通过规定的散列函数氏对所述比特串m进行散列得到的散列值并设为整数r( = H3Oii)),所述验证装置输入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为 所述整数e的所述整数算出部所算出的整数r、作为所述元S的所述识别元存储部所存储的 元Q、以及作为所述元h的所述密文输入部所输入的元U,判断是否验证成功,所述解密文生成部使用所述处理装置,在所述验证装置判断为验证成功的情况 下,根据所述比特串算出部所算出的比特串m,算出通过规定的散列函数H4对所述比特串m 进行散列得到的散列值并设为共用密钥K ( = H4 (m)),输出所算出的共用密钥K作为所述解 密文。本发明所涉及的密文解密装置的特征在于,所述识别元算出部在由所述密文输入部输入所述密文之前算出所述元Q。本发明所涉及的密文解密装置的特征在于,所述密文解密装置还具有共用密钥存储部、加密消息输入部以及消息解密部,所述共用密钥存储部使用所述存储装置,存储所述解密文生成部所输出的共用密 钥K,所述加密消息输入部使用所述处理装置输入加密消息,所述消息解密部使用所述处理装置,利用所述共用密钥存储部所存储的共用密钥 K对所述加密消息输入部所输入的加密消息进行解密。本发明所涉及的密文解密装置的特征在于,所述密文解密装置还具有密码参数存储部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数p,所述密钥存储部使用所述存储装置,存储大于等于1且小于等于P-I的整数W、大于等于1且小于等于P-I的整数χ、大于等于1且小于等于P-I的整数y、以及大于等于1 且小于等于P-I的整数z,所述密文输入部使用所述处理装置,输入所述有限群G的元U、所述有限群G的元 U’、以及所述有限群G的元ν作为所述密文,所述密文验证部具有散列值算出部和整数算出部,所述散列值算出部使用所述处理装置,根据所述密文输入部所输入的元U和元 U’,算出通过规定的散列函数H对所述元u和所述元U’进行散列得到的散列值并设为整数
α ( = H(u, U,)),所述整数算出部使用所述处理装置,根据所述密码参数存储部所存储的阶数ρ、所 述密钥存储部所存储的整数X和整数y、以及所述散列值算出部所算出的整数α,算出将所 述整数y与所述整数α之积和所述整数X的和除以所述阶数P而得到的余数并设为整数 t ( = (x+y · α )mod ρ),所述验证装置输入作为所述阶数ρ的所述密码参数存储部所存储的阶数P、作为 所述整数e的所述密钥存储部所存储的整数W、作为所述元s的所述密文输入部所输入的元 U、以及作为所述元h的所述密文输入部所输入的元U’,判断是否验证成功并作为第一验证 结果;输入所述密码参数存储部所存储的阶数P、作为所述整数e的所述整数算出部所算 出的整数t、作为所述元s的所述密文输入部所输入的元U、以及作为所述元h的所述密文 输入部所输入的元V,判断是否验证成功并作为第二验证结果,所述解密文生成部使用所述处理装置,在所述验证装置在所述第一验证结果和所 述第二验证结果中都判断为验证成功的情况下,根据所述密钥存储部所存储的整数ζ和所 述密文输入部所输入的元U,将所述元u相加所述整数ζ次来设为所述有限群G的元h(= ζ · u),根据所述密文输入部所输入的元u和所算出的元tT,利用规定的密钥导出函数KDF 根据所述元u和所述元IT生成共用密钥K ( = KDF (u,hi),输出所生成的共用密钥K作为 所述解密文。本发明所涉及的密文解密装置的特征在于,所述密文解密装置还具有共用密钥存储部、加密消息输入部以及消息解密部,所述共用密钥存储部使用所述存储装置,存储所述解密文生成部所输出的共用密 钥K,所述加密消息输入部使用所述处理装置,输入加密消息,所述消息解密部使用所述处理装置,利用所述共用密钥存储部所存储的共用密钥 K对所述加密消息输入部所输入的加密消息进行解密。本发明所涉及的密文解密装置的特征在于,所述密文解密装置还具有密码参数存储部,所述密码参数存储部使用所述存储装置,存储加法群G1的阶数P、所述加法群G1的 生成元g、以及以所述阶数P为阶数的乘法群Gt的元Vtl,所述密钥存储部使用所述存储装置,存储以所述阶数ρ为阶数的加法群G2的元Cltl 和所述加法群G2的元Cl1,所述密文输入部使用所述处理装置,输入比特串C、所述加法群G1的元Ctl、所述加 法群G1的元Cl、以及大于等于1且小于等于p-1的整数t作为所述密文,
13
所述密文验证部具有配对值算出部和整数算出部,所述配对值算出部使用所述处理装置,根据所述密文输入部所输入的元Ctl和所述 秘密密钥存储部所存储的元Cltl,利用规定的配对函数e算出所述元Ctl与所述元Cltl的配对值 并设为所述乘法群Gt的元kd = e(c0, (Ici)),根据所述密文输入部所输入的元C1和所述秘 密密钥存储部所存储的元Cl1,利用所述配对函数e算出所述元C1与所述元Cl1的配对值并设 为所述乘法群Gt的元Ic1 ( = e (CljCl1)),根据所算出的所述元Icci和所算出的所述元Ic1,将所 述元K除以所述元Ic1来设为所述乘法群Gt的元k( = IvX),所述整数算出部使用所述处理装置,根据所述配对值算出部所算出的元k、所述密 文输入部所输入的比特串C、元C(l、以及元C1,算出通过规定的散列函数H”对所述元k、所述 比特串C、所述元Ctl、以及所述元C1进行散列得到的散列值并设为整数H”(k,c, c0, Cl),根 据所述密文输入部所输入的整数t、所算出的整数H”(k,c, c0, C1)、以及所述密码参数存储 部所存储的阶数P,算出将从所述整数t减去所述整数H”(k,c, c0, C1)而得到的整数除以 阶数P的余数并设为整数s ( = t-H”(k,c, c0, C1)mod ρ),所述验证装置将所述加法群G1作为所述有限群G,输入作为所述阶数ρ的所述密 码参数存储部所存储的阶数P、作为所述整数e的所述整数算出部所算出的整数S、作为所 述元s的所述密码参数存储部所存储的生成元g、以及作为所述元h的所述密文输入部所输 入的元Ctl,判断是否验证成功并作为第一验证结果;将所述乘法群Gt作为所述有限群G,输 入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述整数e的所述整数算 出部所算出的整数S、作为所述元s的所述密码参数存储部所存储的元V(l、以及作为所述元 h的所述配对值算出部所算出的元k,判断是否验证成功并作为第二验证结果,所述解密文生成部使用所述处理装置,在所述验证装置在所述第一验证结果和所 述第二验证结果中都判断为验证成功的情况下,根据所述配对值算出部所算出的元k,算出 通过规定的散列函数H’对所述元k进行散列得到的散列值并设为比特串H’(k),根据所述 密文输入部所输入的比特串c和所算出的比特串H’(k),取得所述比特串c与所述比特串 H’ (k)的逻辑异或并设为比特串M’( = c XOR H’(k)),输出所算出的比特串M’作为所述 解密文。本发明所涉及的签名验证装置的特征在于,具有处理数据的处理装置、消息输入 部、签名输入部、签名验证部、验证装置以及验证结果输出部,所述消息输入部使用所述处理装置,输入消息,所述签名输入部使用所述处理装置,输入对于所述消息输入部所输入的消息的签 名,所述签名验证部使用所述处理装置,根据所述消息输入部所输入的消息和所述签 名输入部所输入的签名,算出输入到所述验证装置的整数e、所述有限群G的元S、以及所述 有限群G的元h,所述验证装置输入所述签名验证部所算出的整数e、所述有限群G的元S、以及所 述有限群G的元h,判断是否验证成功,所述验证结果输出部使用所述处理装置,根据所述验证装置所验证的结果,输出 表示是否验证成功的验证结果。本发明所涉及的签名验证装置的特征在于,
14
所述签名验证装置还具有存储数据的存储装置、密码参数存储部以及识别存储 部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数P、所述有限群 G的生成元g、以及所述有限群G的元X,所述识别存储部使用所述存储装置,存储用于识别签名装置的比特串ID,所述消息输入部使用所述处理装置,输入比特串M作为所述消息,所述签名输入部使用所述处理装置,输入所述有限群G O元R、所述有限群G的元 S、所述有限群G的元Y、以及大于等于1且小于等于p-1的整数ζ作为所述签名,所述签名验证部具有整数算出部、验证元算出部、挑战算出部以及第一验证部,所述整数算出部使用所述处理装置,根据所述签名输入部所输入的元R和所述识 别存储部所存储的比特串ID,算出通过规定的散列函数H对所述元R和所述比特串ID进行 散列得到的散列值并设为整数h( = H(R,ID)),所述验证元算出部使用所述处理装置,根据所述签名输入部所输入的元R和元S, 将所述元S与所述元R的逆元相加来设为所述有限群G的元R’ ( = S-R),所述挑战算出部使用所述处理装置,根据所述识别存储部所存储的比特串ID、所 述签名输入部所输入的元R、元S和元Y、以及所述消息输入部所输入的比特串M,算出通过 规定的散列函数H’对所述比特串ID、所述元R、所述元S、所述元Y、以及所述比特串M进行 散列得到的散列值并设为整数c ( = H' (I, R,S,Y,M)),所述第一验证部使用所述处理装置,根据所述密码参数存储部所存储的生成元g、 所述签名输入部所输入的元S、元Y和整数ζ、以及所述挑战算出部所算出的整数C,判断对 将所述元S相加所述整数c次得到的元c · S加上所述元Y的元Y+c · S是否与将所述元g 相加所述整数ζ次得到的元ζ · g相等,在所述元Y+c · S与所述元ζ · g相等的情况下,判 断为验证成功并作为第一验证结果,所述验证装置输入作为所述阶数ρ的所述密码参数存储部所存储的阶数P、作为 所述整数e的所述整数算出部所算出的整数h、作为所述元s的所述密码参数存储部所存储 的元X、以及作为所述元h的所述验证元算出部所算出的元R’,判断是否验证成功并作为第
二验证结果,所述验证结果输出部使用所述处理装置,根据所述第一验证部所验证的第一验证 结果和所述验证装置所验证的第二验证结果,在所述第一验证结果和所述第二验证结果中 都判断为验证成功的情况下,输出表示验证成功的验证结果。本发明所涉及的认证装置的特征在于,具有处理数据的处理装置、发送数据的发 送装置、接收数据的接收装置、认证请求接收部、询问发送部、回答接收部、签名验证部、验 证装置以及认证结果输出部,所述认证请求接收部使用所述接收装置,接收认证请求消息,所述询问发送部使用所述发送装置,作为对于所述认证请求接收部所接收到的认 证请求消息的响应,发送询问消息,所述回答接收部使用所述接收装置,接收对于所发送的询问消息的回答消息,所述签名验证部使用所述处理装置,根据所述认证请求接收部所接收到的认证请 求消息和所述回答接收部所接收到的回答消息,算出输入到所述验证装置的整数e、所述有
15限群G的元S、以及所述有限群G的元h,所述验证装置输入所述签名验证部所算出的整数e、所述有限群G的元S、以及所 述有限群G的元h,判断是否验证成功,所述认证结果输出部使用所述处理装置,根据所述验证装置所验证的结果,输出 表示是否认证成功的认证结果。本发明所涉及的认证装置的特征在于,所述认证装置还具有存储数据的存储装置、密码参数存储部、识别存储部以及挑 战生成部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数P、所述有限群 G的生成元g、以及所述有限群G的元X,所述识别存储部使用所述存储装置,存储用于识别证明装置的比特串ID,所述认证请求接收部使用所述接收装置,从所述证明装置接收所述有限群G的元 R、所述有限群G的元S、以及所述有限群的元Y作为所述认证请求消息,所述挑战生成部使用所述处理装置,随机地生成大于等于1且小于等于P-I的整 数C,所述询问发送部使用所述发送装置,作为所述询问消息对所述证明装置发送所述 挑战生成部所生成的整数C,所述回答接收部使用所述接收装置,从所述证明装置接收大于等于1且小于等于 P-I的整数Z作为所述回答消息,所述签名验证部具有整数算出部、验证元算出部以及第一验证部,所述整数算出部使用所述处理装置,根据所述认证请求接收部所接收到的元R和 所述识别存储部所存储的比特串ID,算出通过规定的散列函数H对所述元R和所述比特串 ID进行散列得到的散列值并设为整数h( = H(R,ID)),所述验证元算出部使用所述处理装置,根据所述认证请求接收部所接收到的元R 和元S,对所述元S加上所述元R的逆元来设为所述有限群G的元R’ ( = S-R),所述第一验证部使用所述处理装置,根据所述密码参数存储部所存储的生成元g、 所述认证请求接收部所接收到的元S和元Y、所述挑战生成部所生成的整数C、以及所述回 答接收部所接收到的整数z,判断对将所述元S相加所述整数c次得到的元c · S加上所述 元Y的元Y+c-S是否与将所述元g相加所述整数ζ次得到的元ζ -g相等,在所述元Y+c -S 与所述元ζ · g相等的情况下,判断为验证成功并作为第一验证结果,所述验证装置输入作为所述阶数ρ的所述密码参数存储部所存储的阶数P、作为 所述整数e的所述整数算出部所算出的整数h、作为所述元s的所述密码参数存储部所存储 的元X、以及作为所述元h的所述验证元算出部所算出的元R’,判断是否验证成功并作为第 二验证结果,所述认证结果输出部使用所述处理装置,根据所述第一验证部所验证的第一验证 结果和所述验证装置所验证的第二验证结果,在所述第一验证结果和所述第二验证结果中 都判断为验证成功的情况下,输出表示认证成功的认证结果。本发明所涉及的密码系统的特征在于,具有所述验证装置。本发明所涉及的计算机程序的特征在于,使具有处理数据的处理装置的计算机作为所述验证装置而发挥功能。本发明所涉及的验证方法是使具有处理数据的处理装置的验证装置验证匹配性 的验证方法,其特征在于,所述处理装置输入有限群G的阶数ρ和整数e,根据所输入的阶数ρ和整数e,算 出满足ei · e ε e2(mod ρ)的整数θι和整数e2,所述处理装置输入所述有限群G的元s和所述有限群G的元h,根据所输入的元g 和元h、以及所算出的整数ei和整数e2,算出所述有限群G的元a( = ei · h-e2 · s),所述处理装置根据所算出的元a,在所述元a为所述有限群G的单位元的情况下, 判断为验证成功。(发明的效果)根据本发明,例如根据整数分割部所算出的整数ei和整数e2,在验证值算出部所 算出的元a为有限群G的单位元的情况下,验证判断部判断为验证成功,因此在h = e · s 的情况下能够判断为验证成功。如果在验证值算出部中算出元a的处理所花费的时间小于 算出e 所花费的时间,则起到如下效果能够缩短判断是否为h = e 的处理所花费的 时间。


图1是表示实施方式1中的密文解密装置200的功能模块的结构的一例的模块结 构图。图2是表示实施方式1中的密文解密装置200的外观的一例的图。图3是表示实施方式1中的密文解密装置200的硬件资源的一例的图。图4是表示实施方式1中的验证装置100的内部模块的结构的一例的模块结构 图。图5是表示实施方式1中的验证装置100判断是否为h = e · s的验证处理的流 程的一例的流程图。图6是表示实施方式1中的整数分割部110的内部模块的结构的一例的详细模块 图。图7是表示实施方式1中的整数分割部110分割整数e的整数分割处理的流程的 一例的流程图。图8是表示实施方式1中的验证值算出部130的内部模块的结构的一例的详细模 块图。图9是表示实施方式1中的验证值算出部130算出有限群G的元a的验证值算出 处理的流程的一例的流程图。图10是表示实施方式2中的基于ID的公开密钥密码系统820A的整体结构的一 例的系统结构图。图11是表示实施方式2中的密码参数设定装置810A的一部分功能模块的结构的 一例的模块结构图。图12是表示实施方式2中的密钥生成装置300A的功能模块的结构的一例的模块 结构图。
图13是表示实施方式2中的密文生成装置400A的功能模块的结构的一例的模块 结构图。图14是表示实施方式2中的密文解密装置200A的功能模块的结构的一例的模块 结构图。图15是表示实施方式2中的密文解密装置200A对密文c进行解密的密文解密处 理流程的一例的流程图。图16是表示实施方式3中的公开密钥密码系统820B的整体结构的一例的系统结 构图。图17是表示实施方式3中的密钥生成装置300B的功能模块的结构的一例的模块 结构图。图18是表示实施方式3中的密文生成装置400B的功能模块的结构的一例的模块 结构图。图19是表示实施方式3中的密文解密装置200B的功能模块的结构的一例的模块 结构图。图20是表示实施方式3中的密文解密装置200A解密密文c的密文解密处理流程 的一例的流程图。图21是表示实施方式4中的基于ID的公开密钥密码系统820C的整体结构的一 例的系统结构图。图22是表示实施方式4中的密码参数设定装置810C的一部分功能模块的结构的 一例的模块结构图。图23是表示实施方式4中的密钥生成装置300C的功能模块的结构的一例的模块 结构图。图24是表示实施方式4中的密文生成装置400C的功能模块的结构的一例的模块 结构图。图25是表示实施方式4中的密文解密装置200C的功能模块的结构的一例的模块 结构图。图26是表示实施方式4中的验证装置100C的内部模块的结构的一例的详细模块 图。图27是表示实施方式4中的密文解密装置200C解密密文C的密文解密处理流程 的一例的流程图。图28是表示实施方式5中的基于ID的签名系统820D的整体结构的一例的系统 结构图。图29是表示实施方式5中的密码参数设定装置810D的一部分功能模块的结构的 一例的模块结构图。图30是表示实施方式5中的密钥生成装置300D的功能模块的结构的一例的模块 结构图。图31是表示实施方式5中的签名装置400D的功能模块的结构的一例的模块结构 图。图32是表示实施方式5中的签名验证装置200D的功能模块的结构的一例的模块结构图。图33是表示实施方式5中的签名验证装置200D验证签名ο的签名验证处理的 流程的一例的流程图。图34是表示实施方式6中的基于ID的认证系统820Ε的整体结构的一例的系统 结构图。图35是表示实施方式6中的证明装置400Ε的功能模块的结构的一例的模块结构 图。图36是表示实施方式6中的认证装置200Ε的功能模块的结构的一例的模块结构 图。图37是表示实施方式6中的认证装置200Ε认证证明装置400Ε的认证处理的流 程的一例的流程图。(附图标记说明)100、100A、100B、100C、100D 验证装置;110U10C 整数分割部;111 阶数输入部; 112 整数输入部;113 初始值设定部;114 第一剩余存储部;115 第二剩余存储部;116 适合性判断部;117 第三剩余算出部;124 第一系数存储部;125 第二系数存储部;126 商算出部;127 第三系数算出部;129 分割整数输出部;130、130C 验证值算出部;131 分 割整数输入部;132 元输入部;133 索引算出部;134 表生成部;135 表存储部;141 验 证初始值设定部;142 倍算结果存储部;143 二基底加法部;144 加法结果存储部;145 倍算部149 验证值输出部;150、150C 验证判断部;200、200A、200B、200C 密文解密装置; 200D 签名验证装置;200E 认证装置;210、210A、210B、210C 密钥存储部;210D 识别存 储部;220、220A、220B、220C 密文输入部;220D 签名输入部;225D 消息输入部;220E 认 证请求接收部;226E 询问发送部;227E 回答接收部;230、230A、230B、230C 密文验证部; 230D 签名验证部;231A 配对值算出部;232A 比特串算出部;233A 整数算出部;231B 散列值算出部;232B 整数算出部;231C 配对值算出部;232C 整数算出部;231D 挑战 算出部;232D 整数算出部;233D 验证元算出部;231E 挑战生成部;241A 识别存储部; 242A 识别元算出部;243A 识别元存储部;250D 第一验证部;260、260A、260B、260C 解密 文生成部;260D 验证结果输出部;260E 认证结果输出部;261B 秘密元算出部;262B 共 用密钥算出部;270A.270B 共用密钥存储部;281A.281B 加密消息输入部;282A.282B 消 息解密部;283A、283B、283C 解密消息输出部;290A、290B、290C、290D、390A、390B、390C、 390D、490A、490B、490C、490D、819A、819C、819D 密码参数存储部;300A、300B、300C、300D 密钥生成装置;330A 秘密随机数存储部;330C、330D 主密钥存储部;340A、340C、340D 识别输入部;350A、350B、350C 秘密密钥生成部;350D 签名密钥生成部;351A 散列值算 出部;352A 整数加法部;353A:倒数算出部;354A 秘密密钥算出部;351B、352B、353B、 354B 秘密随机数生成部;351C 秘密随机数生成部;352C 第一秘密元算出部;353C 第 二秘密元算出部;351D 秘密随机数生成部;352D 密钥元算出部;353D 密钥整数算出部; 360A、360B、360C 秘密密钥输出部;360D 签名密钥输出部;370B 公开密钥生成部;371B、 372B、373B、374B 公开元算出部;380B 公开密钥输出部;400A、400B、400C 密文生成装 置;400D 签名装置;400E 证明装置;410A、410C、410D 识别存储部;410B 公开密钥存储 部;420A、420B 共用密钥生成部;420D 签名密钥存储部;421A 秘密比特串生成部;422A
19秘密整数算出部;423A 识别元算出部;424A 密码元算出部;425A 秘密配对值算出部; 426A 密码比特串算出部;427A 共用密钥算出部;421B 秘密随机数生成部;422B 第一 密码元算出部;423B 第二密码元算出部;424B 散列值算出部;425B 整数算出部;426B 第三密码元算出部;427B 秘密元算出部;428B 共用密钥算出部;430A、430B 共用密钥存 储部;440A、440B、440C、440D 消息输入部;450A、450B、450C 消息加密部;450D 签名生成 部;451C 秘密随机数生成部;452C 配对值算出部;453C 密码比特串算出部;454C 第一 密码元算出部;455C 第二密码元算出部;456C 密码整数算出部;451D 第一签名元算出 部;452D 秘密随机数生成部;453D 第二签名元算出部;454D 挑战算出部;455D 签名整 数算出部;454E 询问接收部;460A.460B 加密消息输出部;470A、470B、470C 密文输出 部;470D 签名输出部;470E 认证请求发送部;475E 回答发送部;810A、810B、810C、810D 密码参数设定装置;811A 公开元生成部;812A 秘密随机数生成部;813A 公开元算出部; 814A 秘密随机数输出部;815A 公开元输出部;812C 主密钥生成部;813C 公开参数生 成部;814C 主密钥输出部;815C 公开参数输出部;816C、817C、818C 秘密随机数生成部; 831C 第一公开元算出部;832C 公开配对值算出部;833C 第二公开元算出部;812D 秘密 随机数生成部;813D 公开元算出部;814D 主密钥输出部;815D 公开参数输出部;820A、 820C 基于ID的公开密钥密码系统;820B 公开密钥密码系统;820D 基于ID的签名系统; 820E 基于ID的认证系统;901 表示装置;902 键盘;903 鼠标;904 =FDD ;905 :CDD ;906 打印机装置;907 扫描仪装置;910 系统单元;911 =CPU ;912 总线;913 =ROM ;914 =RAM ; 915 通信装置;920 磁盘装置;921 =OS ;922 窗口系统;923 程序群;924 文件群;931 电 话机;932 传真机;940 因特网;941 网关;942 =LAN0
具体实施例方式(实施方式1)使用图1 图9来说明实施方式1。在下面的说明中,将密码系统所利用的有限群设为G。另外,有限群G中的运算以加法方式描述。此外,这是为了便于说明,并不是排除 以乘法方式描述群运算的群。设有限群G的阶数ρ是素数。因而,有限群G是循环群。图1是表示本实施方式中的密文解密装置200的功能模块的结构的一例的模块结 构图。密文解密装置200输入密文,对所输入的密文进行解密来生成解密文。密文解密装置200具有密钥存储部210、密文输入部220、密文验证部230、验证装 置100以及解密文生成部260。密钥存储部210存储用于对密文进行解密的密钥(秘密密钥)。密文输入部220输入密文。密文验证部230根据密钥存储部210所存储的密钥和密文输入部220所输入的密 文,算出为了验证密文输入部220所输入的密文所需的值。验证装置100根据密文验证部230所算出的值,验证密文输入部220所输入的密文。
在验证装置100的验证成功的情况下,解密文生成部260使用密钥存储部210所 存储的密钥对密文输入部220所输入的密文进行解密,来生成解密文。存在如下情况非法者对密文解密装置200输入非法的密文,对密文解密装置200 所生成的解密文进行解析,由此想要得到解读正规密文的线索。密文解密装置200仅在验证密文的匹配性而验证成功的情况下生成解密文,由此 防止对非法者提供解读正规密文的线索。图2是表示本实施方式中的密文解密装置200的外观的一例的图。密文解密装置200具备系统单元910、具有CRT (Cathode · Ray · Tube 阴极 射线管)、IXD (液晶)的显示画面的显示装置901、键盘902 (Key · Board :K/B)、鼠标 903、FDD904 (Flexible · Disk · Drive 软盘驱动器)、高密度磁盘(compact disk)装置 905 (⑶D)、打印机装置906、扫描仪装置907等硬件资源,这些部件通过线缆、信号线相连 接。系统单元910是计算机,通过线缆与传真机932、电话机931相连接,另外,通过局 域网942 (LAN)、网关941与因特网940相连接。图3是表示本实施方式中的密文解密装置200的硬件资源的一例的图。密文解密装置200具备执行程序的CPU911 (Central · Processing · Unit,还称为 中央处理装置、处理装置、运算装置、微处理器、微计算机、处理器)。CPU911通过总线912 与R0M913、RAM914、通信装置915、显示装置901、键盘902、鼠标903、FDD904、CDD905、打印 机装置906、扫描仪装置907、磁盘装置920相连接,并控制这些硬件设备。也可以是代替磁 盘装置920而是光盘装置、存储卡读写装置等存储装置。RAM914是易失性存储器的一例。R0M913、FDD904、⑶D905、磁盘装置920的存储介 质是非易失性存储器的一例。这些部件是存储装置或存储部的一例。通信装置915、键盘902、扫描仪装置907、FDD904等是输入部、输入装置的一例。另外,通信装置915、显示装置901、打印机装置906等是输出部、输出装置的一例。通信装置915与传真机932、电话机931、LAN942等相连接。通信装置915不限于 LAN942,也可以与因特网940、ISDN等WAN(广域网)等相连接。在与因特网940或ISDN等 WAN相连接的情况下,不使用网关941。磁盘装置920中存储有操作系统921(0S)、窗口系统922、程序群923、文件群924。 程序群923的程序由CPU911、操作系统921、窗口系统922执行。上述程序群923中存储有在以下叙述的实施方式的说明中执行作为“ 部”说明 的功能的程序。由CPU911读取并执行程序。文件群924中作为“ 文件”、“ 数据库”的各项目而存储有在以下所述的实施 方式的说明中执行作为“ 的判断结果”、“ 的计算结果’’、“ 的处理结果”说明的信息、 数据、信号值、变量值、参数。“ 文件”、“ 数据库”被存储在盘、存储器等记录介质中。存 储在盘、存储器等存储介质中的信息、数据、信号值、变量值、参数经由读写电路被CPU911 读取到主存储器、高速缓冲存储器中,用于进行提取、检索、参照、比较、运算、计算、处理、输 出、印刷、显示等CPU的动作。在进行提取、检索、参照、比较、运算、计算、处理、输出、印刷、 显示的CPU的动作的期间,信息、数据、信号值、变量值、参数暂时被存储在主存储器、高速 缓冲存储器、缓冲存储器中。
21
另外,在以下叙述的实施方式的说明中说明的流程图的箭头部分主要表示数据、 信号的输入输出,数据、信号值被记录到RAM914的存储器、FDD904的软盘、⑶D905的高密度 磁盘、磁盘装置920的磁盘、其它光盘、迷你盘、DVD(Digital · Versatile · Disk)等记录介 质中。另外,数据、信号通过总线912、信号线、线缆、其它传输介质而被联机传输。另外,在以下叙述的实施方式的说明中作为“ 部”说明的部分既可以是“ 电 路”、“ 装置”、“ 设备”,也可以是“ 步骤”、“ 过程〃、“ 处理”。即,作为“ 部”说明 的部分也可以由存储在R0M913中的固件来实现。或者,也可以仅由软件实施,或者仅由元 件、器件、基板、布线等硬件实施,或者由软件和硬件的组合实施,进而以与固件的组合来实 施。固件和软件作为程序而存储在磁盘、软盘、光盘、高密度磁盘、迷你盘、DVD等记录介质 中。由CPU911读出并由CPU911执行程序。即,程序使计算机作为以下叙述的“ 部”来发 挥功能。或者,使计算机执行以下叙述的“ 部”的过程、方法。图4是表示本实施方式中的验证装置100的内部模块的结构的一例的模块结构 图。验证装置100输入有限群G的元s及元h、有限群G的阶数ρ、整数e,判断是否为 h = e.So此外,设整数e大于等于1且小于等于p-1。验证装置100具有整数分割部110、验证值算出部130以及验证判断部150。整数分割部110使用CPU911输入有限群G的阶数ρ和整数e,算出两个整数力、
θ2 ο验证值算出部130使用CPU911,根据有限群G的元s及元h、整数分割部110所算 出的整数ei及整数e2,算出有限群G的元a。验证判断部150使用CPU911判断验证值算出部130所算出的元a是否为有限群 G的单位元。在元a为有限群G的单位元的情况下,验证判断部150判断为验证成功(即, h = e · s) ο图5是表示本实施方式中的验证装置100判断是否为h = e · s的验证处理的流 程的一例的流程图。在整数分割处理S701中,整数分割部110使用CPU911,根据所输入的阶数ρ和 整数e,算出两个整数e”e2。整数分割部110算出满Me1MEe2 (mod ρ)>|6ι|<λ/ρ ,
这一条件的整数ei及整数e2。在验证值算出处理S702中,验证值算出部130使用CPU911,根据所输入的元s及 元h、在整数分割处理S701中整数分割部110所算出的整数ei及整数e2,算出有限群G的 7Π a = G1 · h_e2 · s。在验证判断处理S703中,验证判断部150使用CPU911判断在验证值算出处理 S702中由验证值算出部130算出的元a是否为有限群G的单位元(下面描述为“0” )。在判断为元a为单位元0的情况下,进入成功判断处理S704。在判断为元a不是单位元0的情况下,进入失败判断处理S705。在成功判断处理S704中,验证判断部150使用CPU911判断为验证成功,结束验证 处理。
在失败判断处理S705中,验证判断部150使用CPU911判断为验证失败,结束验证处理。图6是表示本实施方式中的整数分割部110的内部模块的结构的一例的详细模块 图。整数分割部110根据有限群G的阶数ρ和整数e,算出满Sei*eEe2(m0d ρ)的 整数ei及整数e2。S卩,整数分割部110确定整数ei及整数e2,使得将整数ei和整数e之积 除以阶数P而得到的余数与整数e2相等。此外,为了高速地进行验证值算出部130中的计算,整数分割部110从满足 ei .e ε e2(mod ρ)的整数ei及整数e2中选择绝对值小于阶数ρ的平方根的整数力和小于 阶数P的平方根的作为大于等于1的整数的整数e2。整数分割部110具有阶数输入部111、整数输入部112、初始值设定部113、第一剩 余存储部114、第二剩余存储部115、适合性判断部116、第三剩余算出部117、第一系数存储 部124、第二系数存储部125、商算出部126、第三系数算出部127以及分割整数输出部129。阶数输入部111使用CPU911输入表示有限群G的阶数ρ的数据。阶数输入部111 使用RAM914,存储表示所输入的阶数ρ的数据。整数输入部112使用CPU911输入表示整数e的数据。整数输入部112使用RAM914, 存储表示所输入的整数e的数据。第一剩余存储部114使用RAM914,存储表示整数V1的数据。第二剩余存储部115使用RAM914,存储表示整数V2的数据。第一系数存储部124使用RAM914,存储表示整数、的数据。第二系数存储部125使用RAM914,存储表示整数t2的数据。初始值设定部113对第一剩余存储部114、第二剩余存储部115、第一系数存储部 124、第二系数存储部125设定初始值。初始值设定部113使用CPU911输入阶数输入部111所存储的表示阶数P的数据 和整数输入部112所存储的表示整数e的数据。初始值设定部113使用CPU911将所输入 的表示阶数P的数据作为表示整数V1的数据而存储到第一剩余存储部114中。初始值设 定部113使用CPU911将所输入的表示整数e的数据作为表示整数V2的数据而存储到第二 剩余存储部115中。初始值设定部113使用CPU911将表示0的数据作为表示整数、的数 据而存储到第一系数存储部124中。初始值设定部113使用CPU911将表示1的数据作为 表示整数t2的数据而存储到第二系数存储部125中。在此,由于V1 = p、V2 = e、tl = 0、t2 = 1,因此当将I^k2设为整数时,[式1]ti · e+ki · ρ = V1[式2]t2 · e+k2 · ρ = V2[式3]V1 > V2 ^ 0[式4]It1I < |t2
23
[式δ]V1 · 1121 +V2 · I、I = ρ适合性判断部116使用CPU911输入阶数输入部111所存储的表示阶数P的数据 和第二剩余存储部115所存储的表示整数V2的数据。适合性判断部116使用CPU911根据 所输入的数据所表示的阶数P和整数V2,判断是否满足输出条件。具体地说,适合性判断部 116使用CPU911将整数V2与阶数ρ的平方根进行比较,在整数V2小于阶数ρ的平方根的 情况下,判断为满足输出条件。此外,适合性判断部116也可以预先使用CPU911来算出不超过阶数ρ的平方根的
最大整数。另外,也可以代替算出阶数ρ的平方根而将整数V2的二进制表述中的位数和阶数 P的二进制表述中的位数进行比较来判断是否满足输出条件。即,适合性判断部116预先使 用CPU911求出表示阶数ρ的数据的比特数,将所求出的比特数除以2(不能整除的情况下 是进位)来设为平方根比特数。平方根比特数表示不超过阶数P的平方根的整数的二进制 表述中的位数。适合性判断部116使用RAM914存储所算出的平方根比特数,使用CPU911 算出表示整数V2的数据的比特数。适合性判断部116使用CPU911将所算出的比特数与所 存储的平方根比特数进行比较,在表示整数V2的数据的比特数小于等于平方根比特数的情 况下,视为整数V2小于阶数P的平方根,判断为满足输出条件。在适合性判断部116判断为不满足输出条件的情况下,第三剩余算出部117使用 CPU911输入第一剩余存储部114所存储的表示整数V1的数据和第二剩余存储部115所存 储的表示整数V2的数据。第三剩余算出部117根据所输入的数据所表示的整数V1和整数 V2,算出将整数V1除以整数V2而得到的余数并设为整数ν3。另外,在适合性判断部116判断为不满足输出条件的情况下,商算出部126使用 CPU911输入第一剩余存储部114所存储的表示整数V1的数据和第二剩余存储部115所存 储的表示整数V2的数据。商算出部126根据所输入的数据所表示的整数V1和整数ν2,算 出不超过将整数V1除以整数V2而得到的商的最大整数并设为整数q。商算出部126使用 RAM914存储表示所算出的整数q的数据。第三系数算出部127使用CPU911输入第一系数存储部124所存储的表示整数、 的数据、第二系数存储部125所存储的表示整数t2的数据以及表示商算出部126所算出的 整数q的数据。第三系数算出部127使用CPU911,根据所输入的数据所表示的整数、、整 数t2以及整数q,算出从整数、减去整数q与整数t2之积而得到的整数t3( = trq · t2)。在此,当将k3设为整数时,[式6]v3_t3 · e = (v「q · v2) - (tj-q · v3) · e= (Vft1 · e)-q · (v2_t2 · e)= (krq · k2) · ρ.·. t3 · e+k3 · ρ = V3另外,整数V3是将整数V1除以整数V2而得到的余数,因此,[式7]V2 > V3 ^ 0
24
另外,如果V1 > V2 > 0,贝丨J q彡1,因此如果、彡0、t2 > 0,贝丨J[式8]t3 = trq · t2 < 0如果、>0、t2 < 0,则[式9]t3 = trq · t2 > 0因而,在任意情况下,都是[式10]t3| = |tj+q · |t2因此,[式11]V2 · 1131 +V3 · 112= V2 · I ti I +v2-q· I ti +(V1-Q · v2) · 112= V1 · 1121 +V2 · I、= ρ第三剩余算出部117使用CPU911,将表示所输入的整数V2的数据作为表示整数V1 的数据而存储到第一剩余存储部114中。第三剩余算出部117使用CPU911,根据所算出的 整数V3,将表示整数V3的数据作为表示整数V2的数据而存储到第二剩余存储部115中。第三系数算出部127使用CPU911,将表示所输入的整数t2的数据作为表示整数、 的数据而存储到第一系数存储部124中。第三系数算出部127使用CPU911,根据所算出的 整数t3,将表示整数t3的数据作为表示整数t2的数据而存储到第二系数存储部125中。根据式6 式11,在第一剩余存储部114、第二剩余存储部115、第一系数存储部 124、第二系数存储部125新存储的数据所表示的整数V1、整数V2、整数、、整数t2之间也成 立式1 式5。在适合性判断部116判断为满足输出条件的情况下,分割整数输出部129使用 CPU911输入第二剩余存储部115所存储的表示整数V2的数据和第二系数存储部125所存 储的表示整数t2的数据。分割整数输出部129使用CPU911将所输入的表示整数t2的数据 作为表示整数ei的数据而输出。另外,分割整数输出部129使用CPU911将所输入的表示 整数V2的数据作为表示整数e2的数据而输出。当第三剩余算出部117和第三系数算出部127重复进行该计算时,V2不久会成为 阶数P与整数e之间的最大公约数。阶数P是素数,因此阶数P与整数e之间的最大公约
数为1。因而,必然成为()<V2<‘,分割整数输入部129输出表示整数ei和整数e2的数据。图7是表示本实施方式中的整数分割部110分割整数e的整数分割处理的流程的 一例的流程图。在初始值设定工序S711中,初始值设定部113使用CPU911对第一剩余存储部 114、第二剩余存储部115、第一系数存储部124、第二系数存储部125设定初始值。第一剩 余存储部114使用RAM914将阶数输入部111所输入的阶数ρ作为整数V1而存储。第二剩余存储部115使用RAM914将整数输入部112所输入的整数e作为整数V2而存储。第一系 数存储部124使用RAM914,存储0作为整数、。第二系数存储部125使用RAM914,存储1 作为整数t2。在适合性判断工序S712中,适合性判断部116使用CPU911,判断第二剩余存储部 115所存储的整数V2是否小于阶数输入部111所输入的阶数P的平方根。在判断为整数V2于阶数ρ的平方根的情况下,进入分割整数输出工序S718。在判断为整数V2大于阶数ρ的平方根的情况下,进入剩余算出工序S713。在剩余算出工序S713中,第三剩余算出部117使用CPU911,算出将第一剩余存储 部114所存储的整数V1除以第二剩余存储部115所存储的整数V2而得到的余数并设为整 数V3O在商算出工序S714中,商算出部126使用CPU911算出不超过将第一剩余存储部 114所存储的整数V1除以第二剩余存储部115所存储的整数V2而得到的商的最大整数并 设为整数q。在系数算出工序S715中,第三系数算出部127使用CPU911,算出从第一系数存储 部124所存储的整数、减去第二系数存储部125所存储的整数t2与通过商算出工序S714 由商算出部126算出的整数q之积而得到的整数并设为整数t3。在剩余更新工序S716中,第三剩余算出部117使用CPU911,更新第一剩余存储部 114、第二剩余存储部115。第一剩余存储部114使用RAM914,将第二剩余存储部115所存 储的整数V2作为整数V1而存储。第二剩余存储部115使用RAM914,将通过剩余算出工序 S713由第三剩余算出部117算出的整数V3作为整数V2而存储。在系数更新工序S717中,第三系数算出部127使用CPU911,更新第一系数存储部 124、第二系数存储部125。第一系数存储部124使用RAM914,将第二系数存储部125所存 储的整数t2作为整数、而存储。第二系数存储部125使用RAM914,将通过系数算出工序 S715由第三系数算出部127算出的整数t3作为整数t2而存储。之后,返回到适合性判断工序S712。在分割整数输出工序S718中,分割整数输出部129使用CPU911将第二系数存储 部125所存储的整数t2作为整数ei输出。分割整数输出部129使用CPU911将第二剩余存 储部115所存储的整数V2作为整数e2输出。之后,结束整数分割处理。关于分割整数输出部129所输出的整数ei及整数e2,根据式2得到[式12]θ! · e+k2 · ρ = e2.·. θ! · e = e2 (mod ρ)另外,由于通过适合性判断工序S712判断为满足输出条件,因此,[式13]e2=V2< λ/Ρ在执行了 2次以上适合性判断工序S712的情况下,由于在前一次的适合性判断工 序S712中判断为不满足输出条件,因此[式14]
V\> y/jp此时,根据式5,[式I5]V1 · 1121 < ρ.·..·. Ie1I 二 | 2| < VP此外,在仅执行了一次适合性判断工序S712的情况下,也是% = 1,因此满足式 15。如上所述,整数分割部110利用扩展欧几里德互除法(extended Euclidean algorithm)来算出满足力· e 三 e2(mod ρ) >|eij<VP、0<e2<"/^的整数 ei 及整数 %。图8是表示本实施方式中的验证值算出部130的内部模块的结构的一例的详细模 块图。验证值算出部130根据有限群G的元s及元h、整数分割部110所算出的整数力 及整数e2,算出有限群G的元a( = ei · h-e2 · s)。验证值算出部130具有分割整数输入部131、元输入部132、索引算出部133、表生 成部134、表存储部135、验证初始值设定部141、倍算(multiplication)结果存储部142、 二基底加法部143、加法结果存储部144、倍算部145以及验证值输出部149。分割整数输入部131使用CPU911,输入整数分割部110所输出的表示整数力及整 数e2的数据。分割整数输入部131使用RAM914存储所输入的表示整数力及整数e2的数 据。元输入部132使用CPU911输入表示有限群G的元s及元h的数据。元输入部132 使用RAM914存储所输入的表示元s及元h的数据。索引算出部133使用CPU911输入分割整数输入部131所存储的表示整数%及整 数%的数据。索引算出部133使用CPU911判断整数力是正整数还是负整数。索引算出部 133使用RAM914存储表示判断结果的数据。索引算出部133使用CPU911,在判断为整数ei 是负整数的情况下,使整数ei的符号反转来设为正整数。索引算出部133使用CPU911根据所算出的整数ei的绝对值,来算出作为以η进 制表示整数ei的绝对值的各位的整数组(ei,i)(其中,i是大于等于0且小于等于k-1的整 数。η是预先确定的大于等于2的整数。)。即,索引算出部133使用CPU911算出满足以下 条件的整数组(eu)。[式16] 同样地,索引算出部133使用CPU911,根据整数%算出作为以η进制表示整数e2 的各位的整数组(e2,i)。艮P,[式17]
例如在η = 2的情况下,索引算出部133使用CPU911,按每个比特分解分别表示整 数ei的绝对值和整数e2的数据并设为(eu)、(e2,i)。在η = 4的情况下,索引算出部133 按每两个比特分解分别表示整数ei的绝对值和整数e2的数据并设为(eu)、(e2,i)。此外,k是关于满足i≥k的所有i满足eu = 0、e2a = 0的最小整数。例如,如果η = 2、ei = 23、e2 = 34 JlJe1 = (IOlll)2, e2 = (100010)2,因此 k = 6。索引算出部133使用RAM914存储表示所算出的整数组(e^)及(e2,i)的数据。表生成部134使用CPU911,输入元输入部132所存储的表示元s及元h的数据、以 及索引算出部133所判断的表示整数ei是正还是负的判断结果的数据。表生成部134使用CPU911,根据所输入的数据所表示的元S、元h和判断结果,算 出nXn个有限群G的元px,y( = eljSgn · χ · h-y · So其中,χ及y是大于等于0且小于等于 n-1的整数。ei,sgn是在整数力为正时为1,在整数力为负时为-1。)。例如,在n = 2的情况下,表生成部134算出四个元Ptl^P1,QA^p1,ρ此外,由于 元P。,。始终为单位元,因此表生成部134也可以仅算出其它三个元。 表存储部135使用RAM914存储表示表生成部134所算出的η X η个元px,y的数据。倍算结果存储部142使用RAM914,存储表示有限群G的元a’的数据,该元a’是算 出有限群G的元a的中途的值。加法结果存储部144使用RAM914存储表示有限群G的元a”的数据,该元a”是算 出有限群G的元a的中途的值。验证初始值设定部141使用CPU911,将表示有限群G的单位元的数据作为表示元 a’的数据而存储到倍算结果存储部142中。二基底加法部143使用CPU911,按i从大到小的顺序逐个输入索引算出部133所 存储的表示整数组(eu)及(e2,i)的数据。二基底加法部143使用CPU911,根据所输入的数据所表示的整数及整数%」, 从表存储部135所存储的表示有限群G的元px, y的数据中获取表示满足χ = eu、y = e2,, 的元px,y的数据作为表示元Pi的数据。二基底加法部143使用CPU911,输入倍算结果存储部142所存储的表示有限群G 的元a’的数据。二基底加法部143使用CPU911,根据所输入的数据所表示的有限群G的元a’和元 Pi,算出将元a’和元Pi相加而得到的元a’ +PiO二基底加法部143使用CPU911,将表示所算出的元^+Pi的数据作为表示元a”的 数据而存储到加法结果存储部144中。倍算部145使用CPU911,输入加法结果存储部144所存储的表示有限群G的元a” 的数据。倍算部145使用CPU911,根据所输入的数据所表示的元a”算出将元a”相加η次 得到的元η ·&”。在例如η = 2的情况下,倍算部145将元a”与元a”相加而算出元2 ^”。 在η = 4的情况下,倍算部145将元a”与元a”相加而算出2 · a”,进一步将所算出的元2 · a,,与元2 · a,,相力口而算出元4 · a,,。倍算部145使用CPU911,将表示所算出的元η *a”的数据作为表示元a’的数据而 存储到倍算结果存储部142中。重复以上处理,在二基底加法部143输入了所有的索引算出部133所存储的整数 ei, i及整数e2, i的情况下,验证值输出部149使用CPU911输入加法结果存储部144所存储 的表示有限群G的元a”的数据。验证值输出部149使用CPU911,将所输入的表示元a”的 数据作为表示元a的数据而输出。图9是表示本实施方式中的验证值算出部130算出有限群G的元a的验证值算出 处理的流程的一例的流程图。在索引算出工序S721中,索引算出部133使用CPU911,根据分割整数输入部131 所输入的整数ei算出整数ei,sgn。索引算出部133使用CPU911,如果整数ei为正,则将整数 ei, sgn设为1,如果整数e2为负,则将整数ei, sgn设为-1。索引算出部133使用CPU911,根据分割整数输入部131所输入的整数力算出k 个整数ei,i(其中,i是大于等于0且小于等于k-Ι的整数。)。例如,索引算出部133使用 CPU911算出将如下整数除以η而得到的余数并设为eu 该整数为不超过将整数ei的绝对 值除以η的i次方而得到的商的最大整数。同样地,索引算出部133使用CPU911,根据分割整数输入部131所输入的整数%算 出k个整数e2,i(其中,i是大于等于0且小于等于k-Ι的整数。)。例如,索引算出部133 使用CPU911算出将如下整数除以η而得到的余数并设为e2,i 该整数为不超过将整数e2除 以η的i次方而得到的商的最大整数。在表生成工序S722中,表生成部134使用CPU911,根据元输入部132所输入的元s 及元h、通过索引算出工序S721由索引算出部133算出的整数ei,sgn,算出η2个有限群G的 元Px,y(其中,Χ和y是大于等于0且小于等于η-1的整数。)。表生成部134使用CPU911, 算出从将元h相加ei, sgn · χ次得到的元中减去将元s相加y次得到的元而得到的元,并设 为元Ρχ, y°表存储部135使用RAM914存储表生成部134所算出的η2个元px,y。在验证初始值设定工序S723中,验证初始值设定部141使用CPU911将倍算结果 存储部142初始化。倍算结果存储部142使用RAM914存储有限群G的单位元作为元a’。在重复初始值设定工序S724中,二基底加法部143使用RAM914存储从整数k减 去1而得到的整数作为整数j。在二基底加法工序S725中,二基底加法部143使用CPU911,根据所存储的整数j, 从通过索引算出工序S721由索引算出部133算出的k个整数和整数e2,i中获取i = j 的整数ei,j和整数e2,jt)二基底加法部143使用CPU911,根据所获取的整数和整数e2a,从表存储部135 所存储的η2个有限群G的元px,y中获取满足χ = ei,」、y = e2,j的元px,y并设为元P”二基底加法部143使用CPU911,根据倍算结果存储部142所存储的有限群G的元 a’和所获取的元Pi,通过有限群G中的运算来算出将元a’和元Pi相加得到的元a’ +Pio加法结果存储部144使用RAM914,存储二基底加法部143所算出的元a’ +Pi作为 元a "ο
29
在重复更新工序S726中,二基底加法部143使用CPU911,算出从所存储的整数j 减去1而得到的整数j-Ι。二基底加法部143使用RAM914,存储所算出的整数j-Ι作为整 数在所算出的整数j为正或0的情况下,进入倍算工序S727。在所算出的整数j为负的情况下,进入验证值输出工序S728。在倍算工序S727中,倍算部145使用CPU911,根据加法结果存储部144所存储的 有限群G的元a”,通过有限群G中的运算来算出将元a”相加η次得到的元η · a”。倍算结果存储部142使用RAM914存储倍算部145所算出的元η · a”作为元a’。之后,返回到二基底加法工序S725。在验证值输出工序S728中,验证值输出部149使用CPU911,输出加法结果存储部 144所存储的有限群G的元a”作为元a。之后,结束验证值算出处理。如上所述,验证值算出部130利用加法群中的二基底标量倍算(或者乘法群中的 二基底取幂)算出元a。在以上处理中,将在j = i时通过二基底加法工序S725由加法结果存储部144存 储的元a”写为叫时,[式I8]ak = Pk, Bi = η · ai+1+Pi
k-1.·..·. α = α0 = y^ (η2 · Pi)
i=0在此,有限群G的元Pi*[式19] 因而,[式20]
k-1 k-1 在此,θ! · e = e2 (mod ρ),因此[式21]a = θ! · (h-e · s)如果h = e · s,则元a成为有限群G的单位元。另外,如果h兴e · s,则由于有限 群G的阶数ρ为素数,因此只要不是ei = 0,元a就不会成为有限群G的单位元。因而,通 过判断验证值算出部130所算出的元a是否为单位元,能够判断是否为h = e · S。接着,说明验证值算出部130算出有限群G的元a的计算所花费的时间。此外,在下面的说明中,将进行一次有限群G的群运算所花费的时间设为T。另外,除此之外的计算、数据的获取等所花费的时间远远小于T,因此忽视。在表生成工序S722中,表生成部134为了算出元pQ, y(y Φ 0,1)而进行η_2次群 运算,为了算出元Px,Q (X兴0,1)而进行Π-2次群运算,为了算出元Px,y(x兴0、y兴0)而进 行(n-1)2次群运算,因此表生成工序S722所花费的时间为(n2-3)T。在二基底加法工序S725中,二基底加法部143为了算出元a”而进行一次群运算。 二基底加法工序S725被重复进行k次,因此二基底加法工序S725所花费的时间全部为kT。在η为2的幂的情况下,在倍算工序S727中,倍算部145为了算出元a’而进行 log2n次群运算。倍算工序S727被重复进行k_l次,因此倍算工序S727所花费的时间全部 为 log2n(k-l)T。因而,整个验证值算出处理所花费的时间为[n2-3+k+log2n(k-l)]T。例如,在η = 2的情况下是2kT,在η = 4的情况下是(3k+12)T。为了进行比较,说明不分割整数e而算出e · s的情况下所花费的时间。将以η进制表示整数e的 情况下的位数设为k’。计算过程与验证值算出处理相同。但是,成为基底的元为1个,因此在预先算出的 表中存储η个元χ · s (χ是大于等于0且小于等于n-1的整数。)。生成表所花费的时间为(n-2)T。加法所花费的时间全部为k’ Τ。倍算所花费的时间全部为lo&n(k’ -DT0因而,算出e · s的整体所花费的时间为[n-2+k’ +Iog2Ii(k’ _1)]T。例如在η = 2 的情况下是(2k’ -1)T,在η = 4的情况下是3k’ Τ。在此,e是大于等于1且小于等于ρ-1的整数,因此k’与以η进制表示ρ时的位 数在概率上大致相等。与此相对,θι的绝对值及e2是大于等于1且小于▲的整数,因此k与以η进制表 示▲时的位数在概率上大致相等,是k’的大约一半。因此,当假设k = k’ /2时,整个验证值算出处理所花费的时间在η = 2的情况下 为k’T,在η = 4的情况下为(1.5k’+12)T。当设为有限群G的阶数ρ足够大时,整个验证 值算出处理所花费的时间为算出e · s的处理所花费的时间的大约一半。因而,判断是否为h = e · s所花费的时间成为大约一半。本实施方式中的验证装置100具有处理数据的处理装置(CPU911)、整数分割部 110、验证值算出部130以及验证判断部150。上述整数分割部110使用上述处理装置(CPU911)输入有限群G的阶数ρ和整数 e,根据所输入的阶数P和整数e,算出满Se1^eEe2 (mod ρ)的整数力和整数e2。上述验证值算出部130使用上述处理装置(CPU911),输入上述有限群G的元s和 上述有限群G的元h,根据所输入的元s及元h、上述整数分割部110所算出的整数ei及整 数e2,算出上述有限群G的元a( = ei · h-e2 · s)。上述验证判断部150使用上述处理装置(CPU911),根据上述验证值算出部130所 算出的元a,在上述元a为上述有限群G的单位元的情况下判断为验证成功。根据本实施方式中的验证装置100,在由验证值算出部130根据整数分割部110所算出的整数ei和整数e2算出的元a为有限群G的单位元的情况下,验证判断部150判断为 验证成功,因此,在h = e-s的情况下,能够判断为验证成功。如果在验证值算出部130中 算出元a的处理所花费的时间小于算出e · s所花费的时间,则起到能够缩短判断是否为h =e · s的处理所花费的时间的效果。本实施方式中的整数分割部110使用上述处理装置(CPU911),算出满足如下条件 的整数ei和整数e2 上述整数ei的绝对值小于上述阶数P的平方根,并且上述整数e2小于 上述阶数P的平方根。根据本实施方式中的验证装置100,由整数分割部110算出满足整数ei的绝对值 小于阶数P的平方根并且整数e2小于阶数P的平方根这一条件的整数ei和整数e2,因此起 到能够缩短在验证值算出部130中算出元a的处理所花费的时间的效果。本实施方式中的验证装置100还具有存储数据的存储装置(RAM914、磁盘装置920
等 ο上述整数分割部110具有第一剩余存储部114、第二剩余存储部115、初始值设定 部113、适合性判断部116、第三剩余算出部117以及分割整数输出部129。上述第一剩余存储部114使用上述存储装置(RAM914)存储整数V1。上述第二剩余存储部115使用上述存储装置(RAM914)存储整数v2。上述初始值设定部113使用上述处理装置(CPU911),将上述阶数ρ作为上述整数 V1而存储到上述第一剩余存储部114中,将上述整数e作为上述整数V2而存储到上述第二 剩余存储部115中。上述适合性判断部116使用上述处理装置(CPU911),在上述第二剩余存储部115 所存储的整数V2小于上述阶数P的平方根的情况下,判断为满足输出条件。上述第三剩余算出部117使用上述处理装置(CPU911),在上述适合性判断部116 没有判断为满足输出条件的情况下,根据上述第一剩余存储部114所存储的整数V1和上述 第二剩余存储部115所存储的整数V2,算出将上述整数V1除以上述整数V2而得到的余数并 设为整数v3,将上述第二剩余存储部115所存储的整数V2作为上述整数V1而存储到上述 第一剩余存储部114中,将所算出的整数V3作为上述整数V2而存储到上述第二剩余存储部 115 中。上述分割整数输出部129使用上述处理装置(CPU911),在上述适合性判断部116 判断为满足输出条件的情况下,输出上述第二剩余存储部115所存储的整数V2作为上述整
数e2。根据本实施方式中的验证装置100,起到能够在短时间内算出满足力-e ε e2(mod P) >|ei|<VP、()<&<▲这一条件的整数e2的效果。本实施方式中的整数分割部110还具有第一系数存储部124、第二系数存储部 125、商算出部126以及第三系数算出部127。上述第一系数存储部124使用上述存储装置(RAM914)存储整数、。上述第二系数存储部125使用上述存储装置(RAM914)存储整数t2。上述初始值设定部113进一步使用上述处理装置(CPU911),作为上述整数、将0 存储到上述第一系数存储部124中,作为上述整数t2将1存储到上述第二系数存储部125
32中。上述商算出部126使用上述处理装置(CPU911),根据上述第一剩余存储部114所 存储的整数V1和上述第二剩余存储部115所存储的整数V2,算出不超过将上述整数V1除以 上述整数V2而得到的商的最大整数并设为整数q。上述第三系数算出部127使用上述处理装置(CPU911),在上述适合性判断部116 没有判断为满足输出条件的情况下,根据上述第一系数存储部124所存储的整数^、上述第 二系数存储部125所存储的整数t2以及上述商算出部126所算出的整数q,算出从上述整 数、减去上述整数t2与上述整数q之积而得到的整数并设为整数t3,将上述第二系数存储 部125所存储的整数t2作为上述整数^而存储到上述第一系数存储部124中,将所算出的 整数t3作为上述整数t2而存储到上述第二系数存储部125中。上述分割整数输出部129进一步使用上述处理装置(CPU911),在上述适合性判断 部116判断为满足输出条件的情况下,输出上述第二系数存储部125所存储的整数t2作为 上述整数ei。根据本实施方式中的验证装置100,起到能够在短时间内算出满足ei-e ε e2(mod P) >|ei|<VP >()<e2<A^这一条件的整数ei的效果。本实施方式中的验证值算出部130使用上述处理装置(CPU911),算出Σ (η1 · Pi) (其中,η是大于等于2的规定的整数。i是大于等于0且小于等于k的整数。k是以η进 制表示上述整数ei的绝对值和上述整数e2时的位数的最大值。Pi是上述有限群G的元,Pi =eljSgn · · h-e2ji .s。ei,sgn是1或-1。及e2a是大于等于0且小于等于n_l的整 数,ei = ei,sgn· Σ (η1 · eiji),e2 =Σ (n^eu)。),并设为上述有限群 G 的元 a。根据本实施方式中的验证装置100,验证值算出部130算出元a所花费的时间与以 η进制表示整数ei的绝对值和整数e2时的位数k成比例,因此起到能够缩短算出元a所花 费的时间的效果。本实施方式中的密文解密装置200具有存储数据的存储装置(RAM914、磁盘装置 920等)、处理数据的处理装置(CPU911等)、密钥存储部210、密文输入部220、密文验证部 230、验证装置100以及解密文生成部260。上述密钥存储部210使用上述存储装置,存储用于解密密文的密钥。上述密文输入部220使用上述处理装置输入密文。上述密文验证部230使用上述处理装置,根据上述密钥存储部210所存储的密钥 和上述密文输入部220所输入的密文,算出输入到上述验证装置100的整数e、上述有限群 G的元s以及上述有限群G的元h。上述验证装置100输入上述密文验证部230所算出的整数e、上述有限群G的元s 以及上述有限群G的元h,判断验证是否成功。上述解密文生成部260使用上述处理装置,在上述验证装置100判断为验证成功 的情况下,利用上述密钥存储部210所存储的密钥对上述密文输入部220所输入的密文进 行解密来生成解密文。根据本实施方式中的密文解密装置200,验证所输入的密文的匹配性,在验证成功 的情况下生成解密文,因此能够防止对非法者提供解读密文的线索。另外,通过由验证装置
33100判断是否为h = e *s,来验证密文的匹配性,因此起到能够缩短验证所花费的时间的效^ ο通过由计算机执行使计算机作为验证装置100发挥功能的计算机程序来能够实 现本实施方式中的验证装置100。根据本实施方式中的计算机程序,在由验证值算出部130根据整数分割部110所 算出的整数ei和整数e2算出的元a为有限群G的单位元的情况下,验证判断部150判断为 验证成功,因此起到能够实现如下验证装置100的效果在h = e · s的情况下能够判断为 验证成功,如果在验证值算出部130中算出元a的处理所花费的时间小于算出e 所花费 的时间,则能够缩短判断是否为h = e · s的处理所花费的时间。由本实施方式中的验证装置100验证匹配性的验证方法具有以下工序。上述处理装置(CPU911)输入有限群G的阶数ρ和整数e,根据所输入的阶数ρ和 整数e算出满足ei · e ε e2(mod ρ)的整数力和整数e2。上述处理装置(CPU911)输入上述有限群G的元s和上述有限群G的元h,根据所 输入的元s及元h、所算出的整数ei和整数e2,算出上述有限群G的元a( = ei · h-e2 · s)。上述处理装置(CPU911)根据所算出的元a,在上述元a为上述有限群G的单位元 的情况下,判断为验证成功。根据本实施方式中的验证方法,在处理装置(CPU911)根据所算出的整数力和整 数e2算出的元a为有限群G的单位元的情况下,判断为验证成功,因此起到如下效果在h =e · s的情况下能够判断为验证成功,如果算出元a的处理所花费的时间小于算出e · s 所花费的时间,则能够缩短判断是否为h = e · s的处理所花费的时间。以上说明的密文解密装置200是公开密钥密码解密装置。密文解密装置200具有 密文合法性验证装置(验证装置100),该密文合法性验证装置通过整数的剩余类所形成的 群等乘法群中的指数取幂或者(超)椭圆曲线上的点所形成的群等加法群中的标量倍算, 验证将乘法群的元S相乘e次得到的元S6或将加法群的元S相加e次得到的元e · S是否 与已知的元h —致,由此判断密文是否正确。密文合法性验证装置(验证装置100)具有分割指数部(整数e)的装置(整数分割部110);使用所分割的指数(整数ei和整数e2),计算进行乘法群中的二基底指数取幂、或 者(超)椭圆曲线上的点所形成的群等的加法群中的二基底标量倍算而得到的值(hel-Se2 或力·!!-^·。的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的整数分割部110是如下计算装置输入指数(整数)e和在密码中使用 的乘法群或加法群的群阶数P,计算具有群阶数P的比特长度的一半比特长度的两个整数 一工、e2 (其中,G1 · e = e2 (mod ρ))。验证装置100验证Se2 · h_el = 1 (乘法描述)或e2 · S^1 · h = 0 (加法描述)。以上说明的整数分割部110通过计算扩展欧几里德互除法来分割指数部。以上说明的整数分割部110在两个整数的重复除法中具有计算装置(第三剩余算出部117),进行除法的整数V2和被除的整数V1分别是前一步骤的除法中的剩余V3和前一步骤的进行除法的整数V2 ;以及计算装置(适合性判断部116),判断各步骤的除法结果的剩余V2大于等于某一固 定数)、或者小于等于某一固定数(λ/F )β整数分割部110除了通过上述说明的过程以外,例如还可以通过以下过程算出整
数β!禾口 e2。首先,整数分割部110使用CPU911,输入正整数ρ、满足1 < e < ρ的整数e、ρ的 平方根
O接着,整数分割部110使用RAM914,将U1 — 1,V1 — p,U2 — 0,V2 — e作为初始值
而进行存储。接着,整数分割部110使用CPU911,检查是否为。如果’则整数分割部110使用CPU911,计算q — V1A2(抹去零数(the fraction is omitted))、v3 一 V1 mod v2、u3 一 u「q ·ιι2,使用 RAM914存储为 V1 一 v2、v2 一 v3、 U1 — u2、u2 — U30之后,返回到是否为V2<V^的检查,如果V2>V^,则重复相同的计算。如果V2<V^,则整数分割部110使用CPU911,计算力一(V2-U2 · p) A1,并设为
e2 一 V2 ο最后,整数分割部110使用CPU911输出ei、e2。通过这种过程,也成为ei · e ε e2 (mod ρ),θι、e2的比特长度为ρ的比特长度的大
约一半。(实施方式2)使用图10 图15说明实施方式2。图10是表示本实施方式中的基于ID的公开密钥密码系统820Α的整体结构的一 例的系统结构图。基于ID的公开密钥密码系统820Α是将用于识别密文解密装置200Α的邮件地址 等识别数据用作密文解密装置200Α的公开密钥的密码通信系统。由于不需要证明密文解 密装置200Α与公开密钥之间的对应关系,因此不需要公开密钥证书(certificate)、认证 中心(certificate authority)等。基于ID的公开密钥密码系统820A具有密码参数设定装置810A、密钥生成装置 300A、密文生成装置400A以及密文解密装置200A。密码参数设定装置810A确定在基于ID的公开密钥密码系统820A中利用的密码 参数。密码参数设定装置810A所确定的密码参数被公开于基于ID的公开密钥密码系统 820A的用户。在由密码参数设定装置810A确定的密码参数中例如有阶数P、加法群G1、加 法群G1的元gl、加法群G2、加法群G2的元&、乘法群Gt、配对(pairing) e、散列函数H1、散列 函数H2、散列函数H3、散列函数H4等。阶数ρ是素数。
35生成元。加法群G2的阶数是与加法群G1同样的P。元&是加法群G2的生成元。乘法群Gt的阶数是与加法群G1和加法群G2同样的ρ。配对e是将加法群G1的元和加法群G2的元的组转变到乘法群Gt的元(配对值) 的映射。配对e具有双线性。S卩,关于所有的U、V、a、b,是e (a· u,b· ν) =e(u,v)ab (其 中,u是加法群&的元。ν是加法群62的元。a和b是整数。)。另外,加法群G1的元&与 加法群G2的元&的配对值e (gl, g2)不是乘法群Gt的单位元。散列函数H1是根据任意长度的比特串生成大于等于1且小于等于P-I的整数的 散列函数。散列函数H2是根据乘法群Gt的元生成规定长度的比特串的散列函数。散列函数H3是根据规定长度的比特串生成大于等于1且小于等于ρ-Ι的整数的 散列函数。散列函数H4是根据规定长度的比特串生成规定长度的比特串的散列函数。此外,在这些密码参数预先被确定的情况下,密码参数设定装置810A也可以不确 定这些密码参数。另外,密码参数设定装置810A生成秘密随机数s和根据秘密随机数s生成的公 开元R。秘密参数设定装置810A所生成的秘密随机数s以保密状态通知给密钥生成装置 300A。另外,密码参数设定装置810A所生成的公开元R被公开于基于ID的公开密钥密码 系统820A的用户。公开元R中包含有与秘密随机数s有关的信息,但是事实上无法根据公 开元R求出秘密随机数S。因此,基于ID的公开密钥密码系统820A的用户通过使用公开元 R进行运算,能够利用秘密信息而不知道秘密信息。密钥生成装置300A以保密状态保持从密码参数设定装置810A通知的秘密随机数 s。密钥生成装置300A根据被公开的密码参数、被公开的密文解密装置200A的识别数据ID 以及所保持的秘密随机数s,生成密文解密装置200A的秘密密钥Did。密钥生成装置300A 所生成的秘密密钥Did以保密状态被通知给密文解密装置200A。密文生成装置400A根据被公开的密码参数、公开元R、密文解密装置200A的识别 数据ID,生成密文c和共用密钥K。密文生成装置400A利用所生成的共用密钥K对消息M 进行加密,来生成加密消息CM。密文生成装置400A对密文解密装置200A发送所生成的密 文c和加密消息CM。密文解密装置200A以保密状态保持密钥生成装置300A所生成的秘密密钥Did。密 文解密装置200A接收密文生成装置400A所发送的密文c和加密消息CM。密文解密装置 200A根据被公开的密码参数,利用所保持的秘密密钥Did对所接收到的密文c进行解密,生 成与密文生成装置400A相同的共用密钥K。密文解密装置200A利用所生成的共用密钥K 对加密消息CM进行解密,来生成与消息M相同的消息M,。此外,密码参数设定装置810A、密钥生成装置300A、密文生成装置400A、密文解密 装置200A的外观、硬件资源与在实施方式1中说明的密文解密装置200的外观、硬件资源 相同。图11是表示本实施方式中的密码参数设定装置810A的一部分功能模块的结构的 一例的模块结构图。
36
密码参数设定装置8IOA具有密码参数存储部819A、公开元生成部811A、秘密随机 数输出部814A、公开元输出部815A。密码参数存储部819A使用磁盘装置920存储表示所公开的密码参数的数据。公开元生成部811A根据密码参数存储部819A所存储的密码参数,生成秘密随机 数s和公开元R。公开元生成部811A具有秘密随机数生成部812A、公开元算出部813A。秘密随机数生成部812A使用CPU911,输入表示密码参数存储部819A所存储的密 码参数中的阶数P的数据。秘密随机数生成部812A使用CPU911,根据所输入的数据所表示 的阶数P,随机地生成大于等于1且小于等于P-I的整数并设为秘密随机数S。秘密随机数 生成部812A使用RAM914,存储表示所生成的秘密随机数s的数据。公开元算出部813A使用CPU911,输入表示密码参数存储部819A所存储的密码参 数中的加法群G1和元gl的数据、秘密随机数生成部812A所存储的表示秘密随机数s的数 据。公开元算出部813A使用CPU911,根据所输入的数据所表示的加法群G1、元gl以及秘密 随机数s,通过加法群G1中的运算,算出将元gl相加s次得到的元并设为公开元R。公开元 算出部813A使用RAM914,存储表示所算出的公开元R的数据。秘密随机数输出部814A使用CPU911,输入秘密随机数生成部812A所存储的表示 秘密随机数s的数据。秘密随机数输出部814A使用CPU911,输出表示所输入的秘密随机数 s的数据。秘密随机数输出部814A所输出的秘密随机数s以保密状态被通知给密钥生成装 置 300A。公开元输出部815A使用CPU911,输入公开元算出部813A所存储的表示公开元R 的数据。公开元输出部815A使用CPU911,输出表示所输入的公开元R的数据。公开元输出部815A所输出的公开元R被公开于基于ID的公开密钥密码系统820A 的用户。图12是表示本实施方式中的密钥生成装置300A的功能模块的结构的一例的模块 结构图。密钥生成装置300A具有密码参数存储部390A、秘密随机数存储部330A、识别输入 部340A、秘密密钥生成部350A、秘密密钥输出部360A。密码参数存储部390A使用磁盘装置920,预先存储表示所公开的密码参数的数 据。秘密随机数存储部330A使用具有防篡改性的存储装置,以保密状态存储表示从 密码参数设定装置810A通知的秘密随机数s的数据。识别输入部340A使用CPU911,关于应生成秘密密钥的密文解密装置200A,输入作 为用于识别密文解密装置200A的识别数据的任意长度的比特串ID。比特串ID例如是表示 作为密文解密装置200A的邮件地址的字符串的数据。识别输入部340A使用RAM914存储 所输入的比特串ID。秘密密钥生成部350A根据密码参数存储部390A所存储的密码参数、秘密随机数 存储部330A所存储的秘密随机数s和识别输入部340A所输入的比特串ID,生成秘密密钥
DID ο
秘密密钥生成部350A具有散列值算出部351A、整数加法部352A、倒数算出部 353A、秘密密钥算出部354A。散列值算出部35IA使用CPU911,输入表示密码参数存储部390A所存储的密码参 数中的散列函数H1的数据和识别输入部340A所存储的比特串ID。散列值算出部351A使 用CPU911,根据所输入的数据所表示的散列函数&和所输入的比特串ID,算出利用散列函 数氏将比特串ID散列得到的散列值H1 (ID)。此外,散列值H1(ID)是大于等于1且小于等 于P-I的整数。散列值算出部35认使用肌11914,存储表示所算出的散列值!11(10)的数据。整数加法部352A使用CPU911,输入表示密码参数存储部390A所存储的密码参数 中的阶数P的数据、表示秘密随机数存储部330A所存储的秘密随机数S的数据以及表示散 列值算出部351A所存储的散列值H1 (ID)的数据。整数加法部352A使用CPU911,根据所输 入的数据所表示的阶数P、秘密随机数s以及散列值H1 (ID),算出作为将秘密随机数s与散 列值H1(ID)之和除以阶数ρ而得到的余数的整数s+HJID)。整数加法部352A使用RAM914, 存储表示所算出的整数(ID)的数据。倒数算出部353A使用CPU911,输入表示密码参数存储部390A所存储的密码参 数中的阶数P的数据以及表示整数加法部352A所存储的整数s+Hi (ID)的数据。倒数算 出部353A使用CPU911,根据所输入的数据所表示的阶数ρ和整数s+HJID),算出整数1/ [s+HJID)],将该整数l/ts+H^ID)]与整数s+H^ID)之积除以阶数ρ而得到的余数为1。 倒数算出部353Α使用RAM914,存储表示所算出的整数IzT^H1 (ID)]的数据。秘密密钥算出部354A使用CPU911,输入表示密码参数存储部390A所存储的密码 参数中的加法群G2和元g2的数据以及表示倒数算出部353A所算出的整数1/ [s+Hi (ID)]的 数据。秘密密钥算出部354A使用CPU911,根据所输入的数据所表示的加法群G2、元g2以及 整数1/M1 (ID)],通过加法群G2中的运算,算出将元g2相加1/M1 (ID)]次得到的元并 设为秘密密钥Did。秘密密钥算出部354A使用RAM914存储表示所算出的秘密密钥Did的数 据。秘密密钥输出部360A使用CPU911,输入表示秘密密钥算出部354A所存储的秘密 密钥Did的数据。秘密密钥输出部360A使用CPU911输出表示所输入的秘密密钥Did的数 据。秘密密钥输出部360A所输出的秘密密钥Did以保密状态被通知给密文解密装置 200A。图13是表示本实施方式中的密文生成装置400A的功能模块的结构的一例的模块 结构图。密文生成装置400A具有密码参数存储部490A、识别存储部410A、共用密钥生成部 420A、共用密钥存储部430A、消息输入部440A、消息加密部450A、加密消息输出部460A、密 文输出部470A。密码参数存储部490A使用磁盘装置920,预先存储表示所公开的密码参数(包含 公开元R)的数据。识别存储部410A使用磁盘装置920,存储作为密文的发送对象的密文解密装置 200A的识别数据、即比特串ID。共用密钥生成部420A根据密码参数存储部490A所存储的密码参数和识别存储部410A所存储的比特串ID,生成共用密钥K和用于向密文解密装置200A通知共用密钥K的 密文。共用密钥生成部420A具有秘密比特串生成部421A、秘密整数算出部422A、识别元 算出部423A、密码元算出部424A、秘密配对值算出部425A、密码比特串算出部426A、共用密 钥算出部427A。秘密比特串生成部42IA使用CPU911随机地生成规定长度的比特串m。秘密比特 串生成部42IA使用RAM914存储所生成的比特串m。秘密整数算出部422A使用CPU911,输入表示密码参数存储部490A所存储的密码 参数中的散列函数H3的数据和秘密比特串生成部421A所存储的比特串m。秘密整数算出 部422A使用CPU911,根据所输入的数据所表示的散列函数H3和所输入的比特串m,算出利 用散列函数H3将比特串m散列得到的散列值r。散列值r是大于等于1且小于等于p_l的 整数。秘密整数算出部422A使用RAM914存储表示所算出的散列值r的数据。识别元算出部423A使用CPU911,输入表示密码参数存储部490A所存储的密码参 数中的散列函数H1、加法群G1、元gl以及公开元R的数据、识别存储部410A所存储的比特 串ID。识别元算出部423A使用CPU911,根据所输入的数据所表示的散列函数&和所输入 的比特串ID,算出利用散列函数H1将比特串ID散列得到的散列值H1 (ID)。散列值H1(ID) 是大于等于1且小于等于P-I的整数。识别元算出部423A使用CPU911,根据所输入的数 据所表示的加法群G1和元gl以及所算出的散列值H1(ID),通过加法群G1中的运算,算出将 元&相加H1(ID)次得到的元H1(ID) .gl。识别元算出部423A使用CPU911,根据所输入的 数据所表示的加法群G1、公开元R以及所算出的元&(10) · gl,通过加法群G1中的运算,算 出将公开元R与元H1 (ID) · &相加得到的元并设为元Q。识别元算出部423A使用RAM914 存储表示所算出的元Q的数据。由于R = s · gl,因此识别元算出部423A所算出的元Q是[式22]Q = IHH1(ID)I1= (s+氏(ID)) · gl密码元算出部424A使用CPU911,输入表示密码参数存储部490A所存储的密码参 数中的加法群G1的数据、表示秘密整数算出部422A所存储的散列值r的数据以及表示识 别元算出部423A所存储的元Q的数据。密码元算出部424A使用CPU911,根据所输入的数 据所表示的加法群G1、散列值r以及元Q,通过加法群G1中的运算,算出将元Q相加r次得 到的元并设为元U。密码元算出部424A使用RAM914存储表示所算出的元U的数据。秘密配对值算出部425A使用CPU911,输入表示密码参数存储部490A所存储的密 码参数中的元gl、元&、配对e以及乘法群Gt的数据、以及秘密整数算出部422A所存储的 表示散列值r的数据。秘密配对值算出部425A使用CPU911,根据所输入的数据所表示的元 gl、元&以及配对e,算出元81、元&以及配对值e(gl,&)。配对值e(gl,g2)是乘法群Gt的 元。此外,秘密配对值算出部425A也可以预先算出配对值e(gl,g2),使用磁盘装置920存 储表示所算出的配对值e(gl,g2)的数据。秘密配对值算出部425A使用CPU911,根据所输 入的数据所表示的散列值r和所算出的配对值e (gl,,通过乘法群Gt中的运算,算出将配 对值e (gl, g2)相乘r次得到的元并设为元α。秘密配对值算出部425Α使用RAM914存储
39表示所算出的元α的数据。密码比特串算出部426Α使用CPU911,输入表示密码参数存储部490Α所存储的密 码参数中的散列函数H2的数据、秘密比特串生成部421Α所存储的比特串m以及秘密配对 值算出部425A所存储的表示元α的数据。密码比特串算出部426Α使用CPU911,根据所 输入的数据所表示的散列函数H2和元α,算出利用散列函数H2将元α散列得到的散列值 H2(Q)0散列值H2(Ci)是规定长度的比特串。密码比特串算出部426Α使用CPU911,根据 所输入的比特串m以及所算出的散列值H2 ( α ),取得比特串m与散列值H2 ( α )之间的每个 比特的逻辑异或并设为比特串V。密码比特串算出部426Α使用RAM914存储所算出的比特 串V。共用密钥算出部427Α使用CPU911,输入表示密码参数存储部490Α所存储的密码 参数中的散列函数H4的数据以及秘密比特串生成部421Α所存储的比特串m。共用密钥算 出部427A使用CPU911,根据所输入的数据所表示的散列函数H4和所输入的比特串m,算出 利用散列函数H4将比特串m散列得到的散列值并设为共用密钥K。共用密钥K是规定长度 的比特串。共用密钥算出部427A使用RAM914存储所算出的共用密钥K。共用密钥存储部430A使用CPU911,输入共用密钥算出部427A所存储的共用密钥 K。共用密钥存储部430A使用RAM914存储所输入的共用密钥K。密文输出部470A使用CPU911,输入密码元算出部424A所存储的表示元U的数据 以及密码比特串算出部426A所存储的比特串V。密文输出部470A使用CPU911,生成包含 所输入的表示元U的数据和比特串V的数据并作为密文c而输出。消息输入部440A使用CPU911,输入要对密文解密装置200A发送的消息M。消息 输入部440A使用磁盘装置920存储所输入的消息M。消息加密部450A使用CPU911,输入共用密钥存储部430A所存储的共用密钥K以 及消息输入部440A所存储的消息M。消息加密部450A使用CPU911,根据所输入的消息M 和共用密钥K,利用共用密钥K对消息M进行加密并设为加密消息CM。消息加密部450A使 用磁盘装置920存储所生成的加密消息CM。加密消息输出部460A使用CPU911,输入消息加密部450A所存储的加密消息CM。 加密消息输出部460A使用CPU911输出所输入的加密消息CM。密文输出部470A所输出的密文c和加密消息输出部460A所输出的加密消息CM 被发送到密文解密装置200A。图14是表示本实施方式中的密文解密装置200A的功能模块的结构的一例的模块 结构图。密文解密装置200A具有密码参数存储部290A、识别存储部241A、识别元算出部 242A、识别元存储部243A、密钥存储部210A、密文输入部220A、密文验证部230A、验证装置 100A、解密文生成部260A、共用密钥存储部270A、加密消息输入部281A、消息解密部282A、 解密消息输出部283A。密码参数存储部290A使用磁盘装置920,预先存储表示所公开的密码参数(包含 公开元R)的数据。识别存储部241A使用磁盘装置920存储用于识别密文解密装置200A自身的比特 串ID。
识别元算出部242A使用CPU911,输入表示密码参数存储部290A所存储的密码参 数中的散列函数&、加法群&、元gl以及公开元R的数据、识别存储部241A所存储的比特串 ID。识别元算出部242A使用CPU911,根据所输入的数据所表示的散列函数&、所输入的比 特串ID,算出利用散列函数氏将比特串ID散列得到的散列值H1 (ID)。散列值H1(ID)是大 于等于1且小于等于P-I的整数。识别元算出部242A使用CPU911,根据所输入的数据所表 示的加法群G1、元gl以及所算出的散列值H1(ID),通过加法群G1中的运算,算出将元^相 WH1(ID)次得到的元H1 (ID) *gl。识别元算出部242A使用CPU911,根据所输入的数据所 表示的加法群G1、公开元R以及所算出的元氏(10) · gl,通过加法群G1中的运算,算出将公 开元R与元H1 (ID) 加得到的元并设为元Q。识别元算出部242A使用RAM914存储表 示所算出的元Q的数据。识别元存储部243A使用CPU911,输入识别元算出部242A所存储的表示元Q的数 据。识别元存储部243A使用磁盘装置920存储表示所输入的元Q的数据。对于密文解密装置200A来说,用于识别自身的比特串ID是固定的,因此元Q的值 也是固定的。因而,密文解密装置200A不需要在每次输入密文c时都重新计算元Q,如果在 输入密文c之前由识别元算出部242A算出元Q并由识别元存储部243A存储,则能够减少 输入了密文c时的计算量。密钥存储部210A使用具有防篡改性的存储装置,以保密状态存储预先由密钥生 成装置300A生成的表示秘密密钥Did的数据。密文输入部220A使用CPU911,输入从密文生成装置400A接收到的密文C。密文 输入部220A使用CPU911,从所输入的密文c获取表示元U和比特串V的数据。密文输入部 220A使用RAM914存储表示所获取的元U和比特串V的数据。密文验证部230A根据密码参数存储部290A所存储的密码参数、密钥存储部210 所存储的秘密密钥Did、密文输入部220A所输入的密文c所表示的元U、比特串V,生成输入 到验证装置100A的数据。密文验证部230A具有配对值算出部231A、比特串算出部232A以及整数算出部 233A。配对值算出部23IA使用CPU911,输入表示密码参数存储部290A所存储的密码参 数中的配对e的数据、密钥存储部210A所存储的表示秘密密钥Did的数据以及密文输入部 220所存储的表示元U的数据。配对值算出部23IA使用CPU911,根据所输入的数据所表示 的配对e、元U以及秘密密钥Did,利用配对e算出元U与秘密密钥Did的配对值并设为配对 值α。配对值α是乘法群Gt的元。配对值算出部231Α使用RAM914存储表示所算出的配 对值α的数据。利用配对e的双线性,配对值算出部23IA所算出的配对值α为[式 2幻 S卩,由配对值算出部231A算出的配对值α与密文生成装置400Α的秘密配对值算出部425A所算出的乘法群&的元α相等。比特串算出部232Α使用CPU911,输入表示密码参数存储部290Α所存储的密码参 数中的散列函数吐的数据、密文输入部220所存储的比特串V以及配对值算出部231Α所存 储的表示配对值α的数据。比特串算出部232Α使用CPU911,根据所输入的数据所表示的 散列函数H2和配对值α,算出利用散列函数H2将配对值α散列得到的散列值H2 ( α )。散 列值H2(Ci)是规定长度的比特串。比特串算出部232Α使用CPU911,根据所输入的比特串 V和所算出的散列值H2 ( α ),取得比特串V与散列值H2 ( α )之间的每个比特的逻辑异或并 设为比特串m。比特串算出部232A使用RAM914存储所算出的比特串m。配对值算出部231A所算出的配对值α与密文生成装置400Α的秘密配对值算出 部425Α所算出的乘法群&的元α相等,因此由比特串算出部232Α算出的比特串m与密 文生成装置400A的秘密比特串生成部421A所生成的比特串m相等。整数算出部233A使用CPU911,输入表示密码参数存储部290A所存储的密码参数 中的散列函数H3的数据以及比特串算出部232A所存储的比特串m。整数算出部233A使用 CPU911,根据所输入的数据所表示的散列函数氏和所输入的比特串m,算出利用散列函数H3 将比特串m散列得到的散列值并设为散列值r。散列值r是大于等于1且小于等于p_l的 整数。整数算出部233A使用RAM914存储表示所算出的散列值r的数据。比特串算出部232A所算出的比特串m与密文生成装置400A的秘密比特串生成部 421A所生成的比特串m相等,因此整数算出部233A所算出的散列值r与密文生成装置400A 的秘密整数算出部422A所算出的散列值r相等。因而,如果密文输入部220A所输入的密文c是合法密文,则U = r · Q成立。验证装置100A判断是否为U = r*Q,在是U = r*Q的情况下,判断为验证成功。验证装置100A是与实施方式1中说明的验证装置100相同的装置。验证装置100A使用CPU911,输入表示密码参数存储部290A所存储的密码参数中 的阶数ρ的数据作为表示在实施方式ι中说明的阶数P的数据。验证装置100A使用CPU911,输入整数算出部233A所存储的表示散列值r的数据 作为表示在实施方式1中说明的整数e的数据。验证装置100A使用CPU911,输入密文输入部220所存储的表示元U的数据作为表 示在实施方式1中说明的元h的数据。验证装置100A使用CPU911,输入识别元存储部243A所存储的表示元Q的数据作 为表示在实施方式1中说明的元s的数据。验证装置100A使用CPU911,根据所输入的数据所表示的阶数ρ和散列值r,算出
满足ei TEe2Onod )、>1|<^、()<^2<^/^的整数61和整数%。验证装置100A使用
CPU911,根据所输入的数据所表示的元U、元Q以及所算出的整数ei和整数e2,通过加法群 G1中的运算来算出加法群G1的元a = ei · U-e2 · Q0验证装置100A使用CPU911,根据所算 出的元a判断元a是否为加法群G1的单位元。验证装置100A使用CPU911,在元a为加法 群&的单位元的情况下,判断为“验证成功”,在元a不是加法群G1的单位元的情况下,判断 为“验证失败”。验证装置100A使用CPU911输出表示验证结果的数据。
42
解密文生成部260A使用CPU911,输入表示验证装置100A所输出的验证结果的数 据。在所输入的数据所表示的验证结果为“验证成功”的情况下,解密文生成部260A使用 CPU911生成共用密钥K。解密文生成部260A在验证结果为“验证失败”的情况下,不生成 共用密钥K。此外,在验证结果为“验证失败”的情况下,解密文生成部260A也可以生成不 对非法者提供线索的随机的共用密钥K。在判断结果为“验证成功”的情况下,解密文生成部260A使用CPU911,输入表示密 码参数存储部290A所存储的密码参数中的散列函数H4的数据以及比特串算出部232A所 存储的比特串m。解密文生成部260A使用CPU911,根据所输入的数据所表示的散列函数扎 和所输入的比特串m,算出利用散列函数H4将比特串m散列得到的散列值并设为共用密钥 K。共用密钥K是规定长度的比特串。解密文生成部260A使用RAM914存储所算出的共用 密钥K。如果密文输入部220A所输入的密文c是合法密文,则比特串算出部232A所算出 的比特串m与密文生成装置400A的秘密比特串生成部421A所生成的比特串m相等,因此 解密文生成部260A所算出的共用密钥K与密文生成装置400A的共用密钥算出部427A所 算出的共用密钥K相等。因而,密文生成装置400A与密文解密装置200A能够共有相同的共用密钥K。共用密钥存储部270A使用CPU911,输入解密文生成部260A所存储的共用密钥K。 共用密钥存储部270A使用RAM914存储所输入的共用密钥K。加密消息输入部28IA使用CPU911,输入从密文生成装置400A接收到的加密消息 CM。加密消息输入部281A使用磁盘装置920存储所输入的加密消息CM。消息解密部282A使用CPU911,输入共用密钥存储部270A所存储的共用密钥K以 及加密消息输入部281A所存储的加密消息CM。消息解密部282A使用CPU911,利用所输入 的共用密钥K对所输入的加密消息CM进行解密来生成消息M’。消息解密部282A使用磁盘 装置920存储所生成的消息M,。密文生成装置400A与密文解密装置200A共有相同的共用密钥K,因此由消息解密 部282A生成的消息M,与密文生成装置400A的消息输入部440A所输入的消息M相同。解密消息输出部283A使用CPU911,输入消息解密部282A所存储的消息M,。解密 消息输出部283A使用CPU911输出所输入的消息M,。图15是表示本实施方式中的密文解密装置200A对密文c进行解密的密文解密处 理流程的一例的流程图。在配对值算出工序S731A中,配对值算出部231A使用CPU911,根据密文输入部 220A所输入的元U和密钥存储部210A所存储的秘密密钥Did,利用配对e算出元U与秘密 密钥Did之间的配对值并设为配对值α。在比特串算出工序S732A中,比特串算出部232Α使用CPU911,根据通过配对值算 出工序S731A由配对值算出部231Α算出的配对值α,算出利用散列函数H2将配对值α散 列得到的散列值吐…)。比特串算出部232Α使用CPU911,根据密文输入部220Α所输入的 比特串V和所算出的散列值H2 ( α ),取得比特串V与散列值H2 ( α )之间的每个比特的逻辑 异或并设为比特串m。在整数算出工序S733A中,整数算出部233A使用CPU911,根据通过比特串算出工序S732A由比特串算出部232A算出的比特串m,算出利用散列函数氏将比特串m散列得到 的散列值并设为散列值r。在密文验证工序S734A中,验证装置100A使用CPU911,根据识别元存储部243A 所存储的元Q、密文输入部220A所输入的元U以及通过整数算出工序S733A由整数算出部 233A算出的散列值r,验证是否为U = r · Q。在U = r · Q的情况下,进入解密文生成工序S735A。在U兴r · Q的情况下,结束密文解密处理。在解密文生成工序S735A中,解密文生成部260A使用CPU911,根据通过比特串算 出工序S732A由比特串算出部232A算出的比特串m,算出利用散列函数扎将比特串m散列 得到的散列值并设为共用密钥K。之后,结束密文解密处理,利用所算出的共用密钥K对加密消息CM进行解密。为了不对想要非法解读密码的非法者提供解读密码的线索,密文解密装置200A 需要验证密文是否具有匹配性。本实施方式中的密文解密装置200A,为了验证密文的匹配性,由验证装置100A判 断是否为U = r *Q。如在实施方式1中说明的那样,验证装置100A能够高速地验证是否为U = r · Q。因而,密文解密装置200A能够高速地对密文进行解密。本实施方式中的密文解密装置200A具有存储数据的存储装置(RAM914、磁盘装 置920等)、处理数据的处理装置(CPU911)、密钥存储部210A、密文输入部220A、密文验证 部230A、验证装置100A以及解密文生成部260A。上述密钥存储部210使用上述存储装置存储用于解密密文的密钥(秘密密钥Did)。上述密文输入部220A使用上述处理装置(CPU911),输入密文C。上述密文验证部230使用上述处理装置(0 冊11),根据上述密钥存储部21(^所存 储的密钥(秘密密钥Did)和上述密文输入部220A所输入的密文c,算出输入到上述验证装 置100A的整数e(散列值r)、上述有限群G(加法群G1)的元s(元Q)以及上述有限群G(加 法群G1)的元h(元U)。上述验证装置100A输入上述密文验证部230A所算出的整数e (散列值r)、上述有 限群G (加法群G1)的元s(元Q)以及上述有限群G (加法群G1)的元h(元U),判断是否验 证成功。上述解密文生成部260A使用上述处理装置(CPU911),在上述验证装置100A判断 为验证成功的情况下,利用上述密钥存储部210A所存储的密钥(秘密密钥Did)对上述密文 输入部220A所输入的密文c进行解密来生成解密文(共用密钥K)。根据本实施方式中的密文解密装置200A,在验证装置100A验证密文的匹配性来 判断为验证成功的情况下,解密文生成部260A生成解密文,因此能够防止对非法者提供解 读密码的线索,该非法者是对密文解密装置200A输入非法密文来想要从解密结果得到用 于解读密码的线索的非法者。另外,能够缩短验证装置100A验证密文的匹配性的处理所花 费的时间,因此起到如下效果能够缩短密文解密装置200A解密密文的处理整体所花费的 时间。本实施方式中的密文解密装置200A还具有密码参数存储部290A、识别存储部
44241A、识别元算出部242A以及识别元存储部243A。上述密码参数存储部290A使用上述存储装置(磁盘装置920),存储上述有限群 G(加法群G1)的阶数P、上述有限群G(加法群G1)的生成元&以及上述有限群G(加法群 G1)的元R。上述识别存储部241A使用上述存储装置(磁盘装置920),存储用于识别上述密文 解密装置200A的比特串ID。上述识别元算出部242A使用上述处理装置,根据上述识别存储部241A所存储的 比特串ID,算出通过规定的散列函数H1将上述比特串ID散列得到的散列值并设为整数(散 列值)H1 (ID),根据上述密码参数存储部290A所存储的生成元gl、上述密码参数存储部290A 所存储的元R以及所算出的整数(散列值)H1 (ID),将上述生成元gl的整数(散列值)H1 (ID) 倍的元与上述元R相加来设为上述有限群G(加法群G1)的元Q( = IHH1 (ID) · gl)。上述识别元存储部243A使用上述存储装置(磁盘装置920)存储上述识别元算出 部242A所算出的元Q。上述密钥存储部210A使用上述存储装置存储有限群(加法群)G2的元Did。上述密文输入部220A使用上述处理装置(CPU911),输入上述有限群G (加法群G1) 的元U和比特串V作为上述密文C。上述密文验证部230A具有配对值算出部231A、比特串算出部232A以及整数算出 部 233A。上述配对值算出部23IA使用上述处理装置(CPU911),根据上述密文输入部220A 所输入的元U和上述密钥存储部210A所存储的元Did,利用规定的配对函数e算出上述元U 与上述元Did之间的配对值并设为配对值α ( = e(U,Dm))。上述比特串算出部232A使用上述处理装置(CPU911),根据上述配对值算出部 231A所算出的配对值α,算出通过规定的散列函数H2将上述配对值α散列得到的散列值 并设为比特串(散列值)H2 ( α ),根据上述密文输入部220Α所输入的比特串V和所算出的 比特串(散列值)Η2(α),取得上述比特串V与上述比特串(散列值)H2(Ci)之间的逻辑异 或并设为比特串m( = V XOR H2 (α))。上述整数算出部233Α使用上述处理装置(CPU911),根据上述比特串算出部232Α 所算出的比特串m,算出通过规定的散列函数H3将上述比特串m散列得到的散列值并设为 整数(散列值)r( = H3On))。上述验证装置100A输入上述密码参数存储部290A所存储的阶数P、上述整数算 出部233A作为上述整数e算出的整数(散列值)r、上述识别元存储部243A作为上述元s 存储的元Q以及上述密文输入部220A作为上述元h输入的元U,判断是否验证成功。上述解密文生成部260A使用上述处理装置(CPU911),在上述验证装置100A判断 为验证成功的情况下,根据上述比特串算出部232A所算出的比特串m,算出通过规定的散 列函数H4将上述比特串m散列得到的散列值并设为共用密钥K ( = H4Oii)),将所算出的共 用密钥K作为上述解密文而输出。根据本实施方式中的密文解密装置200A,验证装置100A在验证是否为U = r · Q 来判断为验证成功的情况下,解密文生成部260A生成解密文,因此能够防止对非法者提供 解读密码的线索。另外,能够缩短验证装置100A验证是否为U = r · Q的处理所花费的时
45间,因此起到如下效果能够缩短密文解密装置200A解密密文的处理整体所花费的时间。本实施方式中的识别元算出部242A在上述密文输入部220A输入上述密文c之前 算出上述元Q。根据本实施方式中的密文解密装置200A,在密文输入部220A输入密文c之前执行 算出元Q的处理,因此起到如下效果能够更进一步缩短从密文输入部220A输入密文c起 直到解密文生成部260A算出共用密钥K为止所花费的时间。本实施方式中的密文解密装置200A还具有共用密钥存储部270A、加密消息输入 部281A以及消息解密部282A。上述共用密钥存储部270A使用上述存储装置(RAM914),存储上述解密文生成部 260A所输出的共用密钥K。上述加密消息输入部28IA使用上述处理装置(CPU911)输入加密消息CM。上述消息解密部282A使用上述处理装置(CPU911),利用上述共用密钥存储部 270A所存储的共用密钥K对上述加密消息输入部281A所输入的加密消息CM进行解密。根据本实施方式中的密文解密装置200A,消息解密部282A利用通过密文c与密文 生成装置400A共有的共用密钥K对加密消息CM进行解密,因此起到如下效果在加密消息 CM的生成·解密中能够使用能够高速地进行处理的共用密钥密码方式。本实施方式中的密码系统(基于ID的公开密钥密码系统820A)具有验证装置 IOOA0根据本实施方式中的密码系统(基于ID的公开密钥密码系统820A),验证装置 100A验证密文的匹配性,因此能够防止对非法者提供解读密码的线索。另外,能够缩短验证 装置100A验证密文的匹配性的处理所花费的时间,因此起到如下效果能够缩短密码通信 整体所花费的时间。以上说明的密文解密装置200A(公开密钥密码解密装置)是公开密钥密码系统 (基于ID的公开密钥密码系统820A)内的密钥解封装(decapsulation)装置,具有密文合 法性验证装置(验证装置100A),该密文合法性验证装置通过整数的剩余类所形成的群等 乘法群中的指数取幂或者(超)椭圆曲线上的点所形成的群等加法群中的标量倍算,验证 将乘法群的元s相乘e次得到的元S6或将加法群的元s相加e次得到的元e · s是否与已 知的元h —致,由此判断密文是否正确。密文合法性验证装置(验证装置100A)具有分割指数部(整数e)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值M1-Se2或 ei · h-e2 · s的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的密文解密装置200A是基于ID的密码解密装置。密文解密装置200A具有事先计算装置(识别元算出部242A),事先计算公开参数(元gl和公开元R)和根 据接收者(密文解密装置200A)的ID计算得到的值(元Q = IHH1 (ID) · gl);以及
存储装置(识别元存储部243A),存储该事先计算值(元Q)。以上说明的密文解密装置200A (基于ID的密码解密装置)具有事先计算装置(识别元算出部242A),事先计算公开参数(元gl和公开元R)和根 据接收者(密文解密装置200A)的ID计算得到的值(元Q);存储装置(识别元存储部243A),存储该事先计算值(元Q);以及验证装置100A,验证对该事先计算值(元Q)进行乘法群中的取幂或者(超)椭圆 曲线上的点所形成的群等加法群中的标量倍算得到的值(Qlr或r · Q)。验证装置100A具有分割指数部(散列值r)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值俨· (T2或 ei · u-e2 · Q的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的密文解密装置200A是基于SK(境-笠原)_ID的密码解密装置。密文解密装置200A具有事先计算装置(识别元算出部242A),事先计算根据作为公开参数(密码参数)的 乘法群或加法群的元1 、元&以及用于识别接收者(密文解密装置200A)的比特串ID的散 列值h = H1 (ID)计算得到的元Q = R · glh或Q = R+h · gl ;存储装置(识别元存储部243A),存储该元Q ;以及密文合法性验证装置(验证装置100A),对作为随机的比特串m的散列值的整数r 验证Qlr或r · Q是否与已知的U —致,由此判断密文是否正确。以上说明的密文解密装置200A是基于SK-ID的密码系统(基于ID的公开密钥密 码系统820A)内的密钥解封装装置(基于SK-ID的密码密钥解封装装置)。密文解密装置200A具有事先计算装置(识别元算出部242A),事先计算根据作为公开参数(密码参数)的 乘法群或加法群的元1 、元&以及用于识别接收者(密文解密装置200A)的比特串ID的散 列值h = H1 (ID)计算得到的元Q = R · glh或Q = R+h · gl ;存储装置(识别元存储部243A),存储该元Q ;以及密文合法性验证装置(验证装置100A),对作为随机的比特串m的散列值的整数r 验证Qlr或r · Q是否与已知的U —致,由此判断密文是否正确。以上说明的密文解密装置200A (基于SK-ID的密码解密装置)具有事先计算装置(识别元算出部242A),事先计算根据作为公开参数(密码参数)的 乘法群或加法群的元1 、元&以及用于识别接收者(密文解密装置200A)的比特串ID的散 列值h = H1 (ID)计算得到的元Q = R · glh或Q = R+h · gl ;存储装置(识别元存储部243A),存储该元Q ;计算随机的比特串m的散列值(整数r)的装置(整数算出部233A);分割指数部(整数r)的装置(整数分割部110);使用被分割的指数(整数ei和整数e2)进行乘法群中的二基底指数取幂或者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值Uel哨—或^ -U-e2 .Q 的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的密文解密装置200A(基于SK-ID的密码密钥解封装装置)具有事先计算装置(识别元算出部242A),事先计算根据作为公开参数(密码参数)的 乘法群或加法群的元1 、元&以及用于识别接收者(密文解密装置200A)的比特串ID的散 列值h = H1 (ID)计算得到的元Q = R · glh或Q = R+h · gl ;存储装置(识别元存储部243A),存储该元Q ;计算作为随机的比特串m的散列值的整数r的装置(整数算出部233A);分割指数部(整数r)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2)进行乘法群中的二基底指数取幂或者 (超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值Uel · (T2或 ei · U-e2 · Q的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的基于ID的公开密钥密码系统820A是作为利用了(超)椭圆曲线上的 配对运算的基于ID的密码的SK-IBKEM密码系统。在基于ID的公开密钥密码系统820A中,使用阶数ρ为素数的加法群G1、加法群 G2、乘法群Gt以及群G1内的基点(生成元)gl、群G2内的基点g2、配对e。首先,密码参数设定装置810A (密码参数生成装置)使用CPU911,随机地选择大 于等于1且小于等于P-I的整数S。接着,密码参数设定装置810A使用CPU911计算群G1 的元R = s · gl。密码参数设定装置810A使用CPU911,输出密钥生成装置300A (密钥生成 中心。PKG:Private Key Generator)用的秘密密钥(秘密随机数)s和PKG用的公开密钥 (公开元)R。密钥生成装置300A(秘密密钥导出装置)使用CPU911,输入用于识别密文解密装 置200A的比特串ID。首先,密钥生成装置300A使用CPU911计算散列值h = Hl (ID)。接 着,密钥生成装置300A使用CPU911计算整数e= l/(s+h)mod p,计算并输出作为ID用的 秘密密钥的群G2的元dID = e · &。密文生成装置400A(加密装置)首先使用CPU911,生成随机的比特串m。接着,密 文生成装置400A使用CPU911,计算散列值r = H3 (m)、散列值h = H1 (ID),计算群G1的元Q =R+h · gl。密文生成装置400A使用CPU911计算群G1的元U = r · Q,计算作为比特串m 与散列值H2 (e (gl, g2)r)之间的逻辑异或的比特串V = XOR(m, H2 (e (gl, g2)r))。密文生成装 置400A使用CPU911输出密钥(共用密钥)K = H4(m)、密文c = (U,V)。密文解密装置200A(解密装置)输入用于识别自身的比特串ID、密钥生成装置 300A所生成的秘密密钥dID以及密文生成装置400A所输出的密文C= (U,V)。密文解密装 置200A计算配对值α =e(U,dID),计算作为比特串V与散列值吐…)之间的逻辑异或的比 特串m = X0R(V,H2 ( α ))。密文解密装置200Α计算散列值r = H3 (m)、散列值h = H1 (ID), 计算群G1的元Q = R+h *gl。密文解密装置200A使用CPU911,检查r = U是否成立。如
48果不成立,则密文解密装置200A输出“拒绝”。如果成立,则密文解密装置200A使用CPU911 计算并输出共用密钥K = H4(Hi)。以上说明的验证装置100A使得在这种SK-IBKEM密码系统中高速地进行检查r -Q =U是否成立的处理。识别元算出部242A使用CPU911,根据作为在整体系统中共同使用的密码参数的 元gl、元R以及接收者(密文解密装置200A)自身的ID的散列值h = H1 (ID),不管与密文 生成装置400A之间的通信内容如何,都通过群G1中的二基底标量倍算事先计算出群G1的 元 Q = R+h · gi。在验证装置100A中,整数分割部110使用CPU911输入r和p,算出成为 ei · r ε e2(mod ρ)的整数θι、e2,验证值算出部130使用CPU911,通过群G1中的二基底标 量倍算来计算群G1的元W = e2 · Q-ei · U,验证判断部150使用CPU911检查元W是否为群 G1的单位元0,由此高速地检查r · Q = U是否成立。(实施方式3)使用图16 图20来说明实施方式3。图16是表示本实施方式中的公开密钥密码系统820B的整体结构的一例的系统结 构图。公开密钥密码系统820B是如下系统密文生成装置400B使用密文解密装置200B 的公开密钥来生成密文,密文解密装置200B使用与公开密钥对应的秘密密钥来解密密文。公开密钥密码系统820B具有密码参数设定装置810B、密钥生成装置300B、密文生 成装置400B、密文解密装置200B。密码参数设定装置810B确定在公开密钥密码系统820B中利用的密码参数。密码 参数设定装置810B所确定的密码参数被公开于公开密钥密码系统820B的用户。密码参数 设定装置810B所确定的密码参数中例如有阶数P、加法群G、加法群G的元g、散列函数H、 密钥导出函数KDF等。阶数ρ是素数。加法群G的阶数是ρ。元g是加法群G的生成元。散列函数H是根据加法群G的两个元的有序对(ordered pair)生成大于等于1 且小于等于P-I的整数的散列函数。密钥导出函数KDF是根据加法群G的两个元的有序对生成规定长度的比特串的函数。此外,在这些密码参数被预先确定的情况下,也可以没有密码参数设定装置810A。密钥生成装置300B根据被公开的密码参数,生成秘密密钥与公开密钥之间的对。 密钥生成装置300B所生成的秘密密钥以保密状态被通知给密文解密装置200B。密钥生成 装置300B所生成的公开密钥例如以公开密钥证书等形式作为密文解密装置200B的公开密 钥而被公开。密钥生成装置300B生成加法群G的四个元g’、c、d、h作为公开密钥。密钥生成 装置300B生成大于等于1且小于等于p-1的四个整数W、χ、y、ζ作为秘密密钥。此外,密钥生成装置300Β也可以是密文解密装置200Β的一部分。密文生成装置400Β根据被公开的密码参数和公开密钥,生成密文c和共用密钥K。密文生成装置400B利用所生成的共用密钥K对消息M进行加密来生成加密消息CM。密文 生成装置400B对密文解密装置200B发送所生成的密文c和加密消息CM。密文解密装置200B以保密状态保持密钥生成装置300B所生成的秘密密钥。密文 解密装置200B接收密文生成装置400B所发送的密文c和加密消息CM。密文解密装置200B 根据被公开的密码参数,利用所保持的秘密密钥对接收到的密文c进行解密,生成与密文 生成装置400B相同的共用密钥K。密文解密装置200B利用所生成的共用密钥对加密消息 CM进行解密,来生成与消息M相同的消息M,。此外,密码参数设定装置810B、密钥生成装置300B、密文生成装置400B、密文解密 装置200B的外观、硬件资源与在实施方式1中说明的密文解密装置200的外观、硬件资源 相同。图17是表示本实施方式中的密钥生成装置300B的功能模块的结构的一例的模块 结构图。密钥生成装置300B具有密码参数存储部390B、秘密密钥生成部350B、公开密钥生 成部370B、秘密密钥输出部360B、公开密钥输出部380B。密码参数存储部390B使用磁盘装置920,预先存储表示被公开的密码参数的数 据。秘密密钥生成部350B根据密码参数存储部390B所存储的密码参数生成秘密密 钥。秘密密钥生成部350B具有四个秘密随机数生成部35IB 354B。四个秘密随机数生成部35IB 354B分别使用CPU911,输入表示密码参数存储部 390B所存储的密码参数中的阶数ρ的数据。四个秘密随机数生成部351B 354B分别使 用CPU911,根据所输入的数据所表示的阶数p,随机地生成大于等于1且小于等于p-1的整数。第一秘密随机数生成部351B将所生成的整数设为整数w,使用RAM914存储表示所 生成的整数w的数据。第二秘密随机数生成部352B将所生成的整数设为整数X,使用RAM914存储表示所 生成的整数X的数据。第三秘密随机数生成部353B将所生成的整数设为整数y,使用RAM914存储表示所 生成的整数y的数据。第四秘密随机数生成部354B将所生成的整数设为整数z,使用RAM914存储表示所 生成的整数ζ的数据。公开密钥生成部370B根据密码参数存储部390B所存储的密码参数和秘密密钥生 成部350B所生成的秘密密钥,生成公开密钥。公开密钥生成部370B具有四个公开元算出部371B 374B。四个公开元算出部371B 374B分别使用CPU911,输入表示密码参数存储部390B 所存储的密码参数中的加法群G和元g的数据。第一公开元算出部371B使用CPU911,输入第一秘密随机数生成部351B所存储的 表示整数w的数据。第一公开元算出部371B使用CPU911,根据所输入的数据所表示的加 法群G、元g和整数w,通过加法群G中的运算,算出将元g相加w次得到的元并设为元g’。
50第一公开元算出部371B使用RAM914,存储表示所算出的元g’的数据。第二公开元算出部372B使用CPU911,输入第二秘密随机数生成部352B所存储的 表示整数χ的数据。第二公开元算出部372B使用CPU911,根据所输入的数据所表示的加法 群G、元g和整数X,通过加法群G中的运算,算出将元g相加χ次得到的元并设为元C。第 二公开元算出部372B使用RAM914存储表示所算出的元c的数据。第三公开元算出部373B使用CPU911,输入第三秘密随机数生成部353B所存储的 表示整数y的数据。第三公开元算出部373B使用CPU911,根据所输入的数据所表示的加法 群G、元g和整数y,通过加法群G中的运算,算出将元g相加y次得到的元并设为元d。第 三公开元算出部373B使用RAM914存储表示所算出的元d的数据。第四公开元算出部374B使用CPU911,输入第四秘密随机数生成部354B所存储的 表示整数ζ的数据。第四公开元算出部374B使用CPU911,根据所输入的数据所表示的加法 群G、元g和整数z,通过加法群G中的运算,算出将元g相加ζ次得到的元并设为元h。第 四公开元算出部374B使用RAM914存储表示所算出的元h的数据。秘密密钥输出部360B使用CPU911,输入四个秘密随机数生成部351B 354B所存 储的表示整数《、整数χ、整数y以及整数ζ的数据。秘密密钥输出部360B使用CPU911输 出所输入的表示整数W、整数χ、整数y以及整数ζ的数据作为秘密密钥。秘密密钥输出部360B所输出的秘密密钥以保密状态被通知给密文解密装置 200B。公开密钥输出部380B使用CPU911,输入四个公开元算出部371B 374B所存储的 表示元g’、元C、元d以及元h的数据。公开密钥输出部380B使用CPU911,输出所输入的表 示元g’、元C、元d以及元h的数据作为公开密钥。公开密钥输出部380B所输出的公开密钥作为密文解密装置200的公开密钥而被 公开于公开密钥密码系统820B的用户。图18是表示本实施方式中的密文生成装置400B的功能模块的结构的一例的模块 结构图。密文生成装置400B具有密码参数存储部490B、公开密钥存储部410B、共用密钥生 成部420B、密文输出部470B、共用密钥存储部430B、消息输入部440B、消息加密部450B、加 密消息输出部460B。密码参数存储部490B使用磁盘装置920,预先存储表示被公开的密码参数的数 据。公开密钥存储部410B使用磁盘装置920,存储表示作为密文的发送对象的密文解 密装置200B的公开密钥的数据。共用密钥生成部420B根据密码参数存储部490B所存储的密码参数和公开密钥存 储部410B所存储的公开密钥,生成共用密钥K和用于向密文解密装置200B通知共用密钥 K的密文。共用密钥生成部420B具有秘密随机数生成部421B、第一密码元算出部422B、第二 密码元算出部423B、散列值算出部424B、整数算出部425B、第三密码元算出部426B、秘密元 算出部427B、共用密钥算出部428B。秘密随机数生成部42IB使用CPU911,输入表示密码参数存储部490B所存储的密码参数中的阶数P的数据。秘密随机数生成部421B使用CPU911,根据所输入的数据所表示 的阶数P随机地生成大于等于1且小于等于P-I的整数并设为秘密随机数r。秘密随机数 生成部421B使用RAM914存储表示所生成的秘密随机数r的数据。第一密码元算出部422B使用CPU911,输入表示密码参数存储部490B所存储的密 码参数中的加法群G和元g的数据、秘密随机数生成部421B所存储的表示秘密随机数r的 数据。第一密码元算出部422B使用CPU911,根据所输入的数据所表示的加法群G、元g和 秘密随机数r,通过加法群G中的运算,算出将元g相加r次得到的元并设为元U。第一密 码元算出部422B使用RAM914存储表示所算出的元u的数据。第二密码元算出部423B使用CPU911,输入表示密码参数存储部490B所存储的密 码参数中的加法群G的数据、表示公开密钥存储部410B所存储的密文解密装置200B的公 开密钥中的元g’的数据以及秘密随机数生成部421B所存储的表示秘密随机数r的数据。 第二密码元算出部423B使用CPU911,根据所输入的数据所表示的加法群G、元g’和秘密随 机数r,通过加法群G中的运算,算出将元g’相加r次得到的元并设为元u’。第二密码元 算出部423B使用RAM914存储表示所算出的元U’的数据。由于g,= w · g、u = r · g,因此第二密码元算出部423B算出的元U,为[式24]U' = r · g' = w · u散列值算出部424B使用CPU911,输入表示密码参数存储部490B所存储的密码参 数中的散列函数H的数据、第一密码元算出部422B所存储的表示元u的数据以及第二密码 元算出部423B所存储的表示元U,的数据。散列值算出部424B使用CPU911,根据所输入的 数据所表示的散列函数H、元u和元U’,算出将元u与元U’的有序对散列得到的散列值并 设为散列值α。散列值α是大于等于1且小于等于P-I的整数。散列值算出部424Β使用 RAM914存储表示所算出的散列值α的数据。整数算出部425Β使用CPU911,输入表示密码参数存储部490Β所存储的密码参数 中的阶数P的数据、秘密随机数生成部421Β所存储的表示秘密随机数r的数据以及表示散 列值算出部424B所算出的散列值α的数据。整数算出部425Β使用CPU911,根据所输入的 数据所表示的阶数P、秘密随机数r和散列值α,算出将散列值α与秘密随机数r之积除 以阶数P而得到的余数并设为整数r’。整数算出部425B使用RAM914存储表示所算出的整 数r’的数据。第三密码元算出部426B使用CPU911,输入表示密码参数存储部490B所存储的密 码参数中的加法群G的数据、表示公开密钥存储部410B所存储的密文解密装置200B的公 开密钥中的元c和元d的数据、秘密随机数生成部421B所存储的表示秘密随机数r的数据 以及整数算出部425B所存储的表示整数r,的数据。第三密码元算出部426B使用CPU911, 根据所输入的数据所表示的加法群G、元C、元d、秘密随机数r和整数r’,通过加法群G中 的运算,算出将如下两个元相加得到的元并设为元ν 将元c相加r次得到的元;将元d相 加r’次得到的元。第三密码元算出部426B使用RAM914存储表示所算出的元ν的数据。由于c = χ · g、d = y · g、u = r · g,因此由第三密码元算出部426B算出的元ν 为[式25]
52
ν = r · c+r' · d= (r · x+r' · y) · g= (χ+α · y) · u秘密元算出部427B使用CPU911,输入表示密码参数存储部490B所存储的密码参 数中的加法群G的数据、表示公开密钥存储部410B所存储的密文解密装置200B的公开密 钥中的元h的数据以及秘密随机数生成部421B所存储的表示秘密随机数r的数据。秘密 元算出部427B使用CPU911,根据所输入的数据所表示的加法群G、元h和秘密随机数r,通 过加法群G中的运算,算出将元h相加r次得到的元并设为元秘密元算出部427B使用 CPU911,存储表示所算出的元IT的数据。由于h = ζ · g、u = r · g,因此由秘密元算出部427B算出的元IT为[式26]J1 = T . h = Z .U共用密钥算出部428B使用CPU911,输入表示密码参数存储部490B所存储的密码 参数中的密钥导出函数KDF的数据、第一密码元算出部422B所存储的表示元u的数据以及 秘密元算出部427B所存储的表示元IT的数据。共用密钥算出部428B根据所输入的数据 所表示的密钥导出函数KDF、元u和元h、利用密钥导出函数根据元u和元IT的有序对算 出比特串并设为共用密钥K。共用密钥算出部428B使用RAM914存储所算出的共用密钥K。共用密钥存储部430B使用CPU911,输入共用密钥算出部428B所存储的共用密钥 K。共用密钥存储部430B使用RAM914存储所输入的共用密钥K。密文输出部470B使用CPU911,输入第一密码元算出部422B所存储的表示元u的 数据、第二密码元算出部423B所存储的表示元U’的数据以及第三密码元算出部426B所存 储的表示元ν的数据。密文输出部470B使用CPU911输出所输入的表示元U、元U’和元ν 的数据作为密文C。消息输入部440Β使用CPU911,输入想要对密文解密装置200Β发送的消息Μ。消 息输入部440Β使用磁盘装置920存储所输入的消息Μ。消息加密部450Β使用CPU911,输入共用密钥存储部430Β所存储的共用密钥K和 消息输入部440Β所存储的消息Μ。消息加密部450Β使用CPU911,根据所输入的消息M和 共用密钥K,利用共用密钥K对消息M进行加密来设为加密消息CM。消息加密部450B使用 磁盘装置920存储所生成的加密消息CM。加密消息输出部460B使用CPU911,输入消息加密部450B所存储的加密消息CM。 加密消息输出部460B使用CPU911输出所输入的加密消息CM。密文输出部470B所输出的密文c和加密消息输出部460B所输出的加密消息CM 被发送到密文解密装置200B。图19是表示本实施方式中的密文解密装置200B的功能模块的结构的一例的模块 结构图。密文解密装置200B具有密码参数存储部290B、密钥存储部210B、密文输入部 220B、密文验证部230B、验证装置100B、解密文生成部260B、共用密钥存储部270B、加密消 息输入部281B、消息解密部282B、解密消息输出部283B。密码参数存储部290B使用磁盘装置920预先存储表示被公开的密码参数的数据。
密钥存储部210B使用具有防篡改性的存储装置,以保密状态存储表示由密钥生 成装置300B预先生成的秘密密钥的数据。密文输入部220B使用CPU911,输入从密文生成装置400B接收到的密文C。密文 输入部220B使用CPU911,从所输入的密文c中获取表示元U、元U’和元ν的数据。密文输 入部220B使用RAM914存储表示所获取的元U、元U’和元ν的数据。密文验证部230Β具有散列值算出部231Β、整数算出部232Β。散列值算出部23IB使用CPU911,输入表示密码参数存储部290Β所存储的密码参 数中的散列函数H的数据以及密文输入部220Β所存储的表示元u和元U’的数据。散列值 算出部231Β使用CPU911,根据所输入的数据所表示的散列函数H、元u以及元U’,算出利用 散列函数H将元u与元U’的有序对散列得到的散列值并设为散列值α。散列值α是大于 等于1且小于等于P-I的整数。散列值算出部231Β使用RAM914,存储表示所算出的散列值 α的数据。散列值算出部231Β所算出的散列值α与密文生成装置400Β的散列值算出部 424Β所算出的散列值α相等。整数算出部232Β使用CPU911,输入表示密码参数存储部290Β所存储的密码参数 中的阶数P的数据、表示密钥存储部210Β所存储的秘密密钥中的整数X和整数y的数据以 及散列值算出部231B所存储的散列值α。整数算出部232Β使用CPU911,根据所输入的数 据所表示的阶数P、整数X、整数y以及散列值α,算出将整数y与散列值α之积和整数χ 的和除以阶数P而得到的余数并设为整数t。整数算出部232B使用CPU911存储表示所算 出的整数t的数据。如果密文输入部220A所输入的密文c为合法密文,则式24和式25成立。因而, 通过验证是否为u’ = W · U、是否为V = t · u,能够判断密文输入部220A所输入的密文C 是否为合法密文。验证装置100B判断是否为U,=wu,判断是否为v = fu,在U,= wu且ν =t · u的情况下,判断为验证成功。作为判断的顺序,哪个判断在前都可以,下面设为首先判断是否为U’ = w · !,然后 判断是否为V = t · U,来进行说明。验证装置100B是与在实施方式1中说明的验证装置100相同的装置。首先,验证装置100B判断是否为U,= w · U。验证装置100B使用CPU911,输入表示密码参数存储部290B所存储的密码参数中 的阶数ρ的数据作为表示在实施方式ι中说明的阶数P的数据。验证装置100B使用CPU911,输入表示密钥存储部2IOB所存储的秘密密钥中的整 数w的数据作为表示在实施方式1中说明的整数e的数据。验证装置100B使用CPU911,输入密文输入部220B所存储的表示元U,的数据作为 表示在实施方式1中说明的元h的数据。验证装置100B使用CPU911,输入密文输入部220B所存储的表示元u的数据作为 表示在实施方式1中说明的元s的数据。验证装置100B使用CPU911,根据所输入的数据所表示的阶数ρ和整数w,算出满
54Mei*WEe2(m0d p)、|ei|<A/i >()<e2<^的整数e:和整数e2。此外,整数w是密文解
密装置200的秘密密钥的一部分,在密文输入部220B输入密文c之前就知道,因此验证装 置100B也可以在由密文输入部220B输入密文c之前使用CPU911预先算出整数ei和整数 e2,使用具有防篡改性的存储装置来进行存储。验证装置100B使用CPU911,根据所输入的数据所表示的元U,和元U、以及所算出 的整数ei和整数e2,通过加法群G中的运算,算出加法群G的元a = ei · U’ -e2 · U。验证 装置100B使用CPU911,根据所算出的元a,判断元a是否为加法群G的单位元。验证装置 100B使用CPU911,在元a为加法群G的单位元的情况下,判断为第一验证成功,在元a不是 加法群G的单位元的情况下,判断为“验证失败”。在判断为第一验证成功的情况下,验证装置100B判断是否为ν = t · U。验证装置100B使用CPU911,输入表示密码参数存储部290B所存储的密码参数中 的阶数ρ的数据作为表示在实施方式ι中说明的阶数P的数据。验证装置100B使用CPU911,输入整数算出部232B所存储的表示整数t的数据作 为表示在实施方式1中说明的整数e的数据。验证装置100B使用CPU911,输入密文输入部220所存储的表示元ν的数据作为表 示在实施方式1中说明的元h的数据。验证装置100B使用CPU911,输入密文输入部220所存储的表示元u的数据作为表 示在实施方式1中说明的元s的数据。验证装置100B使用CPU911,根据所输入的数据所表示的阶数ρ和整数t,算出
满足% · t三e2(mod ρ)、|ei|<>/^、0<e2<i的整数和整数%。验证装置100B使用
CPU911,根据所输入的数据所表示的元ν和元U、以及所算出的整数ei和整数e2,通过加法 群G中的运算,算出加法群G的元a = θι -v-e2-U0验证装置100B使用CPU911,根据所算 出的元a,判断元a是否为加法群G的单位元。验证装置100B使用CPU911,在元a为加法 群G的单位元的情况下,判断为第二验证也成功而判断为“验证成功”,在元a不是加法群G 的单位元的情况下,判断为“验证失败”。验证装置100B使用CPU911,输出表示验证结果的数据。解密文生成部260B在由验证装置100B判断为“验证成功”的情况下,生成共用密 钥K。解密文生成部260B具有秘密元算出部261B、共用密钥算出部262B。秘密元算出部261B使用CPU911,输入表示验证装置100B所输出的验证结果的数 据。在所输入的数据所表示的验证结果为“验证成功”的情况下,秘密元算出部261B使用 CPU911输入表示密码参数存储部290B所存储的密码参数中的加法群G的数据、表示密钥 存储部210B所存储的秘密密钥中的整数ζ的数据以及密文输入部220B所存储的表示元u 的数据。秘密元算出部261B使用CPU911,根据所输入的数据所表示的加法群G、整数ζ以 及元u,通过加法群G中的运算,算出将元u相加ζ次得到的元并设为元1Γ。秘密元算出部 261B使用RAM914存储表示所算出的元tT的数据。如果密文输入部220A所输入的密文c为合法密文,则秘密元算出部261B利用式
5526算出的元h 与密文生成装置400B的秘密元算出部427B所算出的元h 相等。共用密钥算出部262B使用CPU911,输入表示密码参数存储部290B所存储的密码 参数中的密钥导出函数KDF的数据、密文输入部220B所存储的表示元u的数据以及秘密元 算出部261B所存储的表示元h 的数据。共用密钥算出部262B使用CPU911,根据所输入的 数据所表示的密钥导出函数KDF、元u以及元h、利用密钥导出函数KDF根据元u与元IT 的有序对算出比特串并设为共用密钥K。共用密钥算出部262B使用RAM914存储所算出的 共用密钥K。秘密元算出部26IB所算出的元h 与密文生成装置400B的秘密元算出部427B所 算出的元IT相等,因此共用密钥算出部262B所算出的共用密钥K与密文生成装置400B的 共用密钥算出部428B所算出的共用密钥K相等。因而,密文生成装置400B与密文解密装置200B能够共有相同的共用密钥K。共用密钥存储部270B使用CPU911,输入共用密钥算出部262B所存储的共用密钥 K。共用密钥存储部270B使用RAM914存储所输入的共用密钥K。加密消息输入部28IB使用CPU911,输入从密文生成装置400B接收到的加密消息 CM。加密消息输入部281B使用磁盘装置920存储所输入的加密消息CM。消息解密部282B使用CPU911,输入共用密钥存储部270B所存储的共用密钥K以 及加密消息输入部281B所存储的加密消息CM。消息解密部282B使用CPU911,利用所输入 的共用密钥K对所输入的加密消息CM进行解密来生成消息M’。消息解密部282B使用磁盘 装置920存储所生成的消息M,。由于密文生成装置400B与密文解密装置200B共有相同的共用密钥K,因此消息 解密部282B所生成的消息M,与密文生成装置400B的消息输入部440B所输入的消息M相 同。解密消息输出部283B使用CPU911,输入消息解密部282B所存储的消息M,。解密 消息输出部283B使用CPU911,输出所输入的消息M,。图20是表示本实施方式中的密文解密装置200A解密密文c的密文解密处理流程 的一例的流程图。在散列值算出工序S731B中,散列值算出部231B使用CPU911,根据密文输入部 220B所输入的元u和元U’,算出利用散列函数H将元u与元U’的有序对散列得到的散列 值并设为散列值α。在整数算出工序S732B中,整数算出部232Β使用CPU911,根据密码参数存储部 290Β所存储的阶数ρ、密钥存储部210Β所存储的整数χ和整数y、以及通过散列值算出工序 S731B由散列值算出部231B算出的散列值α,算出将整数y与散列值α之积与整数χ的 和除以阶数P得到的余数并设为整数t。在第一验证工序S733B中,验证装置100B使用CPU911,根据密钥存储部210所存 储的整数W、以及密文输入部220A所输入的元u和元U’,验证是否为u’ = w · u。在u,= w · u的情况下,进入第二验证工序S734B。在U’兴w · u的情况下,结束密文解密处理。在第二验证工序S734B中,验证装置100B使用CPU911,根据密文输入部220B所输 入的元u和元ν、以及通过整数算出工序S732B由整数算出部232B算出的整数t,验证是否为 ν = t · U。在ν = t · u的情况下,进入秘密元算出工序S735B。在ν兴t · U的情况下,结束密文解密处理。在秘密元算出工序S735B中,秘密元算出部261B使用CPU911,根据密钥存储部 210B所存储的整数ζ、以及密文输入部220B所输入的元u,通过加法群G中的运算,算出将 元u相加ζ次得到的元并设为元1Γ。在共用密钥算出工序S736中,共用密钥算出部262B使用CPU911,根据密文输入部 220B所输入的元U、以及通过秘密元算出工序S735B由秘密元算出部261B算出的元tT,利 用密钥导出函数KDF根据元u与元IT的有序对算出比特串并设为共用密钥K。之后,结束密文解密处理,利用所算出的共用密钥K对加密消息CM进行解密。本实施方式中的密文解密装置200B还具有密码参数存储部290B。上述密码参数存储部290B使用上述存储装置(磁盘装置920),存储上述有限群 (加法群)G的阶数ρ。上述密钥存储部210B使用上述存储装置,存储大于等于1且小于等于p_l的整数 W、大于等于1且小于等于P-I的整数X、大于等于1且小于等于P-I的整数y、大于等于1 且小于等于P-I的整数ζ。上述密文输入部220B使用上述处理装置(CPU911),输入上述有限群(加法群)G 的元U、上述有限群(加法群)G的元U’、上述有限群(加法群)G的元ν作为上述密文C。上述密文验证部230B具有散列值算出部23IB和整数算出部232B。上述散列值算出部231B使用上述处理装置(CPU911),根据上述密文输入部220B 所输入的元u和元U’,算出通过规定的散列函数H将上述元u和上述元U’散列得到的散列 值并设为整数(散列值)α ( = H(u,U’))。上述整数算出部232B使用上述处理装置(CPU911),根据上述密码参数存储部 290B所存储的阶数ρ、上述密钥存储部210B所存储的整数χ和整数y、以及上述散列值算出 部231B所算出的整数(散列值)α,算出将上述整数y与上述整数(散列值)α之积与上 述整数χ的和除以上述阶数P而得到的余数并设为整数t(= (x+y · α) mod ρ)。上述验证装置100Β输入上述密码参数存储部290Β所存储的阶数P、作为上述整 数e的上述密钥存储部210B所存储的整数W、作为上述元s的上述密文输入部220B所输入 的元U、以及作为上述元h的上述密文输入部220B所输入的元U’,判断验证是否成功来作 为第一验证结果;输入上述密码参数存储部290B所存储的阶数ρ、作为上述整数e的上述 整数算出部232B所算出的整数t、作为上述元s的上述密文输入部220B所输入的元U、以 及作为上述元h的上述密文输入部220B所输入的元v,判断验证是否成功来作为第二验证 结果。上述解密文生成部260B使用上述处理装置(CPU911),在上述验证装置100B在上 述第一验证结果和上述第二验证结果中都判断为验证成功的情况下,根据上述密钥存储部 210B所存储的整数ζ和上述密文输入部220B所输入的元u,算出将上述元u相加上述整数 ζ次而得到的元并设为上述有限群G的元h( = ζ · !),根据上述密文输入部220Β所输入的 元u和所算出的元h、利用规定的密钥导出函数KDF根据上述元u和上述元IT生成共用密 钥K( = KDF(u, IT)),输出所生成的共用密钥K作为上述解密文。
57
根据本实施方式中的密文解密装置200B,在验证装置100B验证是否为U,= w ·ιι 且ν = t ·ιι而判断为验证成功的情况下,解密文生成部260Β生成解密文,因此可以防止对 非法者提供解读密码的线索。另外,能够缩短验证装置100Β验证是否为u’ = w 且ν = t ·ιι的处理所花费的时间,因此起到如下效果能够缩短密文解密装置200Β解密密文的处 理整体所花费的时间。本实施方式中的密文解密装置200Β还具有共用密钥存储部270Β、加密消息输入 部28IB以及消息解密部282Β。上述共用密钥存储部270Β使用上述存储装置(RAM914),存储上述解密文生成部 260Β所输出的共用密钥K。上述加密消息输入部28IB使用上述处理装置(CPU911)输入加密消息CM。上述消息解密部282B使用上述处理装置(CPU911),利用上述共用密钥存储部 270B所存储的共用密钥K对上述加密消息输入部281B所输入的加密消息CM进行解密。根据本实施方式中的密文解密装置200B,消息解密部282B利用通过密文c与密文 生成装置400B共有的共用密钥K对加密消息CM进行解密,因此起到如下效果在加密消息 CM的生成·解密中,能够使用能够高速地进行处理的共用密钥密码方式。以上说明的密文解密装置200B(公开密钥密码解密装置)为了验证在作为密文的 一部分的乘法群或加法群的元U和元U’与作为秘密密钥的一部分的整数W之间是否成立 U’ =Uw(乘法描述)或U’ =WU (加法描述)的关系,具有分割指数部(整数w)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),进行乘法群中的二基底指数取幂或者 (超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值u’ ·ιΓ2或 ei · u’ -e2 · u的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的密文解密装置200B(公开密钥密码解密装置)为了验证在根据从密文 的一部分(元u和元U’)算出的散列值α计算得到的指数(整数)t与作为密文的一部分 的元u和元ν之间是否成立ν = Ut (乘法描述)或t · u = ν (加法描述)的关系,具有分割指数部(整数t)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值Z1 ·ιΓ2或 ei · v-e2 · u的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的公开密钥密码系统820B是根据Cramer-Shoup公开密钥密码进行标准 化的密钥封装方式的ACE-KEM密码系统。在公开密钥密码系统820B中,使用素数阶数ρ的群(加法群)G与群G内的基点 (生成元)go密钥生成装置300B使用CPU911,随机地选择大于等于0且小于等于p_l的整数 W、整数X、整数y、整数Z。密钥生成装置300B使用CPU911,计算群G的元g,= w · g、群G的元c = χ · g、群G的元d = y · g、群G的元h = ζ · g。密钥生成装置300B使用CPU911 输出公开密钥(g,,c,d,h)、秘密密钥(w, χ, y,ζ)。密文生成装置400Β (加密装置)使用CPU911输入公开密钥(g,,c,d,h)。密文生 成装置400B使用CPU911,生成大于等于0且小于等于p_l的随机数r,计算群G的元u = r · g、群G的元u,= r · g,、群G的元h =r · h。密文生成装置400B使用CPU911,计算将 比特串u Il U’散列得到的散列值α =H(u||u’),计算整数r’ = α τ mod p,其中,上述 比特串u Il u’是将表示元u的比特串与表示元u’的比特串相连接的比特串。密文生成装 置400B使用CPU911计算群G的元ν = r · c+r,· d。密文生成装置400B使用CPU911,计 算根据将表示元u的比特串与表示元IT的比特串相连接的比特串u Il IT进行密钥导出的 密钥K = KDF(u Il h )。密文生成装置400B使用CPU911输出密文Ctl = (u,u,,ν)和密钥 K0密文解密装置200Β (解密装置)使用CPU911输入秘密密钥(w,χ, y,ζ)和密文C。 =(u,u,,v)。密文解密装置20( 使用0 冊11,计算将比特串11||11,散列得到的散列值α =H(u Il u’),其中,上述比特串u Il U’是将表示元u的比特串与表示元U’的比特串相连接 的比特串。密文解密装置200B使用CPU911计算整数t = x+y · α mod ρ。密文解密装置 200Β使用CPU911,检查w · u = U,和t · u = ν是否成立。如果不成立,则密文解密装置 200B输出“拒绝”。如果成立,则密文解密装置200B使用CPU911计算群G的元h =ζ -u, 计算并输出密钥K = KDF(UlItT)。以上说明的验证装置100B在这种ACE-KEM密码系统中使检查w · u = U,和t · u =ν是否成立的处理高速地进行。在验证装置100B中,整数分割部110使用CPU911输入w和P,算出成为 ei - W^ e2(mod ρ)的整数ei、e2,验证值算出部130使用CPU911,通过群G中的二基底标量 倍算,算出群G的元U = e2 -u-ei ·ιι’,验证判断部150使用CPU911检查元U是否为群G的 单位元0,由此高速地检查是否为wu = u’。另外,整数分割部110使用CPU911输入t和 P,算出成为ei K^e2 (mod ρ)的整数ei、e2,验证值算出部130使用CPU911,通过群G中的 二基底标量倍算,算出群G的元V = e2 · u-ei · v,验证判断部150使用CPU911检查元V是 否为群G的单位元0,由此高速地检查t · u = ν是否成立。(实施方式4)使用图21 图27说明实施方式4。图21是表示本实施方式中的基于ID的公开密钥密码系统820C的整体结构的一 例的系统结构图。基于ID的公开密钥密码系统820C是与在实施方式2中说明的基于ID的公开密 钥密码系统820A同样地将用于识别密文解密装置200C的识别数据用作密文解密装置200C 的公开密钥的密码通信系统。基于ID的公开密钥密码系统820C具有密码参数设定装置810C、密钥生成装置 300C、密文生成装置400C、密文解密装置200C。密码参数设定装置8IOC确定在基于ID的公开密钥密码系统820C中利用的密码 参数。由密码参数设定装置810C确定的密码参数被公开于基于ID的公开密钥密码系统 820C的用户。由密码参数设定装置810C确定的密码参数中例如有阶数P、加法群G、加法群G的元g、加法群G’、加法群G’的元g’、乘法群Gt、配对e、散列函数H、散列函数H’散列函
数H”等。阶数ρ是素数。加法群G的阶数是ρ。元g是加法群G的生成元。加法群G’的阶数是与加法群G同样的ρ。元g’是加法群G’的生成元。乘法群Gt的阶数是与加法群G和加法群G’同样的ρ。配对e是将加法群G的元和加法群G’的元的组转变到乘法群Gt的元(配对值) 的映射,配对e具有双线性。另外,加法群G的元g与加法群G’的元g’的配对值e(g,g’) 不是乘法群Gt的单位元。散列函数H是根据任意长度的比特串生成大于等于1且小于等于p-1的整数的散 列函数。散列函数H’是根据乘法群Gt的元生成规定长度的比特串的散列函数。散列函数H”是根据乘法群Gt的元、规定长度的比特串、以及两个加法群G的元的 有序对的组,生成大于等于1且小于等于P-I的整数的散列函数。此外,加法群G’的元g’仅被密钥生成装置300C所使用,因此也可以不对其它用 户公开。另外,在这些密码参数被预先确定的情况下,密码参数设定装置810C也可以不确 定这些密码参数。另外,密码参数设定装置810C生成主密钥和根据主密钥生成的公开参数。密码参 数设定装置810C所生成的主密钥包含三个整数α、β、Y。密码参数设定装置810C所生 成的公开参数包含加法群G的元gl、加法群G的元g3以及乘法群Gt的元V(l。密码参数设 定装置810C所生成的主密钥以保密状态被通知给密钥生成装置300C。密码参数设定装置 810C所生成的公开参数被公开于基于ID的公开密钥密码系统820C的用户。密钥生成装置300C以保密状态保持从密码参数设定装置810C通知的主密钥。密 钥生成装置300A根据被公开的密码参数、被公开的密文解密装置200C的识别数据ID以及 所保持的主密钥,生成密文解密装置200C的秘密密钥。密钥生成装置300C所生成的秘密 密钥包含加法群G’的元dQ和加法群G’的元屯。密钥生成装置300A所生成的秘密密钥以 保密状态被通知给密文解密装置200C。密文生成装置400C根据被公开的密码参数、公开参数、密文解密装置200C的识别 数据ID,对消息M进行加密来生成密文C。密文生成装置400C向密文解密装置200C发送 所生成的密文C。密文解密装置200C以保密状态保持密钥生成装置300C所生成的秘密密钥。密文 解密装置200C接收密文生成装置400C所发送的密文C。密文解密装置200C根据被公开 的密码参数和所保持的秘密密钥,对接收到的密文C进行解密来生成与消息M相同的消息 M,。此外,密码参数设定装置810C、密钥生成装置300C、密文生成装置400C、密文解密 装置200C的外观、硬件资源与在实施方式1中说明的密文解密装置200的外观、硬件资源 相同。图22是表示本实施方式中的密码参数设定装置810C的一部分功能模块的结构的
60一例的模块结构图。密码参数设定装置810C具有密码参数存储部819C、主密钥生成部812C、公开参数 生成部813C、主密钥输出部814C以及公开参数输出部815C。密码参数存储部819C使用磁盘装置920,存储表示被公开的密码参数的数据。主密钥生成部812C根据密码参数存储部819C所存储的密码参数,生成主密钥。主密钥生成部812C具有三个秘密随机数生成部816C 818C。三个秘密随机数生成部816C 818C分别使用CPU911,输入表示密码参数存储部 819C所存储的密码参数中的阶数ρ的数据。三个秘密随机数生成部816C 818C分别使 用CPU911,根据所输入的数据所表示的阶数p,随机地生成大于等于1且小于等于p-1的整 数。第一秘密随机数生成部816C将所生成的整数设为整数α,使用RAM914存储表示 所生成的整数α的数据。第二秘密随机数生成部817C将所生成的整数设为整数β,使用RAM914存储表示 所生成的整数β的数据。第三秘密随机数生成部818C将所生成的整数设为整数Y,使用RAM914存储表示 生成的整数、的数据。公开参数生成部813C根据密码参数存储部819C所存储的密码参数和主密钥生成 部812C所生成的主密钥,生成公开参数。公开参数生成部813C具有第一公开元算出部831C、公开配对值算出部832C以及 第二公开元算出部833C。第一公开元算出部83IC使用CPU911,输入表示密码参数存储部819C所存储的密 码参数中的加法群G和元g的数据以及秘密随机数生成部816C所存储的表示整数α的数 据。第一公开元算出部831C使用CPU911,根据所输入的数据所表示的加法群G、元g和整 数α,通过加法群G中的运算,算出将元g相加α次得到的元并设为元gl。第一公开元算 出部831C使用RAM914存储表示所算出的元gl的数据。公开配对值算出部832C使用CPU911,输入表示密码参数存储部819C所存储的密 码参数中的元g、元g’和配对e的数据、秘密随机数生成部816C所存储的表示整数α的数 据以及秘密随机数生成部817C所存储的表示整数β的数据。公开配对值算出部832C使用 CPU911,根据所输入的数据所表示的元g、元g’和配对e,利用配对e算出元g与元g’的配 对值e(g,g’)。配对值e(g,g’)是乘法群Gt的元。公开配对值算出部832C使用CPU911, 根据所输入的数据所表示的整数α和整数β、以及所算出的配对值e(g,g’),通过乘法群 Gt中的运算,算出将配对值e(g,g’ )相乘整数α与整数β之积α β次得到的元并设为 元%。公开配对值算出部832C使用RAM914存储表示所算出的元Y0的数据。第二公开元算出部833C使用CPU911,输入表示密码参数存储部819C所存储的密 码参数中的加法群G和元g的数据、以及秘密随机数生成部818C所存储的表示整数、的 数据。第二公开元算出部833C使用CPU911,根据所输入的数据所表示的加法群G、元g和 整数Y,通过加法群G中的运算,算出将元g相加γ次得到的元并设为元g3。第二公开元 算出部833C使用RAM914存储表示所算出的元g3的数据。主密钥输出部814C使用CPU911,输入三个秘密随机数生成部816C 818C所存储的表示整数α、整数β和整数Y的数据。主密钥输出部814C使用CPU911,输出所输入的 表示整数α、整数β和整数Υ的数据作为主密钥。主密钥输出部814C所输出的主密钥以保密状态被通知给密钥生成装置300C。公开参数输出部815C使用CPU911,输入第一公开元算出部831C所存储的表示元 gl的数据、公开配对值算出部832C所存储的表示元Vtl的数据以及第二公开元算出部833C 所存储的表示元&的数据。公开参数输出部815C使用CPU911,输出所输入的表示元gl、元 g3和元%的数据作为公开参数。公开参数输出部815C所输出的公开参数被公开于基于ID的公开密钥密码系统 820C的用户。图23是表示本实施方式中的密钥生成装置300C的功能模块的结构的一例的模块 结构图。密钥生成装置300C具有密码参数存储部390C、主密钥存储部330C、识别输入部 340C、秘密密钥生成部350C、秘密密钥输出部360C。密码参数存储部390C使用磁盘装置920,预先存储表示被公开的密码参数的数 据。主密钥存储部330C使用具有防篡改性的存储装置,以保密状态存储从密码参数 设定装置810C通知的主密钥。识别输入部340C使用CPU911,关于应生成秘密密钥的密文解密装置200C,输入作 为用于识别密文解密装置200C的识别数据的任意长度的比特串ID。识别输入部340C使用 RAM914存储所输入的比特串ID。秘密密钥生成部350C根据密码参数存储部390C所存储的密码参数、主密钥存储 部330C所存储的主密钥以及识别输入部340C所输入的比特串ID,生成密文解密装置200C 的秘密密钥。秘密密钥生成部350C具有秘密随机数生成部351C、第一秘密元算出部352C、第二 秘密元算出部353C。秘密随机数生成部351C使用CPU911,输入表示密码参数存储部390C所存储的密 码参数中的阶数P的数据。秘密随机数生成部351C使用CPU911,根据所输入的数据所表示 的阶数P,随机地生成大于等于1且小于等于P-I的整数并设为秘密随机数r。秘密随机数 生成部351C使用RAM914存储表示所生成的秘密随机数r的数据。第一秘密元算出部352C使用CPU911,输入表示密码参数存储部390C所存储的密 码参数中的加法群G’、元g’和散列函数H的数据、表示主密钥存储部330C所存储的主密钥 中的整数α、整数β和整数Υ的数据、识别输入部340C所存储的比特串ID以及秘密随机 数生成部351C所存储的表示秘密随机数r的数据。第一秘密元算出部352C使用CPU911, 根据所输入的数据所表示的散列函数H和所输入的比特串ID,算出利用散列函数H将比特 串ID散列得到的散列值H(ID)。第一秘密元算出部352C使用CPU911,根据所输入的数据 所表示的整数α、整数β、整数Y、秘密随机数r以及所算出的散列值H(ID),算出将如下 两个积相加得到的整数· β+[α -H(ID) + y] τ}:对整数α与散列值H(ID)之积加 上整数Y而得到的整数(a -H(ID) + y]与秘密随机数r之积;整数α与整数β之积。 第一秘密元算出部352C使用CPU911,根据所输入的数据所表示的加法群G’和元g’以及
62所算出的整数‘ β+[α ·Η(Ι ) + Υ] ·Γ},通过加法群G’中的运算,算出将元g’相加 {α · β+[α · H(ID) +γ] · r}次得到的元并设为秘密元dQ。第一秘密元算出部352C使用 RAM914存储表示所算出的秘密元Cltl的数据。第二秘密元算出部353C使用CPU911,输入表示密码参数存储部390C所存储的密 码参数中的加法群G’和元g’的数据、秘密随机数生成部351C所存储的表示秘密随机数r 的数据。第二秘密元算出部353C使用CPU911,根据所输入的数据所表示的加法群G’、元g’ 和秘密随机数r,通过加法群G’中的运算,算出将元g’相加r次得到的元并设为秘密元屯。 第二秘密元算出部353C使用RAM914存储表示所算出的秘密元(I1的数据。秘密密钥输出部360C使用CPU911,输入第一秘密元算出部352C所存储的表示秘 密元dQ的数据、第二秘密元算出部353C所存储的表示秘密元Cl1的数据。秘密密钥输出部 360C使用CPU911,输出表示所输入的秘密元dQ和秘密元Cl1的数据作为密文解密装置200C 的秘密密钥。秘密密钥输出部360C所输出的密文解密装置200C的秘密密钥以保密状态被通知 给密文解密装置200C。图24是表示本实施方式中的密文生成装置400C的功能模块的结构的一例的模块 结构图。密文生成装置400C具有密码参数存储部490C、识别存储部410C、消息输入部 440C、消息加密部450C、密文输出部470C。密码参数存储部490C使用磁盘装置920,预先存储被公开的密码参数(包含公开 参数)。识别存储部410C使用磁盘装置920,存储作为密文的发送对象的密文解密装置 200C的识别数据、即比特串ID。消息输入部440C使用CPU911,输入作为想要对密文解密装置200C发送的消息的 规定长度的比特串M。此外,在想要对密文解密装置200C发送的消息的长度大于等于规定 长度的情况下,消息输入部440C将消息分割为规定长度,设为多个比特串M来输入。消息 输入部440C使用RAM914存储所输入的比特串M。消息加密部450C根据密码参数存储部490C所存储的密码参数(包含公开参数)、 以及识别存储部410C所存储的比特串ID,对消息输入部440C所输入的比特串M进行加密 来生成密文C。消息加密部450C具有秘密随机数生成部451C、配对值算出部452C、密码比 特串算出部453C、第一密码元算出部454C、第二密码元算出部455C、密码整数算出部456C。秘密随机数生成部451C使用CPU911,输入表示密码参数存储部490C所存储的密 码参数中的阶数P的数据。秘密随机数生成部451C使用CPU911,根据所输入的数据所表示 的阶数P,随机地生成大于等于1且小于等于P-I的整数并设为秘密随机数S。秘密随机数 生成部451C使用RAM914存储表示所生成的秘密随机数s的数据。配对值算出部452C使用CPU911,输入表示密码参数存储部490C所存储的密码参 数中的乘法群Gt和元ν。的数据以及秘密随机数生成部451C所存储的表示秘密随机数s的 数据。配对值算出部452C使用CPU911,根据所输入的数据所表示的乘法群Gt、元V(l和秘密 随机数s,通过乘法群Gt中的运算,算出将元Vtl相乘s次得到的元并设为元k。配对值算出 部452C使用RAM914存储表示所算出的元k的数据。
密码比特串算出部453C使用CPU911,输入表示密码参数存储部490C所存储的 密码参数中的散列函数H’的数据、消息输入部440C所存储的比特串M以及配对值算出部 452C所存储的表示元k的数据。密码比特串算出部453C使用CPU911,根据所输入的数据 所表示的散列函数H’和元k,算出利用散列函数H’将元k散列得到的散列值H’(k)。散列 值H’ (k)是规定长度的比特串。密码比特串算出部453C使用CPU911,根据所输入的比特 串M和算出的散列值H’(k),取得比特串M与散列值H(k)之间的每个比特的逻辑异或并设 为比特串c。密码比特串算出部453C使用RAM914存储所算出的比特串c。第一密码元算出部454C使用CPU911,输入表示密码参数存储部490C所存储的密 码参数中的加法群G和元g的数据、秘密随机数生成部451C所存储的表示秘密随机数s的 数据。第一密码元算出部454C使用CPU911,根据所输入的数据所表示的加法群G、元g和 秘密随机数s,通过加法群G中的运算,算出将元g相加s次得到的元并设为元C(1。第一密 码元算出部454C使用RAM914存储表示所算出的元C(1的数据。第二密码元算出部455C使用CPU911,输入表示密码参数存储部490C所存储的密 码参数中的加法群G、散列函数H、元gl和元g3的数据、识别存储部410C所存储的比特串 ID、以及秘密随机数生成部451C所存储的表示秘密随机数s的数据。第二密码元算出部 455C使用CPU911,根据所输入的数据所表示的散列函数H、以及所输入的比特串ID,算出利 用散列函数H将比特串ID散列得到的散列值H(ID)。散列值H(ID)是大于等于1且小于等 于P-1的整数。第二密码元算出部455C使用CPU911,根据所输入的数据所表示的加法群 G、元gl、元g3和秘密随机数s以及所算出的散列值H(ID),通过加法群G中的运算,算出将 如下的元相加得到的元并设为元Cl 将元^相加作为散列值H(ID)与秘密随机数s之积的 H(ID) -S次得到的元;将元g3相加s次得到的元。第二密码元算出部455C使用RAM914存 储表示所算出的元(^的数据。由于gl= a *g、g3= y g,因此第二密码元算出部455C所算出的元Cl为[式2了]Cl = s g3+H(ID) s = [a H(ID) + y ] s g密码整数算出部456C使用CPU911,输入表示密码参数存储部490C所存储的密码 参数中的阶数P和散列函数H”的数据、秘密随机数生成部451C所存储的表示秘密随机数 s的数据、配对值算出部452C所存储的表示元k的数据、密码比特串算出部453C所存储的 比特串c、第一密码元算出部454C所存储的表示元cQ的数据以及第二密码元算出部455C 所存储的表示元 的数据。密码整数算出部456C使用CPU911,根据所输入的数据所表示 的散列函数H”、元k、元C(l和元Cl、以及所输入的比特串c,算出利用散列函数H”将元k、比 特串c、元C(1与元Cl的有序对散列得到的散列值H”(k,c, c0, Cl)。散列值H”(k,c, c0, Cl) 是大于等于1且小于等于P-1的整数。密码整数算出部456C使用CPU911,根据所输入的数 据所表示的阶数P和秘密随机数s、以及所算出的散列值H”(k,c, c0, Cl),算出将秘密随机 数s与散列值H” (k,c,c0,ci)之和除以阶数p而得到的余数并设为整数t。密码整数算出 部456C使用CPU911,存储表示所算出的整数t的数据。密文输出部470C使用CPU911,输入密码比特串算出部453C所存储的比特串c、 第一密码元算出部454C所存储的表示元C(l的数据、第二密码元算出部455C所存储的表示
64元Cl的数据、密码整数算出部456C所存储的表示整数t的数据。密文输出部470C使用 CPU911,生成包含所输入的比特串c和表示所输入的元C(l、元Cl、整数t的数据的密文C。密 文输出部470C使用CPU911,输出所生成的密文C。密文输出部470C所输出的密文C被发送到密文解密装置200C。图25是表示本实施方式中的密文解密装置200C的功能模块的结构的一例的模块 结构图。密文解密装置200C具有密码参数存储部290C、密钥存储部210C、密文输入部 220C、密文验证部230C、验证装置100C、解密文生成部260C、解密消息输出部283C。密码参数存储部290C使用磁盘装置920,预先存储表示被公开的密码参数的数 据。密钥存储部210C使用具有防篡改性的存储装置,以保密状态存储预先由密钥生 成装置300C所生成的秘密密钥。密文输入部220C使用CPU911,输入从密文生成装置400C接收到的密文C。密文 输入部220C使用CPU911,根据所输入的密文C获取比特串c和表示元cQ、元Cl、以及整数 t的数据。密文输入部220C使用RAM914,存储所获取的比特串c和表示元C(1、元Cl、以及整 数t的数据。密文验证部230C根据密码参数存储部290C所存储的密码参数、密钥存储部210C 所存储的秘密密钥、以及密文输入部220C所输入的密文C,生成输入到验证装置100C的数据。密文验证部230C具有配对值算出部231C、整数算出部232C。配对值算出部231C使用CPU911,输入表示密码参数存储部290C所表示的密码参 数中的乘法群Gt和配对e的数据、表示密钥存储部210C所存储的秘密密钥中的秘密元屯 和秘密元屯的数据、以及密文输入部220C所存储的表示元C(l、元Cl的数据。配对值算出部 231C使用CPU911,根据所输入的数据所表示的配对e、元C(l、以及秘密元屯,利用配对e算 出元c。与秘密元屯之间的配对值并设为配对值配对值h是乘法群Gt的元。配对值算 出部231C使用CPU911,根据所输入的数据所表示的配对e、元Cl、以及秘密元屯,利用配对 e算出元Cl与秘密元屯之间的配对值并设为配对值h。配对值&是乘法群Gt的元。配对 值算出部231C使用CPU911,根据所输入的数据所表示的乘法群Gt、以及所算出的配对值kQ 和配对值^,通过乘法群Gt中的运算,算出对配对值h乘以配对值^的逆元得到的元并设
配对值算出部231C存储表示所算出的元k的数据。 利用配对e的双线性,配对值算出部231C所算出的元k为 [式 28]
k = £ (0), dp) e(ci,di)
=e (s_ g,{a-P-\-[a-H (ID) + 7] r} g') — e([a.F(ID)+7].s.p’r.p')
= e(g,g。 =v0s
65
为元k。
因而,如果密文输入部220C所输入的密文C为合法密文,则配对值算出部231C所 算出的元k与密文生成装置400C的配对值算出部452C所算出的元k相等。整数算出部232C使用CPU911,输入表示密码参数存储部290C所存储的密码参数 中的阶数P和散列函数H”的数据、密文输入部220C所存储的比特串c和表示元C(l、元Cl、 以及整数t的数据、以及配对值算出部231C所存储的表示元k的数据。整数算出部232C 使用CPU911,根据所输入的数据所表示的散列函数H”、比特串c、元C(l、元Cl、以及所输入的 元k,算出利用散列函数H”将元k、比特串c、元C(l、元Cl的有序对散列得到的散列值H”(k, c,c0,ci)。散列值H”(k,C,C(l,Cl)是大于等于1且小于等于p-1的整数。整数算出部232C 使用CPU911,根据所输入的数据所表示的阶数p、整数t、以及所算出的散列值H”(k,c, c0, Cl),算出将从整数t减去散列值H” (k,c,c0,ci)得到的整数除以阶数p而得到的余数并设 为整数s。如果配对值算出部231C所算出的元k与密文生成装置400C的配对值算出部452C 所算出的元k相等,则整数算出部232C所算出的整数s与秘密随机数生成部451C所生成 的秘密随机数s相等。验证装置100C判断是否为k = v0s以及是否为cQ = s *g,在k = vQs且cQ = s 的情况下,判断为验证成功。验证装置100C输出表示验证结果的数据。解密文生成部260C使用CPU911,输入表示验证装置100C所输出的验证结果的数 据。解密文生成部260C在所输入的数据所表示的验证结果为“验证成功”的情况下,使用 CPU911输入表示密码参数存储部290C所存储的密码参数中的散列函数H’的数据、密文输 入部220C所存储的比特串c、以及配对值算出部231C所存储的表示元k的数据。解密文 生成部260C使用CPU911,根据所输入的数据所表示的散列函数H’和元k,算出利用散列函 数H’将元k数列得到的散列值H’(k)。散列值H’ (k)是规定长度的比特串。解密文生成 部260C使用CPU911,根据所输入的比特串c和所算出的散列值H,(k),取得比特串c与散 列值H’ (k)之间的每个比特的逻辑异或并设为比特串M’。解密文生成部260C使用RAM914 存储所算出的比特串M’。如果密文输入部220C所输入的密文c为合法密文,则配对值算出部231C所算出 的元k与密文生成装置400A的配对值算出部452C所算出的元k相等,因此解密文生成部 260C所算出的比特串M’与密文生成装置400C的消息输入部440C所输入的比特串M相等。解密消息输出部283C使用CPU911,输入解密文生成部260C所存储的比特串M,。 解密消息输出部283C使用CPU911输出所输入的比特串M’作为被解密的消息。图26是表示本实施方式中的验证装置100C的内部模块的结构的一例的详细模块 图。验证装置100C具有整数分割部110C、两个验证值算出部130(^、130(2、验证判断部 150C。验证装置100C是与在实施方式1中说明的验证装置100相同的装置,为了进行加 法群G中的运算和乘法群Gt中的运算,具有两个验证值算出部130(^、130(2。整数分割部110C使用CPU911,输入表示密码参数存储部290C所存储的密码参数 中的阶数P的数据作为表示在实施方式1中说明的阶数P的数据。
整数分割部110C使用CPU911,输入整数算出部232C所存储的表示整数s的数据 作为表示在实施方式1中说明的整数e的数据。整数分割部110C使用CPU911,根据所输入的数据所表示的阶数p和整数s,算出 满足 ei s 三 e2(mod p) >|ei|<VP、0<e2<i的整数 ei 和整数 %。整数分割部110C使用RAM914存储表示所算出的整数力和整数e2的数据。验证值算出部130Q通过加法群G中的运算,算出加法群G的元a = % -c0-e2 -go验证值算出部130Q使用CPU911,输入密码参数存储部290C所存储的表示密码参 数中的元g的数据作为表示在实施方式1中说明的元s的数据。验证值算出部130Q使用CPU911,输入密文输入部220C所存储的表示元cQ的数 据作为表示在实施方式1中说明的元h的数据。验证值算出部130Q使用CPU911,输入整数分割部110C所存储的表示整数和 整数%的数据。验证值算出部130Q使用CPU911,根据所输入的数据所表示的元g、元cQ、整数ei、 以及整数e2,通过加法群G中的运算,算出将如下两个元相加得到的元并设为元a:将元C(l 相加ei次得到的元;将元g相加e2次得到的元的逆元。验证值算出部130Q使用RAM914,存储表示所算出的元a的数据。验证值算出部130C2通过乘法群Gt中的运算,算出乘法群Gt的元a’ = kel Vo_e2。 此外,如果以加法方式描述乘法群Gt中的运算,则a’ = ei *k-e2 V(l,因此除了群运算的具 体计算方法不同以外,验证值算出部130(2所进行的处理实质上与验证值算出部130Q所进 行的处理相同。验证值算出部130C2使用CPU911,输入表示密码参数存储部290C所存储的密码参 数中的元V(l的数据作为表示在实施方式1中说明的元s的数据。验证值算出部130C2使用CPU911,输入配对值算出部231C所存储的表示元k的数 据作为表示在实施方式1中说明的元h的数据。验证值算出部130C2使用CPU911,输入整数分割部110C所存储的表示整数和 整数%的数据。验证值算出部130C2使用CPU911,根据所输入的数据所表示的元vQ、元k、整数ei、 以及整数e2,通过乘法群Gt中的运算,算出相加如下元而得到的元并设为元a’ 将元k相乘
次得到的元;将元V(1相乘e2次得到的元的逆元。验证值算出部130C2使用RAM914,存储表示所算出的元a’的数据。验证判断部150C使用CPU911,输入验证值算出部130Q所存储的表示元a的数据、 以及验证值算出部130(2所存储的表示元a’的数据。验证判断部150C使用CPU911,根据 所输入的数据所表示的元a,判断元a是否为加法群G的单位元。如果元a为加法群G的单 位元,则q = s g,因此验证判断部150C使用CPU911,判断为第一验证成功。验证值算出 部130C2使用CPU911,根据所输入的数据所表示的元a’,判断元a’是否为乘法群Gt的单位 元。如果元a’为乘法群Gt的单位元,则k = v0s验证判断部150C使用CPU911,判断为第二 验证成功。验证判断部150C在判断为第一验证成功且判断为第二验证成功的情况下,判断 为“验证成功”,在除此以外的情况下,判断为“验证失败”。
验证判断部150C使用CPU911输出表示验证结果的数据。图27是表示本实施方式中的密文解密装置200C解密密文C的密文解密处理流程 的一例的流程图。在配对值算出工序S731C中,配对值算出部231C使用CPU911,根据密钥存储部 210C所存储的秘密元屯、密文输入部220C所输入的元C(1,利用配对e算出元C(1与元屯的 配对值h = e (c0, d0)。配对值算出部231C使用CPU911,根据密钥存储部210C所存储的秘 密元屯、以及密文输入部220C所输入的元Cl,利用配对e算出元Cl与元屯的配对值& = e(Cl,屯)。配对值算出部231C使用CPU911,根据所算出的配对值kQ和配对值&,通过乘法 群Gt中的运算,算出对配对值h乘以配对值&的逆元得到的元k = IvX。在整数算出工序S732C中,整数算出部232C使用CPU911,根据密文输入部220C所 输入的比特串c、元cQ和元Cl、以及通过配对值算出工序S731C由配对值算出部231C算出的 元k,算出利用散列函数H”将元k、比特串c、元C(l、元Cl的有序对散列得到的散列值H”(k, c,c0, Cl)。整数算出部232C使用CPU911,根据密码参数存储部290C所存储的阶数p、密文 输入部220所输入的整数t、以及所算出的散列值H”(k,c, c0, Cl),算出将从整数t减去散 列值H” (k, c, c0, Cl)得到的整数除以阶数p而得到的余数并设为整数s。在整数分割工序S733C中,整数分割部110C使用CPU911,根据密码参数存储部 290C所存储的阶数p、以及通过整数算出工序S732C由整数算出部232C算出的整数s,算出
满足 ei s 三 e2(mod p) >|ei|<VP、0<e2<▲的整数 ei 和整数在第一验证工序S734C中,验证值算出部130Q使用CPU911,根据密码参数存储部 290C所存储的元g、密文输入部220C所输入的元cQ、以及通过整数分割工序S733C由整数 分割部110C算出的整数ei和整数e2,通过加法群G中的运算,算出将如下两个元相加得到 的元并设为元a 将元C(1相加ei次得到的元;将元g相加e2次得到的元的逆元。验证判断部150C使用CPU911,根据验证值算出部130Q所算出的元a,判断元a是 否为加法群G的单位元。在元a为加法群G的单位元的情况下(S卩,C(l = s g的情况下),进入第二验证 工序S735C。在元a不是加法群G的单位元的情况下(S卩,C(l兴s g的情况下)。结束密文解 密处理。在第二验证工序S735C中,验证值算出部130C2使用CPU911,根据密码参数存储部 290C所存储的元vQ、通过配对算出工序S731C由配对值算出部231C算出的元k、以及通过 整数分割工序S733C由整数分割部110C算出的整数ei和整数e2,通过乘法群Gt中的运算, 算出将如下两个元相乘得到的元并设为元a’ 将元k相乘ei次得到的元;将元V(l相乘e2次 得到的元的逆元。验证判断部150C使用CPU911,根据验证值算出部130C2所算出的元a,,判断元a, 是否为乘法群Gt的单位元。在元a’为乘法群Gt的单位元的情况下(S卩,k = V(ls的情况下),进入解密文生成 工序S736C。在元a’不是乘法群Gt的单位元的情况下(S卩,k兴V(ls的情况下),结束密文解密
68
在解密文生成工序S736C中,解密文生成部260C使用CPU911,根据通过配对值算 出工序S731C由配对值算出部231C算出的元k,算出利用散列函数H’将元k散列得到的散 列值H,(k)。解密文生成部260C使用CPU911,根据密文输入部220C所输入的比特串c和 所算出的散列值H’(k),取得比特串c与散列值H’(k)之间的每个比特的逻辑异或并设为 比特串M’。 解密消息输出部283C使用CPU911,输出解密文生成部260C所算出的比特串M,作 为所解密的消息。之后,结束密文解密处理。此外,在本例中,首先验证是否为C(1 = s *g,之后验证是否为k = V(1s,但是验证顺 序也可以是相反的。另外,也可以验证值算出部130(^和验证值算出部130C2同时并行地算 出元a禾口元a,。本实施方式中的密文解密装置200C还具有密码参数存储部290C。上述密码参数存储部290C使用上述存储装置(磁盘装置920),存储加法群(加 法群G)的阶数p、上述加法群GJ加法群G)的生成元g、以及以上述阶数p为阶数的乘法 群Gt的元vQ。上述密钥存储部210C使用上述存储装置,存储以上述阶数p为阶数的加法群 G2(加法群G’)的元(秘密元)dQ、以及上述加法群&(加法群G’)的元(秘密元)屯。上述密文输入部220C使用上述处理装置(CPU911),输入比特串c、上述加法群 的元c。、上述加法群&的元Cl、以及大于等于1且小于等于p-1的整数t作为上述密文C。上述密文验证部230C具有配对值算出部231C和整数算出部232C。上述配对值算出部231C使用上述处理装置(CPU911),根据上述密文输入部220 所输入的元c。、以及上述密钥存储部210C所存储的元(秘密元)d0,利用规定的配对函数e 算出上述元C(1与上述元(秘密元)d0之间的配对值并设为上述乘法群Gt的元h ( = e (c0, d0)),根据上述密文输入部220C所输入的元Cl、以及上述密钥存储部210C所存储的元屯, 利用上述配对函数e算出上述元Cl与上述元屯之间的配对值并设为上述乘法群Gt的元 & ( = e (Cl,屯)),根据所算出的上述元h和所算出的上述元&,对上述元h乘以上述元& 的逆元而设为上述乘法群Gt的元k( = IvX)。上述整数算出部232C使用上述处理装置(CPU911),根据上述配对值算出部231C 所算出的元k、以及上述密文输入部220C所输入的比特串c、元C(1和元Cl,算出利用规定的 散列函数H”将上述元k、上述比特串c、上述元C(l和上述元(^散列得到的散列值并设为整数 (散列值)H” (k,c, c0, Cl),根据上述密文输入部220C所输入的整数t、所算出的整数H” (k, c,c0, Cl)、以及上述密码参数存储部290C所存储的阶数p,算出将从上述整数t减去上述整 数H”(k,c, c0, Cl)而得到的整数除以阶数p而得到的余数并设为整数s ( = t-H”(k,c, c0, c^mod p)。上述验证装置100C将上述加法群GJ加法群G)作为上述有限群G,输入作为上 述阶数P的上述密码参数存储部290C所存储的阶数p、作为上述整数e的上述整数算出部 232C所算出的整数s、作为上述元s的上述密码参数存储部290C所存储的生成元g、以及 作为上述元h的上述密文输入部220C所输入的元C(l,判断验证是否成功来作为第一验证结
69果;将上述乘法群Gt作为上述有限群G,输入作为上述阶数p的上述密码参数存储部290C 所存储的阶数P、作为上述整数e的上述整数算出部232C所算出的整数s、作为上述元s的 上述密码参数存储部290C所存储的元vQ、以及作为上述元h的上述配对值算出部231C所 算出的元k,判断验证是否成功来作为第二验证结果。上述解密文生成部260C使用上述处理装置(CPU911),在上述验证装置100C在上 述第一验证结果和上述第二验证结果中都判断为验证成功的情况下,根据上述配对值算出 部231C所算出的元k,算出利用规定的散列函数H’将上述元k散列得到的散列值并设为比 特串H’(k),根据上述密文输入部220C所输入的比特串c和所算出的比特串H’(k),取得 上述比特串c与上述比特串H’ (k)之间的逻辑异或并设为比特串M,( = cXOR H’(k)),输 出所算出的比特串M’作为上述解密文。根据本实施方式中的密文解密装置200C,在验证装置100C验证是否为cQ = s g 且k = V(ls而判断为验证成功的情况下,解密文生成部260C生成解密文,因此能够防止对非 法者提供解读密码的线索。另外,能够缩短验证装置100C验证是否为C(l = s 且k = vQs 的处理所花费的时间,因此起到如下效果能够缩短密文解密装置200C解密密文的处理整 体所花费的时间。以上说明的密文解密装置200C是基于BB(B0neh-B0yen) 1-ID的密码解密装置。密文解密装置200C输入秘密密钥dID = (d0,屯)和密文C = (c, c0, Cl,t),具有:计算装置(配对值算出部231C),计算配对值的比k = e(c0, d0)/e(Cl,屯);计算装置(整数算出部232C),计算整数s = t_H”(k,c, c0, Cl);分割指数部(整数)s的装置(整数分割部110C);使用被分割的指数(整数ei和整数e2),进行乘法群Gt中的二基底指数取幂,来计 算值kel v0-e2的装置(验证值算出部130C2);以及判断该值是否与乘法群Gt的单位元1相等的装置(验证判断部150C)。以上说明的密文解密装置200C是基于BB1-ID的密码系统(基于ID的公开密钥 密码系统820C)内的密钥解封装装置。密文解密装置200C (基于BB1-ID的密码密钥解封装装置)输入秘密密钥dID = (d。,di)和密文 C = (c,c0, Cl,t),具有计算装置(配对值算出部231C),计算配对值的比k = e(c0, d0)/e(Cl,屯);计算装置(整数算出部232C),计算整数s = t_H”(k,c, c0, Cl);分割指数部(整数)s的装置(整数分割部110C);使用分割得到的指数(整数ei和整数e2),进行乘法群Gt中的二基底指数取幂,来 计算值kel v0-e2的装置(验证值算出部130C2);以及判断该值是否与乘法群Gt的单位元1相等的装置(验证判断部150C)。以上说明的密文解密装置200C (基于BB1-ID的密码解密装置)输入秘密密钥dID =(d0, di)和密文 C = (c,c0, Cl,t),具有计算装置(配对值算出部231C),计算配对值的比k = e(c0, d0)/e(Cl,屯);计算装置(整数算出部232C),计算整数s = t_H”(k,c, c0, Cl);分割指数部(整数)s的装置(整数分割部110C);使用分割得到的指数(整数ei和整数e2),进行乘法群Gt中的二基底指数取幂,来计算值kel v0-e2的装置(验证值算出部130C2);以及判断该值是否与乘法群Gt的单位元1相等的装置(验证判断部150C)。以上说明的密文解密装置200C(基于BB1-ID的密码密钥解封装装置)输入秘密 密钥 dID = (d0, cQ 和密文 C = (c, c0, Cl,t),具有计算装置(配对值算出部231C),计算配对值的比k = e(c0, d0)/e(Cl,屯);计算装置(整数算出部232C),计算整数s = t_H”(k,c, c0, Cl);分割指数部(整数)s的装置(整数分割部110C);使用分割得到的指数(整数ei和整数e2),进行(超)椭圆曲线上的点所形成的元 等加法群G中的二基底标量倍算,来计算值(ei c0-e2 g)的装置(验证值算出部130C》; 以及判断该值是否与加法群G的单位元0相等的装置(验证判断部150C)。以上说明的基于ID的公开密钥密码系统820C是基于BB1-ID的密码系统。在基于ID的公开密钥密码系统820C中,使用阶数p为素数的加法群G、加法群G’、 乘法群Gt、加法群G的生成元g、加法群G’的生成元g’以及配对e。密码参数设定装置810C进行设定处理(Setup)。密码参数设定装置810C使用 CPU911,生成大于等于1且小于等于p-1的随机的整数a、整数3、整数Y,计算群G的 元A = a g、群G的元& = g、群G的元g3 = y . go密码参数设定装置810C使用 CPU911,计算群 G,的元 g, = a .g,、群 G,的元 g,2 = 3 .g,、群 G,的元 g,3 = Y .g,。 密码参数设定装置810C使用CPU911,计算群G’的元g’Q= (a *g’和作为乘法群Gt 的元的配对值vQ = e (g,g’ Q) ( S卩,vQ = e (g,g’)a e)。密码参数设定装置810C输出(g, &,g3,v0)作为PKG的公开密钥,输出(g’,a,3,Y)作为PKG的秘密密钥。密钥生成装置300C进行秘密密钥导出处理(Extract)。密钥生成装置300C 使用CPU911,输入用于识别密文解密装置200C的比特串ID,生成大于等于1且小于等 于P-1的随机的整数(秘密随机数)r。密钥生成装置300C使用CPU911,计算整数e = a H(ID) + y) 1~、群6’ 的元 dQ = e g’ 以及群 G’ 的元屯^’,输出(d0, 屯)作为对于ID的秘密密钥dID。密文生成装置400C进行加密处理(Encrypt)。密文生成装置400C使用CPU911, 输入明文(比特串)M和接收者ID (用于识别密文解密装置200C的比特串ID)。密文生成 装置400C使用CPU911,生成大于等于1且小于等于p-1的随机整数(秘密随机数)s。密 文生成装置400C使用CPU911,计算Gt的元k = v0so密文生成装置400C使用CPU911,利 用散列函数H、H,、H”,计算比特串c = X0R(M, H,(k))、群G的元cQ = s g、群G的元Cl = s g3+(H(ID) s) gl、整数 t = s+H”(k,c, c0, Cl)。密文生成装置 400C 使用 CPU911,输 出笛、又 C = (c,c0,c1 ? t)。密文解密装置200C进行解密处理(Decrypt)。密文解密装置200C使用CPU911输 入秘密密钥dID= (do,^)和密文C= (C,C(1,Cl,t)。密文解密装置200C使用CPU911,计算 乘法群 Gt 的元 k = e (c0, d0) /e (Cl,cQ 和整数 s = t_H”(k,c, c0, Cl),检查 k = v0s 和 cQ = s*g是否成立。如果不成立,则密文解密装置200C使用CPU911输出“拒绝”。如果成立, 则密文解密装置200C使用CPU911,算出并输出比特串M = X0R(c,H,(k))。以上说明的验证装置100C在这种基于BB1-ID的密码系统中使检查k = v0s和cQ=s g是否成立的处理高速地进行。在验证装置100C中,整数分割部110C使用CPU911输入s和p,算出成为 ei s三e2(mod p)的整数ei和整数e2。验证值算出部130C2使用CPU911,通过乘法群Gt 中的二基底取幂,计算Vi = kel Vo_s2。验证判断部150C使用CPU911检查是否为Vl = 1, 由此高速地检查k = v0s是否成立。在Vl = 1成立的情况下,验证值算出部130Q使用CPU911,通过加法群G中的二 基底标量倍算,计算W = ei c0-e2 g。验证判断部150C使用CPU911检查是否为W = 0, 由此高速地检查C(1 = s g是否成立。(实施方式5)使用图28 图33来说明实施方式5。图28是表示本实施方式中的基于ID的签名系统820D的整体结构的一例的系统 结构图。基于ID的签名系统820D是将用于识别签名装置400D的识别数据用作签名装置 400D的公开密钥的电子签名系统。基于ID的签名系统820D具有密码参数设定装置810D、密钥生成装置300D、签名 装置400D、签名验证装置200D。密码参数设定装置810D确定在基于ID的签名系统820D中利用的密码参数。密 码参数设定装置810D所确定的密码参数被公开于基于ID的签名系统820D的用户。密码 参数设定装置810D所确定的密码参数中例如有阶数p、加法群G、加法群G的元g、散列函数 H、散列函数H,等。阶数p是素数。加法群G的阶数是阶数p。元g是加法群G的生成元。散列函数H是根据加法群G的元和任意长度的比特串的组生成大于等于1且小于 等于P-1的整数的散列函数。散列函数H’是根据任意长度的两个比特串的有序对、以及加法群G的三个元的有 序对的组生成大于等于1且小于等于P-1的整数的散列函数。此外,在这些密码参数被预先确定的情况下,密码参数设定装置810D也可以不确 定这些密码参数。另外,密码参数设定装置810D生成主密钥和根据主密钥生成的公开参数。密码参 数设定装置810D所生成的主密钥中包含大于等于1且小于等于p-1的整数x。密码参数设 定装置810D所生成的主密钥以保密状态被通知给密钥生成装置300D。另外,密码参数设定 装置810D所生成的公开参数中包含加法群G的元X。密码参数设定装置810D所生成的公 开参数被公开于基于ID的签名系统820D的用户。密钥生成装置300D以保密状态保持从密码参数设定装置810D通知的主密钥。密 钥生成装置300D根据被公开的密码参数、被公开的签名装置400D的识别数据ID以及所保 持的主密钥,生成签名装置400D的签名密钥。密钥生成装置300D所生成的签名密钥中包 含大于等于1且小于等于P-1的整数s、以及加法群G的元R。密钥生成装置300D所生成 的签名密钥以保密状态被通知给签名装置400D。签名装置400D以保密状态保持从密钥生成装置300D通知的签名密钥。签名装置
72400D根据被公开的密码参数、公开参数和所保持的签名密钥,生成对于消息M的签名o。签 名o保证消息M的内容没有被改变。签名验证装置200D根据被公开的密码参数、公开参数和签名装置400D的识别数 据ID,验证附加在消息M中的签名o,来判断消息M是否被改变。签名验证装置200D输出 验证结果。图29是表示本实施方式中的密码参数设定装置810D的一部分功能模块的结构的 一例的模块结构图。密码参数设定装置810D具有密码参数存储部819D、秘密随机数生成部812D、公开 元算出部813D、主密钥输出部814D、公开参数输出部815D。密码参数存储部819D使用磁盘装置920存储被公开的密码参数。秘密随机数生成部812D使用CPU911,输入表示密码参数存储部819D所存储的密 码参数中的阶数P的数据。秘密随机数生成部812D使用CPU911,根据所输入的数据所表示 的阶数P随机地生成大于等于1且小于等于P-1的整数并设为秘密随机数x。秘密随机数 生成部812D使用RAM914存储表示所生成的秘密随机数x的数据。公开元算出部813D使用CPU911,输入表示密码参数存储部819D所存储的密码参 数中的加法群G和元g的数据、以及秘密随机数生成部812D所存储的表示秘密随机数x的 数据。公开元算出部813D根据所输入的数据所表示的加法群G、元g和秘密随机数x,通过 加法群G中的运算,算出将元g相加x次得到的元并设为公开元X。公开元算出部813D使 用RAM914存储表示所算出的公开元X的数据。主密钥输出部814D使用CPU911,输入秘密随机数生成部812D所存储的表示秘密 随机数x的数据。主密钥输出部814D使用CPU911输出表示所输入的秘密随机数x的数据 作为主密钥。主密钥输出部814D所输出的主密钥以保密状态被通知给密钥生成装置300D。公开参数输出部815D使用CPU911,输入公开元算出部813D所存储的表示公开元 X的数据。公开参数输出部815D使用CPU911,输出表示所输入的公开元X的数据作为公开参数。公开参数输出部815D所输出的公开参数与密码参数一起被公开于基于ID的签名 系统820D的用户。图30是表示本实施方式中的密钥生成装置300D的功能模块的结构的一例的模块 结构图。密钥生成装置300D具有密码参数存储部390D、主密钥存储部330D、识别输入部 340D、签名密钥生成部350D、签名密钥输出部360D。密码参数存储部390D使用磁盘装置920,预先存储表示被公开的密码参数的数 据。主密钥存储部330D使用具有防篡改性的存储装置,存储从密码参数设定装置 810D通知的主密钥。识别输入部340D使用CPU911,输入作为用于识别应生成签名密钥的签名装置 400D的识别数据的任意长度的比特串ID。识别输入部340D使用RAM914存储表示所输入 的比特串ID的数据。[1008]签名密钥生成部350D根据密码参数存储部390D所存储的密码参数、主密钥存储 部330D所存储的主密钥、以及识别输入部340D所输入的比特串ID,生成签名装置400D的 签名密钥。签名密钥生成部350D具有秘密随机数生成部351D、密钥元算出部352D、密钥整数 算出部353D。秘密随机数生成部351D使用CPU911,输入表示密码参数存储部390D所存储的密 码参数中的阶数P的数据。秘密随机数生成部351D使用CPU911,根据所输入的数据所表示 的阶数P随机地生成大于等于1且小于等于P-1的整数并设为秘密随机数r。秘密随机数 生成部351D使用RAM914存储表示所生成的秘密随机数r的数据。密钥元算出部352D使用CPU911,输入表示密码参数存储部390D所存储的密码参 数中的加法群G和元g的数据、以及秘密随机数生成部351D所存储的表示秘密随机数r的 数据。密钥元算出部352D使用CPU911,根据所输入的数据所表示的加法群G、元g和秘密 随机数r,通过加法群G中的运算,算出将元g相加r次得到的元r 并设为元R。密钥元 算出部352D使用RAM914存储表示所算出的元R的数据。密钥整数算出部353D使用CPU911,输入表示密码参数存储部390D所存储的密码 参数中的阶数P和散列函数H的数据、表示主密钥存储部330D所存储的主密钥中的秘密随 机数x的数据、识别输入部340D所存储的比特串ID、秘密随机数生成部351D所存储的表 示秘密随机数r的数据、以及表示密钥元算出部352D所算出的元R的数据。密钥整数算出 部353D使用CPU911,根据所输入的数据所表示的散列函数H和元R、以及所输入的比特串 ID,算出利用散列函数H将元R与比特串ID的组散列得到的散列值H(R,ID)。密钥整数算 出部353D使用CPU911,根据所输入的数据所表示的阶数p、秘密随机数x、和秘密随机数r、 以及所算出的散列值H(R,ID),算出将散列值H(R,ID)与秘密随机数x之积和秘密随机数 r的和除以阶数p而得到的余数并设为整数s。密钥整数算出部353D使用RAM914存储表 示所算出的整数s的数据。签名密钥输出部360D使用CPU911,输入密钥元算出部352D所存储的表示元R的 数据、以及密钥整数算出部353D所存储的表示整数s的数据。签名密钥输出部360D使用 CPU911,输出表示所输入的整数s和元R的数据作为签名密钥。签名密钥输出部360D所输出的签名密钥以保密状态被通知给签名装置400D。图31是表示本实施方式中的签名装置400D的功能模块的结构的一例的模块结构 图。签名装置400D具有密码参数存储部490D、识别存储部410D、签名密钥存储部 420D、消息输入部440D、签名生成部450D、签名输出部470D。密码参数存储部490D使用磁盘装置920,预先存储表示被公开的密码参数的数 据。识别存储部410D使用磁盘装置920存储用于识别签名装置400D自身的比特串 ID。签名密钥存储部420D使用具有防篡改性的存储装置,存储表示密钥生成装置 300D所生成的签名密钥的数据。消息输入部440D使用CPU911,输入作为应签名的消息的任意长度的比特串M。消息输入部440D使用RAM914存储所输入的比特串M。签名生成部450D根据密码参数存储部490D所存储的密码参数、识别存储部410D 所存储的比特串ID、签名密钥存储部420D所存储的签名密钥、以及消息输入部440D所输入 的比特串M,生成签名o。签名生成部450D具有第一签名元算出部451D、秘密随机数生成部452D、第二签名 元算出部453D、挑战算出部454D、签名整数算出部455D。第一签名元算出部451D使用CPU911,输入表示密码参数存储部490D所存储的密 码参数中的加法群G和元g的数据、表示签名密钥存储部420D所存储的签名密钥中的整数 s的数据。第一签名元算出部451D使用CPU911,根据所输入的数据所表示的加法群G、元g 和整数s,通过加法群G中的运算,算出将元g相加s次得到的元并设为元S。第一签名元 算出部451D使用RAM914,存储表示所算出的元S的数据。此外,与比特串M无关地,元S是固定的,因此第一签名元算出部451D也可以在由 消息输入部440D输入比特串M之前预先算出元S,使用磁盘装置920进行存储。秘密随机数生成部452D使用CPU911,输入表示密码参数存储部490D所存储的密 码参数中的阶数P的数据。秘密随机数生成部452D使用CPU911,根据所输入的数据所表示 的阶数P,随机地生成大于等于1且小于等于P-1的整数并设为秘密随机数y。秘密随机数 生成部452D使用RAM914,存储表示所生成的秘密随机数y的数据。第二签名元算出部453D使用CPU911,输入表示密码参数存储部490D所存储的密 码参数中的加法群G和元g的数据、以及秘密随机数生成部452D所存储的表示秘密随机数 y的数据。第二签名元算出部453D使用CPU911,根据所输入的数据所表示的加法群G、元g 和秘密随机数1,通过加法群G中的运算,算出将元g相加y次得到的元并设为元Y。第二 签名元算出部453D使用RAM914,存储表示所算出的元Y的数据。挑战算出部454D使用CPU911,输入表示密码参数存储部490D所存储的密码参数 中的散列函数H’的数据、识别存储部410D所存储的比特串ID、表示签名密钥存储部420D 所存储的签名密钥中的元R的数据、消息输入部440D所存储的比特串M、第一签名元算出 部451D所存储的表示元S的数据、以及第二签名元算出部453D所存储的表示元Y的数据。 挑战算出部454D使用CPU911,根据所输入的数据所表示的元R、元S和元Y、以及所输入的 比特串ID和比特串M,算出利用散列函数H’将比特串ID与比特串M的有序对、和元R、元 S与元Y的有序对的组散列得到的散列值并设为散列值c。散列值c是大于等于1且小于 等于P-1的整数。挑战算出部454D使用RAM914,存储表示所算出的散列值c的数据。签名整数算出部455D使用CPU911,输入表示密码参数存储部490D所存储的密码 参数中的阶数P的数据、表示签名密钥存储部420D所存储的签名密钥中的整数s的数据、 秘密随机数生成部452D所存储的表示秘密随机数y的数据、以及挑战算出部454D所存储 的表示散列值c的数据。签名整数算出部455D使用CPU911,根据所输入的数据所表示的阶 数P、整数s、秘密随机数y和散列值c,算出将散列值c与整数s之积和秘密随机数y的和 除以阶数P而得到的余数并设为整数z。签名整数算出部455D使用RAM914,存储表示所算 出的整数z的数据。签名输出部470D使用CPU911,输入表示签名密钥存储部420D所存储的签名密 钥中的元R的数据、第一签名元算出部451D所存储的表示元S的数据、第二签名元算出部
75453D所存储的表示元Y的数据、签名整数算出部455D所存储的表示整数z的数据。签名输 出部470D使用CPU911,根据所输入的数据,生成包含表示所输入的元R、元S、元Y、以及整 数z的数据的签名o。签名输出部470D使用CPU911输出所生成的签名0。图32是表示本实施方式中的签名验证装置200D的功能模块的结构的一例的模块 结构图。签名验证装置200D具有密码参数存储部290D、识别存储部210D、消息输入部 225D、签名输入部220D、签名验证部230D、验证装置100D、验证结果输出部260D。密码参数存储部290D使用磁盘装置920,预先存储表示被公开的密码参数(还包 含公开参数)的数据。识别存储部210D使用磁盘装置920,存储用于识别签名装置400D的比特串ID。消息输入部225D使用CPU911,输入作为附加有签名o的消息的比特串M。消息 输入部225D使用RAM914,存储所输入的比特串M。签名输入部220D使用CPU911,输入附加在消息输入部225D所输入的比特串M中 的签名o。签名输入部220D使用CPU911,从所输入的签名o中获取表示元R、元S、元Y 和整数z的数据。签名输入部220D使用RAM914,存储表示所获取的元R、元S、元Y和整数 z的数据。签名验证部230D具有挑战算出部231D、整数算出部232D、验证元算出部233D、第 一验证部250D。挑战算出部231D使用CPU911,输入密码参数存储部290D所存储的表示散列函 数H’的数据、识别存储部210D所存储的用于识别签名装置400D的比特串ID、签名输入部 220D所存储的表示元R、元S和元Y的数据、以及消息输入部225D所存储的比特串M。挑战 算出部231D使用CPU911,根据所输入的数据所表示的散列函数H’、元R、元S和元Y、以及 所输入的比特串ID和比特串M,算出利用散列函数H’将比特串ID与比特串M的有序对、 和元R、元S与元Y的有序对的组散列得到的散列值并设为散列值c。散列值c是大于等于 1且小于等于P-1的整数。挑战算出部231D使用RAM914,存储表示所算出的散列值c的数 据。如果比特串M未改变,则挑战算出部231D所算出的散列值c与签名装置400D的 挑战算出部454D所算出的散列值c相等。整数算出部232D使用CPU911,输入表示密码参数存储部290D所存储的密码参数 中的散列函数H的数据、识别存储部210D所存储的用于识别签名装置400D的比特串ID、以 及签名输入部220D所存储的表示元R的数据。整数算出部232D使用CPU911,根据所输入 的数据所表示的散列函数H和元R、以及所输入的比特串ID,算出利用散列函数H将元R与 比特串ID的组散列得到的散列值并设为散列值h。散列值h是大于等于1且小于等于p-1 的整数。整数算出部232D使用CPU911,存储表示所算出的散列值h的数据。验证元算出部233D使用CPU911,输入表示密码参数存储部290D所存储的密码参 数中的加法群G的数据、以及签名输入部220D所存储的表示元R和元S的数据。验证元 算出部233D使用CPU911,根据所输入的数据所表示的加法群G、元R和元S,通过加法群G 中的运算、算出将元S与元R的逆元相加得到的元并设为元R’。验证元算出部233D使用 RAM914,存储表示所算出的元R’的数据。
76[1041]第一验证部250D验证是否为z g = Y+c S。第一验证部250D使用CPU911,输入表示密码参数存储部290D所存储的密码参数 中的加法群G和元g的数据、签名输入部220D所存储的表示元S、元Y和整数z的数据、挑 战算出部231D所存储的表示散列值c的数据。第一验证部250D使用CPU911,根据所输入 的数据所表示的加法群G、元g、元S、元Y、整数z和散列值c,通过加法群G中的运算,判断 对将元S相加c次得到的元加上元Y的元Y+c S是否与将元g相加z次得到的元z g相 等。第一验证部250D使用CPU911,在元z g与元Y+c S相等的情况下,判断为“验证成 功”,在元z g与元Y+c S不相等的情况下,判断为“验证失败”。第一验证部250D使用 CPU911存储表示验证结果的数据。由于 Y = y g、S = s g、z = y+c s mod p,因此,[式四]Y+c S = (y+c s) g = z g因而,如果比特串M未改变,则z g = Y+c S成立。验证装置100D验证是否为R,= h X。验证装置100D是与实施方式1中说明的验证装置100相同的装置。验证装置100D使用CPU911,输入表示密码参数存储部290D所存储的密码参数中 的阶数P的数据作为表示在实施方式1中说明的阶数P的数据。验证装置100D使用CPU911,输入整数算出部232D所存储的表示散列值h的数据 作为表示在实施方式1中说明的整数e的数据。验证装置100D使用CPU911,输入验证元算出部233D所存储的表示元R,的数据作 为表示在实施方式1中说明的元h的数据。验证装置100D使用CPU911,输入表示密码参数存储部290D所存储的密码参数中 的公开元X的数据作为表示在实施方式1中说明的元s的数据。验证装置100D使用CPU911,根据所输入的数据所表示的阶数p、散列值h、元R,和 公开元X,验证是否为R’ = h X。验证装置100D使用CPU911,在R,= h X的情况下,判断为“验证成功”,在 R’兴h X的情况下判断为“验证失败”。验证装置100D使用CPU911输出表示验证结果的数据。由于 R = r*g>S = s*g = r+H(R, ID) x mod p、h = H(R, ID)、X = x g,因此[式30]R' = S-R= (r+H(R, ID) x) g_r g= h X因而,如果比特串M未改变,则R’ =h*X成立。验证结果输出部260D使用CPU911,输入第一验证部250D所存储的表示验证结果 的数据、以及验证结果输出部260D所输出的表示验证结果的数据。验证结果输出部260D使 用CPU911,根据所输入的两个验证结果,在第一验证部250D和验证装置100D都判断为“验 证成功”的情况下,判断为“验证成功”,在除此以外的情况下,判断为“验证失败”。验证结 果输出部260D使用CPU911,输出表示验证结果的数据。
77[1063]图33是表示本实施方式中的签名验证装置200D验证签名o的签名验证处理的 流程的一例的流程图。在挑战算出工序S731D中,挑战算出部231D使用CPU911,根据识别存储部210D所 存储的比特串ID、签名输入部220D所输入的元R、元S和元Y、以及消息输入部22OT所输入 的比特串M,算出利用散列函数H’将比特串ID与比特串M的有序对、和元R、元S与元Y的 有序对的组散列得到的散列值H’ (ID, R,S, Y,M)并设为散列值c。在第一验证工序S732D中,第一验证部250D使用CPU911,根据密码参数存储部 290D所存储的阶数p和元g、签名输入部220D所输入的元S、元Y和整数z、以及通过挑战 算出工序S731D由挑战算出部231D算出的散列值c,验证是否为z g = Y+c S。在z g = Y+c S的情况下,进入整数算出工序S733D。在z g乒Y+c S的情况下,进入失败判断工序S737D。在整数算出工序S733中,整数算出部232D使用CPU911,根据识别存储部210D所 存储的比特串ID、签名输入部220D所输入的元R,算出利用散列函数H将元R与比特串ID 的组散列得到的散列值H(R,ID)并设为散列值h。在验证元算出工序S734D中,验证元算出部233D使用CPU911,根据签名输入部 220D所输入的元R和元S,通过加法群G中的运算,算出对元S加上元R的逆元得到的元 S-R并设为元R’。在第二验证工序S735D中,验证装置100D使用CPU911,根据密码参数存储部290D 所存储的阶数P和元X、通过整数算出工序S733D由整数算出部232D算出的散列值h、以及 通过验证元算出工序S734D由验证元算出部233D算出的元R’,验证是否为R’ = h X。在R’ = h X的情况下,进入成功判断工序S736D。在R’乒h X的情况下,进入失败判断工序S737D。在成功判断工序S736中,验证结果输出部260D使用CPU911,判断为验证成功并输 出验证结果。之后,结束签名验证处理。在失败判断工序S737D中,验证结果输出部260D使用CPU911,判断为验证失败并 输出验证结果。之后,结束签名验证处理。此外,在本例中,首先验证是否为z g = Y+c S,接着验证是否为R’ = h X,但 是作为验证的顺序,哪个验证在前都可以。本实施方式中的签名验证装置200D具有处理数据的处理装置(CPU911)、消息输 入部225D、签名输入部220D、签名验证部230D、验证装置100D以及验证结果输出部260D。上述消息输入部22OT使用上述处理装置(CPU911)输入消息(比特串M)。上述签名输入部220D使用上述处理装置(CPU911),输入对于上述消息输入部 225D所输入的消息(比特串M)的签名o。上述签名验证部230D使用上述处理装置(CPU911),根据上述消息输入部225D所 输入的消息(比特串M)、以及上述签名输入部220D所输入的签名o,算出输入到上述验证 装置100D的整数e (散列值h)、上述有限群(加法群)G的元s (公开元X)、以及上述有限 群(加法群)G的元h (元R’)。[1082]上述验证装置100D输入上述签名验证部230D所算出的整数e (散列值h)、上述有 限群(加法群)G的元s (公开元X)、以及上述有限群(加法群)G的元h (元R’),判断验证 是否成功。上述验证结果输出部260D使用上述处理装置(CPU911),根据上述验证装置100D 所验证的结果,输出表示验证是否成功的验证结果。根据本实施方式中的签名验证装置200D,通过验证装置100D判断是否为h = e s,能够验证签名。另外,能够缩短验证装置100D验证签名的匹配性的处理所花费的时 间,因此起到如下效果能够缩短签名验证装置200D验证签名的处理整体所花费的时间。本实施方式中的签名验证装置200D还具有存储数据的存储装置(磁盘装置920、 RAM914等)、密码参数存储部290D以及识别存储部210D。上述密码参数存储部290D使用上述存储装置(磁盘装置920),存储上述有限群 (加法群)G的阶数p、上述有限群(加法群)G的生成元g、上述有限群(加法群)G的元(公 开元)X。上述识别存储部210D使用上述存储装置(磁盘装置920),存储用于识别签名装置 400D的比特串ID。上述消息输入部22OT使用上述处理装置(CPU911),输入比特串M作为上述消息。上述签名输入部220D使用上述处理装置(CPU911),输入上述有限群(加法群)G 的元R、上述有限群(加法群)G的元S、上述有限群(加法群)G的元Y、以及大于等于1且 小于等于P-1的整数z作为上述签名o。上述签名验证部230D具有整数算出部232D、验证元算出部233D、挑战算出部231D 以及第一验证部250D。上述整数算出部232D使用上述处理装置(CPU911),根据上述签名输入部220D所 输入的元R、以及上述识别存储部210D所存储的比特串ID,算出通过规定的散列函数H将 上述元R和上述比特串I散列得到的散列值并设为整数h( = H(R,ID))。上述验证元算出部233D使用上述处理装置(CPU911),根据上述签名输入部220D 所输入的元R和元S,对上述元S加上上述元R的逆元而作为上述有限群(加法群)G的元 R, ( = S-R)。上述挑战算出部231D使用上述处理装置(CPU911),根据上述识别存储部210D所 存储的比特串ID、上述签名输入部220D所输入的元R、元S和元Y、以及上述消息输入部 225D所输入的比特串M,算出通过规定的散列函数H’将上述比特串ID、上述元R、上述元 S、上述元Y和上述比特串M散列得到的散列值并设为整数(散列值)c( = H’(ID,R,S,Y, M))。上述第一验证部250D使用上述处理装置(CPU911),根据上述密码参数存储部 290D所存储的生成元g、上述签名输入部220D所输入的元S、元Y和整数z、以及上述挑战 算出部231D所算出的整数(散列值)c,判断对将上述元S相加上述整数(散列值)c次得 到的元c S加上上述元Y的元Y+c S是否与将上述生成元g相加上述整数z次而得到的 元z g相等,在上述元Y+c S与上述元z g相等的情况下,判断为验证成功并设为第一 验证结果。上述验证装置100D输入作为上述阶数p的上述密码参数存储部290D所存储的阶数P、作为上述整数e的上述整数算出部232D所算出的整数h、作为上述元s的上述密码 参数存储部290D所存储的元X、以及作为上述元h的上述验证元算出部233D所算出的元 R’,判断验证是否成功并设为第二验证结果。上述验证结果输出部260D使用上述处理装置(CPU911),根据上述第一验证部 250D所验证得到的第一验证结果、以及上述验证装置100D所验证得到的第二验证结果,在 判断为上述第一验证结果和上述第二验证结果中都是验证成功的情况下,输出表示验证成 功的验证结果。根据本实施方式中的签名验证装置200D,验证装置100D验证是否为R,= h X, 因此能够验证签名o。另外,能够缩短验证装置100D验证是否为R’ = h*X的处理所花费 的时间,因此起到如下效果能够缩短签名验证装置200D验证签名的处理整体所花费的时 间。以上说明的签名验证装置200D是如下的数字签名验证装置通过乘法群中的指 数取幂或者(超)椭圆曲线上的点所形成的群等的加法群中的标量倍算,验证将乘法群的 元s相乘e次得到的元s6或者将加法群的元s相加e次得到的元e s是否与已知的元h 一致,由此判断签名是否正确。签名验证装置200D具有分割指数部(整数e)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),通过进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值# 或 ei h-e2 s的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的签名验证装置200D(数字签名验证装置)具有计算装置(整数分割部110),输入指数(整数)e和在密码中使用的乘法群或 加法群的群阶数P,计算具有阶数P的比特长度的一半比特长度的两个整数ei、e2(其中,
e = e2 (mod p)。);以及验证装置(验证值算出部130、验证判断部150),验证se2*h_el = 1或者e2*s-ei*h =0。以上说明的整数分割部110通过计算扩展欧几里德互除法来分割指数部(整数e)。以上说明的整数分割部110在两个整数的重复除法中具有计算装置(第三剩余算出部117),进行除法的整数v2和被除的整数Vl分别为前 一步骤的除法的剩余v3和前一步骤的进行除法的整数v2 ;以及计算装置(适合性判断部116),判断各步骤的除法结果的剩余v3大于等于某个固 定数(√P)、或者小于等于某个固定数(√P ).[1110]以上说明的签名验证装置200D是基于BNN(Bellare-Namprempre-Neven)-ID的签 名验证装置。签名验证装置200D为了根据作为秘密密钥生成中心(密钥生成装置300D)的公开密钥的乘法群或者加法群的元X、作为签名者(签名装置400D)的秘密密钥(签名密钥) 的一部分的元R、作为签名o的一部分的元S、以及用于识别签名者的比特串ID,验证元 R XH(E'ID)或 R+H (R,ID) X 是否与元 S —致,具有分割指数部(散列值h = H (R,ID))的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),通过进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值(s/Rr1 -re2 或力 (S-R)-e2 X的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的基于ID的签名系统820D是依照对基于BNN-ID的认证法进行 Fiat-Shamir变换的基于BNN-ID的签名法的签名系统。在基于ID的认证系统820E中,使用阶数p为素数的乘法群G和乘法群G的生成 元go密码参数设定装置810D进行PKG用密钥生成处理。密码参数设定装置810D使 用CPU911,生成大于等于1且小于等于p-1的随机的整数x。密码参数设定装置810D使用 CPU911,计算乘法群G的元X = gx。密码参数设定装置810D使用CPU911,输出群G的元X 作为PKG公开密钥,输出整数x作为PKG秘密密钥。密钥生成装置300D进行用户秘密密钥导出处理。密钥生成装置300D使用CPU911, 输入PKG秘密密钥x、用于识别证明装置400E的比特串ID。首先,密钥生成装置300D使 用CPU911,生成大于等于1且小于等于p-1的随机的整数(秘密随机数)r。密钥生成装置 300D使用CPU911,计算群G的元R= 和整数s = r+H(R,ID) *x,并输出(R,s)作为用 户秘密密钥。签名装置400D进行签名生成处理。签名装置400D使用CPU911,输入消息M和秘 密密钥(R,s)。首先,签名装置400D使用CPU911,生成大于等于1且小于等于p-1的随机 的整数(秘密随机数)y。签名装置400D使用CPU911,计算群G的元S = gs和群G的元Y =gy,计算整数c =氏(S,Y,R,M)。签名装置400D使用CPU911,计算整数z = y+c s mod P,输出(c,z,S,Y,R)作为签名。签名验证装置200D进行签名验证处理。签名验证装置200D使用CPU911,输入签 名(c,z, S,Y,R)和用于识别签名装置400D的比特串ID。签名验证装置200D验证gz = Y 禾p S = R .XH(E'ID)是否成立、元S、元Y是否为G的元、整数z是否为大于等于1且小于 等于P-1。如果全部成立,则签名验证装置200D使用CPU911,判断为签名验证合格,否则, 判断为签名验证不合格。以上说明的验证装置100D在这种基于BNN-ID的签名系统中使验证是否为S = R-XH(E'ID)的处理高速地进行。在验证装置100D中,整数分割部110使用CPU911,输入h( = H(R,ID))和p,算出 成为ei h三e2(mod p)的整数ei和整数e2。验证值算出部130使用CPU911,通过乘法群 G中的二基底取幂,计算^二乂61*! ’ e2(其中,R,= S.IT1。)。验证装置100E通过检查是 否为& = 1,来高速地检查S = R XH(E'ID)是否成立。(实施方式6)[1124]使用图34 图37来说明实施方式6。图34是表示本实施方式中的基于ID的认证系统820E的整体结构的一例的系统 结构图。基于ID的认证系统820E是由认证装置200E认证证明装置400E不是伪造物的系 统。此时,认证装置200E将用于识别证明装置400E的识别数据用作证明装置400E的公开 密钥。基于ID的认证系统820E具有密码参数设定装置810D、密钥生成装置300D、证明 装置400E、认证装置200E。密码参数设定装置810D、密钥生成装置300D与实施方式5中说明的装置相同,因 此,在此省略说明。证明装置400E对认证装置200E发送认证请求消息。在由证明装置400E发送的 认证请求消息中包含加法群G的元R、元S、元Y。认证装置200E当接收到认证请求消息时,对证明装置400E发送询问消息。在由 认证装置200E发送的询问消息中包含有大于等于1且小于等于p-1的整数c。证明装置400E当接收到询问消息时,对认证装置200E发送回答消息。在由证明 装置400E发送的回答消息中包含有根据整数c算出的大于等于1且小于等于p-1的整数
Zo认证装置200E验证所接收到的认证请求消息所包含的元R、元S、元Y、以及所接收 到的回答消息所包含的整数z,如果具有匹配性,则认证为证明装置400E不是伪造物。图35是表示本实施方式中的证明装置400E的功能模块的结构的一例的模块结构 图。此外,对与在实施方式5中说明的签名装置400D共同的部分附加相同的标记,在 此省略说明。证明装置400E具有密码参数存储部490D、签名密钥存储部420D、签名生成部 450D、认证请求发送部470E、询问接收部454E、回答发送部475E。认证请求发送部470E使用CPU911,输入表示签名密钥存储部420D所存储的签名 密钥中的元R的数据、第一签名元算出部451D所存储的表示元S的数据、以及第二签名元 算出部453D所存储的表示元Y的数据。认证请求发送部470E使用CPU911,生成包含表示所 输入的元R、元S和元Y的数据的认证请求消息。认证请求发送部470E使用通信装置915, 对认证装置200E发送所生成的认证请求消息。询问接收部454E使用通信装置915,接收认证装置200E所发送的询问消息。询问 接收部454E使用CPU911,获取包含在所接收到的询问消息中的表示整数c的数据。询问接 收部454E使用RAM914,存储表示所获取的整数c的数据。签名整数算出部455D使用CPU911,输入表示密码参数存储部490D所存储的密码 参数中的阶数P的数据、表示签名密钥存储部420D所存储的签名密钥中的整数s的数据、 秘密随机数生成部452D所存储的表示秘密随机数y的数据、以及询问接收部454E所存储 的表示整数c的数据。签名整数算出部455D使用CPU911,根据所输入的数据所表示的阶数 P、整数s、秘密随机数y、以及整数c,算出将整数c与整数s之积和秘密随机数y的和除以 阶数P而得到的余数并设为整数z。签名整数算出部455D使用RAM914,存储表示所算出的
82整数z的数据。回答发送部475E使用CPU911,输入签名整数算出部455D所存储的表示整数z的 数据。回答发送部475E使用CPU911,生成包含表示所输入的整数z的数据的回答消息。回 答发送部475E使用通信装置915,对认证装置200E发送所生成的回答消息。图36是表示本实施方式中的认证装置200E的功能模块的结构的一例的模块结构 图。此外,对与在实施方式5中说明的签名验证装置200D共同的部分附加相同的标 记,在此省略说明。认证装置200E具有密码参数存储部290D、识别存储部210D、认证请求接收部 220E、挑战生成部231E、询问发送部226E、回答接收部227E、签名验证部230D、验证装置 100D、认证结果输出部260E。认证请求接收部220E使用通信装置915,接收证明装置400E所发送的认证请求消 息。认证请求接收部220E使用CPU911,获取包含在所接收到的认证请求消息中的表示元 R、元S和元Y的数据。认证请求接收部220E使用RAM914,存储表示所获取的元R、元S和 元Y的数据。挑战生成部231E在由认证请求接收部220E接收到认证请求消息的情况下,使用 CPU911随机地生成大于等于1且小于等于p-1的整数并设为整数c。挑战生成部231E使 用RAM914,存储表示所生成的整数c的数据。询问发送部226E使用CPU911,输入挑战生成部231E所存储的表示整数c的数据。 询问发送部226E使用CPU911,生成包含表示所输入的整数c的数据的询问消息。询问发送 部226E使用通信装置915,对证明装置400E发送所生成的询问消息。回答接收部227E使用通信装置915,接收证明装置400E所发送的回答消息。回答 接收部227E使用CPU911,获取包含在所接收到的回答消息中的表示整数z的数据。回答接 收部227E使用RAM914,存储表示所获取的整数z的数据。第一验证部250D验证是否为z g = Y+c S。第一验证部250D使用CPU911,输入表示密码参数存储部290D所存储的密码参数 中的加法群G和元g的数据、认证请求接收部220E所存储的表示元S和元Y的数据、挑战 生成部231E所存储的表示整数值c的数据、以及回答接收部227E所存储的表示整数z的 数据。第一验证部250D使用CPU911,根据所输入的数据所表示的加法群G、元g、元S、元 Y、整数z和散列值c,通过加法群G中的运算,判断对将元S相加c次得到的元加上元Y的 元Y+c 是否与将元g相加z次得到的元z 相等。第一验证部250D使用CPU911,在元 z g与元Y+c S相等的情况下,判断为“验证成功”,在元z g与元Y+c S不相等的情况 下,判断为“验证失败”。第一验证部250D使用CPU911,存储表示验证结果的数据。认证结果输出部260E使用CPU911,输入第一验证部250D所存储的表示验证结 果的数据、以及验证装置100D所输出的表示验证结果的数据。认证结果输出部260E使用 CPU911,根据所输入的两个验证结果,在判断为第一验证部250D和验证装置100D都判断为 “验证成功”的情况下,判断为“认证成功”,在除此之外的情况下,判断为“认证失败”。认证 结果输出部260E使用CPU911,输出表示认证结果的数据。图37是表示本实施方式中的认证装置200E认证证明装置400E的认证处理的流程的一例的流程图。此外,对与在实施方式5中说明的签名验证处理共同的部分附加相同的标记,在 此省略说明。在秘密随机数生成工序S741E中,证明装置400E的秘密随机数生成部452D使用 CPU911,随机地生成大于等于1且小于等于p-1的秘密随机数y。在签名元算出工序S742E中,第二签名元算出部453D使用CPU911,根据秘密随机 数生成部452D所生成的秘密随机数y,算出加法群G的元Y( = y g)。在认证请求发送工序S743E中,证明装置400E的认证请求发送部470E使用通信 装置915对认证装置200E发送包含签名密钥存储部420D所存储的元R、第一签名元算出 部451D所算出的元S ( = s *g)、以及通过秘密随机数生成工序S741E由第二签名元算出部 453D算出的元Y的认证请求消息。在认证请求接收工序S751E中,认证装置200E的认证请求接收部220E使用通信 装置915,接收通过认证请求发送工序S743E由证明装置400E发送的认证请求消息。在挑战生成工序S752E中,认证装置200E的挑战生成部231E使用CPU911,随机地 生成大于等于1且小于等于P-1的整数c。在询问发送工序S753E中,认证装置200E的询问发送部226E使用通信装置915, 对证明装置400E发送包含通过挑战生成工序S752E由挑战生成部231E生成的整数c的询 问消息。在询问接收工序S744E中,证明装置400E的询问接收部454E使用通信装置915, 接收通过询问发送工序S753E由认证装置200E发送的询问消息。在签名整数算出工序S745E中,证明装置400E的签名整数算出部455D使用 CPU911,根据密码参数存储部490D所存储的阶数p、签名密钥存储部420D所存储的整数s、 通过秘密随机数生成工序S741E由秘密随机数生成部452D生成的秘密随机数y、以及通过 询问接收工序S744E由询问接收部454E接收到的询问消息所包含的整数y,算出整数z(= y+c s mod p)。在回答发送工序S746E中,证明装置400E的回答发送部475E使用通信装置915, 对认证装置200E发送包含通过签名整数算出工序S745E由签名整数算出部455D算出的整 数z的回答消息。在回答接收工序S754E中,认证装置200E的回答接收部227E使用通信装置915, 接收通过回答发送工序S746E由证明装置400E发送的回答消息。第一验证工序S732D 第二验证工序S735D与在实施方式5中说明的工序相同。在成功判断工序S736E中,认证结果输出部260E使用CPU911,判断为认证成功并 输出认证结果。之后,结束认证处理。在失败判断工序S737E中,认证结果输出部260E使用CPU911,判断为认证失败并 输出认证结果。本实施方式中的认证装置200E具有处理数据的处理装置(CPU911)、发送数据的 发送装置(通信装置915)、接收数据的接收装置(通信装置915)、认证请求接收部220E、 询问发送部226E、回答接收部227E、签名验证部230D、验证装置100D以及认证结果输出部
84260E。上述认证请求接收部220E使用上述接收装置(通信装置915)接收认证请求消
肩、o上述询问发送部226E使用上述发送装置(通信装置915),发送询问消息作为对于 上述认证请求接收部220E所接收到的认证请求消息的响应。上述回答接收部227E使用上述接收装置(通信装置915),接收对于所发送的询问 消息的回答消息。上述签名验证部230D使用上述处理装置(CPU911),根据上述认证请求接收部 220E所接收到的认证请求消息、以及上述回答接收部227E所接收到的回答消息,算出输入 到上述验证装置100D的整数e (散列值h)、上述有限群(加法群)G的元s (元X)、以及上 述有限群(加法群)G的元h (元R’)。上述验证装置100D输入上述签名验证部230D所算出的整数e (散列值h)、上述有 限群(加法群)G的元s (元X)、以及上述有限群(加法群)G的元h (元R’),判断验证是否 成功。上述认证结果输出部260E使用上述处理装置(CPU911),根据上述验证装置100D 所验证的结果,输出表示认证是否成功的认证结果。根据本实施方式中的认证装置200E,通过由验证装置100D判断是否为h = e-s, 来能够认证证明装置400E。另外,能够缩短验证装置100D验证签名的匹配性的处理所花费 的时间,因此起到如下效果能够缩短认证装置200E验证证明装置400E的处理整体所花费 的时间。本实施方式中的认证装置200E还具有存储数据的存储装置(磁盘装置920、 RAM914等)、密码参数存储部290D、识别存储部210D以及挑战生成部231E。上述密码参数存储部290D使用上述存储装置(磁盘装置920),存储上述有限群 (加法群)G的阶数p、上述有限群(加法群)G的生成元g、以及上述有限群(加法群)G的 元X。上述识别存储部210D使用上述存储装置(磁盘装置920),存储用于识别证明装置 400E的比特串ID。上述认证请求接收部220E使用上述接收装置(通信装置915)从上述证明装置 400E接收上述有限群(加法群)G的元R、上述有限群(加法群)G的元S、以及上述有限群 (加法群)的元Y作为上述认证请求消息。上述挑战生成部231E使用上述处理装置(CPU911),随机地生成大于等于1且小于 等于P-1的整数c。上述询问发送部226E使用上述发送装置(通信装置915),对上述证明装置400E 发送上述挑战生成部231E所生成的整数c作为上述询问消息。上述回答接收部227E使用上述接收装置(通信装置915),从上述证明装置400E 接收大于等于1且小于等于P-1的整数z作为上述回答消息。上述签名验证部230D具有整数算出部232D、验证元算出部233D以及第一验证部 250D。上述整数算出部232D使用上述处理装置(CPU911),根据上述认证请求接收部220E所接收到的元R、以及上述识别存储部210D所存储的比特串ID,算出利用规定的散列 函数H将上述元R和上述比特串ID散列得到的散列值并设为整数h( = H(R,ID))。上述验证元算出部233D使用上述处理装置(CPU911),根据上述认证请求接收部 220E所接收到的元R和元S,对上述元S加上上述元R的逆元来设为上述有限群G的元 R, ( = S-R)。上述第一验证部250D使用上述处理装置(CPU911),根据上述密码参数存储部 290D所存储的生成元g、上述认证请求接收部220E所接收到的元S和元Y、上述挑战生成部 231E所生成的整数c、以及上述回答接收部227E所接收到的整数z,判断对将上述元S相加 上述整数c次得到的元c S加上上述元Y的元Y+c S是否与将上述元g相加上述整数z 次得到的元z g相等,在上述元Y+c S与上述元z g相等的情况下,判断为验证成功并 设为第一验证结果。上述验证装置100D输入作为上述阶数p的上述密码参数存储部290D所存储的 阶数P、作为上述整数e的上述整数算出部232D所算出的整数h、作为上述元s的上述密码 参数存储部290D所存储的元X、以及作为上述元h的上述验证元算出部233D所算出的元 R’,判断验证是否成功并设为第二验证结果。上述认证结果输出部260E使用上述处理装置(CPU911),根据上述第一验证部 250D所验证的第一验证结果和上述验证装置100D所验证的第二验证结果,在上述第一验 证结果和上述第二验证结果都判断为验证成功的情况下,输出表示认证成功的认证结果。根据本实施方式中的认证装置200E,由验证装置100D验证是否为R,= h X,因 此能够认证证明装置400E。另外,能够缩短验证装置100D验证是否为R,= h 的处理所 花费的时间,因此起到如下效果能够缩短认证装置200E认证证明装置400E的处理整体所 花费的时间。以上说明的认证装置200E是如下的认证法验证装置通过进行乘法群中的指数 取幂或(超)椭圆曲线上的点所形成的群等加法群中的标量倍算,验证将乘法群的元s相 乘e次得到的元s6或将加法群的元s相加e次得到的元e s是否与已知的元h —致,由 此认证证明装置400E。认证装置200E具有分割指数部(整数e)的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值# 或 ei h-e2 s的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的认证装置200E(认证法验证装置)具有计算装置(整数分割部110),输入指数(整数)e和在密码中使用的乘法群或加法 群的群阶数P,计算具有阶数P的比特长度的一半比特长度的两个整数ei、e2(其中,ei e =e2 (mod p)。);以及验证装置(验证值算出部130、验证判断部150),验证se2*h_el = 1或者e2*s-ei*h =0。
86[1196]以上说明的整数分割部110通过计算扩展欧几里德互除法来分割指数部(整数
e) ο以上说明的整数分割部110在两个整数的重复除法中,具有计算装置(第三剩余算出部117),进行除法的整数V2和被除的整数V1分别为前 一步骤的除法的剩余V3和前一步骤的进行除法的整数V2 ;以及计算装置(适合性判断部116),判断各步骤的除法结果的剩余^大于等于某个固 定数)、或者小于等于某个固定数y以上说明的认证装置200Ε是基于BNN-ID的认证法验证装置。认证装置200Ε为了根据作为秘密密钥生成中心(密钥生成装置300D)的公开密 钥的乘法群或者加法群的元X、作为被认证者(证明装置400Ε)的秘密密钥(签名密钥) 的一部分的元R、被认证者的承诺值(元)S、以及用于识别被认证者的比特串ID,验证元 R ‘ X{h(R, ID)或 R+H(R,ID) · X 是否与元 S—致,具有分割指数部(散列值h = H(R,ID))的装置(整数分割部110);使用分割得到的指数(整数ei和整数e2),通过进行乘法群中的二基底指数取幂或 者(超)椭圆曲线上的点所形成的群等加法群中的二基底标量倍算,来计算值(S/R)el -Fe2 或力· (S-R)-e2 · X的装置(验证值算出部130);以及判断该值是否与乘法群的单位元1或加法群的单位元0相等的装置(验证判断部 150)。以上说明的基于ID的认证系统820E是依照基于BNN-ID的认证法的认证系统。基于ID的认证系统820E具有证明者(证明装置400E)和认证者(认证装置 200E)。首先,证明者(证明装置400E)向验证者(认证装置200E)发送承诺Cmt (认证请 求消息)。验证者(认证装置200E)接收承诺Cmt,根据承诺Cmt和公开信息(密码参数、 公开参数)计算挑战数据Ch(询问消息)并发送给证明者(证明装置400E)。证明者(证 明装置400E)接收挑战数据Ch,计算回答数据Rsp并发送给验证者(认证装置200E)。验 证者(认证装置200E)接收回答数据Rsp,验证其是否为正确的数据。如果回答数据正确, 则验证者(认证装置200E)判断为认证合格,否则判断为认证不合格。在基于ID的认证系统820E中,使用阶数ρ为素数的乘法群G和乘法群G的生成 元go密码参数设定装置810D进行PKG用密钥生成处理。密码参数设定装置810D使 用CPU911,生成大于等于1且小于等于p-1的随机的整数χ。密码参数设定装置810D使用 CPU911计算乘法群G的元X = gx。密码参数设定装置810D使用CPU911,输出群G的元X 作为PKG公开密钥,输出整数χ作为PKG秘密密钥。密钥生成装置300D进行用户秘密密钥导出处理。密钥生成装置300D使用CPU911, 输入PKG秘密密钥χ、以及用于识别证明装置400E的比特串ID。首先,密钥生成装置300D 使用CPU911,生成大于等于1且小于等于p-1的随机的整数(秘密随机数)r。密钥生成装 置300D使用CPU911,计算群G的元R= #、以及整数s = r+H(R,ID) ·χ,输出(R,s)作为 用户秘密密钥。证明装置400E在Cmt计算处理中,使用CPU911,首先生成大于等于1且小于等于
87P-I的随机的整数(秘密随机数)y。证明装置400E使用CPU911,计算群G的元S = gs、以 及群G的元Y = gy,将元S、元Y、以及元R设为承诺Cmt (认证请求数据)。认证装置200E在Ch计算处理中,使用CPU911生成大于等于1且小于等于p_l的 随机的整数c并设为挑战数据Ch (询问数据)。证明装置400E在Rsp计算处理中,使用CPU911计算整数ζ = y+c · smod ρ并设 为回答数据Rsp。认证装置200Ε使用CPU911接收Rsp,验证gz = Y .Sc和S = R -XH(E'ID)是否成立、 元S和元Y是否为群G的元、整数Z是否为大于等于1且小于等于P-I。如果全部成立,则 认证装置200E使用CPU911判断为认证合格,否则判断为认证不合格。以上说明的验证装置100E在这种基于BNN-ID的认证系统中使验证是否为S = R .Xh(UD)的处理高速地进行。在验证装置100E中,整数分割部110使用CPU911,输入h( = H(R,ID))和p,算出 成为ei · h = e2(mod ρ)的整数ei和整数e2。验证值算出部130使用CPU911,通过乘法群 G中的二基底取幂,计算X1 = Xe^R' e2(其中,R,= S.IT1。)。验证装置100E通过检查是 否为X1 = 1,高速地检查S = R · XH(K’ID)是否成立。以上,说明了在几种密码通信系统、签名系统、认证系统中验证装置100高速地进 行验证处理的例子,但是本技术不限于上述说明的例子,能够广泛应用于离散对数型的密 码通信系统、认证系统、签名系统等密码系统中。另外,为了便于说明,主要说明了以加法方式描述群运算的情况。但是以加法方式 描述群运算还是以乘法方式描述群运算并不是本质性的。在密码系统所利用的有限群中,使用计算机等处理装置能够计算群运算,如果在1 次的群运算中花费较多的时间,则能够通过本技术显著地提高速度。
88
权利要求
一种验证装置,具有处理数据的处理装置、整数分割部、验证值算出部以及验证判断部,所述整数分割部使用所述处理装置,输入有限群G的阶数p和整数e,根据所输入的阶数p和整数e,算出满足e1·e≡e2(mod p)的整数e1和整数e2,所述验证值算出部使用所述处理装置,输入所述有限群G的元s和所述有限群G的元h,根据所输入的元s和元h、以及所述整数分割部所算出的整数e1和整数e2,算出所述有限群G的元a(=e1·h e2·s),所述验证判断部使用所述处理装置,根据所述验证值算出部所算出的元a,在所述元a为所述有限群G的单位元的情况下,判断为验证成功。
2.根据权利要求1所述的验证装置,其特征在于,所述整数分割部使用所述处理装置,算出满足所述整数ei的绝对值小于所述阶数ρ的 平方根、并且所述整数e2小于所述阶数P的平方根这种条件的整数ei和整数e2。
3.根据权利要求2所述的验证装置,其特征在于, 所述验证装置还具有存储数据的存储装置,所述整数分割部具有第一剩余存储部、第二剩余存储部、初始值设定部、适合性判断 部、第三剩余算出部以及分割整数输出部,所述第一剩余存储部使用所述存储装置存储整数V1, 所述第二剩余存储部使用所述存储装置存储整数v2,所述初始值设定部使用所述处理装置,将所述阶数P作为所述整数V1而存储到所述第 一剩余存储部中,将所述整数e作为所述整数V2而存储到所述第二剩余存储部中,所述适合性判断部使用所述处理装置,在所述第二剩余存储部所存储的整数V2小于所 述阶数P的平方根的情况下,判断为满足输出条件,所述第三剩余算出部使用所述处理装置,在所述适合性判断部没有判断为满足输出条 件的情况下,根据所述第一剩余存储部所存储的整数V1和所述第二剩余存储部所存储的整 数V2,算出将所述整数V1除以所述整数V2而得到的余数并设为整数V3,将所述第二剩余存 储部所存储的整数V2作为所述整数V1而存储到所述第一剩余存储部中,将所算出的整数V3 作为所述整数V2而存储到所述第二剩余存储部中,所述分割整数输出部使用所述处理装置,在所述适合性判断部判断为满足输出条件的 情况下,将所述第二剩余存储部所存储的整数V2作为所述整数e2而输出。
4.根据权利要求3所述的验证装置,其特征在于,所述整数分割部还具有第一系数存储部、第二系数存储部、商算出部以及第三系数算 出部,所述第一系数存储部使用所述存储装置,存储整数t1; 所述第二系数存储部使用所述存储装置,存储整数t2,所述初始值设定部还使用所述处理装置,将0作为所述整数^而存储到所述第一系数 存储部中,将1作为所述整数t2而存储到所述第二系数存储部中,所述商算出部使用所述处理装置,根据所述第一剩余存储部所存储的整数V1和所述第 二剩余存储部所存储的整数V2,算出不超过将所述整数V1除以所述整数V2而得到的商的最 大整数并设为整数q,所述第三系数算出部使用所述处理装置,在所述适合性判断部没有判断为满足输出条 件的情况下,根据所述第一系数存储部所存储的整数^、所述第二系数存储部所存储的整 数t2以及所述商算出部所算出的整数q,算出从所述整数、减去所述整数t2与所述整数q 之积而得到的整数并设为整数t3,将所述第二系数存储部所存储的整数t2作为所述整数、 而存储到所述第一系数存储部中,将所算出的整数t3作为所述整数t2而存储到所述第二系 数存储部中,所述分割整数输出部还使用所述处理装置,在所述适合性判断部判断为满足输出条件 的情况下,将所述第二系数存储部所存储的整数t2作为所述整数ei而输出。
5.根据权利要求1所述的验证装置,其特征在于,所述验证值算出部使用所述处理装置,算出Σ (η1 · Pi)(其中,η是大于等于2的规定 的整数,i是大于等于0且小于等于k的整数,k是以η进制表示所述整数ei的绝对值和所 述整数e2时的位数的最大值,Pi是所述有限群G的元,Pi = ^sgnMlii· s,ei,sgn是1或-1,ei, i和e2, i是大于等于0且小于等于n-1的整数,θι = ei, sgn · Σ Oii ·吖i)、e2 = Σ (H^e2,,))并设为所述有限群G的元a。
6.一种密文解密装置,具有存储数据的存储装置、处理数据的处理装置、密钥存储 部、密文输入部、密文验证部、权利要求1所述的验证装置以及解密文生成部,所述密钥存储部使用所述存储装置,存储用于解密密文的密钥,所述密文输入部使用所述处理装置,输入密文,所述密文验证部使用所述处理装置,根据所述密钥存储部所存储的密钥和所述密文输 入部所输入的密文,算出输入到所述验证装置的整数e、所述有限群G的元S、以及所述有限 群G的元h,所述验证装置输入所述密文验证部所算出的整数e、所述有限群G的元S、以及所述有 限群G的元h,判断是否验证成功,所述解密文生成部使用所述处理装置,在所述验证装置判断为验证成功的情况下,利 用所述密钥存储部所存储的密钥对所述密文输入部所输入的密文进行解密来生成解密文。
7.根据权利要求6所述的密文解密装置,其特征在于,所述密文解密装置还具有密码参数存储部、识别存储部、识别元算出部以及识别元存 储部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数ρ、所述有限群G的 生成元gl、以及所述有限群G的元R,所述识别存储部使用所述存储装置,存储用于识别所述密文解密装置的比特串ID,所述识别元算出部使用所述处理装置,根据所述识别存储部所存储的比特串ID,算出 通过规定的散列函数H1对所述比特串ID进行散列得到的散列值并设为整数H1 (ID),根据 所述密码参数存储部所存储的生成元gl、所述密码参数存储部所存储的元R、以及所算出的 整数H1(ID),将所述生成元gl的整数H1 (ID)倍的元与所述元R相加来设为所述有限群G的 元 Q( = IHH1(ID) · gl),所述识别元存储部使用所述存储装置,存储所述识别元算出部所算出的元Q,所述密钥存储部使用所述存储装置,存储有限群G2的元Did,所述密文输入部使用所述处理装置,输入所述有限群G的元U和比特串V作为所述密文,所述密文验证部具有配对值算出部、比特串算出部以及整数算出部, 所述配对值算出部使用所述处理装置,根据所述密文输入部所输入的元U和所述密钥 存储部所存储的元Did,利用规定的配对函数e算出所述元U与所述元Did的配对值并设为 配对值 α ( = e(U, Did)),所述比特串算出部使用所述处理装置,根据所述配对值算出部所算出的配对值α,算 出通过规定的散列函数H2对所述配对值α进行散列得到的散列值并设为比特$Η2(α), 根据所述密文输入部所输入的比特串V和所算出的比特串Η2( α ),取得所述比特串V与所 述比特串H2(Ci)的逻辑异或并设为比特串m( = V XOR Η2(α)),所述整数算出部使用所述处理装置,根据所述比特串算出部所算出的比特串m,算出通 过规定的散列函数H3对所述比特串m进行散列得到的散列值并设为整数r ( = H3 (m)),所述验证装置输入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述 整数e的所述整数算出部所算出的整数r、作为所述元s的所述识别元存储部所存储的元 Q、以及作为所述元h的所述密文输入部所输入的元U,判断是否验证成功,所述解密文生成部使用所述处理装置,在所述验证装置判断为验证成功的情况下,根 据所述比特串算出部所算出的比特串m,算出通过规定的散列函数H4对所述比特串m进行 散列得到的散列值并设为共用密钥K( = H4Oii)),输出所算出的共用密钥K作为所述解密 文。
8.根据权利要求7所述的密文解密装置,其特征在于,所述识别元算出部在由所述密文输入部输入所述密文之前算出所述元Q。
9.根据权利要求7所述的密文解密装置,其特征在于,所述密文解密装置还具有共用密钥存储部、加密消息输入部以及消息解密部, 所述共用密钥存储部使用所述存储装置,存储所述解密文生成部所输出的共用密钥K, 所述加密消息输入部使用所述处理装置输入加密消息,所述消息解密部使用所述处理装置,利用所述共用密钥存储部所存储的共用密钥K对 所述加密消息输入部所输入的加密消息进行解密。
10.根据权利要求6所述的密文解密装置,其特征在于, 所述密文解密装置还具有密码参数存储部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数ρ, 所述密钥存储部使用所述存储装置,存储大于等于1且小于等于P-I的整数W、大于等 于1且小于等于P-I的整数χ、大于等于1且小于等于P-I的整数y、以及大于等于1且小 于等于P-I的整数z,所述密文输入部使用所述处理装置,输入所述有限群G的元U、所述有限群G的元U’、 以及所述有限群G的元ν作为所述密文,所述密文验证部具有散列值算出部和整数算出部,所述散列值算出部使用所述处理装置,根据所述密文输入部所输入的元u和元U’,算 出通过规定的散列函数H对所述元u和所述元U’进行散列得到的散列值并设为整数α (= H(u,u,)),所述整数算出部使用所述处理装置,根据所述密码参数存储部所存储的阶数P、所述密钥存储部所存储的整数X和整数y、以及所述散列值算出部所算出的整数α,算出将所述整 数y与所述整数α之积和所述整数X的和除以所述阶数P而得到的余数并设为整数t(= (x+y · α )mod ρ),所述验证装置输入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述 整数e的所述密钥存储部所存储的整数W、作为所述元s的所述密文输入部所输入的元U、 以及作为所述元h的所述密文输入部所输入的元U’,判断是否验证成功并作为第一验证结 果;输入所述密码参数存储部所存储的阶数P、作为所述整数e的所述整数算出部所算出 的整数t、作为所述元s的所述密文输入部所输入的元U、以及作为所述元h的所述密文输 入部所输入的元V,判断是否验证成功并作为第二验证结果,所述解密文生成部使用所述处理装置,在所述验证装置在所述第一验证结果和所述第 二验证结果中都判断为验证成功的情况下,根据所述密钥存储部所存储的整数ζ和所述密 文输入部所输入的元u,将所述元u相加所述整数ζ次来设为所述有限群G的元h ( = ζ ·ιι), 根据所述密文输入部所输入的元u和所算出的元1Γ,利用规定的密钥导出函数KDF根据所 述元u和所述元IT生成共用密钥K ( = KDF (u,hi),输出所生成的共用密钥K作为所述解 密文。
11.根据权利要求10所述的密文解密装置,其特征在于,所述密文解密装置还具有共用密钥存储部、加密消息输入部以及消息解密部, 所述共用密钥存储部使用所述存储装置,存储所述解密文生成部所输出的共用密钥K, 所述加密消息输入部使用所述处理装置,输入加密消息,所述消息解密部使用所述处理装置,利用所述共用密钥存储部所存储的共用密钥K对 所述加密消息输入部所输入的加密消息进行解密。
12.根据权利要求6所述的密文解密装置,其特征在于, 所述密文解密装置还具有密码参数存储部,所述密码参数存储部使用所述存储装置,存储加法群G1的阶数P、所述加法群G1的生 成元g、以及以所述阶数ρ为阶数的乘法群Gt的元Vtl,所述密钥存储部使用所述存储装置,存储以所述阶数P为阶数的加法群G2的元Cltl和所 述加法群G2的元屯,所述密文输入部使用所述处理装置,输入比特串c、所述加法群G1的元Ctl、所述加法群 G1的元C1、以及大于等于1且小于等于P-I的整数t作为所述密文, 所述密文验证部具有配对值算出部和整数算出部,所述配对值算出部使用所述处理装置,根据所述密文输入部所输入的元Ctl和所述秘密 密钥存储部所存储的元Cltl,利用规定的配对函数e算出所述元Ctl与所述元Cltl的配对值并设 为所述乘法群Gt的元kd = e(c0, Cltl)),根据所述密文输入部所输入的元C1和所述秘密密 钥存储部所存储的元Cl1,利用所述配对函数e算出所述元C1与所述元Cl1的配对值并设为所 述乘法群Gt的元Ic1 ( = e (CljCl1)),根据所算出的所述元Icci和所算出的所述元Ic1,将所述元 k0除以所述元Ic1来设为所述乘法群Gt的元k( = Vk1),所述整数算出部使用所述处理装置,根据所述配对值算出部所算出的元k、所述密文输 入部所输入的比特串C、元Ctl、以及元C1,算出通过规定的散列函数H”对所述元k、所述比特 串C、所述元Ctl、以及所述元C1进行散列得到的散列值并设为整数H”(k,c, c0, C1),根据所述密文输入部所输入的整数t、所算出的整数H”(k,c, c0, C1)、以及所述密码参数存储部所 存储的阶数P,算出将从所述整数t减去所述整数H”(k,c, c0, C1)而得到的整数除以阶数 P 的余数并设为整数 s( = t-H”(k,c, c0, C1)mod ρ),所述验证装置将所述加法群G1作为所述有限群G,输入作为所述阶数ρ的所述密码 参数存储部所存储的阶数P、作为所述整数e的所述整数算出部所算出的整数S、作为所述 元s的所述密码参数存储部所存储的生成元g、以及作为所述元h的所述密文输入部所输 入的元Ctl,判断是否验证成功并作为第一验证结果;将所述乘法群Gt作为所述有限群G,输 入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述整数e的所述整数算 出部所算出的整数S、作为所述元s的所述密码参数存储部所存储的元V(l、以及作为所述元 h的所述配对值算出部所算出的元k,判断是否验证成功并作为第二验证结果,所述解密文生成部使用所述处理装置,在所述验证装置在所述第一验证结果和所述第 二验证结果中都判断为验证成功的情况下,根据所述配对值算出部所算出的元k,算出通过 规定的散列函数H’对所述元k进行散列得到的散列值并设为比特串H’(k),根据所述密文 输入部所输入的比特串c和所算出的比特串H’(k),取得所述比特串c与所述比特串H’ (k) 的逻辑异或并设为比特串M’( = c XOR H’(k)),输出所算出的比特串M’作为所述解密文。
13.一种签名验证装置,具有处理数据的处理装置、消息输入部、签名输入部、签名验 证部、权利要求1所述的验证装置以及验证结果输出部,所述消息输入部使用所述处理装置,输入消息,所述签名输入部使用所述处理装置,输入对于所述消息输入部所输入的消息的签名, 所述签名验证部使用所述处理装置,根据所述消息输入部所输入的消息和所述签名输 入部所输入的签名,算出输入到所述验证装置的整数e、所述有限群G的元S、以及所述有限 群G的元h,所述验证装置输入所述签名验证部所算出的整数e、所述有限群G的元S、以及所述有 限群G的元h,判断是否验证成功,所述验证结果输出部使用所述处理装置,根据所述验证装置所验证的结果,输出表示 是否验证成功的验证结果。
14.根据权利要求13所述的签名验证装置,其特征在于,所述签名验证装置还具有存储数据的存储装置、密码参数存储部以及识别存储部, 所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数ρ、所述有限群G的 生成元g、以及所述有限群G的元X,所述识别存储部使用所述存储装置,存储用于识别签名装置的比特串ID, 所述消息输入部使用所述处理装置,输入比特串M作为所述消息, 所述签名输入部使用所述处理装置,输入所述有限群G的元R、所述有限群G的元S、所 述有限群G的元Y、以及大于等于1且小于等于p-1的整数ζ作为所述签名,所述签名验证部具有整数算出部、验证元算出部、挑战算出部以及第一验证部, 所述整数算出部使用所述处理装置,根据所述签名输入部所输入的元R和所述识别存 储部所存储的比特串ID,算出通过规定的散列函数H对所述元R和所述比特串ID进行散列 得到的散列值并设为整数h( = H(R,ID)),所述验证元算出部使用所述处理装置,根据所述签名输入部所输入的元R和元S,将所述元S与所述元R的逆元相加来设为所述有限群G的元R’ ( = S-R),所述挑战算出部使用所述处理装置,根据所述识别存储部所存储的比特串ID、所述签 名输入部所输入的元R、元S和元Y、以及所述消息输入部所输入的比特串M,算出通过规定 的散列函数H’对所述比特串ID、所述元R、所述元S、所述元Y、以及所述比特串M进行散列 得到的散列值并设为整数c( = H,(I, R,S,Y,M)),所述第一验证部使用所述处理装置,根据所述密码参数存储部所存储的生成元g、所述 签名输入部所输入的元S、元Y和整数ζ、以及所述挑战算出部所算出的整数c,判断对将所 述元S相加所述整数c次得到的元c · S加上所述元Y的元Y+c · S是否与将所述元g相加 所述整数ζ次得到的元ζ · g相等,在所述元Y+c · S与所述元ζ · g相等的情况下,判断为 验证成功并作为第一验证结果,所述验证装置输入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述 整数e的所述整数算出部所算出的整数h、作为所述元s的所述密码参数存储部所存储的元 X、以及作为所述元h的所述验证元算出部所算出的元R’,判断是否验证成功并作为第二验 证结果,所述验证结果输出部使用所述处理装置,根据所述第一验证部所验证的第一验证结果 和所述验证装置所验证的第二验证结果,在所述第一验证结果和所述第二验证结果中都判 断为验证成功的情况下,输出表示验证成功的验证结果。
15.一种认证装置,具有处理数据的处理装置、发送数据的发送装置、接收数据的接 收装置、认证请求接收部、询问发送部、回答接收部、签名验证部、权利要求1所述的验证装 置以及认证结果输出部,所述认证请求接收部使用所述接收装置,接收认证请求消息,所述询问发送部使用所述发送装置,作为对于所述认证请求接收部所接收到的认证请 求消息的响应,发送询问消息,所述回答接收部使用所述接收装置,接收对于所发送的询问消息的回答消息, 所述签名验证部使用所述处理装置,根据所述认证请求接收部所接收到的认证请求消 息和所述回答接收部所接收到的回答消息,算出输入到所述验证装置的整数e、所述有限群 G的元S、以及所述有限群G的元h,所述验证装置输入所述签名验证部所算出的整数e、所述有限群G的元S、以及所述有 限群G的元h,判断是否验证成功,所述认证结果输出部使用所述处理装置,根据所述验证装置所验证的结果,输出表示 是否认证成功的认证结果。
16.根据权利要求15所述的认证装置,其特征在于,所述认证装置还具有存储数据的存储装置、密码参数存储部、识别存储部以及挑战生 成部,所述密码参数存储部使用所述存储装置,存储所述有限群G的阶数ρ、所述有限群G的 生成元g、以及所述有限群G的元X,所述识别存储部使用所述存储装置,存储用于识别证明装置的比特 串ID,所述认证请求接收部使用所述接收装置,从所述证明装置接收所述有限群G的元R、所述有限群G的元S、以及所述有限群的元Y作为所述认证请求消息,所述挑战生成部使用所述处理装置,随机地生成大于等于1且小于等于P-I的整数c, 所述询问发送部使用所述发送装置,作为所述询问消息对所述证明装置发送所述挑战 生成部所生成的整数C,所述回答接收部使用所述接收装置,从所述证明装置接收大于等于1且小于等于P-I 的整数ζ作为所述回答消息,所述签名验证部具有整数算出部、验证元算出部以及第一验证部, 所述整数算出部使用所述处理装置,根据所述认证请求接收部所接收到的元R和所述 识别存储部所存储的比特串ID,算出通过规定的散列函数H对所述元R和所述比特串ID进 行散列得到的散列值并设为整数h( = H(R,ID)),所述验证元算出部使用所述处理装置,根据所述认证请求接收部所接收到的元R和元 S,对所述元S加上所述元R的逆元来设为所述有限群G的元R’ ( = S-R),所述第一验证部使用所述处理装置,根据所述密码参数存储部所存储的生成元g、所述 认证请求接收部所接收到的元S和元Y、所述挑战生成部所生成的整数C、以及所述回答接 收部所接收到的整数z,判断对将所述元S相加所述整数c次得到的元c · S加上所述元Y 的元Y+c · S是否与将所述元g相加所述整数ζ次得到的元ζ · g相等,在所述元Y+c · S与 所述元ζ · g相等的情况下,判断为验证成功并作为第一验证结果,所述验证装置输入作为所述阶数P的所述密码参数存储部所存储的阶数P、作为所述 整数e的所述整数算出部所算出的整数h、作为所述元s的所述密码参数存储部所存储的元 X、以及作为所述元h的所述验证元算出部所算出的元R’,判断是否验证成功并作为第二验 证结果,所述认证结果输出部使用所述处理装置,根据所述第一验证部所验证的第一验证结果 和所述验证装置所验证的第二验证结果,在所述第一验证结果和所述第二验证结果中都判 断为验证成功的情况下,输出表示认证成功的认证结果。
17.—种密码系统,其特征在于,具有权利要求1所述的验证装置。
18.一种计算机程序,其特征在于,使具有处理数据的处理装置的计算机作为权利要求 1所述的验证装置而发挥功能。
19.一种验证方法,使具有处理数据的处理装置的验证装置验证匹配性,其特征在于, 所述处理装置输入有限群G的阶数ρ和整数e,根据所输入的阶数P和整数e,算出满足ei · e三e2(mod ρ)的整数θι和整数e2,所述处理装置输入所述有限群G的元s和所述有限群G的元h,根据所输入的元g和元 h、以及所算出的整数ei和整数e2,算出所述有限群G的元a( = ei · h_e2 · s),所述处理装置根据所算出的元a,在所述元a为所述有限群G的单位元的情况下,判断 为验证成功。
全文摘要
在整数分割处理S701中,整数分割部110输入有限群G的阶数p和整数e,根据所输入的阶数p和整数e,算出满足e1·e≡e2(mod p)的整数e1和整数e2。在验证值算出处理S702中,验证值算出部130输入有限群G的元s和加法群G的元h,根据所输入的元s和元h、以及通过整数分割处理S701由整数分割部110算出的整数e1和整数e2,算出有限群G的元a(=e1·h-e2·s)。在验证判断处理S703中,验证判断部150根据验证值算出部130所算出的元a,判断元a是否为有限群G的单位元O。由此,高速地判断h=e·s是否成立。
文档编号G09C1/00GK101925942SQ20088012535
公开日2010年12月22日 申请日期2008年2月20日 优先权日2008年2月20日
发明者高岛克幸 申请人:三菱电机株式会社

最新回复(0)