使用公共密钥的加密方法

文档序号:6410944阅读:507来源:国知局
专利名称:使用公共密钥的加密方法
技术领域
本发明旨在提供一各基于进行模P的量计算的离散算法的、使用公共密钥的所谓加密方法。
它可应用于产生信息数字帖码、在两个实体之间的认证期间或在数据编码中。
在这类方法中,其安全性的基础是必需对某些函数逆运算并尤其涉及离散算法的极其困难性。
如果给出数学关系式y=gxmodulop-以下写为y=gxmodp(它表示y为gx被P除的余数),这个问题是,当我们已知P、g及Y时求解X。一旦当P的字长达到或超过512位及X的字长达到或超过128位,在当前的学识状态下该问题是不可能求解的。
在这类系统中,通常具有一个权威机构,由它提供构成模的大字长数P。该权威机构同样选择一个称为基数的整数,以便由g形成集,这就是说数gxmodp形成的集,其中x属于区间〔0,p-1〕,或最长字长至少为2128的子集。
参数p及g称为是“公共”的,这就是说,它们是由权威机构提供给所有附属该权威机构的用户的。
根据某些变型方案,这些参数是由每个用户个别选择的,并在此情况下作为其公共密钥的组成部分。
实施这类加密系统的主要缺点是必需具有相当大的计算和存储手段,因为要实现复杂的计算。
事实上,量gxmodp的计算在于实现模的乘法运算,这是很花费时间和存储空间的。在仅使用标准微处理机的简单电子装置上这类运算操作不大可能实现。
对于具有专用于这类计算的处理机的电子装置,尽管能合乎要求,但在计算时间及用于中间结果所需的存储空间方面有限制。
事实上,通过传统的“平方相乘”方法(以英语缩写SQM(Square·Multiply)公知),通常,量gxmodp的计算是相当花成本的,因为它平均等同于3/2 Log2(P)次乘法运算。
根据该方法,当K为n位字长时,我们计算g的所有次幂,这就是说,所有次方g0,g1,g2……gn,然后在这些幂之间进行所需乘法运算(例如g17=g1·g16)。
根据该“平方相乘”方法,单gk就需要n/2次乘法及n个乘方。
在一次需要提供N个帧码的情况下,我们将产生Ngk,那么就要进行并列计算。
并列“平方相乘”法需要N×n/2次乘法及n个乘方。
由E.BRICKELL等人提出的一种缩写名称为BGKW的方法能减小平方相乘方法情况中的乘法次数,但导致需要存储大量预先计算的常数,而由此需要设置大量的存储器是非常不利的。
在该方法中导入N个值的并列计算意味着使用多个寄存器来存储中间结果。
因此在涉及非常短时间中产生大量帖码的情况下该方法变得更加受限制,因为在此情况下要导入并列计算。
本发明的目的在于解除所有这些缺点。它能对于在所有加密系统并尤其是使用微处理机的智能卡类型的便携装置上实施加密算法提供一种灵活的解决方案,及计算时间和存储空间方面的花费少。
根据本发明的第一目的,提供的加密方法能降低模的乘法次数,以致根据所采用的加密方案(Schnorr或El Gamal)可获得15%至40%的计算时间方面的增益。
根据本发明,提出了两种方案来减少乘法次数,一种方案在于产生具有很少为1的位数的“中空”指数K,但其位长足够保持系统的整体安全性;另一方案在于并列地实现g的幂计算,同时它们之间组合指数,以便对于给定指数不含二次地重复同一幂的计算。
更具体地,本发明旨在提供一种使用公共密钥的加密方法,它基于进行量gkmodp计算的离散算法,式中p是称为模的质数,K是通常长度为n位的随机数,及g是称为基数的整数,其中一个实体E实现认证和/或帖码和/或编码操作,并包括与另一实体的信号交换,在另一实体中将涉及这个量,其特征在于对于该实体包括以下的步骤-产生一个长度为N位的随机指数,N等于n+b位;-计算该指数的汉明(hamming)加权C并与一预先确定的值h相比较;-验证该随机值K是否满足条件C≥h,
-在汉时加权小于h的情况下,放弃该随机值K并重新开始产生新的指数,直到获得满足该条件的一个指数为止,-或在相反情况下保存该值,-根据保存值计算表达式gkmodp,-在与另一实体交换电子信号时使用该表达式。
本发明还旨在一种使用公共密钥的加密方法,它基于进行量gkmodp计算的离散算法,式中P是称为模的质数,K是通常长度为n位的随机数,及g是称为基数的整数,其中一个实体E实现认证和/或帖码和/或编码操作,并包括与另一实体的信号交换,在另一实体中将涉及这个量,其特征在于对于该实体包括以下的步骤-产生一个加权为ai的n位随机指数集kj,其由以下表达式表示kj=∑ai2i,-并列地计算g2i的幂,同时组合这些指数,以使得对于一个指数计算出的g的幂用于另外其起作用的指数,-对于每个给定kj,计算还未计算的g的幂,并将这些幂重组合以获得所需的表达式gkjmodp,-在与另一实体交换信号时使用该表达式。
根据第一实施方式,并列计算及重组合的步骤包括下列操作-成对地组合指数以获得反映它们公共部分的指数kc,并根据获得的组合结果反复地进行这些组合,-对于每个kc值这样地计算量Gkc=gkcmodp,用对于组合获得的指数kc组合一个指数kj,该指数属于该组合,以便消除公共部分并仅保留不同部分,确定反映给定指数kj及给定指数kc之间不同部分的指数k′j,-这样地计算Gk′j∶Gk′j=gk′jmodp,-通过进行对每次信号交换获得的各量Gkc之间的乘法运算确定表达式Gkjmodp。
在第二实施方式,并列计算及再组合的步骤包括以下的操作-在它们之间组合指数以形成具有公共部分的指数的可能组合子集,-确定反映每个组合子集公共部分的指数kc,使给定加权的非零位相应于所考虑组合的相同加权的非零位。
-对于每个kc值这样地计算量Gkc∶Gkc=gkcmodp,-对于指数kj所属的每个组合子集使每个指数kj与获得的所有指数相组合,以便消除公共部分并仅保留不同部分,-确定反映给定指数kj及给定指数kc之间不同部分的指数k′j,-这样地计算量Gk′j=gk′jmodp,-通过对于每个kj进行量G′kj及GkD之间的一次乘法运算来确定表达式gkjmodp。
根据本发明的另一目的,允许获得指数之间共同部分的组合是由逻辑功能“与”来实现的。
根据本发明的另一目的,允许获得指数之间共同部分的组合是内逻辑功能“异或”来实现的。
在阅读以下由说明例及非限制性形式并参照附图描述和给出的说明后将会对本发明的其它特点和优点更加明白

图1用于实施本发明的系统的原理图;图2表示第一应用中方法的基本步骤的功能图;图3表示根据第一实施方式的第二应用中方法的基本步骤的功能图;图4表示根据第二实施方式的第二应用中方法的基本步骤的功能图。
在图1上我们看到实施本发明的加密方法的一个系统的原理图。
该系统由一个希望执行电子信号交换的实体E1和至少另一实体E2组成。这两个实体分别设有一个处理单元(CPU)11、30,一个通信接口,一个随机存取存储器(RAM)13、32和/或只读存储器(ROM)14、34和/或非易失性可存入或可重存入存储器(EPROM或EEPROM)15、33及一个地址母线、数据母线、控制母线16、35。
处理操作单元和/或ROM包括与涉及本发明方法的计算步骤执行相对应的程序或计算资源,这就是说,当认证期间或当电子帖码发生时或当待发送到其它实体的电子信号加密时的程序或计算资源。
处理单元或ROM具有模数乘法、加法及减法所需的资源。
同样地处理单元和/或ROM包括适用于每种加密算法及参数g及p的加密功能。指数kj可预先被权威机构存储在可重存入存储器中,或陆续地由一个随机发生器及一个秘密随机值源ko来产生。此外,实体E1具有一个密钥X。
本发明尤其适用于设置在银行业务领域中的加密系统,在那里当依据计算进行交易时需要高安全性。也适用于这样的情况,即人们希望对信息发送进行认证,该信息是来自其它实体以电子信号形式发送的。还适用这样的情况,即当与其它实体交换信息时需要给信息加上帖码。
实际上,要求实现交易的实体可能是,譬如一个带有集成电路的卡、如智能卡,而目标实体是银行终端。
以下的说明将在对数字信息加帖码的方法应用领域中进行,当然,本发明适用于基于离散算法的所有加密系统。
根据本发明的方法提供了用于减少大量乘法运算的第一方案,它尤其适用于存储器位置少的环境情况。
在此情况下,其原理是在汉明(Hamming)加权选择得尽可能小的方向上产生“中空”的指数kj,并一定保留具有这些指数的随机特征。
为此,该方法在于按需要逐渐地或在任何交换前预先地产生指数kj。当然在此情况下,这些指数将被存储。产生的指数不是具有n位的长度,而是具有较多的n+b位的长度,并满足以下规定的条件。
当产生了n+b位的指数k时,该方法接着在于,计算该指数的汉明加权C,然后与一个预先规定的值h相比较。
如果比较结果为C≥h,则保留该指数并将被计算表达式gkmodp的实体使用,及在数字信号发送时使用该表达式,在数字信号中该表达式将用做譬如帖码。
在参数c不能满足所需条件的情况下,将相应的指数k放弃,并产生一个新的指数;重新开始验证条件满足的步骤,直到获得能满足该条件的一个指数k为止。
并且,这种方案允许能够实现较少的乘法运算,并能保持与使用更少位数的指数相同程度的安全性。
根据一个具体的例子,我们选择c=h,可以减小乘法运算次数的最大值。
实际上,对于位数为n+b位的指数(其中n=log2P),其中汉明加权为h,为了与位数为n位的指数时有相同数目的组合,则应验证以下的关系式2n≤Chn+b
及(N+b)/2+h≤n(允许减少待执行的计算次数的条件)这就是说,2n≤(N+b)!/(n+b-h)!h!及b+2h≤n由我们确定的数b及h是对于一个给定的n(例如n=160)解这两个不等式获得的。
作为说明,将根据本发明的方法获得的结果与公知方法结果相比较。
在n=160位的Schnorr算法情况下,及在n=512位的El Gamal算法情况下,这些结果表示在下列表中。
在被n位指数覆盖的帖码空间上的限制依赖我们希望获得的安全性程度可能减少一个系数α。
而参数n、h及b应满足条件(1)(1)2n-α≤(n+b)!/(n+b-h)!h!并同时要保持由位数(n+b)位的不同随机变量产生出相同帖码的可能性。
实际上,对于抵御各种可能的破译280是足够的,因此n-α=100是一个完全可接受的值。
该实施方案更加有利,由于通常平方计算的成本(计算时间)比模的乘法运算成本低。
一般我们得到
S/2≤m≤S,S是待计算的平方次数,m是乘法次数,两个极端情况是m=s及m=2S。
在下列表中我们将看出这两个极端情况的比较结果。
可以看出,当将本方法用于Schnorr及El Gamal方案时相对于单纯平方相乘的方法来说获得了很大的增益,甚至当我们认为平方计算的成本与乘法运算成本相同时也是如此。
根据另一实施方式,该方法尤其适用于在存储位置方面无特殊限制的系统。
在该实施方式中,我们并列地计算g的不同幂,以便仅单次地计算平方,并同时组合指数,以便不执行多次同样的计算。
为了更好地理解本发明,我们将描述执行2的幂的计算例子。
假设kj=∑ai2i,kj是随机的抽取的(这就是说,由一个随机发生器产生的)。
假设Kk=kj=∑bi2i。
根据该方法,将组合指数kj及Kk,以致确定出如下的一个指数kc∶Kc=∑aibi2i,它反映kj及Kk之间的共有部分。系数ai或为1,或为0。
指数kc相应于指数kj及Kk的公共部分,这就是说,如果kj=1×210+…+0+1×20及Kk=1×210+0+0……+1×20则Kc=1×210+0+…+1×20根据该方法,因此我们可同样借助一个逻辑功能“与”来确定标记为Kc的指数K。
接着,我们进行第二组合的处理,它在于确定指数kj及指数kc之间的不同部分。我们同样搜索指数Kk及指数kc之间的不同部分。
我们将用于实现“异或”运算的这些组合表示为Kjkc或Kkkc。
我们并列地计算以下的量Gkj=gkjkcmodpGkk=gkkkcmodpGkc=gkcmodp为了获得gkjmodp及Gkkmodp,执行以下运算就够了1)Gkj×Gkcmodp2)GKk×Gkcmodp当具有了这些,如刚才给出的2的幂的例子那样地,借助平均约3n/4乘法运算来代替n乘法运算,来执行运算。其增益为25%。
根据本发明的方法可以被概括为大量的指数组合。并且这种普遍形式可根据图3及4中所给功能图示出的两种实施方式来实施。
在此情况下,本发明尤其适用于需要产生大量帖码的情况。
根据第一实施方式,将根据如下表所示的树状结构两个两个地实现指数组合kja1a2a3a4kcb1=a1.a2b2=a3.a4c1=b1.b2这些组合如前述例子那样,可以提供反映指数kj之间公共部分的指数kc。
为了简化说明,这些指数kj被命名为a1,a2,a3,a4。
指数kc被命名为,树的-1级是b1及b2,和树的-2级是C1。
组合a1.a2,a3.a4是由一个逻辑功能“与”来实现的。
我们将反复地计算在这样构成的树的每级上的各组合。乘法的次数将随着向树下方移动,由于位的简单统计分配而逐渐地减少。待完成的计算工作量估计减少了n/3的乘法运算。
如前面已描述地,我们将确定每级上的量Gkc。
于是,将得到
Ga1=galb1modpGa2=ga2b1modpGb1=gb1modpGb1=gb1c1modp或Gb1=Gb1·Gc1modp]]>Gb2=gb2c1modp或Gb2=Gb2·Gc1modp]]>Gc1=gc1modpGa1modp=Ga1×Gb1modp=Ga1×Gb1×GC1modp]]>事实上,ga1modp将由乘积Ga1×Gb1modp来获得,及ga2modp将由乘法Ga2×Gb1×Gc1modp来获得。
根据第二实施方式,我们组合指数以形成所有可能组合的子集组合,假设如果具有这样的指数kj∶a,b,c,我们则将形成组合ab,ac,bc,abc。
然后通过a及b,a及c,b及c,和a,b,c之间的一个逻辑功能运算,我们可实现允许确定关于这些子集的公共部分的各组合。这样我们就确定出对于所获得的每个子集的指数kc。
我们可以并列地计算所有的量Gkc=gkcmodp,由于对于开始的k,这些kc具有极少的为1的位,因此对于它们模的计算非常块。
然后执行其它类型的组合,这些组合在于消除一个指数及在先的组合之间的公共部分。
这些组合可借助于“异或”逻辑功能来实现。于是,根据给出的例子获得了ka=a xor abc xor ac xor abkb=b xor abc xor ab xor bckc=c xor abc xor ac xor bc接着,我们可计算量Gk′j=gkjmodp,对此k′j具有比开始的kc还要少的为1的位,对于它们模的修正甚至更快。
最后由kj获得表达式gkjmodp。
在通过第二种实施方式获得的N个帖码发生的情况下,计算工作量趋于n/N平方+n(2N-1)/N2N+(2N-1-1)乘法。
下表可以给出公知方法如平方相乘,并列平方相乘及本发明方法之间的比较结果。
在给出的第一实施方式应用于发生N个帖码(树状再组合)的情况下,存储器空间方面的成本小。
对于具有4个指数的二进制树,将需要8个位数为log2(p)位的寄存器来用于计算。
所给出的第二实施方式(N个再组合)具有非常小的计算时间方面的成本,因为它的乘法次数被优化。对于3个指数将需要8个位数为log2(p)位的寄存器用于计算。
权利要求
1.使用公共密钥的加密方法,它基于进行量gkmodp计算的离散算法,式中P是称为模的质数,K是通常长度为n位的随机数,及g是称为基数的整数,其中一个实体E实现认证和/或帖码和/或编码操作,并包括与另一实体的信号交换,在另一实体中及这个量起作用,其特征在于对于该实体包括以下的步骤-产生一个长度为N位的随机指数,N等于n+b位,-计算该指数的汉明加权C并与一预先确定的值h相比较,-验证该随机值K是否满足条件C≥h,-在汉明加权小于h的情况下,放弃该随机值K并重新开始产生新的指数,直到获得满足该条件的一个指数为止,-或在相反情况下保存该值,-根据保存值计算表达式gkmodp,-在与另一实体交换信号时使用该表达式。
2.根据权利要求1的方法,其特征在于待满足的条件为c=h。
3.使用公共密钥的加密方法,它基于进行量gkmodp计算的离散算法,式中P是称为模的质数,K是通常长度为n位的随机数,及g是称为基数的整数,其中一个实体E实现认证和/或帖码和/或编码操作,并包括与另一实体的信号交换,在另一实体中这个量起作用,其特征在于,它包括以下步骤-产生一个加权为ai的n位随机指数集kj,其由以下表达式表示kj=∑ai2i,-并列地计算g2i的幂,同时组合这些指数,以使得对于一个指数计算出的g的幂用于另外其起作用的指数的计算,-对于每个给定kj,计算还未计算的g的幂,并将这些幂重组合以获得所需的表达式gkjmodp,-在与另一实体交换信号时使用该表达式。
4.根据权利要求3的方法,其特征在于-并列计算及重组合的步骤包括下列操作-成对地组合指数以获得反映它们公共部分的指数kc,并根据获得的组合结果反复进行这些组合。-对于每个kc值这样地计算量Gkc∶Gkc=gkcmodp,-用对于组合获得的指数kc组合一个指数kj,该指数属于该组合,以便消除公共部分并仅保留不同部分,-确定反映给定指数kj及给定指数kc之间不同部分的指数k′j,-这样地计算量Gk′j∶Gk′j=gk′jmodp,-通过进行对每次信号交换获得的各量Gkc之间的乘法运算确定表达式Gkjmodp。
5.根据权利要求3的方法,其特征在于并列计算及再组合的步骤包括以下的操作-组合指数在一起以形成具有公共部分的指数的可能组合的所有子集,-确定反映每个组合子集公共部分的指数kc,使给定加权的非零位相应于所考虑组合的相同加权的非零位。-对于每个kc值这样地计算量Gkc∶Gkc=gkcmodp,-对于指数kj所属的每个组合子集使每个指数kj与获得的所有指数kc相组合,以便消除公共部分并仅保留不同部分,-确定反映给定指数kj及给定指数kc之间不同部分的指数k′j,-这样地计算量Gk′j=gk′jmodp,-通过对于每个kj进行量G′kj及Gkc之间的一次乘法运算来确定表达式gkjmodp。
全文摘要
本发明涉及基于进行量G
文档编号G06F7/72GK1224555SQ9618039
公开日1999年7月28日 申请日期1996年6月5日 优先权日1996年6月5日
发明者D·姆雷希, D·纳卡彻 申请人:格姆普拉斯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1