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

文档序号:2391625阅读:424来源:国知局
专利名称:素数计算装置及方法、以及密钥发行系统的制作方法
技术领域
本发明涉及以素因数分解的困难度为安全性的根据来保持信息的安全性的技术。
背景技术
近年来,基于计算机技术及通信技术的数据通信正广泛地普及,在该数据通信中,使用秘密通信方式及数字签名方式。这里,所谓的秘密通信方式,是使通信内容不会泄漏到特定的通信对方以外而进行通信的方式。此外,所谓的数字签名方式,是对通信对方表示通信内容的合法性、或证明发送者的身份的通信方式。
1、公钥密码系统在这些秘密通信方式或数字签名方式中,采用称作公钥密码系统的密码系统。在采用公钥密码系统的秘密通信中,加密密钥与解密密钥不同,将解密密钥设为秘密的,而将加密密钥公开。将设为秘密的解密密钥称作私钥,将公开的加密密钥称作公钥。在通信对方为多个时,在共用密钥加密中需要在通信对方间拥有密钥,而在公钥加密中,由于通信对方仅拥有一个固有的密钥就能够通信,所以即使通信对方增加,密钥的数量也比共用密钥加密少。这样,公钥加密适于与多个通信对方进行通信,是不可或缺的基础技术。
在作为公钥密码系统的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,表示x被y除的余数。
(2)密文的生成利用作为公钥的整数e及整数n,对明文m实施加密运算,计算密文c。
c=m^e mod n另外,在该说明书中,运算符^表示幂乘。例如,A^x在x>0时表示将A乘以x次。
(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法的确定性素数生成方法。这里,关于Maurer法,在非专利文献3的152~153页中已详细地说明。
在上述确定性素数生成方法中,通过重复如下所示的步骤生成素数。预先给出位长度(size)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”,GRM 138,Springer-Verlag,1993在使用多台密钥发行服务器的密钥发行系统中,在第1密钥发行服务器和第2密钥发行服务器中,不相互检查分别发行的RSA密钥。这是因为,如果将发行的RSA密钥公开给其他密钥发行服务器,则在安全性方面有问题。因此,偶然会发生第1及第2密钥发行服务器为第1用户及第2用户生成相同的公钥和相同的私钥的情况。
因此,在利用密码系统时,有不能确保安全性的问题。
例如,如果第3用户利用用于第1用户的上述公钥对第1用户生成密文并发送,则第1用户当然能够利用自身的私钥将密文解密,但第2用户也能够利用自身的私钥将上述密文解密。
为了解决这种问题,由于RSA的公钥是由2个不同的素数的积计算的,所以如果能够生成可以确定是由哪个装置生成的素数,则即使其他密钥发行服务器误生成相同的素数,也能够将该素数排除。

发明内容
所以,本发明的目的是提供一种计算能够确认生成源的素数的素数计算装置、进行上述确认的素数验证装置、密钥发行系统、素数计算方法、素数验证方法及计算机程序。
为了达到上述目的,本发明提供一种素数计算装置,计算大于已知的素数q的素数候补N,来进行素数判断,其特征在于,具备信息存储单元,存储有已知的素数q、与要生成的素数对应的奇数的管理信息及规定的验证值;随机数生成单元,生成随机数;候补计算单元,读出素数q、上述管理信息及上述验证值,将上述随机数乘以上述管理信息而计算出乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,来计算素数候补N;素数判断单元,判断所计算出的素数候补N是否是素数;输出单元,在判断为素数的情况下,将计算出的素数候补N作为素数输出。
发明效果根据上述结构,素数计算装置将随机数乘以与要生成的素数对应的管理信息来计算出乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,来计算素数候补N,所以具有如下效果,在计算出的素数候补N是素数的情况下,通过判断素数N-验证值是否可被上述管理信息整除,能够确认素数的生成源。
另外,所谓的素数的生成源,当然是指表示计算出该素数的素数计算装置的概念,但也是表示与该素数计算装置关联的其他装置或组的概念。
这里,也可以是,存储在上述信息存储单元中的上述验证值为1;上述候补计算单元通过N=2×乘法运算值R×素数q+1,来计算素数候补N。
根据该结构,由于通过N=2×乘法运算值R×素数q+1,来计算素数候补N,所以具有通过判断素数N-1能否被上述管理信息整除从而能够确认素数的生成源的效果。
这里,也可以是,上述素数判断单元具有第1判断部,判断上述素数候补N是否满足2N-1=1 mod N;第2判断部,在通过上述第1判断部判断为满足的情况下,还判断素数候补N及乘法运算值R是否满足22R≠1 mod N,在判断为满足时,判定素数候补N是素数,或者判断是否满足GCD(22R-1,N)=1,在判断为满足时,判定素数候补N是素数。
根据该结构,能够可靠地进行所生成的素数候补的素数判断。
这里,也可以构成为,上述信息存储单元还存储有已知的素数g及唯一的发行标识符;上述素数计算装置还具有素数生成单元,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,来生成素数gp,并将所生成的素数gp输出;写入单元,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中。
此外,也可以是,上述素数生成单元生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为素数的情况下将素数候补作为上述素数gp输出;变量c是0或正整数。
此外,也可以是,上述素数生成单元在判断所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上值1后的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为素数的情况下将素数候补作为上述素数gp输出。
根据该结构,能够生成唯一的管理信息。
这里,也可以构成为,上述素数计算装置还具有重复控制单元,该重复控制单元对上述随机数生成单元、上述候补计算单元及上述素数判断单元进行控制,使得重复随机数的生成、素数候补N的计算、和上述判断,直到由上述素数判断单元判断为是素数。
根据该结构,能够可靠地计算素数。
这里,也可以构成为,上述素数计算装置还具有前段素数存储单元,存储有已知的素数p;前段随机数计算单元,计算随机数R’;前段候补计算单元,利用上述素数p及生成的上述随机数R’,通过N’=2×随机数R’×素数p+1,计算素数候补N’;前段素数判断单元,判断所计算出的素数候补N’是否是素数;前段写入单元,在判断为是素数的情况下,将计算出的素数候补N’作为上述素数q,写入到上述信息存储单元中;前段重复控制单元,对上述前段随机数计算单元、上述前段候补计算单元以及上述前段素数判断单元进行控制,使得重复随机数R’的生成、素数候补N’的计算、和上述判断,直到由上述前段素数判断单元判断为是素数。
根据该结构,能够生成已知的素数的2倍的素数N’,还生成该素数N’的2倍的素数N。
这里,也可以构成为,上述素数计算装置是生成RSA加密的公钥及私钥的密钥生成装置;上述素数计算装置还具有公钥生成单元,利用计算出的素数N,生成RSA加密的公钥;私钥生成单元,利用所生成的公钥,生成RSA加密的私钥。
根据该结构,能够生成使用了能够确认生成源的素数N的RSA的公钥及私钥。
这里,也可以是,上述公钥生成单元对上述重复控制单元指示新获得素数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’,计算公钥n,所以通过判断(公钥n-(验证值×验证值))是否能被上述管理信息整除,能够生成能够确认公钥的生成源那样的上述公钥。
另外,所谓的公钥的生成源当然是表示计算出该公钥的密钥生成装置的概念,但也是表示与该密钥生成装置关联的其他装置及组的概念。例如,也是表示分配所生成的私钥的终端装置的概念。
这里,也可以是,上述信息存储单元还存储有与上述验证值不同的其他验证值;上述公钥生成单元对上述重复控制单元指示新获得素数N’,上述候补计算单元通过N’=2×乘法运算值R×素数q+上述其他验证值,计算素数候补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=素数N×素数N’来计算公钥n,所以具有通过判断(公钥n-(验证值×其他的验证值))是否能被上述管理信息整除,能够生成能够确认公钥的生成源那样的上述公钥。
这里,也可以构成为,上述素数计算单元是对终端装置生成并发行RSA的私钥及公钥的密钥发行服务器装置;上述素数计算装置还具有密钥输出单元,将生成的上述私钥对终端装置输出;公开单元,将生成的上述公钥公开。
根据该结构,由于输出了为终端装置生成的私钥,所以终端装置能够取得并利用私钥。
这里,也可以构成为,上述素数计算装置还具有标识符取得单元,取得唯一地识别上述终端装置的终端装置标识符;管理信息生成单元,生成包含有所取得的终端装置标识符的上述管理信息;写入单元,将生成的上述管理信息写入到上述标识符存储单元中。
管理信息由于包含有唯一地识别终端装置的终端装置标识符,所以具有能够在可确认上述终端装置作为公钥的生成源的情况下生成上述公钥的效果。
这里,也可以构成为,上述素数计算装置还具有服务器标识符存储单元,该服务器标识符存储单元预先存储有对作为密钥发行服务器装置的该素数计算装置唯一地进行识别的服务器标识符;上述管理信息生成单元还从上述服务器标识符存储单元读出上述服务器标识符,生成还包含有所读出的服务器标识符的上述管理信息。
管理信息由于包含有唯一地识别密钥发行服务器装置的服务器装置标识符,所以具有能够在可确认上述密钥发行服务器装置作为公钥的生成源的情况下生成上述公钥的效果。
此外,本发明提供一种素数验证装置,验证由上述素数计算装置输出的素数N,其特征在于,具备信息存储单元,存储有上述管理信息及上述验证值;减法运算单元,从素数N减去上述验证值而得到素数减法运算值;判断单元,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可整除的情况下,许可使用上述素数N,在判断为不能整除的情况下,禁止使用上述素数N。
根据该结构,具有通过判断素数N-验证值是否能被管理信息整除而能够确认素数的生成源的效果。
这里,也可以是,上述素数计算装置存储有为1的上述验证值,通过N=2×乘法运算值R×素数q+1,计算素数候补N;存储在上述信息存储单元中的上述验证值为1;上述减法运算单元从素数N减1而得到减法运算值。
根据该结构,具有通过判断素数N-1是否能被管理信息整除而能够确认素数的生成源的效果。
这里,也可以构成为,上述素数计算装置还存储有已知的素数g及唯一的发行标识符,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,来生成素数gp,并输出所生成的素数gp,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中;上述信息存储单元还存储有上述素数g及上述发行标识符;上述素数验证装置还具有素数生成单元,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,来生成素数gp,并输出所生成的素数gp;写入单元,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中。
也可以构成为,上述素数计算装置生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,并判断所计算出的素数候补是否是素数,在判断为素数的情况下,将素数候补作为上述素数gp输出,变量c是0或正整数;上述素数生成单元生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,并判断所计算出的素数候补是否是素数,在判断为素数的情况下,将素数候补作为上述素数gp输出。
也可以构成为,上述素数计算装置在判断所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上了值1的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下,将素数候补作为上述素数gp输出;上述素数生成单元在判断为所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上了值1的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下,将素数候补作为上述素数gp输出。
根据该结构,能够生成唯一的管理信息。
这里,也可以构成为,上述素数计算装置是生成RSA加密的公钥及私钥的密钥生成装置,还利用计算出的素数N生成RSA加密的公钥,利用所生成的公钥生成RSA加密的私钥;上述素数验证装置是验证上述公钥的密钥验证装置;上述素数验证装置还具有取得单元,取得上述公钥;验证单元,验证所取得的上述公钥的合法性。
根据该结构,能够确认RSA的公钥的生成源。
这里,也可以构成为,上述素数计算单元新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算出数n,生成随机数e,计算出的数n与生成的随机数e的组是上述公钥,计算满足e×d=1 mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥;上述取得单元取得数n与随机数e的组来作为上述公钥;上述验证单元具有减法运算部,从所取得的数n减去上述验证值的平方值,而得到公钥减法运算值;判断部,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可被整除的情况下,许可输出上述公钥,在判断为不能整除的情况下,禁止输出上述公钥N。
根据该结构,由于通过n=素数N×素数N’计算公钥n,所以具有通过判断(公钥n-(验证值×验证值))是否能被上述管理信息整除而能够确认公钥的生成源的效果。
这里,也可以构成为,上述素数计算单元还存储有与上述验证值不同的其他的验证值,通过N=2×乘法运算值R×素数q+上述其他的验证值,计算素数候补N’,来新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算出数n,生成随机数e,计算出的数n与生成的随机数e的组是上述公钥,计算满足e×d=1 mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥;上述信息存储单元存储有上述其他的验证值;上述取得单元取得数n与随机数e的组来作为上述公钥;上述验证单元具有减法运算部,将上述验证值与上述其他的验证值相乘来得到乘法运算值,从所取得的数n减去上述乘法运算值,来得到公钥减法运算值;判断部,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可被整除的情况下,许可输出上述公钥,在判断为不能整除的情况下,禁止输出上述公钥N。
根据上述结构,由于利用验证值生成素数N、利用其他的验证值生成素数N’、通过n=素数N×素数N’计算公钥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是表示密钥发行服务器1100的结构的框图。
图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取得了终端装置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具有用来存储在私钥生成时使用的2个素数的素数保存区域、和用来存储由密钥生成部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如果经由接收部120从终端装置300获取了表示密钥的发行请求的密钥发行委托信息、和终端装置300的终端标识符“TID”,则将所获取的终端标识符“TID”写入到终端信息存储区域131中。控制部114将发行标识符信息的生成命令、和所获取的终端标识符“TID”输出给标识符生成部115。
控制部114如果经由接收部120从证书发行服务器200获取了公钥证书“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所示,具有重复控制部132及素数信息生成部133。
素数生成部116从8位的素数生成512位的素数,将生成的512位的素数输出给密钥判断部117。
<重复控制部132>
重复控制部132具有预先存储有由8位构成的素数和该素数的位长度(即“8”)的初始值存储区域、和暂时存储从素数信息生成部133获取的素数的暂时存储区域。
重复控制部132如图3所示,具有对素数信息生成部133的动作的重复次数进行计数的重复计数器135、和对向密钥判断部117输出的素数的个数即生成的512位的素数的输出次数进行计数的输出计数器136。另外,重复计数器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”的情况下,重复控制部132读出由“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在写入了获取的信息后,将指示随机数的生成的第1生成指示输出给随机数生成部141。
信息控制部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,将所生成的数“N”存储在生成信息存储区域中。
在判断为不是“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”是通过计算“w=(c-1)×m mod IDI”来求出的。“m”是满足“(2×q)×m=1 mod IDI”的数。如上所述,由于发行标识符信息“IDI”是奇数,即“GCD(IDI,2)=1”、“IDI<q”,所以“m”是可计算的。关于计算方法在非专利文献5中有详细的说明。另外,以后将使用第1验证值“c11”时的“w”记作“w1”、将使用第2验证值“c12”时的“w”记作“w2”。
素数候补生成部142从信息控制部140的信息存储区域读出素数“q”的位长度“lenq”,判断所生成的数“N”的位长度是否是“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获取的2个素数“p1”及“p2”的素数存储区域。
密钥判断部117如果从素数生成部116获取了素数“p1”及“p2”,则将所获取的素数“p1”及“p2”分别向素数存储区域存储。
密钥判断部117如果从素数生成部116获取了判断开始命令,则判断存储在素数存储区域中的2个素数“p1”和“p2”是否一致。在判断为一致的情况下,将存储的素数“p2”删除,将再生成命令输出给重复控制部132。
在判断为不一致的情况下,将存储的2个素数“p1”及“p2”写入到私钥保存部111的素数保存区域中,将密钥生成开始命令输出给密钥生成部118。
(9)密钥生成部118密钥生成部118如果从密钥判断部117获取了密钥生成命令,则读出存储在私钥保存部111的素数保存区域中的2个素数“p1”及“p2”,计算读出的素数“p1”和“p2”的积“n=p1×p2”。
密钥生成部118生成随机数“e”,将计算出的“n”和生成的随机数“e”构成的组“PK=(n,e)”作为公钥生成,将生成的公钥“PK”写入到公钥保存部112中。这里,随机数“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中读出发行标识符信息“IDI”、从公钥保存部112读出公钥“PK”、从控制部114的服务器标识符存储区域130中读出服务器标识符。信息取得部119将读出的发行标识符信息“IDI”、公钥“PK”、服务器标识符、和委托公钥证书的发行的证书发行委托信息经由发送部121发送给证书发行服务器200。
信息取得部119如果从控制部114获取了分配开始命令,则分别读出存储在私钥保存部111中的私钥“SK”、存储在证书保存部113中的公钥证书“Cert”、和存储在控制部114的终端信息存储区域中的终端标识符,将读出的私钥“SK”、及公钥证书“Cert”经由发送部121发送给与读出的终端标识符对应的终端装置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从密钥发行服务器100经由接收部217获取发行标识符信息“IDI”、公钥“PK”、服务器标识符、和证书发行委托信息。
发行公钥确认部214将所获取的服务器标识符写入到服务器信息存储区域220中。
发行公钥确认部214利用所获取的服务器标识符,读出对应的第1验证值“c11”及第2验证值“c12”。
发行公钥确认部214利用所获取的公钥“PK”和发行标识符信息“IDI”,确认公钥“PK”是否是用发行标识符信息“IDI”生成的。
这里,对于确认方法进行说明。公钥“PK”如上述那样是“PK=(n,e)”。发行公钥确认部214计算“n-(c11×c12)”,验证计算结果是否能被“IDI”整除。由此,能够确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
发行公钥确认部214在判断“n-(c11×c12)”能被“IDI”整除的情况下,判断公钥“PK”是使用发行标识符信息“IDI”生成的,在判断“n-(c11×c12)”不能被“IDI”整除的情况下,判断公钥“PK”不是使用发行标识符信息“IDI”生成的。
发行公钥确认部214在判断公钥“PK”是使用发行标识符信息“IDI”生成的情况下,分别将所获取的公钥“PK”向发行公钥保存部211中写入,将发行标识符信息向发行标识符信息保存部212中写入。发行公钥确认部214将公钥证书的生成开始命令输出给公钥证书生成部215。
发行公钥确认部214在判断公钥“PK”不是使用发行标识符信息“IDI”生成的情况下,结束处理。
(6)公钥证书生成部215公钥证书生成部215如果从发行公钥确认部214获取了公钥证书的生成开始命令,则分别从私钥保存部210中读出私钥“SKCA”、从发行公钥保存部211中读出公钥“PK”、从发行标识符信息保存部212中读出发行标识符信息“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读出公钥证书“Cert”,从服务器信息存储区域220读出服务器标识符,将读出的公钥证书“Cert”经由发送部218发送给与读出的服务器标识符对应的密钥发行服务器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将密钥发行委托信息和读出的终端标识符“TID”经由基带信号处理部315及无线部314发送给密钥发行服务器100。
控制部312如果经由无线部314及基带信号处理部315从密钥发行服务器100获取了私钥“SK”及公钥证书“Cert”,则分别将获取的私钥“SK”写入到私钥保存部310中,将公钥证书“Cert”写入到公钥证书保存部311中。
控制部312如果经由无线部314及基带信号处理部315从终端装置400获取了加密后的电子邮件,则将获取的加密后的电子邮件写入到邮件存储区域中。
控制部312如果从受理部313获取了加密后的电子邮件的显示命令,则分别从私钥保存部310读出私钥“SK”、从邮件存储区域读出加密邮件,利用所读出的私钥“SK”,将加密后的电子邮件解密,将解密后的电子邮件(以下单称作“电子邮件”)输出给显示部318。
(4)受理部313受理部313如果通过用户的操作而受理了密钥发行请求的指示,则将所受理的指示输出给控制部312。
受理部313如果通过用户的操作而受理了加密后的电子邮件的显示的指示,则将显示命令输出给控制部312。
(5)无线部314无线部314具备天线319,进行无线信号的收发。
(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首先通过密钥委托处理,将密钥发行委托信息及终端标识符“TID”发送给密钥发行服务器100(步骤S5)。
密钥发行服务器100如果从终端装置300接收到密钥发行委托信息及终端标识符“TID”,则通过密钥发行处理,生成发行标识符信息“IDI”、私钥“SK=(p1,p2,d)”及公钥“PK=(n,e)”。密钥发行服务器100将所生成的发行标识符信息“IDI”及公钥“PK”、证书发行委托信息、和服务器标识符“SID”发送给证书发行服务器200(步骤S10)。
证书发行服务器200如果接收到发行标识符信息“IDI”及公钥“PK”、证书发行委托信息、和服务器标识符“SID”,则通过证书发行处理,判断包含在与公钥“PK”对应的私钥“SK”中的素数“p1”、“p2”是否是利用发行标识符信息“IDI”生成的,在判断结果为肯定的情况下,生成与公钥“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将密钥发行委托信息和取得的终端标识符“TID”发送给密钥发行服务器100(步骤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判断存储在素数存储区域中的2个素数“p1”和“p2”是否一致(步骤S305)。在判断为一致的情况下,将所存储的素数“p2”丢掉,将再生成命令输出给重复控制部132(步骤S305中的“是”),重复控制部132如果从密钥判断部117获取了再次生成素数的再生成命令,则进行上述的步骤S290及步骤S295,回到步骤S220。
在判断为不一致的情况下,将所存储的2个素数“p1”及“p2”写入到私钥保存部111的素数保存区域中,将密钥生成开始命令输出给密钥生成部118(步骤S305中的“否”),密钥生成部118如果从密钥判断部117获取了密钥生成命令,则读出存储在私钥保存部111的素数保存区域中的2个素数“p1”及“p2”,计算所读出的2个素数“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读出发行标识符信息“IDI”、从公钥保存部112读出公钥“PK”、从控制部114的服务器标识符存储区域130读出服务器标识符(步骤S335)。信息取得部119经由发送部121将所读出的发行标识符信息“IDI”、公钥“PK”、服务器标识符、和委托公钥证书的发行的证书发行委托信息发送给证书发行服务器200(步骤S340)。
控制部114如果经由接收部120从证书发行服务器200获取了公钥证书“Cert”,则将所获取的公钥证书“Cert”写入到证书保存部113中,将分配开始命令输出给信息取得部119(步骤S345)。
信息取得部119如果从控制部114获取了分配开始命令,则分别读出存储在私钥保存部111中的私钥“SK”、存储在证书保存部113中的公钥证书“Cert”、和存储在控制部114的终端信息存储区域中的终端标识符(步骤S350),将读出的私钥“SK”及公钥证书“Cert”经由发送部121发送给与读出的终端标识符对应的终端装置300(步骤S355)。
(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”及“lenqIDI”(步骤S425),生成由“lenq-lenqIDI-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”的位长度“lenqN”是否与“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×R”(步骤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=c12 mod 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中(步骤S665)。
发行公钥确认部214利用所获取的服务器标识符,读出所对应的第1验证值“c11”及第2验证值“c12”(步骤S660)。
发行公钥确认部214利用所读出的第1验证值“c11”及第2验证值“c12”、和所获取的公钥“PK”、发行标识符信息“IDI”,判断公钥“PK”是否是利用发行标识符信息“IDI”生成的(步骤S660)。
发行公钥确认部214在判断“n-(c11×c12)”可被“IDI”整除的情况下,即在判断公钥“PK”是利用发行标识符信息“IDI”生成的情况下(步骤S660中的“是”),发行公钥确认部214分别将所获取的公钥“PK”写入到发行公钥保存部211中,将发行标识符信息写入到发行标识符信息保存部212中,发行公钥确认部214将公钥证书的生成开始命令输出给公钥证书生成部215(步骤S665)。
发行公钥确认部214在判断公钥“PK”不是利用发行标识符信息“IDI”生成的情况下(步骤S660中的“否”),结束处理。
公钥证书生成部215如果从发行公钥确认部214获取公钥证书的生成开始命令,则分别从私钥保存部210读出私钥“SKCA”、从发行公钥保存部211读出公钥“PK”、从发行标识符信息保存部212读出发行标识符信息“IDI”(步骤S670)。
公钥证书生成部215利用所读出的私钥“SKCA”、公钥“PK”及发行标识符信息“IDI”,生成公钥证书“Cert”,将生成的公钥证书“Cert”写入到公钥证书保存部213中,将公钥证书“Cert”的发送开始命令输出给证书取得部216(步骤S675)。
证书取得部216如果从公钥证书生成部215获取了公钥证书“Cert”的发送开始命令,则分别从公钥证书保存部213读出公钥证书“Cert”、从服务器信息存储区域220读出服务器标识符,将所读出的公钥证书“Cert”经由发送部218发送给与所读出的服务器标识符对应的密钥发行服务器100(步骤S680)。
1.6素数信息生成部133的动作验证素数信息生成部133的第1素数判断部143及第2素数判断部144是Pocklington判断。Pocklington判断在非专利文献1的144页及非专利文献4中有详细的说明。以下简单地说明。
根据Pocklington判断,“N=2×R×q+1”的“q”是素数,在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”不同。
首先,证明以下的副命题,利用该副命题证明上述命题。
(副命题)对于2个素数“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×R”可被“IDI”整除。此外,如上所述,由于“2×q×w1+1=c11mod 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”整除,能够确认素数“p1”、“p2”是否是正确地利用发行标识符信息“IDI”生成的。
这是因为,作为私钥的素数“p1”、“p2”分别对于素数“q1”、“q2”、随机数“R1”、“R2”、发行标识符信息“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验证值这2个验证值,但这里对使用1个验证值时的素数的生成进行说明。
与上述实施方式的不同点是密钥发行服务器的素数信息生成部与证书发行服务器的发行公钥确认部。以下说明本变形例的素数信息生成部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在写入了所获取的信息后,将指示随机数的生成的第1生成指示输出给随机数生成部141A。
信息控制部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”。另外,共用加密的一例是DES,在使用DES的情况下,密钥长为128位。
素数候补生成部142A如果从随机数生成部141A获取了随机数“R1”和控制信息,则判断所获取的控制信息是否是“信息C”。
在判断为“信息C”的情况下,素数候补生成部142A从信息控制部140A的信息存储区域读出素数“q”。素数候补生成部142A利用所读出的素数“q”和从随机数生成部141A获取的随机数“R1”,生成数”N=2×R1×q+1”。素数候补生成部142A判断所生成的数“N”的位长度“lenN”是否与“lenq”一致,在判断为一致的情况下,素数候补生成部142A将所生成的数“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=c1 mod IDI,0≤w<IDI”的数。“w”是通过计算“w=(c1-1)×m mod IDI”而求出的。“m”是满足“(2×q)×m=1 mod IDI”的数。
素数候补生成部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素数判断部144A>
第2素数判断部144A由于与第1实施方式所示的第2素数判断部144相同,所以省略说明。
<发行公钥确认部214A>
发行公钥确认部214A虽然没有图示,但具有服务器信息存储区域220A及确认信息存储区域221A。
服务器信息存储区域220A具有存储对存在公钥证书的发行委托的密钥发行服务器进行识别的服务器标识符的区域。
确认信息存储区域221A如图20所示,具有验证值表T250。验证值表T250具有存储1组以上由服务器标识符和验证值构成的组的区域。服务器标识符是识别密钥发行服务器的标识符,“SIDA”表示密钥发行服务器100,“SIDB”表示密钥发行服务器101,“SIDB”表示密钥发行服务器102。验证值是分配给由建立了对应的服务器标识符表示的密钥发行服务器的验证值。另外,以后将密钥发行服务器100的服务器标识符作为“SID”进行说明。
发行公钥确认部214A从密钥发行服务器100经由接收部217获取发行标识符信息“IDI”、公钥“PK”、服务器标识符、和证书发行委托信息。
发行公钥确认部214A将所获取的服务器标识符写入到服务器信息存储区域220A中。
发行公钥确认部214A利用所获取的服务器标识符,读出所对应的验证值“c1”。
发行公钥确认部214A利用所获取的公钥“PK”和发行标识符信息“IDI”,确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
这里,确认方法是验证“n-(c1)^2”是否能被“IDI”整除。由此,能够确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
发行公钥确认部214A在判断“n-(c1)^2”能被“IDI”整除的情况下,判断公钥“PK”是使用发行标识符信息“IDI”生成的,在判断“n-(c1)^2”不能被“IDI”整除的情况下,判断公钥“PK”不是使用发行标识符信息“IDI”生成的。
发行公钥确认部214A在判断公钥“PK”是使用发行标识符信息“IDI”生成的情况下,分别将所获取的公钥“PK”向发行公钥保存部211中写入,将发行标识符信息向发行标识符信息保存部212中写入。发行公钥确认部214A将公钥证书的生成开始命令输出给公钥证书生成部215。
发行公钥确认部214A在判断公钥“PK”不是使用发行标识符信息“IDI”生成的情况下,结束处理。
(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”和数“R”,生成数“N”。
(4)证书发行处理对于有关本变形例的证书发行处理,仅说明与第1实施方式所示的证书发行处理不同的点。
发行公钥确认部214A在步骤S660中,读出与所获取的服务器标识符对应的验证值(例如“c1”),在步骤S670中,利用所读出的验证值“c1”、公钥“PK”、和发行标识符信息“IDI”,确认“PK”是否是由“IDI”生成的。
1.11素数生成的变形例2在上述实施方式中,使用了第1验证值及第2验证值这2个验证值,但这里对使用1个验证值、且该验证值为固定值“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在写入了所获取的信息后,将指示随机数的生成的第1生成指示输出给随机数生成部141B。
信息控制部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相同,所以省略说明。
<发行公钥确认部214B>
发行公钥确认部214B虽然没有图示,但具有服务器信息存储区域220B及确认信息存储区域221B。
服务器信息存储区域220B具有存储对存在公钥证书的发行委托的密钥发行服务器进行识别的服务器标识符的区域。
确认信息存储区域221B存储有固定值的验证值“1”。
发行公钥确认部214B从密钥发行服务器100经由接收部217获取发行标识符信息“IDI”、公钥“PK”、服务器标识符、和证书发行委托信息。
发行公钥确认部214B将所获取的服务器标识符写入到服务器信息存储区域220B中。
发行公钥确认部214B从确认信息存储区域221B中读出验证值“1”。
发行公钥确认部214B利用所获取的公钥“PK”和发行标识符信息“IDI”,确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
这里,确认方法是验证“n-验证值”、即“n-1”是否能被“IDI”整除。由此,能够确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
发行公钥确认部214B在判断“n-1”能被“IDI”整除的情况下,判断公钥“PK”是使用发行标识符信息“IDI”生成的,在判断“n-1”不能被“IDI”整除的情况下,判断公钥“PK”不是使用发行标识符信息“IDI”生成的。
发行公钥确认部214B在判断公钥“PK”是使用发行标识符信息“IDI”生成的情况下,分别将所获取的公钥“PK”向发行公钥保存部211中写入,将发行标识符信息向发行标识符信息保存部212中写入。发行公钥确认部214B将公钥证书的生成开始命令输出给公钥证书生成部215。
发行公钥确认部214B在判断公钥“PK”不是使用发行标识符信息“IDI”生成的情况下,结束处理。
(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”,确认“PK”是否是由“IDI”生成的。
(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位的素数时,附加了用来确认所生成的素数的合法性的要素,但这里对于通过1次的动作来附加用来确认素数的唯一性及正当性的要素的情况进行说明。
与上述实施方式的不同点是密钥发行服务器的素数生成部与证书发行服务器的发行公钥确认部。下面对有关本变形例的素数生成部116C、以及发行公钥确认部214C进行说明。另外,对于其他结构要素采用第1实施方式所示的结构要素。
此外,这里设服务器标识符的位长度为15位、设终端装置的终端标识符的位长度为16位、设发行标识符信息的位长度为32位。
(1)素数生成部116C素数生成部116C如图22所示,具有重复控制部132C及素数信息生成部133C。
素数生成部116C从8位的素数生成512位的素数,将生成的512位的素数输出给密钥判断部117。
<重复控制部132C>
重复控制部132C具有预先存储有由8位构成的素数和素数的位长度(即“8”)的初始值存储区域、和暂时存储从素数信息生成部133C获取的素数的暂时存储区域。
重复控制部132C具有对素数信息生成部133C的动作的重复次数进行计数的重复计数器135C、和对向密钥判断部117输出的素数的个数、即生成的512位的素数的输出次数进行计数的输出计数器136C。另外,重复计数器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输出,对输出计数器136C的值加“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在写入所获取的信息后,将指示随机数的生成的第1生成指示输出给随机数生成部141C。
信息控制部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”时,如果保持着函数“qg”和“f”,则即使素数候补生成部142C对于发行标识符信息“IDI”多次通过素数生成函数生成了素数,也能够生成相同的素数。此时,在“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对从随机数生成部141C获取的随机数“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”,再次生成数“R”及“N”。
<第1素数判断部143C>
第1素数判断部143C由于与第1实施方式所示的第1素数判断部143相同,所以省略说明。
<第2素数判断部144C>
第2素数判断部144C由于与第1实施方式所示的第1素数判断部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”,确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
以下表示确认方法。首先,发行公钥确认部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)”整除。由此,能够确认公钥“PK”是否是使用发行标识符信息“IDI”生成的。
发行公钥确认部214C在判断“n-1”能被素数“gp(IDI,qg)”整除的情况下,判断公钥“PK”是使用发行标识符信息“IDI”生成的,在判断“n-1”不能被素数“gp(IDI,qg)”整除的情况下,判断公钥“PK”不是使用发行标识符信息“IDI”生成的。
发行公钥确认部214C在判断公钥“PK”是使用发行标识符信息“IDI”生成的情况下,分别将所获取的公钥“PK”向发行公钥保存部211中写入,将发行标识符信息向发行标识符信息保存部212中写入。发行公钥确认部214C将公钥证书的生成开始命令输出给公钥证书生成部215。
发行公钥确认部214C在判断公钥“PK”不是使用发行标识符信息“IDI”生成的情况下,结束处理。
(3)素数生成处理对于有关本变形例的素数生成处理,仅对与第1实施方式所示的素数生成处理不同的点进行说明。另外,密钥发行处理的动作的流程由于与第1实施方式相同,所以省略说明。
在图15所示的素数生成处理的步骤S425中,随机数生成部141C变更为随机数生成部141C分别读出存储在信息控制部140C的信息存储区域中的“lenq”、存储在分配素数存储区域中的“lenqg”。接着,在步骤S430中,随机数生成部141C变更为,利用所读出的“lenq”及“lenqg”,生成由“lenq-2×lenqg-1”位构成的随机数“R1”,将所生成的随机数“R1”与读出的控制信息输出给素数候补生成部142C。这里,随机数“R1”的最高位为1。
(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”的位长度“lenqN”是否与“lenq”一致(步骤S720),在判断为一致的情况下(步骤S720中的“是”),素数候补生成部142C将生成的数“N”输出给第1素数判断部143C,将所获取的随机数“R1”作为“R”存储到生成信息存储区域中(步骤S755)。
在判断为不一致的情况下(步骤S720中的“否”),素数候补生成部142C对从随机数生成部141C获取的随机数“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×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)”,确认公钥“PK”是否是利用发行标识符信息“IDI”生成的。
(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×pIDI×R11+1)×(2×q2×pIDI×R12+1)=pIDI×(4×q1×q2×R11×R12×pIDI+2×q1×R11+2×q2×R12)+1因此,“n-1”由于可被“pIDI”整除,所以通过确认“n-1”可被“pIDI”整除,能够确认素数“p1”、“p2”是正确地使用发行标识符信息“IDI”而生成的。
(7)变形例本发明当然并不限于上述实施方式。以下这样的情况也包含在本发明中。
在上述变形例中,预先存储有1个素数“qg”,但并不限于此。密钥发行服务器也可以预先存储有2个素数“qg1”、“qg2”,在生成素数“q1”时使用素数“qg1”,在生成素数“q2”时使用素数“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与密钥发行服务器101之间、以及终端装置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私钥保存部1111与第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如果经由接收部1120从终端装置1300获取了密钥发行委托信息、和终端装置1300的终端标识符“TID”,则将所获取的终端标识符“TID”写入到终端信息存储区域1131中。控制部1114将发行标识符信息的生成命令、和所获取的终端标识符“TID”输出给标识符生成部1115。
控制部1114如果经由接收部1120从密钥发行检查服务器1200获取了已发行密钥委托信息,则将密钥信息取得命令输出给信息取得部1119。
(7)标识符生成部1115标识符生成部1115由于与第1实施方式的标识符生成部115同样,所以省略说明。
(8)素数生成部1116素数生成部1116通过与第1实施方式的素数生成部116的素数的生成方法同样的方法,生成512位的素数。
(9)密钥判断部1117密钥判断部1117由于与第1实施方式的密钥判断部117同样,所以省略说明。
(10)密钥生成部1118密钥生成部1118如果从密钥判断部1117获取了密钥生成命令,则读出存储在私钥保存部111的素数保存区域中的2个素数“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)作为私钥,写入到私钥保存部1111的私钥保存区域中。密钥生成部1118将公钥证书的生成命令输出给证书生成部1122。
(11)证书生成部1122证书生成部1122如果从密钥生成部1118获取了公钥证书的生成命令,则分别从证书用私钥保存部读出证书用私钥“C_SK”、从公钥保存部1112读出公钥“PK”、从标识符保存部1110读出发行标识符信息“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将私钥“SK”及公钥证书“Cert”经由发送部1121发送给终端装置1300后,分别读出由公钥保存部1112发行的公钥“PK=(n,e)”、由标识符保存部1110发行的发行标识符信息“IDI”,将读出的公钥“PK”及发行标识符信息“IDI”作为1组,写入到已发行密钥信息保存部1124中。
信息取得部1119如果从控制部1114获取了密钥信息取得命令,则从已发行密钥信息保存部1124读出所有的已发行密钥信息。信息取得部1119从控制部1114的服务器标识符存储区域1130读出服务器标识符,将读出的所有的已发行密钥信息与服务器标识符经由发送部1121发送给密钥发行检查服务器1200。
(13)已发行密钥信息保存部1124已发行密钥信息保存部1124如图28所示,具有已发行密钥信息表T1100。
已发行密钥信息表T1100具有用来存储1组以上由已发行公钥、和已发行标识符信息构成的组的区域。
已发行公钥是由该密钥发行服务器发行的公钥,已发行标识符信息是在生成公钥及与该公钥对应的私钥时使用的发行标识符信息。
通过上述那样,密钥发行服务器1100能够储存已发行的公钥、和已发行的发行标识符信息。
另外,已发行密钥信息保存部1124由于是为了保存作为已发行公钥信息的发行履历而使用的,所以必须是即使切断电源数据也不会消失的非易失性存储器(例如硬盘等)。
(14)接收部1120接收部1120从密钥发行检查服务器1200及终端装置1300接收信息,将接收到的信息输出给控制部1114。
(15)发送部1121发送部1121如果从信息取得部1119获取了私钥“SK”及公钥证书“Cert”,则将所获取的各信息发送给终端装置1300。
发送部1121如果从信息取得部1119获取了1个以上的已发行密钥信息和服务器标识符,则将所获取的1个以上的已发行密钥信息和服务器标识符发送给密钥发行检查服务器1200。
2.3密钥发行检查服务器1200密钥发行检查服务器1200如图29所示,具有确认信息保存部1210、已发行密钥信息保存部1211、控制部1212、发行公钥确认部1213、受理部1214、检查结果输出部1215、接收部1216及发送部1217。
密钥发行检查服务器1200具体而言是具有微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等的计算机系统。在上述RAM或上述硬盘单元中存储有计算机程序。通过上述微处理器按照上述计算机程序动作,密钥发行检查服务器1200实现其功能。
另外,由于从密钥发行服务器1100获取已发行密钥信息时的动作、和从其他密钥发行服务器获取已发行密钥信息时的动作相同,所以在以后的说明中,利用从密钥发行服务器1100发送的已发行密钥信息进行说明。
(1)确认信息保存部1210确认信息保存部1210如图30所示,具有验证值表T1200。验证值表T1200具有存储1组以上由服务器标识符、第1验证值、和第2验证值构成的组的区域。服务器标识符是识别密钥发行服务器的标识符,“SIDA”表示密钥发行服务器1100,“SIDB”表示密钥发行服务器1101,“SIDB”表示密钥发行服务器1102。第1验证值及第2验证值是分配给由建立了对应的服务器标识符表示的密钥发行服务器的验证值。另外,以后将密钥发行服务器1100的服务器标识符作为“SID”进行说明。
(2)已发行密钥信息保存部1211已发行密钥信息保存部1211具有用来存储由密钥发行服务器1100发送的1个以上的已发行密钥信息的区域。
(3)控制部1212控制部1212如图29所示,具有服务器信息存储区域1220。
服务器信息存储区域220具有存储对存在公钥证书的发行委托的密钥发行服务器进行识别的服务器标识符的区域。
控制部1212如果从受理部1214受理了开始公钥的检查的检查开始命令、和检查对象的服务器标识符(这里为“SID”),则将已发行密钥委托信息经由发送部1217发送给与服务器标识符对应的密钥发行服务器1100。
控制部1212将从受理部1214获取的服务器标识符写入到服务器信息存储区域1220中。
控制部1212经由发送部1217从密钥发行服务器1100获取1个以上的已发行密钥信息和服务器标识符。
控制部1212判断所获取的服务器标识符是否与存储在服务器信息存储区域中的服务器标识符一致。
在判断为一致的情况下,控制部1212将所获取的1个以上的已发行密钥信息写入到已发行密钥信息保存部1211中,将检查开始命令和所获取的服务器标识符输出给发行公钥确认部1213。
在判断为不一致的情况下,控制部1212结束处理。
(4)发行公钥确认部1213发行公钥确认部1213如果从控制部1212获取了检查开始命令和服务器标识符,则利用所获取的服务器标识符,从确认信息保存部1210中读出对应的第1验证值“c11”及第2验证值“c12”。
发行公钥确认部1213从已发行密钥信息保存部1211中读出未读的已发行密钥信息中的1个已发行密钥信息。
发行公钥确认部1213利用包含在所读出的已发行密钥信息中的公钥“PK”、发行标识符信息“IDI”、第1验证值“c11”及第2验证值“c12”,确认公钥“PK”是否是利用发行标识符信息“IDI”生成的。
这里,确认方法由于与第1实施方式相同,所以省略说明。
发行公钥确认部1213在判断“n-(c11×c12)”可被“IDI”整除的情况下,判断公钥“PK”是利用发行标识符信息“IDI”生成的,在判断“n-(c11×c12)”不能被“IDI”整除的情况下,判断公钥“PK”不是利用发行标识符信息“IDI”生成的,暂时存储所读出的发行标识符信息“IDI”。
发行公钥确认部1213判断是否存在未读的已发行密钥信息,在判断为存在未读的已发行密钥信息的情况下,重复上述的动作。在判断为不存在未读的已发行密钥信息的情况下,判断是否存在暂时存储的发行标识符信息。
在判断为存在暂时存储的发行标识符信息的情况下,发行公钥确认部1213将存储的所有的发行标识符连结,生成非法发行标识符信息组,将生成的非法发行标识符信息组输出给检查结果输出部1215。
在判断为不存在暂时存储的发行标识符信息的情况下,发行公钥确认部1213将表示确认了所有的公钥的合法性的合法消息输出给检查结果输出部1215。
(5)受理部1214受理部1214如果通过用户的操作受理了开始检查的指示、和检查对象的密钥发行服务器的服务器标识符,则将检查开始命令和服务器标识符输出给控制部1212。
(6)检查结果输出部1215检查结果输出部1215如果从发行公钥确认部1213获取了非法发行标识符信息组,则将所获取的非法发行标识符信息组输出给监视器1250。
检查结果输出部1215如果从发行公钥确认部1213获取了合法消息,则将所获取的合法消息输出给监视器1250。
另外,在监视器1250上,显示从检查结果输出部1215获取的信息。
(7)接收部1216接收部1216如果从密钥发行服务器1100接收到1个以上的已发行密钥信息、和服务器标识符,则将接收到的1个以上的已发行密钥信息和服务器标识符输出给控制部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发行密钥时的动作概要。
在以后的说明中,将1个以上的已发行密钥信息作为已发行密钥信息组进行描述。
<密钥发行时的动作概要>
利用图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)密钥发行处理这里,对于图31所示的密钥发行处理的动作,利用图11、图12、图13及图14所示的流程图,仅对与由第1实施方式所示的密钥发行处理的不同点进行说明。
有关本实施方式的密钥发行处理执行图11、图12及图13所示的步骤S200到步骤S325。
有关本实施方式的密钥发行处理将图13所示的步骤S330变更为,密钥生成部1118将组“SK=(p1,p2,d)”作为私钥,写入到私钥保存部1111的私钥保存区域中,将公钥证书的生成命令输出给证书生成部1122。
有关本实施方式的密钥发行处理如果执行了变更后的步骤S330,则结束处理。
(3)证书发行处理这里,利用图33所示的流程图说明图31所示的证书发行处理的动作。
证书生成部1122如果从密钥生成部1118获取了公钥证书的生成命令,则分别从证书用私钥保存部读出证书用私钥“C_SK”、从公钥保存部1112读出公钥“PK”、从标识符保存部1110读出发行标识符信息“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读出发行的公钥“PK=(n,e)”,从标识符保存部1110读出发行的发行标识符信息“IDI”,将读出的公钥“PK”及发行标识符信息“IDI”作为1组,写入到已发行密钥信息保存部1124中(步骤S1115)。
(4)密钥信息取得处理这里,利用图34所示的流程图说明图32所示的密钥信息取得处理。
密钥发行服务器1100的控制部1114如果经由接收部1120从密钥发行检查服务器1200获取了已发行密钥委托信息,则将密钥信息取得命令输出给信息取得部1119(步骤S1200)。
密钥发行服务器1100的信息取得部1119如果从控制部1114获取了密钥信息取得命令,则从已发行密钥信息保存部1124读出所有的已发行密钥信息(步骤S1205)。
信息取得部1119从控制部1114的服务器标识符存储区域1130读出服务器标识符,将读出的已发行密钥信息组和服务器标识符经由发送部1121发送给密钥发行检查服务器1200(步骤S1210)。
(5)检查处理这里,利用图35所示的流程图说明图32所示的检查处理的动作。
密钥发行检查服务器1200的受理部1214如果通过用户的操作开始检查,则受理检查对象的密钥发行服务器的服务器标识符后,将检查开始命令和服务器标识符输出给控制部1212(步骤S1300)。
控制部1212如果从受理部1214受理了开始公钥的检查的检查开始命令、和检查对象的服务器标识符(这里为“SID”),则将已发行密钥委托信息经由发送部1217发送给与服务器标识符对应的密钥发行服务器1100(步骤S1305)。
控制部1212将从受理部1214获取的服务器标识符写入到服务器信息存储区域1220中(步骤S1310)。
控制部1212经由发送部1217从密钥发行服务器1100获取1个以上的已发行密钥信息和服务器标识符(步骤S1315)。
控制部1212判断所获取的服务器标识符与存储在服务器信息存储区域中的服务器标识符是否一致(步骤S1320)。
在判断为一致的情况下(步骤S1320中的“是”),控制部1212将所获取的1个以上的已发行密钥信息写入到已发行密钥信息保存部1211中,将检查开始命令和所获取的服务器标识符输出给发行公钥确认部1213(步骤S1325)。
发行公钥确认部1213在确认处理中,进行公钥的合法性的确认,将结果显示在监视器1250上。
在判断为不一致的情况下(步骤S1320中的“否”),控制部1212结束处理。
(6)确认处理这里,利用图36所示的流程图说明图35所示的确认处理的动作。
发行公钥确认部1213如果从控制部1212获取了检查开始命令和服务器标识符,则利用所获取的服务器标识符,从确认信息保存部1210中读出对应的第1验证值“c11”及第2验证值“c12”(步骤S1400)。
发行公钥确认部1213从已发行密钥信息保存部1211中读出1个未读的已发行密钥信息(步骤S1405)。
发行公钥确认部1213利用包含在读出的已发行密钥信息中的公钥“PK”、发行标识符信息“IDI”、第1验证值“c11”及第2验证值“c12”,确认公钥“PK”是否是利用发行标识符信息“IDI”生成的(步骤S1410)。另外,确认方法由于与第1实施方式相同,所以省略说明。
发行公钥确认部1213在判断“n-(c11×c12)”不能被“IDI”整除的情况下、即判断为公钥是非法的情况下(步骤S1410中的“否”),将读出的发行标识符信息“IDI”暂时存储(步骤S1415)。
发行公钥确认部1213在判断“n-(c11×c12)”可被“IDI”整除的情况下、即判断为公钥是合法的情况下(步骤S1410中的“是”),省略步骤S1415。
发行公钥确认部1213判断是否存在未读的已发行密钥信息(步骤S1420),在判断为存在未读的已发行密钥信息的情况下(步骤S1420中的“是”),回到步骤S1405。
在判断为不存在未读的已发行密钥信息的情况下(步骤S1420中的“否”),判断是否存在暂时存储的发行标识符信息(步骤S1425)。
在判断为存在暂时存储的发行标识符信息的情况下(步骤S1425中的“是”),发行公钥确认部1213将存储的所有的发行密钥标识符连结,生成非法发行标识符信息组,将生成的非法发行标识符信息组经由检查结果输出部1215显示在监视器1250上(步骤S1430)。
在判断为不存在暂时存储的发行标识符信息的情况下(步骤S1425中的“否”),发行公钥确认部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”,证书发行服务器200能够通过检查是否能被发行标识符信息“IDI”整除,来确认是否正确地发行了密钥。
以往,是具有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”,能够容易地生成每次不同的素数。
(2)在从128位生成256位的素数时,利用了单射函数,但并不限于此。只要在嵌入发行标识符信息之前实施单射函数的动作,则在哪个阶段都可以。
例如,也可以在从8位素数生成16位的素数时实施单射函数。此外,也可以在从16位素数生成32位的素数时实施单射函数。此外,也可以在从32位素数生成64位的素数时实施单射函数。此外,也可以在从64位素数生成128位的素数时实施单射函数。
其中,发行标识符“IDI”的位数比输入所用的素数“q”的位数小,随机数“R1”的位数是(lenq-lenIDI-1)位,数“R”的位数是(lenq-1)位。
(3)也可以将第1实施方式的素数生成部116做成1个素数生成装置。此时,素数生成装置在被赋予了发行标识符信息“IDI”及其位长度“lenIDI”的情况下,根据被赋予的“IDI”及其位长度“lenIDI”、和预先存储的8位的素数,生成512位的素数。
此外,第2实施方式的素数生成部1116也同样可以做成1个素数生成装置。
(4)也可以使第1实施方式的素数生成部116具有从预先存储的8位的素数生成128位的素数的第1素数生成部、和从128位的素数生成512位素数的第2素数生成部。此外,也可以将第1素数生成部及第2素数生成部做成分别独立的素数生成装置。
第1素数生成部通过与以往同样的方法,从8位的素数生成128位的素数。关于以往的方法,在专利文献1及非专利文献3中有详细的说明。
下面在图38中表示第2素数生成部的结构的一例。这里,将第2素数生成部作为1个素数生成装置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”及“lenqIDI”,生成“2×lenq1-lenqIDI-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中,利用在步骤S2015中生成的数“R”和“N”,判断上述所示的式(eq2)是否成立(步骤S2025)。
在判断式(eq2)成立的情况下(步骤S2025中的“是”),素数生成装置2100将数“N”作为素数“N”输出,结束处理(步骤S2030)。
在判断式(eq1)不成立的情况下(步骤S2020中的“否”)、以及在判断式(eq2)不成立的情况下(步骤S2025中的“否”),回到步骤S2010,再次进行处理。
(素数候补生成处理)这里,利用图40所示的流程图,说明在素数生成处理的步骤S2015中进行的素数候补生成处理的动作。
素数候补生成部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为1个素数生成装置。以下,对此时的素数生成装置2200进行说明。素数生成装置2200在被赋予了素数“q”及其位长度“lenq”(这里设位长度为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”、读出的素数“q”及发行标识符信息“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的动作。
(素数生成处理)这里,对于由素数生成装置2200进行的素数生成处理,利用图39所示的流程图仅对变更点进行说明。
素数生成装置2200在步骤S2000中变更为,通过用户的操作受理素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”及发行标识符信息的位长度“lenIDI”,将所受理的各信息写入到受理信息存储部2202中。
素数生成装置2200在执行了上述那样变更的步骤S2000后,省略步骤S2005,执行以下这样变更的步骤S2010。素数生成装置2200在步骤S2010中变更为,生成(lenq-lenqIDI-1)位的随机数“R1”。
以后的动作的流程由于与图39同样,所以省略说明。
(素数候补生成处理)这里,对于素数候补生成处理,利用图40所示的流程图仅对变更点进行说明。
首先,将步骤S2050变更为,生成数“R=f(IDI||R1)。
接着,将步骤S2055变更为,生成数“N=2×R×q+1”。
以后的动作的流程由于与图40同样,所以省略说明。
(6)也可以使素数生成变形例3中的素数生成部116C具有从预先存储的8位的素数生成256位的素数的第1素数生成部、和从256位的素数生成512位的素数的第2素数生成部。此外,也可以将第1素数生成部及第2素数生成部做成分别独立的素数生成装置。
第1素数生成部通过与以往相同的方法,从8位的素数生成256位的素数。
以下,在图42中表示第2素数生成部的结构的一例。这里,将第2素数生成部作为1个素数生成装置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利用所读出的位长度“lenq”及“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的动作。
(素数生成处理)这里,对于由素数生成装置2300进行的素数生成处理,利用图39所示的流程图仅对变更点进行说明。
素数生成装置2300在步骤S2000中变更为,通过用户的操作而受理了素数“q”、素数“q”的位长度“lenq”、发行标识符信息“IDI”及发行标识符信息的位长度“lenIDI”,将所受理的各信息写入到受理信息存储部2302中。
素数生成装置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)也可以使第1实施方式中的素数生成部116具有从预先存储的8位的素数生成256位的素数的第1素数生成部、和从256位的素数生成512位的素数的第2素数生成部构成。此外,也可以将第1素数生成部及第2素数生成部做成分别独立的素数生成装置。
第1素数生成部通过与以往相同的方法,从8位的素数生成128位的素数,应用上述所示的素数生成装置2200,从128位的素数生成256位的素数。
以下,在图43中表示第2素数生成部的结构的一例。这里,将第2素数生成部作为1个素数生成装置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”,将所受理的素数“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的动作。
(素数生成处理)这里,对于由素数生成装置2400进行的素数生成处理,利用图39所示的流程图仅对变更点进行说明。
素数生成装置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)也可以使第1实施方式中的素数生成部116具有从预先存储的8位的素数生成256位的素数的第1素数生成部、和从256位的素数生成512位的素数的第2素数生成部。此外,也可以将第1素数生成部及第2素数生成部做成分别独立的素数生成装置。
第1素数生成部通过与以往相同的方法,从8位的素数生成128位的素数,应用上述所示的素数生成装置2200,从128位的素数生成256位的素数。
以下,在图44中表示第2素数生成部的结构的一例。这里,将第2素数生成部作为1个素数生成装置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”,将所受理的素数“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”是通过计算“w=(c-1)×m mod IDI”而求出的。“m”是满足“(2×q)×m=1 mod IDI”的数。
素数候补生成部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的动作。
(素数生成处理)这里,对于由素数生成装置2500进行的素数生成处理,利用图39所示的流程图仅对变更点进行说明。
素数生成装置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”的嵌入。
在仅实施单射函数“f”的情况下,生成的素数满足唯一性。此时,实施单射函数的时刻在何时都可以。
在仅进行发行识别码信息“IDI”的嵌入的情况下,不满足生成的素数的唯一性,但是能够利用“IDI”进行生成密钥的合法性的确认。另外,在仅进行发行识别码信息“IDI”的嵌入的情况下,在从256位的素数生成512位的素数的时刻进行。
此外,对于第2实施方式也同样。
(10)在上述第1及第2实施方式中,在控制信息为“信息B”的情况下,素数生成部116实施了单射函数而生成数“R=f(IDI||R1)”,但并不限于此。
例如,在控制信息为“信息B”的情况下也可以生成数“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……T62S62T63S63S64”。
此外,由发行标识符信息“IDI”和随机数“R1”生成数“IDI_R1”,对生成的数“IDI_R1”实施了单射函数“f”而生成了数“R”,但并不限于此。数“R”也可以为“R=IDI_R1”。
(11)在上述第1实施方式中,在控制信息为“信息A”的情况下,素数生成部116进行了发行标识符信息“IDI”的嵌入,但嵌入的信息并不限于“IDI”。
例如,也可以是使用“g”的值,该“g”是仅密钥发行服务器100和证书发行服务器200已知的秘密函数,、且是1对1的函数。此时,代替“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开始依次生成的发行标识符信息“IDI”进行生成的情况下,此时标识符生成部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”位构成的素数“N”。
(16)也可以将第1实施方式的素数生成部116作为1个素数生成装置。此时,该素数生成装置也可以将整数len与发行标识符信息“IDI”作为输入,将len位的素数作为输出。
此外,如上述那样,第1实施方式的素数生成部116也可以采用生成素数的变形例1、2及3所示的素数信息生成部133A、素数信息生成部133B及素数信息生成部133C中的任一种来代替素数信息生成部133。
此外,第1实施方式的素数生成部116也可以在从8位的素数生成512位的素数时不嵌入发行标识符信息“IDI”,而是仅实施1次单射函数“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实施方式相同,所以省略说明。
密钥判断部117利用计数器(初始值为“0”),如果从素数生成部116获取了素数,则在计数器中增加“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中,关于确认公钥“PK=(n,e)”是否是使用发行标识符信息“IDI”生成的方法,是验证“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。
通过该动作,能够确认公钥“PK=(n,e)”是否是利用发行标识符信息“IDI”生成的。
发行公钥确认部214在图18所示的步骤S670中执行了上述验证处理后,在输出的验证结果为“0”的情况下,判断出公钥“PK”是利用发行标识符信息“IDI”生成的,在验证结果为“1”的情况下,判断出公钥“PK”不是利用发行标识符信息“IDI”生成的。
(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”的情况下,验证值“c”为“c11”,在输出计数器的值为“2”以上的情况下,验证值“c”为“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”,利用所读出的第2验证值“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验证值,利用所读出的验证值、所获取的公钥、以及发行标识符信息,验证公钥的合法性。
通过对每个终端装置分配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、与要生成的素数对应的奇数的管理信息及规定的验证值;随机数生成单元,生成随机数;候补计算单元,读出素数q、上述管理信息及上述验证值,将上述随机数乘以上述管理信息而计算出乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,来计算素数候补N;素数判断单元,判断所计算出的素数候补N是否是素数;输出单元,在判断为是素数的情况下,将计算出的素数候补N作为素数输出。
2.如权利要求1所述的素数计算装置,其特征在于,存储在上述信息存储单元中的上述验证值为1;上述候补计算单元通过N=2×乘法运算值R×素数q+1,来计算素数候补N。
3.如权利要求1所述的素数计算装置,其特征在于,上述素数判断单元具有第1判断部,判断上述素数候补N是否满足2N-1=1 mod N;第2判断部,在由上述第1判断部判断为满足的情况下,还判断素数候补N及乘法运算值R是否满足22R≠1 mod N,在判断为满足时,判定素数候补N素数,或者判断是否满足GCD(22R-1,N)=1,在判断为满足时,判定素数候补N素数。
4.如权利要求1所述的素数计算装置,其特征在于,上述信息存储单元还存储有已知的素数g及唯一的发行标识符;上述素数计算装置还具有素数生成单元,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,来生成素数gp,并将所生成的素数gp输出;写入单元,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中。
5.如权利要求4所述的素数计算装置,其特征在于,上述素数生成单元生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下将素数候补作为上述素数gp输出;变量c是0或正整数。
6.如权利要求5所述的素数计算装置,其特征在于,上述素数生成单元在判断所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上值1后的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为素数的情况下将素数候补作为上述素数gp输出。
7.如权利要求1所述的素数计算装置,其特征在于,上述素数计算装置还具有重复控制单元,该重复控制单元对上述随机数生成单元、上述候补计算单元及上述素数判断单元进行控制,使得重复随机数的生成、素数候补N的计算、和上述判断,直到由上述素数判断单元判断为是素数。
8.如权利要求7所述的素数计算装置,其特征在于,上述素数计算装置还具有前段素数存储单元,存储有已知的素数p;前段随机数计算单元,计算随机数R’;前段候补计算单元,利用上述素数p及所生成的上述随机数R’,通过N’=2×随机数R’×素数p+1,计算素数候补N’;前段素数判断单元,判断所计算出的素数候补N’是否是素数;前段写入单元,在判断为是素数的情况下,将计算出的素数候补N’作为上述素数q,写入到上述信息存储单元中;前段重复控制单元,对上述前段随机数计算单元、上述前段候补计算单元以及上述前段素数判断单元进行控制,使得重复随机数R’的生成、素数候补N’的计算、和上述判断,直到由上述前段素数判断单元判断为是素数。
9.如权利要求7所述的素数计算装置,其特征在于,上述素数计算装置是生成RSA加密的公钥及私钥的密钥生成装置;上述素数计算装置还具有公钥生成单元,利用计算出的素数N,生成RSA加密的公钥;私钥生成单元,利用所生成的公钥,生成RSA加密的私钥。
10.如权利要求9所述的素数计算装置,其特征在于,上述公钥生成单元对上述重复控制单元指示新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算数n,生成随机数e;计算出的数n和生成的随机数e的组是上述公钥;上述私钥生成单元计算满足e×d=1 mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥。
11.如权利要求9所述的素数计算装置,其特征在于,上述信息存储单元还存储有与上述验证值不同的其他验证值;上述公钥生成单元对上述重复控制单元指示新获得素数N’,上述候补计算单元通过N’=2×乘法运算值R×素数q+上述其他验证值,计算素数候补N’,上述公钥生成单元利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算数n,生成随机数e;计算出的数n和生成的随机数e的组是上述公钥;上述私钥生成单元计算满足e×d=1 mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥。
12.如权利要求9所述的素数计算装置,其特征在于,上述素数计算装置是对终端装置生成并发行RSA的私钥及公钥的密钥发行服务器装置;上述素数计算装置还具有密钥输出单元,将生成的上述私钥对终端装置输出;公开单元,将生成的上述公钥公开。
13.如权利要求12所述的素数计算装置,其特征在于,上述素数计算装置还具有标识符取得单元,取得唯一地识别上述终端装置的终端装置标识符;管理信息生成单元,生成包含有所取得的终端装置标识符的上述管理信息;写入单元,将生成的上述管理信息写入到上述标识符存储单元中。
14.如权利要求13所述的素数计算装置,其特征在于,上述素数计算装置还具有服务器标识符存储单元,该服务器标识符存储单元预先存储有对作为密钥发行服务器装置的该素数计算装置唯一地进行识别的服务器标识符;上述管理信息生成单元还从上述服务器标识符存储单元读出上述服务器标识符,生成还包含有所读出的服务器标识符的上述管理信息。
15.一种素数验证装置,验证由权利要求1的素数计算装置输出的素数N,其特征在于,具备信息存储单元,存储有上述管理信息及上述验证值;减法运算单元,从素数N减去上述验证值而得到素数减法运算值;判断单元,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可整除的情况下,许可使用上述素数N,在判断为不能整除的情况下,禁止使用上述素数N。
16.如权利要求15所述的素数验证装置,其特征在于,上述素数计算装置存储有为1的上述验证值,通过N=2×乘法运算值R×素数q+1,计算素数候补N;存储在上述信息存储单元中的上述验证值为1;上述减法运算单元从素数N减1而得到减法运算值。
17.如权利要求15所述的素数验证装置,其特征在于,上述素数计算装置还存储有已知的素数g及唯一的发行标识符,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,生成素数gp,输出所生成的素数gp,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中;上述信息存储单元还存储有上述素数g及上述发行标识符;上述素数验证装置还具有素数生成单元,利用上述素数g及发行标识符,实施唯一地生成素数的素数生成函数,来生成素数gp,输出所生成的素数gp;写入单元,将所生成的素数gp作为上述管理信息写入到上述信息存储单元中。
18.如权利要求17所述的素数验证装置,其特征在于,上述素数计算装置生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下,将素数候补作为上述素数gp输出,变量c是0或正整数;上述素数生成单元生成上述发行标识符与变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为素数的情况下,将素数候补作为上述素数gp输出。
19.如权利要求18所述的素数验证装置,其特征在于,上述素数计算装置在判断所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上了值1的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下,将素数候补作为上述素数gp输出;上述素数生成单元在判断为所生成的素数候补不是素数的情况下,对变量c加上值1,生成上述发行标识符与加上了值1的变量c的结合体,计算出素数候补=2×素数g×f(结合体)+1,判断所计算出的素数候补是否是素数,在判断为是素数的情况下,将素数候补作为上述素数gp输出。
20.如权利要求15所述的素数验证装置,其特征在于,上述素数计算装置是生成RSA加密的公钥及私钥的密钥生成装置,还利用计算出的素数N生成RSA加密的公钥,利用所生成的公钥生成RSA加密的私钥;上述素数验证装置是验证上述公钥的密钥验证装置;上述素数验证装置还具有取得单元,取得上述公钥;验证单元,验证所取得的上述公钥的合法性。
21.如权利要求20所述的素数验证装置,其特征在于,上述素数计算单元新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算出数n,生成随机数e,计算出的数n与生成的随机数e的组是上述公钥,计算满足e×d=1modL的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥;上述取得单元取得数n与随机数e的组来作为上述公钥;上述验证单元具有减法运算部,从所取得的数n减去上述验证值的平方值,来得到公钥减法运算值;判断部,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可被整除的情况下,许可输出上述公钥,在判断为不能整除的情况下,禁止输出上述公钥N。
22.如权利要求20所述的素数验证装置,其特征在于,上述素数计算单元还存储有与上述验证值不同的其他的验证值,通过N=2×乘法运算值R×素数q+上述其他的验证值,计算素数候补N’,来新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算出数n,生成随机数e,计算出的数n与生成的随机数e的组是上述公钥,计算满足e×d=1 mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥;上述信息存储单元存储有上述其他的验证值;上述取得单元取得数n与随机数e的组,作为上述公钥;上述验证单元还具有减法运算部,将上述验证值与上述其他的验证值相乘而得到乘法运算值,从所取得的数n减去上述乘法运算值,而得到公钥减法运算值;判断部,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可被整除的情况下,许可输出上述公钥,在判断为不能整除的情况下,禁止输出上述公钥N。
23.如权利要求20所述的素数验证装置,其特征在于,上述素数验证单元是密钥验证服务器装置;上述取得单元从对终端装置生成RSA的公钥及私钥的密钥发行服务器装置取得上述公钥。
24.如权利要求23所述的素数验证装置,其特征在于,存储在上述信息存储单元中的上述管理信息包括唯一地识别上述终端装置的终端装置标识符;上述判断单元判断所得到的素数减法运算值是否可被包含上述终端装置标识符的上述管理信息整除。
25.如权利要求24所述的素数验证装置,其特征在于,存储在上述信息存储单元中的上述管理信息包含有唯一地识别作为密钥发行服务器装置的上述素数计算装置的服务器标识符;上述判断单元判断上述得到的素数减法运算值是否可被包含有上述服务器标识符的上述管理信息整除。
26.如权利要求23所述的素数验证装置,其特征在于,上述素数验证装置是公钥证书发行服务器装置,还具有证书生成单元,在通过上述验证单元认定上述公钥为合法的情况下,对至少包含有上述公钥的公钥信息实施数字签名,生成签名数据,并生成至少包含有上述签名数据及上述公钥的公钥证书;证书输出单元,将所生成的公钥证书输出。
27.一种密钥发行系统,具有终端装置、和对上述终端装置生成并发行RSA的私钥及公钥的密钥发行服务器装置,其特征在于,上述密钥发行服务器装置具有信息存储单元,存储有已知的素数q、与要生成的素数对应的管理信息及规定的验证值;随机数生成单元,生成随机数;候补计算单元,读出素数q、上述管理信息及上述验证值,将上述随机数乘以上述管理信息来计算出乘法运算值R,通过N=2×乘法运算值R×素数q+验证值,计算素数候补N;素数判断单元,判断所计算出的素数候补N是否是素数;输出单元,在判断为是素数的情况下,将计算出的素数候补N作为素数输出;重复控制单元,对上述随机数生成单元、上述候补计算单元以及上述素数判断单元进行控制,使得重复随机数的生成、素数候补N的计算、和上述判断,直到由上述素数判断单元判断为是素数;公钥生成单元,利用输出的素数N生成RSA加密的公钥;私钥生成单元,利用所生成的公钥生成RSA加密的私钥;密钥输出单元,将所生成的上述私钥对终端装置输出;公开单元,将所生成的上述公钥公开;上述终端装置取得上述私钥并存储,并利用所存储的私钥。
28.如权利要求29所述的密钥发行系统,其特征在于,上述密钥发行服务器装置新获得素数N’,利用上述素数N及新获得的素数N’,通过n=素数N×素数N’,计算数n,生成随机数e,计算出的数n与生成的随机数e的组是上述公钥,计算满足e×d=1mod L的d,L是素数N-1与素数N’-1的最小公倍数,计算出的d是上述私钥;上述密钥发行系统还具有取得单元,从上述密钥发行装置取得数n与随机数e的组来作为上述公钥;密钥验证服务器装置,具备对所取得的上述公钥的合法性进行验证的验证单元;上述验证单元具有减法运算部,从所取得的数n减去上述验证值的平方,来得到公钥减法运算值;判断部,判断所得到的素数减法运算值是否可被上述管理信息整除;控制单元,在判断为可整除的情况下,许可输出上述公钥,在判断为不能被整除的情况下,禁止输出上述公钥N。
29.一种素数计算方法,在素数计算装置中使用,该素数计算装置具备存储有已知的素数q、与要生成的素数对应的奇数的管理信息及规定的验证值的信息存储单元,计算大于已知的素数q的素数候补N来进行素数判断,其特征在于,该素数计算方法具有随机数生成步骤,生成随机数;候补计算步骤,读出素数q、上述管理信息及上述验证值,将上述随机数乘以上述管理信息来计算出乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,计算素数候补N;素数判断步骤,判断所计算出的素数候补N是否是素数;输出步骤,在判断为是素数的情况下,将计算出的素数候补N作为素数输出。
30.一种计算机程序,在素数计算装置中使用,用于计算素数,该素数计算装置具备存储有已知的素数q、与要生成的素数对应的奇数的管理信息及规定的验证值的信息存储单元,计算大于已知的素数q的素数候补N来进行素数判断,其特征在于,该计算机程序具有随机数生成步骤,生成随机数;候补计算步骤,读出素数q、上述管理信息及上述验证值,将上述随机数乘以上述管理信息来计算出乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,计算素数候补N;素数判断步骤,判断所计算出的素数候补N是否是素数;输出步骤,在判断为是素数的情况下,将计算出的素数候补N作为素数输出。
31.如权利要求30所述的计算机程序,其特征在于,上述计算机程序存储在计算机可读取的记录介质中。
32.如权利要求30所述的计算机程序,其特征在于,上述计算机程序被搭载在载波上发送。
33.一种素数验证方法,在素数验证装置中使用,该素数验证装置对由权利要求1的素数计算装置输出的素数N进行验证,具备存储有上述管理信息及上述验证值的信息存储单元,其特征在于,该素数验证方法具有减法运算步骤,从素数N减去上述验证值而得到素数减法运算值;判断步骤,判断上述得到的素数减法运算值是否可被上述管理信息整除;控制步骤,在判断为可整除的情况下许可使用上述素数N,在判断为不能整除的情况下禁止使用上述素数N。
34.一种计算机程序,在素数验证装置中使用,用于验证素数,该素数验证装置对由权利要求1的素数计算装置输出的素数N进行验证,具备存储有上述管理信息及上述验证值的信息存储单元,其特征在于,该计算机程序具有减法运算步骤,从素数N减去上述验证值而得到素数减法运算值;判断步骤,判断上述得到的素数减法运算值是否可被上述管理信息整除;控制步骤,在判断为可整除的情况下许可使用上述素数N,在判断为不能整除的情况下禁止使用上述素数N。
35.如权利要求34所述的计算机程序,其特征在于,上述计算机程序存储在计算机可读取的记录介质中。
36.如权利要求34所述的计算机程序,其特征在于,上述计算机程序被搭载在载波上发送。
全文摘要
提供一种计算能够确认是否是合法地生成的素数的素数计算装置。素数计算装置生成随机数,将上述随机数乘以管理标识符来计算乘法运算值R,对于满足2×w×素数q+1=验证值(mod管理信息)的w,通过N=2×(乘法运算值R+w)×素数q+1,计算出素数候补N。接着,判断所计算出的素数候补N是否是素数,在判断为素数的情况下,将计算出的素数候补N作为素数输出。
文档编号G09C1/00GK1898897SQ20048003893
公开日2007年1月17日 申请日期2004年12月21日 优先权日2003年12月26日
发明者布田裕一, 大森基司 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1