具体实施方式
以下,参考附图详细说明本发明的实施方式。
<系统结构>
如图1所示,本发明的实施方式的加密处理系统10具备加密解密装置12A、12B、多个用户终端14A、多个用户终端14B、以及互联网接入网络16。此外,加密解密装置12A、12B为加密装置、解密装置的一例。
多个用户终端14A与加密解密装置12A连接,加密解密装置12A连接到互联网接入网络16。另外,多个用户终端14B与加密解密装置12B连接,加密解密装置12B连接到互联网接入网络16。加密解密装置12A、12B经由互联网接入网络16相互连接。
在用户终端14A进行经由互联网接入网络16的数据发送的情况下,发送数据经由加密解密装置12A被输出给互联网接入网络16。另一方面,在用户终端14A进行经由互联网接入网络16的数据接收的情况下,接收数据经由加密解密装置12A,从互联网接入网络16被输入。
另外,在用户终端14B进行经由互联网接入网络16的数据发送的情况下,发送数据经由加密解密装置12B被输出给互联网接入网络16。另一方面,在用户终端14B进行经由互联网接入网络16的数据接收的情况下,接收数据经由加密解密装置12B,从互联网接入网络16被输入。
加密解密装置12A、12B由具备CPU(Central Processing Unit:中央处理器)、RAM(Random Access Memory:随机存取存储器)、以及储存了用于执行后述的共享密钥生成处理例程以及伪随机数列产生处理例程的程序的ROM(ReadOnly Memory:只读存储器)的计算机构成,功能上构成为如下所示。如图2所示,加密解密装置12A、12B具备通信部20、公开数据取得部22、密钥生成部24、非交换矩阵生成部26、共享密钥计算部28、数据输入输出部32、共用数据设定部34、伪随机数列产生部36、加密部38、以及解密部40。此外,非交换矩阵生成部26为矩阵计算部的一例,共享密钥计算部28为矩阵取得部以及共享密钥计算部的一例。另外,伪随机数列产生部36为矩阵生成部、矩阵作用部、位串变换部、位数判定部以及伪随机数列产生部的一例。
通信部20经由互联网接入网络16进行数据的发送接收。
数据输入输出部32被输入从用户终端14A、14B输出的数据,并且对用户终端14A、14B输出数据。
加密解密装置12A、12B的公开数据取得部22经由通信部20,取得质数p、自然数d、d×d矩阵Q(mod p)、以及存在逆矩阵的d×d矩阵S(mod p)作为在与通信对象的通信中使用的公开数据。其中,det Q≠1,(mod p)表示变量或矩阵的元素的值为质数p的余数。
加密解密装置12A的密钥生成部24生成由自然数nA(mod p)、kA(modp)构成的密钥。
加密解密装置12B的密钥生成部24生成由自然数nB(mod p)、kB(modp)构成的密钥。
密钥生成部24在每次进行通信时,生成新的密钥并更新密钥。
加密解密装置12A的非交换矩阵生成部26使用密钥nA,kA,根据下式(1),计算d×d的矩阵MA(mod p),经由通信部20,发送矩阵MA给通信对象即加密解密装置12B。
MA=S-kAQnASkA…(1)
加密解密装置12B的非交换矩阵生成部26使用密钥nB、kB,根据下式(2),计算d×d的矩阵MB(mod p),经由通信部20,向作为通信对象的加密解密装置12A发送矩阵MB。
MB=S-kBQnBSkB…(2)
加密解密装置12A的共享密钥计算部28取得由通信部20接收的矩阵MB,使用取得的矩阵MB,根据下式(3)算出d×d矩阵MAB(mod p)。
MAB=S-kAMB nASkA…(3)
加密解密装置12B的共享密钥计算部28取得由通信部20接收的矩阵MA,使用取得的矩阵MA,根据下式(4)算出d×d矩阵MBA(mod p)。
MBA=S-kBMA nBSkB…(4)
此处,如图3所示,上述(3)式如下变换成(5)式。
MAB=S-KAMB nASKA
MAB=S-KA(S-KBQnBSKB)nASKA
MAB=S-KAS-KB(QnB)nASKBSKA
MAB=S-(KA+KB)QnBnAS(KA+KB)…(5)
另外,上述(4)式如下变换成(6)式。
S-KBMA nBSKB=MBA
S-KB(S-KAQnASKA)nBSKB=MBA
S-KBS-KA(QnA)nBSKASKB=MBA
S-(KA+KB)QnAnBS(KA+KB)=MBA…(6)
由上述(5)式、(6)式可得下式(7),证明MAB与MBA相等。
MAB=S-(KA+KB)QnAnBS(KA+KB)=S-(KB+KA)QnAnBS(KB+KA)=MBA…(7)
因此,加密解密装置12A、12B的共享密钥计算部28将算出的矩阵MAB、MBA作为共享密钥输出给共用数据设定部34。
共用数据设定部34设定在加密解密装置12A、12B中共用的数据。具体地说,共享密钥即矩阵MAB(MBA);私密数据即质数p1、p2;以及初始向量v0被设定为共用的数据。
伪随机数列产生部36通过后述的方法,使用共享密钥即矩阵MAB(MBA)、私密数据即质数p1、p2、以及初始向量v0,产生伪随机数位串。
加密部38通过将由伪随机数列产生部36产生的伪随机数位串用作OTP(one time pad:一次一密)加密密钥,从而对由数据输入输出部32输入的加密对象数据进行流加密。例如,加密部38如图4A所示,通过对以位串表示的明文(plain text)和作为加密密钥的伪随机数位串的XOR进行运算,从而自前方起按每一位(或每一字节)进行加密。由加密部38进行加密后的数据由通信部20进行数据发送。
解密部40通过将由伪随机数列产生部36产生的伪随机数位串用作一次一密加密的密钥,从而对由通信部20接收的解密对象数据进行解密。例如,解密部40如图4B所示,通过对以位串表示的密文(cypher text)和作为加密密钥的伪随机数位串的XOR运算,从而自前方起按每一位(或每一字节)进行解密。由解密部40进行解密后的数据由数据输入输出部32输出给数据终端14A、14B。
接着,就本实施方式中的产生伪随机数位串的原理进行说明。
首先,伪随机数列产生部36使用作为共享密钥生成的d×d矩阵MAB(或MBA)以及被设定作为共用的私密数据的质数p1、p2,如下生成两个非交换矩阵A1、A2。此外,以下,以矩阵MAB为2×2矩阵的情况为例进行说明。
伪随机数列产生部36如下式(8)所示,使用矩阵MAB和质数p1,计算矩阵A1′。
[数学式1]
然后,伪随机数列产生部36求出使<g>={1,…,p1-1}的生成器g。例如,p1=7的生成器如下,为<3>={1,…,6}。
31=3,32=9mod7=2,33=27mod7=6,34=81mod7=4,35=243mod7=5,…
然后,当将A1”以下式(9)表示时,伪随机数列产生部36改变d′以使det A1”=g,将改变d′而得的A”1设为非交换矩阵A1。
[数学式2]
另外,伪随机数列产生部36如下式(10)所示,使用矩阵MAB和质数p2,计算矩阵A2′,与上述相同地生成非交换矩阵A2。
[数学式3]
此处,使用非交换矩阵A1,A2生成的伪随机数列的周期的长度O(A)使用用于非交换矩阵A1、A2的生成的任意质数p,可以写成下式(11)。
O(A)≥p…(11)
例如,在将p设为100000位的质数的情况下,A的周期长至其以上。
另外,伪随机数列产生部36使用生成的非交换矩阵A1,对设定为共用的初始向量v0进行变换,得到向量v1。另外,对向量v1反复进行使用了非交换矩阵A1的变换,得到向量列V={v0,v1,…,vt}。此处vi=A1 iv0。
然后,伪随机数列产生部36利用非线性变换从得到的向量列V得到位串W1。作为从向量列V得到位串W的非线性变换,将V的元素设为vi=(vi,0,vi,1,…,vi,n),进行从对vi,0进行了二进制转换的位串起,去除包含由自起始位起持续的0和接着出现的1构成的位串的起始位串的截断处理。此处,已知截断后剩余的位串具有高随机性。
本实施方式在截断处理中使用随机截断(Random cut)以及固定截断(Fixedcut)两种截断。
随机截断如上所述,将由最初出现的连续的0和接着出现的1构成的起始位串截去。另外,固定截断只截去预先确定的位数。例如,在以固定截断来进行截去的位数为3的情况下,截去作为随机截断的结果而得到的位串的起始3位。
对vi的所有元素进行该截断处理,将排列了所有截断处理后的元素的位串设为W。
由于若攻击者不验证所有的截断的可能性则不能复原非交换矩阵A1和A2,因此能够提高对抗攻击的强度。
另外,本实施方式在使非交换矩阵A1、A2作用于向量vi,得到新的向量vi+1时,将数之间的或运算以及与运算如下置换成组合了多个运算符的运算。
例如,当将a、b设为32位的数,将记号a<<k设为使a偏移k位的记号时,将(或运算)a+b置换成a+b mod 232。另外,将(与运算)a×b置换成a<<(b/227)xor b。此处,a<<(b/227)表示只将a偏移b除以227的商,xor表示每一位的异或。
另外,在使非交换矩阵A1、A2作用于向量vi,得到新的向量vi+1时,也可以进一步如下置换矩阵的作用的方法。
例如,当将vi=(vi 1,vi 2,…,vi d)设为使矩阵A对初始向量v0作用i次的结果(d为A的维数)时,得到vi+1=(vi+1 1,vi+1 2,…,vi+1 d)的方法如下。
首先,使vi+1 1=(Avi)1。这只是向量Avi的第一个元素。另外,所需的计算只有第一个元素的计算。写成2×2矩阵为:
[数学式4]
然而,或运算和与运算如上所述,由其他运算进行了置换。
然后,使vi+1 2=(A(vi+1 1,vi 2,…,vi d))2。这是使非交换矩阵A作用于将vi的第一个元素置换成vi+1 1而得的结果,并取出第二个元素而得的。此外,此处需要的计算只有第二个元素的计算。
然后,使vi+1 3=(A(vi+1 1,vi+1 2,…,vi d))2。这与上述相同,是将vi的第一个、第二个元素置换,使非交换矩阵A作用,抽出第三个元素而得的。
之后,进行同样的处理直至第d个元素为止,得到vi+1。
另外,当使进行加密的明文的位数设为n时,在位串W1的位数达到n的瞬间,中断对位串W1进行的处理,舍去位串W1的多余部分。
伪随机数列产生部36对非交换矩阵A2同样也反复进行对向量的作用以及截断处理,生成位串W2。另外,在位串W2的位数达到n的瞬间,中断对位串W2的处理,舍去位串W2的多余部分。
然后,伪随机数列产生部36计算最终得到的位串W1和位串W2的XOR,使得到的位串为伪随机数位串。此外,对于根据位串W1和位串W2的XOR得到的位串,也可以进一步进行非线性变换,以其结果作为伪随机数位串。
伪随机数列产生部36如上所述,产生与加密对象数据的位数或解密对象数据的位数相同位数的伪随机数位串。
<加密处理系统的动作>
接着,就本实施方式相关的加密处理系统10的动作进行说明。
首先,在从用户终端14A发送数据给用户终端14B的情况下,用户终端14A将发送数据输出给加密解密装置12A。
接着,加密解密装置12A对通信对象即加密解密装置12B发送通信开始请求,当从加密解密装置12B接收响应信号时,在加密解密装置12A中执行图5所示的共享密钥计算处理例程。另外,在加密解密装置12B中也同样执行图5所示的共享密钥计算处理例程。此外,以下对在加密解密装置12A中执行共享密钥计算处理例程的情况进行说明。
首先,在步骤100中,加密解密装置12A取得在加密解密装置12A、12B之间进行的通信中使用的公开数据(p、d、Q、S)。例如,访问并取得网络上公开的公开数据。
然后,在步骤102中,加密解密装置12A生成密钥nA、kA。在接下来的步骤104中,加密解密装置12A基于在上述步骤100中取得的公开数据和在上述步骤102中生成的密钥,根据上述(1)式,算出非交换矩阵MA。
在步骤106中,加密解密装置12A将在上述步骤104中算出的非交换矩阵MA发送给通信对象即加密解密装置12B。在接下来的步骤108中,加密解密装置12A判断是否从加密解密装置12B接收到了非交换矩阵MB。当加密解密装置12A接收由加密解密装置12B根据同样的方式算出的非交换矩阵MB时,进入步骤110。
在步骤110中,加密解密装置12A基于在上述步骤100中取得的公开数据、在上述步骤102中生成的密钥、以及在上述步骤108中接收到的非交换矩阵MB,根据上述(3)式,算出矩阵MAB,并设定为与加密解密装置12B进行的通信中的共享密钥,结束共享密钥计算处理例程。
上述共享密钥计算处理例程在每次通信开始时执行,每当此时,生成新的密钥并设定新的共享密钥。
另外,在加密解密装置12A中,执行图6所示的伪随机数列产生处理例程。
首先,在步骤120中,加密解密装置12A使用设定为与加密解密装置12B共用的共享密钥MAB、质数p1、p2,生成非交换矩阵A1、A2。在步骤122中,加密解密装置12A将识别向量的变量i设定为初始值0。另外,加密解密装置12A设定初始向量v0。
在接下来的步骤124中,加密解密装置12A使非交换矩阵A1、A2分别作用于向量vi,计算向量vi+1 1、vi+1 2。在步骤126中,加密解密装置12A将在上述步骤124中计算出的向量vi+1 1、vi+1 2分别变换成位串,并且对各自的位串进行截断处理,截断起始位串。然后,在步骤128中,加密解密装置12A对位串W1、W2追加各个上述步骤126中得到的位串而使之进一步排列。
在步骤130中,加密解密装置12A判断位串W1、W2各自的位数是否已达到发送数据(加密对象数据)的位串的位数。在位串W1、W2各自的位数未达到从用户终端14A输入的发送数据(加密对象数据)的位串的位数的情况下,在步骤132中,加密解密装置12A使变量i递增1,返回上述步骤124,反复进行步骤124以后的处理。此处,仅对于位串W1,在位数已达到发送数据的位串的位数的情况下,在上述步骤124以后的处理中,不进行使用了非交换矩阵A1的处理。另外,仅对于位串W2,在位数已达到发送数据的位串的位数的情况下,在上述步骤124以后的处理中,不进行使用了非交换矩阵A2的处理。
另外,在上述步骤130中,在判断出位串W1、W2双方的位数已达到发送数据的位串的位数的情况下,进入步骤134。
在步骤134中,加密解密装置12A对位串W1、W2的XOR进行运算,生成伪随机数位串S,结束伪随机数列产生处理例程。
然后,加密解密装置12A通过对由上述的伪随机数列产生处理例程生成的伪随机数位串S和从用户终端14输入的发送数据的位串的XOR进行运算,从而生成进行了加密的发送数据。另外,加密解密装置12A将进行了加密的发送数据经由互联网接入网络16发送给用户终端14B。
进行了加密的发送数据由加密解密装置12B接收,在加密解密装置12B中,同样执行上述图6的伪随机数列产生处理例程,生成与进行了加密的发送数据相同位数的伪随机数位串S。
然后,加密解密装置12B通过对生成的伪随机数位串S和进行了加密的发送数据的位串的XOR进行运算,从而生成进行了加密的发送数据的明文。另外,加密解密装置12B将发送数据的明文输出给被指定为发送对象的用户终端B。
接下来,对使用了以上述的实施方式进行说明的共享密钥的计算算法的实验的结果进行说明。
验证了两者之间密钥共用的速度。对到生成密钥,交换结束为止的计算时间进行了测量。
另外,在以下的环境下进行测试。Windows7(注册商标)上的性能如下表1所示。
[表1]
CPU |
E53002.6GHz 英特尔 奔腾 |
RAM |
4GB DDR 2 800(威刚 2×2GB) |
HDD |
500GB 7200转(西部数据Caviar Blue) |
OS |
MS Windows7 32位 |
以(RSA公钥密码(参照图7的RSA))、迪菲-赫尔曼(Diffie‐Hellman)型密码(参照图7的DH)、Elliptic Curve(椭圆)密码(参照图7的ECC)为比较对象,进行速度的比较,绘制出密钥生成、公开信息生成、密钥共用速度的图表。由图7所示的图表可知,本实施方式提出的方法(参照图7的QP-kex)与其他方法相比压倒性地快,特别是与RSA相比为约10倍的速度。
另外,在如下表2所示的移动终端上进行了安装实验。
[表2]
CPU |
德州仪器OMAP 1710,220MHz 处理器 |
OS |
塞班OS 8.1a,Series 60 UI操作系统 |
该终端为诺基亚(R)N70平台。比较对象为迪菲-赫尔曼型密码(参照图8的DH)、Elliptic Curve(椭圆)密码(参照图8的ECC)。RSA公钥密码由于执行时间很长而放弃。设横轴为方式名和密钥长度,纵轴为执行时间。由图8所示的图表可知,本实施方式提出的方法(参照图8的QP)即使是在小型装置上执行时间也比其他方法压倒性地快,即使将密钥长度取得长,执行时间也不长。
如以上所述,本发明的实施方式相关的加密解密装置通过将使用公开数据和密钥进行计算而得的非交换矩阵与通信对象进行交换,并使用从通信对象得到的非交换矩阵算出共享密钥,从而能够高速地生成安全的共享密钥。
另外,加密解密装置能够以高速的处理共用长密钥。
另外,关于对抗针对共享密钥的攻击的强度,攻击者需要根据公开的信息(p、d、Q、S)和公钥MA、MB,解决下面的问题,需要得到密钥nA、kA(或nB、kB)。
[问题]求满足下式的nA、kA。
MA=S-KAQnASKA
这是远比DH型(离散对数问题)难的问题。即使能够得到nA,之后为了得到kA也必须解开非线形问题。此时出现不定方程式,在数学上得解的概率为0。因此,生成的共享密钥严格来说在数学上比D-H更安全。
另外,加密解密装置将使非交换矩阵A1、A2作用时的或运算以及与运算,置换成组合了多种运算符的运算方法,使非交换矩阵A1、A2反复作用于初始向量并且进行非线性变换,计算得到的位串W1、W2的XOR,求出伪随机数位串。加密解密装置通过使用伪随机数位串进行加密或解密,从而在加密对象数据或解密对象数据的位数可变的情况下,能够使加密处理或解密处理高速化并强化密码译解强度。另外,加密解密装置通过组合共享密钥的生成方法和使用了随机数的加密、解密方法,能够高速且安全地开始流加密。
另外,也可以比其他的流密码更高速地,在计算能力低的小型装置上执行。
另外,在伪随机数列产生算法中,通过使用几个非线性变换,从而能够保证伪随机数列的统计上的随机性和长周期,通过使用已生成的伪随机数列,从而能够生成安全的一次性加密密钥(One-Time-Pad key)。
另外,由于能实现流密码,因此能够安全并且高速地传输声音、动画等多媒体文件。
此外,本发明不限定于上述的实施方式,可以在不脱离本发明的要旨的范围内进行各种各样的变形或应用。
例如,也可以使其进行服务器和移动设备之间的通信。由于上述的共享密钥的生成方法即使在移动设备环境下,也能够高速地工作并在进行密钥交换的两者之间使计算量有所侧重,因此适用于服务器与移动设备之间的通信。
另外,也可以在流密码之外应用本发明,也可以应用于汽车的无匙进入等。另外,也可以应用于HDD(hard disk drive:硬盘驱动器)的加密。例如,也可以利用本实施方式中说明了的加密方法,加密保存于硬盘驱动器的所有数据,使得只有合法的用户才能读取。另外,也可以在云(Cloud)服务的安全上应用本发明。
另外,在本申请说明书中,以预装了程序的实施方式的形式进行了说明,然而也可以将该程序储存于计算机可读取的存储介质中来提供。
本发明的一个实施方式的计算机可读介质,是存储了用于使计算机作为以下部分发挥功能的程序的计算机可读介质:公开数据设定部,设定包含质数p、自然数d、行列式的值不为1的d×d矩阵Q(mod p)、以及存在逆矩阵的d×d矩阵S(mod p)的公开数据;密钥生成部,生成包含自然数nA(mod p)、kA(mod p)的密钥;矩阵计算部,使用所述密钥,根据下式(IV)计算d×d矩阵MA(mod p),发送给通信对象;矩阵取得部,取得使用所述通信对象的密钥中包含的自然数nB(mod p)、kB(mod p)并根据下式(V)计算的、d×d矩阵MB(mod p);以及共享密钥计算部,使用由所述矩阵取得部取得的矩阵MB,根据下式(VI)算出d×d矩阵MAB(mod p)作为共享密钥。
MA=S-kAQnASkA…(IV)
MB=S-kBQnBSkB…(V)
MAB=S-kAMB nASkA…(VI)
日本申请2012-151835的公开内容其整体作为参考引入本说明书。
本说明书中记载的所有文献、专利申请、以及技术标准,在作为参考引入各个文献、专利申请、以及技术标准方面,是具体地并且与各自的记载情况相同程度地作为参考引入本说明书中的。