消息发送/接收方法和系统的制作方法

文档序号:7764401阅读:448来源:国知局
专利名称:消息发送/接收方法和系统的制作方法
技术领域
本发明涉及用于发送/接收消息(邮件)的方法,并且具体地,涉及用于安全地生 成、发送和接收经签字消息的方法、系统和程序。
背景技术
用户通过诸如Gmail (http//mail, google, com)的在线电子邮件服务器中的web 浏览器来发送和接收邮件。现在假设邮件经过签字并且继而在这种环境中被加密,诸如 通过PGP或者S/MIME来执行。换言之,假设对邮件执行所谓的“签名而后加密”(ME)处 理。浏览器通常不管理签名生成密钥以及加密密钥,由此StE处理无法在用户的计算机上 本地执行。因此,服务器保持关于签名生成密钥和加密密钥的信息,并且还执行StE处理。 例如,考虑如下情况,即发送方在邮件经历StE处理之后向接收方发送邮件。在此情况下, 发送方的私密签名生成密钥和接收方的公共加密密钥保持在服务器上。服务器使用这些密 钥对发送方在浏览器上创建的邮件执行StE处理,而后发送该邮件。在上述环境中,如果恶意攻击方(内部或外部)侵入服务器,则发送方的私密签名 生成密钥可能被盗。为应对该问题,需要某种类型的保护手段。专利文献1描述了一种方 法,其通过不允许密钥公共中心保持任何私密签名生成密钥,来防止密钥公共中心中的欺 诈。然而,专利文献1无法提供用于执行StE处理的方法,因为密钥公共中心从开始就没有 保持签名生成密钥。非专利文献1描述了用于以Java(商标)或C编写的程序进行模糊化 的各种技术。存在很多这样的模糊化工具(包括可以商业上购得的),并且可被用于HME 处理的程序模糊化。然而,这些工具旨在使程序难以阅读,并且无法完全阻止私钥的泄露。 非专利文献2描述了用于对重新加密(解密而后加密解密密文继而利用另一密钥来加密 已解密密文的操作)进行模糊化。非专利文献2提供了一种使解密而后加密函数模糊化的 技术,并且无法用于使ME函数模糊化。非专利文献3描述了公知的加密策略。非专利文献4到7每一个都描述了公知的签名方案。专利文献包括日本未审查专利申请公开号Hei 7-87081。非专利文献包括C. Collberg, C.Thomborson and D.Low, “ A Taxonomy of Obfuscating Transformations, " Technical Report 148, Department of Computer Science, University of Auckland,1997.S. Hohenberger, G. N. RothbIum, a. shelat, and V. Vaikuntanathan, " Securely Obfuscating Re-Encryption, " Proceedings of TCC' 07,2007.T. El Gamal, " A public key cryptosystem and signature scheme based on discrete logarithms, " IEEE Trans. Inform. Theory, Vol. 31,pp.469-472,1985.D.Boneh, B.Lynn, and H. Shacham, " Short Signatures from the Weil Pairing, “ Proceedings of ASIACRYPT 2001, pp.514-532, 2001.
C. Schnorr, “ Efficient Signature Generation by Smart Cards, " J. Cryptology 4(3), pp.161-174,1991.A. Lysyanskaya, " Unique Signatures and Verifiable Random Functions from the DH-DDH Separation, “ Proceedings of CRYPTO' 02,2002.B. Waters, " Efficient Identity-Based Encryption Without Random Oracles, " Proceedings of Eurocrypt 2005.

发明内容
本发明的目的是完全防止从服务器上保持的信息泄露私钥。具体地,目的是允许 使用保持的信息来执行StE处理,以及防止从保持的信息泄露私密签名生成密钥。为了实 现上述目的,本发明具有用于在服务器上保持发送方的私密签名生成密钥的独特配置。此 目的不限专用于在线电子邮件服务,而是还适用于提供需要StE处理的工作流应用等的所 有web服务和^aS服务。根据模糊化技术,本发明的目的可以理解为对程序进行模糊化, 以完全防止私密签名生成密钥的泄露,该程序保持私钥并且将被执行以用于StE处理。为了解决上述问题,本发明提供了一种消息发送方法,用于通过包括处理器和存 储器的计算机的处理来发送消息。该方法包括步骤(1)利用随机数r对签名生成密钥sk_ s随机化,以计算随机化的签名生成密钥sk' _s = SigningKeyRandomize (sk_s, r) ; (2) 利用公共加密密钥pk_e来加密随机数r,以计算加密的随机数R = Enc (pk_e,r) ; (3)利用 随机化的签名生成密钥sk' _s对消息m进行签名,以计算签名的消息s' = Sign(sk' _ s,m);以及向接收方发送签名的消息s'和加密的随机数R。在上面的步骤中,sk_ s代表消息m的发送方的私密签名生成密钥,表接收方的公共加密密钥,r代表随 机数,s代表签名,Sign代表签名生成函数,s = Sign(sk_s, m)代表针对消息m的签名, SigningKeyRandomize代表用于对私密签名生成密钥sk_s随机化的函数,并且Enc代表加 密函数。这里,步骤(3)和(4)分别可以是以下步骤利用与随机数r不同的随机数r'来 计算s k〃 _s = SigningKeyRandomize (sk' _s,r'),以便对随机化签名生成密钥sk' _ S再次进行随机化,继而利用再次随机化的签名生成密钥sk" _s来对消息m进行签名,以 计算签名的消息s" = Sign(sk" _s,m);以及根据加密的随机数R和随机数r'来计算 rXr'的密文R〃,继而向接收方发送值(s〃,R")。这里,签名生成函数可以使用以下任何一个BLS签名方案,Schnorr签名方案, Lysyanskaya签名方案,以及Waters签名方案。此外,该消息发送方法还可以包括步骤接 收签名的消息s'和加密的随机数R ;利用解密函数Dec来解密由此接收的加密的随机数 R,以计算随机数r = Dec (sk_e,R);根据由此接收的签名的消息s‘、消息m以及作为解密 结果的随机数r来计算签名s ;以及通过使用验证函数Verify (pk_s,s, m)来验证签名S。 在上面的步骤中,pk_s代表消息m的发送方的公共签名验证密钥,sk_e代表接收方的私密 解密密钥,DeC(Sk_e,R)代表解密函数,并且Verify (pk_s,s, m)代表验证函数。在另一方面,本发明提供一种邮件发送方法,包括步骤使服务器A响应于发送方 的邮件m的发送,向密钥管理中心发送关于该发送方和接收方的信息;使密钥管理中心向 PKI服务器发送关于发送方和接收方的信息,由此从PKI服务器获取发送方的私密签名生成密钥sk_s以及接收方的公共加密密钥pk_e ;使服务器A从密钥管理中心接收通过利用 随机数r对私密签名生成密钥sk_s进行随机化而获得的随机化签名生成密钥sk' _s = SigningKeyRandomize (sk_s, r),以及通过利用接收方的公共加密密钥pk_e对随机数r进 行加密而获得的加密的随机数R = Enc (pk_e,r);使服务器A通过使用接收方的公共加密 密钥pk_e,来生成邮件m的密文M = Enc (pk_e,m);使服务器A通过使用随机化签名生成密 钥sk' _8和加密的随机数R来计算s' = Sign(sk' _s,m);以及使服务器A向服务器B 发送邮件m的密文M和值(s',R)。此邮件发送方法还可以包括步骤使服务器B接收邮件m的密文M和值(s',R); 使服务器B向PKI服务器发送关于发送方和接收方的信息,由此从PKI服务器获取发送方 的公共验证密钥pk_s和接收方的私密解密密钥sk_e ;使服务器B通过使用接收方的私密 解密密钥sk_e,来解密密文M以获得邮件m = Dec(sk_e,M),以及解密随机数R以获得随机 数r = Dec (sk_e, R),并且根据值(s ‘,m,r)来计算签名s ;以及使服务器B通过使用验证 函数Verify (pk_s,s, m)来验证签名S。即使用于从发送方向接收方的发送的模糊化StE程序应当被泄露并被攻击方和 获得,本发明也可以预期以下效果等。1.攻击方无法篡改发送方的签名。2.攻击方无法执行用于从发送方向除接收方之外的第三方的发送的StE处理。3.通过在程序泄露后尽可能快地更新接收方的公钥,可以使泄露的程序变得毫无 价值。这种情况下,不需要更新发送方的私密签名生成密钥。


图1示出了传统的签名而后加密方法。图2示出了传统的邮件发送方法的示例。图3示出了向在线邮件服务器应用StE处理的示例。图4是示出本发明的概况的视图。图5示出了采用本发明的在线电子邮件服务器中的StE处理的概况。图6是示出步骤2的详细操作的视图。图7是示出步骤4的详细操作的视图。图8是示出步骤5的详细操作的视图。图9是用于管理每个用户的各种密钥的表。图10示出了每个服务器中包括的计算机硬件的框图的示例。图11是步骤1到5的整体的处理转换图表。
具体实施例方式〈传统的签名而后加密方法〉在描述本发明的概况之前,首先将利用图1示出的图示来描述传统的签名而后加 密(ME)方法。邮件发送方110利用私密签名生成密钥对输入的消息m进行签名,以生成 签名σ。继而,邮件发送方110利用接收方120的公共加密密钥来加密(m,σ),以生成密 文C。接收方120解密已发送的密文c,以获得消息m及其验证结果。当StE处理由程序执行时,包括在StE程序中的信息包括发送方110的私密签名生成密钥以及接收方120的公 共加密密钥。邮件接收方120利用接收方120的私密解密密钥来解密发送的密文c,并且利 用发送方110的公共验证密钥来验证解密的文本。图2示出了向传统的邮件发送方法应用 上述StE处理的示例。在图2中,StE处理由发送方210的PC上的电子邮件应用来执行。 继而,由此加密的邮件经由服务器A(230)并继而经由服务器B(MO)到达接收方220的PC, 并且由接收方220的电子邮件应用解密和验证。然而,在邮件主要通过因特网发送和接收 的当前环境中,多数情况下使用在线电子邮件服务。该在线服务器由服务器提供,并且用 户通过web浏览器来发送和接收邮件。图3示出了向在线电子邮件服务应用StE处理的情 况。当在发送方310的PC上生成邮件之后,服务器A(330)对该邮件执行StE处理,并且向 服务器B (340)发送由此加密的邮件。继而,服务器B (340)解密加密的邮件,并最终向接收 方320的PC发送由此解密和验证的邮件。〈本发明的概述〉如果图3所示的用于StE处理的程序通过通常的(初级的)方式实现并被保持在 服务器A(330)上,则发送方的私密签名生成密钥可能易于从StE程序泄露。为了解决此问 题,本发明提出一种用于对该程序进行模糊化的方法,并且经过模糊化的程序保持在服务 器上。此前存在针对以Java或C编写的程序的多种通用模糊化工具。然而,这些工具的目 的仅仅是为了使得程序难以阅读,并且这些工具不被认为能够完全防止私钥泄露。本发明 与针对特定编程语言的通用模糊化技术无关,但是与针对特定StE程序的密码学模糊化有 关。本发明的基本思想是设计签名方案和加密方案的配对,该配对具有特殊的属性,其中以 下两个处理彼此等效。1.在给出特定消息时,利用发送方的私密签名生成密钥对该消息进行签名。继而, 利用接收方的公共加密密钥来加密签名的数据。2.在给出特定消息时,利用接收方的公共加密密钥来加密发送方的私密签名生成 密钥。继而,利用加密的签名生成密钥对消息进行签名。前一处理是旨在模糊化的StE处理。后一处理中的“利用接收方的公共加密密钥 来加密发送方的私密签名生成密钥”对应于本发明的模糊化。特别地,发送方的加密的签名 生成密钥保持在经模糊化的程序中,并且用来对给定的消息进行签名。这使得后一处理等 效于前一 StE处理。由于发送方的加密的签名生成密钥是加密信息,因此可以确保不从信 息中泄露发送方的签名生成密钥。图4示出了本发明的概述。在传统方式中,StE处理器410利用发送方的私密签 名生成密钥对消息m进行签名012),从而生成签名ο。继而,StE处理器410利用接收方 的公共加密密钥来加密(414)签名ο,继而输出密文C。另一方面,在本发明中,发送方的 签名生成密钥首先利用接收方的公共加密密钥来加密G20)。继而,加密的签名生成密钥被 保持,继而被用来对消息m进行签名并输出密文c (432)。执行上述处理的处理器430对应 于通过对StE处理器410进行模糊化获得的程序。执行上述处理以加密针对消息m的签名 σ,而不是加密消息m本身。对消息本身的加密可以通过使用接收方公共加密密钥典型混合型加密来实现,并且不需要发送方的私密签名生成密钥。由此,消息不是必须被模 糊化,由此不是根据本发明的模糊化的目标。<详细实施方式>
下面将给出对本发明实施方式的详细描述。现在,下文将考虑概要的签名方案〈签名方案〉签名s = Sign(sk_s, m)(其中sk_s代表私密签名生成密钥,m代表消息,并且s 代表签名结果);验证Verify (pk_s, s,m)(其中pk_s代表公共签名验证密钥);签名生成函数Sign可以内部使用随机数。在这种情况下,s随机地生成。假设,签名方案满足以下三个条件。签名方案条件1 (关于签名生成密钥的随机化)存在函数sk' _s = SigningKeyRandomize(sk_s,r),用于利用随机数 r 对 私密签名生成密钥sk_S进行随机化,并且绝不会从Sk' _s泄露出关于sk_s的信//S =息。此外,在对Sk' _8进行重新随机化时,也即,利用另一随机数r'计算sk SigningKeyRandomize (sk ‘ _s, r ‘)时,满足 sk “ _s = SigningKeyRandomize (sk_s, rXr')。换言之,利用r和r‘对sk_s进行两次随机化等效于利用rXr‘对sk_s进行一 次随机化。这里,X代表随机数字之间的空间算术操作,诸如相加或相乘。签名方案条件2 (关于签名的随机化)存在函数s ‘ = SignatureRandomize (s, m, r),用于利用消息m和随机 数r对签名s进行随机化,并且无法从s'恢复S。此外,对于任意的(m,r,sk_s), SignatureRandomize(Sign(sk—s,m),m,r) = Sign(SignatureKeyRandomize(sk_s, r),m) 成立。换言之,利用r对针对m的签名进行随机化来计算针对m的签名,这等效于利用通过 r而随机化的签名生成密钥。签名方案条件3 (关于根据随机化的签名对原始签名的计算)s = Sign(sk_s, m) ^iUMWM^fiit^]^^ s' = SignatureRandomize (s, m, r)、 消息m以及用于随机化的随机数r来计算。例如,在BLS签名方案(非专利文献4)的情况下,签名生成函数Sign(Sk_S,m)通 过使用散列函数H被计算为Exp (H(m),sk_s)。换言之,签名生成函数Sign (sk_s,m)被计 算为H(m)的sk_s次幂,H(m)是m的散列值。在此情况下,如下所述地满足所有上述条件。签名方案条件1 sk' _s nJL^if sk' _s = SigningKeyRandomize (sk_s, r) = sk_sκι·。夕卜,sk〃 _s = SigningKeyRandomize (sk' _s, r' ) = sk_sXrXr'成立,并且由此满足 sk" _s = SigningKeyRandomize (sk_s, rXr')。签名方案条件2:s'可以计算为 SignatureRandomize (s, m, r) =Exp(s,r)。m 未用于此计算。签名方案条件3:随机化的签名表达为s' = Exp (H(m),sk_sXr)。由此,s = Sign(sk_s, m)可以 根据s'和r计算为Exp (s',1/r)。m未用于此计算。在khnorr的签名策略中(非专利文献5),也满足所有上述条件。在Schnorr的 签名方案中,执行以下计算作为签名生成函数Sign(sk_s,m)。1.生成随机数k,继而计算χ = Exp (g,k)。这里,g代表公共参数。
2.通过使用散列函数H来计算e = H(m,χ)。3.计算 y = k+eXsk_s。4.输出(x,y)作为签名S。在这种情况下,如下描述地满足所有上文条件。签名方案条件1 sk' _s 可以计算为 sk' _s = SigningKeyRandomize (sk_s,r) = sk_s+r。此夕卜, sk〃 _s = SigningKeyRandomize (sk' _s,r' ) = sk_s+r+r'成立,并且由此满足 sk〃 _ s = SigningKeyRandomize(sk_s, r+r‘)。签名方案条件2:s'可以计算为 SignatureRandomize (s = (x, y), m, r) = (χ, y+H(m, χ) Xr)。签名方案条件3:随机化的签名表达为s' = (x,y' =k+H(m,x)X(sk_s+r))。由此,s = Sign(sk_ s,m)可以根据s'、!!!和!“计算为“太-H(m,x)Xr)。在Waters的签名方案中(非专利文献7),也满足上述所有条件。在Waters的签 名方案中,执行以下计算作为签名生成函数Sign(sk_s,m)。具体地,生成随机数k,继而计 算(Sk_SXExp(f(m),k),Exp(g,k))作为签名s。这里,g代表公共参数,并且f代表公共 函数。在此情况下,如下描述满足所有上述条件。签名方案条件1 sk' _ssk ‘ _s = SigningKeyRandomize (sk_s, r) = sk_sXr。夕卜,sk〃 _s = SigningKeyRandomize (sk' _s, r' ) = sk_sXrXr'成立,并且由此满足 sk" _s = SigningKeyRandomize (sk_s, rXr')。签名方案条件2:s' "SJ以i十胃力 SignatureRandomize (s = (sk_sXExp (f (m), k), Exp (g, k)), m, r) = (r X sk_s X Exp (f (m), k), Exp (g, k)) m 未用于此计算。签名方案条件3:随机化的签名表达为s' =(sl',s2' ) = (rXsk_sXExp(f(m),k),Exp(g,k))。 由此,s = Sign(sk_s,m)可以根据s'、111和1·计算为(sl' /r, s2' )。M未用于此计算。除了 BLS签名方案、Schnorr签名方案和Waters签名方案之外,Lysyanskaya的签 名方案(非专利文献6)等也满足上述所有条件。接下来,下面将考虑概要的加密方案。<加密方案>加密c = Enc (pk_e, m)(其中pk_e代表公共加密密钥,m代表消息,并且c代表 密文);解密m = Dec (sk_e, c)(其中sk_e代表私密解密密钥)。加密函数Enc可以内部使用随机数。在这种情况下,c随机地生成。就加密方案而言,本发明将以下两种属性纳入考虑。例如,EKiamal加密方案(非 专利文献幻具有这两种属性。具有同态属性的加密方案对于任何消息配对(ml,m2),如果在给出ml的密文cl = Enc (pk_e, ml)和m2时能够计算EnC(pk_e,mlXm2),则这种加密方案称为具有同态属性。这里,X代表算术操作, 诸如相加或相乘,如签名方案条件1中所述。例如,El Gamal加密方案(非专利文献3)对 于乘而言具有这一属性。可重新随机化的加密方案此属性与随机生成密文c的加密方案有关。如果当针对特定的消息m给出密文c =Enc(pk_e,m)和加密密钥pk_e时,存在随机算法c' = Rerandomize (c, pk_e)用于对密 文c进行重新随机化,并且c = Enc (pk_e,m)的随机分布等于c' = Rerandomize (c,pk_e) 的随机分布,则这种加密方案称为是可重新随机化的。通过结合使用上述加密方案和签名方案的配对,下面的签名而后加密程序是可以 想到的。此程序旨在根据本发明的模糊化。<旨在模糊化的签名而后加密程序>输入消息m程序中要保持的信息发送方的私密签名生成密钥sk_s和接收方的公共加密密 钥 pk_e输出针对m的签名的密文处理内容1.计算 s = Sign(sk_s, m);2.生成随机数r;3.计算 s' = SignatureRandomize (s,m, r)(参见签名方案条件 2);4.计算 R = Enc (pk_e, r)(随机数 r 的加密);5.输出(s',R)。换言之,步骤1对应于签名处理,而步骤2到5对应于加密处理。具有接收的(s', R)的接收方首先解密R以计算r,也即,计算r = DeC(sk_e,R)。继而,接收方按照签名方 案条件3,根据(s',m,r)来计算签名S。最后接收方通过使用函数Verify (pk_s,s,m)来 验证签名。如问题描述中所描述的,上面的程序按照原样保持发送方的私密签名生成密钥 sk_s,由此密钥容易被泄露。为此,需要对程序进行模糊化,从而不应泄露sk_s。<模糊化的签名而后加密程序>下面将描述两类模糊化的程序。每个经模糊化的程序不是按照原样保持发送方的 私密签名生成密钥sk_S,而是保持通过根据签名方案条件1对吐_8进行随机化而获得的值 sk' _s,即sk' _s = SigningKeyRandomize (sk_s,r)。此外,程序保持通过加密r而获得 的密文R,即R = Enc(pk_e, r)。由于签名方案条件1和加密,不会从这些信息片段中泄露 出 sk_s0<模糊化的签名而后加密程序1>输入消息m。将要保持在程序中的信息Lsk' _s = SigningKeyRandomize (sk_s, r);2. R = Enc(pk_e, r);3.接收方的公共加密密钥pk_e。
输出针对m的签名的密文。处理内容1.计算 s' = Sign (sk' _s,m)(其中 s' = SignatureRandomize (Sign (sk_s,m), m, r)通过签名方案2而得以满足);2.输出(s',R)。接收方在接收到(s',R)之后执行的处理与上文描述相同。具体地,接收方解密 R以计算r,也即,计算r = DeC(sk_e,R)。继而,接收方按照签名方案条件3,根据(s‘,m, r)来计算签名。最后,接收方通过使用函数Verify (pk_s,s,m)来验证签名。在某些情况下,上述模糊化的程序对于相同的消息m总是产生相同的输出,这在 安全性的方面有时不是优选的。如下所述,可以通过改善程序对输出进行随机化。由于没 有对将保持在程序中的信息进行任何改变,因此从不会从程序泄露sk_s。<模糊化的签名而后加密程序2>输入消息m。将要保持在程序中的信息与程序1相同。输出针对m的签名的密文。处理内容1.生成随机数r';2.计算 sk “ _s = SigningKeyRandomize (sk ‘ _s, r ‘)(其中 sk 〃 _s = SigningKeyRandomize (sk_s, rXr')通过签名方案条件1得以满足);3.计算 s" =Sign(sk" _s,m)(其中 s〃 = SignatureRandomize (Sign (sk_s,m), m,rXr')通过签名方案条件1和2得以满足);4.如果加密方案具有同态属性,则根据R和r'来计算rXr'的密文R"。这里,如果加密方案是可重新随机化的,则R"可以根据需要重新随机化。在这种 情况下,计算R〃 = Rerandomize (R",pk_e),继而输出(s〃,R〃)。如果加密方案不具有 同态属性,则无法计算R"。在这种情况下,计算R' =Enc(pk_e,r'),继而输出(s 〃,(R, R'))而不是(s〃,R")。此时,可以通过计算R = Rerandomize (R,pk_e)根据需要对R 进行重新随机化。如果加密方案具有同态属性,则接收方在接收到(s",R")之后执行以下处理 (解密验证)。首先,接收方解密R"以计算rXr',也即,计算rXr' = Dec (sk_e, R")。 继而接收方按照签名方案条件3根据(s' ,m,rXr')来计算签名s。最后,接收方通过使 用函数Verify (pk_s,s, m)来验证签名S。如果加密方案不具有同态属性,则接收方在接收到(s",(R,R'))之后执行以下 处理(解密验证方法)。首先,接收方解密R和R'以计算r和r',也即,计算r = Dec (sk_ e,R)和r' =Dec(sk_e, R')。继而,接收方按照签名方案条件3根据(s‘ , m, rXr') 来计算签名S。最后,接收方通过使用函数Verify (pk_s,s, m)来验证签名S。〈在线电子邮件服务器〉可以利用通过使用本发明而模糊化的程序来安全地执行在线电子邮件服务中的 StE处理。此后,将描述发送方向接收方发送电子邮件的示例。注意,假设,发送方的私 密签名生成密钥和公共签名验证密钥以及接收方的公共加密密钥和私密解密密钥由基于πα (公钥基础架构)的密钥管理中心来管理。此外,PKI服务器610提供了用于实现Η(Ι 系统的证书授权(CA)和注册授权(RA)的功能。换言之,PKI服务器610通过使用PKI来 执行数字证书的发布以及管理对数字证书的操作。如图9所示,对于每个用户,PKI服务器 610管理用于加密的公共加密密钥和私密解密密钥,以及用于签名的公共验证密钥和私密 签名密钥。图5示出了使用本发明的在线电子邮件服务器中的ME处理的概述。步骤1 发送方310访问服务器Α(330)的服务,在发送方310的浏览器上生成邮 件m,并且按压发送按钮。向服务器A发送邮件m。步骤2 服务器A(330)从密钥管理中心510获取接收方320的公共加密密钥,以 及用于从发送方310向接收方320的发送的模糊化StE程序。步骤3 服务器A(330)利用接收方320的公共加密密钥来生成邮件m的密文,还 利用模糊化StE程序来生成针对邮件m的签名的密文。继而,服务器A向服务器B (340)发 送这些密文。步骤4 服务器B (340)从密钥管理中心510获取接收方320的私密解密密钥以及 发送方310的公共签名验证密钥。继而,服务器B解密加密的邮件m,并且解密和验证签名。步骤5 接收方320访问服务器B (340)的服务,由此在浏览器上读取来自发送方 310的邮件m。在这种情况下,在浏览器上显示签名验证结果。将更为详细地描述上述步骤 2 至Ij 5。图6示出了步骤2的详细操作。服务器A(330)首先向密钥管理中心510的模糊 化单元420发送关于发送方310和接收方320的信息。这里,该信息指示诸如发送方和接 收方的姓名和用户ID的信息,可以利用该信息来指定用户。模糊化单元420向PKI服务器 发送关于发送方和接收方的信息,并且从PKI服务器获取发送方的私密签名生成密钥sk_s 和接收方的公共加密密钥Pk_e。继而,模糊化单元420向服务器A(330)发送通过利用随机数r对发送 方310的私密签名生成密钥sk_s进行随机化而获得的签名生成密钥sk' _s = SigningKeyRandomize (sk_s, r);以及通过利用接收方320的公共加密密钥pk_e对随机数 r进行加密而获得的R = Enc(pk_e, r)。这里,由服务器A(330)获取随机化的签名生成密 钥sk' _s和密文R被称为由服务器A(330)获取模糊化StE程序。在步骤3中,服务器A(330)首先通过使用接收方320的公共加密密钥pk_e来生 成邮件m的密文M。继而,服务器A通过使用模糊化StE程序(sk' _8和幻来计算s'= Sign(sk' _s,m)。此后,服务器A向服务器B (340)发送M和(s‘,R)。这里,(s',R)代 表模糊化的签名而后加密程序1的处理结果。备选地,服务器A(330)可以执行模糊化的签 名而后加密程序2的处理。图7示出了步骤4的详细操作。服务器B(340)首先接收密文M以及模糊化ME 程序的处理结果(s',R)。服务器B(340)继而向PKI服务器610发送关于发送方310和 接收方320的信息,并且从PKI服务器610获取发送方的公共验证密钥pk_s和接收方的私 密解密密钥sk_e。服务器B (340)继而从密文M解密邮件m。服务器B (340)随后利用接收方320的私密解密密钥sk_e来解密R以获得原始随 机数r,并且按照签名方案条件3根据(s',m,r)来计算签名S。继而,服务器B通过使用发送方310的公共验证密钥pk_s来计算结果=Verify (pk_s, s, m)作为签名验证结果。图8示出了步骤5的详细操作。接收方320访问服务器B (340)的服务,由此在浏 览器上读取来自发送方310的邮件。在这种情况下,在浏览器上显示服务器B (340)中计算 的签名验证结果。图8示出了签名验证失败的情况。在此示例中,通过弹出窗口向接收方 320通知验证失败的警示消息。图11示出了上述步骤1到5的整体处理转换图。在步骤1110,发送方310访问服务器A(330)的服务,在发送方310的浏览器上生 成邮件m,并且按压发送按钮。此时,向服务器A发送邮件m。在步骤1120,服务器A(330)访问密钥管理中心510以获取模糊化StE程序。更 具体地,服务器A (330)向密钥管理中心510的模糊化单元420发送关于发送方310和接收 方320的信息。这里,该信息指示诸如发送方和接收方的姓名和用户ID的信息,可以利用 该信息来指定用户。在步骤1130,模糊化单元420向PKI服务器610发送关于发送方310和接收方320的信息。在步骤1140,PKI服务器610向模糊化单元420发送发送方310的私密签名生成 密钥sk_s和接收方320的公共加密密钥pk_e。在步骤1150,模糊化单元420向服务器A(330)发送通过利用随机数r对 发送方310的私密签名生成密钥吐_8进行随机化,而获得的签名生成密钥sk' _s = SigningKeyRandomize (sk_s, r);以及通过利用接收方320的公共加密密钥pk_e对随机数 r进行加密而获得的R = Enc (pk_e, r)。在步骤1160,服务器A (330)首先通过使用接收方320的公共加密密钥pk_e来生 成邮件m的密文M。继而,服务器A通过使用模糊化StE程序(sk' _8和幻来计算s'= Sign(sk' _s,m)。此后,服务器A向服务器B (340)发送M和(s‘,R)。这里,(s',R)代 表模糊化的签名而后加密程序1的处理结果。备选地,服务器A可以执行模糊化的签名而 后加密程序2的处理。在步骤1170,在接收邮件时,服务器B(340)接收密文M以及模糊化ME程序的处 理结果(s',R)。服务器B继而向PKI服务器610发送关于发送方310和接收方320的信肩、ο在步骤1180,PKI服务器610向服务器B(340)发送发送方的公共验证密钥pk_s 和接收方的私密解密密钥sk_e。在步骤1190,服务器B(340)从PKI服务器610获取发送方的公共验证密钥pk_s 和接收方的私密解密密钥sk_e。服务器B由此从密文M解密邮件m。服务器B随后利用接 收方320的私密解密密钥sk_e来解密随机数R以获得原始随机数r,并且按照签名方案条 件3根据(s',m,r)来计算签名S。继而,服务器B通过使用发送方310的公共验证密钥 pk_s来计算结果=Verify (pk_s,s,m)作为签名验证结果。此过程对应于解密验证方法和 解密验证程序。最后,服务器B向接收方320发送(m,结果)。〈计算机硬件的框图〉图10示出了本发明实施方式的每个服务器(邮件发送服务器和邮件接收服务 器)中包括的计算机硬件的框图的示例。根据本发明实施方式的计算机系统(1001)包 CPU (1002)和主存储器(1003),其连接至总线(1004)。CPU (1002)优选地基于32位或 者64位架构。例如,Intel公司的Xeon (商标)系列、Core (商标)系列、Atom (商标)系 列、Pentium (商标)系列禾口 Celeron (商标)系列,以及Advanced Micro Devices公司的 Phenom (商标)系列、Athlon (商标)系列、Turion (商标)系列以及Sempron (商标)系列 可以用作CPU(1002)。诸如LCD监视器的显示器(1006)通过显示器控制器(100 连接至总线(1004)。 显示器(1006)用来在适当的图形界面上显示经由通信线路(1015)连接至网络的计算机系 统(1001)的有关信息以及在计算机系统(1001)上运行的软件的有关信息。而且,硬盘或 硅盘(1008)以及⑶-ROM驱动、DVD驱动或者蓝光驱动(1009)通过IDE或者SATA控制器(1007)连接至总线(1004)。操作系统、包括本发明代码的程序(邮件发送程序和邮件接收程序)以及数据 存储在硬盘(1008)中,其可加载至主存储器(100;3)。将要在本发明的StE处理中使用 的消息、邮件和各种密钥的有关数据存储在硬盘(1008)或者主存储器(100 中,并且经 历CPU(1002)的加密或解密处理。用于执行在线电子邮件服务的程序优选地存储在硬盘(1008)中,并且根据需要加载到主存储器(1003)中并被执行,以便向用户提供服务。⑶-ROM驱动、DVD驱动或蓝光驱动(1009)根据需要附加地用于从⑶-ROM、DVD-ROM 或蓝光驱动向硬盘(1008)加载程序。键盘(1011)和鼠标(1012)也通过键盘/鼠标控制 器(1010)连接至总线(1004)。本发明的图示数据可以存储在上述外部存储中并从其读取。通信接口(1014)例如与以太网(商标)协议兼容。通信接口(1014)通过通信控 制器(1013)连接至总线(1004),并且操作用于物理上连接计算机系统(1001)与通信线路 (1015)。通信接口(1014)还提供与TCP/IP通信协议的网络接口层,TCP/IP通信协议是计 算机系统(1001)的操作系统的通信功能。这里,通信线路(1015)可以是有线的LAN环境, 或者是基于诸如IEEE 802. 11 a/b/g/n等无线LAN连接标准的无线LAN环境。计算机系统 (1001)通过通信接口(1014)向用户提供在线邮件服务。[参考标号列表]110、210、310…邮件发送方120、220、320…邮件接收方330…服务器A340…服务器B410-ME处理器420…模糊化单元430…模糊化StE程序510…密钥管理中心610... PKI服务器1001…计算机系统1002... CPU1003…主存储器1004…总线1005…显示器控制器
1006…显示器1007…IDE 或 SATA 控制器1008…硬盘或硅盘1009…CD-ROM驱动、DVD驱动或蓝光驱动1010…键盘/鼠标控制器1011 …键盘1012 …鼠标1013…通信控制器1014…通信接口1015…通信线路
权利要求
1.一种用于通过包括处理器和存储器的计算机的处理来发送消息的消息发送方法,所 述方法包括步骤(1)利用随机数r对签名生成密钥sk_s随机化,以计算随机化签名生成密钥Sk'_s =SigningKeyRandomize(sk_s, r);(2)利用公共加密密钥pk_e来加密所述随机数r,以计算加密的随机数R= Enc (pk_e,r);(3)利用所述随机化签名生成密钥sk'_s对消息m进行签名,以计算签名的消息s' =Sign(sk' _s, m);以及(4)向接收方发送所述签名的消息s'和所述加密的随机数R,其中sk_s代表所述消息m的发送方的私密签名生成密钥,pk_e代表所述接收方的公 共加密密钥,r代表随机数,s代表签名,Sign代表签名生成函数,s = Sign(sk_s, m)代表 针对所述消息m的签名,SigningKeyRandomize代表用于对私密签名生成密钥sk_s随机化 的函数,并且Enc代表加密函数。
2.根据权利要求1所述的方法,其中步骤(3)是这样的步骤利用与所述随机数r不同的随机数r'来计算sk" _s = SigningKeyRandomize (sk' _s, r'),以便对随机化签名生成密钥sk' _s再次进行随机 化,继而利用由此再次随机化的签名生成密钥sk" _s来对所述消息m进行签名,以计算签 名的消息s" =Sign(sk" _s,m);以及步骤(4)是这样的步骤根据所述加密的随机数R和所述随机数r'来计算r Xr'的 密文R",继而向所述接收方发送值(s",R")。
3.根据权利要求1和2任一项所述的方法,其中所述签名生成函数使用以下任意一个 BLS签名方案、Schnorr签名方案、Lysyanskaya签名方案以及Waters签名方案。
4.一种解密验证方法,包括步骤接收利用根据权利要求1所述的方法发送的值(s',R);利用解密函数Dec来解密由此接收的加密的随机数R,以计算随机数r = Dec(sk_e,R);根据由此接收的签名的消息s'、消息m以及作为所述解密的结果的随机数r来计算签 名s ;以及通过使用验证函数Verify (pk_s,s, m)来验证所述签名s,其中pk_s代表所述消息m的发送方的公共签名验证密钥,sk_e代表所述接收方的私 密解密密钥,DeC(Sk_e,R)代表解密函数,并且Verify (pk_s,s, m)代表验证函数。
5.一种邮件发送方法,包括步骤使服务器A响应于发送方对邮件m的发送,向密钥管理中心发送关于所述发送方和接 收方的信息;使所述密钥管理中心向PKI服务器发送关于所述发送方和所述接收方的所述信息,由 此从所述PKI服务器获取所述发送方的私密签名生成密钥sk_s以及所述接收方的公共加 密密钥pk_e ;使所述服务器A从所述密钥管理中心接收通过利用随机数r对所述私密签名生成密钥 sk_s进行随机化而获得的随机化签名生成密钥sk' _s = SigningKeyRandomize (sk_s,r),以及通过利用所述接收方的所述公共加密密钥pk_e对所述随机数r进行加密而获得的加 密的随机数R = Enc(pk_e,r);使所述服务器A通过使用所述接收方的所述公共加密密钥pk_e来生成邮件m的密文 M = Enc (pk—e,m);使所述服务器A通过使用所述随机化签名生成密钥sk' _s和所述加密的随机数R,来 计算 s' =Sign(sk' _s,m);以及使所述服务器A向服务器B发送所述邮件m的所述密文M和值(s ‘,R)。
6.一种邮件接收方法,包括步骤使服务器B接收根据权利要求5的邮件m的密文M和值(s',R); 使所述服务器B向PKI服务器发送关于发送方和接收方的信息,由此从所述PKI服务 器获取所述发送方的公共验证密钥pk_s和所述接收方的私密解密密钥sk_e ;使所述服务器B通过使用所述接收方的所述私密解密密钥sk_e来解密所述密文M以 获得邮件m = Dec (sk_e, Μ),以及解密所述随机数R以获得随机数r = Dec (sk_e, R),并且 根据值(s',m,r)来计算签名s ;以及使所述服务器B通过使用验证函数Verify (pk_s,s, m)来验证所述签名S。
7.一种邮件发送系统,包括用于执行权利要求1-5中任一项的任何步骤的装置。
8.一种邮件接收系统,包括用于执行权利要求6的任何步骤的装置。
9.一种邮件发送服务器,包括用于响应于发送方对邮件m的发送,向密钥管理中心发送关于所述发送方和接收方的 信息的装置;用于从所述密钥管理中心接收通过利用随机数r对所述发送方的私密签名生成密钥 sk_s进行随机化而获得的随机化签名生成密钥sk' _s = SigningKeyRandomize (sk_s,r)、 以及通过利用所述接收方的公共加密密钥pk_e对所述随机数r进行加密而获得的随机数 R = Enc(pk_e,r)的装置;所述发送方的所述私密签名生成密钥sk_s和所述接收方的所述 公共加密密钥pk_e由所述密钥管理中心通过向PKI服务器发送关于所述发送方和所述接 收方的所述信息而从所述PKI服务器获取;用于通过使用所述接收方的所述公共加密密钥pk_e来生成邮件m的密文M = Enc (pk_ e,m)的装置;用于使用所述随机化从而模糊化的签名生成密钥sk' _s和所述加密的随机数R来计 算s' = Sign(sk' _s,m)的装置;以及用于向服务器B发送所述邮件m的所述密文M和值(s',R)的装置。
10.一种邮件接收服务器,包括用于接收根据权利要求13的邮件m的密文M和值(s',R)的装置; 用于向PKI服务器发送关于发送方和接收方的信息、由此从所述PKI服务器获取所述 发送方的公共验证密钥pk_s和所述接收方的私密解密密钥sk_e的装置;用于通过使用所述接收方的所述私密解密密钥sk_e来解密所述密文M以获得邮件m = DeC(sk_e,M)、以及解密所述随机数R以获得随机数r = Dec(sk_e,R),并且根据值(s', m,r)来计算签名s的装置;以及用于通过使用验证函数Verify (pk_s,s, m)来验证所述签名s的装置。
全文摘要
本发明涉及消息发送/接收方法和系统以用于完全防止私钥的泄露。具体地,提供一种发送消息的消息发送方法。该方法包括步骤(1)利用随机数r对签名生成密钥sk_s随机化,以计算随机化签名生成密钥sk′_s=SigningKeyRandomize(sk_s,r);(2)利用公共加密密钥pk_e来加密随机数r,以计算加密的随机数R=Enc(pk_e,r);(3)利用随机化签名生成密钥sk′_s对消息m进行签名,以计算签名的消息s′=Sign(sk′_s,m);以及(4)向接收方发送签名的消息s′和加密的随机数R,其中sk_s代表消息m的发送方的私密签名生成密钥,pk_e代表接收方的公共加密密钥,r代表随机数,s代表签名,Sign代表签名生成函数,s=Sign(sk_s,m)代表针对消息m的签名,SigningKeyRandomize代表用于对私密签名生成密钥sk_s随机化的函数,并且Enc代表加密函数。
文档编号H04L9/32GK102055760SQ20101053391
公开日2011年5月11日 申请日期2010年10月29日 优先权日2009年10月30日
发明者羽田知史 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1