素数计算装置和方法以及密钥发行系统的制作方法

文档序号:2391626阅读:491来源:国知局
专利名称:素数计算装置和方法以及密钥发行系统的制作方法
技术领域
本发明涉及一种将素因数分解的难易作为安全性的基础来保持信息安全的技术。
背景技术
近年来,基于计算机技术和通信技术的数据通信广泛普及,在该数据通信中,使用保密通信方式或数字签名方式。这里,所谓保密通信方式是指不向特定通信对方以外的对象泄漏通信内容地进行通信的方式。另外,所谓数字签名方式是指又向通信对方示出通信内容的合法性、又证明发信者的身份的通信方式。
1.公钥加密方式关于这些保密通信方式或数字签名方式,使用被称为公钥加密方式的加密方式。在使用公钥加密方式的保密通信中,加密密钥与解密密钥不同,虽然解密密钥保密,但加密密钥则公开。将保密的解密密钥称为私钥,将公开的加密密钥称为公钥。当通信对方多时,在共同密钥加密下,通信对方之间必需具有密钥,而在公钥加密下,通信对方只要具有一个固有密钥就可通信,所以即便通信对方增加,密钥数量也比共同密钥加密少。这样,公钥加密适于与多个通信对方进行通信,是不可或缺的基本技术。
在作为公钥加密方式之一的RSA加密方式中,将解决整数的素因数分解问题在计算量上是困难的情况作为安全性的基础。所谓素因数分解问题是在将p、q设为素数,整数n=p×q时,对整数n求出素数p、q的问题。这里,×是通常的乘法。通常在p、q如1024位的数等大的情况下,素因数分解问题困难。由此,根据RSA加密方式的公钥求出私钥、或不具有私钥的用户根据加密文本来求得明码文本变困难。另外,素因数分解问题在非专利文献1的144-151页中详细记述。
(应用素因数分解问题的RSA加密方式)这里,说明应用素因数分解问题的RSA加密方式。
(1)密钥的生成如下计算公钥和私钥。
.随机选择大的素数p、q,并计算其积n=p×q。
.计算(p-1)和(q-1)的最小公倍数L=LCM(p-1,q-1)。
.随机选择与L互质、比L小的自然数e。
1≤e≤L-1、GCD(e,L)=1这里,GCD(e,L)表示e与L的最大公约数。
.计算满足e×d=1 mod L的d。由于GCD(e,L)=1,所以必然存在这种d。这样,得到的整数e和整数n为公钥。另外,整数d为私钥。这里,x mod y表示用y除以x的余数。
(2)加密文本的生成使用作为公钥的整数e和整数n,对明码文本m实施加密运算,计算加密文本c。
c=m^e mod n另外,本说明书中,运算符^表示阶乘。例如,A^x表示当x>0时、乘以x次A所得的值。
(3)解密文本的生成使用作为私钥的整数d,对加密文本c实施解密运算,计算解密文本m’。
m’=c^d mod n另外,由于
m’=c^d mod n=(m^e)^d mod n=m(e×d mod L) mod n=m^1 mod n=m mod n,所以解密文本m’与明码文本m一致。
另外,关于RSA加密在非专利文献2的110-113页中详细说明。
在应用上述的素因数分解的RSA加密中的公钥生成步骤中,执行素数生成。素数生成在非专利文献3的145-154页中详细说明。素数生成方法中有概率的素数生成法和确定的素数生成方法。由概率的素数生成法生成的素数是‘作为素数的概率高的’数,不限于是100%素数。另一方面,确定的素数生成方法生成确实是素数的数。在非专利文献2中详细说明了概率的素数生成方法和确定的素数生成方法。下面说明确定的素数生成方法。
2.现有例1-确定的素数生成方法说明基于能确定地生成素数的Maurer法之确定的素数生成方法。这里,在非专利文献3的152-153页中详细说明了Maurer法。
在所述确定的素数生成方法中,通过重复下面所示的步骤,生成素数。预先提供位长度为lenq的素数q。
(步骤1)选择(lenq-1)位的随机数R。另外,随机数R的开头位必然为1。
(步骤2)利用下式计算数N。
N=2×q×R+1(步骤3)关于数N是否为素数,在下面所示的第1判定和第2判定均成立的情况下,判定为素数。在其它情况下,判定为不是素数。
(第1判定)2^(N-1)=1 mod N(第2判定)GCD(2^(2R)-1,N)=1在判定为是素数的情况下,输出数N,作为素数。在判定为不是素数的情况下,返回步骤1,重复处理,直到输出素数。
步骤3中描述的判定方法被称为Pocklington的素数判定法,在非专利文献3的144页中详细描述。在Pocklington的素数判定法中,N=2×q×R+1的q为素数,若第1判定和第2判定的结果为真,则N必然为素数。因此,可确定地判定为是素数,可确定地生成素数。
这样,在Maurer法的确定的素数生成方法中,根据长度为lenq的素数q,生成长度为2×lenq的素数N。因此,在使用Maurer法的确定的素数生成方法来生成规定长度的素数的情况下,重复执行所述规定长度以下的素数的生成。例如,在生成512位长度的素数的情况下,根据预先提供的8位的素数,生成16位的素数。之后,根据生成的16位的素数,生成32位的素数。之后,根据生成的32位的素数,生成64位的素数。下面重复同样的素数生成,生成512位的素数。
另外,也可将所述第2判定替代为如下判定。
(第3判定)2^(2R)≠1 mod N上述第3判定方法在非专利文献4中详细描述。以后使用这些判定方法。
3.具有多个密钥发行服务器的密钥发行系统在公钥加密的密钥发行系统中,有用户生成密钥的情况、和由密钥发行服务器向用户发行密钥的情况。在由密钥发行服务器发行密钥的情况下,向用户发行密钥的服务器多数情况下为一台。但是,为了减轻处理的负荷,密钥发行系统具备多台密钥管理服务器,多台密钥管理服务器各自也发行密钥。
专利文献1特开2003-5644号公报非专利文献1冈本龙明、太田和夫共编,“暗号·ゼロ知识问题·数论”,共立出版,1990非专利文献2冈本龙明、山本博资,“现代暗号”,产业图书(1997年)
非专利文献3A.J.Menezes,P.C.van Oorschot,S.A.Vanstone,“Handbook of applied cryptography”,CRC Pres s,1997非专利文献4冈本荣司,“暗号理论入门”,共立出版,1993,21页非专利文献5Henri Cohen,“A Course in Computational AlgebraicNumber Theory”,GTM 138,Springer-Verlag,1993在使用多台密钥发行服务器的密钥发行系统中,第1密钥发行服务器与第2密钥发行服务器不能彼此检查各自发行的RSA密钥。这是因为若向其它密钥发行服务器公开发行的RSA密钥,则安全上有问题。因此,偶而第1和第2密钥发行服务器为第1用户和第2用户生成相同的公钥和相同的私钥。
因此,在利用加密方式时,存在不能确保安全的问题。
例如,第3用户使用第1用户用的所述公钥,对第1用户生成加密文本并送达时,第1用户当然可使用自身的私钥对加密文本进行解密,但第2用户也能使用自身的私钥,对所述加密文本进行解密。

发明内容
为了解决这种问题,通过两个不同素数的积来计算RSA的公钥,所以只要使公钥生成中使用的各素数在第1密钥发行服务器和第2密钥发行服务器中不同即可。
因此,本发明的目的在于提供一种素数计算装置、密钥发行系统、素数算出方法和素数算出程序,在算出素数时,通过简单的管理,在避免重复的同时算出素数。
为了实现上述目的,本发明是一种素数计算装置,算出比已知素数q大的素数候补N,进行素数判定,其特征在于,具备素数存储单元,存储已知的素数q;管理信息存储单元,存储素数利用范围中的唯一管理信息;搅乱信息生成单元,从所述管理信息存储单元中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补计算单元,从所述素数存储单元中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定单元,判定算出的素数候补N是否为素数;和输出单元,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出。
根据上述结构,素数计算装置使用依赖于唯一的管理信息生成的搅乱信息R,算出素数候补N,所以可在避免重复的同时算出素数候补。所谓素数的利用范围是以素因数分解的难易性作为安全性的基础来利用素数的范围。
这里,也可以是所述搅乱信息生成单元包含读出部,从所述管理信息存储单元中读出所述管理信息;随机数算出部,算出随机数r;结合部,结合读出的所述管理信息和生成的随机数r;和运算部,根据所述管理信息和随机数r的结合体,算出搅乱信息R。
根据该结构,素数计算装置根据管理信息和随机数r的结合体,生成搅乱信息R,所以可生成兼备基于管理信息的唯一性和基于随机数r的随机性的搅乱信息。
这里,也可以是所述运算部对所述结合体实施单射函数,生成搅乱信息R。
根据该结构,素数计算装置对结合体实施单射函数,生成搅乱信息R,所以根据单射函数性质,可生成保持结合体具有的唯一性、并且具备基于从结合体变换的随机性的搅乱信息。
这里,也可以是所述单射函数是异或(exclusive or),所述运算部预先存储规定的密钥信息,对所述密钥信息和所述结合体实施异或,生成搅乱信息R。
根据该结构,素数计算装置可根据结合体和规定的密钥信息,实施异或,生成搅乱信息R。
这里,也可以是所述素数计算装置算出具有素数q的2倍位长度的素数候补N,所述随机数算出部算出位长度为从素数q的位长度中减去所述管理信息的位长度和1的所述随机数r。
根据该结构,素数计算装置可算出位长度为从素数q的位长度中减去管理信息的位长度和1的随机数r,并算出具有素数q的2倍位长度的素数候补N。
这里,也可以是所述素数判定单元包含第1判定部,对所述素数候补N判定是否满足2N-1=1 mod N;和第2判定部,在由所述第1判定部判定为满足的情况下,再对素数候补N和搅乱信息R判定是否满足22R≠1 mod N,在判定为满足的情况下,确定素数候补N为素数。
根据该结构,素数计算装置使用第1和第2判定部来判断素数候补N是否为素数,所以第1和第2判定部双方在判定结果为肯定的情况下,可将素数候补N判断为素数。
这里,也可以是所述素数判定单元包含第1判定部,对所述素数候补N判定是否满足2N-1=1 mod N;和第2判定部,在由所述第1判定部判定为满足的情况下,再对素数候补N和搅乱信息R判定是否满足GCD(22R-1、N)=1,在判定为满足的情况下,确定素数候补N为素数。
根据该结构,素数计算装置使用第1和第2判定部来判断素数候补N是否为素数,所以第1和第2判定部双方在判定结果为肯定的情况下,可将素数候补N判断为素数。
这里,也可以是所述素数计算装置还包含重复控制单元,对所述搅乱信息生成单元、所述候补计算单元和所述素数判定单元进行控制,以重复搅乱信息R的生成、素数候补N的计算和所述判定,直到由所述素数判定单元判定为是素数为止。
根据该结构,素数计算装置利用重复控制单元,重复搅乱信息R的生成、素数候补N的计算、素数的判定,直到判定为生成的素数候补是素数为止,所以总是能够输出素数。
这里,也可以是所述素数计算装置还包含次级随机数计算单元,算出随机数R’;次级候补计算单元,使用输出的所述素数N和生成的所述随机数R’,通过N’=2×随机数R’×素数N+1,算出素数候补N’;次级素数判定单元,判定算出的素数候补N’是否为素数;次级输出单元,在判定为是素数的情况下,将算出的素数候补N’作为素数进行输出;和次级重复控制单元,对所述次级随机数计算单元、所述次级候补计算单元和所述次级素数判定单元进行控制,以重复随机数R’的生成、素数候补N’的计算和所述判定,直到由所述次级素数判定单元判定为是素数为止。
根据该结构,素数计算装置使用素数N和生成的随机数R’,算出素数候补N’,判定算出的素数候补N’是否为素数,并在是素数的情况下,将算出的素数候补N’作为素数进行输出。
这里,也可以是所述素数计算装置还包含次级信息存储单元,存储规定的验证值;次级随机数生成单元,生成随机数r’;和次级候补计算单元,对所述管理信息乘以生成的所述随机数r’,算出搅乱信息R’,并通过N’=2×搅乱信息R’×素数N+验证值,算出素数候补N’,所述素数判定单元还判定算出的素数候补N’是否为素数,所述输出单元还在判定为素数候补N’为素数的情况下,将算出的素数候补N’作为素数进行输出。
根据该结构,素数计算装置使用验证值、素数N、向管理信息乘以随机数r’的搅乱信息R’,算出素数候补N’,判断算出的素数候补N’是否为素数,在是素数的情况下,将素数候补N’作为素数进行输出。由此,可生成从素数N’中减去验证值的结果被管理信息除尽的素数N’。
这里,也可以是所述素数计算装置是生成RSA加密的公钥和私钥的密钥生成装置,所述素数计算装置还包含公钥生成单元,使用算出的素数N,生成RSA加密的公钥;和私钥生成单元,使用生成的公钥,生成RSA加密的私钥。
根据该结构,素数计算装置可构成生成RSA加密的公钥和私钥的密钥生成装置,素数计算装置使用算出的素数N,生成公钥,并使用生成的公钥,生成私钥。
这里,也可以是所述公钥生成单元对所述重复控制单元指示重新得到素数N’,并使用所述素数N和重新得到的素数N’,通过n=素数N×素数N’,算出数n,生成随机数e,算出的数n和生成的随机数e的组为所述公钥,所述私钥生成单元算出满足e×d=1 mod L的d,L是素数N-1和素数N’-1的最小公倍数,算出的d是所述私钥。
根据该结构,素数计算装置使用素数N和素数N’,算出数n,生成随机数e,从而生成公钥,并根据生成的随机数e、与素数N-1和素数N’-1的最小公倍数,生成私钥。
这里,也可以是所述素数计算装置是密钥发行服务器装置,对终端装置生成并发行RSA的私钥和公钥,所述素数计算装置还包含密钥输出单元,对终端装置输出生成的所述私钥;和公开单元,公开生成的所述公钥。
根据该结构,素数计算装置对终端装置输出生成的私钥,公开生成的公钥。
这里,也可以是所述素数计算装置还包含标识符取得单元,取得唯一识别所述终端装置的终端装置标识符;管理信息生成单元,生成包含取得的终端装置标识符的所述管理信息;和写入单元,将生成的所述管理信息写入所述管理信息存储单元中。
根据该结构,素数计算装置生成包含终端装置标识符的管理信息,将生成的管理信息写入管理信息存储单元中,所以可存储唯一的管理信息。
这里,也可以是所述素数计算装置还包含服务器标识符存储单元,预先存储唯一识别作为密钥发行服务器装置的该素数计算装置的服务器标识符,所述管理信息生成单元还从所述服务器标识符存储单元中读出所述服务器标识符,并生成还包含读出的服务器标识符的所述管理信息。
根据该结构,素数计算装置还生成包含服务器标识符的管理信息,所以可提高管理信息的唯一性。
另外,本发明是一种素数计算装置,算出比已知素数大的素数,其特征在于,具备素数计算单元,算出具有已知输入素数的2倍位长度的输出素数;素数存储单元,存储已知的素数初始值;和重复控制单元,对所述素数计算单元进行控制,以重复多次计算,所述重复控制单元在所述重复中的初次计算中,将存储在所述素数存储单元中的素数初始值作为所述输入素数,提供给所述素数计算单元,在所述重复的初次计算以外的其它计算中,将前一次计算中的输出素数作为该其它计算中的所述输入素数,提供给所述素数计算单元,在所述多次算出的任一计算中,所述素数计算单元包含管理信息保存部,存储素数利用范围中的唯一管理信息;搅乱信息生成部,从所述管理信息保存部中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出部,接收所述输入素数q,使用接受的所述输入素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定部,判定算出的素数候补N是否为素数;输出部,在判定为是素数的情况下,将算出的素数候补N作为输出素数进行输出;和重复控制部,对所述搅乱信息生成部、所述候补算出部和所述素数判定部进行控制,以重复搅乱信息R的生成、素数候补N的计算与所述判定,直到由所述素数判定部判定为是素数为止。
根据该结构,素数计算装置的素数输出单元在多次输出素数的计算之一的计算中,使用依赖于唯一的管理信息生成的搅乱信息R,算出素数候补N,所以可边避免重复边算出素数候补。
这里,也可以是在所述多次计算中的最终次计算中,所述素数计算单元包含信息保存部,存储规定的验证值;随机数生成部,生成随机数r’;候补算出部,对所述管理信息乘以生成的所述随机数r’,算出搅乱信息R’,并通过N’=2×搅乱信息R’×前一次算出的输出素数+验证值,算出素数候补N’;素数判定部,判定算出的素数候补N’是否为素数;输出部,在判定为素数候补N’为素数的情况下,将算出的素数候补N’作为素数进行输出;和重复控制部,对所述随机数生成部、所述候补算出部和所述素数判定部进行控制,以重复随机数r’的生成、素数候补N’的计算和所述判定,直到由所述素数判定部判定为是素数为止。
根据该结构,素数计算装置使用验证值、在前一次算出的输出素数、向管理信息乘以随机数r’的搅乱信息R’,算出素数候补N’,判断算出的素数候补N’是否为素数,在为素数的情况下,将素数候补N’作为素数进行输出。由此,可生成从素数N’中减去验证值的结果被管理信息除尽的素数N’。
另外,本发明是一种密钥发行系统,具有生成RSA的私钥和公钥后对终端装置发行的密钥发行服务器装置、和所述终端装置,其特征在于,密钥发行服务器装置具备素数计算单元,算出比已知素数q大的素数N;公钥生成单元,使用算出的素数N,生成RSA加密的公钥;私钥生成单元,使用生成的公钥,生成RSA加密的私钥;密钥输出单元,对终端装置输出生成的所述私钥;和公开单元,公开生成的所述公钥,所述素数计算单元包含素数保存部,存储已知的素数q;管理信息保存部,存储唯一的管理信息;搅乱信息生成部,从所述管理信息保存部中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出部,从所述素数保存部中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定部,判定算出的素数候补N是否为素数;输出部,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出;和重复控制部,对所述搅乱信息生成部、所述候补算出部和所述素数判定部进行控制,以重复搅乱信息R的生成、素数候补N的计算与所述判定,直到由所述素数判定部判定为是素数为止,所述终端装置具备接收单元,接收所述私钥;和密钥存储单元,存储接收到的私钥。
根据该结构,密钥发行系统的密钥发行服务器装置使用依赖于唯一的管理信息生成的搅乱信息R,算出素数候补N,所以可在避免重复的同时算出素数候补。终端装置从密钥发行服务器装置接收私钥并存储,所以可存储根据在避免重复的同时生成的素数N来生成的、即在避免重复的同时生成的私钥。
这里,也可以是所述密钥发行系统还包含证书发行服务器装置,所述密钥输出单元向所述证书发行服务器装置输出所述公钥,所述证书发行服务器装置具备存储单元,存储该证书发行服务器装置的私钥;取得单元,取得所述公钥;证书生成单元,使用所述证书发行服务器装置的私钥,对包含所述公钥的公钥信息实施数字签名,生成签名数据,并生成至少包含所述公钥和生成的所述签名数据的公钥证书;和输出单元,向密钥发行服务器装置输出生成的公钥证书。
根据该结构,密钥发行系统可使用证书发行服务器装置,发行与由密钥发行服务器装置发行的公钥对应的公钥证书。


图1是表示密钥发行系统1的整体示意图。
图2是表示密钥发行服务器100的结构的框图。
图3是表示素数生成部116的结构的框图。
图4是表示控制信息表格T100的数据结构一例的图。
图5是表示素数信息生成部133的结构的框图。
图6是表示证书发行服务器200的结构的框图。
图7是表示验证值表格T200的数据结构一例的图。
图8是表示终端装置300的结构的框图。
图9是表示密钥发行系统1的动作示意流程图。
图10是表示密钥发行系统1中的密钥委托处理动作的流程图。
图11是表示密钥发行系统1中的密钥发行处理动作的流程图。下接图12。
图12是表示密钥发行系统1中的密钥发行处理动作的流程图。上接图11,下接图13。
图13是表示密钥发行系统1中的密钥发行处理动作的流程图。上接图12,下接图14。
图14是表示密钥发行系统1中的密钥发行处理动作的流程图。上接图13。
图15是表示素数生成处理动作的流程图。
图16是表示素数候补生成处理动作的流程图。下接图17。
图17是表示素数候补生成处理动作的流程图。上接图16。
图18是表示密钥发行系统1中的证书发行处理动作的流程图。
图19是表示素数信息生成部133A的结构的框图。
图20是表示验证值表格T250的数据结构一例的图。
图21是表示素数信息生成部133B的结构的框图。
图22是表示素数生成部116C的结构的框图。
图23是表示控制信息表格T150的数据结构的一例的图。
图24是表示素数信息生成部133C的结构的框图。
图25是表示素数候补生成处理的动作的流程图。
图26是表示密钥发行系统2的整体示意图。
图27是表示密钥发行服务器1110的结构的框图。
图28是表示已发行密钥信息表格T1100的数据结构一例的图。
图29是表示密钥发行检查服务器1200的结构的框图。
图30是表示验证值表格T1200的数据结构一例的图。
图31是表示密钥发行时的密钥发行系统2的动作示意流程图。
图32是表示密钥发行时的密钥发行系统2的动作示意流程图。
图33是表示密钥发行系统2中的证书发行处理的动作的流程图。
图34是表示密钥发行系统2中的密钥信息取得处理动作的流程图。
图35是表示密钥发行系统2中的检查处理的动作的流程图。
图36是表示确认处理的动作的流程图。
图37是表示根据8位的素数来生成512位素数的动作图。
图38是表示素数生成装置2100的结构的框图。
图39是表示素数生成处理动作的流程图。
图40是表示素数候补生成处理动作的流程图。
图41是表示素数生成装置2200的结构的框图。
图42是表示素数生成装置2300的结构的框图。
图43是表示素数生成装置2400的结构的框图。
图44是表示素数生成装置2500的结构的框图。
图45是表示在发行标识符信息“IDI”的位串中埋入构成随机数“R1”的各位的结果“IDI_R1”一例的图。
图46是表示验证处理动作的流程图。
附图标记说明1 密钥发行系统100、101、102 密钥发行服务器110 标识符保存部111 私钥保存部112 公钥保存部113 证书保存部114 控制部115 标识符生成部116 素数生成部117 密钥判定部118 密钥生成部119 信息取得部120 接收部121 发送部130 服务器标识符存储区域131 终端信息存储区域
132 重复控制部133 素数信息生成部135 重复计数器136 输出计数器140 信息控制部141 随机数生成部142 素数候补生成部143 第1素数判定部144 第2素数判定部200 证书发行服务器210 私钥保存部211 发行公钥保存部212 发行标识符信息保存部213 公钥证书保存部214 发行公钥确认部215 公钥证书生成部216 证书取得部217 接收部218 发送部220 服务器信息存储区域221 确认信息存储区域300、301、302、303、304、305、306 终端装置310 私钥保存部311 公钥证书保存部312 控制部313 接收部
314 无线部315 基带信号处理部316 扬声器317 麦克风318 显示部319 天线320 终端标识符存储区域400 终端装置2 密钥发行系统1100、1101、1102 密钥发行服务器1110 标识符保存部1111 私钥保存部1112 公钥保存部1113 证书保存部1114 控制部1115 标识符生成部1116 素数生成部1117 密钥判定部1118 密钥生成部1119 信息取得部1120 接收部1121 发送部1122 证书生成部1123 证书用私钥保存部1124 已发行密钥信息保存部1130 服务器标识符存储区域
1131 终端信息存储区域1200 密钥发行检查服务器1210 确认信息保存部1211 已发行密钥信息保存部1212 控制部1213 发行公钥确认部1214 受理部1215 检查结果输出部1216 接收部1217 发送部1220 服务器信息存储区域1250 监视器1300、1301、1302、1303、1304、1305、1306 终端装置1400 终端装置2100 素数生成装置2101 受理部2102 受理信息保存部2103 素数种子生成部2104 随机数生成部2105 素数候补生成部2106 素数判定部2107 素数判定部2200 素数生成装置2201 受理部2202 受理信息保存部2203 随机数生成部
2204 素数候补生成部2205 素数判定部2206 素数判定部2300 素数生成装置2301 受理部2302 受理信息保存部2303 标识符素数生成部2304 随机数生成部2305 素数候补生成部2306 素数判定部2307 素数判定部2400 素数生成装置2401 受理部2402 受理信息保存部2403 随机数生成部2404 素数候补生成部2405 素数判定部2406 素数判定部2500 素数生成装置2501 受理部2502 受理信息保存部2503 随机数生成部2504 素数候补生成部2505 素数判定部2506 素数判定部
具体实施例方式
1.第1实施方式说明作为本发明的第1实施方式的密钥发行系统1。
1.1密钥发行系统1的概要密钥发行系统1如图1所示,包括密钥发行服务器100、101、102、证书发行服务器200、和终端装置300、301、…、302、303、…、304、305、…、306。终端装置的台数例如为1000台。
密钥发行服务器100、101和102分别由不同的公司管理。终端装置300、301、…、302请求密钥发行服务器100发行密钥,终端装置303、…、304请求密钥发行服务器101发行密钥,终端装置305、…、306请求密钥发行服务器102发行密钥。另外,终端装置300、301、…、302与密钥发行服务器100之间确立安全的通信路径。另外,终端装置303、…、304与密钥发行服务器101之间、和终端装置305、…、306与密钥发行服务器102之间也同样确立安全的通信路径。
另外,密钥发行服务器100、101、102与证书发行服务器200之间也同样确立安全的通信路径。
下面,使用密钥发行服务器100、证书发行服务器200和终端装置300来说明密钥发行系统1的概要。
密钥发行服务器100若从终端装置300接收密钥发行请求,则生成RSA加密中的私钥和公钥,请求证书发行服务器200发行针对所生成的公钥的公钥证书。这里,设生成的各密钥的密钥长度为1024位。
证书发行服务器200若从密钥发行服务器100接收证书的发行请求,则发行公钥证书,将发行的公钥证书发送给密钥发行服务器100。
密钥发行服务器100若从证书发行服务器200接收公钥证书,则将接收到的公钥证书与所生成的私钥发送给终端装置300。
终端装置300若从密钥发行服务器100接收公钥证书和私钥,则存储接收到的公钥证书和私钥。
之后,例如,终端装置400的用户首先从密钥发行服务器100获得终端装置300的公钥证书,或从终端装置300获得公钥证书,并使用证书发行服务器200具有的公钥,确认公钥证书的合法性,在判断为是合法公钥证书的情况下,由终端装置400存储所获得的公钥证书。终端装置400使用包含于存储的公钥证书中的公钥,对发送到终端装置300的电子邮件进行加密,将加密后的电子邮件发送给终端装置300。
终端装置300若从终端装置400接收加密后的电子邮件,则使用存储的私钥,对加密后的电子邮件进行解密,显示解密后的电子邮件。
由此,可在终端装置300与终端装置400之间安全地交换数据。
另外,终端装置301、…、302与终端装置300一样,所以省略说明。另外,密钥发行服务器101和102与密钥发行服务器100一样,所以省略说明。
在以后的说明中,使用终端装置300作为各终端装置的代表,使用密钥发行服务器100作为各密钥发行服务器的代表。
1.2密钥发行服务器100的结构密钥发行服务器100如图2所示,包括标识符保存部110、私钥保存部111、公钥保存部112、证书保存部113、控制部114、标识符生成部115、素数生成部116、密钥判定部117、密钥生成部118、信息取得部119、接收部120和发送部121。
密钥发行服务器100具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储计算机程序。所述微处理器根据所述计算机程序而动作,由此,密钥发行服务器100实现其功能。
另外,密钥发行服务器101和102的结构与密钥发行服务器100一样,所以省略说明。
(1)标识符保存部110
标识符保存部110具有用于存储位长度为126位以下的发行标识符信息的区域。发行标识符信息的位长度例如为64位。
(2)私钥保存部111私钥保存部111具有用于存储私钥生成时使用的两个素数的素数存储区域、和用于存储密钥生成部118生成的私钥的私钥存储区域。
(3)公钥保存部112公钥保存部112具有用于存储密钥生成部118生成的公钥的区域。
(4)证书保存部113证书保存部113具有存储由证书发行服务器发行的公钥证书的区域。
(5)控制部114控制部114如图2所示,具有服务器标识符存储区域130和终端信息存储区域131。
服务器标识符存储区域130预先存储识别该服务器的服务器标识符。例如,密钥发行服务器100存储SIDA,密钥发行服务器101存储SIDB,密钥发行服务器102存储SIDC。另外,以后将密钥发行服务器100的服务器标识符说明为“SID”。这里,设服务器标识符的位长度为31位。
终端信息存储区域131具有存储用于识别请求发行密钥的终端装置的终端标识符的区域。这里,终端标识符例如是终端装置的序列号。这里,设序列号的位长度为32位。
控制部114若从终端装置300经接收部120接收表示密钥发行请求的密钥发行委托信息、和终端装置300的终端标识符“TID”,则将接收到的终端标识符“TID”写入终端信息存储区域131中。控制部114将发行标识符信息的生成指令、与接收到的终端标识符“TID”输出到标识符生成部115。
控制部114若从证书发行服务器200经接收部120接收公钥证书“Cert”,则将接收到的公钥证书“Cert”写入证书保存部113中。控制部114向信息取得部119输出开始将私钥和公钥证书分配给请求发行密钥的终端装置300的处理的分配开始指令。
(6)标识符生成部115标识符生成部115若从控制部114接收发行标识符信息的生成指令、和终端标识符“TID”,则取得由服务器标识符存储区域所存储的服务器标识符“SID”。
标识符生成部115根据取得的服务器标识符“SID”、接收到的终端标识符“TID”和数“1”,生成发行标识符信息“IDI=SID||TID||1”。这里,记号“||”是位或字节连结。通过将发行标识符信息“IDI”的最低位位设为“1”,发行标识符信息“IDI”始终为奇数,其位长度为64位。
标识符生成部115将生成的发行标识符信息“IDI”写入标识符保存部110,向素数生成部116输出素数的生成开始指令。
(7)素数生成部116素数生成部116如图3所示,具有重复控制部121和素数信息生成部133。
素数生成部116根据8位的素数,生成512位的素数,并将生成的512位的素数输出到密钥判定部117。
<重复控制部132>
重复控制部132具有预先存储由8位构成的素数和该素数的位长度(即“8”)的初始值存储区域、和暂时存储从素数信息生成部133接收到的素数的暂时存储区域。
重复控制部132如图3所示,具有重复计数器135,对素数信息生成部133的动作的重复次数进行计数;和输出计数器136,对输出到密钥判定部117的素数的个数即所生成的512位的素数的输出次数进行计数。另外,重复计数器135和输出计数器136的初始值分别为“1”。
重复控制部132具有图4所示的控制信息表格T100。控制信息表格T100存储1个以上由次数和控制信息构成的组。次数对应于重复计数器135的值。控制信息表示由素数信息生成部133生成的素数生成方法的种类。
重复控制部132若从标识符生成部115接收素数的生成开始指令,则控制素数信息生成部133生成素数。若从素数信息生成部133接收素数,则根据重复计数器135和输出计数器136各自的值,再次执行向素数信息生成部133输出素数生成的指令、和向密钥判定部117输出接收到的素数之一。
下面,说明其动作。
重复控制部132若从标识符生成部115接收素数的生成开始指令,则将重复计数器135和输出计数器136分别设定为“1”。
重复控制部132若从素数信息生成部133接收素数,则将重复计数器135的值加“1”,并判断加法的结果是否为7。
在判断为加法结果为7的情况下,重复控制部132判断输出计数器136值是否为1。在判断为是1的情况下,重复控制部132将接收到的素数作为素数“p1”,输出到密钥判定部117,并将输出计数器136的值加“1”,将重复计数器135的值设定为“1”。在判断为不是1、而是2以上的情况下,重复控制部132将接收到的素数作为素数“p2”,将素数“p2”与判定开始指令输出到密钥判定部117。
在判断为加法结果不是7的情况下,算出接收到的素数的位长度,重复控制部132将接收到的素数与算出的位长度暂时存储在暂时存储区域中。
重复控制部132在接收素数的生成开始指令,在将重复计数器135和输出计数器136各自的值加“1”之后,在暂时存储从素数信息生成部133接收到的素数与其位长度之后,以及将输出计数器136的值加“1”,并且将重复计数器135的值设定为“1”之后之一的情况下,重复控制部132执行以下的动作。
重复控制部132判断重复计数器135的值是否为1。在判断为是1的情况下,从初始值存储区域中读出8位的素数与其位长度,在判断为不是1的情况下,从暂时存储区域中读出位长度“8×(2^(n-1))”和其素数。即,重复控制部132在判断为重复计数器135的值不是1的情况下,从暂时存储区域中读出之前暂时存储的素数和其位长度。这里,“n”是重复计数器的值。由此,重复控制部132从暂时存储区域中读出上次生成的素数和其位长度。例如,在重复计数器135的值为“2”的情况下,重复控制部132读出由“16”位构成的素数,在重复计数器135的值为“3”的情况下,读出由“31”位构成的素数。即,在重复计数器135的值为“2”-“6”时,依次读出由“16”位构成的素数、”32”位构成的素数、“64”位构成的素数、“128”位构成的素数和”256”位构成的素数。
从控制信息表格T100中读出对应于重复计数器135的值的控制信息,并判断读出的控制信息是否是“信息C”。
在判断为是“信息C”的情况下,重复控制部132生成由读出的素数和其位长度、以及控制信息构成的第1信息,将生成的第1信息输出到素数信息生成部133。
在判断为不是“信息C”的情况下,重复控制部132从标识符保存部110取得发行识别信息“IDI”,算出所取得的发行标识符信息“IDI”的位长度“lenIDI”,生成由读出的素数和其位长度、控制信息、和发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,将生成的第2信息输出到素数信息生成部133。
另外,重复控制部132若从密钥判定部117接收再次生成素数的再生成指令,则将输出计数器136的值加“1”,并且将重复计数器135的值设定为“1”,执行判断重复计数器135的值是否为1的动作之后的动作。
<素数信息生成部133>
素数信息生成部133如图5所示,由信息控制部140、随机数生成部141、素数候补生成部142、第1素数判定部143和第2素数判定部144构成。
素数信息生成部133生成由从重复控制部132接收到的素数位长度的2倍位长度构成的素数。例如,在接收到由8位构成的素数的情况下,生成由16位构成的素数,在接收到由16位构成的素数的情况下,生成由32位构成的素数。
在以下的说明中,将从重复控制部132接收的素数作为素数“q”,将其位长度作为“lenq”,说明各构成要素。
<信息控制部140>
信息控制部140具有用于存储第1信息和第2信息的信息存储区域。
信息控制部140具有验证值存储区域,预先存储由证书发行服务器200分配、且根据控制信息“信息A”来生成素数时用的第1验证值“c11”和第2验证值“c12”。
信息控制部140若从重复控制部132接收素数“q”、素数的位长度“lenq”、和控制信息构成的第1信息,则将接收到的第1信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、和控制信息(此时为“信息C”)。
信息控制部140若从重复控制部132接收由素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,则将接收到的第2信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”。
信息控制部140在写入接收到的信息之后,向随机数生成部141输出表示随机数生成指示的第1生成指示。
信息控制部140若从第2素数判定部144接收素数,则将接收到的素数输出到重复控制部132。
信息控制部140若从素数候补生成部142接收读出输出计数器136的值的次数读出指令,则读出重复控制部132的输出计数器136的值。信息控制部140将读出的值输出到素数候补生成部142。
<随机数生成部141>
随机数生成部141若从信息控制部140接收表示随机数生成指示的第1生成指示,则读出由信息控制部140的信息存储区域存储的控制信息。随机数生成部141判定读出的控制信息是否是“信息C”。
在判断为是“信息C”的情况下,随机数生成部141读出由信息控制部140的信息存储区域存储的“lenq”,生成由(lenq-1)位构成的随机数“R1”,将生成的随机数“R1”与读出的控制信息输出到素数候补生成部142。这里,设随机数“R1”的最高位位为1。随机数生成方法的细节见非专利文献2。
在判断为不是“信息C”的情况下,随机数生成部141读出由信息控制部140的信息存储区域存储的“lenq”和“lenIDI”,生成由(lenq-lenIDI-1)位构成的随机数“R1”,将生成的随机数“R1”与读出的控制信息输出到素数候补生成部142。这里,设随机数“R1”的最高位位为1。
另外,随机数生成部141若从第1素数判定部143和第2素数判定部144之一接收指示再次生成随机数的第2生成指示,则从信息存储区域中读出控制信息,执行上述动作。
<素数候补生成部142>
素数候补生成部142具有存储生成的信息的生成信息存储区域、和预先存储作为单射的函数“f”的函数存储区域。这里,函数“f”例如是f(X||Y)=Enc(K、X||Y)。Enc(K、X||Y)是基于使用密钥X时的(X||Y)的共同密钥加密的加密文本。共同密钥加密的加密函数一般为满单射。另外,记号“||”是位或字节连结。加密函数“Enc(K、X||Y)”的一例是“Enc(K、X||Y)=K XOR X||Y”。另外,共同加密的一例是DES,在使用DES的情况下,密钥长度为128位。此时,素数候补生成部142存储规定的密钥“K”。
素数候补生成部142若从随机数生成部141接收随机数“R1”与控制信息,则判断接收到的控制信息是否为“信息C”。
在判断为是“信息C”的情况下,素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”。素数候补生成部142使用读出的素数“q”与从随机数生成部141接收到的随机数“R1”,生成数“N=2×R1×q+1”。此时,生成的数“N”成为素数候补。
素数候补生成部142判断生成的数“N”的位长度“lenN”是否与“lenq”一致,在判断为一致的情况下,素数候补生成部142将生成的数“N”输出到第1素数判定部143,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中。
在判断为不一致的情况下,素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“N=2×R1×q+1”。
在判断为控制信息不是“信息C”的情况下,素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”和发行标识符信息“IDI”。素数候补生成部142判断控制信息是否为“信息B”。
在判断为是“信息B”的情况下,素数候补生成部142根据接收到的随机数“R1”与读出的发行标识符信息“IDI”,生成结合值“IDI||R1”,使用生成的结合值“IDI||R1”与由函数存储区域存储的函数“f”,生成数“R=f(IDI||R1)”。素数候补生成部142使用生成的数“R”与读出的素数“q”,生成数“N=2×R×q+1”。此时,生成的数“N”变为素数候补。
素数候补生成部142判定生成的数“N”的位长度“lenN”是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142将生成的数“N”输出到第1素数判定部143,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
在判断为不是“信息B”的情况下,素数候补生成部142使用接收到的随机数“R1”和读出的发行标识符信息“IDI”,生成数“R=IDI×R1”。素数候补生成部142向信息控制部140输出次数读出指令,从信息控制部140接收输出计数器136的值。素数候补生成部142判断输出计数器136的值是否为“1”。
在判断为输出次数为“1”的情况下,素数候补生成部142从信息控制部140的验证值存储区域中读出第1验证值“c11”。
在判断为输出次数不是“1”、即为“2”以上的情况下,素数候补生成部142从信息控制部140的验证值存储区域中读出第2验证值“c12”。
另外,由于读出第1验证值“c11”时的动作与读出第2验证值“c12”时的动作相同,所以下面以验证值“c”进行说明。
素数候补生成部142使用读出的素数“q”、发行标识符信息“IDI”、验证值“c”和生成的数“R”,生成数“N=2×(R+w)×q+1”。此时,生成的数“N”成为素数候补。
这里,“w”是满足“2×w×q+1=c mod IDI,0≤w<IDI”的数。通过计算“w=(c-1)×m mod IDI”,求出“w”。“m”是满足“(2×q)×m=1 modIDI”的数。如上所述,由于发行标识符信息“IDI”为奇数,即,“GCD(IDI,2)=1”,“IDI<q”,所以可计算“m”。计算方法细节见非专利文献5。下面,将使用第1验证值“c11”时的“w”表示为“w1”,将使用第2验证值时的“w”表示为“w2”。
素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”的位长度“lenq”,判定生成的数“N”的位长度“lenN”是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142将生成的数“N”输出到第1素数判定部143,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
<第1素数判定部143>
第1素数判定部143若从素数候补生成部142接收数“N”,则使用接收到的数“N”,判定下式是否成立。
2^(N-1)=1 mod N(eq1)这里,2^(N-1)表示2的N-1次幂。
第1素数判定部143在判断为式(eq1)成立的情况下,将数“N”输出到第2素数判定部144。
第1素数判定部143在判断为式(eq1)不成立的情况下,向随机数生成部141输出第2生成指示。
<第2素数判定部144>
第2素数判定部144若从第1素数判定部143接收数“N”,则读出由素数候补生成部142的生成信息存储区域存储的数“R”。
第2素数判定部144使用数“N”和“R”,判定下式是否成立。
2^(2×R)≠1 mod N(eq2)第2素数判定部144在判断为式(eq2)成立的情况下,将数“N”作为素数“N”,经信息控制部140,输出到重复控制部132。
第2素数判定部144在判断为式(eq2)不成立的情况下,向随机数生成部141输出第2生成指示。
(8)密钥判定部117密钥判定部117具有存储从素数生成部116接收到的两个素数“p1”和“p2”的素数存储区域。
密钥判定部117若从素数生成部116接收素数“p1”和“p2”,则将接收到的素数“p1”和“p2”分别存储在素数存储区域中。
密钥判定部117若从素数生成部116接收判定开始指令,则判断由素数存储区域存储的两个素数“p1”和“p2”是否一致。在判断为一致的情况下,删除存储的素数“p2”,向重复控制部132输出再生成指令。
在判断为不一致的情况下,将存储的两个素数“p1”和“p2”写入私钥保存部111的素数存储区域中,将密钥生成开始指令输出到密钥生成部118。
(9)密钥生成部118密钥生成部118若从密钥判定部117接收密钥生成指令,则读出由私钥保存部111的素数存储区域存储的两个素数“p1”和“p2”,计算读出的素数“p1”和“p2”之积“n=p1×p2”。
密钥生成部118生成随机数“e”,生成由算出的“N”和生成的随机数“e”构成的组“PK=(n,e)”,作为公钥,将生成的公钥“PK”写入公钥保存部112中。这里,随机数“e”与以前一样,随机数“e”与数“L”互质,满足“1≤e≤L-1,GCD(e,L)=1”。这里,GCD(e,L)表示e与L的最大公约数,数“L”是“L=LCM(p1-1,p2-1)”,LCM(p1-1,p2-1)表示“p1-1”与“p2-1”的最小公倍数。
密钥生成部118算出满足“e×d=1 mod L”的“d”,并将算出的“d”、素数“p1”和“p2”构成的组“SK=(p1,p2,d)”作为私钥,写入私钥保存部111的私钥存储区域中。密钥生成部118将开始公钥证书的请求处理的请求开始指令输出到信息取得部119。
(10)信息取得部119信息取得部119若从密钥生成部118接收请求开始指令,则分别从标识符保存部110、公钥保存部112、控制部114的服务器标识符存储区域130中分别读出发行标识符信息“IDI”、公钥“PK”、服务器标识符。信息取得部119经发送部121,将读出的发行标识符信息“IDI”、公钥“PK”、服务器标识符、与委托公钥证书的发行的证书发行委托信息发送给证书发行服务器200。
信息取得部119若从控制部114接收分配开始指令,则分别读出由私钥保存部111存储的私钥“SK”、由证书保存部113存储的公钥证书“Cert”、和由控制部114的终端信息存储区域存储的终端标识符,经发送部121将读出的私钥“SK”和公钥证书“Cert”发送给对应于读出的终端标识符的终端装置300。
(11)接收部120接收部120经因特网,从证书发行服务器200和终端装置300接收信息,将接收到的信息输出到控制部114。
(12)发送部121发送部121若从信息取得部119接收发行标识符信息“IDI”、公钥“PK”、服务器标识符和证书发行委托信息,则将接收到的各信息发送给证书发行服务器200。
发送部121从信息取得部119接收私钥“SK”和公钥证书“Cert”,将接收到的各信息发送给终端装置300。
1.3证书发行服务器200的结构证书发行服务器200若从密钥发行服务器100、101和102接收证书发行委托信息,则发行公钥证书,将发行的公钥证书发送给有发行委托的密钥发行服务器。
证书发行服务器200如图6所示,包括私钥保存部210、发行公钥保存部211、发行标识符信息保存部212、公钥证书保存部213、发行公钥确认部214、公钥证书生成部215、证书取得部216、接收部217和发送部218。
证书发行服务器200具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序来动作,从而证书发行服务器200实现其功能。
另外,由于从密钥发行服务器100接收证书发行委托信息时的动作、与从其它密钥发行服务器接收证书发行委托信息时的动作相同,所以在以后的说明中,使用从密钥发行服务器100发送的证书发行委托信息来进行说明。
(1)私钥保存部210私钥保存部210预先存储只有证书发行服务器200具有的私钥“SKCA”。
这里,设将对应于私钥“SKCA”的公钥“PKCA”分配给终端装置400。
(2)发行公钥保存部211发行公钥保存部211具有存储从密钥发行服务器100接收到的公钥“PK”的区域。
(3)发行标识符信息保存部212发行标识符信息保存部212具有存储从密钥发行服务器100接收到的发行标识符信息“IDI”的区域。
(4)公钥证书保存部213公钥证书保存部213具有存储发行的公钥证书“Cert”的区域。
(5)发行公钥确认部214发行公钥确认部214如图6所示,具有服务器信息存储区域220和确认信息存储区域221。
服务器信息存储区域220具有存储服务器标识符的区域,该服务器标识符用于识别委托发行公钥证书的密钥发行服务器。
确认信息存储区域221如图7所示,具有验证值表格T200。验证值表格T200具有存储1个以上由服务器标识符、第1验证值和第2验证值构成的组的区域。服务器标识符是识别密钥发行服务器的标识符,“SIDA”表示密钥发行服务器100,“SIDB”表示密钥发行服务器101,“SIDB”表示密钥发行服务器102。第1验证值和第2验证值是分配给由对应的服务器标识符表示的密钥发行服务器的验证值。下面,将密钥发行服务器100的服务器标识符作为“SID”进行说明。
发行公钥确认部214经接收部217从密钥发行服务器100接收发行标识符信息“IDI”、公钥“PK”、服务器标识符和证书发行委托信息。
发行公钥确认部214将接收到的服务器标识符写入服务器信息存储区域220。
发行公钥确认部214使用接收到的服务器标识符,读出对应的第1验证值“c11”和第2验证值“c12”。
发行公钥确认部214使用接收到的公钥“PK”和发行标识符信息“IDI”,确认是否使用发行标识符信息“IDI”生成公钥“PK”。
这里,说明确认方法。公钥“PK”如上所述,为“PK=(n,e)”。发行公钥确认部214算出“n-(c11×c12)”,验证算出结果是否能用“IDI”除尽。由此,可确认是否使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214在判断为“n-(c11×c12)”被“IDI”除尽的情况下,判断为使用发行标识符信息“IDI”生成公钥“PK”。在判断为“n-(c11×c12)”未被“IDI”除尽的情况下,判断为未使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214在判断为使用发行标识符信息“IDI”生成公钥“PK”的情况下,向发行公钥保存部211写入接收到的公钥“PK”,向发行标识符信息保存部212写入发行标识符信息。发行公钥确认部214将公钥证书的生成开始指令输出到公钥证书生成部215。
发行公钥确认部214在判断为未使用发行标识符信息“IDI”生成公钥“PK”的情况下,结束处理。
(6)公钥证书生成部215公钥证书生成部215若从发行公钥确认部214接收公钥证书的生成开始指令,则分别从私钥保存部210、发行公钥保存部211、发行标识符信息保存部212读出私钥“SKCA”、公钥“PK”、发行标识符信息“IDI”。
公钥证书生成部215使用读出的私钥“SKCA”、公钥“PK”和发行标识符信息“IDI”,生成公钥证书“Cert”。所生成的公钥证书“Cert”具体而言是“Cert=n||e||IDI||Sig(SKCA,n||e||IDI)”。这里,Sig(K,D)是对数据“d”使用私钥“K”时的签名数据。记号“||”是位或字节的连结。
公钥证书生成部215将生成的公钥证书“Cert”写入公钥证书保存部213,将公钥证书“Cert”的发送开始指令输出到证书取得部216。
(7)证书取得部216证书取得部216若从公钥证书生成部215接收公钥证书“Cert”的发送开始指令,则分别从公钥证书保存部213、服务器信息存储区域220中读出公钥证书“Cert”、服务器标识符,经发送部218将读出的公钥证书“Cert”发送到对应于读出的服务器标识符的密钥发行服务器100。
(8)接收部217接收部217从密钥发行服务器100接收信息,将接收到的信息输出到发行公钥确认部214。
(9)发送部218发送部218从证书取得部216接收信息,将接收到的信息发送给密钥发行服务器100。
1.4终端装置300的结构终端装置300如图8所示,包括私钥保存部310、公钥证书保存部311、控制部312、接收部313、无线部314、基带信号处理部315、扬声器316、麦克风317和显示部318。终端装置300的一例是便携电话机。
终端装置300具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储计算机程序。所述微处理器根据所述计算机程序来动作,由此,终端装置300实现其功能。
另外,终端装置301、…、302、303、…、304、305、…、306的结构与终端装置300一样,所以省略说明。
另外,从终端装置301、…、302向密钥发行服务器100发送密钥发行委托信息和终端标识符的情况下,从终端装置303、…、304向密钥发行服务器101发送密钥发行委托信息和终端标识符的情况下,以及从终端装置305、…、306向密钥发行服务器102发送密钥发行委托信息和终端标识符的情况下的动作与从终端装置300向密钥发行服务器100发送密钥发行委托信息和终端标识符的情况下的动作一样,所以在以后的说明中,说明向密钥发行服务器100发送密钥发行委托信息和终端标识符的情况下的动作。
(1)私钥保存部310私钥保存部310具有存储由发送密钥发行委托信息的密钥发行服务器,这里是密钥发行服务器100发行的私钥“SK=(p1,p2,d)”的区域。
(2)公钥证书保存部311公钥证书保存部311具有存储与由密钥发行服务器100发行的私钥对应的公钥的公钥证书“Cert”的区域。
(3)控制部312控制部312如图8所示,具有终端标识符存储区域320。
控制部312还具有存储加密了的电子邮件的邮件存储区域。
终端标识符存储区域320预先存储识别该装置的终端标识符“TID”。
控制部312若从接收部313接收密钥发行请求的指示,则从终端标识符存储区域320中读出终端标识符“TID”。
控制部312经基带信号处理部315和无线部314向密钥发行服务器100发送密钥发行委托信息和读出的终端标识符“TID”。
控制部312若经无线部314和基带信号处理部315从密钥发行服务器100接收私钥“SK”和公钥证书“Cert”,则将接收到的私钥“SK”、公钥证书“Cert”分别写入私钥保存部310和公钥证书保存部311。
控制部312若经无线部314和基带信号处理部315从终端装置400接收加密了的电子邮件,则将接收到的已加密电子邮件写入邮件存储区域中。
控制部312若从接收部313接收加密了的电子邮件的显示指令,则从私钥保存部310、邮件存储区域中分别读出私钥“SK”、加密了的电子邮件,并使用读出的私钥“SK”,对加密的电子邮件进行解密,并将解密后的电子邮件(下面简称为“电子邮件”)输出到显示部318。
(4)接收部313接收部313若通过用户的操作接收到密钥发行请求的指示,则将接收到的指示输出到控制部312。
接收部313若通过用户的操作接收到已加密的电子邮件的显示指示,则将显示指令输出到控制部312。
(5)无线部314无线部314具备天线3 19,执行无线信号的发送接收。
(6)基带信号处理部315基带信号处理部315执行将从无线部314接收到的信号输出到扬声器316的信号处理、和将从麦克风317接收到的声音输出到无线部314的信号处理。
基带信号处理部315若从控制部312接收密钥发行委托信息和终端标识符,则经无线部314将接收到的密钥发行委托信息和终端标识符发送到密钥发行服务器100。
基带信号处理部315若经无线部314从密钥发行服务器100接收到私钥和公钥证书,则将接收到的私钥和公钥证书输出到控制部312。
基带信号处理部315若经无线部314从密钥发行服务器100接收到私钥和公钥证书,则将接收到的私钥和公钥证书输出到控制部312。
基带信号处理部315若经无线部314从终端装置400接收已加密的电子邮件,则将接收到的加密电子邮件输出到控制部312。
(7)扬声器316扬声器316将由基带信号处理部315处理过的信号作为声音来输出。
(8)麦克风317麦克风317接收使用者的声音,将接收到的声音输出到基带信号处理部315。
(9)显示部318
显示部318显示从控制部312接收到的电子邮件。
1.5密钥发行系统1的动作这里,说明密钥发行系统1的动作。
(1)密钥发行系统1的动作概要用图9所示的流程图来说明密钥发行系统1的动作概要。
下面,示出密钥发行服务器100向终端装置300发行密钥时的动作概要。
终端装置300首先通过密钥委托处理,向密钥发行服务器100发送密钥发行委托信息和终端标识符“TID”(步骤S5)。
密钥发行服务器100若从终端装置300接收密钥发行委托信息和终端标识符“TID”,则通过密钥发行处理,生成发行标识符信息“IDI”、私钥“SK=(p1,p2,d)”和公钥“PK=(n,e)”。密钥发行服务器100将生成的发行标识符信息“IDI”和公钥“PK”、证书发行委托信息和服务器标识符“SID”发送给证书发行服务器200(步骤S10)。
证书发行服务器200若接收发行标识符信息“IDI”和公钥“PK”、证书发行委托信息和服务器标识符“SID”,则通过证书发行处理,判定是否使用发行标识符信息“IDI”来生成包含于与公钥“PK”对应的私钥“SK”中的素数“p1”、“p2”,在判定结果为肯定的情况下,生成对应于公钥“PK”的公钥证书“Cert”。证书发行服务器200将生成的公钥证书“Cert”发送给密钥发行服务器100(步骤S15)。
密钥发行服务器100通过密钥发行处理,若从证书发行服务器200接收公钥证书“Cert”,则将私钥“SK=(p1,p2,d)”和公钥证书“Cert”发送到终端装置300(步骤S20)。
终端装置300通过密钥委托处理,若从密钥发行服务器100接收私钥“SK”和公钥证书“Cert”,则存储接收到的私钥“SK”、公钥证书“Cert”,系统结束。
(2)密钥委托处理这里,用图10所示的流程图来说明图9所示的密钥委托处理的动作。另外,这里使用终端装置300和密钥发行服务器100来说明密钥委托处理的动作。
终端装置300的接收部313通过用户的操作,接收密钥发行请求的指示(步骤S100)。
终端装置300的控制部312从终端标识符存储区域320取得终端标识符“TID”(步骤S105)。
终端装置300的控制部312经基带信号处理部315和无线部314向密钥发行服务器100发送密钥发行委托信息和所取得的终端标识符“TID”(步骤S110)。
终端装置300的控制部312经无线部314和基带信号处理部315,从密钥发行服务器100接收私钥“SK”和公钥证书“Cert”(步骤S115)。
控制部312将接收到的私钥“SK”写入私钥保存部310(步骤S120),将公钥证书“Cert”写入公钥证书保存部311(步骤S125)。
(3)密钥发行处理这里,用图11、图12、图13和图13所示的流程图来说明图9所示的密钥发行处理的动作。
密钥发行服务器100的控制部114若经接收部120从终端装置300接收密钥发行委托信息、和终端装置300的终端标识符“TID”(步骤S200),则将接收到的终端标识符“TID”写入终端信息存储区域131,将发行标识符信息的生成指令和接收到的终端标识符“TID”输出到标识符生成部115(步骤S205)。
标识符生成部115若从控制部114接收发行标识符信息的生成指令和终端标识符“TID”,则取得由服务器标识符存储区域存储的服务器标识符“SID”。标识符生成部115根据取得的服务器标识符“SID”、接收到的终端标识符“TID”和数“1”,生成发行标识符信息“IDI”,将生成的发行标识符信息“IDI”写入标识符保存部110,将素数的生成指令输出到素数生成部116(步骤S210)。
重复控制部132若从标识符生成部115接收素数的生成开始指令,则分别将重复计数器135和输出计数器136设定为“1”(步骤S215)。
重复控制部132判断重复计数器135的值是否为1(步骤S220)。
在判断为是1的情况下(步骤S220为“是”),重复控制部132从初始值存储区域中读出素数及其位长度(步骤S225),在判断为不是1的情况下(步骤S220为“否”),从暂时存储区域中读出位长度“8×(2^(n-1))”、和其素数即上次生成的素数及其位长度(步骤S230)。即,重复控制部132在判断为重复计数器135的值不是1的情况下,从暂时存储区域中读出上次生成的素数及其位长度。这里,“N”是重复计数器的值。
从控制信息表格T100中读出对应于重复计数器135的值的控制信息(步骤S235),判断所读出的控制信息是否为“信息C”(步骤S240)。
在判断为是“信息C”的情况下(步骤S240为“是”),重复控制部132生成由读出的素数及其位长度和控制信息构成的第1信息,将生成的第1信息输出到素数信息生成部133(步骤S245)。
在判断为不是“信息C”的情况下(步骤S240为“否”),重复控制部132从标识符保存部110取得发行标识符信息“IDI”,算出取得的发行标识符信息“IDI”的位长度“lenIDI”,生成由读出的素数和其位长度、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,将生成的第2信息输出到素数信息生成部133(步骤S250)。
素数信息生成部133通过素数生成处理,生成素数,将生成的素数输出到重复控制部132(步骤S255)。
重复控制部132若从素数信息生成部133接收素数,则将重复计数器135的值加“1”(步骤S260),判断加法结果是否为7(步骤S265)。
在判断为加法结果不是7的情况下(步骤S265为“否”),重复控制部132算出接收到的素数的位长度(步骤S270),暂时存储接收到的素数和算出的位长度(步骤S275),返回步骤S220。
在判断为加法结果为7的情况下(步骤S265为“是”),重复控制部132判断输出计数器136值是否为1(步骤S280)。
在判断为是1的情况下(步骤S280为“是”),重复控制部132将接收到的素数作为素数“p1”,输出到密钥判定部117(步骤S285),并将输出计数器136的值加“1”(步骤S290),将重复计数器135的值设定为“1”(步骤S295),返回步骤S220。
在判断为不是1、即是2以上的情况下(步骤S280为“否”),重复控制部132将接收到的素数作为素数“p2”,将素数“p2”和判定开始指令输出到密钥判定部117(步骤S300)。
密钥判定部117若在步骤S285从重复控制部132接收素数“p1”,则将接收到的素数“p1”存储到素数存储区域中。密钥判定部117若在步骤S300从重复控制部132接收“p2”和判定开始指令,则将接收到的素数“p2”存储到素数存储区域中。密钥判定部117判断由素数存储区域存储的两个素数“p1”与“p2”是否一致(步骤S305)。在判断为一致的情况下,删除存储的素数“p2”,向重复控制部132输出再生成指令(步骤S305为“是”),重复控制部132若从密钥判定部117接收再次生成素数的再生成指令,则执行上述步骤S290和步骤S295,返回步骤S220。
在判断为不一致的情况下,将存储的两个素数“p1”和“p2”写入私钥保存部111的素数存储区域中,将密钥生成开始指令输出到密钥生成部118(步骤S305为“否”),密钥生成部118若从密钥判定部117接收密钥生成指令,则读出由私钥保存部111的素数存储区域存储的两个素数“p1”和“p2”,计算读出的素数“p1”和“p2”之积“n=p1×p2”(步骤S310)。
密钥生成部118生成随机数“e”(步骤S315),生成由算出的“n”和生成的随机数“e”构成的组“PK=(n,e)”,作为公钥,将生成的公钥“PK”写入公钥保存部112中(步骤S320)。这里,随机数“e”与以前一样,随机数“e”与数“L”互质,满足“1≤e≤L-1,GCD(e,L)=1”。这里,数“L”是“L=LCM(p1-1,p2-1)”。
密钥生成部118算出满足“e×d=1 mod L”的“d”(步骤S325),并将算出的“d”、素数“p1”和“p2”构成的组“SK=(p1,p2,d)”作为私钥,写入私钥保存部111的私钥存储区域中,将请求开始指令输出到信息取得部119(步骤S330)。
信息取得部119若从密钥生成部118接收请求开始指令,则分别从标识符保存部110、公钥保存部112、控制部114的服务器标识符存储区域130中读出发行标识符信息“IDI”、公钥“PK”、服务器标识符(步骤S335)。信息取得部119经发送部121,将读出的发行标识符信息“IDI”、公钥“PK”、服务器标识符和委托发行公钥证书的证书发行委托信息发送给证书发行服务器200(步骤S340)。
控制部114若经接收部120从证书发行服务器200接收公钥证书“Cert”,则将接收到的公钥证书“Cert”写入证书保存部113,将分配开始指令输出到信息取得部119(步骤S345)。
信息取得部119若从控制部114接收分配开始指令,则分别读出由私钥保存部111存储的私钥“SK”、由证书保存部113存储的公钥证书“Cert”、和由控制部114的终端信息存储区域存储的终端标识符(步骤S350),经发送部121将读出的私钥“SK”和公钥证书“Cert”发送给对应于读出的终端标识符的终端装置300(步骤S335)。
(4)素数生成处理这里,用图15所示的流程图来说明图12所示的素数生成处理的动作。
信息控制部140若从重复控制部132接收由素数“q”、素数的位长度“lenq”和控制信息构成的第1信息、和由素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”、和其位长度“lenIDI”构成的第2信息之一,则将接收到的信息写入信息存储区域中,将表示随机数生成指示的第1生成指示输出到随机数生成部141(步骤S400)。
随机数生成部141若从信息控制部140接收表示随机数生成指示的第1生成指示,则读出由信息控制部140的信息存储区域存储的控制信息(步骤S405),判断读出的控制信息是否是“信息C”(步骤S410)。
在判断为是“信息C”的情况下(步骤S410为“是”),随机数生成部141读出由信息控制部140的信息存储区域存储的“lenq”(步骤S415),生成由(lenq-1)位构成的随机数“R1”,将生成的随机数“R1”和读出的控制信息输出到素数候补生成部142(步骤S420)。这里,设随机数“R1”的最高位位为1。随机数生成方法的细节见非专利文献2。
在判断为不是“信息C”的情况下(步骤S410为“否”),随机数生成部141读出由信息控制部140的信息存储区域存储的“lenq”和“lenIDI”(步骤S425),生成由(lenq-lenIDI-1)位构成的随机数“R1”,将生成的随机数“R1”和读出的控制信息输出到素数候补生成部142(步骤S430)。这里,设随机数“R1”的最高位位为1。
素数候补生成部142通过素数候补生成处理,生成随机数“R”和作为素数候补的数“N”,将生成的随机数“R”存储在生成信息存储区域中,将生成的数“N”输出到第1素数判定部143(步骤S435)。
第1素数判定部143若从素数候补生成部142接收数“N”,则使用接收到的数“N”,判定上述数(eq1)是否成立(步骤S440)。
第1素数判定部143在判断为式(eq1)成立的情况下,将数“N”输出到第2素数判定部144(步骤S440为“是”),第2素数判定部144若从第1素数判定部143接收数“N”,则读出由素数候补生成部142的生成信息存储区域存储的数“R”,判断上述式(eq2)是否成立(步骤S445)。
第2素数判定部144在判断为式(eq2)成立的情况下(步骤S445为“是”),将数“N”作为素数“N”,经信息控制部140输出到重复控制部132(步骤S450)。
第1素数判定部143在判断为式(eq1)不成立的情况下,向随机数生成部141输出第2生成指示(步骤S440为“否”),第2素数判定部144在判断为式(eq2)不成立的情况下,向随机数生成部141输出第2生成指示(步骤S445为“否”),随机数生成部141若从第1素数判定部143和第2素数判定部144之一接收再次生成随机数的第2生成指示,则返回步骤S405。
(5)素数候补生成处理这里,用图16和图17所示的流程图来说明图15所示的素数候补生成处理的动作。
素数候补生成部142若从随机数生成部141接收随机数“R1”和控制信息(步骤S500),则判断接收到的控制信息是否为“信息C”(步骤S505)。
在判断为是“信息C”的情况下(步骤S505为“是”),素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”(步骤S510)。素数候补生成部142使用读出的素数“q”和从随机数生成部141接收到的随机数“R1”,生成数“N=2×R1×q+1”(步骤S515)。素数候补生成部142判断生成的数“N”的位长度“lenN”是否与“lenq”一致(步骤S520),在判断为一致的情况下(步骤S520为“是”),素数候补生成部142将生成的数“N”输出到第1素数判定部143,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中(步骤S595)。
在判断为不一致的情况下(步骤S520为“否”),素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”(步骤S525),返回步骤S515。
在判断为控制信息不是“信息C”的情况下(步骤S505为“否”),素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”和发行标识符信息“IDI”(步骤S530)。素数候补生成部142判断控制信息是否为“信息B”(步骤S535)。
在判断为是“信息B”的情况下(步骤S535为“是”),素数候补生成部142根据接收到的随机数“R1”和读出的发行标识符信息“IDI”,生成结合值“IDI||R1”,使用生成的结合值“IDI||R1”和由函数存储区域存储的函数“f”,生成数“R=f(IDI||R1)”(步骤S540)。素数候补生成部142使用生成的数“R”和读出的素数“q”,生成数“N=2×R×q+1”(步骤S545)。
素数候补生成部142判定生成的数“N”的位长度“lenN”是否为“2×lenq”(步骤S550)。
在判断为是“2×lenq”的情况下(步骤S550为“是”),素数候补生成部142将生成的数“N”输出到第1素数判定部143,将生成的数“R”存储在生成信息存储区域中(步骤S595)。
在判断为不是“2×lenq”的情况下(步骤S550为“否”),素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”(步骤S555),返回步骤S540。
在判断为不是“信息B”的情况下(步骤S535为“是”),素数候补生成部142使用接收到的随机数“R1”和读出的发行标识符信息“IDI”,生成数“R=IDI×R1”(步骤S560)。素数候补生成部142向信息控制部140输出次数读出指令,从信息控制部140接收输出计数器136的值。素数候补生成部142判断接收到的值是否为“1”(步骤S565)。
在判断为输出次数为“1”的情况下(步骤S565为“是”),素数候补生成部142从信息控制部140的验证值存储区域中读出第1验证值“c11”(步骤S570)。素数候补生成部142使用读出的素数“q”、发行标识符信息“IDI”、验证值“c11”和生成的数“R”,生成数“N=2×(R+w1)×q+1”(步骤S575)。这里,“w1”是满足“2×w1×q+1=c11 mod IDI,0≤w1<IDI”的数。
在判断为输出次数不是“1”、即为“2”以上的情况下(步骤S565为“否”),素数候补生成部142从信息控制部140的验证值存储区域中读出第2验证值“c12”(步骤S580)。素数候补生成部142使用读出的素数“q”、发行标识符信息“IDI”、验证值“c12”和生成的数“R”,生成数“N=2×(R+w2)×q+1”(步骤S585)。这里,“w2”是满足“2×w2×q+1=c12mod IDI,0≤w2<IDI”的数。
素数候补生成部142从信息控制部140的信息存储区域中读出素数“q”的位长度“lenq”,判定生成的数“N”的位长度是否为“2×lenq”(步骤S590)。
在判断为是“2×lenq”的情况下(步骤S590为“是”),素数候补生成部142将生成的数“N”输出到第1素数判定部143,将生成的数“R”存储在生成信息存储区域中(步骤S595)。
在判断为不是“2×lenq”的情况下(步骤S590为“否”),素数候补生成部142对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”(步骤S600),返回步骤S560。
(6)证书发行处理这里,用图18所示的流程图来说明图9所示的证书发行处理的动作。
证书发行服务器200的发行公钥确认部214经接收部217,从密钥发行服务器100接收发行标识符信息“IDI”、公钥“PK”、服务器标识符、和证书发行委托信息(步骤S650)。
发行公钥确认部214将接收到的服务器标识符写入服务器信息存储区域220(步骤S655)。
发行公钥确认部214使用接收到的服务器标识符,读出对应的第1验证值“c11”和第2验证值“c12”(步骤S660)。
发行公钥确认部214使用读出的第1验证值“c11”及第2验证值“c12”、接收到的公钥“PK”和发行标识符信息“IDI”,确认是否使用发行标识符信息“IDI”生成公钥“PK”(步骤S660)。
发行公钥确认部214在判断为“n-(c11×c12)”被“IDI”除尽的情况下,即判断为使用发行标识符信息“IDI”生成公钥“PK”的情况下(步骤S660为“是”),向发行公钥保存部211、发行标识符信息保存部212分别写入接收到的公钥“PK”、发行标识符信息,发行公钥确认部214将公钥证书的生成开始指令输出到公钥证书生成部215(步骤S665)。
发行公钥确认部214在判断为未使用发行标识符信息“IDI”生成公钥“PK”的情况下(步骤S660为“否”),结束处理。
公钥证书生成部215若从发行公钥确认部214接收公钥证书的生成开始指令,则从私钥保存部210、发行公钥保存部211、发行标识符信息保存部212分别读出私钥“SKCA”、公钥“PK”、发行标识符信息“IDI”(步骤S670)。
公钥证书生成部215使用读出的私钥“SKCA”、公钥“PK”和发行标识符信息“IDI”,生成公钥证书“Cert”,将生成的公钥证书“Cert”写入公钥证书保存部213,将公钥证书“Cert”的发送开始指令输出到证书取得部216(步骤S675)。
证书取得部216若从公钥证书生成部215接收公钥证书“Cert”的发送开始指令,则从公钥证书保存部213、服务器信息存储区域220中分别读出公钥证书“Cert”、服务器标识符,经发送部218将读出的公钥证书“Cert”发送到对应于读出的服务器标识符的密钥发行服务器100(步骤S680)。
1.6素数信息生成部133的动作验证素数信息生成部133的第1素数判定部143和第2素数判定部144是Pocklington判定。Pocklington判定的细节见非专利文献1的144页和非专利文献4。下面简单说明。
根据Pocklington判定,“N=2×R×q+1”为素数,在2^(N-1)=1 mod N2^(2R)≠1 mod N的双方成立的情况下,数“N”成为素数,素数信息生成部133可输出数“N”作为素数。
另外,由于随机数“R1”的位长度为(lenq-lenIDI-1),所以数“R”的位长度成为“lenq-1”,大致数“N”的位长度成为“2×lenq”。这里,有时由于素数“q”或发行标识符信息“IDI”等的值不同,位长度成为(2×lenq-1)。此时,素数候补生成部142如上所述,可设定为通过对R1乘以2,将结果重新设为R1,由此使生成的数“N”的位长度成为(2×lenq)。
1.7第1实施方式的效果(1)生成的密钥的唯一性这里,说明由密钥发行服务器100生成的密钥即素数的唯一性。
这里,证明如下命题。
(命题)若发行标识符信息IDI不同,则输出的素数“N”不同。
首先,证明如下辅助题,并使用该辅助题来证明上述命题。
(辅助题)对于两个素数“p1=2×q1×R1+1”和“p2=2×q2×R2+1”,若p1=p2,则有q1=q2且R1=R2。
(证明)在p1=p2的情况下,素数“q1”和“q2”的位长度分别为256位,数“R1”和“R2”的位长度分别为255位,所以可知q1=q2。另外,由于q1=q2,所以R1=R2也成立(证明完)。
根据上述辅助题,若p1=p2,则R1=R2成立。若设R1=f(IDI1||R11)、R2=f(IDI2||R22),则R1=R2,f为单射,所以IDI1=IDI2成立。因此,通过取其对偶,上述命题成立。如上所述,若IDI不同,则素数必然不同。因此,通过每次改变提供给密钥发行服务器100的IDI,可每次生成不同的素数。由此,保证生成的素数的唯一性。
因此,不用比较就可证明多个生成的素数不一致。
(2)生成的密钥的合法性对于密钥发行服务器100生成的素数“p1”,“p1-c11”必然被发行标识符信息“IDI”除尽。
这是因为“p1-c11=2×q×(R+w1)+1-c11=2×q×(IDI×R1+w1)+1-c11=2×q×IDI×R1+2×q×w1+1-c11”,所以可知项“2×q×IDI×R1”被“IDI”除尽。另外,如上所述,由于“2×q×w1+1=c11 mod IDI”成立,所以剩余项“2×q×w1+1-c11”也被“IDI”除尽。即,对于密钥发行服务器100生成的素数“p1”,“p1-c11”必然被发行标识符信息“IDI”除尽。因此,对于生成的素数“p1”,通过“p1-c11”是否被发行标识符信息“IDI”除尽,可确认是否使用密钥发行服务器100来生成素数。
另外,基于与上述一样的理由,对于素数“p1”,“p2-c12”必然被发行标识符信息“IDI”除尽。
因此,由于“n-c11×c12”被“IDI”除尽,所以证书发行服务器200通过确认“n-c11×c12”被“IDI”除尽,可确认是否正确使用发行标识符信息“IDI”来生成素数“p1”、“p2”。
这是因为,作为私钥的素数“p1”、“p2”分别对素数“q1”、“q2”、随机数“R11”、“R12”、发行标识符信息“IDI”满足“p1=2×q1×(IDI×R11+w1)+1=c11 mod IDI”、“p2=2×q2×(IDI×R12+w1)+1=c12 mod IDI”,所以有n=p1×P2=(2×q1×IDI×R11+1)×(2×q2×IDI×R12+1)=c11×c12 mod IDI因此,证书发行服务器200通过确认“n-c11×c12”是否被“IDI”除尽,可确认密钥发行服务器是否正确使用发行标识符信息IDI来生成。
另外,由于“IDI”的位长度为“lenIDI”,“R1”的位长度为“lenq-lenIDI-1”,所以大致“N1=2×q×(IDI×R1+w)+1”的位长度成为2×lenq1。这里,有时由于素数“q1”或“IDI”等的值不同,位长度成为(2×lenq-1)。此时,可设定为通过素数候补生成部142对“R1”乘以2,将结果重新设为“R1”,由此使“N1”的位长度成为“2×lenq1”。
并且,密钥发行系统1当终端使用其终端具有的私钥不合法操作时,可通过如下的确认方法,得到利用私钥不合法操作的终端的信息。设判明为不合法操作的终端的私钥为“p1”、“p2”。另外,设不合法的追踪者、例如证书发行服务器200的管理者具有发行标识符信息与终端的对应表。“p1-c11”、“p2-c12”均被发行标识符信息“IDI”除尽。因此,GCD(p1-c11、p2-c12)被发行标识符信息除尽。因此,通过调查GCD(p1-c11、p2-c12)的素因数,可限制不合法的追踪者取得的发行标识符信息,有助于知道发行标识符信息,即确定终端。
1.10素数生成的变形例1在上述实施方式中,使用了第1验证值和第2验证值两个验证值,但这里说明使用一个验证值时的素数的生成。
与上述实施方式的区别点在于,密钥发行服务器中的素数信息生成部、和证书发行服务器中的发行公钥确认部不同。下面,说明本变形例中的素数信息生成部133A和发行公钥确认部214A。另外,其它构成要素使用第1实施方式所示的构成要素。
(1)素数信息生成部133A素数信息生成部133A如图19所示,由信息控制部140A、随机数生成部141A、素数候补生成部142A、第1素数判定部143A和第2素数判定部144A构成。
素数信息生成部133A生成由从重复控制部132接收到的素数位长度的2倍位长度构成的素数。
在以下的说明中,将从重复控制部132接收的素数作为素数“q”,将其位长度作为“lenq”,说明各构成要素。
<信息控制部140A>
信息控制部140A具有用于存储第1信息和第2信息的信息存储区域。
信息控制部140A具有验证值存储区域,预先存储由证书发行服务器200分配、且用于根据控制信息“信息A”来生成素数时的验证值“c1”。
信息控制部140A若从重复控制部132接收由素数“q”、素数的位长度“lenq”、和控制信息构成的第1信息,则将接收到的第1信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、和控制信息(此时为“信息C”)。
信息控制部140A若从重复控制部132接收由素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,则将接收到的第2信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”。
信息控制部140A在写入接收到的信息之后,向随机数生成部141A输出表示随机数生成指示的第1生成指示。
信息控制部140A若从第2素数判定部144A接收素数,则将接收到的素数输出到重复控制部132。
<随机数生成部141A>
随机数生成部141A与第1实施方式所示的随机数生成部141A一样,所以省略说明。
<素数候补生成部142A>
素数候补生成部142A具有存储生成的信息的生成信息存储区域、和预先存储单射函数“f”的函数存储区域。这里,函数“f”例如是f(X||Y)=Enc(K,X||Y)。Enc(K,X||Y)是基于使用密钥X时的(X||Y)的共同密钥加密的加密文本。共同密钥加密的加密函数一般为满单射。另外,记号“||”是位或字节连结。加密函数“Enc(K,X||Y)”的一例是“Enc(K,X||Y)=K XOR X||Y”。另外,共0同加密的一例是DES,在使用DES的情况下,密钥长度为128位。
素数候补生成部142A若从随机数生成部141A接收随机数“R1”与控制信息,则判断接收到的控制信息是否为“信息C”。
在判断为是“信息C”的情况下,素数候补生成部142A从信息控制部140A的信息存储区域中读出素数“q”。素数候补生成部142A使用读出的素数“q”和从随机数生成部141A接收到的随机数“R1”,生成数“N=2×R1×q+1”。素数候补生成部142A判断生成的数“N”的位长度“lenN”是否与“lenq”一致,在判断为一致的情况下,素数候补生成部142将生成的数“N”输出到第1素数判定部143A,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中。
在判断为不一致的情况下,素数候补生成部142A对从随机数生成部141A接收到的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“N=2×R1×q+1”。
在判断为控制信息不是“信息C”的情况下,素数候补生成部142A从信息控制部140A的信息存储区域中读出素数“q”和发行标识符信息“IDI”。素数候补生成部142A判断控制信息是否为“信息B”。
在判断为是“信息B”的情况下,素数候补生成部142A使用接收到的随机数“R1”、读出的发行标识符信息“IDI”和函数存储区域中存储的函数“f”,生成数“R=f(IDI||R1)”。素数候补生成部142A使用生成的数“R”与读出的素数“q”,生成数“N=2×R×q+1”。
素数候补生成部142A判定生成的数“N”的位长度“lenN”是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142A将生成的数“N”输出到第1素数判定部143A,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142A对从随机数生成部141A接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
在判断为不是“信息B”的情况下,素数候补生成部142A使用接收到的随机数“R1”和读出的发行标识符信息“IDI”,生成数“R=IDI×R1”。
素数候补生成部142A从信息控制部140A的验证值存储区域中读出验证值“c1”。
素数候补生成部142A使用读出的素数“q”、发行标识符信息“IDI”、验证值“c1”和生成的数“R”,生成数“N=2×(R+w)×q+1”。
这里,“w”是满足“2×w×q+1=c mod IDI、0≤w<IDI”的数。通过计算“w=(c-1)×m mod IDI”,求出“w”。“m”是满足“(2×q)×m=1 modIDI”的数。
素数候补生成部142A从信息控制部140A的信息存储区域中读出素数“q”的位长度“lenq”,判定生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142A将生成的数“N”输出到第1素数判定部143A,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142A对从随机数生成部141A接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
<第1素数判定部143A>
第1素数判定部143A与第1实施方式所示的第1素数判定部143一样,所以省略说明。
<第2素数判定部144>
第2素数判定部144A与第1实施方式所示的第2素数判定部144一样,所以省略说明。
(2)发行公钥确认部214A发行公钥确认部214A虽未图示,但具有服务器信息存储区域220A和确认信息存储区域221A。
服务器信息存储区域220A具有存储识别委托发行公钥证书的密钥发行服务器的服务器标识符的区域。
确认信息存储区域221A如图20所示,具有验证值表格T250。验证值表格T250具有存储1个以上由服务器标识符和验证值构成的组的区域。服务器标识符是识别密钥发行服务器的标识符,“SIDA”表示密钥发行服务器100,“SIDB”表示密钥发行服务器101,“SIDC”表示密钥发行服务器102。验证值是分配给由对应的服务器标识符表示的密钥发行服务器的验证值。下面,将密钥发行服务器100的服务器标识符说明为“SID”。
发行公钥确认部214A经接收部217从密钥发行服务器100接收发行标识符信息“IDI”、公钥“PK”、服务器标识符、和证书发行委托信息。
发行公钥确认部214A将接收到的服务器标识符写入服务器信息存储区域220A。
发行公钥确认部214A使用接收到的服务器标识符,读出对应的验证值“c1”。
发行公钥确认部214A使用接收到的公钥“PK”和发行标识符信息“IDI”,确认是否使用发行标识符信息“IDI”生成公钥“PK”。
这里,确认方法是验证“n-(c1)^2”是否能用“IDI”除尽。由此,可确认是否使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214A在判断为“n-(c1)^2“被“IDI”除尽的情况下,判断为使用发行标识符信息“IDI”生成公钥“PK”,在判断为“n-(c1)^2”不被“IDI”除尽的情况下,判断为未使用发行标识符信息“IDI”生成公钥“PK”。
在判断为使用发行标识符信息“IDI”生成公钥“PK”的情况下,发行公钥确认部214A向发行公钥保存部211、发行标识符信息保存部212分别写入接收到的公钥“PK”、发行标识符信息。发行公钥确认部214A将公钥证书的生成开始指令输出到公钥证书生成部215。
发行公钥确认部214A在判断为未使用发行标识符信息“IDI”生成公钥“PK”的情况下,结束处理。
(3)素数候补生成处理仅说明本变形例的素数候补生成处理与第1实施方式所示的素数候补生成处理的区别点。另外,密钥发行处理和素数生成处理的动作流程与第1实施方式一样,所以省略说明。
素数候补生成部142A在执行图16和图17所示的步骤S500-步骤S560之后,省略步骤S565,在步骤S570读出验证值“c1”。素数候补生成部142A在步骤S575生成数“N=2×(R+w)×q+1”。即,省略步骤S565、步骤S580和步骤S585,如上所述变更步骤S570和步骤S575。
后面与第1实施方式一样,所以省略说明。
即,本变形例的素数候补生成处理无论输出计数器的值如何,均使用验证值“c1”、素数“q”和数“R”来生成数“N”。
(4)证书发行处理仅说明本变形例的证书发行处理与第1实施方式所示的证书发行处理的区别点。
发行公钥确认部214A在步骤S660读出对应于接收到的服务器标识符之验证值(例如“c1”),在步骤S670,使用读出的验证值“c1”、公钥“PK”和发行标识符信息“IDI”,确认是否利用“IDI”来生成“PK”。
1.11素数生成的变形例2在上述实施方式中,使用第1验证值和第2验证值两个验证值,但这里对使用一个验证值、且该验证值为固定值“1”时的素数的生成进行说明。
与上述实施方式的区别点在于,密钥发行服务器中的素数信息生成部、和证书发行服务器中的发行公钥确认部不同。下面,说明本变形例中的素数信息生成部133B和发行公钥确认部214B。另外,其它构成要素使用第1实施方式所示的构成要素。
(1)素数信息生成部133B素数信息生成部133B如图21所示,由信息控制部140B、随机数生成部141B、素数候补生成部142B、第1素数判定部143B和第2素数判定部144B构成。
素数信息生成部133B生成由从重复控制部132接收到的素数位长度的2倍位长度构成的素数。
在以下的说明中,将从重复控制部132接收的素数作为素数“q”,将其位长度作为“lenq”,说明各构成要素。
<信息控制部140B>
信息控制部140B具有用于存储第1信息和第2信息的信息存储区域。
信息控制部140B具有验证值存储区域,预先存储用于根据控制信息“信息A”生成素数时的验证值“1”。
信息控制部140B若从重复控制部132接收由素数“q”、素数的位长度“lenq”和控制信息构成的第1信息,则将接收到的第1信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、和控制信息(此时为“信息C”)。
信息控制部140B若从重复控制部132接收由素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,则将接收到的第2信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”。
信息控制部140B在写入接收到的信息之后,向随机数生成部141B输出表示随机数生成指示的第1生成指示。
信息控制部140B若从第2素数判定部144B接收素数,则将接收到的素数输出到重复控制部132。
<随机数生成部141B>
随机数生成部141B与第1实施方式所示的随机数生成部141B一样,所以省略说明。
<素数候补生成部142B>
素数候补生成部142B具有存储生成的信息的生成信息存储区域、和预先存储单射函数“f”的函数存储区域。
素数候补生成部142B若从随机数生成部141B接收随机数“R1”和控制信息,则判断接收到的控制信息是否为“信息C”。
在判断为是“信息C”的情况下,素数候补生成部142B从信息控制部140B的信息存储区域中读出素数“q”。素数候补生成部142B使用读出的素数“q”和从随机数生成部141B接收到的随机数“R1”,生成数“N=2×R1×q+1”。素数候补生成部142B判断生成的数“N”的位长度“lenN”是否与“lenq”一致,在判断为一致的情况下,素数候补生成部142B将生成的数“N”输出到第1素数判定部143B,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中。
在判断为不一致的情况下,素数候补生成部142B对从随机数生成部141B接收到的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“N=2×R1×q+1”。
在判断为控制信息不是“信息C”的情况下,素数候补生成部142B从信息控制部140B的信息存储区域中读出素数“q”和发行标识符信息“IDI”。素数候补生成部142B判断控制信息是否为“信息B”。
在判断为是“信息B”的情况下,素数候补生成部142B使用接收到的随机数“R1”、读出的发行标识符信息“IDI”和函数存储区域中存储的函数“f”,生成数“R=f(IDI||R1)”。素数候补生成部142B使用生成的数“R”和读出的素数“q”,生成数“N=2×R×q+1”。
素数候补生成部142B判定生成的数“N”的位长度“lenN”是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142B将生成的数“N”输出到第1素数判定部143B,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142B对从随机数生成部141B接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
在判断为不是“信息B”的情况下,素数候补生成部142B使用接收到的随机数“R1”和读出的发行标识符信息“IDI”,生成数“R=IDI×R1”。
素数候补生成部142B从信息控制部140B的验证值存储区域中读出验证值“1”。
素数候补生成部142B使用读出的素数“q”、发行标识符信息“IDI”、验证值“1”和生成的数“R”,生成数“N=2×R×q+1”。这里,最后项的“1”是验证值。
素数候补生成部142B从信息控制部140B的信息存储区域中读出素数“q”的位长度“lenq”,判定生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142B将生成的数“N”输出到第1素数判定部143B,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142B对从随机数生成部141B接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“R”和“N”。
<第1素数判定部143B>
第1素数判定部143B与第1实施方式所示的第1素数判定部143一样,所以省略说明。
<第2素数判定部144B>
第2素数判定部144B与第1实施方式所示的第2素数判定部144一样,所以省略说明。
(2)发行公钥确认部214B发行公钥确认部214B虽未图示,但具有服务器信息存储区域220B和确认信息存储区域221B。
服务器信息存储区域220B具有用于存储识别委托发行公钥证书的密钥发行服务器的服务器标识符的区域。
确认信息存储区域221B存储作为固定值的验证值“1”。
发行公钥确认部214B经接收部217从密钥发行服务器100接收发行标识符信息“IDI”、公钥“PK”、服务器标识符和证书发行委托信息。
发行公钥确认部214B将接收到的服务器标识符写入服务器信息存储区域220B。
发行公钥确认部214B从确认信息存储区域221B中读出验证值“1”。
发行公钥确认部214B使用接收到的公钥“PK”和发行标识符信息“IDI”,确认是否使用发行标识符信息“IDI”生成公钥“PK”。
这里,确认方法是验证“n-验证值”、即“n-1”是否能用“IDI”除尽。由此,可确认是否使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214B在判断为“n-1”被“IDI”除尽的情况下,判断为使用发行标识符信息“IDI”生成公钥“PK”,在判断为“n-1”未被“IDI”除尽的情况下,判断为未使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214B在判断为使用发行标识符信息“IDI”生成公钥“PK”的情况下,分别向发行公钥保存部211、发行标识符信息保存部212写入接收到的公钥“PK”、发行标识符信息。发行公钥确认部214B将公钥证书的生成开始指令输出到公钥证书生成部215。
发行公钥确认部214B在判断为未使用发行标识符信息“IDI”生成公钥“PK”的情况下,结束处理。
(3)素数候补生成处理仅说明本变形例的素数候补生成处理与第1实施方式所示的素数候补生成处理的区别点。另外,密钥发行处理和素数生成处理的动作流程与第1实施方式一样,所以省略说明。
素数候补生成部142B在执行图16和图17所示的步骤S500-步骤S560之后,省略步骤S565,在步骤S570读出验证值“1”。素数候补生成部142B在步骤S575生成数“N=2×(R+w)×q+1”。即,省略步骤S565、步骤S580和步骤S585,如上所述变更步骤S570和步骤S575。另外,算出数“N”时的最后项为验证值。
后面与第1实施方式一样,省略说明。
即,本变形例的素数候补生成处理无论输出计数器的值如何,均使用素数“q”和数“R”来生成数“N”。
(4)证书发行处理仅说明本变形例的证书发行处理与第1实施方式所示的证书发行处理的区别点。
发行公钥确认部214B在步骤S660读出验证值“1”,在步骤S670,使用读出的验证值“1”、公钥“PK”和发行标识符信息“IDI”,确认是否使用“IDI”来生成“PK”。
(5)确认方法的验证利用上述所示方法,证书发行服务器可确认密钥发行服务器是否正确使用发行标识符信息IDI来生成公钥。
这是因为作为私钥的素数“p1”、“p2”分别使用素数“q1”、“q2”、随机数“R11”、“R12”、发行标识符信息“IDI”,满足“p1=2×q1×IDI×R11+1”、“p2=2×q2×IDI×R12+1”,所以有n=p1×p2=(2×q1×IDI×R11+1)×(2×q2×IDI×R12+1)=IDI×(4×q1×q2×R11×R12×IDI+2×q1×R11+2×q2×R12)+1。
因此,由于“n-1”被“IDI”除尽,所以通过确认“n-1”被“IDI”除尽,可确认素数“p1”、“p2”是否正确使用发行标识符信息“IDI”来生成。
1.12素数生成的变形例3
在上述实施方式中附加如下要素,即该要素使得在生成256位的素数时实施单射函数以满足所生成素数的唯一性,在生成512位的素数时用于确认生成素数的合法性,但这里,对通过一次动作来执行用于确认素数的唯一性和合法性的要素附加的情况。
与上述实施方式的区别点在于,密钥发行服务器中的素数生成部和证书发行服务器中的发行公钥确认部不同。下面,说明本变形例中的素数生成部116C和发行公钥确认部214C。另外,其它构成要素则使用第1实施方式所示的构成要素。
此外,这里将服务器标识符的位长度设为15位,将终端装置的终端标识符的位长度设为16位,将发行标识符信息的位长度设为32位。
(1)素数生成部116C素数生成部116C如图22所示,具有重复控制部132C和素数信息生成部133C。
素数生成部116C根据8位的素数来生成512位的素数,并将生成的512位的素数输出到密钥判定部117。
<重复控制部132C>
重复控制部132C具有预先存储由8位构成的素数和该素数的位长度(即“8”)的初始值存储区域、和暂时存储从素数信息生成部133C接收到的素数的暂时存储区域。
重复控制部132C具有重复计数器135C,计数素数信息生成部133C的动作的循环次数;和输出计数器136C,计数输出到密钥判定部117的素数的个数、即所生成的512位的素数的输出次数。另外,重复计数器135C和输出计数器136C的初始值分别为“1”。
重复控制部132C具有图23所示的控制信息表格T150。控制信息表格T150存储1个以上由次数和控制信息构成的组。次数对应于重复计数器135C的值。控制信息表示由素数信息生成部133C生成的素数生成方法的种类。
重复控制部132C若从标识符生成部115接收素数的生成开始指令,则控制素数信息生成部133C生成素数。若从素数信息生成部133C接收素数,则根据重复计数器135C和输出计数器136C各自的值,再次执行向素数信息生成部133C输出素数生成的指令、和向密钥判定部117输出接收到的素数之一。
下面,说明其动作。
重复控制部132C若从标识符生成部115接收素数的生成开始指令,则将重复计数器135C和输出计数器136C分别设定为“1”。
重复控制部132C若从素数信息生成部133C接收素数,则将重复计数器135C的值加“1”,判断加法运算的结果是否为7。
在判断为加法结果为7的情况下,重复控制部132C判断输出计数器136C值是否为1。在判断为是1的情况下,重复控制部132C将接收到的素数作为素数“p1”,输出到密钥判定部117,并将输出计数器136的值加“1”,将重复计数器135C的值设定为“1”。在判断为不是1、即为2以上的情况下,重复控制部132C将接收到的素数作为素数“p2”,将素数“p2”和判定开始指令输出到密钥判定部117。
在判断为加法结果不是7的情况下,算出接收到的素数的位长度,将接收到的素数和算出的位长度暂时存储在暂时存储区域中。
重复控制部132C在接收素数的生成开始指令,在将重复计数器135C和输出计数器136C各自的值加“1”之后,在暂时存储从素数信息生成部133C接收到的素数和其位长度之后,以及将输出计数器136C加“1”、且将重复计数器135C的值设定为“1”之后中之一的情况下,重复控制部132C执行以下的动作。
重复控制部132C判断重复计数器135C的值是否为1。在判断为是1的情况下,重复控制部132C从初始值存储区域中读出8位的素数和其位长度,在判断为不是1的情况下,从暂时存储区域中读出位长度“8×(2^(n-1))”和其素数。即,重复控制部132C在判断为重复计数器135C的值不是1的情况下,从暂时存储区域中读出上次生成的素数和其位长度。这里,“n”是重复计数器的值。
从控制信息表格T150中读出对应于重复计数器135C的值的控制信息,判断所读出的控制信息是否是“信息C”。
在判断为是“信息C”的情况下,重复控制部132C生成由读出的素数和其位长度、以及控制信息构成的第1信息,将生成的第1信息输出到素数信息生成部133C。
在判断为不是“信息C”的情况下,重复控制部132C从标识符保存部110取得发行识别信息“IDI”,算出所取得的发行标识符信息“IDI”的位长度“lenIDI”,生成由读出的素数和其位长度、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,将生成的第2信息输出到素数信息生成部133C。
另外,重复控制部132C若从密钥判定部117接收再次生成素数的再生成指令,则将输出计数器136C的值加“1”,并且将重复计数器135C的值设定为“1”,执行判断重复计数器135C的值是否为1的动作之后的动作。
<素数信息生成部133C>
素数信息生成部133C如图24所示,由信息控制部140C、随机数生成部141C、素数候补生成部142C、第1素数判定部143C和第2素数判定部144C构成。
素数信息生成部133C生成由从重复控制部132C接收到的素数位长度的2倍位长度构成的素数。例如,在接收到由8位构成的素数的情况下,生成由16位构成的素数,在接收到由16位构成的素数的情况下,生成由32位构成的素数。
在以下的说明中,将从重复控制部132C接收的素数作为素数“q”,将其位长度作为“lenq”,说明各构成要素。
<信息控制部140C>
信息控制部140C具有用于存储第1信息和第2信息的信息存储区域。
信息控制部140C具有分配素数存储区域,该分配素数存储区域预先存储由证书发行服务器200分配、且用于根据控制信息“信息AB”来生成素数时的素数“qg”和其位长度“lenqg”。这里,素数“qg”的位长度例如为“64”位。
信息控制部140C若从重复控制部132C接收由素数“q”、素数的位长度“lenq”、和控制信息构成的第1信息,则将接收到的第1信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、和控制信息(此时为“信息C”)。
信息控制部140C若从重复控制部132C接收由素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”构成的第2信息,则将接收到的第2信息写入信息存储区域中。即,写入素数“q”、素数的位长度“lenq”、控制信息、发行标识符信息“IDI”和其位长度“lenIDI”。
信息控制部140C在写入接收到的信息之后,向随机数生成部141C输出表示随机数生成指示的第1生成指示。
信息控制部140C若从第2素数判定部144C接收素数,则将接收到的素数输出到重复控制部132C。
信息控制部140C若从素数候补生成部142C接收表示读出输出计数器136C的值的次数读出指令,则读出重复控制部132C的输出计数器136C的值。信息控制部140C将读出的值输出到素数候补生成部142C。
<随机数生成部141C>
随机数生成部141C若从信息控制部140C接收表示随机数生成指示的第1生成指示,则读出由信息控制部140C的信息存储区域存储的控制信息。随机数生成部141C判断读出的控制信息是否是“信息C”。
在判断为是“信息C”的情况下,随机数生成部141C读出由信息控制部140C的信息存储区域存储的“lenq”,生成由(lenq-1)位构成的随机数“R1”,将生成的随机数“R1”和读出的控制信息输出到素数候补生成部142C。这里,设随机数“R1”的最高位位为1。随机数生成方法的细节见非专利文献2。
在判断为不是“信息C”的情况下,随机数生成部141C分别读出由信息控制部140C的信息存储区域存储的“lenq”、由分配素数存储区域存储的“lenqg”。随机数生成部141C使用读出的“lenq”和“lenqg”,生成由(lenq-2×lenqg-1)位构成的随机数“R1”,将生成的随机数“R1”和读出的控制信息输出到素数候补生成部142C。这里,设随机数“R1”的最高位位为1。
另外,随机数生成部141C若从第1素数判定部143和第2素数判定部144之一接收表示再次生成随机数的第2生成指示,则从信息存储区域中读出控制信息,执行上述动作。
<素数候补生成部142C>
素数候补生成部142C具有存储所生成的信息的生成信息存储区域;以及,函数存储区域,预先存储根据发行标识符信息“IDI”和素数“qg”来唯一生成素数的素数生成函数“gp”、和单射函数“f”。
这里,在下面示出使用素数生成函数“gp”的素数生成的一例。
首先,设“c=0”,判定“2×qg×f(IDI||c)+1”是否为素数。在是素数的情况下,设“gp(IDI,qg)=2×qg×f(IDI||c)+1”。若不是素数,则将“c”加“1”,判定“2×qg×f(IDI||c)+1”是否为素数。若是素数,则设“gp(IDI,qg)=2×qg×f(IDI||c)+1”。若不是素数,则将“c”加“1”,执行同样的判定,重复上述动作,直到变为素数为止。这样,当定义函数“gp”时,若保持函数“gp”和“f”,则对于发行标识符信息“IDI”,无论素数候补生成部142C利用素数生成函数生成几次函数,均可生成相同的素数。此时,在“IDI”的位长度和“qg”的位长度分别为“32”位和“64”位的情况下,“gp(IDI,qg)”的位长度成为128位。
素数候补生成部142C若从随机数生成部141C接收随机数“R1”和控制信息,则判断接收到的控制信息是否为“信息C”。
在判断为是“信息C”的情况下,素数候补生成部142C从信息控制部140C的信息存储区域中读出素数“q”。素数候补生成部142C使用读出的素数“q”和从随机数生成部141C接收到的随机数“R1”,生成数“N=2×R1×q+1”。素数候补生成部142C判断所生成的数“N”的位长度“lenN”是否与“lenq”一致,在判断为一致的情况下,素数候补生成部142C将生成的数“N”输出到第1素数判定部143C,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中。
在判断为不一致的情况下,素数候补生成部142C对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“N=2×R1×q+1”。
在判断为控制信息不是“信息C”的情况下,即判断为控制信息是“信息AB”的情况下,素数候补生成部142C分别从信息控制部140C的信息存储区域中读出素数“q”和发行标识符信息“IDI”,从分配素数存储区域中读出素数“qg”。
素数候补生成部142C使用读出的发行标识符信息“IDI”和素数“qg”、以及由函数存储区域存储的函数“f”和“gp”,利用上述所示方法,生成素数“pIDI=gp(IDI,qg)”,将生成的素数“pIDI”存储在生成信息存储区域中。
素数候补生成部142C读出由生成信息存储区域存储的素数“pIDI”,使用读出的素数“pIDI”、接收到的随机数“R1”和读出的素数“q”,生成数“N=2×R1×q×pIDI+1”。
素数候补生成部142C判断生成的数“N”的位长度“lenN”是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部142C将生成的数“N”输出到第1素数判定部143C,将接收到的随机数“R1”作为“R”,存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部142C对从随机数生成部141C接收到的随机数“R1”乘以2,将结果作为“R1”,再次生成数“N”。
<第1素数判定部143C>
第1素数判定部143C与第1实施方式所示的第1素数判定部143一样,所以省略说明。
<第2素数判定部144C>
第2素数判定部144C与第1实施方式所示的第2素数判定部144一样,所以省略说明。
(2)发行公钥确认部214C发行公钥确认部214C虽未图示,但具有服务器信息存储区域220C和确认信息存储区域221C。
服务器信息存储区域220C具有存储识别委托发行公钥证书的密钥发行服务器的服务器标识符的区域。
确认信息存储区域221C预先存储分配给密钥发行服务器100的素数“qg”和其位长度“lenqg”、以及由密钥发行服务器100存储的素数生成函数及单射函数分别一样的函数“gp”和“f”。
发行公钥确认部214C经接收部217,从密钥发行服务器100接收发行标识符信息“IDI”、公钥“PK=(n,e)”、服务器标识符、以及证书发行委托信息。
发行公钥确认部214C将接收到的服务器标识符写入服务器信息存储区域220C。
发行公钥确认部214C使用接收到的公钥“PK”和发行标识符信息“IDI”,确认是否使用发行标识符信息“IDI”生成公钥“PK”。
下面,示出确认方法。首先,发行公钥确认部214C使用接收到的发行标识符信息“IDI”、存储的素数“qg”、函数“gp”和“f”,生成素数“gp(IDI,qg)”,将生成的素数“gp(IDI,qg)”写入确认信息存储区域221C中。素数“gp(IDI,qg)”的生成方法与上述所示的方法一样,所以省略说明。此时,可知由发行公钥确认部214C生成的素数“gp(IDI,qg)”与由密钥发行服务器的素数候补生成部142C生成的素数“pIDI”相同。
之后,发行公钥确认部214C读出由确认信息存储区域221C存储的素数“gp(IDI,qg)”,验证“n-1”是否能用读出的素数“gp(IDI,qg)”除尽。由此,可确认是否使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214C在判断为“n-1”被素数“gp(IDI,qg)”除尽的情况下,判断为使用发行标识符信息“IDI”生成公钥“PK”,在判断为“n-1”未被素数“gp(IDI,qg)”除尽的情况下,判断为未使用发行标识符信息“IDI”生成公钥“PK”。
发行公钥确认部214C在判断为使用发行标识符信息“IDI”生成公钥“PK”的情况下,分别向发行公钥保存部211、发行标识符信息保存部212写入接收到的公钥“PK”、发行标识符信息。发行公钥确认部214C将公钥证书的生成开始指令输出到公钥证书生成部215。
发行公钥确认部214C在判断为未使用发行标识符信息“IDI”生成公钥“PK”的情况下,结束处理。
(3)素数生成处理仅说明本变形例的素数生成处理与第1实施方式所示的素数生成处理的区别点。另外,密钥发行处理的动作流程与第1实施方式一样,所以省略说明。
在图15所示的素数生成处理的步骤S425中,随机数生成部141C变更为随机数生成部141C分别读出由信息控制部140C的信息存储区域存储的“lenq”、由分配素数存储区域存储的“lenqg”。之后,在步骤S430中,变更为随机数生成部141C使用读出的“lenq”和“lenqg”,生成由(lenq-2×lenqg-1)位构成的随机数“R1”,将生成的随机数“R1”和读出的控制信息输出到素数候补生成部142C。
(4)素数候补生成处理用图25所示的流程图来说明本变形例的素数候补生成处理。
素数候补生成部142C若从随机数生成部141C接收随机数“R1”和控制信息(步骤S700),则判断接收到的控制信息是否是“信息C”(步骤S705)。
在判断为是“信息C”的情况下(步骤S705为“是”),素数候补生成部142C从信息控制部140C的信息存储区域中读出素数“q”(步骤S710)。素数候补生成部142C使用读出的素数“q”和从随机数生成部141C接收到的随机数“R1”,生成数“N=2×R1×q+1”(步骤S715)。素数候补生成部142C判断生成的数“N”的位长度“lenN”是否与“lenq”一致(步骤S720),在判断为一致的情况下(步骤S720为“是”),素数候补生成部142C将生成的数“N”输出到第1素数判定部143C,并将接收到的随机数“R1”作为“R”存储在生成信息存储区域中(步骤S755)。
在判断为不一致的情况下(步骤S720为“否”),素数候补生成部142C对从随机数生成部141接收到的随机数“R1”乘以2,将结果作为“R1”(步骤S725),返回步骤S715。
在判断为控制信息不是“信息C”的情况下(步骤S705为“否”),即控制信息是“信息AB”的情况下,素数候补生成部142C从信息控制部140C的信息存储区域读出素数“q”和发行标识符信息“IDI”,从分配素数存储区域中读出素数“qg”(步骤S730)。
素数候补生成部142C使用读出的发行标识符信息“IDI”和素数“qg”、由函数存储区域存储的函数“f”和“gp”,利用上述所示方法,生成素数“pIDI=gp(IDI,qg)”,将生成的素数“pIDI”存储到生成信息存储区域(步骤S735)。
素数候补生成部142C读出由生成信息存储区域存储的素数“pIDI”,使用读出的素数“pIDI”、读出的素数“q”和生成的素数“pIDI”,生成数“N=2×R1×q×pIDI+1”(步骤S740)。
素数候补生成部142C判断生成的数“N”的位长度“lenN”是否为“2×lenq”(步骤S745)。
在判断为是“2×lenq”的情况下(步骤S745为“是”),素数候补生成部142C将生成的数“N”输出到第1素数判定部143C,将生成的随机数“R1”作为“R”,存储在生成信息存储区域中(步骤S755)。
在判断为不是“2×lenq”的情况下(步骤S745为“否”),素数候补生成部142C对从随机数生成部141C接收到的随机数“R1”乘以2,将结果作为“R1”(步骤S750),返回步骤S740。
(5)证书发行处理仅说明本变形例的证书发行处理与第1实施方式所示的证书发行处理的区别点。
变更为素数候补生成部214C在步骤S660,使用接收到的发行标识符信息“IDI”、存储的素数“qg”、函数“gp”和“f”,生成素数“gp(IDI,qg)”,并写入确认信息存储区域221C中。在步骤S665,素数候补生成部214C读出素数“gp(IDI,qg)”,使用接收到的公钥“PK”和发行标识符信息“IDI”、以及读出的素数“gp(IDI,qg)”,确认是否使用发行标识符信息“IDI”生成公钥“PK”。
(6)素数的唯一性和确认方法的验证通过与上述一样的证明,满足由素数生成部116C生成的素数的唯一性。即,由于每个终端装置生成不同的发行标识符信息,所以根据素数生成中使用的函数“f”的单射性质,生成的素数也不同。由此,可向每个终端装置分配不同的私钥和与之对应的公钥。
利用上述所示的方法,证书发行服务器可确认密钥发行服务器是否正确使用发行标识符信息IDI来生成公钥。
这是因为,由于作为私钥的素数“p1”和“p2”分别使用素数“q1”和“q2”、随机数“R11”、“R12”和素数“pIDI=gp(IDI,qg)”,满足“p1=2×q1×pIDI×R11+1”和“p2=2×q2×pIDI×R12+1”,所以有n=p1×P2=(2×q1×IDI×R11+1)×(2×q2×IDI×R12+1)=pIDI×(4×q1×q2×R11×R12×IDI+2×q1×R11+2×q2×R12)+1。
因此,由于“n-1”被“pIDI”除尽,所以通过确认“n-1”被“pIDI”除尽,可确认正确使用发行标识符信息“IDI”生成素数“p1”和“p2”。
(7)变形例本发明当然不限于上述实施方式。以下的情况也包含于本发明中。
在上述变形例中,预先存储一个素数“qg”,但不限于此。密钥发行服务器也可预先存储两个素数“qg1”、“qg2”,在生成素数“p1”的情况下,使用素数“qg1”,在生成素数“p2”的情况下,使用素数“qg2”。
另外,在上述变形例中,生成素数“p1”和“p2”时使用的“pIDI”相同,但不限于此。例如,也可设定为用于生成素数“p1”的“c”的值与例如用于生成素数“p2”的“c”的值不同,使生成素数“p1”和“p2”时使用的各个“pIDI”的值不同。
2.第2实施方式对于作为本发明的第2实施方式的密钥发行系统2而言,主要说明与第1实施方式的密钥发行系统1的区别点。
2.1密钥发行系统2的概要密钥发行系统2如图26所示,由密钥发行服务器1100、1101、1102、密钥发行检查服务器1200、和终端装置1300、1301、…、1302、1303、…、1304、1305、…、1306构成。终端装置的台数例如为1000台。
密钥发行服务器1100、1101和1102分别由不同的公司管理。终端装置1300、1301、…、1302请求密钥发行服务器1100发行密钥,终端装置1303、…、1304请求密钥发行服务器1101发行密钥,终端装置1305、…、1306请求密钥发行服务器1102发行密钥。另外,终端装置1300、1301、…、1302与密钥发行服务器1100之间确立安全的通信路径。另外,终端装置1303、…、1304与密钥发行服务器1101之间、以及终端装置1305、…、1306与密钥发行服务器1102之间也同样确立安全的通信路径。
另外,密钥发行服务器1100、1101、1102与密钥发行检查服务器1200之间也同样确立安全的通信路径。
下面,使用密钥发行服务器1100、密钥发行检查服务器1200和终端装置1300来说明密钥发行系统2的概要。
密钥发行服务器1100若从终端装置1300接收密钥发行请求,则生成RSA加密中的私钥和公钥。并且,密钥发行服务器1100生成与所生成的公钥对应的公钥证书,并将生成的公钥证书和私钥发送给终端装置1300。这里,设生成的各密钥的密钥长度为1024位。
密钥发行服务器1100若从密钥发行检查服务器1200接收请求已发行的公钥和发行标识符信息的已发行密钥委托信息,则将由发行的公钥与公钥生成中使用的发行标识符信息构成的已发行密钥信息发送给密钥发行检查服务器1200。
密钥发行检查服务器1200若从密钥发行服务器1100接收已发行公钥信息,则检查发行的公钥的合法性,并显示检查结果。
终端装置1300若从密钥发行服务器1100接受公钥证书和私钥,则存储接受的公钥证书和私钥。
之后,例如,终端装置1400的用户首先从密钥发行服务器1100获得终端装置1300的公钥证书,或从终端装置1300获得公钥证书,并使用密钥发行服务器1100具有、在确认公钥证书的合法性时使用的证书用公钥“C_PK”,确认公钥证书的合法性,在判断为是合法的公钥证书的情况下,由终端装置1400来存储获得的公钥证书。终端装置1400使用包含于存储的公钥证书中的公钥,对发送到终端装置1300的电子邮件进行加密,将加密后的电子邮件发送给终端装置1300。
终端装置1300若从终端装置1400接收加密后的电子邮件,则使用所存储的私钥,对加密后的电子邮件进行解密,并显示解密后的电子邮件。
由此,可在终端装置1300与终端装置1400之间安全地交换数据。
另外,终端装置1301、…、1302与终端装置1300一样,所以省略说明。另外,密钥发行服务器1101和1102与密钥发行服务器1100一样,所以省略说明。
在以后的说明中,使用终端装置1300作为各终端装置的代表,使用密钥发行服务器1100作为各密钥发行服务器的代表。
2.2密钥发行服务器1100的结构密钥发行服务器1100如图27所示,包括标识符保存部1110、私钥保存部1111、公钥保存部1112、证书保存部1113、控制部1114、标识符生成部1115、素数生成部1116、密钥判定部1117、密钥生成部1118、信息取得部1119、接收部1120、发送部1121、证书生成部1122、证书用私钥保存部1123和已发行密钥信息保存部1124。
密钥发行服务器1100具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储计算机程序。所述微处理器根据所述计算机程序动作,由此,密钥发行服务器1100实现其功能。
另外,密钥发行服务器1101和1102的结构与密钥发行服务器1100一样,所以省略说明。
(1)标识符保存部1110标识符保存部1110与第1实施方式的标识符保存部1110一样,具有用于存储位长度为126位以下的发行标识符信息的区域。发行标识符信息的位长度例如为64位。
(2)私钥保存部1111私钥保存部111与第1实施方式的私钥保存部1111一样,具有素数存储区域和私钥存储区域。
(3)公钥保存部1112公钥保存部1112与第1实施方式的公钥保存部112一样,具有用于存储公钥的区域。
(4)证书保存部1113证书保存部1113具有存储由该服务器生成的、由证书发行服务器发行的公钥证书的区域。
(5)证书用私钥保存部1123证书用私钥保存部1123预先存储生成公钥证书时使用的证书用私钥“C_SK”。
(6)控制部1114控制部1114如图27所示,具有服务器标识符存储区域1130和终端信息存储区域1131。
服务器标识符存储区域1130预先存储用于识别该服务器的服务器标识符。例如,密钥发行服务器1100存储SIDA,密钥发行服务器1101存储SIDB,密钥发行服务器1102存储SIDC。另外,以后将密钥发行服务器1100的服务器标识符说明为“SID”。这里,设服务器标识符的位长度为31位。
终端信息存储区域1131具有存储用于识别请求发行密钥的终端装置的终端标识符的区域。这里,终端标识符例如是终端装置的序列号。这里,设序列号的位长度为32位。
控制部1114若从终端装置1300经接收部1120接收密钥发行委托信息、和终端装置1300的终端标识符“TID”,则将接受的终端标识符“TID”写入终端信息存储区域1131中。控制部1114将发行标识符信息的生成指令、和接受的终端标识符“TID”输出到标识符生成部1115。
控制部1114若从密钥发行检查服务器1200经接收部1120接受已发行密钥委托信息,则将密钥信息取得指令输出到信息取得部1119。
(7)标识符生成部1115标识符生成部1115与第1实施方式的标识符生成部1115一样,所以省略说明。
(8)素数生成部1116素数生成部1116通过与第1实施方式的素数生成部116的素数生成方法一样的方法,生成512位的素数。
(9)密钥判定部1117密钥判定部1117与第1实施方式的密钥判定部117一样,所以省略说明。
(10)密钥生成部1118密钥生成部1118若从密钥判定部1117接受密钥生成指令,则读出由私钥保存部111的素数存储区域存储的两个素数“p1”和“p2”,计算读出的素数“p1”和“p2”之积“n=p1×p2”。
密钥生成部118生成随机数“e”,生成由算出的“n”和所生成的随机数“e”构成的组“PK=(n,e)”,来作为公钥,并将生成的公钥“PK”写入公钥保存部112中。这里,随机数“e”与以前一样,随机数“e”与数“L”互质,满足“1≤e≤L-1,GCD(e,L)=1”。这里,GCD(e,L)表示e与L的最大公约数,数“L”是“L=LCM(p1-1,p2-1)”,LCM(p1-1,p2-1)表示“p1-1”与“p2-1”的最小公倍数。
密钥生成部1118算出满足“e×d=1 mod L”的“d”,并将由算出的“d”、与素数“p1”和“p2”构成的组“SK=(p1,p2,d)”作为私钥,写入私钥保存部111的私钥存储区域中。密钥生成部118将公钥证书的生成指令输出到证书生成部1122。
(11)证书生成部1122证书生成部1122若从密钥生成部1118接受公钥证书的生成指令,则从证书用私钥保存部、公钥保存部1112、标识符保存部1110中分别读出证书用私钥“CSK”、公钥“PK”、发行标识符信息“IDI”。
证书生成部1122使用读出的私钥“C_SK”、公钥“PK”、发行标识符信息“IDI”,生成公钥证书“Cert”。生成的公钥证书“Cert”具体而言是“Cert=n||e||IDI||Sig(C_SK,n||e||IDI)”。这里,Sig(K,D)是对数据“d”使用私钥“K”时的签名数据。记号”||”是位或字节连结。
证书生成部1122将生成的公钥证书“Cert”写入证书保存部1113,将公钥证书“Cert”的分配开始指令输出到信息取得部1119。
(12)信息取得部1119信息取得部1119若从证书生成部1122接受分配开始指令,则分别读出由私钥保存部1111存储的私钥“SK”、由证书保存部1113存储的公钥证书“Cert”、由控制部1114的终端信息存储区域1131存储的终端标识符,并将读出的私钥“SK”和公钥证书“Cert”经发送部1121发送给与读出的终端标识符对应的终端装置1300。
信息取得部1119在经发送部1121将私钥“SK”和公钥证书“Cert”发送给终端装置1300之后,从公钥保存部1112和标识符保存部1110中分别读出发行的公钥“PK=(n,e)”和发行的发行标识符信息“IDI”,并将读出的公钥“PK”和发行标识符信息“IDI”作为一个组,写入已发行密钥信息保存部1124中。
信息取得部1119若从控制部1114接受密钥信息取得指令,则从已发行密钥信息保存部1124中读出全部的已发行密钥信息。信息取得部1119从控制部1114的服务器标识符存储区域1130中读出服务器标识符,并将读出的全部已发行密钥信息和服务器标识符经发送部1121发送给密钥发行检查服务器1200。
(13)已发行密钥信息保存部1124已发行密钥信息保存部1124如图28所示,具有已发行密钥信息表格T1100。
已发行密钥信息表格T1100具有存储一个以上由已发行公钥和已发行标识符信息构成的组的区域。
已发行公钥是由该密钥发行服务器发行的公钥,已发行标识符信息是生成公钥和与该公钥对应的私钥时使用的发行标识符信息。
如上所述,密钥发行服务器1100可存储发行的公钥和发行的发行标识符信息。
另外,由于已发行密钥信息保存部1124用于存储作为已发行公钥信息的发行履历,所以必需是即便断开电源也不会删除数据的非易失性存储器(例如硬盘等)。
(14)接收部1120接收部1120从密钥发行检查服务器1200和终端装置1300接收信息,将接收到的信息输出到控制部1114。
(15)发送部1121发送部1121从信息取得部1119接收私钥“SK”和公钥证书“Cert”,将接收到的各信息发送给终端装置1300。
发送部1121若从信息取得部1119接收一个以上的已发行密钥信息和服务器标识符,则将接收到的一个以上的已发行密钥信息和服务器标识符发送给密钥发行检查服务器1200。
2.3密钥发行检查服务器1200密钥发行检查服务器1200如图29所示,包括确认信息保存部1210、已发行密钥信息保存部1211、控制部1212、发行公钥确认部1213、受理部1214、检查结果输出部1215、接收部1216和发送部1217。
密钥发行检查服务器1200具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序进行动作,由此,密钥发行检查服务器1200实现其功能。
另外,由于从密钥发行服务器1100接受已发行密钥信息时的动作、与从其它密钥发行服务器接受收已发行密钥信息时的动作一样,所以在以后的说明中,用从密钥发行服务器100发送的已发行密钥信息来进行说明。
(1)确认信息保存部1210确认信息保存部1210如图30所示,具有验证值表格T1200。验证值表格T1200具有存储一个以上由服务器标识符、第1验证值和第2验证值构成的组的区域。服务器标识符是识别密钥发行服务器的标识符,“SIDA”表示密钥发行服务器1100,“SIDB”表示密钥发行服务器1101,“SIDB”表示密钥发行服务器1102。第1验证值和第2验证值是分配给由对应的服务器标识符表示的密钥发行服务器的验证值。下面,将密钥发行服务器100的服务器标识符说明为“SID”。
(2)已发行密钥信息保存部1211已发行密钥信息保存部1211具有用于存储从密钥发行服务器1100发送的一个以上已发行密钥信息的区域。
(3)控制部1212控制部1212如图29所示,具有服务器信息存储区域1220。
服务器信息存储区域1220具有存储用于识别委托发行公钥证书的密钥发行服务器的服务器标识符的区域。
控制部1212若从受理部1214接受开始检查公钥的检查开始指令、和检查对象的服务器标识符(这里为“SID”),则经发送部1217将已发行密钥委托信息发送给与服务器标识符对应的密钥发行服务器1100。
控制部1212将从受理部1214接受的服务器标识符写入服务器信息存储区域1220中。
控制部1212经接收部217从密钥发行服务器1100接受一个以上的已发行密钥信息和服务器标识符。
控制部1212判断接受的服务器标识符与由服务器信息存储区域存储的服务器标识符是否一致。
在判断为一致的情况下,控制部1212将接受的一个以上的已发行密钥信息写入已发行密钥信息保存部1211,将检查开始指令与和所接受的服务器标识符输出到发行公钥确认部1213。
在判断为不一致的情况下,控制部1212结束处理。
(4)发行公钥确认部1213发行公钥确认部1213若从控制部1212接受检查开始指令和服务器标识符,则使用接收到的服务器标识符,从确认信息保存部1210中读出对应的第1验证值“c11”和第2验证值“c12”。
发行公钥确认部1213从已发行密钥信息保存部1211中读出未读的已发行密钥信息中的一个已发行密钥信息。
发行公钥确认部1213使用读出的已发行密钥信息中包含的公钥“PK”、发行标识符信息“IDI”、第1验证值“c11”和第2验证值“c12”,确认是否使用发行标识符信息“IDI”来生成公钥“PK”。
这里,确认方法与第1实施方式一样,所以省略说明。
发行公钥确认部1213在判断为“n-(c11×c12)”被“IDI”除尽的情况下,判断为使用发行标识符信息“IDI”生成公钥“PK”,在判断为“n-(c11×c12)”未被“IDI”除尽的情况下,判断为未使用发行标识符信息“IDI”生成公钥“PK”,暂时存储读出的发行标识符信息“IDI”。
发行公钥确认部1213判断是否存在未读的已发行密钥信息,在判断为存在未读的已发行密钥信息的情况下,重复上述动作。在判断为不存在未读的已发行密钥信息的情况下,判断是否存在暂时存储的发行标识符信息。
在判断为存在暂时存储的发行标识符信息的情况下,发行公钥确认部1213连结已存储的全部发行标识符,生成不合法发行标识符信息群,将生成的不合法发行标识符信息群输出到检查结果输出部1215。
在判断为不存在暂时存储的发行标识符信息的情况下,发行公钥确认部1213将表示确认了全部公钥的合法性的合法消息输出给检查结果输出部1215。
(5)受理部1214受理部1214若通过用户的操作接收开始检查的指示、和检查对象的密钥发行服务器的服务器标识符,则将检查开始指令和服务器标识符输出到控制部1212。
(6)检查结果输出部1215检查结果输出部1215若从发行公钥确认部1213接受不合法发行标识符信息群,则将接受的不合法发行标识符信息群输出到监视器1250。
检查结果输出部1215若从发行公钥确认部1213接受合法消息,则将接受到的合法消息输出到监视器1250。
另外,监视器1250显示从检查结果输出部1215接受的信息。
(7)接收部1216接收部1216若从密钥发行服务器1100接收一个以上的已发行密钥信息、和服务器标识符,则将接收到的一个以上的已发行密钥信息和服务器标识符输出到控制部1212。
(8)发送部1217发送部1217若从控制部1212接受已发行密钥委托信息,则将接受的已发行密钥委托信息发送给密钥发行服务器1100。
2.4终端装置1300的结构终端装置1300与第1实施方式的终端装置300一样,所以省略说明。
另外,由于终端装置1301、…、1302、1303、…、1304、1305、…、1306也与终端装置300一样,所以省略说明。
2.5密钥发行系统2的动作这里,说明密钥发行系统2的动作。
(1)密钥发行系统2的动作概要这里,说明密钥发行系统2的动作概要。
下面,示出密钥发行服务器1100向终端装置1300发行密钥时的动作概要。
在下面的说明中,将一个以上的已发行密钥信息记述为已发行密钥信息群。
<密钥发行时的动作概要>
用图31所示的流程图来说明密钥发行时的动作概要。
终端装置1300若通过用户的操作接受密钥发行请求的指示,则将密钥发行委托信息和终端标识符“TID”发送给密钥发行服务器100(步骤S1000)。
密钥发行服务器1100若从终端装置1300接收密钥发行委托信息和终端标识符“TID”,则通过密钥发行处理,生成私钥和公钥(步骤S1005),通过证书发行处理,发行对应于由步骤S1005生成的公钥的公钥证书,并将发行的公钥证书与步骤S1005生成的私钥发送给终端装置1300(步骤S1010)。
终端装置1300若从密钥发行服务器1100接收私钥“SK”和公钥证书“Cert”,则存储接收到的私钥“SK”和公钥证书“Cert”(步骤S1015)。
<密钥检查时的动作概要>
用图32所示的流程图来说明密钥检查时的动作概要。
密钥发行检查服务器1200通过检查处理,将已发行密钥委托信息发送给密钥发行服务器1100(步骤S1050)。
密钥发行服务器1100将通过密钥信息取得处理取得的已发行密钥信息群和服务器标识符发送给密钥发行检查服务器1200(步骤S1055)。
(2)密钥发行处理这里,用图11、图12、图13和图14所示的流程图来仅说明图31所示的密钥发行处理的动作与第1实施方式所示的密钥发行处理的区别点。
本实施方式的密钥发行处理执行图11、图12和图13所示的步骤S200-步骤S325。
本实施方式的密钥发行处理将图13所示的步骤S330变更为使密钥生成部1118将组“SK=(p1,p2,d)”作为私钥,写入私钥保存部1111的私钥存储区域中,将公钥证书的生成指令输出到证书生成部1122。
本实施方式的密钥发行处理若执行变更后的步骤S330,则结束处理。
(3)证书发行处理这里,用图33所示的流程图来说明图31所示的密钥发行处理的动作。
证书生成部1122若从密钥生成部1118接受公钥证书的生成指令,则从证书用私钥保存部、公钥保存部1112、标识符保存部1110中分别读出证书用私钥“C_SK”、公钥“PK”、发行标识符信息“IDI”(步骤S1100)。
证书生成部1122使用读出的私钥“C_SK”、公钥“PK”和发行标识符信息“IDI”,生成公钥证书“Cert”,并将生成的公钥证书“Cert”写入证书保存部1113中,将公钥证书“Cert”的分配开始指令输出到信息取得部1119(步骤S1105)。
信息取得部1119若从证书生成部1122接受分配开始指令,则分别读出由私钥保存部1111存储的私钥“SK”、由证书保存部1113存储的公钥证书“Cert”、由控制部1114的终端信息存储区域存储的终端标识符,将读出的私钥“SK”和公钥证书“Cert”经发送部1121发送到与读出的终端标识符对应的终端装置1300(步骤S1110)。
信息取得部1119从公钥保存部1112、标识符保存部1110中分别读出发行的公钥“PK=(n,e)”、发行的发行标识符信息“IDI”,将读出的公钥“PK”和发行标识符信息“IDI”作为一个组,写入已发行密钥信息保存部1124中(步骤S1115)。
(4)密钥信息取得处理这里,用图34所示的流程图来说明图32所示的密钥信息取得处理的动作。
密钥发行服务器1100的控制部1114若经接收部1120从密钥发行检查服务器1200接受已发行密钥委托信息,则将密钥信息取得指令输出到信息取得部1119(步骤S1200)。
密钥发行服务器1100的信息取得部1119若从控制部1114接受密钥信息取得指令,则从已发行密钥信息保存部1124中读出全部的已发行密钥信息(步骤S1205)。
信息取得部1119从控制部1114的服务器标识符存储区域1130中读出服务器标识符,将读出的已发行密钥信息群和服务器标识符经发送部1211发送到密钥发行检查服务器100(步骤S1210)。
(5)检查处理这里,用图35所示的流程图来说明图32所示的检查处理的动作。
密钥发行检查服务器1200的受理部1214若通过用户的操作接受开始检查的指示、和检查对象的密钥发行服务器的服务器标识符,则将检查开始指令与服务器标识符输出到控制部1212(步骤S1300)。
控制部1212若从受理部1214接受开始公钥检查的检查开始指令、检查对象的服务器标识符(这里设为“SID”),则经发送部1217将已发行密钥委托信息发送给对应于服务器标识符的密钥发行服务器1100(步骤S1305)。
控制部1212将从受理部1214接受的服务器标识符写入服务器信息存储区域1220中(步骤S1310)。
控制部1212经接收部217从密钥发行服务器1100接受一个以上的已发行密钥信息和服务器标识符(步骤S1315)。
控制部1212判断接受的服务器标识符、与由服务器信息存储区域存储的服务器标识符是否一致(步骤S1320)。
在判断为一致的情况下(步骤S1320为是),控制部1212将接受的一个以上的已发行密钥信息写入已发行密钥信息保存部1211,将检查开始指令和接受的服务器标识符输出到发行公钥确认部1213(步骤S1325)。
发行公钥确认部1213在确认处理中执行公钥合法性的确认,并用监视器1250来显示结果。
在判断为不一致的情况下(步骤S1320为否),控制部1212结束处理。
(6)确认处理这里,用图36所示的流程图来说明图35所示的确认处理的动作。
发行公钥确认部1213若从控制部1212接受检查开始指令和服务器标识符,则使用接受的服务器标识符,从确认信息保存部1210中读出对应的第1验证值“c11”和第2验证值“c12”(步骤S1400)。
发行公钥确认部1213从已发行密钥信息保存部1211中读出一个未读的已发行密钥信息(步骤S1405)。
发行公钥确认部1213使用读出的已发行密钥信息中包含的公钥“PK”、发行标识符信息“IDI”、第1验证值“c11”和第2验证值“c12”,确认是否使用发行标识符信息“IDI”来生成公钥“PK”(步骤S1410)。确认方法与第1实施方式一样,所以省略说明。
发行公钥确认部1213在判断为“n-(c11×c12)”未被“IDI”除尽的情况下,即判断为公钥不合法的情况下(步骤S1410为“否”),暂时存储读出的发行标识符信息“IDI”(步骤S1415)。
发行公钥确认部1213在判断为“n-(c11×c12)”被“IDI”除尽的情况下,即判断为公钥合法的情况下(步骤S1410为“是”),省略步骤S1415。
发行公钥确认部1213判断是否存在未读的已发行密钥信息(步骤S1420),在判断为存在未读的已发行密钥信息的情况下(步骤S1420为“是”),返回步骤S1405。
在判断为不存在未读的已发行密钥信息的情况下(步骤S1420为“否”),判断是否存在暂时存储的发行标识符信息(步骤S1425)。
在判断为存在暂时存储的发行标识符信息的情况下(步骤1425为“是”),发行公钥确认部1213连结存储的全部发行标识符,生成不合法发行标识符信息群,将生成的不合法发行标识符信息群经检查结果输出部1215,由监视器1250来显示(步骤S1430)。
在判断为不存在暂时存储的发行标识符信息的情况下(步骤1425为“否”),发行公钥确认部1213将表示确认了全部公钥的合法性的合法消息经检查结果输出部1215,用监视器1250显示(步骤S1435)。
3.总结上述第1实施方式所示的密钥发行服务器100的素数生成部116之素数信息生成部133通过重复图37所示的动作,根据8位的素数,生成512位的素数。
素数信息生成部133根据8位的素数,生成16位的素数(步骤S1700),根据生成的16位的素数,生成32位的素数(步骤S1705),之后,依次根据32位的素数,生成64位的素数,根据64位的素数,生成128位的素数,根据128位的素数,生成256位的素数(步骤S1710、S1715和S1720),最后,根据生成的256位的素数,生成512位的素数(步骤S1725)。
素数生成部116在根据8位生成128位的素数期间,利用控制信息“信息C”,由与以前一样的生成方法,生成素数。
素数生成部116在步骤S1720中,利用控制信息“信息B”,使用单射函数“f”,生成256位的素数,以使生成的素数相对发行标识符信息“IDI”是唯一的。
素数生成部116在步骤S1725中,利用控制信息“信息A”,生成埋入发行标识符信息“IDI”的512位的素数,以便能确认生成的素数的合法性。
由此,密钥发行服务器100通过使用单射函数“f”,可生成对每个终端装置都不同的私钥和公钥。另外,当密钥发行服务器100根据256位的素数生成512位的素数时,由于在生成的素数中埋入发行标识符信息“IDI”,所以证书发行服务器200可使用生成的公钥与发行标识符信息,确认公钥的合法性。
另外,在第2实施方式中,与上述记载一样,密钥发行服务器1100通过使用单射函数“f”,可生成对每个终端装置都不同的私钥和公钥。另外,当用密钥发行服务器1100根据256位的素数生成512位的素数时,由于在生成的素数中埋入发行标识符信息“IDI”,所以密钥发行检查服务器1200可使用生成的公钥与发行标识符信息,确认公钥的合法性。
根据上述第1实施方式,密钥发行服务器100通过使用单射函数“f”,即便执行多次素数生成,也可实现生成不经过比较就可证明素数不一致的素数。
根据上述第1实施方式,密钥发行服务器100通过在生成的素数中埋入发行标识符信息“IDI”,可通过检查能否被发行标识符信息“IDI”除尽,来确认证书发行服务器200是否正确地执行密钥发行。
以前,存在具有1台密钥发行服务器的密钥发行系统。但是,若用户增加,则当生成素数时,通过执行多次阶乘,计算量变大,计算时间变长。因此,通过具有多个密钥发行服务器,分别执行密钥发行,可实现计算量的分散。但是,在具有多台密钥发行服务器的密钥发行系统中,例如有时2名用户将相同的素数作为密钥。此时,加密的安全性显著下降。这是因为例如将用户A的素数设为pA1、pA2,nA=pA1×pA2,将用户B的素数设为pB1、pB2,nB=pB1×pB2。此时,若pA1=pB1,则用户A通过求出GCD(pA1,nB),可知用户B的素数之一与pA1相等,结果,通过计算nB/pA1,也可得到pB2。RSA加密由于以素因数分解作为安全性的依据,所以若判明素因数,则可简单破解。因此,用户A解出由用户B的公钥加密的加密文本。另外,同样,用户B也会解出由用户A的公钥加密的加密文本。
在现有技术中,当执行多次素数生成时,有可能素数一致,由此,使加密的安全性显著下降。相反,通过比较已发行的素数(私钥)与发行的素数,可确认不一致。但是,在通常的公钥加密的系统中,尽管发行后的公钥由密钥发行服务器管理,但由于私钥的机密性高,所以多数会删除。因此,必需重新管理已发行的素数(私钥)。并且,若发行数量达到10亿个左右,则比较的时间长,不现实。
另外,在由多个密钥发行服务器发行的情况下,由于全部密钥发行服务器发行的素数不一致,所以各密钥发行服务器之间必需彼此检查发行的素数、即私钥。在各密钥发行服务器之间有依赖关系的情况下,没有问题,但由于各密钥发行服务器多分别由不同的公司设置,所以不一定可委托。并且,即便在各密钥发行服务器之间有依赖关系的情况下,由于每当发行密钥,都访问各密钥发行服务器的私钥的数据库,所以各密钥发行服务器之间的通信量变大。这样,各密钥发行服务器之间彼此检查也不现实。
若使用本发明的密钥发行服务器,则即便执行多次素数的生成,也可不经过比较就能证明素数不一致。
3.1变形例虽然根据上述第1、第2实施方式和素数生成的变形例1、2、3来说明了本发明,但本发明当然不限于上述实施方式。以下的情况也包含于本发明中。
(1)发行标识符信息“IDI”由服务器标识符、终端标识符和数“1”的连结构成,但不限于此。IDI也可使用服务器标识符、由计数器生成的发行标识符“PID”来生成。这里,发行标识符“PID”是从1开始按发行顺序分配的奇数。此时,标识符生成部115每当发行(生成)素数时,都将数“2”加1,由此可容易生成每次不同的素数。
(2)当根据128位生成256位的素数时,使用单射函数,但不限于此。只要是在埋入发行标识符信息之前,实施单射函数的动作可以是任何阶段。
例如,也可当根据8位的素数生成16位的素数时,实施单射函数。或者,也可当根据16位的素数生成32位的素数时,实施单射函数。或者,也可当根据32位的素数生成64位的素数时,实施单射函数。或者,也可当根据64位的素数生成128位的素数时,实施单射函数。
其中,发行标识符“IDI”的位数比输入所用的素数“q”的位数小,随机数“R1”的位数为(lenq-lenIDI-1)位,数“R”的位数是(lenq-1)位。
(3)也可将第1实施方式的素数生成部116作为一个素数生成装置。此时,素数生成装置在提供发行标识符信息“IDI”和其位长度“lenIDI”的情况下,根据提供的“IDI”及其位长度“lenIDI”、以及预先存储的8位的素数,生成512位的素数。
另外,第2实施方式的素数生成部1116也一样,也可作为一个素数生成装置。
(4)第1实施方式的素数生成部116也可由根据预先存储的8位的素数来生成128位的素数之第1素数生成部、和根据128位的素数来生成512位的素数之第2素数生成部来构成。另外,也可将第1素数生成部和第2素数生成部分别作为单独的素数生成装置。
第1素数生成部利用与以前一样的方法,根据8位的素数来生成128位的素数。现有方法的细节见专利文献1和非专利文献3。
下面,图38中示出第2素数生成部的结构的一部分。这里,将第2素数生成部说明为一个素数生成装置2100。素数生成装置2100在提供素数”q1”、其位长度“lenq1”(这里将位长度设为128位。)、发行标识符信息“IDI”、与其位长度“lenIDI”的情况下,输出由(4×lenq1)位构成的素数“N”。另外,这里所示的素数生成装置2100通过不使用第1实施方式所示的第1和第2验证值,生成素数“N”。
素数生成装置2100如图38所示,包括受理部2101、受理信息保存部2102、素数种子生成部2103、随机数生成部2104、素数候补生成部2105、第1素数判定部2106和第2素数判定部2107。
素数生成装置2100具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序动作,由此,素数生成装置2100实现其功能。
<受理信息保存部2102>
受理信息保存部2102具备存储生成素数“N”时提供的素数“q1”、素数“q1”的位长度“lenq1”、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”的区域。
<受理部2101>
受理部2101从外部(例如上述所示的第1素数生成部)接受素数“q1”、素数“q1”的位长度“lenq1”(例如128位)、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”,将接受的素数“q1”、其位长度“lenq1”、发行标识符信息“IDI”、和其位长度“lenIDI”写入受理信息保存部2102中。
受理部2101将接受的各信息输出到素数种子生成部2103。
<素数种子生成部2103>
素数种子生成部2103由于执行与上述第1实施方式所示的素数生成部116在控制信息为“信息B”时执行的动作一样的动作,所以省略说明。另外,这里设根据128位的素数“q1”来生成256位的素数“q2”。
素数种子生成部2103将生成的素数“q2”输出到素数候补生成部2105。
<随机数生成部2104>
随机数生成部2104若从素数候补生成部2105接受第1生成指示,则从受理信息保存部2102中读出素数“q1”的位长度“lenq1”、和发行标识符信息“IDI”的位长度“lenIDI”。
随机数生成部2104使用读出的位长度“lenq1”、和“lenIDI”,生成(2×lenq1-lenIDI-1)位的随机数“R1”。这里,设随机数“R1”的最高位位为1。
随机数生成部2104将生成的随机数“R1”输出到素数候补生成部2105。
另外,随机数生成部2104若从第1素数判定部2106和第2素数判定部2107之一接受表示再次生成随机数的第2生成指示,则读出各位长度,执行上述动作。
<素数候补生成部2105>
素数候补生成部2105具有存储生成的数的生成信息存储区域。
素数候补生成部2105若从素数种子生成部2103接受素数“q2”,则将第1生成指示输出到随机数生成部2104。
素数候补生成部2105若从随机数生成部2104接受随机数“R1”,则读出由受理信息保存部2102存储的发行标识符信息“IDI”。
素数候补生成部2105使用从素数种子生成部2103接收到的素数“q2”、从受理信息保存部2102中读出的发行标识符信息“IDI”和从随机数生成部2104接受的随机数“R1”,生成数“R=IDI×R1”和数“N=2×R×q2+1”。
素数候补生成部2105从受理信息保存部2102中读出素数“q1”的位长度“lenq1”,判定生成的数“N”的位长度是否为“4×lenq1”。
在判断为是“4×lenq1”的情况下,素数候补生成部2105将生成的数“N”输出到第1素数判定部2106,并将生成的数“R”存储在生成信息存储区域中。
在判断为不是“4×lenq1”的情况下,素数候补生成部2105对从随机数生成部2104接受的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“R”和“N”。
素数候补生成部2105重复上述动作,直到数“N”的位长度变为“4×lenq1”为止。
<第1素数判定部2106>
第1素数判定部2106的动作与第1实施方式所示的第1素数判定部143一样,所以这里省略说明。
<第2素数判定部2107>
第2素数判定部2107的动作与第1实施方式所示的第2素数判定部144一样,所以这里省略说明。
另外,第2素数判定部2107在通过判定,判断为生成的数“N”为素数的情况下,输出生成的数“N”,作为素数“N”。
<素数生成装置2100的动作>
下面,说明素数生成装置2100的动作。
(素数生成处理)这里,用图39所示的流程图来说明由素数生成装置2100执行的素数生成处理。
素数生成装置2100中,受理部2101接受素数“q1”、素数“q1”的位长度“lenq1”、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”,将接受的各信息写入受理信息保存部2102中(步骤S2000)。
素数生成装置2100中,素数种子生成部2103使用步骤S2000中接受的各信息,生成素数“q2”(步骤S2005)。
素数生成装置2100中,随机数生成部2104使用步骤S2000中接受的位长度“lenq1”和位长度“lenIDI”,生成(2×lenq1-lenIDI-1)位的随机数“R1”(步骤S2010)。这里,设随机数“R1”的最高位位为1。
素数生成装置2100中,素数候补生成部2105使用步骤S2000中接受的发行标识符信息“IDI”、步骤S2005生成的素数“q2”和步骤S2010生成的随机数“R1”,通过实施素数候补生成处理,生成数“R”和“N”(步骤S2015)。素数生成装置2100中,第1素数判定部2106使用步骤S2015中生成的数“N”,判定上述所示的数“eq1”是否成立(步骤S2020)。
在判断为式(eq1)成立的情况下(步骤S2020为“是”),素数生成装置2100中,第2素数判定部2107使用步骤S2105生成的数“R”与“N”,判定上述所示的式(eq2)是否成立(步骤S2025)。
在判断为式(eq2)成立的情况下(步骤S2025为“是”),素数生成装置2100输出数“N”作为素数“N”,结束处理(步骤S2030)。
在判断为式(eq1)不成立的情况下(步骤S2020为“否”),和判断为式(eq2)不成立的情况下(步骤S2025为“否”),返回步骤S2010,再次执行处理。
(素数候补生成处理)这里,使用图40所示的流程图来说明素数生成处理的步骤S2105执行的素数候补生成处理。
素数候补生成部2105使用由素数生成处理的步骤S2000接受的发行标识符信息“IDI”、和步骤S2010生成的随机数“R1”,生成数“R”(步骤S2050)。这里,数“R”为“R=IDI×R1”。
素数候补生成部2105使用在素数生成处理的步骤S2005生成的素数“q2”和在步骤S2050生成的数“R”,生成数“N”(步骤S2055)。这里,数“N”为“N=2×R×q2+1”。
素数候补生成部2105判断生成的数“N”的位长度是否为“4×lenq1”(步骤S2060)。
在判断为是“4×lenq1”的情况下(步骤S2060为“是”),结束处理。在判断为不是“4×lenq1”的情况下(步骤S2060为“否”),对素数生成处理的步骤S2010生成的随机数“R1”乘以2,将结果作为“R1”,返回步骤S2050(步骤S2065)。
<其它>
这里,将作为生成的私钥的素数的位长度设为512位,但不限于此。也可以是1024位,或2048位。另外,上述第1素数生成部生成的素数也同样不限于128位。
(5)也可将上述所示的素数种子生成部2103作为一个素数生成装置。下面,说明此时的素数生成装置2200。素数生成装置2200在提供素数“q1”、其位长度“lenq1”(这里将位长度设为128位。)、发行标识符信息“IDI”、以及其位长度“lenIDI”的情况下,输出由(2×lenq)位构成的素数“N”。
素数生成装置2200如图41所示,包括受理部2201、受理信息保存部2202、随机数生成部2203、素数候补生成部2204、第1素数判定部2205和第2素数判定部2206。
素数生成装置2200具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序动作,由此,素数生成装置2200实现其功能。
<受理信息保存部2202>
受理信息保存部2202具备存储生成素数“N”时提供的素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”的区域。
<受理部2201>
受理部2201从外部(例如上述所示的第1素数生成部)接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”,受理部2201将接收到的素数“q”、其位长度“lenq”、发行标识符信息“IDI”、和其位长度“lenIDI”写入受理信息保存部2202中。
受理部2201将表示开始处理的开始指示输出到素数候补生成部2204。
<随机数生成部2203>
随机数生成部2203若从素数候补生成部2204接受表示生成随机数的第1生成指示,则从受理信息保存部2202中读出素数“q”的位长度“lenq”、和发行标识符信息“IDI”的位长度“lenIDI”。
随机数生成部2203使用读出的位长度“lenq”、和“lenIDI”,生成(lenq-lenIDI-1)位的随机数“R1”。这里,设随机数“R1”的最高位位为1。随机数生成方法的细节见非专利文献2。
随机数生成部2203将生成的随机数“R1”输出到素数候补生成部2204。
另外,随机数生成部2203若从第1素数判定部2205和第2素数判定部2206之一接受表示再次生成随机数的第2生成指示,则读出各位长度,执行上述动作。
<素数候补生成部2204>
素数候补生成部2204具有预先存储作为单射的函数“f”的函数存储区域和存储使用函数“f”生成的数的生成信息存储区域。
素数候补生成部2204若从受理部2201接受开始指示,则将第1生成只是输出到随机数生成部2203。
素数候补生成部2204若从随机数生成部2203接受随机数“R1”,则读出由受理信息保存部2202存储的素数“q”和发行标识符信息“IDI”。
素数候补生成部2204使用由函数存储区域存储的函数“f”、读出的素数“q2”和发行标识符信息“IDI”、以及从随机数生成部2203接受的随机数“R1”,生成数“R=f(IDI||R1)”与数“N=2×R×q+1”。
素数候补生成部2204判断生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部2204将生成的数“N”输出到第1素数判定部2205,并将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部2204对从随机数生成部2203接受的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成满足上述式的数“R”和“N”。
素数候补生成部2204重复上述动作,直到生成的数“N”的位长度变为“2×lenq”为止。
<第1素数判定部2205>
第1素数判定部2205的动作与第1实施方式所示的第1素数判定部143一样,所以这里省略说明。
<第2素数判定部2206>
第2素数判定部2206的动作与第1实施方式所示的第2素数判定部144一样,所以这里省略说明。
另外,第2素数判定部2206在通过判定,判断为生成的数“N”为素数的情况下,输出生成的数“N”,作为素数“N”。
<素数生成装置2200的动作>
下面,说明素数生成装置2200的动作。
(素数生成处理)这里,用图39所示的流程图,对由素数生成装置2200执行的素数生成处理仅说明变更点。
素数生成装置2200在步骤S2000中,变更为通过用户操作接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”,将接受的各信息写入受理信息保存部2202中。
素数生成装置2200在执行上述变更的步骤S2000之后,省略步骤S2005,执行下述变更的步骤S2010。素数生成装置2200在步骤S2010中,变更为生成(lenq-lenIDI-1)位的随机数“R1”。
以后的动作流程与图39一样,所以省略说明。
(素数候补生成处理)这里,使用图40所示的流程图,对素数候补生成处理仅说明变更点。
首先,将步骤S2050变更为生成数“R=f(IDI||R1)”。
之后,将步骤S2055变更为生成数“N=2×R×q+1”。
后面的动作流程与图40一样,所以省略说明。
(6)也可由根据预先存储的8位的素数来生成256位的素数的第1素数生成部、和根据256位素数生成512位素数的第2素数生成部来构成素数生成变形例3中的素数生成部116C。另外,第1素数生成部和第2素数生成部也可分别作为单独的素数生成装置。
第1素数生成部利用与以前一样的方法,根据8位的素数来生成256位的素数。
下面,图42示出第2素数生成部的结构一例。这里,将第2素数生成部说明为一个素数生成装置2300。素数生成装置2300在提供素数“q”、其位长度“lenq”(这里将位长度设为128位。)、发行标识符信息“IDI”、与其位长度“lenIDI”的情况下,输出由(2×lenq)位构成的素数“N”。另外,这里所示的素数生成装置2300通过不使用第1实施方式所示的第1和第2验证值,生成素数“N”。
素数生成装置2300如图42所示,包括受理部2301、受理信息保存部2302、标识符素数生成部2303、随机数生成部2304、素数候补生成部2305、第1素数判定部2306和第2素数判定部2307。
素数生成装置2300具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序动作,由此,素数生成装置2300实现其功能。
<受理信息保存部2302>
受理信息保存部2302具备存储生成素数“N”时提供的素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”的区域。
<受理部2301>
受理部2301从外部(例如第1素数生成部)接收素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”,将接收到的素数“q”、其位长度“lenq”、发行标识符信息“IDI”和其位长度“lenIDI”写入受理信息保存部2302中。
受理部2301将表示开始处理的开始指示输出到标识符素数生成部2303。
<标识符素数生成部2303>
标识符素数生成部2303预先存储素数“qg”和其位长度“lenqg”。
标识符素数生成部2303预先存储根据发行标识符“IDI”和素数“qg”来唯一生成素数的素数生成函数“gp”和单射函数“f”。
标识符素数生成部2303若从受理部2301接受开始指示,则从受理信息保存部2302读出发行标识符信息“IDI”。
标识符素数生成部2303根据预先存储的素数“qg”和素数生成函数“gp”、以及读出的发行标识符信息“IDI”,生成素数“pIDI=gp(IDI,qg)”。素数“pIDI”的生成方法与素数生成的变形例3所示的方法一样,所以省略说明。
标识符素数生成部2303将生成的素数“pIDI”输出到素数候补生成部2305。
<随机数生成部2304>
随机数生成部2304若从素数候补生成部2305接受第1生成指示,则从受理信息保存部2302中读出素数“q”的位长度“lenq”,从标识符素数生成部2303中读出素数“qg”的位长度“lenqg”。
随机数生成部2304使用读出的位长度“lenq1”和“lenqg”,生成(lenq-2×lenqg-1)位的随机数“R”。这里,设随机数“R”的最高位位为1。
随机数生成部2304将生成的随机数“R”输出到素数候补生成部2305。
另外,随机数生成部2304若从第1素数判定部2306和第2素数判定部2307之一接受表示再次生成随机数的第2生成指示,则读出各位长度,执行上述动作。
<素数候补生成部2305>
素数候补生成部2305若从标识符素数生成部2303接受素数“pIDI”,则将第1生成指示输出到随机数生成部2304。
素数候补生成部2305若从随机数生成部2304接受随机数“R”,则读出由受理信息保存部2302存储的素数“q”。
素数候补生成部2305使用从标识符素数生成部2303接收到的素数“pIDI”、从受理信息保存部2302中读出的素数“q”和从随机数生成部2304接收到的随机数“R”,生成数“N=2×R×q×pIDI+1”。
素数候补生成部2305从受理信息保存部2302中读出素数“q”的位长度“lenq”,判定生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部2305将生成的数“N”输出到第1素数判定部2306,暂时存储随机数“R”。
在判断为不是“2×lenq”的情况下,素数候补生成部2305对从随机数生成部2304接受的随机数“R”乘以2,将结果作为“R”,再次执行上述动作,生成数“N”。
素数候补生成部2305重复上述动作,直到数“N”的位长度变为“2×lenq”为止。
<第1素数判定部2306>
第1素数判定部2306的动作与第1实施方式所示的第1素数判定部143一样,所以这里省略说明。
<第2素数判定部2307>
第2素数判定部2307的动作与第1实施方式所示的第2素数判定部144一样,所以这里省略说明。
另外,第2素数判定部2307在通过判定,判断为生成的数“N”为素数的情况下,输出生成的数“N”,作为素数“N”。
<素数生成装置2300的动作>
下面,说明素数生成装置2300的动作。
(素数生成处理)这里,用图39所示的流程图,对由素数生成装置2300执行的素数生成处理仅说明变更点。
素数生成装置2300在步骤S2000中,变更为通过用户操作接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”,将接受的各信息写入受理信息保存部2202中。
素数生成装置2300在步骤S2005中变更为生成素数“pIDI”。
素数生成装置2300在步骤S2010中变更为生成“lenq-2×lenqg-1”位的随机数“R”。
以后的动作流程与图39一样,所以省略说明。
(素数候补生成处理)这里,使用图40所示的流程图,对素数候补生成处理仅说明变更点。
首先,省略步骤S2050。
之后,将步骤S2055变更为生成数“N=2×R×q×pIDI+1”。
以后的动作流程与图40一样,所以省略说明。
<其它>
这里,将作为生成的私钥的素数的位长度设为512位,但不限于此。也可以是1024位,或2048位。另外,上述第1素数生成部生成的素数也同样不限于256位。
(7)也可由根据预先存储的8位的素数来生成256位的素数的第1素数生成部、和根据256位素数生成512位素数的第2素数生成部来构成第1实施方式中的素数生成部116。另外,第1素数生成部和第2素数生成部也可分别作为单独的素数生成装置。
第1素数生成部利用与以前一样的方法,根据8位的素数来生成128位的素数,并适用上述所示的素数生成装置2200,根据128位的素数来生成256位的素数。
下面,图43示出第2素数生成部的结构一例。这里,将第2素数生成部说明为一个素数生成装置2400。素数生成装置2400在提供素数“q”、其位长度“lenq”(这里将位长度设为256位。)、发行标识符信息“IDI”和其位长度“lenIDI”的情况下,输出由(2×lenq)位构成的素数“N”。另外,这里所示的素数生成装置2400通过不使用第1实施方式所示的第1和第2验证值,生成素数“N”。
素数生成装置2400如图43所示,包括受理部2401、受理信息保存部2402、随机数生成部2403、素数候补生成部2404、第1素数判定部2405和第2素数判定部2406。
素数生成装置2400具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序动作,由此,素数生成装置2400实现其功能。
<受理信息保存部2402>
受理信息保存部2402具备存储生成素数“N”时提供的素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”的区域。
<受理部2401>
受理部2401从外部(例如上述所示的第1素数生成部)接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”和发行标识符信息的位长度“lenIDI”,受理部2401将接受的素数“q”、其位长度“lenq”、发行标识符信息“IDI”、和其位长度“lenIDI”写入受理信息保存部2402中。
受理部2401将表示开始处理的开始指示输出到素数候补生成部2404。
<随机数生成部2403>
随机数生成部2403若从素数候补生成部2404接受表示生成随机数的第1生成指示,则从受理信息保存部2402中读出素数“q”的位长度“lenq”和发行标识符信息“IDI”的位长度“lenIDI”。
随机数生成部2403使用读出的位长度“lenq”和“lenIDI”,生成(lenq-lenIDI-1)位的随机数“R1”。这里,设随机数“R1”的最高位位为1。
随机数生成部2403将生成的随机数“R1”输出到素数候补生成部2404。
另外,随机数生成部2403若从第1素数判定部2405和第2素数判定部2406之一接受表示再次生成随机数的第2生成指示,则读出各位长度,执行上述动作。
<素数候补生成部2404>
素数候补生成部2404具有存储生成的数的生成信息存储区域。
素数候补生成部2404若从受理部2401接受开始指示,则将第1生成指示输出到随机数生成部2403。
素数候补生成部2404若从随机数生成部2403接受随机数“R1”,则读出由受理信息保存部2402存储的素数“q”和发行标识符信息“IDI”。
素数候补生成部2404使用读出的素数“q”和发行标识符信息“IDI”、与从随机数生成部2403接受的随机数“R1”,生成数“R=IDI×R1”与数“N=2×R×q+1”。
素数候补生成部2404判断生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部2404将生成的数“N”输出到第1素数判定部2405,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部2404对从随机数生成部2403接收到的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“R”和“N”。
素数候补生成部2404重复上述动作,直到数“N”的位长度变为“2×lenq”为止。
<第1素数判定部2405>
第1素数判定部2405的动作与第1实施方式所示的第1素数判定部143一样,所以这里省略说明。
<第2素数判定部2406>
第2素数判定部2406的动作与第1实施方式所示的第2素数判定部144一样,所以这里省略说明。
另外,第2素数判定部2406在通过判定,判断为生成的数“N”为素数的情况下,输出生成的数“N”,作为素数“N”。
<素数生成装置2400的动作>
下面,说明素数生成装置2400的动作。
(素数生成处理)这里,用图39所示的流程图,对由素数生成装置2400执行的素数生成处理仅说明变更点。
素数生成装置2400在步骤S2000中,变更为接收素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、和发行标识符信息的位长度“lenIDI”,将接受的各信息写入受理信息保存部2402中。
素数生成装置2400在执行上述变更的步骤S2000之后,省略步骤S2005,执行如下变更的步骤S2010。素数生成装置2400在步骤S2010中变更为生成(lenq-lenIDI-1)位的随机数“R1”。
以后的动作流程与图39一样,所以省略说明。
(素数候补生成处理)这里,使用图40所示的流程图,对素数候补生成处理仅说明变更点。
首先,将步骤S2050变更为生成数“R=IDI×R1”。
之后,将步骤S2055变更为生成数‘N=2×R×q+1’。
以后的动作流程与图40一样,所以省略说明。
(8)也可由根据预先存储的8位的素数来生成256位的素数的第1素数生成部、和根据256位素数生成512位素数的第2素数生成部来构成第1实施方式中的素数生成部116。另外,第1素数生成部和第2素数生成部也可分别作为单独的素数生成装置。
第1素数生成部利用与以前一样的方法,根据8位的素数来生成128位的素数,并适用上述所示的素数生成装置2200,根据128位的素数来生成256位的素数。
下面,图44示出第2素数生成部的结构一例。这里,将第2素数生成部说明为一个素数生成装置2500。素数生成装置2500在提供素数“q”、其位长度“lenq”(这里将位长度设为256位。)、发行标识符信息“IDI”、与其位长度“lenIDI”、验证值“c”的情况下,输出由(2×lenq)位构成的素数“N”。
素数生成装置2500如图44所示,由受理部2501、受理信息保存部2502、随机数生成部2503、素数候补生成部2504、第1素数判定部2505和第2素数判定部2506构成。
素数生成装置2500具体而言,是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元中,存储有计算机程序。所述微处理器根据所述计算机程序动作,由此,素数生成装置2500实现其功能。
<受理信息保存部2502>
受理信息保存部2502具备存储生成素数“N”时提供的素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、发行标识符信息的位长度“lenIDI”和验证值“c”的区域。
<受理部2501>
受理部2501从外部(例如上述所示的第1素数生成部)接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、发行标识符信息的位长度“lenIDI”和验证值“c”,受理部2501将接受的素数“q”、其位长度“lenq”、发行标识符信息“IDI”、其位长度“lenIDI”和验证值“c”写入受理信息保存部2502中。
受理部2501将表示开始处理的开始指示输出到素数候补生成部2504。
<随机数生成部2503>
随机数生成部2503若从素数候补生成部2504接受生成随机数的第1生成指示,则从受理信息保存部2502中读出素数“q”的位长度“lenq”和发行标识符信息“IDI”的位长度“lenIDI”。
随机数生成部2503使用读出的位长度“lenq”和“lenIDI”,生成(lenq-lenIDI-1)位的随机数“R1”。这里,设随机数“R1”的最高位位为1。
随机数生成部2503将生成的随机数“R1”输出到素数候补生成部2504。
另外,随机数生成部2503若从第1素数判定部2505和第2素数判定部2506之一接受再次生成随机数的第2生成指示,则读出各位长度,执行上述动作。
<素数候补生成部2504>
素数候补生成部2504具有存储生成的数的生成信息存储区域。
素数候补生成部2504若从受理部2501接受开始指示,则将第1生成指示输出到随机数生成部2503。
素数候补生成部2504若从随机数生成部2503接受随机数“R1”,则读出由受理信息保存部2502存储的素数“q”、发行标识符信息“IDI”和验证值“c”。
素数候补生成部2504使用读出的素数“q”、发行标识符信息“IDI”和验证值“c”、以及从随机数生成部2503接受的随机数“R1”,生成数“R=IDI×R1”和数“N=2×R(+w)×q+1”。
这里,“w”是满足“2×w×q+1=c mod IDI、0≤w<IDI”的数。通过计算“w=(c-1)×m mod IDI”,求出“w”。“m”是满足“(2×q)×m=1 modIDI”的数。
素数候补生成部2504判断生成的数“N”的位长度是否为“2×lenq”。
在判断为是“2×lenq”的情况下,素数候补生成部2504将生成的数“N”输出到第1素数判定部2505,将生成的数“R”存储在生成信息存储区域中。
在判断为不是“2×lenq”的情况下,素数候补生成部2504对从随机数生成部2503接受的随机数“R1”乘以2,将结果作为“R1”,再次执行上述动作,生成数“R”和“N”。
素数候补生成部2504重复上述动作,直到生成的数“N”的位长度变为“2×lenq”为止。
<第1素数判定部2505>
第1素数判定部2505的动作与第1实施方式所示的第1素数判定部143一样,所以这里省略说明。
<第2素数判定部2506>
第2素数判定部2506的动作与第1实施方式所示的第2素数判定部144一样,所以这里省略说明。
另外,第2素数判定部2506在通过判定,判断为生成的数“N”为素数的情况下,输出生成的数“N”,作为素数“N”。
<素数生成装置2500的动作>
下面,说明素数生成装置2500的动作。
(素数生成处理)这里,用图39所示的流程图,对由素数生成装置2500执行的素数生成处理仅说明变更点。
素数生成装置2500在步骤S2000中,变更为接受素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”、发行标识符信息的位长度“lenIDI”和验证值“c”,将接受的各信息写入受理信息保存部2502中。
素数生成装置2500在执行上述变更的步骤S2000之后,省略步骤S2005,执行如下变更的步骤S2010。素数生成装置2500在步骤S2010中变更为生成(lenq-lenIDI-1)位的随机数“R1”。
以后的动作流程与图39一样,所以省略说明。
(素数候补生成处理)这里,使用图40所示的流程图,对素数候补生成处理仅说明变更点。
首先,将步骤S2050变更为生成数“R=IDI×R1”。
之后,将步骤S2055变更为生成数“N=2×R(+w)×q+1”。
以后的动作流程与图40一样,所以省略说明。
(9)在上述第1实施方式中,素数生成部116实施单射函数“f”,之后,执行发行标识符信息“IDI”的埋入,但也可仅实施单射函数“f”,或仅执行发行标识符信息“IDI”的埋入。
在仅实施单射函数的情况下,生成的素数满足唯一性。此时,实施单射函数的时间可以是任意时刻。
在仅执行发行标识符信息“IDI”的埋入的情况下,虽然生成的素数不满足唯一性,但可使用“IDI”来执行生成的密钥合法性的确认。另外,在仅执行发行标识符信息“IDI”的埋入的情况下,在根据256位的素数来生成512位的素数的定时执行。
另外,第2实施方式也一样。
(10)在上述第1和第2实施方式中,在控制信息为“信息B”的情况下,素数生成部116实施单射函数,生成数“R=f(IDI||R1)”,但不限于此。
例如,在控制信息为“信息B”的情况下,素数生成部116既可生成数“R=f(R1||IDI)”,也可生成数“R=f(IDI)||R1”,或生成数“R=R1||f(IDI)”。
另外,通过不使用单射函数,也可生成数“R=(IDI||R1)”,或生成数“R=(R1||IDI)”。
另外,也可在发行标识符信息“IDI”的位串中,埋入构成随机数“R1”的各位,对埋入的结果(下面称为“IDI_R1”。)实施单射函数“f”,生成数“R”。
图45示出其一例。发行标识符信息“IDI”如上所述,具体由64位构成,设其位串为“S1S2S3S4…S62S63S64”。随机数“R1”具体而言由63位构成,设其位串为“T1T2T3T4…T61T62T63”。这里,“Sn”和“Tm”是“0”和“1”之一。另外,“n”是1以上64以下的数,“m”是1以上63以下的数。此时,数“IDI-R1”的位串变为“S1T1S2T2S3T3S4T4…T61S62T62S63T63S64”。
另外,一例中,对于发行标识符信息“IDI”的位串,每隔1位埋入随机数“R1”的各位,但不限于此。也可对于发行标识符信息“IDI”的位串,每隔多个位中埋入随机数“R1”的各位,生成数“IDI-R1”。此时,在“IDI”位串末尾的位之后结合未埋入“IDI”位串之间的全部位,生成“IDI_R1”。
另外,也可对于随机数“R1”的位串,埋入发行标识符信息“IDI”的各位,生成数“IDI-R1”。例如,在每隔1位埋入的情况下,数“IDI-R1”的位串变为“T1S1T2S2T3S3T4S4…T62T62T63S63S64”。
另外,根据发行标识符信息“IDI”与随机数“R1”,生成数“IDI-R1”,对生成的数“IDI-R1”实施单射函数“f”,生成数“R”,但不限于此。数“R”也可以是“R=IDI_R1”。
(11)在上述第1实施方式中,在控制信息为“信息A”的情况下,素数生成部116执行发行标识符信息“IDI”的埋入,但埋入信息不限于“IDI”。
例如,也可以是仅密钥发行服务器100和证书发行服务器200为已知的保密函数,并且是使用作为1对1函数的“g”的值。此时,代替“IDI”埋入的值为“g(IDI)”。
另外,第2实施方式也一样。
(12)在上述第1实施方式中,在密钥发行服务器100与终端装置300之间确立安全的通信路径,从密钥发行服务器100向终端装置300发送私钥和公钥,但不限于此。
例如,也可在制造终端装置300时,经输入输出装置,在密钥发行服务器100与终端装置300之间发送私钥和公钥。
另外,第2实施方式也一样。
(13)在上述第1和第2实施方式中,作为终端装置的具体例,设为便携电话机,但不限于此。
只要是可经网络接收加密后的数据并能进行解密的终端装置即可。
例如,是电脑或PDA(Personal Digital Assistants)。
(14)在上述第1和第2实施方式中,设发行标识符信息“IDI”为奇数,但在素数生成中未使用验证值的情况下,发行标识符信息“IDI”也可以不是奇数。
此时,在使用服务器标识符、和利用计数器从1开始依次生成的发行标识符“PID”来生成的情况下,此时,标识符生成部115每当发行(生成)素数时,都将加数“1”,由此可容易生成每次不同的素数。
(15)在第1和第2实施方式中,作为生成的私钥的素数的位长度不限于512位。可以是1024位,也可以是2048位。此时,素数生成部116对于作为私钥的素数的位长度(这里设为“lenN”。),利用以前的素数生成方法,生成由(lenN/4)位构成的素数,之后,实施单射函数“f”,生成由(lenN/2)位构成的素数,最后,生成由埋入了发行标识符信息“IDI”的“lenN”位构成的素数“N”。
另外,在仅执行发行标识符信息“IDI”的埋入的情况下,素数生成部通过以前的素数生成方法,生成由(lenN/2)位构成的素数,最后,生成由埋入了发行标识符信息“IDI”的“lenN”位构成的素数“N”。
另外,在仅实施单射函数“f”,生成唯一的素数的情况下,通过以前的素数生成方法,生成由(lenN/2)位构成的素数,最后,实施单射函数“f”,生成由“lenN”位构成的素数。
(16)第1实施方式中的素数生成部116也可以是一个素数生成装置。此时,该素数生成装置也可将整数len与发行标识符信息IDI作为输入,输出len位的素数。
另外,如上所述,第1实施方式中的素数生成部116也可以使用素数生成的变形例1、2和3所示的素数信息生成部133A、素数信息生成部133B、和素数信息生成部133C之一来代替素数信息生成部133。
另外,第1实施方式中的素数生成部116在根据8位的素数生成512位的素数时,也可通过不埋入发行标识符信息“IDI”,仅实施一次单射函数“f”。此时,证书发行服务器200若接收证书发行委托信息和公钥,则不执行合法性的确认,发行公钥证书“Cert”。
(17)在素数中包含发行标识符信息的方法不限于实施方式。例如,也可生成、发行低位lenIDI位为IDI的素数。
(18)密钥发行服务器不限于3台。密钥发行服务器也可以是1台。此时,由各密钥发行服务器执行的素数的生成方法使用相同的方法。
(19)第1实施方式中的第2素数判定部144用于素数判定的条件不限于上述所示的(eq2)。
也可以是第2素数判定部144使用条件式“GCD(2^(2R)-1,N)=1”,判断从第1素数判定部143接受的数“N”是否满足该条件式,在判断为满足的情况下,将数“N”设为素数“N”。
(20)在第1实施方式中,密钥发行服务器100向终端装置300分配私钥与公钥证书,但不限于此。密钥发行服务器100也可向终端装置300仅分配私钥。此时,密钥发行服务器100对第三者公开公钥证书。或者,密钥发行服务器100对第三者公开公钥。
(21)在第1实施方式中,素数生成部116利用输出计数器136来管理输出到密钥判定部117的素数个数,但不限于此。
也可由密钥判定部117来计数接受的素数的个数。下面示出此时的一例。
素数生成部116若从标识符生成部115接受素数的生成开始指令,则生成素数“p1”,将生成的素数“p1”输出到密钥判定部117。素数生成部116若从密钥判定部117接受下一素数的请求,则生成素数“p2”,将生成的素数“p2”输出到密钥判定部117。另外,素数“p1”和“p2”的生成与第1实施方式一样,所以省略说明。
若使用计数器(初始值为“0”)从素数生成部116接收素数,则密钥判定部117将计数器加“1”,判断结果是否为1。在判断为是1的情况下,密钥判定部117向素数生成部116请求下一素数。在判断为不是1的情况下,密钥判定部117判断素数“p1”和“p2”是否一致。下面的动作与第1实施方式一样,所以省略说明。
(22)在上述第1和第2实施方式中,设发行标识符信息“IDI”的位长度为64位,但不限于此。只要是比(lenq-1)小的位长度即可。
另外,素数生成的变形例3中,设素数“qg”的位长度为64位,但不限于此。素数“qg”只要是位长度“lenqg”满足“(2×lenqg)<(lenq-1)”的素数即可。此时,发行标识符信息只要其位长度比素数“qg”的位长度小即可。
(23)就证书发行服务器200的发行公钥确认部214确认是否使用发行标识符信息“IDI”来生成公钥“PK=(n,e)”的方法而言,验证“n-(c11×c12)”能否被“IDI”除尽。这里,示出验证方法的具体例。
用图46所示的流程图来说明验证方法的具体动作流程。
发行公钥确认部214将数“n-(c11×c12)”设为“Q”(步骤S2500)。
之后,发行公钥确认部214算出“Q-IDI”,将算出结果再次设为“Q”(步骤S2505)。
发行公钥确认部214判断数“Q”是否比发行标识符信息“IDI”小(步骤S2510)。
在判断为小的情况下(步骤S2510为“是”),发行公钥确认部214判断数“Q”是否为“0”(步骤S2515)。
在判断为是“0”的情况下(步骤S2515为“是”),输出验证结果“0”(步骤S2520)。在判断为不是“0”的情况下(步骤S2515为“否”),输出验证结果“1”(步骤S2525)。
在判断为数“Q”为发行标识符信息“IDI”以上的情况下(步骤S2510为“否”),返回步骤S2505。
通过该动作,可确认是否使用发行标识符信息“IDI”来生成公钥“PK=(n,e)”。
发行公钥确认部214在图18所示的步骤S670执行上述验证处理之后,在输出的验证结果为“0”的情况下,判断为使用发行标识符信息“IDI”来生成公钥“PK”,在验证结果为“1”的情况下,判断为未使用发行标识符信息“IDI”来生成公钥“PK”。
(24)在素数候补生成部142生成的数“N”不满足“lenN=2×lenq”的情况下,设为“R1=2×R1”,下面示出其运算的具体例。
素数候补生成部142在生成的数“N”不满足“lenN=2×lenq”的情况下,将数“R1”的位串向左偏移1位。此时,对末尾的位设定“0”。由此,可有“R1=2×R1”。
(25)在第1和第2实施方式中,在算出数“N”时,设“N=2×(R+w)×q+1”,但不限于此。也可以是“N=2×R×q+c”。
这是因为若使用上述实施方式所示的“w”和“m”的条件数“w=(c-1)×m mod IDI”、和“(2×q)×m=1 mod IDI”,则“N=2×(R+w)×q+1”可如下变形。
2×(R+w)×q+1=2×R×q+2×w×q+1=2×R×q+2×(c-1)×m×q+1=2×R×q+2×(c-1)×(1/2q)×q+1=2×R×q+(c-1)+1=2×R×q+c由此,可知也可用“N=2×R×q+c”来代替“N=2×(R+w)×q+1”。
另外,“c”为验证值,在输出计数器的值为“1”的情况下,验证值成为“c11”,在输出计数器的值为“2”以上的情况下,验证值成为“c12”。例如,第1实施方式的证书发行服务器200通过判断“N-c11×c12”是否被“IDI”除尽,可确认生成的公钥的合法性。
(26)在第1实施方式的密钥发行系统1中,也可加入验证密钥发行服务器生成的素数合法性的素数验证装置。
下面说明此时的素数验证装置和密钥发行服务器100的动作。
素数验证装置与证书发行服务器一样,预先存储验证值表格。
密钥发行服务器100当素数生成部116生成素数“p1”时,将生成的素数“p1”、发行标识符信息“IDI”和服务器标识符输出到素数验证装置。
素数验证装置若从密钥发行服务器100接收素数“p1”、发行标识符信息“IDI”和服务器标识符,则读出对应于接受的服务器标识符的第1验证值“c11”,使用读出的第1验证值“c11”,算出“p1-c11”,判断算出结果是否被“IDI”除尽。在判断为除尽的情况下,素数验证装置将允许利用素数“p1”的信息输出到密钥发行服务器100。在判断为未除尽的情况下,将禁止利用素数“p1”的信息输出到密钥发行服务器100。
密钥发行服务器100的素数生成部116若从素数验证装置接受禁止利用素数“p1”的信息,则再次生成素数“p1”,重复上述动作。
密钥发行服务器100的素数生成部116若从素数验证装置接受允许利用素数“p1”的信息,则将生成的素数“p1”输出到密钥判定部117,生成素数“p2”。素数生成部116将生成的素数“p2”、发行标识符信息“IDI”和服务器标识符输出到素数验证装置。
素数验证装置若从密钥发行服务器100接受素数“p2”、发行标识符信息“IDI”和服务器标识符,则读出对应于接收到的服务器标识符的第2验证值“c12”,使用读出的第1验证值“c12”,算出“p1-c12”,判断算出结果是否被“IDI”除尽。在判断为除尽的情况下,素数验证装置将允许利用素数“p2”的信息输出到密钥发行服务器100。在判断为未除尽的情况下,将禁止利用素数“p2”的信息输出到密钥发行服务器100。
密钥发行服务器100的素数生成部116若从素数验证装置接受禁止利用素数“p2”的信息,则再次生成素数“p2”,重复上述动作。
密钥发行服务器100的素数生成部116若从素数验证装置接受允许利用素数“p2”的信息,则将生成的素数“p2”与判定开始指令输出到密钥判定部117。
密钥发行服务器100的以后的动作与第1实施方式一样,所以省略说明。
另外,素数生成部116在从密钥判定部117接受再生成指令的情况下,再次生成素数“p2”,重复上述动作。
(27)在第1和第2实施方式中,向每个密钥发行服务器分配第1和第2验证值,但不限于此。
也可向每个终端装置分配第1和第2验证值,由密钥发行服务器和证书发行服务器来管理由终端标识符和分配给每个终端装置的第1和第2验证值构成的表格。
密钥发行服务器使用与请求发行密钥的终端装置对应的之第1和第2验证值,生成素数“p1”和“p2”,使用生成的“p1”和“p2”,生成公钥和私钥。密钥发行服务器在请求公钥证书时,将公钥、发行标识符信息、服务器标识符和终端标识符发送到证书发行服务器。
证书发行服务器读出与接受的终端标识符对应的第1和第2验证值,使用读出的验证值、接受的公钥和发行标识符信息,验证公钥的合法性。
通过向每个终端装置分配两个验证值,可在保证公钥的唯一性的同时验证分配给每个终端装置的公钥的合法性。
另外,也可使用上述所示的素数验证装置,对生成的每个素数验证是否是合法的素数。另外,设素数验证装置具有由终端标识符和分配给每个终端装置的第1和第2验证值构成的表格。
(28)在第1和第2实施方式中,终端装置与密钥发行服务器分别为单独的装置,但也可由终端装置来执行密钥发行。
此时,终端装置例如除第1方式所示的结构外,还具有密钥发行服务器100的结构中说明的标识符保存部、标识符生成部、素数生成部、密钥判定部、密钥生成部和公钥保存部。
终端装置使用标识符生成部,根据终端标识符与数“1”,生成发行标识符信息“IDI=TID||1”,将生成的发行标识符信息存储在标识符保存部中。
终端装置使用素数生成部、密钥判定部和密钥生成部,生成公钥和私钥,将生成的公钥存储在公钥保存部中,将生成的私钥存储在私钥保存部中。
并且,终端装置将发行标识符信息、公钥、终端标识符和证书发行委托信息发送给证书发行服务器,并从证书发行服务器接收公钥证书。
另外,终端装置也可以是IC卡。此时,IC卡生成和存储密钥。另外,IC卡也可生成和存储发行标识符信息。此时,IC卡与证书发行服务器的通信通过在与证书发行服务器网络连接的装置中安装IC卡来进行。
(29)作为终端标识符的一例为序列号,但不限于此。
终端标识符也可以是表示用户的生物体科学特征的生物统计学信息。生物统计学信息例如是表示用户指纹特征的指纹信息、表示用户声纹特征的声纹信息、表示用户的虹彩特征的虹彩信息、表示用户的脸轮廓特征的轮廓信息、表示用户的DNA特征的DNA信息、或这些信息的组合。
另外,也可以终端标识符的一部分是生物统计学信息。
另外,终端标识符也可由管理终端装置的管理服务器发行,利用基于网络的通信,从管理服务器提供。或者,也可由SD卡等记录介质来提供由管理服务器发行的终端标识符。
(30)本发明也可以是上述所示的方法。或者,将这些方法作为由计算机实现的计算机程序,或由所述计算机程序构成的数字信号。
另外,本发明也可将所述计算机程序或所述数字信号记录在计算机可读取的记录介质、例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半导体存储器等。另外,也可以是记录在这些记录介质中的所述计算机程序或所述数字信号。
另外,本发明也可经由以电气通信线路、无线或有线通信线路、因特网为代表的网络等来传输所述计算机程序或所述数字信号。
另外,本发明也可以是具备微处理器与存储器的计算机系统,所述存储器存储上述计算机程序,所述微处理器根据所述计算机程序来动作。
另外,也可通过将所述程序或所述数字信号记录在所述记录介质中来传播,或通过经由所述网络等传播所述程序或所述数字信号,由独立的其它计算机系统来实现。
(31)也可使上述实施方式和上述变形例分别组合。
产业上的可利用性构成发明的各服务器和各终端装置可在电器设备制造产业中经营、或继续及反复地制造、出售。另外,构成本发明的各服务器和各终端装置可在使用因特网的服务产业中经营、或继续及反复地使用。
权利要求
1.一种素数计算装置,算出比已知素数q大的素数候补N,进行素数判定,其特征在于,具备素数存储单元,存储已知的素数q;管理信息存储单元,存储素数利用范围中的唯一管理信息;搅乱信息生成单元,从所述管理信息存储单元中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补计算单元,从所述素数存储单元中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定单元,判定算出的素数候补N是否为素数;和输出单元,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出。
2.根据权利要求1所述的素数计算装置,其特征在于,所述搅乱信息生成单元包含读出部,从所述管理信息存储单元中读出所述管理信息;随机数算出部,算出随机数r;结合部,结合读出的所述管理信息和生成的随机数r;和运算部,根据所述管理信息和随机数r的结合体,算出搅乱信息R。
3.根据权利要求2所述的素数计算装置,其特征在于,所述运算部对所述结合体实施单射函数,生成搅乱信息R。
4.根据权利要求3所述的素数计算装置,其特征在于,所述单射函数是异或,所述运算部预先存储规定的密钥信息,对所述密钥信息和所述结合体实施异或,生成搅乱信息R。
5.根据权利要求3所述的素数计算装置,其特征在于,所述素数计算装置算出具有素数q的2倍位长度的素数候补N,所述随机数算出部算出位长度为从素数q的位长度中减去所述管理信息的位长度和1的所述随机数r。
6.根据权利要求5所述的素数计算装置,其特征在于,所述素数判定单元包含第1判定部,对所述素数候补N判定是否满足2N-1=1 mod N;和第2判定部,在由所述第1判定部判定为满足的情况下,再对素数候补N和搅乱信息R判定是否满足22R≠1 mod N,在判定为满足的情况下,确定素数候补N为素数。
7.根据权利要求5所述的素数计算装置,其特征在于,所述素数判定单元包含第1判定部,对所述素数候补N判定是否满足2N-1=1 mod N;和第2判定部,在由所述第1判定部判定为满足的情况下,再对素数候补N和搅乱信息R判定是否满足GCD(22R-1,N)=1,在判定为满足的情况下,确定素数候补N为素数。
8.根据权利要求1所述的素数计算装置,其特征在于,所述素数计算装置还包含重复控制单元,对所述搅乱信息生成单元、所述候补计算单元和所述素数判定单元进行控制,以重复搅乱信息R的生成、素数候补N的计算和所述判定,直到由所述素数判定单元判定为是素数为止。
9.根据权利要求8所述的素数计算装置,其特征在于,所述素数计算装置还包含次级随机数计算单元,算出随机数R’;次级候补计算单元,使用输出的所述素数N和生成的所述随机数R’,通过N’=2×随机数R’×素数N+1,算出素数候补N’;次级素数判定单元,判定算出的素数候补N’是否为素数;次级输出单元,在判定为是素数的情况下,将算出的素数候补N’作为素数进行输出;和次级重复控制单元,对所述次级随机数计算单元、所述次级候补计算单元和所述次级素数判定单元进行控制,以重复随机数R’的生成、素数候补N’的计算和所述判定,直到由所述次级素数判定单元判定为是素数为止。
10.根据权利要求8所述的素数计算装置,其特征在于,所述素数计算装置还包含次级信息存储单元,存储规定的验证值;次级随机数生成单元,生成随机数r’;和次级候补计算单元,对所述管理信息乘以生成的所述随机数r’,算出搅乱信息R’,并通过N’=2×搅乱信息R’×素数N+验证值,算出素数候补N’,所述素数判定单元还判定算出的素数候补N’是否为素数,所述输出单元还在判定为素数候补N’为素数的情况下,将算出的素数候补N’作为素数进行输出。
11.根据权利要求8所述的素数计算装置,其特征在于,所述素数计算装置是生成RSA加密的公钥和私钥的密钥生成装置,所述素数计算装置还包含公钥生成单元,使用算出的素数N,生成RSA加密的公钥;和私钥生成单元,使用生成的公钥,生成RSA加密的私钥。
12.根据权利要求11所述的素数计算装置,其特征在于,所述公钥生成单元对所述重复控制单元指示重新得到素数N’,并使用所述素数N和重新得到的素数N’,通过n=素数N×素数N’,算出数n,生成随机数e,算出的数n和生成的随机数e的组为所述公钥,所述私钥生成单元算出满足e×d=1 mod L的d,L是素数N-1和素数N’-1的最小公倍数,算出的d是所述私钥。
13.根据权利要求11所述的素数计算装置,其特征在于,所述素数计算装置是密钥发行服务器装置,对终端装置生成并发行RSA的私钥和公钥,所述素数计算装置还包含密钥输出单元,对终端装置输出生成的所述私钥;和公开单元,公开生成的所述公钥。
14.根据权利要求13所述的素数计算装置,其特征在于,所述素数计算装置还包含标识符取得单元,取得唯一识别所述终端装置的终端装置标识符;管理信息生成单元,生成包含取得的终端装置标识符的所述管理信息;和写入单元,将生成的所述管理信息写入所述管理信息存储单元中。
15.根据权利要求14所述的素数计算装置,其特征在于,所述素数计算装置还包含服务器标识符存储单元,预先存储唯一识别作为密钥发行服务器装置的该素数计算装置的服务器标识符,所述管理信息生成单元还从所述服务器标识符存储单元中读出所述服务器标识符,并生成还包含读出的服务器标识符的所述管理信息。
16.一种素数计算装置,算出比已知素数大的素数,其特征在于,具备素数计算单元,算出具有已知输入素数的2倍位长度的输出素数;素数存储单元,存储已知的素数初始值;和重复控制单元,对所述素数计算单元进行控制,以重复多次计算,所述重复控制单元在所述重复中的初次计算中,将存储在所述素数存储单元中的素数初始值作为所述输入素数,提供给所述素数计算单元,在所述重复的初次计算以外的其它计算中,将前一次计算中的输出素数作为该其它计算中的所述输入素数,提供给所述素数计算单元,在所述多次算出的任一计算中,所述素数计算单元包含管理信息保存部,存储素数利用范围中的唯一管理信息;搅乱信息生成部,从所述管理信息保存部中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出部,接收所述输入素数q,使用接受的所述输入素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定部,判定算出的素数候补N是否为素数;输出部,在判定为是素数的情况下,将算出的素数候补N作为输出素数进行输出;和重复控制部,对所述搅乱信息生成部、所述候补算出部和所述素数判定部进行控制,以重复搅乱信息R的生成、素数候补N的计算与所述判定,直到由所述素数判定部判定为是素数为止。
17.根据权利要求16所述的素数计算装置,其特征在于,在所述多次计算中的最终次计算中,所述素数计算单元包含信息保存部,存储规定的验证值;随机数生成部,生成随机数r’;候补算出部,对所述管理信息乘以生成的所述随机数r’,算出搅乱信息R’,并通过N’=2×搅乱信息R’×前一次算出的输出素数+验证值,算出素数候补N’;素数判定部,判定算出的素数候补N’是否为素数;输出部,在判定为素数候补N’为素数的情况下,将算出的素数候补N’作为素数进行输出;和重复控制部,对所述随机数生成部、所述候补算出部和所述素数判定部进行控制,以重复随机数r’的生成、素数候补N’的计算与所述判定,直到由所述素数判定部判定为是素数为止。
18.一种密钥发行系统,包括对终端装置生成并发行RSA的私钥和公钥的密钥发行服务器装置、和所述终端装置,其特征在于,密钥发行服务器装置具备素数计算单元,算出比已知素数q大的素数N;公钥生成单元,使用算出的素数N,生成RSA加密的公钥;私钥生成单元,使用生成的公钥,生成RSA加密的私钥;密钥输出单元,对终端装置输出生成的所述私钥;和公开单元,公开生成的所述公钥,所述素数计算单元包含素数保存部,存储已知的素数q;管理信息保存部,存储唯一的管理信息;搅乱信息生成部,从所述管理信息保存部中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出部,从所述素数保存部中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定部,判定算出的素数候补N是否为素数;输出部,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出;和重复控制部,对所述搅乱信息生成部、所述候补算出部和所述素数判定部进行控制,以重复搅乱信息R的生成、素数候补N的计算和所述判定,直到由所述素数判定部判定为是素数为止,所述终端装置具备接收单元,接收所述私钥;和密钥存储单元,存储接收到的私钥。
19.根据权利要求18所述的密钥发行系统,其特征在于,所述密钥发行系统还包含证书发行服务器装置,所述密钥输出单元向所述证书发行服务器装置输出所述公钥,所述证书发行服务器装置具备存储单元,存储该证书发行服务器装置的私钥;取得单元,取得所述公钥;证书生成单元,使用所述证书发行服务器装置的私钥,对包含所述公钥的公钥信息实施数字签名,生成签名数据,并生成至少包含所述公钥和生成的所述签名数据的公钥证书;和输出单元,向密钥发行服务器装置输出生成的公钥证书。
20.一种素数计算装置中使用的素数算出方法,该素数计算装置算出比已知素数q大的素数候补N,来进行素数判定,其特征在于,所述素数计算装置具备素数存储单元,存储已知的素数q;和管理信息存储单元,存储素数利用范围中的唯一管理信息,所述素数算出方法包含随机数生成步骤,从所述管理信息存储单元中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出步骤,从所述素数存储单元中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定步骤,判定算出的素数候补N是否为素数;和输出步骤,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出。
21.一种素数计算装置中使用的素数算出用计算机程序,素数计算装置算出比已知素数q大的素数候补N,来进行素数判定,其特征在于,所述素数计算装置具备素数存储单元,存储已知的素数q;和管理信息存储单元,存储素数利用范围中的唯一管理信息,所述素数算出用计算机程序包含随机数生成步骤,从所述管理信息存储单元中读出所述管理信息,生成依赖于读出的所述管理信息的搅乱信息R;候补算出步骤,从所述素数存储单元中读出所述素数q,使用读出的所述素数q和生成的所述搅乱信息R,通过N=2×搅乱信息R×素数q+1,算出素数候补N;素数判定步骤,判定算出的素数候补N是否为素数;和输出步骤,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出。
22.根据权利要求21所述的计算机程序,其特征在于,所述计算机程序记录在计算机可读取的记录介质中。
23.根据权利要求21所述的计算机程序,其特征在于,搭载于载波上来发送所述计算机程序。
全文摘要
提供一种素数计算装置,在算出素数时,通过简单的管理,在避免重复的同时算出素数。素数计算装置存储已知的素数q、和素数利用范围中的唯一管理信息。素数计算装置读出管理信息,生成依赖于读出的管理信息的搅乱信息R,并读出素数q,使用读出的素数q和生成的搅乱信息R,通过公式N=2×搅乱信息R×素数q+1,算出素数候补N,并判定算出的素数候补N是否为素数,在判定为是素数的情况下,将算出的素数候补N作为素数进行输出。由此,素数计算装置可根据唯一的管理信息,在避免重复的同时算出素数候补。
文档编号G09C1/00GK1898898SQ20048003893
公开日2007年1月17日 申请日期2004年12月21日 优先权日2003年12月26日
发明者布田裕一, 大森基司 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1