專利名稱:消息發(fā)送/接收方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及用于發(fā)送/接收消息(郵件)的方法,并且具體地,涉及用于安全地生 成、發(fā)送和接收經(jīng)簽字消息的方法、系統(tǒng)和程序。
背景技術:
用戶通過諸如Gmail (http//mail, google, com)的在線電子郵件服務器中的web 瀏覽器來發(fā)送和接收郵件?,F(xiàn)在假設郵件經(jīng)過簽字并且繼而在這種環(huán)境中被加密,諸如 通過PGP或者S/MIME來執(zhí)行。換言之,假設對郵件執(zhí)行所謂的“簽名而后加密”(ME)處 理。瀏覽器通常不管理簽名生成密鑰以及加密密鑰,由此StE處理無法在用戶的計算機上 本地執(zhí)行。因此,服務器保持關于簽名生成密鑰和加密密鑰的信息,并且還執(zhí)行StE處理。 例如,考慮如下情況,即發(fā)送方在郵件經(jīng)歷StE處理之后向接收方發(fā)送郵件。在此情況下, 發(fā)送方的私密簽名生成密鑰和接收方的公共加密密鑰保持在服務器上。服務器使用這些密 鑰對發(fā)送方在瀏覽器上創(chuàng)建的郵件執(zhí)行StE處理,而后發(fā)送該郵件。在上述環(huán)境中,如果惡意攻擊方(內(nèi)部或外部)侵入服務器,則發(fā)送方的私密簽名 生成密鑰可能被盜。為應對該問題,需要某種類型的保護手段。專利文獻1描述了一種方 法,其通過不允許密鑰公共中心保持任何私密簽名生成密鑰,來防止密鑰公共中心中的欺 詐。然而,專利文獻1無法提供用于執(zhí)行StE處理的方法,因為密鑰公共中心從開始就沒有 保持簽名生成密鑰。非專利文獻1描述了用于以Java(商標)或C編寫的程序進行模糊化 的各種技術。存在很多這樣的模糊化工具(包括可以商業(yè)上購得的),并且可被用于HME 處理的程序模糊化。然而,這些工具旨在使程序難以閱讀,并且無法完全阻止私鑰的泄露。 非專利文獻2描述了用于對重新加密(解密而后加密解密密文繼而利用另一密鑰來加密 已解密密文的操作)進行模糊化。非專利文獻2提供了一種使解密而后加密函數(shù)模糊化的 技術,并且無法用于使ME函數(shù)模糊化。非專利文獻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.
發(fā)明內(nèi)容
本發(fā)明的目的是完全防止從服務器上保持的信息泄露私鑰。具體地,目的是允許 使用保持的信息來執(zhí)行StE處理,以及防止從保持的信息泄露私密簽名生成密鑰。為了實 現(xiàn)上述目的,本發(fā)明具有用于在服務器上保持發(fā)送方的私密簽名生成密鑰的獨特配置。此 目的不限專用于在線電子郵件服務,而是還適用于提供需要StE處理的工作流應用等的所 有web服務和^aS服務。根據(jù)模糊化技術,本發(fā)明的目的可以理解為對程序進行模糊化, 以完全防止私密簽名生成密鑰的泄露,該程序保持私鑰并且將被執(zhí)行以用于StE處理。為了解決上述問題,本發(fā)明提供了一種消息發(fā)送方法,用于通過包括處理器和存 儲器的計算機的處理來發(fā)送消息。該方法包括步驟(1)利用隨機數(shù)r對簽名生成密鑰sk_ s隨機化,以計算隨機化的簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s, r) ; (2) 利用公共加密密鑰pk_e來加密隨機數(shù)r,以計算加密的隨機數(shù)R = Enc (pk_e,r) ; (3)利用 隨機化的簽名生成密鑰sk' _s對消息m進行簽名,以計算簽名的消息s' = Sign(sk' _ s,m);以及向接收方發(fā)送簽名的消息s'和加密的隨機數(shù)R。在上面的步驟中,sk_ s代表消息m的發(fā)送方的私密簽名生成密鑰,表接收方的公共加密密鑰,r代表隨 機數(shù),s代表簽名,Sign代表簽名生成函數(shù),s = Sign(sk_s, m)代表針對消息m的簽名, SigningKeyRandomize代表用于對私密簽名生成密鑰sk_s隨機化的函數(shù),并且Enc代表加 密函數(shù)。這里,步驟(3)和(4)分別可以是以下步驟利用與隨機數(shù)r不同的隨機數(shù)r'來 計算s k〃 _s = SigningKeyRandomize (sk' _s,r'),以便對隨機化簽名生成密鑰sk' _ S再次進行隨機化,繼而利用再次隨機化的簽名生成密鑰sk" _s來對消息m進行簽名,以 計算簽名的消息s" = Sign(sk" _s,m);以及根據(jù)加密的隨機數(shù)R和隨機數(shù)r'來計算 rXr'的密文R〃,繼而向接收方發(fā)送值(s〃,R")。這里,簽名生成函數(shù)可以使用以下任何一個BLS簽名方案,Schnorr簽名方案, Lysyanskaya簽名方案,以及Waters簽名方案。此外,該消息發(fā)送方法還可以包括步驟接 收簽名的消息s'和加密的隨機數(shù)R ;利用解密函數(shù)Dec來解密由此接收的加密的隨機數(shù) R,以計算隨機數(shù)r = Dec (sk_e,R);根據(jù)由此接收的簽名的消息s‘、消息m以及作為解密 結果的隨機數(shù)r來計算簽名s ;以及通過使用驗證函數(shù)Verify (pk_s,s, m)來驗證簽名S。 在上面的步驟中,pk_s代表消息m的發(fā)送方的公共簽名驗證密鑰,sk_e代表接收方的私密 解密密鑰,DeC(Sk_e,R)代表解密函數(shù),并且Verify (pk_s,s, m)代表驗證函數(shù)。在另一方面,本發(fā)明提供一種郵件發(fā)送方法,包括步驟使服務器A響應于發(fā)送方 的郵件m的發(fā)送,向密鑰管理中心發(fā)送關于該發(fā)送方和接收方的信息;使密鑰管理中心向 PKI服務器發(fā)送關于發(fā)送方和接收方的信息,由此從PKI服務器獲取發(fā)送方的私密簽名生成密鑰sk_s以及接收方的公共加密密鑰pk_e ;使服務器A從密鑰管理中心接收通過利用 隨機數(shù)r對私密簽名生成密鑰sk_s進行隨機化而獲得的隨機化簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s, r),以及通過利用接收方的公共加密密鑰pk_e對隨機數(shù)r進 行加密而獲得的加密的隨機數(shù)R = Enc (pk_e,r);使服務器A通過使用接收方的公共加密 密鑰pk_e,來生成郵件m的密文M = Enc (pk_e,m);使服務器A通過使用隨機化簽名生成密 鑰sk' _8和加密的隨機數(shù)R來計算s' = Sign(sk' _s,m);以及使服務器A向服務器B 發(fā)送郵件m的密文M和值(s',R)。此郵件發(fā)送方法還可以包括步驟使服務器B接收郵件m的密文M和值(s',R); 使服務器B向PKI服務器發(fā)送關于發(fā)送方和接收方的信息,由此從PKI服務器獲取發(fā)送方 的公共驗證密鑰pk_s和接收方的私密解密密鑰sk_e ;使服務器B通過使用接收方的私密 解密密鑰sk_e,來解密密文M以獲得郵件m = Dec(sk_e,M),以及解密隨機數(shù)R以獲得隨機 數(shù)r = Dec (sk_e, R),并且根據(jù)值(s ‘,m,r)來計算簽名s ;以及使服務器B通過使用驗證 函數(shù)Verify (pk_s,s, m)來驗證簽名S。即使用于從發(fā)送方向接收方的發(fā)送的模糊化StE程序應當被泄露并被攻擊方和 獲得,本發(fā)明也可以預期以下效果等。1.攻擊方無法篡改發(fā)送方的簽名。2.攻擊方無法執(zhí)行用于從發(fā)送方向除接收方之外的第三方的發(fā)送的StE處理。3.通過在程序泄露后盡可能快地更新接收方的公鑰,可以使泄露的程序變得毫無 價值。這種情況下,不需要更新發(fā)送方的私密簽名生成密鑰。
圖1示出了傳統(tǒng)的簽名而后加密方法。圖2示出了傳統(tǒng)的郵件發(fā)送方法的示例。圖3示出了向在線郵件服務器應用StE處理的示例。圖4是示出本發(fā)明的概況的視圖。圖5示出了采用本發(fā)明的在線電子郵件服務器中的StE處理的概況。圖6是示出步驟2的詳細操作的視圖。圖7是示出步驟4的詳細操作的視圖。圖8是示出步驟5的詳細操作的視圖。圖9是用于管理每個用戶的各種密鑰的表。圖10示出了每個服務器中包括的計算機硬件的框圖的示例。圖11是步驟1到5的整體的處理轉換圖表。
具體實施例方式〈傳統(tǒng)的簽名而后加密方法〉在描述本發(fā)明的概況之前,首先將利用圖1示出的圖示來描述傳統(tǒng)的簽名而后加 密(ME)方法。郵件發(fā)送方110利用私密簽名生成密鑰對輸入的消息m進行簽名,以生成 簽名σ。繼而,郵件發(fā)送方110利用接收方120的公共加密密鑰來加密(m,σ),以生成密 文C。接收方120解密已發(fā)送的密文c,以獲得消息m及其驗證結果。當StE處理由程序執(zhí)行時,包括在StE程序中的信息包括發(fā)送方110的私密簽名生成密鑰以及接收方120的公 共加密密鑰。郵件接收方120利用接收方120的私密解密密鑰來解密發(fā)送的密文c,并且利 用發(fā)送方110的公共驗證密鑰來驗證解密的文本。圖2示出了向傳統(tǒng)的郵件發(fā)送方法應用 上述StE處理的示例。在圖2中,StE處理由發(fā)送方210的PC上的電子郵件應用來執(zhí)行。 繼而,由此加密的郵件經(jīng)由服務器A(230)并繼而經(jīng)由服務器B(MO)到達接收方220的PC, 并且由接收方220的電子郵件應用解密和驗證。然而,在郵件主要通過因特網(wǎng)發(fā)送和接收 的當前環(huán)境中,多數(shù)情況下使用在線電子郵件服務。該在線服務器由服務器提供,并且用 戶通過web瀏覽器來發(fā)送和接收郵件。圖3示出了向在線電子郵件服務應用StE處理的情 況。當在發(fā)送方310的PC上生成郵件之后,服務器A(330)對該郵件執(zhí)行StE處理,并且向 服務器B (340)發(fā)送由此加密的郵件。繼而,服務器B (340)解密加密的郵件,并最終向接收 方320的PC發(fā)送由此解密和驗證的郵件。〈本發(fā)明的概述〉如果圖3所示的用于StE處理的程序通過通常的(初級的)方式實現(xiàn)并被保持在 服務器A(330)上,則發(fā)送方的私密簽名生成密鑰可能易于從StE程序泄露。為了解決此問 題,本發(fā)明提出一種用于對該程序進行模糊化的方法,并且經(jīng)過模糊化的程序保持在服務 器上。此前存在針對以Java或C編寫的程序的多種通用模糊化工具。然而,這些工具的目 的僅僅是為了使得程序難以閱讀,并且這些工具不被認為能夠完全防止私鑰泄露。本發(fā)明 與針對特定編程語言的通用模糊化技術無關,但是與針對特定StE程序的密碼學模糊化有 關。本發(fā)明的基本思想是設計簽名方案和加密方案的配對,該配對具有特殊的屬性,其中以 下兩個處理彼此等效。1.在給出特定消息時,利用發(fā)送方的私密簽名生成密鑰對該消息進行簽名。繼而, 利用接收方的公共加密密鑰來加密簽名的數(shù)據(jù)。2.在給出特定消息時,利用接收方的公共加密密鑰來加密發(fā)送方的私密簽名生成 密鑰。繼而,利用加密的簽名生成密鑰對消息進行簽名。前一處理是旨在模糊化的StE處理。后一處理中的“利用接收方的公共加密密鑰 來加密發(fā)送方的私密簽名生成密鑰”對應于本發(fā)明的模糊化。特別地,發(fā)送方的加密的簽名 生成密鑰保持在經(jīng)模糊化的程序中,并且用來對給定的消息進行簽名。這使得后一處理等 效于前一 StE處理。由于發(fā)送方的加密的簽名生成密鑰是加密信息,因此可以確保不從信 息中泄露發(fā)送方的簽名生成密鑰。圖4示出了本發(fā)明的概述。在傳統(tǒng)方式中,StE處理器410利用發(fā)送方的私密簽 名生成密鑰對消息m進行簽名012),從而生成簽名ο。繼而,StE處理器410利用接收方 的公共加密密鑰來加密(414)簽名ο,繼而輸出密文C。另一方面,在本發(fā)明中,發(fā)送方的 簽名生成密鑰首先利用接收方的公共加密密鑰來加密G20)。繼而,加密的簽名生成密鑰被 保持,繼而被用來對消息m進行簽名并輸出密文c (432)。執(zhí)行上述處理的處理器430對應 于通過對StE處理器410進行模糊化獲得的程序。執(zhí)行上述處理以加密針對消息m的簽名 σ,而不是加密消息m本身。對消息本身的加密可以通過使用接收方公共加密密鑰典型混合型加密來實現(xiàn),并且不需要發(fā)送方的私密簽名生成密鑰。由此,消息不是必須被模 糊化,由此不是根據(jù)本發(fā)明的模糊化的目標。<詳細實施方式>
下面將給出對本發(fā)明實施方式的詳細描述?,F(xiàn)在,下文將考慮概要的簽名方案〈簽名方案〉簽名s = Sign(sk_s, m)(其中sk_s代表私密簽名生成密鑰,m代表消息,并且s 代表簽名結果);驗證Verify (pk_s, s,m)(其中pk_s代表公共簽名驗證密鑰);簽名生成函數(shù)Sign可以內(nèi)部使用隨機數(shù)。在這種情況下,s隨機地生成。假設,簽名方案滿足以下三個條件。簽名方案條件1 (關于簽名生成密鑰的隨機化)存在函數(shù)sk' _s = SigningKeyRandomize(sk_s,r),用于利用隨機數(shù) r 對 私密簽名生成密鑰sk_S進行隨機化,并且絕不會從Sk' _s泄露出關于sk_s的信//S =息。此外,在對Sk' _8進行重新隨機化時,也即,利用另一隨機數(shù)r'計算sk SigningKeyRandomize (sk ‘ _s, r ‘)時,滿足 sk “ _s = SigningKeyRandomize (sk_s, rXr')。換言之,利用r和r‘對sk_s進行兩次隨機化等效于利用rXr‘對sk_s進行一 次隨機化。這里,X代表隨機數(shù)字之間的空間算術操作,諸如相加或相乘。簽名方案條件2 (關于簽名的隨機化)存在函數(shù)s ‘ = SignatureRandomize (s, m, r),用于利用消息m和隨機 數(shù)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 (關于根據(jù)隨機化的簽名對原始簽名的計算)s = Sign(sk_s, m) ^iUMWM^fiit^]^^ s' = SignatureRandomize (s, m, r)、 消息m以及用于隨機化的隨機數(shù)r來計算。例如,在BLS簽名方案(非專利文獻4)的情況下,簽名生成函數(shù)Sign(Sk_S,m)通 過使用散列函數(shù)H被計算為Exp (H(m),sk_s)。換言之,簽名生成函數(shù)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)可以 根據(jù)s'和r計算為Exp (s',1/r)。m未用于此計算。在khnorr的簽名策略中(非專利文獻5),也滿足所有上述條件。在Schnorr的 簽名方案中,執(zhí)行以下計算作為簽名生成函數(shù)Sign(sk_s,m)。1.生成隨機數(shù)k,繼而計算χ = Exp (g,k)。這里,g代表公共參數(shù)。
2.通過使用散列函數(shù)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)可以根據(jù)s'、!!!和!“計算為“太-H(m,x)Xr)。在Waters的簽名方案中(非專利文獻7),也滿足上述所有條件。在Waters的簽 名方案中,執(zhí)行以下計算作為簽名生成函數(shù)Sign(sk_s,m)。具體地,生成隨機數(shù)k,繼而計 算(Sk_SXExp(f(m),k),Exp(g,k))作為簽名s。這里,g代表公共參數(shù),并且f代表公共 函數(shù)。在此情況下,如下描述滿足所有上述條件。簽名方案條件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)可以根據(jù)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代表私密解密密鑰)。加密函數(shù)Enc可以內(nèi)部使用隨機數(shù)。在這種情況下,c隨機地生成。就加密方案而言,本發(fā)明將以下兩種屬性納入考慮。例如,EKiamal加密方案(非 專利文獻幻具有這兩種屬性。具有同態(tài)屬性的加密方案對于任何消息配對(ml,m2),如果在給出ml的密文cl = Enc (pk_e, ml)和m2時能夠計算EnC(pk_e,mlXm2),則這種加密方案稱為具有同態(tài)屬性。這里,X代表算術操作, 諸如相加或相乘,如簽名方案條件1中所述。例如,El Gamal加密方案(非專利文獻3)對 于乘而言具有這一屬性??芍匦码S機化的加密方案此屬性與隨機生成密文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) 的隨機分布,則這種加密方案稱為是可重新隨機化的。通過結合使用上述加密方案和簽名方案的配對,下面的簽名而后加密程序是可以 想到的。此程序旨在根據(jù)本發(fā)明的模糊化。<旨在模糊化的簽名而后加密程序>輸入消息m程序中要保持的信息發(fā)送方的私密簽名生成密鑰sk_s和接收方的公共加密密 鑰 pk_e輸出針對m的簽名的密文處理內(nèi)容1.計算 s = Sign(sk_s, m);2.生成隨機數(shù)r;3.計算 s' = SignatureRandomize (s,m, r)(參見簽名方案條件 2);4.計算 R = Enc (pk_e, r)(隨機數(shù) r 的加密);5.輸出(s',R)。換言之,步驟1對應于簽名處理,而步驟2到5對應于加密處理。具有接收的(s', R)的接收方首先解密R以計算r,也即,計算r = DeC(sk_e,R)。繼而,接收方按照簽名方 案條件3,根據(jù)(s',m,r)來計算簽名S。最后接收方通過使用函數(shù)Verify (pk_s,s,m)來 驗證簽名。如問題描述中所描述的,上面的程序按照原樣保持發(fā)送方的私密簽名生成密鑰 sk_s,由此密鑰容易被泄露。為此,需要對程序進行模糊化,從而不應泄露sk_s。<模糊化的簽名而后加密程序>下面將描述兩類模糊化的程序。每個經(jīng)模糊化的程序不是按照原樣保持發(fā)送方的 私密簽名生成密鑰sk_S,而是保持通過根據(jù)簽名方案條件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的簽名的密文。處理內(nèi)容1.計算 s' = Sign (sk' _s,m)(其中 s' = SignatureRandomize (Sign (sk_s,m), m, r)通過簽名方案2而得以滿足);2.輸出(s',R)。接收方在接收到(s',R)之后執(zhí)行的處理與上文描述相同。具體地,接收方解密 R以計算r,也即,計算r = DeC(sk_e,R)。繼而,接收方按照簽名方案條件3,根據(jù)(s‘,m, r)來計算簽名。最后,接收方通過使用函數(shù)Verify (pk_s,s,m)來驗證簽名。在某些情況下,上述模糊化的程序對于相同的消息m總是產(chǎn)生相同的輸出,這在 安全性的方面有時不是優(yōu)選的。如下所述,可以通過改善程序對輸出進行隨機化。由于沒 有對將保持在程序中的信息進行任何改變,因此從不會從程序泄露sk_s。<模糊化的簽名而后加密程序2>輸入消息m。將要保持在程序中的信息與程序1相同。輸出針對m的簽名的密文。處理內(nèi)容1.生成隨機數(shù)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.如果加密方案具有同態(tài)屬性,則根據(jù)R和r'來計算rXr'的密文R"。這里,如果加密方案是可重新隨機化的,則R"可以根據(jù)需要重新隨機化。在這種 情況下,計算R〃 = Rerandomize (R",pk_e),繼而輸出(s〃,R〃)。如果加密方案不具有 同態(tài)屬性,則無法計算R"。在這種情況下,計算R' =Enc(pk_e,r'),繼而輸出(s 〃,(R, R'))而不是(s〃,R")。此時,可以通過計算R = Rerandomize (R,pk_e)根據(jù)需要對R 進行重新隨機化。如果加密方案具有同態(tài)屬性,則接收方在接收到(s",R")之后執(zhí)行以下處理 (解密驗證)。首先,接收方解密R"以計算rXr',也即,計算rXr' = Dec (sk_e, R")。 繼而接收方按照簽名方案條件3根據(jù)(s' ,m,rXr')來計算簽名s。最后,接收方通過使 用函數(shù)Verify (pk_s,s, m)來驗證簽名S。如果加密方案不具有同態(tài)屬性,則接收方在接收到(s",(R,R'))之后執(zhí)行以下 處理(解密驗證方法)。首先,接收方解密R和R'以計算r和r',也即,計算r = Dec (sk_ e,R)和r' =Dec(sk_e, R')。繼而,接收方按照簽名方案條件3根據(jù)(s‘ , m, rXr') 來計算簽名S。最后,接收方通過使用函數(shù)Verify (pk_s,s, m)來驗證簽名S?!丛诰€電子郵件服務器〉可以利用通過使用本發(fā)明而模糊化的程序來安全地執(zhí)行在線電子郵件服務中的 StE處理。此后,將描述發(fā)送方向接收方發(fā)送電子郵件的示例。注意,假設,發(fā)送方的私 密簽名生成密鑰和公共簽名驗證密鑰以及接收方的公共加密密鑰和私密解密密鑰由基于πα (公鑰基礎架構)的密鑰管理中心來管理。此外,PKI服務器610提供了用于實現(xiàn)Η(Ι 系統(tǒng)的證書授權(CA)和注冊授權(RA)的功能。換言之,PKI服務器610通過使用PKI來 執(zhí)行數(shù)字證書的發(fā)布以及管理對數(shù)字證書的操作。如圖9所示,對于每個用戶,PKI服務器 610管理用于加密的公共加密密鑰和私密解密密鑰,以及用于簽名的公共驗證密鑰和私密 簽名密鑰。圖5示出了使用本發(fā)明的在線電子郵件服務器中的ME處理的概述。步驟1 發(fā)送方310訪問服務器Α(330)的服務,在發(fā)送方310的瀏覽器上生成郵 件m,并且按壓發(fā)送按鈕。向服務器A發(fā)送郵件m。步驟2 服務器A(330)從密鑰管理中心510獲取接收方320的公共加密密鑰,以 及用于從發(fā)送方310向接收方320的發(fā)送的模糊化StE程序。步驟3 服務器A(330)利用接收方320的公共加密密鑰來生成郵件m的密文,還 利用模糊化StE程序來生成針對郵件m的簽名的密文。繼而,服務器A向服務器B (340)發(fā) 送這些密文。步驟4 服務器B (340)從密鑰管理中心510獲取接收方320的私密解密密鑰以及 發(fā)送方310的公共簽名驗證密鑰。繼而,服務器B解密加密的郵件m,并且解密和驗證簽名。步驟5 接收方320訪問服務器B (340)的服務,由此在瀏覽器上讀取來自發(fā)送方 310的郵件m。在這種情況下,在瀏覽器上顯示簽名驗證結果。將更為詳細地描述上述步驟 2 至Ij 5。圖6示出了步驟2的詳細操作。服務器A(330)首先向密鑰管理中心510的模糊 化單元420發(fā)送關于發(fā)送方310和接收方320的信息。這里,該信息指示諸如發(fā)送方和接 收方的姓名和用戶ID的信息,可以利用該信息來指定用戶。模糊化單元420向PKI服務器 發(fā)送關于發(fā)送方和接收方的信息,并且從PKI服務器獲取發(fā)送方的私密簽名生成密鑰sk_s 和接收方的公共加密密鑰Pk_e。繼而,模糊化單元420向服務器A(330)發(fā)送通過利用隨機數(shù)r對發(fā)送 方310的私密簽名生成密鑰sk_s進行隨機化而獲得的簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s, r);以及通過利用接收方320的公共加密密鑰pk_e對隨機數(shù) 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)發(fā)送M和(s‘,R)。這里,(s',R)代 表模糊化的簽名而后加密程序1的處理結果。備選地,服務器A(330)可以執(zhí)行模糊化的簽 名而后加密程序2的處理。圖7示出了步驟4的詳細操作。服務器B(340)首先接收密文M以及模糊化ME 程序的處理結果(s',R)。服務器B(340)繼而向PKI服務器610發(fā)送關于發(fā)送方310和 接收方320的信息,并且從PKI服務器610獲取發(fā)送方的公共驗證密鑰pk_s和接收方的私 密解密密鑰sk_e。服務器B (340)繼而從密文M解密郵件m。服務器B (340)隨后利用接收方320的私密解密密鑰sk_e來解密R以獲得原始隨 機數(shù)r,并且按照簽名方案條件3根據(jù)(s',m,r)來計算簽名S。繼而,服務器B通過使用發(fā)送方310的公共驗證密鑰pk_s來計算結果=Verify (pk_s, s, m)作為簽名驗證結果。圖8示出了步驟5的詳細操作。接收方320訪問服務器B (340)的服務,由此在瀏 覽器上讀取來自發(fā)送方310的郵件。在這種情況下,在瀏覽器上顯示服務器B (340)中計算 的簽名驗證結果。圖8示出了簽名驗證失敗的情況。在此示例中,通過彈出窗口向接收方 320通知驗證失敗的警示消息。圖11示出了上述步驟1到5的整體處理轉換圖。在步驟1110,發(fā)送方310訪問服務器A(330)的服務,在發(fā)送方310的瀏覽器上生 成郵件m,并且按壓發(fā)送按鈕。此時,向服務器A發(fā)送郵件m。在步驟1120,服務器A(330)訪問密鑰管理中心510以獲取模糊化StE程序。更 具體地,服務器A (330)向密鑰管理中心510的模糊化單元420發(fā)送關于發(fā)送方310和接收 方320的信息。這里,該信息指示諸如發(fā)送方和接收方的姓名和用戶ID的信息,可以利用 該信息來指定用戶。在步驟1130,模糊化單元420向PKI服務器610發(fā)送關于發(fā)送方310和接收方320的信息。在步驟1140,PKI服務器610向模糊化單元420發(fā)送發(fā)送方310的私密簽名生成 密鑰sk_s和接收方320的公共加密密鑰pk_e。在步驟1150,模糊化單元420向服務器A(330)發(fā)送通過利用隨機數(shù)r對 發(fā)送方310的私密簽名生成密鑰吐_8進行隨機化,而獲得的簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s, r);以及通過利用接收方320的公共加密密鑰pk_e對隨機數(shù) 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)發(fā)送M和(s‘,R)。這里,(s',R)代 表模糊化的簽名而后加密程序1的處理結果。備選地,服務器A可以執(zhí)行模糊化的簽名而 后加密程序2的處理。在步驟1170,在接收郵件時,服務器B(340)接收密文M以及模糊化ME程序的處 理結果(s',R)。服務器B繼而向PKI服務器610發(fā)送關于發(fā)送方310和接收方320的信肩、ο在步驟1180,PKI服務器610向服務器B(340)發(fā)送發(fā)送方的公共驗證密鑰pk_s 和接收方的私密解密密鑰sk_e。在步驟1190,服務器B(340)從PKI服務器610獲取發(fā)送方的公共驗證密鑰pk_s 和接收方的私密解密密鑰sk_e。服務器B由此從密文M解密郵件m。服務器B隨后利用接 收方320的私密解密密鑰sk_e來解密隨機數(shù)R以獲得原始隨機數(shù)r,并且按照簽名方案條 件3根據(jù)(s',m,r)來計算簽名S。繼而,服務器B通過使用發(fā)送方310的公共驗證密鑰 pk_s來計算結果=Verify (pk_s,s,m)作為簽名驗證結果。此過程對應于解密驗證方法和 解密驗證程序。最后,服務器B向接收方320發(fā)送(m,結果)?!从嬎銠C硬件的框圖〉圖10示出了本發(fā)明實施方式的每個服務器(郵件發(fā)送服務器和郵件接收服務 器)中包括的計算機硬件的框圖的示例。根據(jù)本發(fā)明實施方式的計算機系統(tǒng)(1001)包 CPU (1002)和主存儲器(1003),其連接至總線(1004)。CPU (1002)優(yōu)選地基于32位或 者64位架構。例如,Intel公司的Xeon (商標)系列、Core (商標)系列、Atom (商標)系 列、Pentium (商標)系列禾口 Celeron (商標)系列,以及Advanced Micro Devices公司的 Phenom (商標)系列、Athlon (商標)系列、Turion (商標)系列以及Sempron (商標)系列 可以用作CPU(1002)。諸如LCD監(jiān)視器的顯示器(1006)通過顯示器控制器(100 連接至總線(1004)。 顯示器(1006)用來在適當?shù)膱D形界面上顯示經(jīng)由通信線路(1015)連接至網(wǎng)絡的計算機系 統(tǒng)(1001)的有關信息以及在計算機系統(tǒng)(1001)上運行的軟件的有關信息。而且,硬盤或 硅盤(1008)以及⑶-ROM驅動、DVD驅動或者藍光驅動(1009)通過IDE或者SATA控制器(1007)連接至總線(1004)。操作系統(tǒng)、包括本發(fā)明代碼的程序(郵件發(fā)送程序和郵件接收程序)以及數(shù)據(jù) 存儲在硬盤(1008)中,其可加載至主存儲器(100;3)。將要在本發(fā)明的StE處理中使用 的消息、郵件和各種密鑰的有關數(shù)據(jù)存儲在硬盤(1008)或者主存儲器(100 中,并且經(jīng) 歷CPU(1002)的加密或解密處理。用于執(zhí)行在線電子郵件服務的程序優(yōu)選地存儲在硬盤(1008)中,并且根據(jù)需要加載到主存儲器(1003)中并被執(zhí)行,以便向用戶提供服務。⑶-ROM驅動、DVD驅動或藍光驅動(1009)根據(jù)需要附加地用于從⑶-ROM、DVD-ROM 或藍光驅動向硬盤(1008)加載程序。鍵盤(1011)和鼠標(1012)也通過鍵盤/鼠標控制 器(1010)連接至總線(1004)。本發(fā)明的圖示數(shù)據(jù)可以存儲在上述外部存儲中并從其讀取。通信接口(1014)例如與以太網(wǎng)(商標)協(xié)議兼容。通信接口(1014)通過通信控 制器(1013)連接至總線(1004),并且操作用于物理上連接計算機系統(tǒng)(1001)與通信線路 (1015)。通信接口(1014)還提供與TCP/IP通信協(xié)議的網(wǎng)絡接口層,TCP/IP通信協(xié)議是計 算機系統(tǒng)(1001)的操作系統(tǒng)的通信功能。這里,通信線路(1015)可以是有線的LAN環(huán)境, 或者是基于諸如IEEE 802. 11 a/b/g/n等無線LAN連接標準的無線LAN環(huán)境。計算機系統(tǒng) (1001)通過通信接口(1014)向用戶提供在線郵件服務。[參考標號列表]110、210、310…郵件發(fā)送方120、220、320…郵件接收方330…服務器A340…服務器B410-ME處理器420…模糊化單元430…模糊化StE程序510…密鑰管理中心610... PKI服務器1001…計算機系統(tǒng)1002... CPU1003…主存儲器1004…總線1005…顯示器控制器
1006…顯示器1007…IDE 或 SATA 控制器1008…硬盤或硅盤1009…CD-ROM驅動、DVD驅動或藍光驅動1010…鍵盤/鼠標控制器1011 …鍵盤1012 …鼠標1013…通信控制器1014…通信接口1015…通信線路
權利要求
1.一種用于通過包括處理器和存儲器的計算機的處理來發(fā)送消息的消息發(fā)送方法,所 述方法包括步驟(1)利用隨機數(shù)r對簽名生成密鑰sk_s隨機化,以計算隨機化簽名生成密鑰Sk'_s =SigningKeyRandomize(sk_s, r);(2)利用公共加密密鑰pk_e來加密所述隨機數(shù)r,以計算加密的隨機數(shù)R= Enc (pk_e,r);(3)利用所述隨機化簽名生成密鑰sk'_s對消息m進行簽名,以計算簽名的消息s' =Sign(sk' _s, m);以及(4)向接收方發(fā)送所述簽名的消息s'和所述加密的隨機數(shù)R,其中sk_s代表所述消息m的發(fā)送方的私密簽名生成密鑰,pk_e代表所述接收方的公 共加密密鑰,r代表隨機數(shù),s代表簽名,Sign代表簽名生成函數(shù),s = Sign(sk_s, m)代表 針對所述消息m的簽名,SigningKeyRandomize代表用于對私密簽名生成密鑰sk_s隨機化 的函數(shù),并且Enc代表加密函數(shù)。
2.根據(jù)權利要求1所述的方法,其中步驟(3)是這樣的步驟利用與所述隨機數(shù)r不同的隨機數(shù)r'來計算sk" _s = SigningKeyRandomize (sk' _s, r'),以便對隨機化簽名生成密鑰sk' _s再次進行隨機 化,繼而利用由此再次隨機化的簽名生成密鑰sk" _s來對所述消息m進行簽名,以計算簽 名的消息s" =Sign(sk" _s,m);以及步驟(4)是這樣的步驟根據(jù)所述加密的隨機數(shù)R和所述隨機數(shù)r'來計算r Xr'的 密文R",繼而向所述接收方發(fā)送值(s",R")。
3.根據(jù)權利要求1和2任一項所述的方法,其中所述簽名生成函數(shù)使用以下任意一個 BLS簽名方案、Schnorr簽名方案、Lysyanskaya簽名方案以及Waters簽名方案。
4.一種解密驗證方法,包括步驟接收利用根據(jù)權利要求1所述的方法發(fā)送的值(s',R);利用解密函數(shù)Dec來解密由此接收的加密的隨機數(shù)R,以計算隨機數(shù)r = Dec(sk_e,R);根據(jù)由此接收的簽名的消息s'、消息m以及作為所述解密的結果的隨機數(shù)r來計算簽 名s ;以及通過使用驗證函數(shù)Verify (pk_s,s, m)來驗證所述簽名s,其中pk_s代表所述消息m的發(fā)送方的公共簽名驗證密鑰,sk_e代表所述接收方的私 密解密密鑰,DeC(Sk_e,R)代表解密函數(shù),并且Verify (pk_s,s, m)代表驗證函數(shù)。
5.一種郵件發(fā)送方法,包括步驟使服務器A響應于發(fā)送方對郵件m的發(fā)送,向密鑰管理中心發(fā)送關于所述發(fā)送方和接 收方的信息;使所述密鑰管理中心向PKI服務器發(fā)送關于所述發(fā)送方和所述接收方的所述信息,由 此從所述PKI服務器獲取所述發(fā)送方的私密簽名生成密鑰sk_s以及所述接收方的公共加 密密鑰pk_e ;使所述服務器A從所述密鑰管理中心接收通過利用隨機數(shù)r對所述私密簽名生成密鑰 sk_s進行隨機化而獲得的隨機化簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s,r),以及通過利用所述接收方的所述公共加密密鑰pk_e對所述隨機數(shù)r進行加密而獲得的加 密的隨機數(shù)R = Enc(pk_e,r);使所述服務器A通過使用所述接收方的所述公共加密密鑰pk_e來生成郵件m的密文 M = Enc (pk—e,m);使所述服務器A通過使用所述隨機化簽名生成密鑰sk' _s和所述加密的隨機數(shù)R,來 計算 s' =Sign(sk' _s,m);以及使所述服務器A向服務器B發(fā)送所述郵件m的所述密文M和值(s ‘,R)。
6.一種郵件接收方法,包括步驟使服務器B接收根據(jù)權利要求5的郵件m的密文M和值(s',R); 使所述服務器B向PKI服務器發(fā)送關于發(fā)送方和接收方的信息,由此從所述PKI服務 器獲取所述發(fā)送方的公共驗證密鑰pk_s和所述接收方的私密解密密鑰sk_e ;使所述服務器B通過使用所述接收方的所述私密解密密鑰sk_e來解密所述密文M以 獲得郵件m = Dec (sk_e, Μ),以及解密所述隨機數(shù)R以獲得隨機數(shù)r = Dec (sk_e, R),并且 根據(jù)值(s',m,r)來計算簽名s ;以及使所述服務器B通過使用驗證函數(shù)Verify (pk_s,s, m)來驗證所述簽名S。
7.一種郵件發(fā)送系統(tǒng),包括用于執(zhí)行權利要求1-5中任一項的任何步驟的裝置。
8.一種郵件接收系統(tǒng),包括用于執(zhí)行權利要求6的任何步驟的裝置。
9.一種郵件發(fā)送服務器,包括用于響應于發(fā)送方對郵件m的發(fā)送,向密鑰管理中心發(fā)送關于所述發(fā)送方和接收方的 信息的裝置;用于從所述密鑰管理中心接收通過利用隨機數(shù)r對所述發(fā)送方的私密簽名生成密鑰 sk_s進行隨機化而獲得的隨機化簽名生成密鑰sk' _s = SigningKeyRandomize (sk_s,r)、 以及通過利用所述接收方的公共加密密鑰pk_e對所述隨機數(shù)r進行加密而獲得的隨機數(shù) R = Enc(pk_e,r)的裝置;所述發(fā)送方的所述私密簽名生成密鑰sk_s和所述接收方的所述 公共加密密鑰pk_e由所述密鑰管理中心通過向PKI服務器發(fā)送關于所述發(fā)送方和所述接 收方的所述信息而從所述PKI服務器獲取;用于通過使用所述接收方的所述公共加密密鑰pk_e來生成郵件m的密文M = Enc (pk_ e,m)的裝置;用于使用所述隨機化從而模糊化的簽名生成密鑰sk' _s和所述加密的隨機數(shù)R來計 算s' = Sign(sk' _s,m)的裝置;以及用于向服務器B發(fā)送所述郵件m的所述密文M和值(s',R)的裝置。
10.一種郵件接收服務器,包括用于接收根據(jù)權利要求13的郵件m的密文M和值(s',R)的裝置; 用于向PKI服務器發(fā)送關于發(fā)送方和接收方的信息、由此從所述PKI服務器獲取所述 發(fā)送方的公共驗證密鑰pk_s和所述接收方的私密解密密鑰sk_e的裝置;用于通過使用所述接收方的所述私密解密密鑰sk_e來解密所述密文M以獲得郵件m = DeC(sk_e,M)、以及解密所述隨機數(shù)R以獲得隨機數(shù)r = Dec(sk_e,R),并且根據(jù)值(s', m,r)來計算簽名s的裝置;以及用于通過使用驗證函數(shù)Verify (pk_s,s, m)來驗證所述簽名s的裝置。
全文摘要
本發(fā)明涉及消息發(fā)送/接收方法和系統(tǒng)以用于完全防止私鑰的泄露。具體地,提供一種發(fā)送消息的消息發(fā)送方法。該方法包括步驟(1)利用隨機數(shù)r對簽名生成密鑰sk_s隨機化,以計算隨機化簽名生成密鑰sk′_s=SigningKeyRandomize(sk_s,r);(2)利用公共加密密鑰pk_e來加密隨機數(shù)r,以計算加密的隨機數(shù)R=Enc(pk_e,r);(3)利用隨機化簽名生成密鑰sk′_s對消息m進行簽名,以計算簽名的消息s′=Sign(sk′_s,m);以及(4)向接收方發(fā)送簽名的消息s′和加密的隨機數(shù)R,其中sk_s代表消息m的發(fā)送方的私密簽名生成密鑰,pk_e代表接收方的公共加密密鑰,r代表隨機數(shù),s代表簽名,Sign代表簽名生成函數(shù),s=Sign(sk_s,m)代表針對消息m的簽名,SigningKeyRandomize代表用于對私密簽名生成密鑰sk_s隨機化的函數(shù),并且Enc代表加密函數(shù)。
文檔編號H04L9/32GK102055760SQ20101053391
公開日2011年5月11日 申請日期2010年10月29日 優(yōu)先權日2009年10月30日
發(fā)明者羽田知史 申請人:國際商業(yè)機器公司