具体实施方式
MQV(Menezes、Qu、Vanstone)协议属于密钥协商协议族,提供了一种在公开密钥密码系统的两个用户之间共享密钥的方法,并提供了对密钥的认证。该协议是在美国专利No.5,761,305、美国专利No.5,889,865、美国专利No.5,896,455和美国专利No.6,122,736中描述的。
其具有多个变型,其中的一些变型是标准化的,因此用作以下描述的基础。MQV密钥协商协议可以是在基于有限域而定义的两个乘法群中实现的,或者是使用加法群(如椭圆曲线群)来实现的。在这两种情况下,总体算法保持相似。下表中给出了MQV的注解。
以下描述MQV协议的乘法群版本。具体地,一对通信方Alice和Bob使用双程(two-pass)MQV变型来共享密钥,表示为K。
1.Alice从区间1至(q-1)随机选择kA,其中,q是群的阶数。
2.Alice计算
并将其发送至Bob,其中,g是群生成元。
3.Bob从区间1至(q-1)随机选择kB。
5.Alice计算sA=(kA+dARA)mod q,共享秘密密钥变为
6.Bob计算sB=(kB+dBRB)mod q,共享秘密密钥变为
密钥协商协议的计算密集的部分是在确定K时执行的求幂。
当在ANSI X9.62和IEEE P1363协议中对MQV协议进行了标准化时,引入了截断操作以使协议更高效。标准化的MQV协议使用截断操作来缩短指数的比特长度,表示为
使用截断操作加速了计算,这是由于指数更短,并且,认为该截断不会影响协议的安全性。
MQV本协议的另一个版本是以下描述的使用具有密钥确认的三程(three-pass)变型的椭圆曲线MQV(ECMQV)协议。
1.Alice从区间1至(q-1)随机选择kA,其中,q是群的阶数。
2.Alice计算RA=kAP并将RA和QA发送至Bob,其中,P是生成椭圆曲线群的元素的曲线上的点。
3.Bob执行对RA的嵌入式密钥确认,以确保RA是不位于无穷大处的点,是群的元素,并且是位于椭圆曲线上的点。
4.Bob从区间1至(q-1)随机选择kB。
5.Bob计算 和 其中,h是群的余因子。
6.K是坐标为(x,y)的点,Bob使用K的x坐标作为输入来执行密钥导出函数(KDF),以导出两个辅助密钥k1和k2。这表示为(k1,k2)←KDF(xK)。
7.Bob使用消息认证码(MAC)来计算标签tB。这表示为
8.Bob将tB,QB,RB发送至Alice。
9.Alice执行对RB的嵌入式公开密钥确认,以确保RB是不位于无限大处的点,是群的元素,并且是位于椭圆曲线上的点。
11.Alice如上述步骤6处所述计算(k1,k2)。
12.Alice计算 并验证t=tB。
13.Alice计算 并将tA发送至Bob。
14.Bob计算 并验证t=tA。
15.然后,协商的会话密钥变为k2。
与上述乘法群实现类似,在实现标量乘法(也称作点乘)以确定K时,使用加法群的ECMQV协议在计算上最密集。
存在多种方法用于在求幂和标量乘法的情况下计算K时提高效率。例如,一种方法通过将通信方Alice和Bob组织为并行计算其相应K值来提高算法效率。然而,这种架构改变不会减小计算强度。
现在参照图1,密码系统10一般包括称作“Alice”的第一通信方12,其通过通信信道16与称作“Bob”的第二通信方14进行通信。每个通信方12、14是计算设备,例如计算机、服务器、蜂窝电话、PDA、ATM等,包括执行所指定的功能所必需的处理器、存储器、电源、输入和输出设备。每个通信方12、14包括密码模块18,密码模块18具有其自身的存储器20用于存储密码操作的输入、输出和中间部分,或可访问作为通信方(12、14)的一部分的外部存储器20。可见,在图1所示的示例中,第一通信方12包括密码模块18外部的存储器20,第二通信方14包括密码模块18内部的存储器20,以示意可以在任何合适的配置中提供存储数据的能力。还将认识到,在必要或期望时,存储器20可以在通信方12、14外部并且对于通信方12、14来说是可访问的(例如,经由网络连接等)。
密码模块18被配置为执行密码操作,例如加密/解密、签名和模算术等。典型地,密码模块18包括随机数生成器22、用于存储私有密钥的安全存储器30以及用于执行密码操作的算术逻辑单元ALU 28。
将认识到,存储器30可以包括(图1所示的)存储器20的全部或部分,或可以作为如图所示的密码模块18中的分离组件而提供。存储器30可以包括随机存取存储器(RAM)、只读存储器(ROM)和/或任何其他类型的合适存储结构。
ALU 28的计算操作是经由驻留于控制器24中或控制器24可访问的硬接线或编程指令来控制的,并经由指令总线35而被传送至ALU28。还提供了存储总线36,以使控制器24能够在执行和输出ALU 28的操作的结果时利用存储器30。ALU 28可以用于在控制器24的指示下执行多种操作。
将认识到,这里示例的执行指令的任何模块或组件可以包括或可访问计算机可读介质,例如存储介质、计算机存储介质或数据存储设备(可移除和/或不可移除),如磁盘、光盘或磁带。计算机存储介质可以包括用于存储信息的任何方法或技术中实现的易失性和非易失性、可移除和不可移除介质,所述信息例如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质的示例包括RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可用于存储所期望的信息且可由应用、模块或这两者访问的任何其他介质。任何这种计算机存储介质可以是控制器24的一部分或者对于控制器24来说可访问或可连接。这里描述的任何应用或模块可以是使用这种计算机可读介质可存储或以其他方式保存的计算机可读/可执行指令来实现的。
密码模块还包括用于对存储器20中存储的数据进行比较的比较器39。
通信方12、14共享椭圆曲线密码系统的参数,该椭圆曲线密码系统具有基于有限域Fp而定义的椭圆曲线群E。将包括基点P在内的参数存储在存储器30中,这些参数是控制器24可访问的。类似的操作可以实现扩展域上的椭圆曲线或更高亏格曲线,如超椭圆曲线。
每个通信方12、14具有分别以表示整数的计算机可读比特串的形式存在的长期私有密钥dA、dB以及分别对应的长期公开密钥QA、QB。公开密钥QA、QB均为满足椭圆曲线等式的基础域中的一对元素。公开密钥表示椭圆曲线上的点,其中,元素表示点的(x,y)坐标。每个通信方12、14可访问另一通信方的长期公开密钥的真实拷贝,作为从一个通信方向另一个通信方提供且由证明权威机构(CA)签名的证书,或者从CA直接提供的证书。
所期望的是,使用被示例为MQV协议的密钥协商协议,在通信方之间共享秘密密钥。现在已经认识到,可以对MQV协议所需的通信方之间的信息交换进行组织,以提供高效计算,尤其是在给定了密钥的特定条件的情况下。
具体地,当第一通信方知道在MQV密钥协商交换中第二通信方的短期公开密钥和长期公开密钥相同时,第一通信方可以使用单个标量乘法运算或单个求幂运算而不是两个运算或线性组合,来加速MQV共享秘密密钥的计算。确定共享秘密密钥K所需的密集计算的数目减少加速了MQV协议。
无意地或有意地,通信方的短期公开密钥和长期公开密钥可以是相同的。可以存在以下情形:适当地,将短期公开密钥有意设置为与长期公开密钥相同。例如,可以存在以下情形(例如电子邮件):接收方发送短期公开密钥从而使接收方的短期公开密钥与其长期公开密钥相同并不是优选的或可行的。在另一情形中,可能需要经过认证的公开密钥(也称作证书),并且这些经过认证的公开密钥尚不可用。例如,金融银行的在线服务器可以使用证书进行操作,而在线银行客户端在没有证书的情况下使用互联网浏览器来安全地连接至服务器。客户端可能不需要证书以与银行的服务器相连,这是由于客户端的短期密钥和长期密钥被有意地设置为相同。
图2中利用数字200总体上示出了一种利用三程ECMQV协议来计算共享秘密密钥的方法。在图2所示的步骤所表示的框架内,可以获得ECMQV协议的加速。假定没有想到ECMQV的加速,则Alice发起会话并实现指令集合(210),其中,她首先在1至(q-1)之间随机选择整数作为短期私有密钥kA(212),其中,q是群的阶数。她根据RA=kAP来计算作为曲线上的点的其短期公开密钥RA(214),其中,点P是群生成元。然后,Alice向Bob发送其长期公开密钥QA和短期公开密钥RA(216)。
然后,Bob执行指令集合(220)。他在1至(q-1)之间随机选择他自己的短期私有密钥kB(224)之前,执行对所接收的公开密钥RA的嵌入式公开密钥确认(300)。图3中利用数字300详细示出了嵌入式密钥确认。首先,根据RA不是无穷大处的点(即,RA≠∞)这一条件来验证公开密钥(在这种情况下是RA)(302)。如果该条件(302)为真,则验证下一条件(304),使得RA的笛卡尔坐标是有限域Fq内的适当表示的元素。最后,将RA的坐标插入椭圆曲线的等式中,以查看RA是否位于由参数a和b定义的椭圆曲线上(306)。如果满足所有条件,则算法返回“有效”(308)。如果未满足任一条件,则算法返回“无效”(310)。
返回到图2,在Bob确认密钥R
A(300)并随机选择短期私有密钥k
B(224)之后,他继续根据R
B=k
BP来计算对应的短期公开密钥R
B(226)。这用于计算中间值
(228)。
是R
B的截断版本,以缩短比特长度,从而提高计算效率。共享秘密密钥K取决于
作为示例,根据
来计算K(230),其中,h是群的余因子。使用K的x坐标,通过合适的密钥导出函数(KDF),导出两个其他秘密密钥k
1和k
2(232)。利用这些秘密密钥k
1、k
2,使用消息认证码(MAC),计算认证标签。Bob根据
使用秘密密钥k
1,计算认证标签t
B(234)。将串“2”包括在MAC输入中以指示标签源自响应方。然后,他将参数Q
B、R
B和t
B传递至Alice(236)。
在从Bob接收到参数时,Alice逐步执行另一指令集合(240)。Alice对R
B执行嵌入式公开密钥确认(300),然后计算中间值
(244)。共享秘密密钥K取决于
在本示例中,根据
(246)。将相同KDF应用于K的x坐标(即,x
K),从而KDF(x
K)给出秘密密钥k
1、k
2(232)。Alice计算认证标签
(250)并验证t=t
B(252)。如果验证了标签相等,则Alice计算辅助认证标签以发送至Bob(256),其中,
(254)。将串“3”包括在MAC输入中,以指示标签源自发起方。
然后,在以下指令集合(260)中,Bob计算对应的标签
(262)并验证t=t
A(264)。在Alice和Bob的设备中,如果条件t=t
A为真,则已经共享秘密密钥k
1和k
2。对认证标签t
A和t
B的成功验证使每个实体确信:其他实体确实已计算出共享秘密密钥K(由于计算标签需要k
1的知识因而还需要K的知识),通信并未被篡改(假定MAC是安全的),以及其他实体知道与其进行通信的实体的身份(由于身份被包括在MAC处理后的消息中)。在验证了上述条件之后,ECMQV协议返回从KDF导出的所协商的秘密会话密钥k
2(270)。然后,可以利用会话密钥k
2,使用k
2下的对称加密,在通信信道16上交换信息。
在ECMQV协议内的任何步骤,如果验证过程未返回“真”,则将终止协议。
上述ECMQV协议的在计算上最密集的方面是标量乘法运算,更普遍地称作点乘。使用计算共享秘密密钥所需的标量乘法的数目来测量ECMQV协议的效率。在图2和3所述的协议中,Alice执行标量乘法以计算
(246),Bob执行标量乘法以计算
(230)。具体地,Alice和Bob均执行1.5个标量乘法以计算上述格式的K。在Alice的情况下,ALU(28)计算
(246)。在括号项
内,执行乘法
其中,
是整数,Q
B是椭圆曲线上的点。由于
已被截断并具有较短的比特长度,因此运算
的代价为半个标量乘法或0.5个标量乘法。当计算整数hs
A与椭圆曲线点
之间的乘积时,进行下一标量乘法,其代价为1个完整的标量乘法。因此,计算K的代价为总共(1+0.5)=1.5个标量乘法。
为了减少标量乘法的数目,从而加速密钥协商协议,基于在通信方的公开密钥对相等使得R
B=Q
B和/或R
A=Q
A时可以进一步降低标量乘法代价的认识,如图4所示对图3的框架进行适配。对于Bob,当R
A=Q
A时,进行加速计算,这允许共享秘密密钥计算简化并变为K=uQ
A,其中,简化因子u取决于
在特定示例中,
类似地,对于Alice,当R
B=Q
B时,进行加速计算,这允许共享秘密密钥计算简化并变为K=vQ
B,其中,简化因子v取决于
在本示例中,
需要1.0的标量乘法代价来计算共享秘密密钥。因此,图4所述的协议可以被实现为比图3所述的协议快多达33%。
参照图4,示出了当识别出通信方使用一对相同的公开密钥时,通过减少标量乘法的数目来加速ECMQV协议的实施例。在本实施例中,Alice和Bob将其相应短期公开密钥有意设置为与其长期公开密钥相同。加速算法开始于Alice执行一批指令(211),包括:随机选择短期私有密钥kA(212);将短期公开密钥RA有意选择为等于长期密钥QA(215);以及将QA和RA发送至Bob(216)。
在接收到公开密钥对时,Bob确定密钥是否相同。如图4所示,Bob通过首先将QA和RA进行比较(612)来开始执行一系列指令(610)。如果QA不等于RA,则Bob继续执行步骤集合221。参照图5,更详细地示出了集合221。尽管集合221与先前在集合220中解释的一系列步骤类似,但是集合221不使用短期私有密钥kB来计算RB。而是,在集合221中,按照步骤227,Bob将RB有意选择为等于QB。
然而,如果在图4的判断过程(612)中将Q
A和R
A识别为相等,则Bob采用加速标量乘法格式(701)。参照图6,首先,Bob执行对R
A的嵌入式公开密钥确认(300),在1至(q-1)之间随机选择k
B(712),然后将R
B有意选择为等于Q
B(715)。计算中间分量s
B(716),接着简化因子
(718)。这用于使用简化标量乘法格式来计算共享秘密密钥K=uQ
A(720)。然后,使用KDF(x
K)来导出两个密钥k
1和k
2(722)。然后,Bob使用MAC算法来计算认证标签t
B(724)。然后,他将Q
B、R
B和t
B发送至Alice(726)。
应当理解,如果Bob不确定Alice可能将她的短期公开密钥RA有意设置为等于她的长期公开密钥QA,则Bob可以执行公开密钥比较(612)。如果Bob已确定Alice的短期和长期公开密钥相同(例如通过事先建立的某种协商),则Bob可以选择不实现公开密钥比较(612),从而减小计算负载。因此。在接收到Alice的公开密钥对时,Bob可以直接采用加速标量乘法格式(701)。即,如果事先理解公开密钥是相同的,则步骤216可以直接前进至步骤701。应当理解,假定Alice事先知道Bob已经将其短期和长期公开密钥有意选择为相同,则Alice还可以选择不执行比较(616)。类似地,从步骤236至726,算法可以直接前进至步骤800。然而,在图4所示的具体示例中,通过Alice和Bob的比较来进行确定。
返回到图4,在从Bob接收到公开密钥对时,Alice通过首先将QB和RB进行比较(616)来开始执行一系列指令(614)。如果QB不等于RB,则Alice继续执行图2详细示出的原始步骤集合240。然而,如果QB和RB相等,则Alice采用加速标量乘法格式(800)。参照图7,首先,Alice执行对RB的嵌入式公开密钥确认(300)。计算中间值sA(812),接着简化因子(814)。这用于使用简化标量乘法格式来计算共享秘密密钥K=vQB(816)。然后,使用KDF(xK)来导出两个密钥k1和k2(818)。然后,Alice使用MAC算法来计算认证标签t(820)并验证t=tB(822)。Alice计算tA(824)并将其发送至Bob(826)。
再次参照图4,在Alice完成她的算法(240)或(800)之后,Bob执行步骤集合(260),其中,他在步骤262计算认证标签t并验证t=tA(264)。如果在加速ECMQV过程中验证了所有标签,则对于Alice和Bob,所协商的会话密钥是k2(270)。
对于图4所述的实施例,是否将短期公开密钥(即,RA和/或RB)有意选择为与对应的长期公开密钥相同是可选的。如果不有意选择为相同,那么例如,可以通过RA=kAP来确定Alice的短期公开密钥。类似地,Bob可以选择不有意选择一对相同的公开密钥,从而可以计算RB=kBP。然而,应当注意,当通信方将短期公开密钥有意选择为与长期公开密钥相同时,就不需要用于从短期私有密钥获得短期公开密钥的计算。因此,在通信方处有意选择相同公开密钥在确定短期公开密钥时减小了计算负载。
可以在运行时期间检测RB=QB和/或RA=QA的条件,并预先将其存储在包含长期公开密钥Q和Q的预先计算标量倍数在内的大型证书中。该预先识别的条件可以用于创建公开密钥QA的倍数的预先计算表,对所述倍数进行组合以提供标量uQA。这将进一步加速共享秘密密钥K的计算。
通过考虑图4可以认识到,确定公开密钥是否相同的能力在通信方之间的通信中提供了多功能性。例如,Alice可以使用两个不同的公开密钥,但如果更方便的话,Bob可以使用相同的公开密钥。例如,如果Bob是具有有限计算功率的计算设备,则他可以选择不执行与短期公开密钥相关联的标量乘法。
Alice将在从Bob接收到数据时确知这一点,并可以加快共享密钥的计算。
类似地,Alice可以选择使用相同的公开密钥,允许Bob加快共享密钥的计算,但Bob可以选择使用不同的公开密钥来与Alice进行通信。
最后,Alice和Bob均可以选择使用相应的相同公开密钥,并均将加快共享密钥的计算。
在计算中间值sA、sB时,Alice和Bob可以分别使用其长期私有密钥dA、dB来代替短期私有密钥kA、kB。然而,这将导致在连续的会话中使用相同密钥,这一般被视为不期望。
在该方法的另一优选实施例中,可以使用表来进一步加速MQV过程。可以将通过识别相同公开密钥对而获得的代价节约应用于针对实现同时多点乘法而描述的方法。如图8a所示,传统地用于加速计算的方法是采用多点乘法,也称作Shamir诀窍。首先,必须将共享秘密密钥的原始等式(即,
)重新配置为与一般线性组合形式mP+lQ相匹配。去除括号,给出
使得在mP+lQ的表示中,m=hs
A、P=R
B、
以及Q=Q
B。由于R
B和Q
B均为点,因此密钥K的表达式具有一般形式mP+lQ,即两个标量倍数之和。
在图8a中,首先建立(902)预定比特数目w的窗口宽度。然后,建立(904)R
B的小倍数α的表(920),并建立(906)Q
B的小倍数β的表(922)。表项由可能的比特组合的列(如α=1001
2)和对应的标量倍数的列(如1001
2R
B)构成。然后,使用窗口宽度为w的窗口来检查(908)标量hs
A和
从每个相应的表中检索与每个窗口相对应的R
B和Q
B的标量倍数(910)。将来自两个窗口的表项之和添加至累积器中(912)。然后,根据窗口的宽度w来使累积器加倍w次(914),然后,检查下一窗口(916)。重复检查标量,并且如上所述针对每次重复将表项添加至累积器中并使累积器加倍w次(924),直到计算出共享秘密K(918)为止。该同时多点乘法格式(即,
)与图3所示的计算相比提供了0.25个标量乘法的计算代价节约,从而需要总共1.25个标量乘法。
当通信方的一对公开密钥相同时,可以进一步加速上述同时多点乘法方法。在图8a所示的计算中,在使用不同公开密钥的情况下,需要两个表(920、922)来执行同时乘法。参照图8b,当短期公开密钥和长期公开密钥相同(例如,R
B=Q
B)时,通信方仅需要一个表(942)来执行窗口方法。因此,加速的同时标量乘法(720、816)通过建立w比特的窗口宽度(926)而开始,然后,建立R
B的标量倍数的表(928)。使用窗口宽度为w的窗口来检查标量hs
A和
(930)。检索与每个窗口相对应的R
B的标量倍数(932),并将其存储到累积器中(934)。然后,根据窗口的宽度w来使累积器加倍w次(936),然后,检查下一窗口(938)。重复检查标量,并且如上所述针对每次重复将表项添加到累积器中并使累积器加倍w次(944),直到计算出秘密密钥K(940)为止。
应当认识到,还可以将使用相同公开密钥而得到的、应用于同时点乘的表的代价节约方法应用于联合构造的表。因此,不需要构造两个分离的表或构造公开密钥对RA、QA和RB、QB的联合表减少了运行时间,并可以实现明显大于20%的代价节约。
还应当认识到,使用相同公开密钥对而对密钥协商协议的加速还适用于使用乘法群的实现。上述实现利用了椭圆曲线群,在该椭圆曲线群中,群运算由加法符号指代。如作为非零整数模p的集合的群Fp之类的其他群使用乘法符号。椭圆曲线设置中的加法符号由乘法群设置中的乘法符号替代。
因此,参照图9,作为背景,利用标号1000来示出在乘法群设置中使用MQV总体计算共享秘密密钥K的方法。在Alice的动作集合(1010)中,从区间1至(q-1)随机选择短期私有密钥k
A(1012),其中,q是群的阶数。Alice计算对应的短期公开密钥
(1014),其中,g是群生成元,并且,Alice将R
A和长期公开密钥Q
A发送至Bob(1016)。在Bob的类似动作集合(1020)中,从区间1至(q-1)随机选择短期私有密钥k
B(1022)。Bob计算对应的短期公开密钥
(1024),然后将R
B和长期公开密钥Q
B发送至Alice(1026)。然后,Alice在动作集合(1030)中使用这些密钥来计算中间值
(1032),接着共享私有密钥的求幂公式
(1034),其中,h是群的余因子。在标号1040,Bob计算中间值
(1042),使用该中间值来计算共享秘密密钥的求幂公式
(1044)。
参照图10,示出了加速针对乘法群的图9的实现的实施例。与上述加速ECMQV类似,当一对公开密钥具有相同值时,减少密集计算的数目。在标号1012,Alice从区间1至(q-1)随机选择短期私有密钥k
A。Alice将短期公开密钥R
A有意选择为等于长期公开密钥Q
A(1015),并将R
A和Q
A发送至Bob(1016)。类似地,在标号1022,Bob从区间1至(q-1)随机选择短期私有密钥k
B。Bob将短期公开密钥R
B有意选择为等于长期公开密钥Q
B(1025),然后将R
B和Q
B发送至Alice(1026)。在步骤1110,Alice计算中间值
(1112),然后将R
B和Q
B进行比较(1114)。如果Bob的一对公开密钥相同,使得R
B=Q
B,则Alice通过计算简化指数
(1118)或
(即,y取决于
),然后计算指数K=R
B y(1120),来计算共享秘密密钥的加速求幂公式。否则,如果R
B≠Q
B,则Alice计算共享秘密密钥的非加速求幂公式
(1116)。类似地,在标号1122,Bob计算中间值
(1124)并将R
A和Q
A进行比较(1126)。如果Alice的一对公开密钥相同,使得R
A=Q
A,则Bob通过计算简化指数
(1130)或
然后计算指数K=R
A z(1132),来计算共享秘密密钥的加速求幂公式。否则,如果R
A≠Q
A,则Bob计算共享秘密密钥的非加速求幂公式
(1128)。
在图10所示的实施例中,如果Alice和Bob不确定另一方是否将使用相同的公开密钥,则可能需要比较过程(1114、1126)。在Alice和Bob确定可以采用相同公开密钥对的情况下,可以避免比较过程(1114、1126)并可以直接应用加速MQV协议。
加速MQV方法的另一实施例使用同时求幂,与上述同时多点乘法类似。用于确定密钥的公式
可以被重新配置为
该重新配置允许使用称作同时多求幂的技术来计算密钥,其中仅使用一个平方集合。
参照图11a,针对值不相等的两个公开密钥示出了同时多求幂的方法。首先建立(1202)预定比特数目w的窗口宽度。然后,建立(1204)R
B的小指数α的表(1220),并建立(1206)Q
B的小指数β的表(1222)。表包括可能比特组合的列(如α=1001
2)和从对应的求幂得到的值的列(如
)。然后,使用窗口宽度为w的窗口来检查指数hs
A和hs
AR
B(1208)。从每个相应表中检索利用与每个窗口相对应的指数对R
B和Q
B的求幂的结果(1210)。将来自两个窗口的表项的乘积乘入累积器中(1212)。然后,根据窗口的宽度w将累积器中的值平方w次(1214),此后,检查下一窗口(1216)。重复检查标量,上表项乘入并存储在累积器中,并如上所述针对每次重复将累积器平方w次(1224),直到计算出共享秘密K(1218)为止。
参照图11b,如果一对公开密钥相同,则加速MQV方法的优选实施例去除求幂表(1222)之一。在相同公开密钥对的情形中,简要地参照图10,步骤1120和1132可以使用这里描述的对应加速算法。在图11b中,加速同时求幂通过建立w个比特的窗口宽度而开始(1226),接着利用小指数来建立R
B的求幂的结果的表(1228、1242)。使用窗口宽度为w的窗口来检查指数hs
A和
(1230)。检索(1232)与每个窗口相对应的R
B的幂并将其存储到累积器中(1234)。然后,根据窗口的宽度w将累积器平方w次(1236),然后,检查下一窗口(1238)。重复检查标量,并且如上所述针对每次重复将表项添加至累积器中并将累积器平方w次(1244),直到计算出共享秘密K(1240)。
应当认识到,可以形成加速MQV算法的不同架构,包括:例如,组织计算的定时,以使通信方并行执行算法的部分。参照图12,针对基于乘法群的加速MQV的情况,示出了并行计算的一个备选实施例。Alice和Bob均并行执行初始步骤集合(1310、1320)。在标号1311,Alice随机选择短期私有密钥kA,将短期公开密钥RA选择为等于长期公开密钥QA,并将RA和QA发送至Bob。同时,在Alice执行步骤1311时,Bob执行步骤1321,从而产生kB,将RB有意选择为等于QB,然后将RB和QB发送至Alice。
并行地,Bob和Alice均接收另一方的一对相同公开密钥。然后,Alice与Bob并行地确定是否Q
B=R
B(1330),Bob还确定是否Q
A=R
A(1340)。对于Alice,在确定相等性(1330)之后,如果R
B≠Q
B,则Alice通过首先计算中间值s
A,然后计算共享秘密密钥
来计算非加速求幂公式(1350)。然而,如果R
B=Q
B,则Alice通过首先计算s
A,然后计算
最后计算K=R
B y,来计算加速求幂公式(1370)。与Alice并行地,在Bob确定相等性(1340)之后,如果R
A≠O
A,则Bob通过首先计算中间值s
B,然后计算共享秘密密钥
来计算非加速求幂公式(1360)。然而,如果R
A=Q
A,则Bob通过首先计算s
B,然后计算简化指数
最后计算K=R
A z,来计算加速公式(1380)。还应当认识到,在椭圆曲线组上,并行计算配置还适用于加速MQV算法。
应当注意,如果Alice和Bob知道正在使用利用相同密钥对的加速算法,则步骤1330和1340中的比较步骤可能不是必要的。换言之,如果Alice事先已经知道,则Alice不需要验证Bob的密钥对是否相同(1330)。因此,在上述情况下,从步骤1320,该算法可以直接前进至步骤1370。类似地,从步骤1310,该算法可以直接前进至步骤1380。
在加速MQV协议的备选方案中,可能仅需要通信方发送单个公开密钥,这是由于短期公开密钥和长期公开密钥相同。这可能减少通信方之间传送的数据量,从而允许使用更大的密钥。
参照图13,示意了仅发送单个公开密钥的基于乘法群的加速MQV协议的实施例。应当理解,Alice和Bob都知道使用相同公开密钥来实现加速算法。Alice通过随机选择kA(1402)和有意选择RA=QA(1405)而开始。然后,Alice将QA发送至Bob(1411)。与两个公开密钥的数据大小相比,这减少了在网络上发送的数据量。
继续参照图13,在Alice已发送来自步骤1411的数据之后,Bob继续随机选择k
B(1412)并有意选择R
B=Q
B(1415)。然后,类似地,Bob将Q
B发送至Alice(1420)。然后,Alice使用加速MQV算法并计算中间分量s
A、简化指数
最后计算共享秘密密钥K=R
B y(1426)。应当认识到,R
B=Q
B。以类似的方式,Bob使用来自步骤1411的接收数据来计算加速MQV算法。Bob计算中间分量s
B、简化指数
最后计算共享秘密密钥K=R
A z(1432)。应当注意,R
A=Q
A。应当认识到,还可以在椭圆曲线群上应用这里描述的这种备选方案。
还可以在加速MQV算法的并行架构中应用数据大小节约。在加速MQV算法的另一实施例中,参照图14,示意了并行架构。与前述实施例类似,应当理解,Alice和Bob都知道使用相同公开密钥来实现加速算法。Alice执行步骤集合(1503),其中,她选择kA并有意选择RA=QA。并行地,Bob执行步骤集合(1505),其中,他选择kB并有意选择RB=QB。然后,Alice将QA发送至Bob(1512),Bob将QB发送至Alice(1516)。在接收到数据之后,Alice使用加速算法来计算共享秘密密钥K(1524)。并行地,Bob使用加速算法来计算共享秘密密钥K(1528)。将认识到,加速MQV算法中的并行架构的上述单个公开密钥传送也适用于椭圆曲线群。
在加速MQV协议的备选方案中,在已产生短期公开密钥的相同ALU上可以进行对通信方的相同公开密钥对的验证。例如,在Alice计算RA之后,她继续验证是否RA=QA。该方案的优点包括:如果公开密钥对相同,则仅需要向通信方发送单个公开密钥而不是两个密钥,从而减小了所需的网络带宽。
参照图15,示意了仅发送单个公开密钥的基于乘法群的加速MQV协议的实施例。在本实施例中,每个通信方具有以下选项:将短期公开密钥有意选择为与长期公开密钥相同。Alice随机选择k
A(1402)并通过根据R
A=Q
A或计算
来确定R
A(1404),以开始操作。然后,Alice确定是否Q
A=R
A(1406)。如果Q
A≠R
A,则Alice向Bob发送R
A、Q
A和相等=假(1408);否则,如果Q
A=R
A,则Alice向Bob发送Q
A和相等=真(1410)。变量“相等”可以是小比特大小(例如1比特)的布尔参数,指示公开密钥对是否相同。在公开密钥对是相同的情形下(即,相等=真),仅单个公开密钥(如长期公开密钥)和小比特大小参数相等发送至通信方。与两个公开密钥的数据大小相比,这减少了在网络上发送的数据量。
继续参照图15,在Alice已发送来自步骤1408或步骤1410的数据之后,Bob继续随机选择k
B(1412)并根据R
B=Q
B或通过计算
来确定R
A(1414)。然后,类似地,Bob确定是否Q
B=R
B(1416)。如果Q
B≠R
B,则Bob向Alice发送R
B、Q
B以及相等=假(1418);否则,如果Q
B=R
B,则Bob向Alice发送Q
B和相等=真(1420)。然后,Alice使用来自步骤1418或步骤1420的接收数据来确定是否相等=真(1422)。如果相等=假,则Alice使用非加速MQV方法来计算共享密钥K(1424)。如果相等=真,则Alice使用加速MQV算法并计算中间分量s
A、简化指数
最后K=R
B y(1426)。以类似的方式,Bob使用来自步骤1408或步骤1410的接收数据来确定是否相等=真(1428)。如果相等=假,Bob使用非加速MQV方法来计算共享密钥K(1430)。如果相等=真,则Alice使用加速MQV算法并计算s
B、中间值
最后K=R
A z(1432)。应当认识到,还可以在椭圆曲线群上应用这里描述的该备选方案。
还可以在加速MQV算法的并行架构中应用数据大小节约,数据大小节约是通过由相同通信方计算短期公开密钥和确定相应的相同密钥对状态而得到的。在加速MQV算法的另一实施例中,参照图16,示意了并行架构。Alice执行步骤集合(1502),其中,她选择k
A并确定R
A。Alice可以有意选择R
A=Q
A或计算
并行地,Bob执行步骤集合(1504),其中,他选择k
B并确定R
B。Bob可以有意选择R
B=Q
B或计算
然后,Alice和Bob同时确定他们的相应公开密钥对是否相等(1506、1508)。如果Q
A≠R
A,则Alice向Bob发送R
A、Q
A和相等=假(1510);否则,如果Q
A=R
A,则Alice向Bob发送Q
A和相等=真(1512)。类似地,并行地,如果Q
B≠R
B,则Bob向Alice发送R
B、Q
B和相等=假(1418);否则,如果Q
B=R
B,则Bob向Alice发送Q
B和相等=真(1420)。在接收到数据之后,Alice和Bob并行确定是否相等=真(1518、1520)。对于Alice,如果相等=假,则她使用非加速算法来计算共享秘密密钥K(1522)。否则,如果相等=真,则她使用加速算法来计算共享秘密密钥K(1524)。并行地,从步骤1520继续,对于Bob,如果相等=假,则他使用非加速算法来计算共享秘密密钥K(1526)。否则,如果相等=真,则他使用加速算法来计算共享秘密密钥K(1528)。将认识到,加速MQV算法中的并行架构的上述单个公开密钥传送也适用于椭圆曲线群。
上述示例中的每一个指示从一个通信方向另一个通信方发送公开密钥。备选地,可以从证书权威机构或从目录获得长期公开密钥,或者根据先前交换可以将长期公开密钥存储在存储器30内。因此,在仅使用长期公开密钥的情况下,信息在通信方之间的直接传送可以由MAC的交换(tB)发起。
应当认识到,基于相同公开密钥的加速不限于MQV算法。包括短期公开密钥和长期公开密钥的线性组合的其他算法也可以适用。
一类这样的协议是MTI协议,如Handbook of Applied Cryptology,Menzes et al.ISBN 0-8493-8523-7的第518页所述。如图17所示,可以如下实现MTI AO协议:Alice和Bob具有相应的长期私有/公开密钥a、ZA和b、ZB,与另一通信方交换长期公开密钥ZA、ZB或使长期公开密钥ZA、ZB对另一通信方可用。Alice生成短期私有密钥x,并计算对应的短期公开密钥αx,将对应的短期公开密钥αx发送至Bob。
类似地,Bob通常生成短期私有密钥y并向Alice发送短期公开密钥αy。
在Alice处根据(αy)aZB x并在Bob处根据(αx)bZA y来计算共享密钥K。
如图17所示,Bob使用长期密钥b、αb作为短期密钥,使得y=b和αy=ZB,并通过向可以对值进行比较的Alice发送ZB,或者通过发送具有消息“相等=真”的形式的指示,或者通过在先协商(例如在长期公开密钥的交换期间),来通知Alice。
在Alice知道a和x时,Alice可以计算共享密钥K=(ZB)a+x,以及,在Bob知道b时,Bob计算(αxZA)n。在Bob和Alice处均执行一次求幂以减小总体计算负载。
尽管参照特定具体实施例描述了本发明,但是在不脱离本发明的精神和范围的前提下,对本发明的各种修改对本领域技术人员来说显而易见。此外,尽管在由软件选择性地激活或再配置的通用计算机中方便地实现所述各种方法,但是本领域技术人员还可以认识到,可以以硬件来执行这些实施例。