专利名称:在安全通信系统中生成匿名公钥的方法、设备和系统的制作方法
技术领域:
本发明涉及计算机通信网络安全,更具体地说涉及公钥加密通信系统和方法。
背景技术:
随着计算机通信网络的发展,例如IP网络、电信网络、移动自组织网络和私有局域网络等,已在这些计算机通信网络上开发并部署了许多应用。这些应用包括医疗保健系统、电子处方系统、电子邮件系统、电子购物系统、电子拍卖系统、多媒体系统、收费电视系统、基于位置的服务系统以及普适计算系统等等。然而,通过这些系统传输的信息(更一般地说是数据)容易受到黑客攻击、监听、窃听、篡改和操纵等等。虽然对安全性和隐私的关注程度可能因应用而有所不同,并明显地因人而异,但是,发送者将数字化信息安全地传递给接收者,并且第三方和接收者都不能危及信息的安全性,这是一个基本的需求。另外,需要将发送者以及接收者的隐私保护到一个令人满意的程度。
保护信息的安全性的一个示例是安全电子邮件系统。在此情形下,只有发送者和接收者可以解读该电子邮件。另一个示例是安全电子支付系统,其中只有帐户的所有者才能花费该帐户中的资金。
许多情形下的信息隐私问题需要获得与信息安全问题相当甚至更高的关注。考虑前面提到的安全电子邮件和安全电子支付系统,其中电子邮件和电子支付系统的使用者希望自己之外的任何人都不知道通信的存在。为了保护电子邮件中发送者的隐私,在一些情形下可能必须使得甚至连接收者也不能获知发送者是谁。对于电子支付交易,有时可能希望收款人不能识别出付款人。对于信息隐私还存在许多其他示例。在利用基于位置的服务时,携带移动设备的所有者的位置在大多数情形下都处于该所有者的完全控制之下。在电子购物中,付款人可能希望防止在线商家对其购买历史进行关联,然后推测出其个人兴趣。在电子拍卖中,出价者可能希望防止竞争者分析其出价策略,并然后使用这一知识来击败他。其他示例包括匿名成员资格管理和用于电子投票的匿名投票者等等。
一般地,加密通信系统始于在远程位置之间传输消息。这种系统包括第一位置处的至少一个编码设备,以及第二位置处的至少一个解码设备,该编码设备和解码设备都耦合到计算机通信网络。对于数字化系统,消息可以定义为数字化消息,即某个字母表的符号序列。实际中,一般将字母表选择为由符号0和1组成的二进制字母表。在典型的通信会话中,每个用户的终端通常都同时配备有编码器和解码器,以使得用户可以向另一个用户发送加密信息并从其接收加密信息。
传统上,可很容易地获得多种公钥加密编码和解码技术,以提供一定程度上的安全性和隐私性。例如授权给Rivest等人的美国专利No.4,405,829(RSA)以及El Gamal(Tahir ElGamal.A public-key cryptosystemand a signature scheme based on discrete logarithms.Advances in Cryptology Proceedingsof CRYPTO 84,pages 10-18,1985)是本领域内公知的技术。Rivest专利和ElGamal的教导通过引用而被包含。
在公钥加密系统中,每个用户(例如用户A)在一个公共文件中放置加密算子或公钥EA。用户A将对应的解密算子或私钥DA保密,其对于任何消息M都满足下面的公式DA(EA(M))=M。
为使得该公钥系统可实际运行,EA和DA都必须是实际可计算的。然而,用户A在公开EA时不能危及DA。也就是说,对于任何对手来说,只给出加密密钥EA和一些可能的明文和密文对,寻找一个有效的方式来计算DA在计算上是不可行的。在公钥系统中,慎重地选择密钥确保了只有用户A才能实际计算出DA。
另一个用户(例如用户B)希望向用户A发送消息M时,他在所述公共文件中寻找EA,然后将加密的消息EA(M)发送给用户A。接收后,用户A通过下面的公式来解密该消息
DA(EA(M))=M。
由于实际上不能从EA导出DA,因此只有用户A可以解密发送给他的消息EA(M)。类似地,如果用户A希望向用户B发送消息作为响应,用户A使用用户B的加密密钥EB来加密响应消息,EB也可在所述公共文件中获得。这一安全通信过程意味着每个希望接收私密通信的用户都必须将他的加密密钥E放置在公共文件中。或者换句话说,为了安全地与他人通信,利用传统的公钥加密系统例如RSA和El Gamal,用户A需要向外部世界公开他/她的公钥。然而,在大多数情形下,用户A只拥有一对公/私钥对,即一个公钥和其对应的唯一的私钥。公钥系统这一典型的使用方式存在一个不希望出现的后果,即使得用户A的公钥完全成为了他/她的标识。这意味着即使关心隐私的用户得到了这类公钥加密系统以及其他设计得很好的隐私保护措施的保护,对手仍能够基于该唯一公钥的使用模式,通过收集并观测该用户公开的信息,从而关联出受保护的用户的活动。
在信息时代,隐私被广泛地视为信息交换的一个突出关注点。隐私调查持续显示出80-90%的人群关注隐私,并且25%的人群愿意支付相当的金钱或容忍一些不方便来获得隐私性。这种隐私保护的重要性不仅显示出现有公钥加密系统的缺点,还突出了新的改进的匿名公钥方法的重要性和紧迫性。
在传统的公钥加密系统(例如RSA和El Gamal所公开的系统)中,如果用户A担心他/她的单个公钥可能会危害他/她的隐私,则可以消除单个公钥的可标识特性。解决办法仅仅是要求所述个体例如用户A拥有若干不同的公钥,并在例如拍卖中向不同的通信对方公开这些公钥中的不同公钥。
在拥有许多公钥对之外,Waters等人已提出了一种方法,其利用ElGamal加密系统来实现了一种“不可比公钥方案”,借此用户可以同时拥有若干公钥,而所有这些公钥都对应于单个私钥。参见B.R.Waters,E.W.Felten,A.Sahai,Receiver Anonymity via Incomparable Public keys,CCS’03,Washington,DC,USA,pp.112~121。Waters等人的教导通过引用也被包含。
通过利用多个公钥对,传统的公钥加密系统可以在一定程度上减弱隐私问题。然而,所述个体仍远不能满足。事实上,这一措施有许多缺点。其一,每个不同的公钥都具有对应的不同的私钥,这就意味着随着公钥的数量增加,对于个人来说公私钥对的管理成本也在增加。其二,每个不同的公钥具有对应不同的私钥意味着随着私钥数量的增加,私钥被公开或丢失的安全性风险也在增加。其三,考虑一个人拥有100个公钥对,在传统公钥加密系统来说这对一个人是相当多了。假设此人希望在并行或串行的通信中与200个通信对方通信。结果,这些通信对方中至少有两人会接触到该关心隐私的个人的同一公钥。最后,加密消息的接收者可能必须尝试所有的私钥来解密该消息,这是非常耗时又低效的。
Waters等人的方案看起来能够消除若干公钥对的管理成本以及随之而来的安全性风险。然而,他们的不可比公钥方案通过利用不同的生成子(generator)来构建El Gamal加密系统的公钥,从而生成新的公钥,这使得计算优化变得很困难。例如,(g,ga)和(h,ha)是通过Waters等人的不可比公钥方案生成的不同公钥,其中g和h是不同的生成子。传统上,ElGamal加密系统只利用了一个生成子,因此能够受益于在线计算生成子的幂并只维护一张生成子的幂表。而Waters等人的方案需要要么维护若干张生成子的幂表,要么进行在线计算,从计算优化和成本管理来说二者都不太可取。
发明内容
本发明公开了一种公钥加密系统,用于生成用于安全通信的多个匿名公钥,所有这些公钥都与同一当事人相关。而且,这些匿名公钥是使用相同的生成子而从单个私钥产生的。
根据本发明的一个方面,提供了一种产生公钥以加密要被发送的消息的方法,包括选择一个私钥;使用所述私钥和一个生成子来产生公钥,所述私钥和所述生成子来自一个预定的群;以及在通信会话之前或在其开始时公开所述公钥,其中使用所述私钥和所述生成子来产生多个公钥以用于多个通信会话。
更具体地说,本发明公开了若干方法和设备,用于基于同一个生成子g,从私钥x计算产生多个公钥,这些公钥具有(y1=gr,y2=y1x)的形式,其中在不同的通信会话中或与不同的通信对方通信时,当选择一个不同的r时,就产生一个新的公钥。
更具体地说,本发明基于数学中公知的群论的应用和实现。假设G是有限循环群。选择群G的元素x作为解密密钥(私钥)D。假设g是群G的生成子。这样,加密密钥(公钥)E由一对G的元素y1和y2,构成,计算如下y1=gry2=(y1)x,其中r是整数(以下称为“指示符”)。如果y1和y2原来在群G的范围之外,则它们必须被映射到群G内。映射方法根据所选择的群而各有不同。
而且,当选择一个不同的指示符r时,产生了一个新的公钥。
加密设备可如下加密明文消息MC1=y1kC2=M⊙y2kC=(C1,C2)其中k是整数(以下称为“指定符”),⊙是群G上的可逆运算,C1和C2是群G的元素。
当从发送者接收到密文C时,接收者处的解密设备可如下将C转换成消息字M′(即重建明文)t=C1-xM′=t⊙C2其中M′是群G的元素,⊙是群G上的可逆运算。
如果一个要加密的消息位于群G的范围之外,在加密前它必须被转换成若干个群元素。在随后的解密之后,所恢复出的群元素可被转换回到初始的消息。对于不同的群或不同的实现来说转换方法各有不同。
如果C1或C2一开始就在群G的范围之外,它们必须被映射到群G内。对于不同的群或不同的实现来说映射方法各有不同,并且对于本领域内的技术人员来说是公知的。
通过选择指示符r,用户可以产生对应于单个私钥x的许多公钥。
相应地,用户只需维护一张表来存储生成子的幂,并可以离线地计算它们,因此避免了在线计算的额外开销。
与基于Waters等人的方案的安全通信系统相比,本发明公开了一种用于安全通信系统的新型匿名公钥技术。本发明利用了生成子的幂(即指数)来构建匿名公钥,而El Gamal加密系统和Waters等人的方案直接使用生成子来构建公钥。
相比于现有技术,本发明至少具有下述优点其一,本发明使得关心隐私的人们可以向通信对方公开他/她的公钥,以在通信历史很重要的场合建立安全通信。
其二,本发明基于了一种新型技术,其中多个公钥对应于单个私钥,因而极大地降低了个人对公钥对的管理成本,并在最大程度上降低了与私钥有关的安全性风险。
其三,本发明实现的新型优化技术可以使得以较低的成本来采用所建议的匿名公钥,并将计算密集型的任务转移到离线进行或计算系统的非高峰时间。
其四,本发明可以通过实际并有效地将部分计算负担转移到通信对方来减少不可避免的计算开销,而不会向通信对方引入额外的成本。
其五,本发明实现的新型优化技术可以有效地减少公钥的存储消耗。
其六,通过匿名公钥,本发明自然地确保了私钥的匿名性。与此相对比的是,利用传统的公钥加密技术,私钥不可避免地通过唯一的公钥而被识别,尽管私钥的准确值是保密的。这在一些情形下为本发明获得了一种可能的利用方式,其中用户可以拥有若干私钥,并分别为不同的私钥产生一系列匿名公钥。在这种意义下,所使用的私钥也被匿名化了,也就是说,它们是匿名私钥。
通过下面的描述,并结合附图来阅读时,可更透彻地理解本发明前述及其他目的、各种特征以及本发明本身,在附图中图1示出了一个具有两个终端的示例性系统,其利用了根据本发明的匿名公钥加密系统,其中所述终端之一可以公开一个不同的公钥来用于与另一个终端的新通信会话;图2示出了具有若干终端的示例性系统,其利用了根据本发明的匿名公钥加密系统,其中一个终端在与其他终端的通信中可以使用不同的公钥来用于不同的会话;图3示出了参与图1和图2的通信系统的发送者和接收者之间的示例性通信会话;图4示出了基于根据本发明的公私钥对的通信会话中,发送者和接收者的示例性功能模块;图5示出了根据本发明,图4中的公钥产生设备的示例性功能模块;图6示出了根据本发明,产生匿名公钥的示例性流程图;并且图7示出了消息的加密与解密的示例性过程。
具体实施例方式
在此公开了在安全通信系统中产生匿名公钥的方法、设备和系统。在下面的详细描述中,给出了大量具体细节以完整地理解本发明。然而应该认识到,对于本领域内的技术人员来说,在没有这些具体细节中的一些的情况下也可以实施本发明。在其他情形下,没有详细示出一些公知结构和技术,以免不必要地混淆本发明。
在整个说明书中,术语“群”(group)指的是如下定义的数学概念(除非另有说明)群(G,◇)由满足如下三个规律的集合G及其上的二元运算◇构成(i)群运算满足结合律,即对于G的任意元素a、b、c,有a◇(b◇c)=(a◇b)◇c;(ii)集合G存在一个基元e,对于任何G的元素a都有a◇e=e◇a=a;(iii)对于G的任何元素a,G中都存在一个元素a-1(称为a的逆元),满足a◇a-1=a-1◇a=e。
例如,整数集Z及加法运算构成一个群。基元是0,一个整数a的逆元是-a。对于更多的信息,可以参考《Handbook of AppliedCryptography》,可在http//www.cacr.math.uwaterloo.ca/hac/在线获得。
根据本发明的通信系统可具有若干终端和若干通信信道。图1以简化框图示出了本发明的一个实施例。在图1中,终端A与终端a进行了若干次会话的通信。对于终端A来说,至少存在一个通信信道来向终端a发送信息。所述会话可能使用一个或若干通信信道。终端a可能也可能不使用相同的通信信道来向终端A发送信息。通过所述通信信道,终端A向终端a公开不同的公钥Ea到Ez来用于不同的通信会话,但将它的私钥x保密。如果终端a需要的话,也可以向终端A公开若干不同的公钥,在此意义上终端a等同于终端A。
如图1所示,通过产生不同的公钥来用于不同的会话,对于终端a或任何第三方来说都不可能关联出终端A的活动模式。例如,在电子拍卖的场合中,终端A的用户将能够防止他人关联并分析其出价模式和策略,这是因为对于每次会话都产生了不同的公钥。
图2也以简化框图的形式示出了本发明的另一个实施例。在图2中,终端A与多个终端(从终端a到终端z)通信。终端A与其每一个通信对方之间所使用的通信信道可能相同也可能不同。如图2的左半部分所示,通过所述通信信道,终端A分别向终端a、终端b、……、终端z公开了不同的公钥Ea到Ez以及其他信息。在此情形下,我们认为在终端A和终端a到z之间存在一种“一对多”的关系。所述公开可以多种方式完成。例如,可以有其他信息与所述公钥一起公开,或者所述公钥可以包含在电子邮件或证书中。反过来,终端a和终端z可能也可能不使用相同的通信信道(在所述通信信道上,这些终端中的每一个接收到终端A的公钥)来向终端A发送信息,这些信息已用所接收的公钥加密。如前所述,终端A将自己的私钥x保密。类似地,如果终端a到终端z需要的话,可以向终端A分别公开若干不同的公钥,在此意义上终端a到终端z等同于终端A。类似地,从图2的右半部分可看出,终端a到z分别向终端A公开各自的公钥Ea到Ez。在此情形下,我们认为在终端a到z和终端A之间存在一种“多对一”的关系。
图3示出了参与图1和图2所示的通信系统中的发送者和接收者之间的示例性通信会话。在图3中,每一次发送者希望向接收者公开公钥时,发送者都决定(步骤S31)或者是从它现有的公钥池中选择一个公钥(步骤S32),或者产生一个新的公钥(步骤S33)。然后,发送者将公钥发送给接收者(步骤S34)。需要发送消息时(步骤S35),接收者查找发送者的公钥(步骤S36)以加密消息(步骤S37),然后将加密的消息发送给发送者。最终,发送者解密所接收的加密消息(步骤S38),并恢复出发送自接收者的原始消息。注意,接收者可能在它要向发送者发送加密消息之前很久就已经从发送者接收到了所述公钥。
应指出的是,发送者可以被设计成总是产生不同的公钥(步骤S33)而不依赖于任何现有的密钥。然而,如本领域内的技术人员可以认识到的那样,使用现有公钥池将可大大减少计算开销,这是因为操纵现有公钥比起从头开始计算来说内在地要少很多计算量。
还应该指出的是,图3中的发送者和接收者的指定只是出于方便的考虑,因为发送者首先将它的公钥发送给接收者。接收者接收到来自发送者的公钥之后,接收者在向它的“接收者”(所述发送者)发送加密消息时就成了“发送者”。在两个终端之间的典型双向通信会话中,所述角色在整个会话中会频繁颠倒。
现在参考图4,其示出了基于根据本发明的公私钥对的通信会话中,发送者和接收者的示例性功能模块。在此,发送者41至少包括处理通信信道的发送单元43和接收单元45、处理密文解密的解码设备47、以及处理公钥产生的公钥产生设备49。接收者42至少包括发送单元44、接收单元46、以及处理将要发送的信息例如明文的加密的编码设备48。发送者41可向接收者42公开多个公钥,以使得如果发送者41和接收者42之间存在多个会话,则每个会话可使用发送者41不同的公钥。如果发送者41也工作为接收者,则它还可包括一个编码设备48。类似地,如果接收者42工作为发送者,则它还可包括一个解码设备47和公钥产生设备49。
图4中的编码设备48和解码设备47都是数据通信和加密领域中公知的。下面的图5进一步示出了公钥产生设备49。参考图5,控制单元55处理产生公钥以及管理公钥的过程。寄存器54可用来存储私钥、所产生的公钥、所接收的公钥以及其他控制单元55所需的数据。另外,在此所使用的寄存器54可以通过可存储信息的任何器件实现,例如片上寄存器、ROM和RAM。公钥产生设备49可与解码设备47共享寄存器54,以存储所接收的密文以及解密时的中间输出。下面将描述公钥产生设备49的其他组件。
注意,在图5中,“群”运算是由群指数运算器57处理的。公钥产生设备49也可有其他实施方式,其中的群运算由一个独立的群运算器处理。
下面将描述图4和图5的公钥产生设备49根据本发明产生匿名公钥(“APK”)的过程。
图6示出了产生APK/私钥对的示例性处理流程。首先,群选择器51选择一个群G(步骤S60)。例如,计算机可具有存储器,其中存储了代表各种符合条件的群的各种数据结构。在控制单元55的控制下,群选择器51通过选择代表群的数据结构来选择一个群。在实践中,已经存在一些商用函数库,其可以运行在计算机上并提供这种服务。需要实现本发明的应用程序可利用一些具体参数来调用这种库提供的特定函数。然后所调用的函数就可以返回所需的(多个)群。在一个实施例中,G是有限循环群,其阶数是n(n是正整数)。有限循环群G的候选者包括但不局限于有限域Fq1上的椭圆曲线上的点构成的群;有限域Fq2上的乘法群Fq2*,其中q2=pm1,m1是正整数,p是素数;群Zn1*,其中n1是合数;以及乘法群Zn2*,其中n2是素数。
在上述四中示例性群中,第一种群可能具有最佳的安全性能,而后三种在本领域中使用得更为普遍。群G的“有限循环”特性确保了群指数运算最终都会被映射到群G内;然而,映射方法可能会根据群而不同。另外,它还确保了生成子的存在。
然后,子群选择器52选择G阶数为m的子群,其中m≤n(步骤S61)。如果m选择为素数,则将具有优选的安全性能。请注意所述子群可被选择为G自身,这也就意味着m=n。在另一个实施例中,假设在群G被确定或选择后,可省略子群的选择,这也意味着G自身被隐式地选择为所述子群,因为在数学上G是它自身的一个子群。也就是说,当G本身被选择为所述子群时(使得m=n),则这一选择可在表面上被省略。当然,如果省略子群的选择,则也可省略子群选择器52(如图5所示)。
然后,整数选择器56选择一个整数作为私钥x,使得x满足1<|x|<m(步骤S62)。应理解到,一个终端可具有多个私钥,尽管在此的描述为了简单起见集中于如何从一个私钥生成多个公钥。
然后,生成子选择器53选择并确定群G的一个生成子(步骤S63)。如果G是有限循环群,则它总会有至少一个生成子。应注意,g和x的选择是彼此独立的。也就是说,尽管步骤S62在此被描述为在步骤S63之前,但它们的执行顺序可以颠倒过来,或者并行地执行。
选择G、m、x和g后,在控制单元55的控制下,选择一个满足0<|r|<m的整数r作为所述指示符,以产生新的公钥(步骤S64)。
选择了G、m、x、g和r后,通过计算y1=gr和y2=y1x来产生新的公钥(步骤S65)。然后可向接收者公开公钥(y1,y2)以用于加密(步骤S66)。当然,可以有其他信息与所述公钥一起公开。
应注意,g、x和r的选择彼此之间没有顺序和依赖性需求,因此步骤S62、S63和S64可以任何顺序执行,不论是串行还是并行。另外,g、x和r的选择可以是随机的,也可以根据所需的标准进行。
或者,前述步骤中的一些可被控制单元55省略,而在其他地方执行。例如,群G和所述子群可由第三方例如信托机构指定。因此,控制单元55就跳过了选择群和子群的步骤,因为它们在外部被确定。而且,如果以前已产生过一个匿名公钥,则肯定已选择并确定了所述群、子群、生成子和私钥。因此当要产生新的公钥时,控制单元55就跳过这4个步骤而直接进行到后续步骤。
如果y1或y2原来位于群G的范围之外,则它们必须被映射到群G内。映射方法可根据不同的群而不同。然而,循环群G确保了这种映射方法的存在。
应注意,前述步骤或者可以在系统的单个设备/模块执行(利用集成或分离的组件),也可以分布式的方式进行,其中系统的不同设备分别执行这些步骤中的一些步骤。
选择群、子群和生成子的示例下面描述了群、子群和生成子选择的示例。假设选择了群Zp*,其中p=11,因此Z11*={1,2,3,4,5,6,7,8,9,10)。由于11是素数,因此数学上Z11*的阶数是11-1=10。元素2是Z11*的生成子,因为可容易地验证Z11*={2imod 11/i=0,1,...,9)。由于群是它自身的子群,所述子群可被选择为Z11*。子群的另一个选择例如是{1,3,4,5,9},阶数为5,具有生成子3。也很容易地可验证35=1 mod 11。
而且,如本领域内的技术人员可认识到的那样,所有所述设备和组件都可实现为硬件、软件、固件或其组合,根据不同的考虑而各异。
密钥产生的优化基本上是在图6中描述的示例性方法只是可用于产生根据本发明的匿名公钥的许多方法中的一种。还存在更高级的方法,不仅可用于相同的目的,还可获得性能上的优化。为描述这些优化方法,下面参考图4、5和7简单地总结本领域内公知的编码和解码过程,其中⊙是群G上的可逆运算, 是⊙的逆运算。已将本发明应用到图7中的过程中。
为了加密明文M,首先将M表示为G的元素(例如将M表示为ASCII码)(步骤S80),然后选择满足1<|k|<m的一个整数k作为指定符(步骤S81),并如下计算一对值(步骤S82)C1=y1k和C2=M⊙y2k其中C1和C2和群G的元素。所有这些操作都可由图4中的编码设备48完成。⊙的示例可以是群G上的乘法、除法、加法或减法。如果C1和C2原来位于群G的范围之外,则它们必须被映射到群G内。映射方法根据不同的群而不同。
此时,获得了消息M的密文C=(C1,C2)(步骤S83),并可由发送单元44通过通信信道向外发送。
对于位于群G的范围之外的将要编码的消息M,在编码前它必须被转换成若干群元素。在接下来的解码之后,所恢复出的群元素必须被转换回到初始的消息。转换方法可根据不同的群而不同。一个示例是将消息分割成若干块,每个块都是群G的元素,并串接所有的块来重构M。
在通信信道的另一侧,接收到密文消息C(步骤S84)。为了从密文C获取明文M,首先必须在两种方式之间作出决定,即是否进行直接指数运算(步骤S85)。如果是,则首先计算rb=C1x(步骤S86),然后通过计算 来获得M(步骤S87);否则就首先计算ra=C1-x(步骤S88),然后通过计算M=C2⊙ra来获得M(步骤S89)。
在成功地解密密文(C1,C2)后,根据解密的实现方式,公钥产生设备49根据本发明可利用所接收的密文以及中间解密输出ra来产生新的匿名公钥,其形式为(y1=C1-1,y2=ra)。类似地,公钥产生设备49可利用所接收的密文以及中间解密输出rb来产生新的匿名公钥,其形式为(y1=C1,y2=rb)。在这两种产生新的匿名公钥的方法中,都可避免指数运算,提高了计算效率。
而且,当提供了单个匿名公钥(y1,y2)时,公钥产生设备49可产生一个新的匿名公钥,形式为(y2,y2x)。这一方法可被使用多次以产生一系列公钥。按照这种方式,所产生的公钥的存储消耗可被大大减少,因为公钥第二部分y2与其后续结果的第一部分相同。对于一系列w个公钥,最多可节省百分比为(w-1)/2w的存储,也就意味着对于足够大的w来说,几乎节省了50%。
在本发明中,由于公钥是基于生成子的幂的形式,利用同一个生成子来产生的,因此生成子g的幂可被重复使用于产生一系列公钥,这涉及的是乘法而不是指数运算,因而节省了存储器并加速了计算。同时,由于在解码设备中只需要维护一张生成子的幂表,因此可以离线执行新公钥的计算。
例如,在一个实施例中,当在解码设备中接收到密文消息C=(C1,C2)时,可获取C并用来产生新的公钥。如前所述,C1=y1k=grk,并且grk可被保存来产生新的公钥,因为乘积“rk”只是另一个整数。应注意,尽管grk可被保存来产生新的公钥,但是rk的值对于解码设备来说可能仍然是未知的,除非编码设备在发送加密消息时公开了k。
当提供了单个匿名公钥(y1,y2)时,公钥产生设备49可产生一个新的匿名公钥,形式为(y1×y1,y2×y2),其中×是群乘法。一般地,如果提供了若干匿名公钥(y11,y21)、(y12,y22)、…、(y1j,y2j),j≥2,则基于所存储的多个g的幂y11=gr1、y12=gr2、…、y1j=grj,以及y21=y11x、y22=y12x、…、y2j=y1jx,可以计算一个新的公钥为(y1(j+1)=y11y12…y1j,y2(j+1)=y21y22…y2j),其中y11y12…y1j是y11、y12…y1j,的乘积,y21y22…y2j是y21,、y22、…、y2j的乘积。很清楚,为了产生新的匿名公钥,指数运算被乘法所取代,提高了计算效率。由于可以在线执行乘法,因此按照这种方式产生的新公钥不必被预先计算,这直接意味着存储空间的节省。
上述优化技术可结合起来使用以产生新的匿名公钥。例如,在接收并成功地解密一系列密文(C11,C21)、(C12,C22)、…、(C1j,C2j),j≥2后,公钥产生设备49可利用所接收的密文以及中间解密输出rb1、rb2、…、rbj来产生一个新的匿名公钥,形式为(y1=(C11C12…C1j),y2=(rb1rb2…rbj)),其中C11C12…C1ji是C11、C12、…、C1j的乘积,rb1rb2…rbj是rb1、rb2、…、rbj的乘积。
而且,利用对y2的计算,可以计算一系列公钥(y2W1,y2W2),其中w1=xw,w2=x(w+1),w≥0。而且,这一计算中获得的所有结果,尤其是g的幂,都可利用来产生其他公钥。
而且,基于从密文C获取的C1,解码设备可以产生更多的新公钥。为此,计算并保存C1x和C1-x,然后可以产生两个系列的公钥。一般地,当接收到多个加密消息CC1=(C11,C12)、CC2=(C21,C22)、…、CCj=(Cj1,Cj2),j≥1时,对于C1x,可以产生一系列的公钥((C11C21…Cj1)u1,(C11C21…Cj1)u2),其中C11C21…Cj1是C11、C21、…、Cj1的乘积,u1=xu,u2=x(u+1)并且u≥0,对于C1-x,可以产生另一系列的公钥((C11C21…Cj1)v1,(C11C21…Cj1)v2),其中C11C21…Cj1是C11、C21、…、Cj1的乘积,v1=-xv,v2=-x(v+1)并且v≥0。而且,这一计算中获得的所有结果,尤其是g的幂,都可被利用来产生其他公钥。
匿名私钥在一些情形下,用户可能希望选择若干私钥,并分别为不同的私钥产生若干系列的匿名公钥。用户可选择若干私钥xi,并为每个私钥xi产生匿名公钥(ga,gaxi)。由于“一公钥对一私钥”模型被本发明的教导所取代,因此匿名公钥的匿名性也就隐含着所述若干私钥的匿名性。在此意义上,本发明还实现了匿名私钥。
安全通信会话的示例下面将示出一个根据本发明的安全通信会话实施例,其中的匿名公钥技术基于循环群Zp*。为了简单,p=11,因此Z11*={1,2,3,4,5,6,7,8,9,10}。Z11*的阶数是10。子群被选择为Z11*。生成子是2。
在解密侧,私钥被选择为x=3。如果整数a=4被选择为指示符,则公钥产生设备49产生匿名公钥(24=5,53=4)mod 11。对于另一个整数a=7,公钥产生设备49产生另一个匿名公钥(27=7,73=2)mod 11。
假设着两个匿名公钥被传递给两个接收者。接收了公钥(5,4)的接收者A要加密明文8。另一个接收者B要加密明文10。
接收者A选择整数6作为指定符,并计算8的密文(56=5,8×46=10)mod 11。类似地,接收者B选择整数3并计算10的密文(73=2,10×23=3)mod 11。
密文(5,10)和(2,3)被分别传递给解码侧。(5,10)的明文可根据5-3=510×5-3=57=3 mod 11和10×3=8 mod 11来计算。(2,3)的明文可根据23=8 mod 11和3/8=3×8-1=3×810×8-1=3×89=10 mod 11来计算。
这样就在解码侧成功的获取了明文8和10。而且,可以利用优化技术来产生新的匿名公钥。
基于密文(2,3)和中间解码输出8,可以产生一个匿名公钥(2,8) 。
基于密文(5,10)和中间解码输出3,可以产生一个匿名公钥(5-1=9,3)mod 11。
基于一个匿名公钥(2,8),可以产生一系列公钥(2,8)、(8,83=6)、(6,63=7)mod 11。
基于一个匿名公钥(9,3),可以产生一个新公钥(9×9=4,3×3=9)mod 11。
基于所述匿名公钥中的一些,例如(2,8)和(7,2),可以产生新公钥(2×7=3,8×2=5)mod 11。
从上述描述可以看出来自不同发送者的参数被利用来产生新的公钥。因此,可以改进所得到的公钥的隐私度。应注意,所有这些公钥都是基于单个私钥x和相同生成子g产生的。
本发明的多个方面可以包含在计算机可读介质中的计算机可执行指令来实现,它也可以硬布线逻辑/电路或硬件和软件的结合来实现。而且,本说明书中所涉及的设备可包括存储器例如RAM、DRAM或ROM来存储必须的数据和计算机可执行指令,以执行本发明中所教导的步骤。并且所述存储器可被包含在所述终端的编码设备和/或解码设备中。存储器的这种使用方式在本领域中是公知的,因此未在此描述也未在附图中示出。
本发明可被体现为其他形式,而不偏离其精神和实质特性。因此,所提供的实施例在任何情况下都应看作为说明性而非限制性的,本发明的范围由所附权利要求指明,而非由前述说明确定,并且处于所述权利要求的意义和等同范围内的所有改变也应被包含于其中。
权利要求
1.一种产生公钥以加密要被发送的消息的方法,包括选择一个私钥;使用所述私钥和一个生成子来产生公钥,所述私钥和所述生成子来自一个预定的群;以及在通信会话之前或在其开始时公开所述公钥,其中使用所述私钥和所述生成子来产生多个公钥以用于多个通信会话。
2.如权利要求1所述的方法,其中所述产生步骤还包括选择具有预定阶数的所述群G;基于所述阶数选择所述私钥;选择群G的元素g作为所述生成子;选择所述阶数内的整数r作为指示符;以及基于所述私钥、生成子和指示符生成所述公钥。
3.如权利要求2所述的方法,其中所述产生步骤还包括选择所述群G的一个子群,其阶数等于或小于群G的阶数,其中所述私钥和指示符处于所述子群的阶数之内。
4.如权利要求3所述的方法,其中所述群G的阶数是正整数n;G的所述子群的阶数是m,其中m≤n;所述私钥x满足1<|x|<m;所述生成子g是G的元素;所述指示符r满足0<|r|<m;所述计算所述公钥包括计算y1=gr和y2=y1x;并且当选择一个新指示符时,产生一个新公钥。
5.如权利要求4所述的方法,还包括基于y2计算一系列公钥。
6.如权利要求2所述的方法,还包括存储所述生成子g的幂;以及基于所述所存储的所述生成子g的幂,计算新公钥。
7.如权利要求6所述的方法,还包括使用所述生成子的所述所存储的幂来计算新公钥为所述所存储的幂的乘积。
8.一种用于产生多个公钥的计算设备,包括群选择器,用于选择具有预定阶数的群;寄存器,用于存储所产生或选择的信息;整数选择器,用于选择一个私钥x,并基于所述阶数选择一个整数r作为指示符;生成子选择器,用于从所述群选择一个生成子g;群运算器,用于执行所述群上的群运算;产生模块,用于从所述私钥利用所述生成子产生所述多个公钥;以及控制单元,用于控制所述群选择器、寄存器、整数选择器、群运算器和产生模块的操作。
9.如权利要求8所述的设备,还包括子群选择器,用于选择所述群G的一个子群,其阶数是m,并且m小于或等于所述群的阶数,其中所述私钥x和所述指示符r分别满足1<|x|<m和0<|r|<m,并且其中所述产生模块通过计算y1=gr和y2=y1x来产生一个公钥(y1,y2),并且当选择一个新指示符时产生一个新的公钥。
10.如权利要求9所述的设备,其中所述寄存器还存储所述生成子的幂,所述幂被所述产生模块用来产生新的公钥。
11.如权利要求10所述的设备,其中,基于多个所存储的幂,计算一个新的公钥为所存储的幂的乘积。
12.如权利要求8所述的设备,其中所述控制单元、群选择器、寄存器、整数选择器、群运算器和产生模块中的任何一个都实现为软件、硬件或软件与硬件的结合。
13.一种通信方法,包括选择一个私钥;使用所述私钥和一个生成子来产生一个公钥,所述私钥和生成子来自一个预定的群;公开所述公钥;利用所述公钥来加密一个消息M,得到一个加密消息C;通过通信信道发送所述加密消息C;在所述通信信道上接收所述加密消息C;以及利用所述私钥来解密所述加密消息C,以恢复出所述消息M,其中使用所述私钥和所述生成子来产生多个不同的公钥以用于多个不同的通信会话。
14.如权利要求13所述的方法,还包括选择所述群G的一个子群,其阶数等于或小于群G的阶数,其中基于所述子群来产生所述公钥。
15.如权利要求14所述的方法,其中所述群G的阶数是正整数n;G的所述子群的阶数是m,其中m≤n;所述私钥x满足1<|x|<m;所述生成子g是G的元素;所述指示符r满足0<|r|<m;并且所述公钥被计算为(y1,y2),其中y1=gr和y2=y1x,并且当选择不同的指示符时,产生一个不同的公钥。
16.如权利要求15所述的方法,其中通过下述步骤来从所述消息M计算所述加密消息C选择一个整数k作为指定符,满足1<|k|<m;并且通过计算C=(C1,C2)来计算所述加密消息C,其中C1=y1k,C2=M⊙y2k,并且其中当接收到所述加密消息C时,从该消息获取C1以用于产生新的公钥。
17.如权利要求16所述的方法,其中当接收到多个加密消息时,基于所接收到的加密消息的若干部分的乘积,产生一系列新的公钥。
18.一种通信系统,包括一个或多个编码设备;具有一个私钥的一个解码设备;以及一个或多个通信信道,所述编码设备可通过所述通信信道与所述解码设备通信,其中当在所述通信信道之一上开始一个新的通信会话时,所说解码设备根据所述私钥,利用群的相同生成子来产生一个新的公钥。
19.如权利要求18所述的系统,其中所述解码设备存储所述生成子的幂,用于计算新的公钥。
20.如权利要求19所述的系统,其中当在所述解码设备中接收到加密的消息时,该消息被用来产生新的公钥。
21.一种制品,其具有其上存储了指令的机器可读介质,所述指令被一个或多个处理器执行时使得所述处理器选择一个私钥;使用所述私钥和一个生成子来产生一个公钥,所述私钥和所述生成子来自一个预定的群;并且在通信会话之前或其开始时公开所述公钥,其中使用所述私钥和所述生成子来产生多个公钥以用于多个通信会话。
22.一种制品,其具有其上存储了指令的机器可读介质,所述指令被一个或多个处理器执行时使得所述处理器选择一个私钥;使用所述私钥和一个生成子来产生一个公钥,所述私钥和生成子来自一个预定的群;公开所述公钥;利用所述公钥来加密一个消息;通过通信信道发送加密的消息;在所述通信信道上接收所述加密的消息;以及利用所述私钥来解码所述加密的消息,以恢复出所述消息,其中使用所述私钥和所述生成子来产生多个不同的公钥以用于多个不同的通信会话。
全文摘要
本发明公开了一种产生匿名公钥的方法、设备和系统,用于根据一个私钥,利用一个群的相同生成子来产生多个公钥。还公开了一种公钥加密系统来产生用于安全通信的多个匿名公钥,所有匿名公钥都与同一当事人相关。这些匿名公钥是根据单个私钥,利用相同生成子产生的。利用本发明,可以减少计算量,节省存储器并可提高安全级别。
文档编号H04L9/30GK1773905SQ20041009090
公开日2006年5月17日 申请日期2004年11月10日 优先权日2004年11月10日
发明者曾珂, 藤田友之 申请人:日电(中国)有限公司