專利名稱:生成和/或使用附條件電子簽名以報告狀態(tài)變化的方法、裝置以及計算機程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種生成和/或使用附條件電子簽名和/或報告消息、文檔、以及其他資源的狀態(tài)變化的方法、裝置、以及計算機程序。
背景技術(shù):
在一般非電子形式的商務(wù)中,人們常常在其簽名前面上添加手寫條件諸如“以合約為準”、“七日內(nèi)送貨”、“異議支付”(paid under protest)、或者“無損”等條件。這些標注中某一些的法律效力可能有疑問,但是對于寫下該詞語的人來說,這一點沒有關(guān)系——緊的是人們希望添加這些條件。在其他情況下,條件對于業(yè)務(wù)談判可能是非常關(guān)鍵的。
在電子商務(wù)中,一般沒有機會以這種方式來指明條件,因此必須作出決定是否以電子形式不附條件地簽名。由于潛在買主感到無法在線解決的次要的法律問題,賣主可能失去在線銷售;或者能阻止沒有簽名的客戶在將來進行購買。不滿意的客戶是不會回頭的。
這些例子對于業(yè)務(wù)至客戶應(yīng)用是普遍的,但是業(yè)務(wù)至業(yè)務(wù)應(yīng)用也具有相同的需要。已經(jīng)有報道稱繁忙的內(nèi)流貨物經(jīng)理(goods-inwards manager)被要求簽署看來是售貨機送貨單的東西,而沒有認識到實際上簽署的是將該售貨機租借幾年的個人協(xié)議。當(dāng)該經(jīng)理的公司決定改變售貨機供應(yīng)商時,該供應(yīng)商會在個人名義下要求該經(jīng)理履行其簽署的合約。不管個別法庭是會支持該合約還是判其無效而無需執(zhí)行,如果該經(jīng)理當(dāng)時能夠添加條件(最好由其公司法律顧問起草)說明其簽署只是來確認送貨,則對該經(jīng)理會好一些。一般電子商務(wù)解決方案沒有實現(xiàn)這一點。
數(shù)字簽名可以用于與手寫簽名相同的目的——確認簽署人接受約定,以及證實文件或消息的真實性。一般地,數(shù)字簽名必須能夠確認簽署人的身份。對于消息的數(shù)字簽名的簡單形式為對該消息進行密碼“哈?!被颉罢?digest)”函數(shù)(利用諸如消息摘要算法MD5或者安全哈希算法SHA/1等算法),以生成表示較長消息的短摘要。該數(shù)字或哈希值為固定長度字符串,通過對可以為幾乎任意長度的輸入執(zhí)行哈希函數(shù)而產(chǎn)生該字符串。然后,用簽署人私有簽名密鑰對該摘要加密,以得到消息的簽名塊(例如利用數(shù)字簽名算法DSA)。該消息、簽名塊、用于哈希與加密的算法、以及獲取簽署人公開密鑰的方法都被發(fā)送給接收方,接收方可以通過對該消息進行哈希、解密簽名塊、并且比較結(jié)果產(chǎn)生的短摘要來確認簽名塊的有效性。例如,公開密鑰可以通過從受托第三方頒發(fā)的數(shù)字證書獲得。
例如,在美國專利號5,157,726中公開了雙私有/公開密鑰密碼系統(tǒng)。US5.157,726公開這樣的系統(tǒng)來驗證數(shù)字簽名的真實性。使用秘密密鑰來簽署文件,然后使用公開密鑰來檢查真實性。在美國專利4,881,264、4,309,569、4,625,076、以及US4,656,474和國際標準IS09796與CCITT X509中示例說明了創(chuàng)建數(shù)字簽名的過程。
Byoungcheon Lee與KwangjoKim的“Fair Exchange of Digital SignaturesUsing Conditional Signature”,Symposium on Cryptography and InformationSecurity(SCIS)2002,29 January-1 February 2002,Shirahama,Japan,談到了“附條件簽名”。這允許將簽署人選擇的條件在兩方通信中用做個別談判語句,并且尤其注重響應(yīng)于對附條件簽名的驗證而達到非附條件簽名的“公平交換”。Lee等人的“附條件簽名”是在消息與條件兩者之上的簽名,具體地說是利用現(xiàn)有簽名方案來簽署消息與條件功能的組合的簽名。
在本領(lǐng)域中存在對于以下解決方案的需求其處理上述文獻未解決的一或多個問題,例如向用戶提供非電子解決方案的明顯增強靈活性的解決方案。
發(fā)明內(nèi)容
本發(fā)明的各方面提供了生成和使用附條件電子簽名的方法、裝置、以及計算機程序。根據(jù)本發(fā)明第一方面的、一種響應(yīng)于為數(shù)據(jù)項電子簽名指明一個或多個條件而執(zhí)行的、生成附條件電子簽名的方法包含以下步驟加密該數(shù)據(jù)項;與該數(shù)據(jù)項獨立地加密所述一個或多個條件,組合所述經(jīng)加密數(shù)據(jù)項與經(jīng)加密一個或多個條件;以及加密該組合以生成數(shù)字簽名塊,該數(shù)字簽名塊固有地表示所述數(shù)據(jù)項與一個或多個條件、并且使得能夠?qū)λ鰯?shù)據(jù)項與一個或多個條件兩者進行密碼驗證。
所述數(shù)據(jù)項可以為消息、文件、圖像文件、或者任意其他數(shù)據(jù)資源。
如果由不同源或者在不同時間指定多個條件,則最好在組合與進一步加密之前將每個條件獨立地加密(即相互獨立也與數(shù)據(jù)項獨立)。
所述數(shù)據(jù)項的加密與所述條件的獨立加密最好為單向哈希步驟,其生成原始數(shù)據(jù)項與條件的簡明的、可驗證的表示。
所述組合經(jīng)哈希的數(shù)據(jù)項與條件、然后加密該組合的步驟最好包含以下步驟連接經(jīng)哈希的數(shù)據(jù)項與經(jīng)哈希的條件,哈希該連接的結(jié)果以生成最終摘要,以及進一步加密該最終摘要以生成附條件簽名。所述加密最終摘要的步驟最好利用公開/私有密鑰密碼解決方案的私有密鑰。
在替換實現(xiàn)中,使用非哈希的密碼處理——例如密碼塊鏈接(CBC)——來加密所述數(shù)據(jù)項與條件中的每一個,并且用于加密從連接這兩個經(jīng)加密項而產(chǎn)生的連接串(concatenand)的步驟。選擇來對連接串進行加密的密碼過程——例如CBC過程——根據(jù)在連接串的另一半中有什么,對連接串的每一半以不同方式運算,從而通過加密連接串而獲得的加密塊不能通過獨立地加密連接串的每一半、然后再連接而獲得。這就提供了以下保證如果未被授權(quán)的人將消息與條件安排在一起,則對應(yīng)用到連接串的數(shù)字簽名的驗證不會得到肯定結(jié)果。
在本發(fā)明的替換實施方式中,對于在被授權(quán)為簽署人的參加者的封閉群組內(nèi)傳送文件,可以使用只有該群組成員才知道的對稱密鑰來簽署最終摘要。該群組的每個成員都能夠驗證簽名,以檢查數(shù)據(jù)項與條件已由該群組成員簽署。
在本說明書的語境中,“數(shù)字簽名”或“電子簽名”為對項的數(shù)字處理結(jié)果,其使得能夠驗證該項的真實性。一旦被數(shù)字簽署后,對被簽署的項的任何改變都會產(chǎn)生可識別的真實性丟失。此類簽名可以是簽署人(例如作者、確認者、或者批準者)的可驗證數(shù)字標識符,包含具有以及不具有簽名人手寫簽名的數(shù)字化圖像的數(shù)字簽名。此類數(shù)字圖像的生成在本領(lǐng)域使公知的。為了簡化以下描述,將描述不包含此類圖像的例子。
在本說明書的語境中,“條件”可以是絕對要求,沒有它合約簽署人會認為其簽名沒有約束力。條件可能會也可能不會要求某些動作,例如已簽名數(shù)據(jù)項的接收方的明示接受??商鎿Q地,“條件”可以是評論或者偏好,其聲明簽署人的意圖或者理解,但其不是絕對要求。名詞“條件”此處用來指絕對要求與評論。本發(fā)明使得能夠?qū)l件無歧義地鏈接到經(jīng)簽名的數(shù)據(jù)項以及簽署人的身份。
本發(fā)明的優(yōu)選實施方式使得能夠指明并且獨立地簽署多于一個的條件。具體地講,可以由不同各方對電子通信或交易、或者在談判的不同階段指定不同的條件。
本發(fā)明的優(yōu)選實施方式支持密碼簽署、組合、進一步加密、以及以加密形式分發(fā)多個消息或來自不同源的其他數(shù)據(jù)項。還提供對以下多消息的支持其中每個消息意在對于不同接收方可辨認,以及使用有權(quán)讀取不同消息的特定接收方的公開密鑰加密。所有接收方都能夠利用摘要層次,以確保消息集合的任何部分都沒有被改變。
獨立地加密數(shù)據(jù)項與條件、獨立地加密多個條件的每一個、以及對被獨立地加密的項的組合應(yīng)用數(shù)字簽名,提供了以下優(yōu)點如果相關(guān)簽名塊可以用于驗證,則可以驗證每個組件。另外,在不以明文形式公開其他組件的前提下,可以解密特定的經(jīng)加密組件。當(dāng)所有通信實體對經(jīng)加密包的所有組件(原來的數(shù)據(jù)項與條件)具有訪問權(quán)、并且不同實體有權(quán)察看不同組件時,這尤其有用。在一個交易中可能涉及多個不同的簽署人,每個簽署人或者傳送文件(或者其表示),或者提供批準或其他評論或條件。不同組件可以由不同實體或者在不同時間驗證。
在可替換實施方式中,可以使用本發(fā)明來使得能夠在不對消息或條件的讀取訪問進行任何限制的前提下進行真實性驗證(驗證消息及有關(guān)條件的真實性)。每次向數(shù)據(jù)項添加條件都伴隨生成新哈希值或新數(shù)字簽名的步驟,然后該哈希值或簽名被包含在傳送包內(nèi),該傳送包還包含數(shù)據(jù)項與條件。
根據(jù)本發(fā)明實施方式的驗證電子簽名的方法包含以下步驟使用公開解密密鑰來解密簽名,并且比較經(jīng)解密的簽名與從上述對連接的結(jié)果進行哈希而產(chǎn)生的最終摘要。通過這種方式,可以進行對數(shù)據(jù)項與條件兩者的驗證——可能根本不需要將原來的消息或條件轉(zhuǎn)換為明文形式。這就保持了安全性——例如,如果并非通信中所有參加方都被授權(quán)察看原件,但是他們都被授權(quán)使用公開密鑰來驗證真實性。
與在可以開始驗證處理之前要求向發(fā)起者返回實際數(shù)字合約的驗證解決方案相比,本發(fā)明的另一重要潛在益處為網(wǎng)絡(luò)流量的減少,這是因為本發(fā)明的一種實施方式只涉及返回經(jīng)簽署的哈希值。突出該益處的一項具體應(yīng)用為以下應(yīng)用其中經(jīng)簽署的數(shù)據(jù)項的發(fā)送者希望驗證數(shù)據(jù)項的未更改版本被成功接收。將經(jīng)簽署的摘要返回發(fā)送者可以使發(fā)送者能夠解密并且驗證經(jīng)解密的摘要是所希望的。
在消息可以包含針對不同收件人的材料的實施方式中,通過只接收外來材料的摘要,不需要針對其他人的材料的收件人可以節(jié)省網(wǎng)絡(luò)時間與存儲空間。
在許多商業(yè)應(yīng)用中,經(jīng)簽署的消息的接收方使用該消息來準備一個或多個表單,例如訂購單或者付款指令。如果簽名人不愿意完全按照發(fā)送來的形式簽署消息,則如果通過添加獨立的條件而非編輯要簽署的消息使簽名人的條件可以為接收方得到,則簽名人的意圖將會對于接收方更清楚。本發(fā)明提供了添加此類條件的機制。
根據(jù)本發(fā)明的另一方面,提供了一種電子簽名處理裝置,用來根據(jù)上述方法生成附條件數(shù)字簽名。
根據(jù)本發(fā)明的另一方面,提供了一種用來根據(jù)上述方法驗證數(shù)據(jù)項及一個或多個相關(guān)條件的真實性的裝置。
本發(fā)明可以用計算機程序產(chǎn)品實現(xiàn),該產(chǎn)品包含記錄在機器可讀記錄介質(zhì)上的程序代碼,用來控制在其上執(zhí)行該程序代碼的數(shù)據(jù)處理裝置的運行。
根據(jù)本發(fā)明的另一方面,提供了一種方法、裝置、以及計算機程序,用來散布諸如文件等數(shù)據(jù)項的狀態(tài)變化,包含向在該狀態(tài)變化之前收到數(shù)據(jù)項的每個數(shù)據(jù)項接收方散布狀態(tài)變化信息。對于在經(jīng)電子簽署的文件情況下處理撤銷(countermanding),這樣的解決方案是有利的,其中第一經(jīng)授權(quán)的批準者簽署文件或評論以指示批準,然后第二經(jīng)授權(quán)的批準者推翻該批準。
以下參照附圖以示例方式更詳細地描述本發(fā)明的優(yōu)選實施方式,其中圖1顯示根據(jù)本發(fā)明第一實施方式的、生成附條件簽名的方法的步驟序列;圖2顯示根據(jù)本發(fā)明實施方式的、驗證附條件簽名的方法的步驟序列;圖3顯示根據(jù)本發(fā)明實施方式的、向消息添加幾個條件的方法的步驟序列;圖4為適合用于根據(jù)本發(fā)明的方法的裝置的示意表示。
具體實施例方式
圖1顯示簡單附條件簽名的構(gòu)造過程。該過程的輸入為待簽署的原始消息10,簽署人附加于其簽名的條件語句20,以及簽署人用于簽名的公開/私有密鑰對的私有密鑰30。對于該過程的控制(按照IDEFO術(shù)語)為待使用的哈希函數(shù)與加密函數(shù)。
該消息與條件都被哈希40,以生成摘要50。這些摘要被連接60,首先是消息摘要,然后是條件摘要。然后將連接串70、或者雙摘要(double digest)自身哈希80,從而生成最終摘要90。然后用私有密鑰30將其加密100,從而生成附條件簽名塊110。
然后,與用于哈希與加密的算法、以及簽署人公開密鑰(或者關(guān)于如何獲得該密鑰的信息)一道,將消息、條件、以及附條件簽名塊送往接收方。在該第一實施方式中,接收方能夠解密附條件簽名塊以檢索最終摘要,并且還能夠在原始消息與條件上復(fù)制哈希與連接步驟,從而重新創(chuàng)建最終摘要。然后可以比較這兩個版本。如果這兩個版本的最終摘要相同,則該消息與條件是真實的。如果不相同,則不能相信該消息與條件。在該第一實施方式中,對于消息或條件的讀取訪問沒有限制——所述哈希、連接、加密步驟的唯一目的在于使得能夠驗證真實性。
在本發(fā)明的第二種實現(xiàn)中,只將最終簽名塊與初始經(jīng)哈希的消息與經(jīng)哈希的條件(所述兩個初始摘要)傳送給接收方。在這種情況下,可以在驗證處理期間不公開消息與條件的前提下,進行驗證。這使得能夠由未被授權(quán)以明文形式接收原始消息和/或條件的實體進行驗證。
圖2顯示驗證根據(jù)上述本發(fā)明第一種實現(xiàn)生成的附條件簽名的步驟序列。接收方可以通過創(chuàng)建上述最終摘要、并且將其120與利用公開/私有密鑰對的公開密鑰160解密140附條件簽名塊150的結(jié)果130比較,確認所接收的附條件簽名是有效的——即附條件簽名塊是使用上述輸入通過上述處理生成的。
獨立地哈希消息與條件的過程提供了以下機制其允許接收方獨立地驗證原始消息與條件中的每一個沒有被修改,因為對原始消息與條件的改動將改變相應(yīng)摘要的值。當(dāng)發(fā)生任何此類修改時,經(jīng)簽名的最終摘要會不等于求得的最終摘要。與要求傳送原始文件與條件給驗證方實體的解決方案相比,在只需要為驗證目的傳送摘要的情況中,此類對初始輸入的哈希還節(jié)省了通信開銷。此處還有潛在的安全性優(yōu)點——如果不向收件方公開一個或多個消息或條件,則該解決方案因為避免了傳送原始消息或條件的需要而維護了所需的安全性。
哈希從獨立地哈希消息與條件而產(chǎn)生的摘要的連接結(jié)果是人們所希望的,因為其允許確定消息與條件是否被改變,而且還向接收方保證消息與條件是由簽署人組合的。利用一些加密算法,典型為那些不使用加密塊鏈接(CBC)的算法,對連接結(jié)果的加密與加密的連接結(jié)果相同E(k,concat(x,y))=concat(E(k,x),E(k,y))此類密碼方法使得能夠在消息與條件未合成整體時一起利用消息與條件。本發(fā)明當(dāng)前實施方式內(nèi)經(jīng)哈希的雙摘要解決方案,以及結(jié)果產(chǎn)生的最終摘要的密碼簽署,就沒有這一問題。
簽署最終摘要(例如利用簽署人的私有加密密鑰)保證了最終摘要在不摧毀其真實性的前提下是不可變更的。在本實施方式中,除了簽署人,沒有人能夠訪問私有密鑰,因此只有簽署人能夠進行特定的加密。
上述過程不僅確認是簽署人自身創(chuàng)建的簽名;而且因為創(chuàng)建了附條件簽名塊,所以還確認了消息與條件都沒有被改變。
通過重復(fù)結(jié)果雙摘要的連接與哈希,可以擴展上述過程,如圖3所示,因此如果需要,用戶(在通信或談判中可能是具有不同角色的多個用戶)可以添加多個獨立的條件。進一步的擴展包括執(zhí)行對附條件的電子簽名蓋時間戳的程序。
當(dāng)存在一系列條件時——不論是一次創(chuàng)建或者不同時間創(chuàng)建的,對于某些應(yīng)用來說,簽署最終雙摘要就可以令人滿意了。然而,如果只簽署最終雙摘要,則接收方不能檢查中間簽名,并且不得不接受最終簽署人的話,認為整個結(jié)構(gòu)都被授權(quán)了。在由同一人聲明所有條件的情況下(例如當(dāng)房屋購買受合約限制、受抵押限制、以及受勘定限制時),對于條件組只存在一個簽名經(jīng)常是可接受的。另一種情況是有幾個簽署人,但是一個或多個中間簽署人的身份要保密。在這種情況下,只簽署最終摘要可能是有利的。
然而,在有幾個簽署人、并且接收方需要能夠確認所有中間簽署人的情況下,所有簽名塊必須可用。滿足該需求的兩種實現(xiàn)如下1.通過連接先前的雙摘要與新條件的哈希、并且哈希該結(jié)果,進行每個新的雙摘要的構(gòu)造。然后,與此構(gòu)造一道,將所有必須的簽名塊發(fā)送給接收方。除最終簽名塊之外,在要求驗證所有簽署活動的情況下,需要中間雙摘要的簽名塊。
2.在可替換實施方式中,通過連接先前的簽名塊與新條件的哈希、并且哈希結(jié)果,構(gòu)造每個新的雙摘要。該實現(xiàn)不允許省略中間簽名。
在圖4中示意顯示了示例硬件環(huán)境,其中第一用戶計算機300連接到網(wǎng)絡(luò)340——例如因特網(wǎng)或者內(nèi)聯(lián)網(wǎng)或者其他網(wǎng)絡(luò)——并且正在運行使得能夠向/從其他連接到網(wǎng)絡(luò)的計算機310、320、330發(fā)送/接收文件的計算機程序。第一計算機300根據(jù)存儲在計算機可讀介質(zhì)上的計算機程序350、360運行,以進行用來生成(350)附條件電子簽名、驗證(360)此類簽名以檢查所接收文件的真實性、或者兩者的哈希、連接、以及加密/解密步驟。
如此處進一步所述,本發(fā)明的優(yōu)選實施方式包含數(shù)據(jù)處理系統(tǒng),其包含根據(jù)在其上安裝的計算機程序運行以生成、驗證、或者使用附條件電子簽名的一個或多個計算機。
以下部分描述以在計算機存儲器內(nèi)對數(shù)據(jù)運算的算法與符號表示顯示或者隱示地提出。這些算法描述與表示是數(shù)據(jù)處理領(lǐng)域技術(shù)人員認為是向本領(lǐng)域技術(shù)人員表達其工作實質(zhì)的最有效的標記方法。算法被認為是導(dǎo)致所希望結(jié)果的步驟的自相一致序列。這些步驟是那些需要物理地操縱物理量的步驟。一般而非必然地,這些量采用電或磁信號的形式,能夠被存儲、傳送、組合、比較、以及以其他方式被操縱。已經(jīng)證實——主要是由于普遍使用的原因,有時將這些信號稱為比特、值、摘要、元素、分量、碼元、字符、項、數(shù)目等等是方便的。
然而,以上及類似術(shù)語要與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且只是用于這些量的方便的標簽。在本說明書中,利用諸如“計算”、“求取”、“確定”、“比較”、“生成”、“選擇”、“輸出”等術(shù)語的討論指計算機系統(tǒng)或者類似電子設(shè)備的動作與處理,該計算機系統(tǒng)或者類似電子設(shè)備操縱或者將表示為計算機系統(tǒng)的寄存器或存儲器內(nèi)的物理(電子)量的數(shù)據(jù)轉(zhuǎn)換為類似表示為計算機系統(tǒng)存儲器或寄存器、或其他此類信息存儲、傳送、或顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
本說明書還公開了執(zhí)行該方法操作的裝置。此類裝置可以為所需目的具體構(gòu)造,或者可以包含一或多個通用計算機或者其他由存儲在該計算機內(nèi)中的計算機程序選擇性地啟動或重新配置的設(shè)備。此處呈現(xiàn)的算法不是固有地與任何具體計算機或其他裝置相關(guān)。利用根據(jù)此處教導(dǎo)的程序,可以使用各種通用機器??商鎿Q地,構(gòu)造更專門化的裝置來執(zhí)行所需的方法步驟可能是適當(dāng)?shù)摹?br>
另外,本說明書還公開了一種計算機可讀介質(zhì)與一種記錄其上的用來執(zhí)行該方法操作的計算機程序。此處認為計算機可讀介質(zhì)包含任何傳輸介質(zhì),用來在源與目的之間傳送計算機程序。該傳輸介質(zhì)可以包含存儲設(shè)備,例如磁盤或光盤、存儲芯片,或者適合于與通用計算機接口的其他存儲設(shè)備。該傳輸介質(zhì)還可以包含硬連線介質(zhì)或無線介質(zhì)(例如GSM移動電話系統(tǒng)所示)。實現(xiàn)本發(fā)明的計算機程序不限于任何特定編程語言或者其實現(xiàn)。應(yīng)該理解可以使用各種編程語言及其編碼來實現(xiàn)此處所包含內(nèi)容的教導(dǎo)。
當(dāng)在一個或多個附圖中參照具有相同標號的步驟和/或特征時,就本說明書來說,這些步驟和/或特征具有同樣的(多個)功能或者(多個)操作,除非顯示了相反的意圖。
現(xiàn)在使用算術(shù)符號描述本發(fā)明的一種特定實施方式。以下描述的密碼程序(對稱密鑰加密)為適當(dāng)密碼程序的實例,其避免了某些替換密碼解決方案的處理延遲,但是可以使用其他已知密碼運算,例如較慢的公開密鑰加密。
將concat(x,y)定義為從連接比特串x與比特串y而產(chǎn)生的比特串。
將h(x)定義為從對比特串x進行哈希(又名摘要)算法h而產(chǎn)生的短比特串。
已經(jīng)顯示對于哈希算法SHA/1與MD5,h(concat(h(x),h(y)))保留密碼強度。即,即使知道了所有三個比特串x、比特串y、以及算法h,也很難找到比特串a(chǎn)與b——其中至少有一個不同于x和y)——使得h(concat(h(a),h(b)))=h(concat(h(x),h(y)))。
在這一語境中,“很難”指至少與找到不等于q的p使得h(p)=h(q)一樣難。因此,“雙摘要”不會對該系統(tǒng)有任何削弱。
將E(k,x)定義為從使用密鑰k(也是比特串)加密比特串x而產(chǎn)生的短比特串,其中k非零。
將E(0,x)定義為等于x。
設(shè)m1,m2,…,mk(其中k為正整數(shù))為待簽署的消息,并且c0,c1,…,cn(其中n為正整數(shù))為待附加的條件或者評論。
設(shè)p1,p2,…,pk為應(yīng)當(dāng)能夠讀取每個消息的實體的公開密鑰。
針對不同接收方的、但是被一起簽署的不同消息是有用的。商人知道客戶已經(jīng)向其銀行發(fā)送消息授權(quán)付款可能是重要的。然而,每當(dāng)商人不需要知道客戶賬戶的細節(jié)時,該客戶應(yīng)該能夠?qū)⒃撔畔⒈3直C堋cy行具有標識對其請求付款的交易的摘要可能是重要的,但是銀行不需要知道客戶買的是什么,并且顧客可能希望保持保密性。
設(shè)q1,q2,…qn為應(yīng)當(dāng)能夠讀取每個條件的實體的公開密鑰。
如果相應(yīng)的消息或者條件為非保密的,則任意p或q值可能為零。
設(shè)r1,r2,..rk以及t1,t2,…,tn為隨機對稱密鑰。
表示作為整體的消息集合m1,m2,…,mi的“多消息摘要”稱為Mi。
M1=h(E(r1,m1))并且密碼塊E(p1,r1)伴隨M1。
如果i>1,則Mi=h(concat((M(i-1)),h(E(ri,mi)))),并且摘要h(E(r1,m1)),h(E(r2,m2)),...h(E(ri,mi)與密碼塊E(p1,r1),E(p2,r2),...E(pi,ri)伴隨Mi。
則Mk為表示作為整體的完整消息集合m1,m2,…,mk的多消息摘要。
設(shè)s1,s2,...sn分別為條件c1,c2,...cn的簽署人的保密密鑰。
表示作為整體的Mk與條件c1,c2,...cj的“附條件簽名”稱為Sj。
S1=E(s1,h(concat(Mk,h(E(t1,c1))))),并且摘要h(E(r1,m1),h(E(r2,m2)),...h(E(rk,mk))與h(E(t1,c1)以及密碼塊E(p1,r1),E(p2,r2),...E(pk,rk)與E(q1,t1)伴隨S1。
如果j>1,則Sj=E(sj,h(concat((S(j-1)),h(E(tj,cj)))))并且摘要h(E(r1,m1),h(E(r2,m2)),...h(E(rk,mk))與h(E(t1,c1),h(E(t2,c2)),...h(E(tj,cj)、以及密碼塊E(p1,r1),E(p2,r2),...E(pk,rk)與E(q1,t1),E(q2,t2),...E(qj,tj)伴隨S1。
則Sn為最終附條件簽名。
上述本發(fā)明實施方式使用公開/私有密鑰加密來簽署最終摘要。雖然對于許多應(yīng)用來說這是一項方便的技術(shù),但是使用只有被批準的簽署人才知道的密鑰的其他數(shù)字簽名技術(shù)也是適當(dāng)?shù)摹?br>
在封閉群組內(nèi),對于某些應(yīng)用來說,用只有該群組才知道的對稱密鑰來簽署最終摘要是可接受的。然后,該群組的每個成員都將能夠檢查簽名,并且能夠確定消息與條件已經(jīng)由群組成員簽署,盡管可能不能確切知道是哪個成員簽署的。當(dāng)在封閉群組外發(fā)送消息時,這樣的對稱密鑰解決方案一般是不可接受的,因為在這種情況下,發(fā)送使得能夠檢查簽名的密鑰,還會使得能夠用不同的消息或條件創(chuàng)建替換簽名。利用私有密鑰來簽署消息解決了這個問題——然而在某些應(yīng)用中,由一組人共享私有密鑰是可接受的。
對稱密鑰加密一般比公開/私有密鑰加密快。然而,當(dāng)簽署MD5摘要(16字節(jié)長)或者SHA/1摘要(20字節(jié)長)時,加密項的長度不足以使更快的對稱密鑰加密處理具有顯著的改進。
上述附條件簽名解決方案處理以下情況其中必須將一個人簽署的文件轉(zhuǎn)發(fā)給另一個人,以在采取行動之前得到批準或者驗證。已知解決方案未解決的另一種情況是一個人批準了,但是另一個人撤銷該批準。為簡單起見,以下描述假定撤銷的人具有發(fā)出撤銷指令(countermand)的權(quán)威。
上述為可以處理該撤銷指令的、可以以軟件實現(xiàn)的數(shù)據(jù)處理系統(tǒng)與過程。
附條件簽名的一種應(yīng)用為處理在被批準前需要兩個或更多個簽名的文件。第一簽署人簽署文件,同時添加任意必要的評論,第二簽署人添加任意的隨后評論,并且簽署結(jié)果。以教會法為例,希望發(fā)表書的牧師將文本發(fā)送給其主教辦公室的官員,該官員閱讀該文本。如果一切良好,該官員對該書背書“無阻礙”(或“沒有問題”)。然后,主教可以對該書背書“付印”(或“交付印刷”)。
該解決方案不限于任何特定的文件狀態(tài)。例如,甚至可能簽署文件受制于以下條件由該簽名表示的批準受制于法律上訴程序(例如,對于提起上訴的任何適用期限的時限)。
某些機構(gòu)允許其官員作出決定并且授權(quán)文件,還允許這些官員的職能上級對初始授權(quán)作出撤銷。雖然撤銷不總是人們所希望的慣例,但是存在對以下解決方案的需求,在允許該慣例的那些機構(gòu)中,該方案處理對批準的撤銷。
以下描述解決該問題的系統(tǒng)與方法,其確保已收到初始授權(quán)副本的每個人將收到撤銷指令的副本。這包含原來的簽署人向其發(fā)送了所簽署的文件的那些人,而且包含那些通過較不直接的途徑收到了副本的人。
開放組標準X.509版本2描述了對于其為公開密鑰證書的文件的特定情況的一種相關(guān)解決方案。當(dāng)證書權(quán)威(CA)頒發(fā)公開密鑰證書聲明以特定名稱為人所知的實體具有特定公開密鑰時,該公開密鑰證書的形式包含可以從其獲得證書撤消列表(CRL)的地址。該CRL包含那些由該權(quán)威頒發(fā)的、但是隨后已被撤消(例如因為密鑰所有人離開了CA機構(gòu),或者因為相應(yīng)的私有密鑰被破壞,或者因為錯誤頒發(fā)了證書,或者因為證書通過詐騙獲得)的證書的列表。在該標準中定義了CA的性質(zhì)、以及CRL、地址、公開密鑰證書的格式。
除受制于固定的消息格式之外,該標準中描述的CRL過程還不會主動向任何人發(fā)送CRL,更不要說向收到原始消息的每個人發(fā)送CRL。
支持撤銷的解決方案包含三個部分1.當(dāng)允許撤銷的機構(gòu)中的某人簽署文件時,在條件中自動包含“活躍內(nèi)容”(active content)??梢允褂肕icorsoftTMActiveX控件來實現(xiàn)該活躍內(nèi)容,或者在優(yōu)選實施方式中,實現(xiàn)為JavaTM“aglet”,其包含可以由Java運行時系統(tǒng)在向其發(fā)送消息的任意平臺上運行的封裝代碼——該通用解決方案不獨立于所使用的特定活躍內(nèi)容工具。每次將文件轉(zhuǎn)發(fā)給某其他人時,執(zhí)行該活躍內(nèi)容,并且其將每個接收方的地址(例如電子郵件地址)發(fā)送給由該組織維護的接收方注冊表。
2.高級電子郵件系統(tǒng)(例如來自Lotus Development公司的Lotus NotesTM通信軟件)識別包含標識作者的簡單結(jié)尾(其可以被捏造,但是對于大部分非正式電子郵件是足夠的)的消息與利用作者的私有密鑰密碼簽署的消息之間的差異。只有當(dāng)某人找到了作者用來保護私有密鑰的口令時,才能捏造后者。所述撤銷解決方案擴展該電子郵件系統(tǒng),使得該電子郵件系統(tǒng)i.識別在已簽署消息中存在活躍內(nèi)容,并且每當(dāng)轉(zhuǎn)發(fā)該消息時執(zhí)行該活躍內(nèi)容;ii.當(dāng)簽署消息時,創(chuàng)建適當(dāng)?shù)幕钴S內(nèi)容(在電子郵件系統(tǒng)內(nèi)提供新選項“作為指令簽署”(sign as instruction),從而允許該機構(gòu)只有在必要時才使用該附加特征的愿望);以及iii.識別撤銷消息的行為,這一行為由電子郵件系統(tǒng)發(fā)送給注冊表。
3.該解決方案的第三方為注冊表,該注冊表鏈接到電子郵件系統(tǒng)中,從而其接收并保存其從每個“作為指令簽署”的消息的aglet收到的信息。當(dāng)收到撤銷指令時,電子郵件系統(tǒng)將該撤銷指令發(fā)送給所有注冊為已收到原始消息的地址。
另外,注冊表保存消息和撤銷指令的記錄,從而如果后來接收方之一將消息轉(zhuǎn)發(fā)給另一人,注冊表與電子郵件系統(tǒng)將合作向該另外一人也發(fā)送該撤銷指令。
因為活躍內(nèi)容(aglet)是當(dāng)簽署時附加到消息的條件的一部分,所以在不改變條件摘要、由此使簽署無效并且取消授權(quán)的前提下,沒有人能夠去除該aglet。
更一般地說,上述有關(guān)撤銷的解決方案可以用來通知文件或其他數(shù)據(jù)項的狀態(tài)的任何改變。被撤銷的消息是更一般情況的一種特定情況,其中文件的狀態(tài)可以由后來的決定改變。可以通過上述對于附條件簽名解決方案的方法向文件添加新狀態(tài);并且可以使用狀態(tài)改變通知解決方案將該新狀態(tài)傳送給文件的所有接收方。
狀態(tài)改變報告解決方案的另一示例應(yīng)用是用來報告文件的密級重新歸類;例如從限制級到秘密級,或者從秘密級到絕密級。
根據(jù)本發(fā)明實施方式的、進行狀態(tài)改變報告的方法步驟包含●使用適當(dāng)?shù)幕钴S內(nèi)容撰寫機制,為適當(dāng)消息創(chuàng)建活躍內(nèi)容;●由消息發(fā)送方或者接收方識別并執(zhí)行活躍內(nèi)容;●響應(yīng)于撤銷指令的提交或者其他狀態(tài)改變,訪問維護此類狀態(tài)改變的完整分發(fā)列表的注冊表,并且分發(fā)有關(guān)狀態(tài)改變的通知。
注冊表自身可以是分布的功能,并且由合作注冊表實現(xiàn),其中每個注冊表維護其自己區(qū)域內(nèi)接收方的分發(fā)列表,并且將其他接收方的詳情轉(zhuǎn)發(fā)給其區(qū)域的注冊表。然而,在需要消息或文件狀態(tài)變化的完全審計記錄的情況下,一個機構(gòu)可以選擇實現(xiàn)單一注冊表。
權(quán)利要求
1.一種響應(yīng)于為數(shù)據(jù)項的電子簽名指定一個或多個條件而執(zhí)行的、生成附條件電子簽名的方法,該方法包含以下步驟加密該數(shù)據(jù)項;與該數(shù)據(jù)項獨立地加密所述一個或多個條件,組合所述經(jīng)加密的數(shù)據(jù)項與經(jīng)加密的一個或多個條件;以及加密該組合以生成數(shù)字簽名塊,該數(shù)字簽名塊固有地表示所述數(shù)據(jù)項和一個或多個條件、并且使得能夠?qū)λ鰯?shù)據(jù)項和一個或多個條件兩者進行密碼驗證。
2.如權(quán)利要求1所述的方法,其中將多個所指定條件的每一個獨立地加密,并且與所述經(jīng)加密的數(shù)據(jù)項組合,并且其中該組合然后被進一步加密。
3.如權(quán)利要求1或2所述的方法,其中所述對數(shù)據(jù)項的加密與對條件的獨立加密都為單向哈希步驟,以便生成數(shù)據(jù)項和條件的可驗證表示。
4.如權(quán)利要求3所述的方法,其中所述組合經(jīng)哈希的數(shù)據(jù)項和條件的步驟包含連接經(jīng)哈希的數(shù)據(jù)項與經(jīng)哈希的條件,哈希該連接的結(jié)果以生成最終摘要,以及進一步加密該最終摘要以生成數(shù)字簽名塊。
5.如權(quán)利要求1或2所述的方法,其中所述加密該組合的步驟包含使用以下加密方法,該加密方法使得(a)組合所述經(jīng)加密的數(shù)據(jù)項和經(jīng)加密的一個或多個條件、然后加密該組合的結(jié)果不同于(b)加密所述經(jīng)加密的數(shù)據(jù)項和經(jīng)加密的一個或多個條件兩者、然后組合該經(jīng)雙重加密的數(shù)據(jù)項和條件的結(jié)果。
6.如權(quán)利要求5所述的方法,其中所述加密方法實現(xiàn)密碼塊鏈接加密。
7.如權(quán)利要求1或2所述的方法,其中所述對數(shù)據(jù)項的加密與對條件的獨立加密每一個都使用密碼塊鏈接加密方法。
8.如上述權(quán)利要求中任一項所述的方法,其中所述加密該組合以生成數(shù)字簽名塊的步驟利用公開/私有密鑰密碼解決方案的私有密鑰以生成附條件簽名。
9.如權(quán)利要求1至7中任一項所述的方法,其中所述加密該組合以生成數(shù)字簽名塊的步驟利用對稱密鑰密碼解決方案的對稱密鑰以生成附條件簽名。
10.如上述權(quán)利要求中任一項所述的方法,包含向接收方發(fā)送所述數(shù)據(jù)項、一個或多個條件以及數(shù)字簽名塊的步驟,從而使得訪問用于進行所述加密步驟的密碼過程、并且訪問相應(yīng)的解密密鑰的接收方能夠解密所述數(shù)字簽名塊以生成第一結(jié)果;加密所述數(shù)據(jù)項,與該數(shù)據(jù)項獨立地加密所述一個或多個條件,并且組合所述經(jīng)加密的數(shù)據(jù)項和經(jīng)加密的一個或多個條件,以生成第二結(jié)果;以及比較第一結(jié)果與第二結(jié)果,從而確定它們是否匹配。
11.如權(quán)利要求10所述的方法,包含向接收方傳送加密算法。
12.如權(quán)利要求10或11所述的方法,包含向接收方傳送每個加密步驟的中間結(jié)果,包含所述經(jīng)加密的數(shù)據(jù)項;以及所述經(jīng)加密的一個或多個條件。
13.如權(quán)利要求10至12中任一項所述的方法,其中所述加密該組合以生成經(jīng)數(shù)字簽名的數(shù)據(jù)塊的步驟利用公開/私有密鑰密碼解決方案的私有密鑰,并且其中該方法包含向接收方傳送該密碼解決方案的公開密鑰。
14.如權(quán)利要求10至12中任一項所述的方法,其中所述加密該組合以生成經(jīng)數(shù)字簽名的數(shù)據(jù)塊的步驟利用公開/私有密鑰密碼解決方案的私有密鑰,并且其中該方法包含向接收方傳送用來獲得該密碼解決方案的公開密鑰的信息。
15.如權(quán)利要求10至14中任一項所述的方法,包含編輯加密結(jié)果集合,其中該集合包含每一加密步驟的結(jié)果,并且其中所述傳送的步驟包含向接收方傳送該加密結(jié)果集合的步驟。
16.如權(quán)利要求3所述的方法,包含向接收方傳送所述數(shù)據(jù)項和條件的經(jīng)哈希的表示以及所述數(shù)字簽名塊的步驟,從而使得訪問用于進行加密該組合的步驟的密碼過程、并且訪問相應(yīng)的解密密鑰的接收方能夠解密所述數(shù)字簽名塊;組合所述數(shù)據(jù)項與條件的經(jīng)哈希的表示,以生成經(jīng)組合的摘要;以及比較經(jīng)解密的簽名塊與經(jīng)組合的摘要,從而確定它們是否匹配。
17.如權(quán)利要求16所述的方法,其中所述組合經(jīng)哈希的表示以生成經(jīng)組合的摘要的步驟包含以下步驟連接所述經(jīng)哈希的表示以生成雙摘要;以及哈希該雙摘要以生成最終經(jīng)組合的摘要。
18.如權(quán)利要求1所述的方法,其中多個數(shù)據(jù)項的每一個都被獨立地加密與組合,然后將該組合進一步加密。
19.一種驗證由根據(jù)權(quán)利要求10所述的方法生成的附條件電子簽名的方法,包含響應(yīng)于接收方接收到所傳送的數(shù)據(jù)項、一個或多個條件以及數(shù)字簽名塊而執(zhí)行的以下步驟解密所述數(shù)字簽名塊以生成第一結(jié)果;加密所述數(shù)據(jù)項,與該數(shù)據(jù)項獨立地加密所述一個或多個條件,并且組合所述經(jīng)加密的數(shù)據(jù)項與經(jīng)加密的一個或多個條件,以生成第二結(jié)果;以及比較第一結(jié)果與第二結(jié)果,從而確定它們是否匹配。
20.一種計算機程序,包括程序代碼指令,用來控制其上執(zhí)行該程序代碼的數(shù)據(jù)處理裝置的操作,以執(zhí)行根據(jù)權(quán)利要求1所述的方法。
21.一種計算機程序,包括程序代碼指令,用來控制其上執(zhí)行該程序代碼的數(shù)據(jù)處理裝置的操作,以執(zhí)行根據(jù)權(quán)利要求19所述的方法。
22.一種用來生成附條件電子簽名的數(shù)據(jù)處理裝置,包含一個或多個密碼組件,響應(yīng)于為數(shù)據(jù)項的電子簽名指定一個或多個條件,用來加密該數(shù)據(jù)項,與該數(shù)據(jù)項獨立地加密所述一個或多個條件,組合所述經(jīng)加密的數(shù)據(jù)項與經(jīng)加密的一個或多個條件,以及加密該組合以生成數(shù)字簽名塊,該數(shù)字簽名塊固有地表示所述數(shù)據(jù)項和一個或多個條件、并且使得能夠?qū)λ鰯?shù)據(jù)項和一個或多個條件兩者進行密碼驗證;以及用來向接收方傳送所述數(shù)據(jù)項、一個或多個條件以及數(shù)字簽名塊的部件。
23.一種驗證由根據(jù)權(quán)利要求10所述的方法生成的附條件電子簽名的數(shù)據(jù)處理裝置,包含用來接收所傳送的數(shù)據(jù)項、一個或多個條件、以及數(shù)字簽名塊的部件;以及一個或多個密碼組件,用來解密所述數(shù)字簽名塊以生成第一結(jié)果;加密所述數(shù)據(jù)項,與該數(shù)據(jù)項獨立地加密所述一個或多個條件,并且組合所述經(jīng)加密的數(shù)據(jù)項與經(jīng)加密的一個或多個條件以生成第二結(jié)果;以及比較第一結(jié)果與第二結(jié)果,從而確定它們是否匹配。
24.一種散布附條件簽署的數(shù)據(jù)項的狀態(tài)信息的方法,其中該附條件簽署的數(shù)據(jù)項包含可執(zhí)行內(nèi)容,該可執(zhí)行內(nèi)容用來響應(yīng)于附條件簽署的數(shù)據(jù)項之一被轉(zhuǎn)發(fā)給接收方或者被標識為被拒絕而更新注冊表,所述注冊表維護數(shù)據(jù)項的接收方列表,該方法包含以下步驟響應(yīng)于向新接收方轉(zhuǎn)發(fā)附條件簽署的數(shù)據(jù)項,執(zhí)行所述可執(zhí)行內(nèi)容以更新注冊表中接收方列表;以及響應(yīng)于關(guān)于附條件簽署的數(shù)據(jù)項被拒絕的指示,執(zhí)行所述可執(zhí)行內(nèi)容以更新注冊表,并且向注冊表列表中的每個接收方散布關(guān)于所述數(shù)據(jù)項被拒絕的指示。
25.一種散布附條件簽署的數(shù)據(jù)項的狀態(tài)信息的數(shù)據(jù)處理裝置,包含注冊表,用來維護附條件簽署的數(shù)據(jù)項的接收方的列表;以及用來識別在附條件簽署的數(shù)據(jù)項內(nèi)是否存在可執(zhí)行組件、以及響應(yīng)于該數(shù)據(jù)項被轉(zhuǎn)發(fā)給新接收方而啟動該可執(zhí)行組件的執(zhí)行以更新注冊表中接收方列表的部件;以及用來響應(yīng)于關(guān)于數(shù)據(jù)項被拒絕的指示而更新注冊表以指示該拒絕以及向所述列表中的每個接收方散布關(guān)于數(shù)據(jù)項被拒絕的指示的部件。
26.一種計算機程序,包含程序代碼指令,用來控制其上執(zhí)行該程序代碼的數(shù)據(jù)處理裝置的操作,以執(zhí)行根據(jù)權(quán)利要求24所述的方法。
全文摘要
本發(fā)明提供了用來生成并使用附條件電子簽名的方法、裝置與計算機程序,其使參加在線通信或交易的各方能夠?qū)l件無歧義地與經(jīng)簽署的數(shù)據(jù)項相鏈接,并且使得能夠驗證數(shù)據(jù)項與條件的真實性,以及使得能夠驗證簽署方的身份。數(shù)據(jù)項與一個或多個條件被獨立地哈希,結(jié)果的摘要(哈希值)被連接,并且連接串被進一步哈希以產(chǎn)生最終摘要。利用公開/私有密鑰加密方案的私有密鑰加密該最終摘要,以產(chǎn)生附條件的數(shù)字簽名。可以驗證數(shù)據(jù)項與條件的每一個。驗證包含解密附條件簽名,并且比較解密結(jié)果與被獨立地生成的最終摘要。還公開了一種解決方案,當(dāng)?shù)诙螜z查中撤消了第一次檢查時,用來向有關(guān)方面?zhèn)鞑バ畔ⅰ?br>
文檔編號H04L9/32GK1729647SQ200380107182
公開日2006年2月1日 申請日期2003年11月24日 優(yōu)先權(quán)日2002年12月21日
發(fā)明者約翰·奧利特, 喬治·湯普森, 基思·A·沃爾頓 申請人:國際商業(yè)機器公司