密钥pv签名的制作方法

文档序号:7977677阅读:369来源:国知局
密钥pv签名的制作方法
【专利摘要】本发明提供了一种系统和方法,该系统和方法使得密钥PV签名的接收通信方将密钥PV签名转换为具有类似于传统签名的特性的签名(即,消息是公开的,并且可以由任何人来验证),移除签名的密钥方面。接收通信方可以向第三方传递已转换的签名,并向第三方提供知识证明,以使第三方可以确信是签名的发起者签名了消息。
【专利说明】密钥PV签名
[0001]相关申请的交叉引用
[0002]要求2011年3月18日递交的美国临时专利申请N0.61/454,445的优先权,以此通过引用将其全部内容并入本文。
【技术领域】
[0003]以下涉及具有消息恢复的数字签名。
【背景技术】
[0004]公知数字签名是用于认证消息的计算机实现的技术。对签名的验证确认所签名的消息对应于接收到的消息。已经提出了很多数字签名方案,在这些已知的签名方案中有一类允许根据签名来部分或完整地恢复消息的签名。具体的高效数字签名方案已知是Pintsov-Vanstone签名,通常称为PV签名。
[0005]椭圆曲线Pintsov-Vanstone签名(ECPVS)方案向数字签名提供了部分消息恢复。在 ANSI Draft X9.92-2007-02-2(Public Key Cryptography for the FinancialServices Industry,Digital Signature Algorithms Giving Partial Message RecoveryPart I:Elliptic Curve Pintsov-Vanstone Signatures (ECPVS),Accredited StandardsCommittee X9,Inc.,2007)和 IS0/IEC 9796-3 (IS0/IEC 9796-3:2006 !Informationtechno1gy-Security techniques—Digital signature schemes giving messagerecovery-Part 3 !Discrete logarithm based mechanisms,2006)中提出了这种方案,通过引用将二者并入本文。
[0006]数字签名方案中的部.分消息恢复降低了发送(消息,签名)对的带宽要求。这是通过将消息的一部分(可恢复部分)与签名值“并归”(而不增加签名的大小)并且不发送消息的该部分来进行的。如果签名是有效的,验证器恢复消息的可恢复部分。
【专利附图】

【附图说明】
[0007]在参考附图的以下详细描述中,特征将变得更加显而易见,其中:
[0008]图1是数据通信系统的示意性表示。
[0009]图2是图1的系统中使用的密码单元的表示。
[0010]图3是示出第二通信方转换并向第三方传递第一通信方的密钥PV签名的流程图。
[0011]图4是示出非交互式证明和验证的流程图。
【具体实施方式】
[0012]原始的椭圆曲线Pintsov-Vanstone签名方案已被扩展为密钥Pintsov-Vanstone签名方案(密钥PV,或简称为kPV)。密钥PV是具有机密消息恢复的签名方案,其中,仅预期的接收者可以恢复部分消息。这与某些数字签名方案相反,在这些数字签名方案中,消息是公开的,并且在给出签名者的公钥的情况下,任何人都可以验证签名。[0013]在共同拥有的美国专利N0.7,249,259和N0.7,877,610中描述了 PV方案,通过引用将其并入本文。
[0014]可以使用椭圆曲线上的点群来例示PV签名方案(以及变型)。假设E(Fq)是在具有q个元素的有限域上的椭圆曲线E上的点的集合。每个点具有一对坐标,该坐标是底层有限域的元素,并满足椭圆曲线E。该集合形成基于被称为点附加的二元运算的组。通常,将该集合选择为具有大小I =rn,其中,η是大的质数,以及余因子r是(相对)小的整数。秩η的子群的产生器被表示为G,以及所有的群算术都将在该子群中进行。为了方便而使用加法符号,例如,对于两个点P和Q的求和,我们写成P+Q,以及与整数k的标量乘法是kP。
[0015]可以使用任何有限abelian群来例示本文中的签名方案。例如,我们可以使用子群Zp,该群整数以质数P为模。在该情况下,群秩是p-1,以及产生器将再次产生秩为η的子群,其中,η|ρ-1。将要意识到的是,子群的大小以及η的原始状态(primality)是安全要求,而不是例示该方案所必需的,即,可以使用任何的子群来例示签名方案,但是这可能不安全。
[0016]通常,用乘法来写子群Zp中的算术,两个元素P和Q的乘积是PQ,以及对与k的标量乘法的模拟是指数的,并被表示为pk。
[0017]根据密钥PV方案,将第一通信方向第二通信方发送的消息划分为隐藏并在验证期间恢复的第一部分,以及可见并需要作为验证算法的输入的第二部分。
[0018]通过单独加密第一部分来产生第一签名分量。通过将第一分量与可见部分组合来形成中间分量,并密码性地对其进行散列。然后,使用中间分量来形成第二签名分量,以及签名包括具有可见部分的第一和第二分量。
[0019]对签名的验证将仅从消息的隐藏部分导出的第一分量与可见部分组合,并生成该组合的散列。将计算出的散列与可公开获得的信息一起使用,以产生对应于隐藏部分的比特字符串。如果存在需要的冗余性,则签名被接受,并且根据恢复的比特字符串和可见部分来重构消息。
[0020]密钥PV允许签名者(第一通信方)选择接收者(第二通信方),并基于消息M =NI N2 IV来创建签名。任何方都可以验证NI和V是由第一通信方签名的,而N2是被加密的,以使得仅第二通信方可以将其恢复。
[0021]密钥PV方案开始于签名者(第一通信方),开始于适当椭圆曲线上的密钥对(dA,Ga)。这是第一通信方对消息M = NI I IN2 I IV签名的算法,其中,NI和V将被没有机密性地签名,以及N2被机密地签名,以使得仅第二通信方可以恢复N2并验证其是由第一通信方签名的。
[0022]在验证期间,验证者(第二通信方)将恢复某个N' i;并且必须确保N' i =队。要求Ni具有充足冗余性是解决该问题的一种方式:其允许将N' i标识为属于有效明文的集合。假设具有充足冗余性,对于伪造者而言,生成满足所有要求但是具有N' i Ni的签名应该是不可行的。将解密消息识别为有效的备选方式是使用已认证的加密。我们将N2称为消息的隐藏部分(将针对接收者进行加密),以及将(NI,V)称为消息的可见部分(对于任何人都可见,由签名者认证)。
[0023]可以使用预定字符串来替代NI和V中的任一者或其二者,例如,空字符串、预定义的冗余性或者其他预定字符串。[0024]参考图1,数据通信系统10包括由通信链路16连接的一对通信方12、14以及通过另一通信链路38至少连接到第二通信方14的第三方36。通信方12、14均为计算设备,例如,个人计算机、个人数字助理、智能电话、蜂窝电话、ATM、销售点设备、服务器、娱乐系统组件、或者具有计算能力并被提供来与其他通信方交换数字信息的其他这种设备。通信链路
16、38可以均为电话链路、无线或陆上线路、局域网(LAN)、RF链路、或者提供来在通信方之间传递信息的其他这种链路。虽然处于示意的目的被示出为通信方12、14和36之间的直接连接,将意识到的是,通信链路16、38可以是更广阔的网络的一部分,并且在从通信方12到通信方14、到第三方36的传递中,可以通过多个通信方来对这些链路进行路由。
[0025]第三方36可以具有向通信方12、14类似地配置的设备。
[0026]当通过链路16、38(作为发送者或接收者)通信时,通信方12、14和第三方36各自在操作上可以是相似的,并因此将仅详细描述一个通信方。因此参考图2,通信方12包括与存储器20和处理器22通信的密码单元18。根据通信方12的预期目的,通信方还可以包括数据输入单元24 (例如,键盘或读卡器)和显示设备26。
[0027]密码单元18被提供为管理通信方12、14之间通过通信链路16的安全通信。密码单元18包括安全存储器30 (可以是存储器20的一部分,或者是独立的存储器模块)以及算术逻辑单元(ALU) 32,算术逻辑单元(ALU)32在处理器22的控制下操作,以执行实现所选密码协议所需的算术运算。处理器22包括用于实现相应协议的一个或多个指令集。
[0028]将意识到,在本文中示例出的执行指令的任何模块或者组件可以包括或者具有对计算机可读介质的访问,该计算机可读介质是例如:存储介质、计算机存储介质或者数据存储设备(可移除的和/或不可移除的)(例如,磁盘、光盘或者磁带)。计算机存储介质可以包括以用于存储信息的任何方法或技术中实现的易失性和非易失性的、可拆卸和不可拆卸的介质,例如计算机可读指令、数据结构、程序模块或者其他数据,除了短时传播的信号本身。计算机存储介质的示例包括RAM、ROM、EEPR0M、闪存或者其他存储器技术、CD-ROM、数字通用碟(DVD)或者其他光存储器、盒状磁带、磁带、磁盘存储器或者其他磁存储设备,或者可以用来存储所需信息并且可以由应用、模块或者应用和模块访问的其他任何介质。这种计算机存储介质中的任一种可以是密码单元的一部分,或者可以由密码单元访问或可连接到密码单元。可以使用计算机可读/可执行指令来实现本文中描述的任何应用或模块,可以由这种计算机可读介质来存储或者保持该指令。
[0029]存储器30存储由密码单元18实现的密码系统的参数。在本示例中,密码系统是公钥椭圆曲线密码系统,其中,密码协议是基于在有限域上定义的椭圆曲线群中的离散对数问题的难驾驭性(intractability)来实现的。因此,存储器30存储曲线的参数,例如,椭圆曲线群E的产生器点G和秩η。要意识到的是,本文中提供的示例涉及椭圆曲线群Ε,然而可以将相同的原理应用于其他群,例如,已知难以解决离散对数问题的那些群(例如,在质数秩子群Zp*中,其中,P是质数)。
[0030]密码单元18还包括随机数产生器(RNG)34,向存储器30提供随机数产生器(RNG) 34的输出以由ALU 32使用。存储器30还安全地存储短时私钥X,短时私钥χ是从随机数产生器34的输出导出的比特字符串。
[0031]密钥PV签名方案中的第一步骤要求所有各方对存储器30中存储的域参数的集合达成协定。这些参数包括:[0032]1.秩为η的适合的椭圆曲线群,产生器为G(参见SEC2:Reco_ended EllipticCurve Domain Parameters version 2.0, Standards for Efficient CryptographyGroup,2000,通过引用将其并入本文)。
[0033]2.对称密钥加密函数E,对应解密函数为D。示例是AES或CBC模式。对于与操作模式有关的信息,参见FIPS PUB 197寻找AES的细节,以及参见A.J.Menezes、P.C.vanOorschot 和 S.A.Vanstone 的 Handbook of Applied Cryptography, CRC Press, 1997, ISBN0-8493-8523-7 § 7.2.2,将其二者通过引用并入本文。我们还注意到,可以将加密函数替换为已认证加密,并移除冗余性要求。下面,我们认为:如果满足冗余性要求,或者如果已认证加密算法进行解密而没有错误,则解密是成功的。
[0034]3.密钥导出函数(表示为KDF),密钥导出函数输出适于与E—起使用的密钥。在 NIST SP 800-108(NIST SP 800-108, Recommendation for Key DerivationUsing Pseudorandom Functions, National Institute of Standards and Technology,November, 2007)中给出了示例KDF,通过引用将其并入本文。
[0035]4.密码散列函数,密码散列函数将任意长度的输入映射到固定长度的输出。7]\ 例散列函数是 SHA-2 族,参见 FIPS PUB 180-2 (Federal Information ProcessingStandards Publication (FIPS PUB)180-2.Specifications for the Secure HashStandard,2002),通过 引用将其并入本文。
[0036]5.用于在各方之间传送值(整数、群元素等)的编码方法(可以由ASN.1指定示例编码)。签名者和验证者还必须就在对值的列表进行散列之前将其普通编码为比特字符串达成一致(例如:1)将所有的值转换为八位字节字符串,然后2)将八位字节字符串的散列进行串联)。在使用散列时,要求在导出密钥之前进行编码。使用KDF和散列函数二者,编码可以并入附加信息,例如日期。
[0037]为了方案的安全,必须仔细地选择域参数。可以在ASC X9.92 Draft (参见ANSIDraft X9.92-2007-02-21:Public Key Cryptography for the Financial ServicesIndustry, Digital Signature Algorithms Giving Partial Message Recovery PartI:Elliptic Curve Pintsov-Vanstone Signatures (ECPVS), Accredited StandardsCommittee X9,Inc.,2007,通过引用将其并入本文)中获得与参数选择有关的进一步细节。此外,为了安全,签名者和接收者需要在产生密钥以及签名或转换消息时保护随机数产生器。下面我们假设所有各方都拥有域参数。
[0038]第一通信方的密钥PV密钥产生包括:
[0039]1.从[O,..., η]中随机选择dA,作为随机数产生器34的输出。
[0040]2.使用算术逻辑单元32来计算Ga = dAG。
[0041]3.输出(dA,GA),其中,dA是秘密密钥,以及Ga是公钥。将秘密密钥dA安全地存储在存储器30中。
[0042]第一通信方还已经接收到第二通信方的公钥Gb = dBG,该公钥也存储在存储器30中。将消息M解析为分量NpN2和V,使得M = NI I IN2 | | V。第一通信方的密钥PV签名产生包括:
[0043]1.使用RNG 34从[0,...,η]中随机选择r,并使用ALU 32计算Q = rG和Qb =rGB。[0044]2.使用ALU 32构建密钥Ii1 = KDF (Q)以及k2 = KDF (Qb),其中,KDF是将输入视为点并产生加密密钥的密钥导出函数。
[0045]3.使用ALU 32计算C1 = E (N1, Ii1)以及C2 = E (N2, k2),其中,E是由域参数指定的加密方案。
[0046]4.使用ALU 32计算h = Hash (C11 I C21 I V),其中,Hash是由域参数指定的适合的散列函数。
[0047]5.使用ALU 32将h转换为整数e。
[0048]6.使用 ALU 32 计算 s = r+e.dA (mod η)。
[0049]7.向第二通信方输出作为签名的(s,C1, C2, V)。
[0050]Qb= (rdB)G是Diffie-Hellman值。在提供了第一通信方的公钥和第二通信方的私钥dB时,下面的算法执行对签名消息(s,C1, C2, V)的签名验证并恢复N2。
[0051]假设签名消息是(s,C1, C2, V),第一通信方的公钥是Ga,以及第二通信方的私钥是dB,可以由第二通信方使用第二通信方处的密码单元18来执行签名验证。使用ALU 32的消息恢复包括:
[0052]1.使用与在签名产生方案中使用的散列函数相同的散列函数以及任何附加输入信息来计算h = Hash (C」C2 | V)。
[0053]2.将h转换为整数e。
[0054]3.计算 Qb' = dB[sG-eGA]和 Q' = sG_eGA。
[0055]4.使用由域参数指定的KDF来计算Ii1' = KDF(Qb')和k2' = KDF(Qb')。
[0056]5.计算 N1' = E-1 (C1, Ii1')和 N2' = E-1 (c2, k2')。
[0057]6..如果N1'被识别为有效明文(即,其包含预期的冗余性信息,或者已认证加密模式的解密操作成功),则返回N1'和有效(VALID),否则返回空(NULL)和无效(INVALID)。对于N2'类似。
[0058]将要注意到的是,在没有第二通信方的私钥的情况下,验证器仍然可以验证字符串C11 Ic2I IV被第一通信方签名,并根据C1来恢复N1,第二通信方的私钥仅是根据C2来恢复N2所必需的。
[0059]还有可能具有“半有效”的签名,意味着C1是有效的,但C2是无效的。在该情况下,签名仅认证N1和V。
[0060]一个方面是一种系统和方法,该系统和方法使得密钥PV签名的接收通信方将密钥PV签名转换为具有类似于传统签名的特性的签名(即,消息是公开的,并且可以由任何人来验证),移除签名的密钥方面。
[0061]这使得可以通过不可否定(non-repudiable)的方式来从第一通信方向第二通信方传递第一通信方使用密钥PV签名方案所签名的消息:第一通信方不能否认已经签名了消息,以及第二通信方不能否认已经转换了签名。
[0062]第二通信方可以将kPV签名转换为非密钥签名,并向第三方传递整个签名的消息,然后,第三方可以验证:
[0063]1.第一通信方对消息的隐藏部分和可见部分都进行了签名。
[0064]2.第二通信方是消息的预期接收者,以及
[0065]3.第二通信方已忠实地转换了签名,即,消息被揭示的已恢复机密部分是正确的(或者第一通信方导致恢复失败)。
[0066]第二通信方可以输出(针对对消息的机密部分的对称密钥加密的)解密密钥,并使用知识的零知识(ZK)证明来使第三方确信第二通信方所呈现的密钥是正确的密钥。换言之,第二通信方在没有揭示其秘密密钥的情况下使第三方确信解密密钥被正确计算出。
[0067]虽然使用ZK证明是高效的,然而非交互式的例示是可能的(本文中提供了一个这样的例示)。新签名由旧签名、解密密钥和知识证明组成。开销是三个值,一个群元素、一个元素是群秩的大小,以及一个散列摘要。由于转换要求知道第二通信方的私钥,第一通信方不可能创建签名并在然后创建已转换版本,仅有第二通信方才可以执行该转换。
[0068]也有可能使第一通信方自己转换签名,然而,该结果使得很清楚,第二通信方没有参与到转换中。
[0069]例如,假设第 二通信方是来自第一通信方的kPV签名的接收者,以及第二通信方想要向第三方示出消息的机密部分。此外,第三方应该能够验证第一通信方对消息的机密部分进行了签名。
[0070]可能的应用是转发kPV签名加密(signcrypt)的电子邮件,或者审计使用密钥PV签名的电子交易(例如,支付)。在第二应用中,可以要求第一通信方或第二通信方通过可验证的方式向第三方揭示kPV签名的隐藏部分,以例如解决争吵。
[0071]使第二通信方能够向第三方揭示k2'可能不提供所希望的验证。密码文本(:2是固定的:因为其被第一通信方签名,第二通信方对其进行改变的任何尝试将被视为伪造。不忠实的第二通信方可进行尝试并选择某个k(bart,以使得对于一些N2(bart关N2', (c2, k(bar))= N2(bari,然而仍然由解密算法作为有效的密码文本输出(记住N2'是由忠实的第二通信方恢复的明文)。没有任意的E被设计出,因此这是不可行的。即使假设第二通信方不能找到对于其而言,E4( kftari)没有使验证器放弃的另一 k(bari,第一通信方也可能不正确地创建了其签名,特别是她可能不正确地创建了 c2。
[0072]例如,第一通信方可能将C2选择为随机字符串。接受对(S,C1,C2,V)的公开验证,因为需要第二通信方的私钥来检查c2。然而,第二通信方应该能够在不揭示其私钥的情况下向第三方证明第一通信方不正确地创建了签名。如果第二通信方向第三方揭示了 k2',第三方无法辨别是第一通信方不正确地创建了 C2,还是第二通信方不正确地创建了 k2'。任一情况都可导致E-1G2, k2')失败。因此,简单地揭示k2'是不够的。
[0073]现在参考图3,描述了用于使第二通信方转换并向第三方传递第一通信方的密钥PV签名的方法。在该第一描述中,我们没有指定ZK证明协议。其可以是交互式或非交互式的,以及所产生的证明可以是可传递的,或者可以不是可传递的。通过该设置中的“可传递”,我们指的是第三方有说服力地向另一方呈现证明的能力。
[0074]假设从第一通信方到第二通信方的kPV签名是(S,C1,C2,V),第二通信方的公钥和私钥是(dB,Gb),以及第一通信方的公钥是Ga,第二通信方如下使用其ALU 32转换签名:
[0075]1.计算 e = H (C11 I C21 I V) (300)
[0076]2.假设 R = sG-eGA(302)。
[0077]3.计算 Qb = dBR (304),并向第三方发送 Qb (306)。
[0078]4.证明知道(4(308),以使得Gb = dBG以及Qb = dBR。要注意到,可以根据原始的kPV签名(其是公开的)来计算e和R。如果证明未被验证(30),输出“拒绝(reject) ”(312)。[0079]5.第三方可以使用Qb来计算k2 = KDF(Qb) (314),并使用k2来解密C2 (316)。如果C2解密成功(318),第三方输出“接受(accept) ”(320),否则输出“拒绝(reject) ” (322)。当C2解密不成功时,第三方得出第一通信方没有正确地创建签名的结论。
[0080]第三方从第二通信方获得(N2或丄)和第一通信方对其签名的证明。
[0081]在知识证明是非交互式的时,我们将其表示为π。从而新签名是(s,C1, c2,V,Qb,n),以及需要64和Gb以用于验证。现在我们描述构建π的高效方式。
[0082]现在参考图4,现在描述非交互式的证明和验证。假设从第一通信方到第二通信方的kPV签名是(S,C1, C2, V),第二通信方的密钥对是(dB,Gb),以及第一通信方的公钥是Ga,该方法包括:
[0083]如图4a所示,使用第二通信方的ALU 32的证明产生如下:
[0084]1.计算(400) e = H (C11 I C21 I V),并设 R = sG_eGA (402)
[0085]2.计算(418) Qb = dBR (404)。
[0086]3.使用 RNG 34 从[O,..., η]随机选择 ζ (406),并计算(408) Tb = zG 以及 Tq =ZR。
[0087]4.计算(410) eb = H (s I C1 C2 V Qb Tb Tq),以及 sb = z+ebb (mode η)。
[0088]5.向第三方输出新签名 σ = (s, C1, C2, V, Qb, = (sb,eb)) (412)。
[0089]如图4b所示,使用第二通信方的ALU 32对σ的验证如下:
[0090]1.计算 e = H (C11 I C21 I V) (414),并设 R = sG_eGA (416)。
[0091]2.计算 Tb' = sbG_ebG,以及 Tq' = sbR_ebR。
[0092]3.计算(420) eB' = H(s | | C11 | C21 | V | | V |TQ/ ),以及如果 eB'关 eb(422),放弃(424)。
[0093]4.计算k2 = KDF(QB) (426),并解密c (428)。如果C2解密成功,接受(432),否则拒绝(434)。
[0094]在创建eb时,第二通信方可以添附要签名的附加消息(仅由第二通信方而非第一通信方签名)。
[0095]上述转换允许第三方向任何人转发已转换的签名,因为其可以由任何人来验证。
[0096]Jakobsson 等(参见 M.Jakobsson、K.Sako 以及 R.1mpagliazz0.DesignatedVerifier Proofs and Their Applications.1n Proceedings of EUR0CRYPT1 96, LNCS1070 (1996),143-154,通过引用将其并入本文)定义了被称为指派验证器零知识证明的原语(primitive),其是可仅被证明者选择的验证器(指派的验证器(DV))验证的知识证明。此外,即使共享了其秘密信息,DV也可能没有使其他人确信证明的有效性。在Jakobsson等的文献中,给出了交互式和非交互式DV证明系统。其构建潜在的直觉是将正在证明的语句从“X是正确的”改变为复合语句“X是正确的,或者我知道DV的秘密密钥”。如果DV没有共享其秘密密钥,这对于DV是有说服力的,然而因为DV可以创建这种证明,这对于其他任何人都是没有说服力的。零知识证明的该不可传递特性在文献中有时也被称为否认能力(deniability),因为证明者可以否认已创建了证明。
[0097]其他扩展是可能的。通过在非交互式证明和验证中使用第三方的公钥来加密Qb,向第三方传递的值将仅允许第三方查看消息N并验证签名。第三方是否可以有说服力地向另一方示出消息仍然取决于第二通信方使用来创建η的证明系统。[0098]另一扩展使得通信方可以转换其自己的签名。现在假设第一通信方已经创建了将第二通信方作为接收者的kPV签名(s,Cl,c2,V),并且想要转换该kPV签名。由于第一通信方可以总是重新签名M = Nl| |N2 I V,其目的将是第一通信方可验证地向第三方揭示其之前已经向第二通信方发送的消息。针对该扩展,第一通信方必须保存在创建签名时使用的短时密钥r。参考上述密钥PV签名产生方法中的符号,第一通信方必须揭示Qb = rGB,用于导出k2的Diffie-Hellman值,用于密码文本C2的加密密钥。第一通信方必须证明知道r,以使得sG-eGA = rG,以及Qb = rGB。该证明必须是零知识的,因为揭示r使得dA可被恢复。
[0099]在接收到该证明时,第三方计算k2 = KDF(Qb),并解密C2,如果解密成功,将其作为有效的来接受。如果解密失败,很清楚,第一通信方出故障了。实际中,第一通信方可以将r设置为伪随机函数的输出,使用其秘密密钥来进行密钥加密。输入将由V和计数器组成。对于确保不重复使用短时值而言,计数器是重要的。这还要求第一通信方保持某个状态以存储计数器,然而不需要是秘密的。
[0100]另一扩展使得通信方可以转换接收到的签名,并存储已转换的签名以用于将来使用。假设第一通信方向第二通信方发送与第二通信方的公钥Gbi和私钥dbl相对应的kPV签名(s,C1, C2, V)。第二通信方将签名,而不是其已恢复的机密部分存储在其存储器中。之后,可以要求第二通信方改变其密钥对,创建新的密钥对(db2,GB2),以及删除dbl。这种密钥改变在PKI系统中是普通的,因为限制在其期间密钥有效的时间段限制了与密钥对的妥协有关的风险。由于第二通信方在删除dbl之后可能不能够恢复签名的机密部分,其可以在这种删除之前转换签名,以允许第二通信方在不知道dbl的情况下验证签名。此外,第二通信方可以在仅知道db2的情况下将签名转换为可验证的。
[0101]虽然参考某些特定的实施例描述了以上内容,然而在不背离所附权利要求勾勒出的精神和范围的情况下,其各种修改对本领域技术人员将是显而易见的。通过引用将以上提到的所有引用的全部公开并入本文。
【权利要求】
1.一种使第二通信方设备能够向第三方证明从第一通信方设备接收到的签名消息的真实性的方法,所述方法包括: (a)获得所述签名消息,所述签名消息包括机密分量; (b)至少对所述签名消息中包括所述机密分量的部分进行操作,以产生第一值; (c)使用所述第一值、所述第一通信方设备的公开值以及所述第二通信方设备的私有值来产生第二值; (d)向所述第三方发送所述第二值;以及 (e)向所述第三方证明知道所述私有值。
2.根据权利要求1所述的方法,其中,所述签名消息还包括以下一项或多项:可恢复分量、可见分量或其组合。
3.根据权利要求2所述的方法,其中,所述可恢复分量、所述可见分量或者所述可恢复分量和所述可见分量二者是预定字符串。
4.根据权利要求2所述的方法,其中,所述签名消息是根据ECPVS方案产生的。
5.根据权利要求1所述的方法,其中,产生所述第二值包括:在使用所述第二通信方设备的所述私有值之前,使用所述第一值和所述第一通信方设备的所述公开值来产生中间值。
6.根据权利要求1所述的方法,还包括:所述第三方获得所述第二值,使用所述第二值来产生密钥,以及使用所述密钥来解密所述签名消息的至少一部分。
7.根据权利要求1所述的方法,其中,向第三方证明知道包括: (a)使用所述第一值和所述第一通信方设备的所述公开值来计算第三值和第四值; (b)输出新的签名消息,以使所述第三方能够验证所述新的签名消息,从而验证所述签名消息的真实性,所述新的签名消息包括所述签名消息、所述第二值以及由所述第三值和所述第四值构成的一对知识证明分量。
8.根据权利要求7所述的方法,其中,使所述第三方能够验证所述新的签名消息包括: (a)计算所述第一值; (b)使用所述第一值和所述第一通信方的所述公开值来计算第五值; (C)使用所述知识证明分量和所述第五值来计算所述第三值和所述第四值的表示; (d)使用所述第三值和所述第四值的所述表示来计算所述一对知识证明分量之一的表示; (e)将所述一对知识证明分量之一的所述表示与所述一对知识证明分量中对应的一个相比较,以验证所述新的签名消息的真实性;以及 (f)在验证所述新的签名消息的真实性时: (i)使用所述第二值计算密钥;以及 (?)使用所述密钥从所述新的签名消息中解密所述签名消息的至少一部分。
9.根据权利要求8所述的方法,其中,所述签名消息的所述至少一部分具有以下特性:使所述第三方能够验证所述签名消息是由所述第一通信方产生的。
10.根据权利要求9所述的方法,其中,所述特性是冗余性。
11.一种用于向第三方证明从第一通信方接收到的签名消息的真实性的设备,所述设备与所述第二通信方相关联,所述设备包括处理器,所述处理器被配置为:(a)获得所述签名消息,所述签名消息包括机密分量; (b)至少对所述签名消息中包括所述机密分量的部分进行操作,以产生第一值; (c)使用所述第一值、所述第一通信方设备的公开值以及所述第二通信方设备的私有值来产生第二值; (d)向所述第三方发送所述第二值;以及 (e)向所述第三方证明知道所述私有值。
12.根据权利要求11所述的设备,其中,所述签名消息还包括以下一项或多项:可恢复分量、可见分量或其组合。
13.根据权利要求12所述的设备,其中,所述可恢复分量、所述可见分量或者所述可恢复分量和所述可见分量二者是预定字符串。
14.根据权利要求12所述的设备,其中,所述签名消息是根据ECPVS方案产生的。
15.根据权利要求11所述的设备,其中,产生所述第二值包括:在使用所述第二通信方设备的所述私有值之前,使用所述第一值和所述第一通信方设备的所述公开值来产生中间值。
16.根据权利要求11所述的设备,其中,向所述第三方发送所述第二值使所述第三方能够使用所述第二值来 产生密钥,以及使用所述密钥来解密所述签名消息的至少一部分。
17.根据权利要求11所述的设备,其中,向第三方证明知道包括: (a)使用所述第一值和所述第一通信方设备的所述公开值来计算第三值和第四值; (b)输出新的签名消息,以使所述第三方能够验证所述新的签名消息,从而验证所述签名消息的真实性,所述新的签名消息包括所述签名消息、所述第二值以及由所述第三值和所述第四值构成的一对知识证明分量。
18.根据权利要求17所述的设备,其中,使所述第三方能够验证所述新的签名消息包括使所述第三方: (a)计算所述第一值; (b)使用所述第一值和所述第一通信方的所述公开值来计算第五值; (c)使用所述知识证明分量和所述第五值来计算所述第三值和所述第四值的表示; (d)使用所述第三值和所述第四值的所述表示来计算所述一对知识证明分量之一的表示; (e)将所述一对知识证明分量之一的所述表示与所述一对知识证明分量中对应的一个相比较,以验证所述新的签名消息的真实性;以及 (f)在验证所述新的签名消息的真实性时: (i)使用所述第二值计算密钥;以及 (?)使用所述密钥从所述新的签名消息中解密所述签名消息的至少一部分。
19.根据权利要求18所述的设备,其中,所述签名消息的所述至少一部分具有以下特性:使所述第三方能够验证所述签名消息是由所述第一通信方产生的。
20.根据权利要求19所述的设备,其中,所述特性是冗余性。
【文档编号】H04L9/32GK103444128SQ201180069424
【公开日】2013年12月11日 申请日期:2011年8月19日 优先权日:2011年3月18日
【发明者】格雷戈里·马克·扎韦鲁哈, 斯科特·亚历山大·万斯通 申请人:塞尔蒂卡姆公司, 黑莓有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1