本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是涉及一種確定消息的數(shù)據(jù)摘要的方法、一種確定消息的數(shù)據(jù)摘要的系統(tǒng)、一種基于多方簽名的數(shù)字簽名方法以及一種基于多方簽名的數(shù)字簽名系統(tǒng)。
背景技術(shù):
公平性是商務(wù)活動(dòng)中的一項(xiàng)基本原則。在合同簽署這樣一個(gè)商務(wù)活動(dòng)中,多名參與人聚集在一起,就一份共同的合同文本進(jìn)行協(xié)商,協(xié)商完畢后,簽訂合同。每一份有效的合同都包含所有參與人的簽名,以滿足法律上關(guān)于合同有效性的要求。如果有人拒簽,可以當(dāng)場(chǎng)發(fā)現(xiàn)問(wèn)題,解決爭(zhēng)端,保證公平性。在網(wǎng)絡(luò)空間中,合同簽署的某一個(gè)參與人,例如Bob,可以選擇在某個(gè)時(shí)間點(diǎn)終止合同的簽署,并推脫為網(wǎng)絡(luò)問(wèn)題,例如網(wǎng)絡(luò)延遲或者網(wǎng)絡(luò)丟包。其它參與人無(wú)法證實(shí)Bob到底是有意終止的,還是因?yàn)椴豢煽咕艿木W(wǎng)絡(luò)問(wèn)題被迫終止的。這就導(dǎo)致了不公平性:Bob相對(duì)于其它參與人具有任意終止協(xié)議的權(quán)利,這種權(quán)利可能會(huì)為Bob帶來(lái)不當(dāng)?shù)美瑩p害其它參與人的利益。例如在兩方基于可驗(yàn)證加密簽名(VES)的合同簽署方案中,參與方Alice給Bob發(fā)送一個(gè)VES消息,Bob可以使用該消息向任意第三方證明Alice給自己發(fā)送了一個(gè)關(guān)于某份合同文本的消息。盡管此時(shí)Bob并沒(méi)有得到Alice的簽名,甚至有可能永遠(yuǎn)也得不到Alice的簽名,但是這依舊意味著在某個(gè)時(shí)間點(diǎn)上,Alice確實(shí)曾經(jīng)考慮過(guò)與Bob進(jìn)行一次合同簽署,或者說(shuō)Alice進(jìn)行了某種程度的承諾。Bob以此為條件,可以與任意第三方進(jìn)行協(xié)商,期望獲得更好的利益。為了解決這些問(wèn)題,人們提出了“無(wú)濫用”的公平合同簽署,要求參與合同簽署的參與方無(wú)法在合同簽署過(guò)程中使用簽署合同的通信腳本來(lái)向任何第三方證明合同簽署的行為。
公平合同簽署問(wèn)題已經(jīng)存在比較多的解決思路和比較成熟的解決方案,不管是雙方的協(xié)議還是多方的協(xié)議,都有一些理論上很好的結(jié)果。然而,在實(shí)際應(yīng)用中存在很多約束條件,從而導(dǎo)致傳統(tǒng)的方案無(wú)法使用。例如實(shí)際應(yīng)用基于以下兩點(diǎn)約束:(1)采用PDF格式的文檔作為合同文件的載體;(2)一份合同中必須包含所有參與者的數(shù)字簽名。盡管看起來(lái)上述兩個(gè)要求很簡(jiǎn)單,但是卻限制了傳統(tǒng)所能使用的方案。
首先,PDF文檔僅支持RSA和DSA簽名,換言之,在構(gòu)造公平交換協(xié)議時(shí)必須采用可以提取標(biāo)準(zhǔn)RSA或DSA簽名的協(xié)議??沈?yàn)證加密簽名(VES)是普通數(shù)字簽名的一種擴(kuò)展,被用作設(shè)計(jì)公平交換協(xié)議的基本模塊。Ateniese提出的VES方案支持從VES中提取標(biāo)準(zhǔn)的RSA簽名或者DSA簽名,基本過(guò)程如下:
1、設(shè)用戶Alice隨機(jī)選擇大素?cái)?shù)p′、q′,構(gòu)造p=2p′+1,q=2q′+1,生成n=pq。Alice選擇公鑰e>2,計(jì)算私鑰d滿足ed=1mod2p′q′。在對(duì)消息m簽名時(shí),使用哈希函數(shù)計(jì)算數(shù)字簽名δ=H(m)d。
2、Alice向權(quán)威的證書(shū)頒發(fā)機(jī)構(gòu)(CA)申請(qǐng)數(shù)字證書(shū),獲得CertCA:A,表示CA頒發(fā)給Alice的數(shù)字證書(shū),其中含有公鑰(e,n)和Alice的身份信息。
3、Alice向可信第三方(TTP)注冊(cè),提交CertCA:A。TTP驗(yàn)證數(shù)字證書(shū),隨機(jī)選擇計(jì)算y=gx,并向Alice頒發(fā)數(shù)字證書(shū)CertTTP:A,其中包含Alice的身份、公鑰(e,n)和參數(shù)(g,y)。TTP存儲(chǔ)x作為恢復(fù)Alice的VES簽名的私鑰。
4、VES簽名形式上由一個(gè)ElGamal加密和一個(gè)指數(shù)相等的非交互知識(shí)證明組成。Alice要生成關(guān)于消息m的一個(gè)VES簽名,計(jì)算c1=H(m)2dyr,c2=gr,隨機(jī)選擇計(jì)算gt和(ye)t,計(jì)算w1=H(m,yer,gr,ye,g,(ye)t,gt),w2=t-cr。Alice設(shè)定VES簽名為φAlice=(c1,c2,w1,w2)。當(dāng)Alice把一個(gè)VES簽名發(fā)送給驗(yàn)證人Bob的時(shí)候,Alice發(fā)送消息m和VES簽名φAlice以及數(shù)字證書(shū)CertTTP:A。
5、VES驗(yàn)證主要是對(duì)知識(shí)證明的驗(yàn)證。Bob收到Alice的內(nèi)容之后,首先驗(yàn)證數(shù)字證書(shū)CertTTP:A,之后計(jì)算如果w1′=w1就認(rèn)為VES簽名正確。
6、TTP可以恢復(fù)Alice的VES簽名。TTP收到某個(gè)實(shí)體提交的(m,φAlice,CertTTP:A)之后,首先驗(yàn)證VES的正確性,驗(yàn)證出錯(cuò)退出執(zhí)行。否則,TTP使用存儲(chǔ)的關(guān)于Alice的x解密φAlice,得到H(m)2d,之后使用歐幾里得算法可以恢復(fù)H(m)d。特別指出,TTP所恢復(fù)的H(m)d是一個(gè)標(biāo)準(zhǔn)的RSA數(shù)字簽名,在驗(yàn)證時(shí)不需要額外操作,只需要執(zhí)行標(biāo)準(zhǔn)的RSA簽名校驗(yàn)過(guò)程即可驗(yàn)證。
其次,PDF文檔附加數(shù)字簽名時(shí)是有格式要求的。單個(gè)數(shù)字簽名的結(jié)構(gòu)如圖1所示,其中,哈希函數(shù)的內(nèi)容由字節(jié)范圍(ByteRange)定義,分為兩個(gè)部分,數(shù)字簽名值嵌在中間。第一部分是待簽署的文檔內(nèi)容和一些“元數(shù)據(jù)”,例如字體信息、數(shù)字簽名格式等。第二部分是其余的“元數(shù)據(jù)”和結(jié)束標(biāo)記,例如時(shí)間戳信息,數(shù)字簽名附帶的原因、位置等簽名時(shí)輸入的信息。在圖1的例子中,第一部分的數(shù)據(jù)有840個(gè)字節(jié),第二部分的數(shù)據(jù)有240個(gè)字節(jié),數(shù)字簽名有120個(gè)字節(jié)。實(shí)際中,PDF 1.5版之后,支持1024、2048和4096比特長(zhǎng)度的RSA簽名。
當(dāng)在一個(gè)PDF文檔中存放多個(gè)數(shù)字簽名時(shí),其結(jié)構(gòu)如圖2所示。圖2中可以看到一個(gè)PDF文檔包含三個(gè)數(shù)字簽名的例子。第一個(gè)簽名人所簽署的內(nèi)容包括原始文檔和關(guān)于原始文檔與第一個(gè)數(shù)字簽名的“元數(shù)據(jù)”。第二個(gè)簽名人所簽署的內(nèi)容包括帶有第一次簽名的完整簽名文檔、一些對(duì)文檔的修改內(nèi)容(例如增加了注釋)、和關(guān)于修改后的內(nèi)容與此次數(shù)字簽名的“元數(shù)據(jù)”。第三個(gè)數(shù)字簽名類似,第三個(gè)簽名人所簽署的內(nèi)容包含除了這個(gè)數(shù)字簽名之外的該P(yáng)DF文檔的所有內(nèi)容。
從法律效力上看,第一個(gè)數(shù)字簽名表明簽名人認(rèn)可其簽署之前的文檔內(nèi)容,并不包含對(duì)后續(xù)修改內(nèi)容(例如注釋)和后續(xù)數(shù)字簽名的認(rèn)可。第二個(gè)數(shù)字簽名表明簽名人認(rèn)可其簽署之前的文檔內(nèi)容和該簽名人自己可能添加的注釋。第三個(gè)數(shù)字簽名類似。三個(gè)簽名人共同認(rèn)可的部分只有原始的合同文本。后續(xù)的簽名人增加的注釋只對(duì)添加注釋的簽名人有約束力。根據(jù)PDF規(guī)范,PDF閱讀器可以把PDF文件中的數(shù)字簽名及其保護(hù)的范圍展示出來(lái),可以明確的指示每一個(gè)簽名人所修改的內(nèi)容。
傳統(tǒng)的多方公平合同簽署方案是就一份無(wú)異議的文本公平的交換各自的數(shù)字簽名,即各個(gè)數(shù)字簽名所簽署的內(nèi)容是一致的,這與PDF文檔多人簽名的格式不符。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)傳統(tǒng)的多方公平合同簽署方案各個(gè)數(shù)字簽名所簽署的內(nèi)容一致的要求與PDF文檔多人簽名的格式不符的問(wèn)題,提供一種確定消息的數(shù)據(jù)摘要的方法、一種確定消息的數(shù)據(jù)摘要的系統(tǒng)、一種基于多方簽名的數(shù)字簽名方法以及一種基于多方簽名的數(shù)字簽名系統(tǒng)。
為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案的實(shí)施例為:
一種確定消息的數(shù)據(jù)摘要的方法,包括步驟:
獲取待處理消息以及哈希函數(shù)的狀態(tài)量;
根據(jù)所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的初始化算法進(jìn)行初始化操作,初始化哈希函數(shù)運(yùn)算的上下文;
將所述哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出;采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待處理消息的摘要信息。
一種基于多方簽名的數(shù)字簽名方法,包括步驟:
當(dāng)前參與方獲取或者構(gòu)造待簽署文件;
確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量;
根據(jù)所述哈希函數(shù)狀態(tài)量,初始化哈希函數(shù)運(yùn)算的上下文;
采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待簽署文件的數(shù)據(jù)摘要;
根據(jù)所述待簽署文件的數(shù)據(jù)摘要執(zhí)行數(shù)字簽名操作,獲得數(shù)字簽名結(jié)果。
一種基于多方簽名的簽名方法,包括步驟:
接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的數(shù)字簽名結(jié)果;
根據(jù)所述第二上行消息合成上一個(gè)參與方數(shù)字簽名后的文檔;
驗(yàn)證該上一個(gè)參與方的數(shù)字簽名后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
一種基于多方簽名的簽名方法,包括步驟:
接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的VES簽名結(jié)果;
對(duì)上一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得上一個(gè)參與方的數(shù)字簽名結(jié)果;
驗(yàn)證該上一個(gè)參與方的數(shù)字簽名結(jié)果后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
一種基于多方簽名的簽名方法,包括步驟:接收最后一個(gè)參與者發(fā)送的簽名消息對(duì),簽名消息對(duì)包括各參與方簽名消息、各參與方簽名消息的消息簽名,各參與方簽名消息包括各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù);
對(duì)各參與方的VES簽名結(jié)果進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果確定各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量的正確性;
在各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量驗(yàn)證通過(guò)時(shí),向第一個(gè)參與方發(fā)送協(xié)議執(zhí)行消息,由所述第一個(gè)參與方向下一個(gè)參與方發(fā)送該第一個(gè)參與方的所述數(shù)字簽名結(jié)果,并由各參與方接收到上一個(gè)參與方的數(shù)字簽名結(jié)果時(shí),對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果,并由最后一個(gè)參與方對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔依序返回給之前各參與方。
一種確定消息的數(shù)據(jù)摘要的系統(tǒng),包括:
信息獲取模塊,用于獲取待處理消息以及哈希函數(shù)的狀態(tài)量;
第一初始化模塊,用于根據(jù)所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的初始化算法進(jìn)行初始化操作,初始化哈希函數(shù)運(yùn)算的上下文;
消息更新模塊,用于基于所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的消息更新算法對(duì)所述待處理消息進(jìn)行消息更新操作,獲得更新后的哈希函數(shù)運(yùn)算的上下文;
狀態(tài)量輸出模塊,用于將更新后的哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出;
結(jié)束處理模塊,用于采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待處理消息的摘要信息。
一種基于多方簽名的數(shù)字簽名系統(tǒng),包括:
文件獲取模塊,用于獲取或者構(gòu)造待簽署文件;
第一狀態(tài)量確定模塊,用于確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量;
第二初始化模塊,用于根據(jù)所述哈希函數(shù)狀態(tài)量,初始化哈希函數(shù)運(yùn)算的上下文;
摘要確定模塊,用于采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待簽署文件的數(shù)據(jù)摘要;
數(shù)字簽名模塊,用于根據(jù)所述待簽署文件的數(shù)據(jù)摘要執(zhí)行數(shù)字簽名操作,獲得數(shù)字簽名結(jié)果。
一種基于多方簽名的簽名系統(tǒng),包括:
第二消息接收模塊,用于接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的數(shù)字簽名結(jié)果;
第二文檔合成模塊,用于根據(jù)所述第二上行消息合成上一個(gè)參與方數(shù)字簽名后的文檔;
第二狀態(tài)量確定模塊,用于驗(yàn)證該上一個(gè)參與方的數(shù)字簽名后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
第二消息發(fā)送模塊,用于向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
一種基于多方簽名的簽名系統(tǒng),包括:
第二消息接收模塊,用于接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的VES簽名結(jié)果;
VES解密模塊,用于對(duì)上一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得上一個(gè)參與方的數(shù)字簽名結(jié)果;
第二狀態(tài)量確定模塊,用于驗(yàn)證該上一個(gè)參與方的數(shù)字簽名結(jié)果后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
第二消息發(fā)送模塊,用于向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
一種基于多方簽名的簽名系統(tǒng),包括:
第二簽名消息對(duì)接收模塊,用于接收最后一個(gè)參與者發(fā)送的簽名消息對(duì),簽名消息對(duì)包括各參與方簽名消息、各參與方簽名消息的消息簽名,各參與方簽名消息包括各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù);
簽名消息對(duì)驗(yàn)證模塊,用于對(duì)各參與方的VES簽名結(jié)果進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果確定各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量的正確性;
執(zhí)行消息發(fā)送模塊,用于在各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量驗(yàn)證通過(guò)時(shí),向第一個(gè)參與方發(fā)送協(xié)議執(zhí)行消息,由所述第一個(gè)參與方向下一個(gè)參與方發(fā)送該第一個(gè)參與方的所述數(shù)字簽名結(jié)果,并由各參與方接收到上一個(gè)參與方的數(shù)字簽名結(jié)果時(shí),對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果,并由最后一個(gè)參與方對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔依序返回給之前各參與方。
基于如上所述的實(shí)施例的方案,其通過(guò)在確定消息的數(shù)據(jù)摘要時(shí),在獲得哈希函數(shù)運(yùn)算的上下文后,將哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出,在電子合同簽署過(guò)程中進(jìn)行數(shù)字簽名時(shí),通過(guò)確定出簽署的電子合同文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,可以基于該哈希函數(shù)狀態(tài)量計(jì)算出計(jì)算出待簽署文件的數(shù)據(jù)摘要,且該哈希函數(shù)狀態(tài)量還可以共享給其它參與方或者可信第三方,使得其他參與方或者可信第三方可以基于該哈希函數(shù)狀態(tài)量構(gòu)造出虛擬文件,從而完成順序簽名的過(guò)程,且可以滿足最終產(chǎn)生的電子合同文件符合PDF文檔對(duì)于多方數(shù)字簽名的格式要求。
附圖說(shuō)明
圖1為一個(gè)實(shí)施例中PDF文檔的單個(gè)數(shù)字簽名的結(jié)構(gòu)示意圖;
圖2為一個(gè)實(shí)施例中PDF文檔包含多個(gè)數(shù)字簽名的結(jié)構(gòu)示意圖;
圖3為一個(gè)實(shí)施例中確定消息的數(shù)據(jù)摘要的方法的流程示意圖;
圖4是一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名方法的流程示意圖;
圖5是另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名方法的流程示意圖;
圖6是另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名方法的流程示意圖;
圖7是一個(gè)具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的交互流程示意圖;
圖8是第二個(gè)具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的交互流程示意圖;
圖9是第三個(gè)具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的交互流程示意圖;
圖10是第四個(gè)具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的交互流程示意圖;
圖11是第五個(gè)具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的交互流程示意圖;
圖12為一個(gè)實(shí)施例中確定消息的數(shù)據(jù)摘要的系統(tǒng)的結(jié)構(gòu)示意圖;
圖13是一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖14是一個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖15是第二個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖16是第三個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖17是第四個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖18是第五個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖19是另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖20是另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;
圖21是另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式僅僅用以解釋本發(fā)明,并不限定本發(fā)明的保護(hù)范圍。
為了不失一般性,假設(shè)有三個(gè)用戶Alice、Bob、Charlie要執(zhí)行公平的合同簽署協(xié)議,他們協(xié)商好了合同文本,寫(xiě)到了PDF文檔中,之后執(zhí)行公平合同簽署協(xié)議,下述各實(shí)施例的說(shuō)明中,均是以三方公平合同簽署的場(chǎng)景進(jìn)行描述,本領(lǐng)域技術(shù)人員可以理解,下述各實(shí)施例的方案可以推廣至多方公平合同簽署的情形?;谙率龈魇纠恼f(shuō)明可以確定,一般情況下,只有首個(gè)參與方和最后一個(gè)參與方可能需要執(zhí)行某些例外操作,而中間的各參與方的操作是相同的。
在下述各實(shí)施例的方案中,均基于一個(gè)假定的前提條件:各個(gè)參與方找到了一個(gè)共同信任的可信第三方(TTP)。每個(gè)參與方都將自己的簽名附到合同文檔中,交給TTP,并由TTP進(jìn)行轉(zhuǎn)交給其他參與方。在該前提條件下,按照通常的基于可信第三方進(jìn)行驗(yàn)證的方式,在參與方大于2的情況下需要多輪交互。假設(shè)每個(gè)實(shí)體之間都是點(diǎn)到點(diǎn)鏈路,如果有pn個(gè)參與方,這種方式需要各參與方與TTP進(jìn)行pn-1次的交互。每次交互至少需要2pn條消息,總共至少需要2pn(pn-1)條消息。因此,由于多方合同簽署的協(xié)議的復(fù)雜性,基于多輪交互的協(xié)議無(wú)法適應(yīng)對(duì)于實(shí)時(shí)性的要求較高的業(yè)務(wù)場(chǎng)景情況,而本發(fā)明的相關(guān)實(shí)施例的方案,可以在滿足公平合同簽署的條件下,同時(shí)滿足較高的實(shí)時(shí)性要求。
為了方便描述相關(guān)本發(fā)明實(shí)施例的相關(guān)內(nèi)容,對(duì)下述各實(shí)施例中的相關(guān)內(nèi)容做出以下約定:符號(hào)m表示合同文本,符號(hào)m′表示合同文本之后、數(shù)字簽名字段之前的第一部分“元數(shù)據(jù)”,符號(hào)m″表示數(shù)字簽名字段之后的第二部分“元數(shù)據(jù)”和結(jié)束標(biāo)志。用戶X對(duì)消息m的數(shù)字簽名簡(jiǎn)單表示為其中表示采用一種哈希函數(shù)H對(duì)消息m計(jì)算得到的消息摘要,SignX(·)表示一種數(shù)字簽名算法(例如RSA簽名),δX表示數(shù)字簽名計(jì)算結(jié)果,也稱為數(shù)字簽名結(jié)果。符號(hào)H(·)表示哈希函數(shù)的運(yùn)算操作,而不是表示哈希函數(shù)的計(jì)算結(jié)果,該符號(hào)中括號(hào)內(nèi)的內(nèi)容表示運(yùn)算操作的計(jì)算范圍。符號(hào)H(m,m′,m″)表示將原文m、m′和m″依次輸入H(·)運(yùn)算操作得到計(jì)算結(jié)果。符號(hào)ΛX和VESSignX分別表示用戶X的VES簽名結(jié)果和用戶X執(zhí)行VES的過(guò)程。
在PDF簽名的過(guò)程中,后續(xù)任何一個(gè)參與方必須將前面一個(gè)參與方的輸出結(jié)果作為原文,通過(guò)哈希函數(shù)計(jì)算出一個(gè)摘要信息(數(shù)據(jù)摘要),用于產(chǎn)生數(shù)字簽名結(jié)果。
在基于VES的多方公平合同簽署方案中,由于在完成各方簽署之前不能公開(kāi)某個(gè)參與方的簽名值,使得參與方無(wú)法依據(jù)PDF原文來(lái)計(jì)算產(chǎn)生數(shù)字簽名所需要的原文摘要信息。在下述各實(shí)施例中,通過(guò)引入分布式計(jì)算哈希函數(shù)的思想來(lái)解決這個(gè)問(wèn)題。首先,考慮到在現(xiàn)有的密碼體制中絕大多數(shù)哈希函數(shù)H的計(jì)算是可以迭代的,通過(guò)三個(gè)算法和一個(gè)狀態(tài)量可以描述哈希函數(shù)的具體計(jì)算過(guò)程。狀態(tài)量是ψ,表示哈希函數(shù)計(jì)算過(guò)程中需要存儲(chǔ)的中間狀態(tài)。三個(gè)算法分別是哈希函數(shù)的初始化算法Hi(ζ)、哈希函數(shù)的消息更新算法Hu(·)、以及哈希函數(shù)的結(jié)束算法Hf(·)。初始化算法Hi(ζ)的輸入?yún)?shù)ζ為哈希函數(shù)類型,譬如Hi(MD5)表示MD5算法的初始化運(yùn)算,Hi(SHA1)表示SHA1算法的初始化運(yùn)算。消息更新算法Hu(·)和結(jié)束算法Hf(·)的輸入?yún)?shù)表示參與運(yùn)算的原文,這兩個(gè)運(yùn)算都必須基于一個(gè)哈希函數(shù)運(yùn)算的狀態(tài)量ψ,譬如ψ.Hf表示以狀態(tài)量ψ作為中間狀態(tài)執(zhí)行結(jié)束算法Hf(·),這里符號(hào)“.”的左邊為狀態(tài)量或中間結(jié)果,右邊為運(yùn)算操作符。為了簡(jiǎn)化描述,多個(gè)哈希運(yùn)算步驟可以結(jié)合起來(lái),譬如表達(dá)了采用哈希函數(shù)ζ對(duì)原文m計(jì)算消息摘要的過(guò)程,依次執(zhí)行了初始化、更新和結(jié)束這三個(gè)運(yùn)算。
為了進(jìn)一步明確上述表述規(guī)則,假設(shè)需要哈希的消息是(m,m′,m″),其實(shí)際計(jì)算的過(guò)程可以是首先計(jì)算Hi(ζ),對(duì)狀態(tài)量ψ進(jìn)行初始化,之后計(jì)算Hu(m),再計(jì)算Hu(m′,m″),最后計(jì)算Hf得到哈希函數(shù)的輸出,這一計(jì)算過(guò)程可以表述為在進(jìn)行Hu計(jì)算時(shí),會(huì)對(duì)狀態(tài)量ψ進(jìn)行更新。哈希函數(shù)的計(jì)算過(guò)程中,一旦執(zhí)行了Hf得到哈希計(jì)算結(jié)果,就會(huì)將狀態(tài)量ψ丟棄,而根據(jù)輸出的哈希計(jì)算結(jié)果無(wú)法逆向推導(dǎo)出被丟棄的狀態(tài)量ψ。基于上述限制,本發(fā)明的下述各實(shí)施例的分布式計(jì)算哈希函數(shù)的基本思想是在多方公平合同的各參與方之間共享狀態(tài)量ψ,通過(guò)傳遞狀態(tài)量ψ,使得多個(gè)實(shí)體共同合作來(lái)完成一次哈希函數(shù)的計(jì)算。這種計(jì)算哈希函數(shù)的方法是大部分哈希函數(shù)的實(shí)現(xiàn)都支持的,例如OpenSSL庫(kù)、NTRU庫(kù)等。
基于上述設(shè)定好的前提條件,以下結(jié)合其中幾個(gè)實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
圖3中示出了一個(gè)實(shí)施例中確定消息的數(shù)據(jù)摘要的方法的流程示意圖。如圖3所示,該實(shí)施例中的確定消息的數(shù)據(jù)摘要的方法包括:
步驟S301:獲取待處理消息以及哈希函數(shù)的狀態(tài)量;
步驟S302:根據(jù)所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的初始化算法進(jìn)行初始化操作,初始化哈希函數(shù)運(yùn)算的上下文;
步驟S303:將哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出;采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待處理消息的摘要信息。
基于如上所述的實(shí)施例的方案,其通過(guò)在確定消息的數(shù)據(jù)摘要時(shí),在獲得哈希函數(shù)運(yùn)算的上下文后,將哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出,從而在電子合同簽署過(guò)程中進(jìn)行數(shù)字簽名時(shí),通過(guò)確定出簽署的電子合同文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,可以基于該哈希函數(shù)狀態(tài)量計(jì)算出計(jì)算出待簽署文件的數(shù)據(jù)摘要,且該哈希函數(shù)狀態(tài)量還可以共享給其它參與方或者可信第三方,使得其他參與方或者可信第三方可以基于該哈希函數(shù)狀態(tài)量構(gòu)造出虛擬文件,從而完成順序簽名的過(guò)程,且可以滿足最終產(chǎn)生的電子合同文件符合PDF文檔對(duì)于多方數(shù)字簽名的格式要求。
其中,上述哈希函數(shù)的狀態(tài)量可以包括:哈希運(yùn)算的寄存器組的信息,以及最后一個(gè)尚未使用的輸入數(shù)據(jù)分塊的信息。
在一個(gè)具體示例中,在上述步驟S302與步驟S303之間,還可以包括:
步驟S3023:基于所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的消息更新算法對(duì)所述待處理消息進(jìn)行消息更新操作,獲得更新后的哈希函數(shù)運(yùn)算的上下文。
此時(shí),在上述步驟S303中,是將更新后的哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出。
在一個(gè)具體示例中,上述步驟S3023中進(jìn)行消息更新操作時(shí),可以采用哈希函數(shù)的消息更新算法,對(duì)待處理消息的至少一個(gè)數(shù)據(jù)片段執(zhí)行消息更新操作。
如上所述的確定消息的數(shù)據(jù)摘要的方法,可以應(yīng)用到基于多方簽名的數(shù)字簽名的過(guò)程中,以在計(jì)算消息的數(shù)據(jù)摘要的過(guò)程中輸出哈希函數(shù)的狀態(tài)量,進(jìn)而基于輸出的哈希函數(shù)狀態(tài)量進(jìn)行數(shù)字簽名,進(jìn)而基于多方簽名進(jìn)行多方電子合同的簽署。
圖4中示出了一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名的方法的流程示意圖,該實(shí)施例中是以一個(gè)參與方的處理過(guò)程為例進(jìn)行說(shuō)明。如圖4所示,該實(shí)施例中的基于多方簽名的數(shù)字簽名的方法包括:
步驟S401:當(dāng)前參與方獲取或者構(gòu)造待簽署文件;
步驟S402;確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量;
步驟S403;根據(jù)所述哈希函數(shù)狀態(tài)量,初始化哈希函數(shù)運(yùn)算的上下文;
步驟S404;采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待簽署文件的數(shù)據(jù)摘要;
步驟S405;根據(jù)所述待簽署文件的數(shù)據(jù)摘要執(zhí)行數(shù)字簽名操作,獲得數(shù)字簽名結(jié)果。
上述實(shí)施例方案中獲得的哈希函數(shù)狀態(tài)量,可以傳遞給其他參與方,或者是基于其他信息傳遞給其他參與方,以完成信息的傳遞,進(jìn)而據(jù)此完成基于多方簽名的電子合同的簽署。
在一個(gè)具體應(yīng)用示例中,在上述確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量之前,還可以獲取當(dāng)前參與方對(duì)上述待簽署文件的添加數(shù)據(jù)。此時(shí),上述待簽署文件包括上述添加數(shù)據(jù);上述哈希函數(shù)狀態(tài)量是對(duì)包括上述添加數(shù)據(jù)的待簽署文件計(jì)算獲得的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,在上述當(dāng)前參與方為第一個(gè)參與方時(shí),此時(shí),上述待簽署文件可以為原始待簽署文件數(shù)據(jù)。此時(shí),上述與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,可以是根據(jù)原始待簽署文件數(shù)據(jù)計(jì)算獲得的與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的哈希函數(shù)狀態(tài)量(為便于與有當(dāng)前參與方的添加數(shù)據(jù)的文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量進(jìn)行區(qū)分,下述各實(shí)施例中稱為第一哈希函數(shù)狀態(tài)量)。此時(shí),與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量為該第一哈希函數(shù)狀態(tài)量。
另一方面,在上述當(dāng)前參與方為第一個(gè)參與方時(shí),在當(dāng)前參與方有對(duì)原始待簽署文件數(shù)據(jù)添加相關(guān)數(shù)據(jù)的情況下,此時(shí),上述待簽署文件包括原始待簽署文件數(shù)據(jù)以及當(dāng)前參與方的添加數(shù)據(jù)。在此情況下,在確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量時(shí),可以采用下述方式進(jìn)行:計(jì)算獲得與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量后;根據(jù)第一哈希函數(shù)狀態(tài)量、上述添加數(shù)據(jù)確定第二哈希函數(shù)狀態(tài)量。此時(shí),與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量為該第二哈希函數(shù)狀態(tài)量。在上述初始化哈希函數(shù)運(yùn)算的上下文時(shí),可以是根據(jù)第二哈希函數(shù)狀態(tài)量進(jìn)行初始化。
其中,基于上述哈希函數(shù)狀態(tài)量確定獲得待簽署文件的數(shù)據(jù)摘要、獲得數(shù)字簽名結(jié)果之后,相關(guān)的哈希函數(shù)狀態(tài)量或者基于哈希函數(shù)狀態(tài)量的相關(guān)信息,可以基于可信第三方TTP傳遞給下一個(gè)參與者,也可以直接傳遞給下一個(gè)參與者。在傳遞過(guò)程中,還可以結(jié)合不同的方式,例如VES簽名進(jìn)行。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方為第一個(gè)參與方時(shí),還可以將所述數(shù)字簽名結(jié)果添加到所述待簽署文件中獲得當(dāng)前參與方數(shù)字簽名后文檔,并將所述當(dāng)前參與方數(shù)字簽名后文檔向可信第三方發(fā)送。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),還可以向可信第三方發(fā)送第二上行消息,第二上行消息包括上述數(shù)字簽名結(jié)果。其中,在當(dāng)前參與方添加了數(shù)據(jù)的情況下,第二上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第二上行消息包括數(shù)字簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,還可以接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的最終簽名合成文檔。從而可以由可信第三方確定最終簽名合成文檔,以確保各參與方最后得到的是同一份簽名后的文檔。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),當(dāng)前參與方還可以接收可信第三方TTP發(fā)送的下行消息,下行消息包括上述哈希函數(shù)狀態(tài)量。在之前各參與方添加了數(shù)據(jù)的情況下,該下行消息可以包括上述哈希函數(shù)狀態(tài)量、以及之前各參與方對(duì)待簽署文件的添加數(shù)據(jù)。其中,該哈希函數(shù)狀態(tài)量為與上一個(gè)參與方簽名后的待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,之前的各參與方包括前一個(gè)參與方。
此時(shí),上述待簽署文件可以是根據(jù)上述下行消息在概念上構(gòu)造的待簽署文件,該待簽署文件為虛擬文件。
在一個(gè)應(yīng)用示例中,還可以采用各參與方協(xié)商的共享密鑰對(duì)所述待簽署文件進(jìn)行加密,獲得加密后待簽署文件。此時(shí),還可以向可信第三方發(fā)送第一上行消息,第一上行消息包括上述加密后待簽署文件、上述第一哈希函數(shù)狀態(tài)量、以及上述數(shù)字簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,第一上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第一上行消息包括加密后待簽署文件、上述第一哈希函數(shù)狀態(tài)量、上述數(shù)字簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,還可以接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的初始簽名合成文檔,該初始簽名合成文檔為可信第三方基于對(duì)各參與方的數(shù)字簽名結(jié)果確定的合成文檔。此時(shí),當(dāng)前參與方還根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),還可以接收可信第三方發(fā)送的下行消息,下行消息包括上述哈希函數(shù)狀態(tài)量、以及第一哈希函數(shù)狀態(tài)量。在之前各參與方添加了數(shù)據(jù)的情況下,該下行消息還可以包括之前各參與方的添加數(shù)據(jù),即上述下行消息包括上述哈希函數(shù)狀態(tài)量、上述第一哈希函數(shù)狀態(tài)量以及之前各參與方對(duì)上述待簽署文件的添加數(shù)據(jù)。
此時(shí),當(dāng)前參與方還可以根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù),對(duì)上述下行消息中的第一哈希函數(shù)狀態(tài)量進(jìn)行驗(yàn)證。
在一個(gè)應(yīng)用示例中,當(dāng)前參與方還可以對(duì)上述數(shù)字簽名結(jié)果進(jìn)行VES簽名處理,獲得VES簽名結(jié)果。
在當(dāng)前參與方是第一個(gè)參與方時(shí),當(dāng)前參與方還可以向可信第三方發(fā)送第一上行消息,該第一上行消息包括所述VES簽名結(jié)果、以及原始待簽署文件數(shù)據(jù)。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第一上行消息包括所述VES簽名結(jié)果、原始待簽署文件數(shù)據(jù)以及當(dāng)前參與方的添加數(shù)據(jù)。
另一方面,在當(dāng)前參與方不是第一個(gè)參與方時(shí),當(dāng)前參與方還可以向可信第三方發(fā)送第二上行消息,該第二上行消息包括上述VES簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第二上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第二上行消息包括所述VES簽名結(jié)果、以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方是第一個(gè)參與方時(shí),該當(dāng)前參與方還可以向可信第三方發(fā)送第一上行消息,第一上行消息包括上述加密后待簽署文件、上述第一哈希函數(shù)狀態(tài)量、以及上述VES簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第一上行消息包括上述加密后待簽署文件、上述第一哈希函數(shù)狀態(tài)量、上述VES簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,當(dāng)前參與方還可以將上述數(shù)字簽名結(jié)果添加到上述待簽署文件中獲得當(dāng)前參與方數(shù)字簽名后文檔,并確定當(dāng)前參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,當(dāng)前參與方還基于上述當(dāng)前參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、上述VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù)構(gòu)造當(dāng)前參與方簽名消息。在一個(gè)具體應(yīng)用中,在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該當(dāng)前參與方簽名消息還可以包括當(dāng)前參與方的添加數(shù)據(jù)。
另一方面,當(dāng)前參與方還可以構(gòu)造簽名消息對(duì),并將該簽名消息對(duì)向下一個(gè)參與方發(fā)送。其中,該簽名消息對(duì)包括當(dāng)前參與方的第一簽名消息對(duì),第一簽名消息對(duì)包括當(dāng)前參與方簽名消息、當(dāng)前參與方簽名消息的消息簽名。其中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),上述簽名消息對(duì)還可以包括之前各參與方的簽名消息對(duì)。
在一個(gè)應(yīng)用示例中,當(dāng)前參與方還可以接收上一個(gè)參與方發(fā)送的簽名消息對(duì),上一個(gè)參與方發(fā)送的簽名消息對(duì)包括:當(dāng)前參與方之前的各參與方的簽名消息對(duì),之前各參與方的簽名消息對(duì)包括之前各參與方的簽名消息、之前各參與方簽名消息的消息簽名。其中,之前各參與方簽名消息包括之前各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、之前各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù)。在一個(gè)應(yīng)用示例中,在之前各參與方添加了數(shù)據(jù)的情況下,之前各參與方簽名消息還可以包括之前各參與方的添加數(shù)據(jù)。
在此基礎(chǔ)上,當(dāng)前參與方還可以接收到上一個(gè)參與方發(fā)送的簽名消息對(duì)之后,驗(yàn)證上一個(gè)參與方發(fā)送的簽名消息對(duì)中包含的之前各參與方的消息簽名和VES簽名結(jié)果。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方是第一個(gè)參與方時(shí),當(dāng)前參與方還可以接收可信第三方在接收到最后一個(gè)參與方發(fā)送的消息簽名對(duì)后返回的協(xié)議執(zhí)行消息;根據(jù)所述協(xié)議執(zhí)行消息向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),當(dāng)前參與方還可以接收上一個(gè)參與方發(fā)送的之前各參與方的數(shù)字簽名結(jié)果;在對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的數(shù)字簽名結(jié)果。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方是最后一個(gè)參與方時(shí),當(dāng)前參與方還可以在對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔發(fā)送給上一個(gè)參與方。
在一個(gè)應(yīng)用示例中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),當(dāng)前參與方還可以接收下一個(gè)參與方發(fā)送的最終簽名合成文檔;并在該當(dāng)前參與方不是第一個(gè)參與方時(shí),將該最終簽名合成文檔向上一個(gè)參與方發(fā)送。
圖5中示出了另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名方法的流程示意圖,該實(shí)施例中是以可信第三方TTP的處理過(guò)程為例進(jìn)行說(shuō)明,且各參與方是將自己的數(shù)字簽名結(jié)果發(fā)送給可信第三方TTP。如圖5所示,該實(shí)施例中的方法包括:
步驟S501:接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的數(shù)字簽名結(jié)果;
步驟S502:根據(jù)所述第二上行消息合成上一個(gè)參與方數(shù)字簽名后的文檔;
步驟S503:驗(yàn)證該上一個(gè)參與方的數(shù)字簽名后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
步驟S504:向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以接收第一個(gè)參與方發(fā)送的第一個(gè)參與方數(shù)字簽名后的文檔,該第一個(gè)參與方數(shù)字簽名后的文檔包括原始待簽署文件數(shù)據(jù)、第一個(gè)參與方的數(shù)字簽名。
在此情況下,可信第三方TTP還可以在驗(yàn)證第一個(gè)參與方數(shù)字簽名后的文檔中第一個(gè)參與方的數(shù)字簽名后,計(jì)算第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
此時(shí),可信第三方TTP還可以向下一個(gè)參與方發(fā)送下行消息,該下行消息包括第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:第一個(gè)參與方采用各參與方協(xié)商的共享密鑰對(duì)待簽署文件進(jìn)行加密后獲得的加密后待簽署文件、與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量、以及第一個(gè)參與方的數(shù)字簽名結(jié)果。
在此基礎(chǔ)上,可信第三方TTP還可以根據(jù)該第一上行消息在概念上合成該第一個(gè)參與方數(shù)字簽名后的文檔。
此時(shí),可信第三方TTP還可以在驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在此基礎(chǔ)上,可信第三方TTP還可以向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量、以及所述第一哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,在上一個(gè)參與方為最后一個(gè)參與方時(shí),可信第三方TTP還可以根據(jù)第二上行消息合成最終簽名合成文檔;并在驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,將最終簽名合成文檔向各參與方發(fā)送。
在一個(gè)應(yīng)用示例中,在上一個(gè)參與方為最后一個(gè)參與方時(shí),可信第三方TTP還可以根據(jù)第二上行消息在概念上合成上一個(gè)參與方數(shù)字簽名后的文檔,根據(jù)上一個(gè)參與方數(shù)字簽名后的文檔驗(yàn)證最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,根據(jù)各參與方的數(shù)字簽名結(jié)果合成初始簽名合成文檔,并將該初始簽名合成文檔向各參與方發(fā)送,由各參與方根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、該初始簽名合成文檔合成最終簽名合成文檔。
圖6是另一個(gè)實(shí)施例中的可信第三方TTP的基于多方簽名的數(shù)字簽名方法的處理流程示意圖,該實(shí)施例中是基于VES簽名進(jìn)行,各參與方將VES簽名結(jié)果發(fā)送給可信第三方TTP,以將參與方簽名后的文檔的哈希函數(shù)狀態(tài)量經(jīng)由可信第三方TTP傳遞給下一個(gè)參與方。如圖6所示,該實(shí)施例中的方法包括:
步驟S601:接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的VES簽名結(jié)果;在上一個(gè)參與方添加了數(shù)據(jù)的情況下,該第二上行消息還可以包括上一個(gè)參與方的添加數(shù)據(jù);
步驟S602:對(duì)上一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得上一個(gè)參與方的數(shù)字簽名結(jié)果;
步驟S603:驗(yàn)證該上一個(gè)參與方的數(shù)字簽名結(jié)果后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
步驟S604:向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量,其中,在之前各參與方添加了數(shù)據(jù)的情況下,該下行消息還可以包括之前各參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:原始待簽署文件數(shù)據(jù)、以及第一個(gè)參與方的VES簽名結(jié)果。在第一個(gè)參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括第一個(gè)參與方的添加數(shù)據(jù)。
此時(shí),可信第三方TTP還可以對(duì)第一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得第一個(gè)參與方的數(shù)字簽名結(jié)果。在第一個(gè)參與方添加了數(shù)據(jù)的情況下,第一個(gè)參與方數(shù)字簽名后的文檔還可以包括第一個(gè)參與方的添加數(shù)據(jù)
一個(gè)應(yīng)用示例中,可信第三方TTP還可以根據(jù)原始待簽署文件數(shù)據(jù)、第一個(gè)參與方的數(shù)字簽名結(jié)果合成該第一個(gè)參與方數(shù)字簽名后的文檔。并在驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。在此情況下,還可以向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:第一個(gè)參與方采用各參與方協(xié)商的共享密鑰對(duì)待簽署文件進(jìn)行加密后獲得的加密后待簽署文件、與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量、以及第一個(gè)參與方的VES簽名結(jié)果。
此時(shí),可信第三方TTP還可以對(duì)第一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得第一個(gè)參與方的數(shù)字簽名結(jié)果。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以根據(jù)第一個(gè)參與方的數(shù)字簽名結(jié)果在概念上合成該第一個(gè)參與方數(shù)字簽名后的文檔。還可以在驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,在上一個(gè)參與方是第一個(gè)參與方時(shí),可信第三方TTP還可以向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量、以及上述第一哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以在上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)上述第二上行消息合成最終簽名合成文檔;并在驗(yàn)證最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,將最終簽名合成文檔向各參與方發(fā)送。
在一個(gè)應(yīng)用示例中,可信第三方TTP還可以在上述上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)所述第二上行消息在概念上合成上一個(gè)參與方數(shù)字簽名后的文檔,根據(jù)上一個(gè)參與方數(shù)字簽名后的文檔驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,根據(jù)各參與方的數(shù)字簽名結(jié)果合成初始簽名合成文檔,并將該初始簽名合成文檔向各參與方發(fā)送,由各參與方根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
在另一個(gè)實(shí)施例的方案中,在當(dāng)前參與方直接將基于哈希函數(shù)狀態(tài)量的信息發(fā)送給下一個(gè)參與方時(shí),可信第三方TTP可以是在接收到最后一個(gè)參與方發(fā)送的消息時(shí)進(jìn)行一次處理過(guò)程即可,此時(shí),可信第三方TTP可以接收最后一個(gè)參與者發(fā)送的簽名消息對(duì),簽名消息對(duì)包括各參與方簽名消息、各參與方簽名消息的消息簽名,各參與方簽名消息包括各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù)。
在此情況下,可信第三方TTP還可以對(duì)各參與方的VES簽名結(jié)果進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果確定各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量的正確性。
此時(shí),可信第三方TTP還可以在各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量驗(yàn)證通過(guò)時(shí),向第一個(gè)參與方發(fā)送協(xié)議執(zhí)行消息,由所述第一個(gè)參與方向下一個(gè)參與方發(fā)送該第一個(gè)參與方的所述數(shù)字簽名結(jié)果,并由各參與方接收到上一個(gè)參與方的數(shù)字簽名結(jié)果時(shí),對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果,并由最后一個(gè)參與方對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔依序返回給之前各參與方。
基于如上所述的各實(shí)施例,根據(jù)基于哈希函數(shù)狀態(tài)量的相關(guān)信息的不同傳遞方式(例如基于可信第三方TTP傳遞給下一個(gè)參與者或者直接傳遞給下一個(gè)參與者),以及傳遞過(guò)程中的不同的處理方式,例如各參與方的共享密鑰的加密、VES簽名等,以下基于其中幾個(gè)具體示例,結(jié)合各參與方以及可信第三方TTP之間的交互過(guò)程完成電子合同簽署的過(guò)程進(jìn)行詳細(xì)說(shuō)明。
其中,在下述各具體示例的說(shuō)明中,將第一個(gè)參與方向可信第三方TTP發(fā)送的消息稱為第一上行消息,將其他的參與方向可信第三方TTP發(fā)送的消息稱為第二上行消息,將可信第三方向各參與方發(fā)送的消息稱為下行消息。
具體示例一
在該具體示例中,是以各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方為例進(jìn)行說(shuō)明。
在該具體示例中,通過(guò)引入“線內(nèi)(Inline)”TTP來(lái)完成多方公平合同簽署過(guò)程。線內(nèi)TTP的意思即每個(gè)簽名人的每一次簽名都需要TTP協(xié)助。這里的TTP協(xié)助,具有兩層含義:(1)TTP協(xié)助某個(gè)參與方驗(yàn)證前一個(gè)參與方輸出的數(shù)字簽名結(jié)果的正確性;(2)基于分布式計(jì)算哈希函數(shù)的思想,TTP計(jì)算某個(gè)參與方輸出結(jié)果的哈希函數(shù)的狀態(tài)量,然后發(fā)送給后續(xù)參與方,使得后續(xù)參與方不需要獲得上一個(gè)參與方輸出的PDF文件的情況下,可以生成自己的數(shù)字簽名。
假定用戶Alice、Bob和Charlie通過(guò)其他信道(如E-mail等)確保各方都持有相同的PDF文檔m0。該具體示例中,用戶Alice的處理代表了第一個(gè)參與方的處理過(guò)程,用戶Bob的處理代表了中間各參與方的處理過(guò)程,用戶Charlie的處理代表了最后一個(gè)參與方的處理過(guò)程。圖7中示出了該具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的過(guò)程中,各參與方與可信第三方TTP的交互過(guò)程的流程示意圖。
如圖7所示,在該具體示例中,為了達(dá)到公平的合同簽署,在電子合同的簽署過(guò)程中,用戶Alice、Bob、Charlie執(zhí)行如下協(xié)議:
步驟S701:Alice簽署PDF文檔m0(原始待簽署文件數(shù)據(jù)),首先確定自己需要增加的內(nèi)容m′A和m″A(以Alice作為當(dāng)前參與方時(shí)當(dāng)前參與者的添加數(shù)據(jù)),并計(jì)算消息摘要然后計(jì)算數(shù)字簽名Alice基于數(shù)字簽名生成PDF文檔DA=(m0,m′A,δAlice,m″A)并通過(guò)安全信道發(fā)送給可信第三方TTP。
步驟S702:可信第三方TTP存儲(chǔ)文檔DA,驗(yàn)證Alice簽名δAlice的有效性,如果驗(yàn)證失敗則退出;如果驗(yàn)證簽名δAlice有效,TTP計(jì)算文檔DA對(duì)應(yīng)的狀態(tài)量(哈希函數(shù)狀態(tài)量)ψA=Hi(ζ).Hu(DA),然后通過(guò)安全信道將消息(m′A,m″A,ψA)(下行消息)發(fā)送給Bob。
步驟S703:Bob檢查m′A和m″A(上一個(gè)參與方的添加數(shù)據(jù)),確定自己需要增加的內(nèi)容m′B和m″B(以Bob作為當(dāng)前參與方時(shí)當(dāng)前參與者的添加數(shù)據(jù))。此時(shí),Bob可以在概念上合成PDF文檔DA=(m0,m′A,δAlice,m″A),由于Bob沒(méi)有獲得δAlice因而不能實(shí)際合成DA。然而,盡管Bob沒(méi)有獲得δAlice而不能實(shí)際合成DA,但是Bob從TTP獲得了文檔DA對(duì)應(yīng)的狀態(tài)量ψA,從而可以計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Bob的數(shù)字簽名Bob通過(guò)安全信道將消息(m′B,δBob,m″B)(第二上行消息)交給TTP。
步驟S704:TTP合成DB=(DA,m′B,δBob,m″B),驗(yàn)證Bob簽名δBob的有效性,如果驗(yàn)證失敗則退出;如果驗(yàn)證簽名δBob有效,TTP對(duì)文檔DB計(jì)算狀態(tài)量ψB=Hi(ζ).Hu(DB),然后通過(guò)安全信道將消息(m′A,m″A,m′B,m″B,ψB)發(fā)送給Charlie。
步驟S705:Charlie檢查m′A、m″A、m′B、m″B,然后確定自己需要增加的內(nèi)容m′C和m″C。此時(shí),Charlie可以在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B),盡管Charlie沒(méi)有獲得δBob而不能實(shí)際合成DB,但是Charlie從TTP獲得了文檔DB對(duì)應(yīng)的狀態(tài)量ψB,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Charlie的數(shù)字簽名Charlie通過(guò)安全信道將消息(m′C,δCharlie,m″C)交給TTP。
步驟S706:TTP合成DC=(DB,m′C,δCharlie,m″C),驗(yàn)證Charlie的簽名δCharlie。驗(yàn)證通過(guò)后將DC發(fā)送給Alice,Bob和Charlie,完成合同簽署,否則退出。
從而,在該具體示例中,在各參與方與TTP之間只需要交互一次的情況下,各參與方能夠形成一致的簽署過(guò)的PDF文檔。由于TPP協(xié)助計(jì)算哈希函數(shù)的狀態(tài)量ψ,使得在多方公平合同簽署過(guò)程中,后簽名的實(shí)體(參與方)可以在不知道先前簽名的情況下生成符合PDF文檔規(guī)范的數(shù)字簽名。
上述具體示例中的處理過(guò)程達(dá)到了公平合同簽署的目標(biāo)。對(duì)于各個(gè)參與方,在得到最終的DC之前,并沒(méi)有得到其它各方的數(shù)字簽名信息,因此合同簽署過(guò)程的提前退出,對(duì)各個(gè)參與方都沒(méi)有影響。因?yàn)镈C是由TTP發(fā)送給各方的,如果一方得到了DC,其它各方也必然得到了DC。另外,上述協(xié)議可以擴(kuò)展到參與人大于3人的情況。對(duì)于pn個(gè)參與人,每個(gè)參與人大致上是向TTP發(fā)送一次消息,接收兩次消息(其中一次消息是最終合同),總的通信的次數(shù)大致是3pn次。
其中,由于哈希函數(shù)狀態(tài)量ψ本質(zhì)上是哈希函數(shù)計(jì)算過(guò)程中的狀態(tài)量和不夠一個(gè)分塊的數(shù)據(jù)。以SHA-1算法為例,每個(gè)分塊的大小為512比特,即64個(gè)字節(jié),狀態(tài)量大小為20個(gè)字節(jié),加上兩個(gè)長(zhǎng)度信息,總大小是92個(gè)字節(jié)。通過(guò)對(duì)PDF規(guī)范的解讀和對(duì)實(shí)際PDF文檔的二進(jìn)制文件進(jìn)行觀察,可以知道數(shù)字簽名字段之后的輔助信息m″一般大于64個(gè)字節(jié)。經(jīng)過(guò)結(jié)合一定數(shù)量的PDF文檔進(jìn)行測(cè)試后發(fā)現(xiàn),m″部分小的約有600字節(jié),大的可以到約10K字節(jié)。由此可見(jiàn),通過(guò)嗅探狀態(tài)量ψ來(lái)獲得先前數(shù)字簽名字段的簽名值,因此在實(shí)際中,由于狀態(tài)量ψ泄露而導(dǎo)致對(duì)于先前簽名人的簽名值的攻擊的概率是極小的,這也確保了電子合同簽署過(guò)程中的安全性。
具體示例二
在該具體示例中,是以各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方,且基于各參與方的共享密鑰對(duì)原始待簽署文件數(shù)據(jù)進(jìn)行加密為例進(jìn)行說(shuō)明。
基于上述具體示例一種的方案,可信第三方TTP在參與過(guò)程中可以獲得合同文本的內(nèi)容。假定可信第三方TTP誠(chéng)實(shí)地參與多方公平合同簽署協(xié)議,但是希望TTP無(wú)法獲得合同文本的內(nèi)容。要達(dá)到此目標(biāo),可以由多種可能的解決方案。例如,可以利用PDF文件內(nèi)建機(jī)制將文件中的關(guān)鍵數(shù)據(jù)進(jìn)行加密,在PDF閱讀器加載文件的階段要求用戶輸入口令才能正確打開(kāi)并閱讀文件。由于上述示例方案處理過(guò)程中執(zhí)行的簽署對(duì)象是PDF文件,而該P(yáng)DF文件是否被加上了訪問(wèn)口令,對(duì)于執(zhí)行上述協(xié)議并沒(méi)有影響。
在該具體示例的一個(gè)具體應(yīng)用實(shí)現(xiàn)方式中,為了達(dá)到公平的合同簽署,通過(guò)對(duì)合同文本m0進(jìn)行加密,并執(zhí)行多方公平合同簽署協(xié)議。
在該具體示例中,假定Alice、Bob和Charlie通過(guò)其他信道(如E-mail等)確保各方都持有相同的PDF文檔m0。圖8中示出了該具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的過(guò)程中,各參與方與可信第三方TTP的交互過(guò)程的流程示意圖。
如圖8所示,在該具體示例中,在電子合同公平簽署的過(guò)程中,Alice、Bob、Charlie執(zhí)行以下協(xié)議:
步驟S800:Alice、Bob和Charlie之間執(zhí)行多方密鑰協(xié)商協(xié)議(如基于DH協(xié)議的組密鑰協(xié)商協(xié)議),使得各方都持有相同的共享密鑰Kpre。
步驟S801:Alice簽署PDF文檔m0,首先確定自己需要增加的內(nèi)容m′A和m″A,計(jì)算狀態(tài)量ψ0=Hi(ζ).Hu(m0),進(jìn)一步計(jì)算狀態(tài)量ψA=Hi(ζ).Hu(m0).Hu(m′,m″),然后計(jì)算消息摘要以及數(shù)字簽名然后Alice使用共享密鑰Kpre對(duì)原文進(jìn)行加密,獲得密文c0=Encrypt(m0,Kpre),這里可以使用任何與共享密鑰Kpre相匹配的加密算法(如DES、3DES、AES、SM4等)。Alice之后把消息(c0,ψ0,m′A,δAlice,m″A)通過(guò)安全信道交給TTP。
步驟S802:TTP在概念上合成PDF文檔DA=(m0,m′A,δAlice,m″A),然后驗(yàn)證Alice簽名δAlice的有效性。為了驗(yàn)證簽名δAlice的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δAlice的有效性。如果驗(yàn)證簽名δAlice失敗則退出;如果驗(yàn)證簽名δAlice有效,TTP計(jì)算文檔DA=(m0,m′A,δAlice,m″A)對(duì)應(yīng)的狀態(tài)量ψA=ψ0.Hu(m′A,δAlice,m″A),然后通過(guò)安全信道將消息(m′A,m″A,ψ0,ψA)發(fā)送給Bob。
步驟S803:Bob檢查m′A和m″A,并檢查ψ0與原文m0是否相匹配,如果不匹配則退出。如果ψ0與原文m0相匹配,Bob確定自己需要增加的內(nèi)容m′B和m″B。此時(shí),Bob可以在概念上合成PDF文檔DA=(m0,m′A,δAlice,m″A),盡管Bob沒(méi)有獲得δAlice而不能實(shí)際合成DA,但是Bob從TTP獲得了文檔DA對(duì)應(yīng)的狀態(tài)量ψA,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Bob的數(shù)字簽名Bob通過(guò)安全信道將消息(m′B,δBob,m″B)交給TTP。
步驟S804:TTP在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B),然后驗(yàn)證Bob簽名δBob的有效性。為了驗(yàn)證簽名δBob的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δBob的有效性。如果驗(yàn)證簽名δBob失敗則退出;如果驗(yàn)證簽名δBob有效,TTP計(jì)算文檔DB對(duì)應(yīng)的狀態(tài)量ψB=ψ0.Hu(m′A,δAlice,m″A,m′B,δBob,m″B),然后通過(guò)安全信道將消息(m′A,m″A,m′B,m″B,ψB)發(fā)送給Charlie。
步驟S805:Charlie檢查m′A、m″A、m′B、m″B,并檢查ψ0與原文m0是否相匹配,如果不匹配則退出。如果ψ0與原文m0相匹配,Charlie然后確定自己需要增加的內(nèi)容m′C和m″C。此時(shí),Charlie可以在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B),盡管Charlie沒(méi)有獲得δBob而不能實(shí)際合成DB,但是Charlie從TTP獲得了文檔DB對(duì)應(yīng)的狀態(tài)量ψB,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Charlie的數(shù)字簽名Charlie通過(guò)安全信道將消息(m′C,δCharlie,m″C)交給TTP。
步驟S806:TTP在概念上合成PDF文檔DC=(DB,m′C,δCharlie,m″C),然后驗(yàn)證Charlie簽名δCharlie的有效性。為了驗(yàn)證簽名δCharlie的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δCharlie的有效性。如果驗(yàn)證簽名δCharlie失敗則退出;如果驗(yàn)證簽名δCharlie成功,TTP合成文檔T=(m′A,δAlice,m″A,m′B,δBob,m″B,m′C,δCharlie,m″C),然后通過(guò)安全信道將文檔T分別發(fā)送給Alice,Bob和Charlie。
步驟S807:Alice,Bob和Charlie分別合成最終的文檔DC=(m0,T),完成合同簽署。
基于該具體示例中的方案,在各參與方與TTP之間只需要交互一次的情況下,各參與方能夠形成一致的簽署過(guò)的PDF文檔。由于TPP協(xié)助計(jì)算哈希函數(shù)的狀態(tài)量ψ,使得在多方公平合同簽署過(guò)程中,后簽名的實(shí)體(參與方)可以在不知道先前簽名的情況下生成符合PDF文檔規(guī)范的數(shù)字簽名。
本具體示例中的上述協(xié)議達(dá)到了公平合同簽署的目標(biāo)。對(duì)于各個(gè)參與方,在得到最終的DC之前,并沒(méi)有得到其它各方的數(shù)字簽名信息,因此合同簽署過(guò)程的提前退出,對(duì)各個(gè)參與方都沒(méi)有影響。因?yàn)镈C是由TTP發(fā)送給各方的,如果一方得到了DC,其它各方也必然得到了DC。此外,可以理解的是,上述協(xié)議可以擴(kuò)展到參與人大于3人的情況。對(duì)于pn個(gè)參與人,每個(gè)參與人大致上是向TTP發(fā)送一次消息,接收兩次消息(其中一次消息是最終合同),總的通信的次數(shù)大致是3pn次。
另一方面,在該具體示例中,第一個(gè)參與方Alice是將原文m0加密之后才發(fā)送給可信第三方TTP,確??尚诺谌絋TP無(wú)法獲知原文的內(nèi)容。后續(xù)參與方均檢查與原文對(duì)應(yīng)的哈希函數(shù)狀態(tài)量ψ0與原文m0是否相匹配,以避免第一個(gè)參與方Alice或者可信第三方TTP發(fā)送一個(gè)虛假的原文的哈希函數(shù)狀態(tài)量ψ0。該具體示例中通過(guò)在可信第三方TTP與各參與方之間共享狀態(tài)量ψ,基于分布式計(jì)算哈希函數(shù)的思想,協(xié)同完成公平合同簽署的目標(biāo)。
具體示例三
在該具體示例中,是以各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方,且進(jìn)行了VES簽名為例進(jìn)行說(shuō)明。
在上述具體示例一的方案中,各參與方與TTP的交互中傳遞了數(shù)字簽名結(jié)果δX,如果攻擊者通過(guò)網(wǎng)絡(luò)嗅探等手段獲得δX,或者δX被TTP的后臺(tái)管理人員惡意泄露,可能破壞公平合同簽署的目標(biāo)。
據(jù)此,在本具體示例中,通過(guò)引入可驗(yàn)證加密簽名(VES),以解決各參與方與TTP的交互中傳遞了數(shù)字簽名結(jié)果δX的問(wèn)題,以已進(jìn)一步提高電子合同公平簽署過(guò)程中的安全性。
在該具體示例中,假定用戶Alice、Bob和Charlie通過(guò)其他信道(如E-mail等)確保各方都持有相同的PDF文檔m0。圖9中示出了該具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的過(guò)程中,各參與方與可信第三方TTP的交互過(guò)程的流程示意圖。
如圖9所示,在該具體示例中,在電子合同公平簽署的過(guò)程中,為了達(dá)到公平的合同簽署的目的,Alice、Bob、Charlie執(zhí)行以下協(xié)議:
步驟S901:Alice簽署原始文檔m0,首先確定自己需要增加的內(nèi)容m′A和m″A,并計(jì)算消息摘要然后計(jì)算數(shù)字簽名然后計(jì)算VES簽名結(jié)果并通過(guò)安全信道將消息(m0,m′A,ΛAlice,m″A)發(fā)送給TTP。
步驟S902:可信第三方TTP利用其存儲(chǔ)的VES私鑰,從Alice的VES簽名ΛAlice中解密獲得Alice的普通簽名δAlice,然后合成文檔DA=(m0,m′A,δAlice,m″A)并存儲(chǔ)。TTP驗(yàn)證Alice簽名δAlice的有效性,如果驗(yàn)證失敗則退出;如果驗(yàn)證簽名δAlice有效,TTP計(jì)算文檔DA對(duì)應(yīng)的哈希函數(shù)狀態(tài)量ψA=Hi(ζ).Hu(DA),然后通過(guò)安全信道將消息(m′A,m″A,ψA)發(fā)送給Bob。
步驟S903:Bob檢查m′A和m″A,確定自己需要增加的內(nèi)容m′B和m″B。此時(shí),Bob可以在概念上合成文檔DA=(m0,m′A,δAlice,m″A),盡管Bob沒(méi)有獲得δAlice而不能實(shí)際合成DA,但是Bob從TTP獲得了文檔DA對(duì)應(yīng)的狀態(tài)量ψA,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Bob的數(shù)字簽名然后計(jì)算VES簽名結(jié)果并通過(guò)安全信道將消息(m′B,ΛBob,m″B)發(fā)送給TTP。
步驟S904:TTP利用其存儲(chǔ)的VES私鑰,從Bob的VES簽名ΛBob中解密獲得Bob的普通簽名δBob,然后合成文檔DB=(DA,m′B,δBob,m″B),驗(yàn)證Bob簽名δBob的有效性,如果驗(yàn)證失敗則退出;如果驗(yàn)證簽名δBob有效,TTP對(duì)文檔DB計(jì)算狀態(tài)量ψB=Hi(ζ).Hu(DB),然后通過(guò)安全信道將消息(m′A,m″A,m′B,m″B,ψB)發(fā)送給Charlie。
步驟S905:Charlie檢查m′A、m″A、m′B、m″B,然后確定自己需要增加的內(nèi)容m′C和m″C。此時(shí),Charlie可以在概念上合成文檔DB=(DA,m′B,δBob,m″B),盡管Charlie沒(méi)有獲得δBob而不能實(shí)際合成DB,但是Charlie從TTP獲得了文檔DB對(duì)應(yīng)的狀態(tài)量ψB,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Charlie的數(shù)字簽名然后計(jì)算VES簽名結(jié)果并通過(guò)安全信道將消息(m′C,ΛCharlie,m″C)發(fā)送給TTP。
步驟S906:TTP利用其存儲(chǔ)的VES私鑰,從Charlie的VES簽名ΛCharlie中解密獲得Charlie的普通簽名δCharlie,然后合成文檔DC=(DB,m′C,δCharlie,m″C),驗(yàn)證Charlie的簽名δCharlie。驗(yàn)證通過(guò)后將DC發(fā)送給Alice,Bob和Charlie,完成合同簽署,否則退出。
在該具體示例的執(zhí)行過(guò)程中,各參與方將VES簽名結(jié)果發(fā)送給可信第三方TTP,由可信第三方TTP解密VES簽名獲得簽名原文δX,并驗(yàn)證簽名原文的有效性。與此同時(shí),可信第三方TTP協(xié)助每一個(gè)參與方計(jì)算狀態(tài)量ψ,并傳遞給下一個(gè)參與方,實(shí)現(xiàn)分布式計(jì)算哈希函數(shù)。在該具體示例中,由于沒(méi)有通過(guò)安全信道傳輸簽名原文δX,因此,即便攻擊者通過(guò)網(wǎng)絡(luò)嗅探等手段獲得δX的密文,也不會(huì)破壞公平合同簽署的目標(biāo),進(jìn)一步提高了電子合同簽署過(guò)程中的安全性,且確保了電子合同簽署過(guò)程中的公平性。
在該具體示例的一個(gè)應(yīng)用示例中,可信第三方TTP可以將提取VES簽名的私鑰(VES私鑰)存儲(chǔ)在密碼機(jī)等安全設(shè)備內(nèi)部,并且在TTP內(nèi)部實(shí)施合理的權(quán)限控制措施,使得具備較高安全級(jí)別的后臺(tái)管理人員才能夠操作安全設(shè)備,以進(jìn)一步降低來(lái)自TTP內(nèi)部攻擊的風(fēng)險(xiǎn),進(jìn)一步提高電子合同簽署過(guò)程中的安全性。
具體示例四
在該具體示例中,是在具體示例一的基礎(chǔ)上,以各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方,且對(duì)原始合同文本m0進(jìn)行加密,同時(shí)通過(guò)引入可驗(yàn)證加密簽名(VES)為例進(jìn)行說(shuō)明,以在避免可信第三方獲得合同文本內(nèi)容的同時(shí),避免各參與方與TTP的交互中傳遞了數(shù)字簽名結(jié)果δX的問(wèn)題,以進(jìn)一步提供電子合同簽署過(guò)程中的安全性和公平性。
在該具體示例中,假定用戶Alice、Bob和Charlie通過(guò)其他信道(如E-mail等)確保各方都持有相同的PDF文檔m0。圖9中示出了該具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的過(guò)程中,各參與方與可信第三方TTP的交互過(guò)程的流程示意圖。
如圖10所示,在該具體示例中,在電子合同公平簽署的過(guò)程中,用戶Alice、Bob、Charlie執(zhí)行以下協(xié)議:
步驟S1000:Alice、Bob和Charlie之間執(zhí)行多方密鑰協(xié)商協(xié)議(如基于DH協(xié)議的組密鑰協(xié)商協(xié)議),使得各方都持有相同的共享密鑰Kpre。
步驟S1001:Alice簽署PDF文檔m0,首先確定自己需要增加的內(nèi)容m′A和m″A,計(jì)算狀態(tài)量ψ0=Hi(ζ).Hu(m0),進(jìn)一步計(jì)算狀態(tài)量ψA=Hi(ζ).Hu(m0).Hu(m′,m″),然后計(jì)算消息摘要以及數(shù)字簽名然后計(jì)算VES簽名結(jié)果然后Alicce使用共享密鑰Kpre對(duì)原文進(jìn)行加密,獲得密文c0=Encrypt(m0,Kpre),這里可以使用任何與共享密鑰Kpre相匹配的加密算法(如DES、3DES、AES、SM4等)。Alice通過(guò)安全信道把消息(c0,ψ0,m′A,ΛAlice,m″A)發(fā)送給TTP。
步驟S1002:TTP利用其存儲(chǔ)的VES私鑰,從Alice的VES簽名ΛAlice中解密獲得Alice的普通簽名δAlice,然后在概念上合成PDF文檔DA=(m0,m′A,δAlice,m″A),然后驗(yàn)證Alice簽名δAlice的有效性。為了驗(yàn)證簽名δAlice的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δAlice的有效性。如果驗(yàn)證簽名δAlice失敗則退出;如果驗(yàn)證簽名δAlice有效,TTP計(jì)算文檔DA=(m0,m′A,δAlice,m″A)對(duì)應(yīng)的狀態(tài)量ψA=ψ0.Hu(m′A,δAlice,m″A),然后通過(guò)安全信道將消息(m′A,m″A,ψ0,ψA)發(fā)送給Bob。
步驟S1003:Bob檢查m′A和m″A,并檢查ψ0與原文m0是否相匹配,如果不匹配則退出。如果ψ0與原文m0相匹配,Bob確定自己需要增加的內(nèi)容m′B和m″B。此時(shí),Bob可以在概念上合成PDF文檔DA=(m0,m′A,δAlice,m″A),盡管Bob沒(méi)有獲得δAlice而不能實(shí)際合成DA,但是Bob從TTP獲得了文檔DA對(duì)應(yīng)的狀態(tài)量ψA,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Bob的數(shù)字簽名然后計(jì)算VES簽名結(jié)果并通過(guò)安全信道將消息(m′B,ΛBob,m″B)交給TTP。
步驟S1004:TTP利用其存儲(chǔ)的VES私鑰,從Bob的VES簽名ΛBob中解密獲得Bob的普通簽名δBob,然后在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B),然后驗(yàn)證Bob簽名δBob的有效性。為了驗(yàn)證簽名δBob的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δBob的有效性。如果驗(yàn)證簽名δBob失敗則退出;如果驗(yàn)證簽名δBob有效,TTP計(jì)算文檔DB對(duì)應(yīng)的狀態(tài)量ψB=ψ0.Hu(m′A,δAlice,m″A,m′B,δBob,m″B),然后通過(guò)安全信道將消息(m′A,m″A,m′B,m″B,ψB)發(fā)送給Charlie。
步驟S1005:Charlie檢查m′A、m″A、m′B、m″B,并檢查ψ0與原文m0是否相匹配,如果不匹配則退出。如果ψ0與原文m0相匹配,Charlie然后確定自己需要增加的內(nèi)容m′C和m″C。此時(shí),Charlie可以在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B),盡管Charlie沒(méi)有獲得δBob而不能實(shí)際合成DB,但是Charlie從TTP獲得了文檔DB對(duì)應(yīng)的狀態(tài)量ψB,從而計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Charlie的數(shù)字簽名然后計(jì)算VES簽名結(jié)果并通過(guò)安全信道將消息(m′C,ΛCharlie,m″C)交給TTP。
步驟S1006:TTP利用其存儲(chǔ)的VES私鑰,從Charlie的VES簽名ΛCharlie中解密獲得Charlie的普通簽名δCharlie,然后在概念上合成PDF文檔DC=(DB,m′C,δCharlie,m″C),然后驗(yàn)證Charlie簽名δCharlie的有效性。為了驗(yàn)證簽名δCharlie的有效性,TTP必須計(jì)算出摘要信息由于TTP并不持有共享密鑰Kpre,因此TTP不可能通過(guò)解密來(lái)獲得原文m0并計(jì)算出然而TTP確實(shí)可以根據(jù)Alice發(fā)送的ψ0重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算進(jìn)而驗(yàn)證簽名δCharlie的有效性。如果驗(yàn)證簽名δCharlie失敗則退出;如果驗(yàn)證簽名δCharlie成功,TTP合成文檔T=(m′A,δAlice,m″A,m′B,δBob,m″B,m′C,δCharlie,m″C),然后通過(guò)安全信道將文檔T分別發(fā)送給Alice,Bob和Charlie。
步驟S1007:Alice,Bob和Charlie分別合成最終的文檔DC=(m0,T),完成合同簽署。
在本具體示例的方案中,在各參與方與TTP之間只需要交互一次的情況下,各參與方能夠形成一致的簽署過(guò)的PDF文檔。由于TPP協(xié)助計(jì)算哈希函數(shù)的狀態(tài)量ψ,使得在多方公平合同簽署過(guò)程中,后簽名的實(shí)體(參與方)可以在不知道先前簽名的情況下生成符合PDF文檔規(guī)范的數(shù)字簽名。
本具體示例中的方案達(dá)到了公平合同簽署的目標(biāo),而且對(duì)于各個(gè)參與方,在得到最終的文檔DC之前,并沒(méi)有得到其它各參與方的數(shù)字簽名信息,因此合同簽署過(guò)程的提前退出,對(duì)各個(gè)參與方都沒(méi)有影響。因?yàn)樽罱K的文檔DC是由可信第三方TTP發(fā)送給各參與方的,因此,如果一個(gè)參與方得到了最終文檔DC,其它各參與方也必然得到了該最終文檔DC。另一方面,該具體示例中的方式也可以擴(kuò)展到參與人大于3人的情況。對(duì)于pn個(gè)參與人,每個(gè)參與人大致上是向TTP發(fā)送一次消息,接收兩次消息(其中一次消息是最終合同),總的通信的次數(shù)大致是3pn次。
此外,本具體示例中,第一個(gè)參與人Alice是將原文m0加密之后才發(fā)送給可信第三方TTP,確保可信第三方TTP無(wú)法獲知原文的內(nèi)容。后續(xù)參與方均需檢查狀態(tài)量ψ0與原文m0是否相匹配,以避免第一個(gè)參與方Alice或者可信第三方TTP發(fā)送一個(gè)虛假的狀態(tài)量ψ0,以進(jìn)一步提高電子合同簽署過(guò)程中的安全性。
據(jù)此,本具體示例中的方案通過(guò)在可信第三方TTP與各參與方之間共享狀態(tài)量ψ,基于分布式計(jì)算哈希函數(shù)的思想,協(xié)同完成了公平合同簽署的目標(biāo)。
另一方面,在該具體示例的方案中,各參與方是將VES簽名結(jié)果發(fā)送給可信第三方TTP,由可信第三方TTP解密VES簽名獲得簽名原文δX,并驗(yàn)證簽名原文δX的有效性。與此同時(shí),可信第三方TTP協(xié)助每一個(gè)參與方計(jì)算狀態(tài)量ψ,并傳遞給下一個(gè)參與方,實(shí)現(xiàn)分布式計(jì)算哈希函數(shù)。由于沒(méi)有通過(guò)安全信道傳輸簽名原文δX,即便攻擊者通過(guò)網(wǎng)絡(luò)嗅探等手段獲得δX的密文,也不會(huì)破壞公平合同簽署的目標(biāo),進(jìn)一步提高了電子合同公平簽署的安全性。
在該具體示例的一個(gè)應(yīng)用示例中,可信第三方TTP可以將提取VES簽名的私鑰存儲(chǔ)在密碼機(jī)等安全設(shè)備內(nèi)部,并且在TTP內(nèi)部實(shí)施合理的權(quán)限控制措施,使得具備較高安全級(jí)別的后臺(tái)管理人員才能夠操作安全設(shè)備,從而進(jìn)一步降低來(lái)自TTP內(nèi)部攻擊的風(fēng)險(xiǎn)。
具體示例五
在該具體示例中,是以各參與方直接基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給下一個(gè)參與方后,可信第三方TTP只需接收最后一個(gè)參與方發(fā)送的消息進(jìn)行驗(yàn)證處理為例進(jìn)行說(shuō)明。
在上述具體示例一至具體示例四的方案中,都是基于線內(nèi)TTP為例進(jìn)行說(shuō)明,在基于線內(nèi)TTP的方案中,可信第三方TTP與每一個(gè)參與人都要交互,隨著參與方的數(shù)目的增多,交互的次數(shù)也會(huì)隨之增加。在該具體示例的方案中,通過(guò)引入“在線(Online)”TTP,以減少簽名人(參與方)與可信第三方TTP的交互次數(shù)?!霸诰€(Online)”TTP即每個(gè)簽名人的每一次簽名不需要可信第三方TTP協(xié)助,每次合同簽署只需要最后一個(gè)簽名人(最后一個(gè)參與方)與可信第三方TTP交互一次即可。
據(jù)此,在該具體示例的方案中,通過(guò)減少簽名人與TTP的交互次數(shù),每次合同簽署只需要最后一個(gè)簽名人與TTP交互一次,而且同時(shí)能夠在各個(gè)簽名人之間形成一份一致的有各方簽名的PDF文檔。
在該具體示例中,假定用戶Alice、Bob和Charlie通過(guò)其他信道(如E-mail等)確保各方都持有相同的PDF文檔m0。圖11中示出了該具體示例中的基于多方簽名的數(shù)字簽名方法進(jìn)行電子合同簽署的過(guò)程中,各參與方與可信第三方TTP的交互過(guò)程的流程示意圖。
如圖11所示,在該具體示例中,在電子合同公平簽署的過(guò)程中,為了達(dá)到公平的合同簽署的目的,用戶Alice、Bob、Charlie執(zhí)行以下協(xié)議:
步驟S1101:Alice簽署原始PDF文檔m0,首先確定自己需要增加的內(nèi)容m′A和m″A,并計(jì)算消息摘要然后計(jì)算數(shù)字簽名合成PDF文檔DA=(m0,m′A,δAlice,m″A),之后對(duì)文檔DA計(jì)算狀態(tài)量ψA=Hi(ζ).Hu(DA)。然后Alice計(jì)算VES簽名結(jié)果構(gòu)造消息mA=(m0,m′A,ΛAlice,m″A,ψA),計(jì)算mA的數(shù)字簽名發(fā)送消息簽名對(duì)給Bob。
步驟S1102:Bob驗(yàn)證Alice的數(shù)字簽名和VES簽名ΛAlice。如果驗(yàn)證失敗,退出執(zhí)行協(xié)議。如果驗(yàn)證成功,Bob確定自己需要增加的內(nèi)容m′B和m″B。此時(shí),Bob可以在概念上合成PDF文檔DB=(DA,m′B,δBob,m″B)。盡管Bob不能實(shí)際合成該DB,但是Bob確實(shí)可以根據(jù)Alice發(fā)送的ψA重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算ψB=ψA.Hu(m′B,m″B)=Hi(ζ).Hu(DA).Hu(m′B,m″B),得到Bob的狀態(tài)量ψB。以此同時(shí),Bob還可以計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Bob的數(shù)字簽名然后Bob計(jì)算VES簽名結(jié)果構(gòu)造消息mB=(m0,m′B,ΛBob,m″B,ψB),計(jì)算mB的數(shù)字簽名發(fā)送消息簽名對(duì)給Charlie。
步驟S1103:Charlie驗(yàn)證Alice的數(shù)字簽名和VES簽名ΛAlice,驗(yàn)證Bob的數(shù)字簽名和VES簽名ΛBob。注意到為了驗(yàn)證ΛBob,Charlie需要計(jì)算這需要根據(jù)狀態(tài)量ψA來(lái)計(jì)算,其計(jì)算過(guò)程與Bob的計(jì)算過(guò)程相同。如果驗(yàn)證失敗,退出執(zhí)行協(xié)議。如果驗(yàn)證成功,Charlie確定自己需要增加的內(nèi)容m′C和m″C。此時(shí),Charlie可以在概念上合成PDF文檔盡管Charlie不能實(shí)際合成該DC,但是Charlie確實(shí)可以根據(jù)Bob發(fā)送的ψB重新初始化本地哈希函數(shù)的狀態(tài),然后計(jì)算ψC=ψB·Hu(m′C,m″C)=Hi(ζ).Hu(DA,DB).Hu(m′C,m″C),得到Charlie的狀態(tài)量ψC。與此同時(shí),Charlie還可以計(jì)算哈希值之后執(zhí)行數(shù)字簽名運(yùn)算得到Charlie的數(shù)字簽名然后Charlie計(jì)算VES簽名結(jié)果構(gòu)造消息mC=(m0,m′C,ΛCharlie,m″C,ψC),計(jì)算mC的數(shù)字簽名發(fā)送消息簽名對(duì)給TTP。
步驟S1104:TTP驗(yàn)證中包含的所有參與方的VES簽名是否正確,如果正確則繼續(xù)執(zhí)行協(xié)議,否則退出。TTP驗(yàn)證VES簽名時(shí)需要的哈希運(yùn)算按照各個(gè)簽名人類似的過(guò)程完成。之后,TTP利用其存儲(chǔ)的VES私鑰,從Alice的VES簽名ΛAlice中解密獲得Alice的普通簽名δAlice,構(gòu)造D′A=(m0,m′A,δAlice,m″A),得到D′A的狀態(tài)量ψ′A=Hi(ζ).Hu(D′A),然后比較ψ′A與mA中的ψA是否一致,驗(yàn)證ψA的正確性。以此類推,驗(yàn)證ψB和ψC的正確性。如果全部是正確的,TTP指示Alice,可以繼續(xù)執(zhí)行協(xié)議,即向第一個(gè)參與方發(fā)送一個(gè)協(xié)議執(zhí)行消息。TTP獲得之后,TTP存儲(chǔ)接收到的腳本到數(shù)據(jù)庫(kù)中。
步驟S1105:Alice發(fā)送自己的數(shù)字簽名結(jié)果δAlice給Bob。
步驟S1106:Bob驗(yàn)證δAlice,驗(yàn)證通過(guò)后發(fā)送之前的各參與方的數(shù)字簽名結(jié)果δAlice、以及自己的數(shù)字簽名結(jié)果δBob給Charlie,否則要求仲裁。
步驟S1107:Charlie驗(yàn)證之前的各參與方的數(shù)字簽名δAlice、δBob,驗(yàn)證通過(guò)后合成最終合同,并返回最終合同給上一個(gè)參與者Bob,否則要求仲裁。
步驟S1108:Bob接收Charlie返回的最終合同后,驗(yàn)證最終合同,驗(yàn)證通過(guò)后轉(zhuǎn)發(fā)給上一個(gè)參與者Alice,否則要求仲裁。
步驟S1109:Alice接收Bob返回最終合同,并驗(yàn)證最終合同,如果驗(yàn)證出錯(cuò)則要求仲裁。
如上所述,在上述具體示例的執(zhí)行過(guò)程中,任何參與方在任何時(shí)刻都可以要求仲裁。在一個(gè)應(yīng)用示例中,仲裁協(xié)議可以做如下設(shè)定。
假設(shè)參與方X要求進(jìn)行仲裁,在需要進(jìn)行仲裁時(shí),參與方X向TTP提交原始合同文本m0請(qǐng)求仲裁??尚诺谌絋TP檢查數(shù)據(jù)庫(kù)中的條目,如果確實(shí)存在m0,就從各條消息的VES簽名中恢復(fù)普通簽名,聯(lián)系所有參與人,向所有參與人發(fā)送含有各方簽名的最終PDF文檔。
另一方面,可信第三方TTP可以設(shè)定一個(gè)合同簽訂的最長(zhǎng)期限,例如一個(gè)月,并在數(shù)據(jù)庫(kù)中保存該合同對(duì)應(yīng)的通信腳本。當(dāng)該通信腳本超過(guò)期限時(shí),可信第三方可以自動(dòng)刪除腳本,以避免數(shù)據(jù)庫(kù)的無(wú)限增長(zhǎng)。
基于本具體示例中的基于“在線”TTP的多方公平合同簽署協(xié)議,較好地平衡了效率和公平性,即便在參與方大于三的情況下,即便是參與方的數(shù)量比較大,也可以對(duì)上述協(xié)議執(zhí)行過(guò)程進(jìn)行平凡的擴(kuò)展。
在一個(gè)具體應(yīng)用示例中,各參與方發(fā)送給可信第三方TTP的消息中也可以包含原文m0,而是包含原文m0對(duì)應(yīng)的狀態(tài)量ψ0。此時(shí),可信第三方TTP以及其他參與方均需要利用狀態(tài)量ψ0來(lái)計(jì)算摘要信息。當(dāng)某個(gè)參與方要求仲裁,該參與方應(yīng)該向TTP提交與原文對(duì)應(yīng)的狀態(tài)量ψ0。
在該具體示例的另一個(gè)應(yīng)用方式中,在上述步驟S1104之后,可信第三方TTP可以恢復(fù)所有參與方的VES簽名,構(gòu)造出完整的包含所有參與方簽名的文檔,并發(fā)送給所有參與方。從而可以避免所有參與方執(zhí)行第二輪交互,進(jìn)一步提高協(xié)議執(zhí)行的效率。
在該具體示例的另一個(gè)應(yīng)用方式中,當(dāng)允許廣播信道時(shí),各個(gè)參與方也可以只需要廣播一次消息,等待可信第三方TTP的信號(hào),在接收到可信第三方TTP的信號(hào)時(shí),各自再?gòu)V播一次自己的真實(shí)簽名值,然后由可信第三方可以合成最終的合同文本,以進(jìn)一步提升執(zhí)行效率。
在另一個(gè)應(yīng)用示例中,也可以是在業(yè)務(wù)場(chǎng)景中不需要獲得包含簽名原文δX(譬如采用自定義PDF閱讀器來(lái)驗(yàn)證VES簽名的有效性,而不需要獲得標(biāo)準(zhǔn)格式的PDF文檔),可信第三方TTP可以僅在某個(gè)參與方發(fā)起仲裁流程時(shí)恢復(fù)簽名原文δX,而在執(zhí)行公平合同簽署的階段則不允許使用恢復(fù)簽名原文的私鑰。在此情況下,可信第三方TTP可以實(shí)施更嚴(yán)格的權(quán)限控制措施,限制恢復(fù)簽名原文的私鑰只能在仲裁流程中被使用,進(jìn)一步規(guī)避來(lái)自內(nèi)部管理人員的攻擊。
基于如上所述的各具體示例中的確定消息的數(shù)據(jù)摘要的方案、基于多方簽名的數(shù)字簽名的方案,以及在此基礎(chǔ)上的電子合同公平簽署的方案,通過(guò)參與方或者TTP來(lái)計(jì)算電子合同文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量ψ,并將其共享給其它參與方或者TTP,使得各參與方或者TTP可以構(gòu)造出虛擬文件,并借助哈希函數(shù)狀態(tài)量ψ來(lái)計(jì)算待簽名文件的摘要信息,從而完成順序簽名的過(guò)程?;谏鲜龇植际接?jì)算哈希函數(shù)的機(jī)制,可以實(shí)現(xiàn)由TTP存儲(chǔ)參與方的數(shù)字簽名,而不發(fā)送給后續(xù)參與方,實(shí)現(xiàn)電子合同公平簽署的目標(biāo)。也可以由各參與方之間使用VES簽名完成公平簽署,而各參與方在沒(méi)有獲得其它參與方數(shù)字簽名原文的條件下可以完成自己的簽名過(guò)程,達(dá)到電子合同公平簽署的目標(biāo)?;谏鲜龇植际接?jì)算哈希函數(shù)的機(jī)制,還可以實(shí)現(xiàn)將電子合同原始數(shù)據(jù)加密,TTP在不知道電子合同原始數(shù)據(jù)的條件下,可以協(xié)助各參與方完成電子合同公平簽署,從而保證了電子合同文件的隱私性。所有上述電子合同加密及公平簽署的流程,都可以確保所產(chǎn)生的電子合同文件符合PDF文檔對(duì)于多方數(shù)字簽名的格式要求。
基于與上述方法相同的思想,本發(fā)明實(shí)施例還提供確定消息的數(shù)據(jù)摘要的系統(tǒng)、基于多方簽名的數(shù)字簽名系統(tǒng),根據(jù)基于多方簽名的數(shù)字簽名系統(tǒng),從而實(shí)現(xiàn)基于多方簽名的電子合同公平簽署。
圖12示出了一個(gè)實(shí)施例中的確定消息的數(shù)據(jù)摘要的系統(tǒng)的結(jié)構(gòu)示意圖。如圖12所示,該實(shí)施例中的確定消息的數(shù)據(jù)摘要的系統(tǒng)包括:
信息獲取模塊121,用于獲取待處理消息以及哈希函數(shù)的狀態(tài)量;
第一初始化模塊122,用于根據(jù)所述哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的初始化算法進(jìn)行初始化操作,初始化哈希函數(shù)運(yùn)算的上下文;
狀態(tài)量輸出模塊123,用于將哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出;
結(jié)束處理模塊124,用于采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待處理消息的摘要信息。
基于如上所述的實(shí)施例的方案,其通過(guò)在確定消息的數(shù)據(jù)摘要時(shí),在獲得哈希函數(shù)運(yùn)算的上下文后,將哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出,從而在電子合同簽署過(guò)程中進(jìn)行數(shù)字簽名時(shí),通過(guò)確定出簽署的電子合同文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,可以基于該哈希函數(shù)狀態(tài)量計(jì)算出計(jì)算出待簽署文件的數(shù)據(jù)摘要,且該哈希函數(shù)狀態(tài)量還可以共享給其它參與方或者可信第三方,使得其他參與方或者可信第三方可以基于該哈希函數(shù)狀態(tài)量構(gòu)造出虛擬文件,從而完成順序簽名的過(guò)程,且可以滿足最終產(chǎn)生的電子合同文件符合PDF文檔對(duì)于多方數(shù)字簽名的格式要求。
其中,上述哈希函數(shù)的狀態(tài)量可以包括:哈希運(yùn)算的寄存器組的信息,以及最后一個(gè)尚未使用的輸入數(shù)據(jù)分塊的信息。
在一個(gè)具體示例中,如圖12所示,該實(shí)施例中的系統(tǒng)還可以包括:
消息更新模塊1223,用于基于哈希函數(shù)的狀態(tài)量,采用哈希函數(shù)的消息更新算法對(duì)待處理消息進(jìn)行消息更新操作,獲得更新后的哈希函數(shù)運(yùn)算的上下文。
此時(shí),上述狀態(tài)量輸出模塊123,是將更新后的哈希函數(shù)運(yùn)算的上下文作為哈希函數(shù)狀態(tài)量進(jìn)行輸出。
在一個(gè)具體示例中,消息更新模塊1223可以采用哈希函數(shù)的消息更新算法,對(duì)所述待處理消息的至少一個(gè)數(shù)據(jù)片段執(zhí)行所述消息更新操作。
如上所述的確定消息的數(shù)據(jù)摘要的系統(tǒng),可以應(yīng)用于基于多方簽名的數(shù)字簽名的系統(tǒng),以在計(jì)算消息的數(shù)據(jù)摘要的過(guò)程中輸出哈希函數(shù)的狀態(tài)量,進(jìn)而基于輸出的哈希函數(shù)狀態(tài)量進(jìn)行數(shù)字簽名,進(jìn)而基于多方簽名進(jìn)行多方電子合同的簽署。
圖13示出了一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖,該實(shí)施例中是以參與方應(yīng)用的系統(tǒng)為例進(jìn)行說(shuō)明。如圖13所示,該實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)包括;
文件獲取模塊131,用于獲取或者構(gòu)造待簽署文件;
第一狀態(tài)量確定模塊132,用于確定與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量;
第二初始化模塊133,用于根據(jù)所述哈希函數(shù)狀態(tài)量,初始化哈希函數(shù)運(yùn)算的上下文;
摘要確定模塊134,用于采用哈希函數(shù)的結(jié)束算法執(zhí)行哈希函數(shù)的結(jié)束操作,獲得所述待簽署文件的數(shù)據(jù)摘要;
數(shù)字簽名模塊135,用于根據(jù)所述待簽署文件的數(shù)據(jù)摘要執(zhí)行數(shù)字簽名操作,獲得數(shù)字簽名結(jié)果。
上述實(shí)施例方案中獲得的哈希函數(shù)狀態(tài)量,可以基于文檔或者消息傳遞的方式傳遞給其他參與方,以完成信息的傳遞,進(jìn)而據(jù)此完成基于多方簽名的電子合同的簽署。
在一個(gè)應(yīng)用示例中,在上述當(dāng)前參與方為第一個(gè)參與方時(shí),此時(shí),上述待簽署文件可以為原始待簽署文件數(shù)據(jù)。此時(shí),第一狀態(tài)量確定模塊132確定的與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,可以是根據(jù)原始待簽署文件數(shù)據(jù)計(jì)算獲得的與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的哈希函數(shù)狀態(tài)量(為便于與有當(dāng)前參與方的添加數(shù)據(jù)的文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量進(jìn)行區(qū)分,下述各實(shí)施例中稱為第一哈希函數(shù)狀態(tài)量)。此時(shí),與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量為該第一哈希函數(shù)狀態(tài)量。即,第一狀態(tài)量確定模塊132根據(jù)所述原始待簽署文件數(shù)據(jù)計(jì)算獲得與所述原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量;與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量為該第一哈希函數(shù)狀態(tài)量。
在一個(gè)具體應(yīng)用示例中,如圖13所示,該基于多方簽名的簽名系統(tǒng)還可以包括:添加數(shù)據(jù)獲取模塊1311,用于獲取當(dāng)前參與方對(duì)所述待簽署文件的添加數(shù)據(jù)。
此時(shí),上述待簽署文件包括添加數(shù)據(jù)獲取模塊1311獲取的所述添加數(shù)據(jù)。在當(dāng)前參與方為第一個(gè)參與方時(shí),上述待簽署文件包括原始待簽署文件數(shù)據(jù)以及所述添加數(shù)據(jù)。
在此情況下,上述第一狀態(tài)量確定模塊132確定的哈希函數(shù)狀態(tài)量為對(duì)包括所述添加數(shù)據(jù)的所述待簽署文件計(jì)算獲得的哈希函數(shù)狀態(tài)量。
其中,在當(dāng)前參與方為第一個(gè)參與方時(shí),第一狀態(tài)量確定模塊132,計(jì)算獲得與所述原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量;根據(jù)所述第一哈希函數(shù)狀態(tài)量、所述添加數(shù)據(jù)確定第二哈希函數(shù)狀態(tài)量。此時(shí),上述與待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量為所述第二哈希函數(shù)狀態(tài)量,上述第二初始化模塊133可以是根據(jù)所述第二哈希函數(shù)狀態(tài)量,初始化哈希函數(shù)運(yùn)算的上下文。
其中,基于上述哈希函數(shù)狀態(tài)量確定獲得待簽署文件的數(shù)據(jù)摘要、獲得數(shù)字簽名結(jié)果之后,相關(guān)的哈希函數(shù)狀態(tài)量或者基于哈希函數(shù)狀態(tài)量的相關(guān)信息,可以基于可信第三方TTP傳遞給下一個(gè)參與者,也可以直接傳遞給下一個(gè)參與者。在傳遞過(guò)程中,還可以結(jié)合不同的方式,例如各參與方的共享密鑰的加密、VES簽名進(jìn)行。以下結(jié)合其中幾個(gè)具體示例進(jìn)行舉例說(shuō)明。
圖14是一個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。該具體示例中是以參與方使用的系統(tǒng)(或者說(shuō)應(yīng)用、設(shè)置在參與方的系統(tǒng))為例進(jìn)行說(shuō)明,且是各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方。
如圖14所示,在圖13所示系統(tǒng)的基礎(chǔ)上,該示例中的系統(tǒng)還可以包括;
文檔生成模塊141,用于在所述當(dāng)前參與方為第一個(gè)參與方時(shí),將所述數(shù)字簽名結(jié)果添加到所述待簽署文件中獲得當(dāng)前參與方數(shù)字簽名后文檔,并將所述當(dāng)前參與方數(shù)字簽名后文檔向可信第三方發(fā)送。
在一個(gè)應(yīng)用示例中,如圖14所示,該具體示例中的系統(tǒng)還可以包括:
第一消息發(fā)送模塊142,用于在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),向所述可信第三方發(fā)送第二上行消息,所述第二上行消息包括所述數(shù)字簽名結(jié)果,或者,所述第二上行消息包括所述數(shù)字簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,如圖14所示,該具體示例中的系統(tǒng)還可以包括:
第一文檔接收模塊143,用于接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的最終簽名合成文檔。
在一個(gè)應(yīng)用示例中,如圖14所示,該具體示例中的系統(tǒng)還可以包括:
第一消息接收模塊144,用于接收可信第三方TTP發(fā)送的下行消息,在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),所述下行消息包括所述哈希函數(shù)狀態(tài)量,或者,所述下行消息包括所述哈希函數(shù)狀態(tài)量、以及之前各參與方對(duì)所述待簽署文件的添加數(shù)據(jù),所述哈希函數(shù)狀態(tài)量為與上一個(gè)參與方簽名后的待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,之前的各參與方包括所述前一個(gè)參與方。
此時(shí),上述文件獲取模塊131,可以是根據(jù)所述下行消息構(gòu)造所述待簽署文件,此時(shí),所述待簽署文件為虛擬文件。
圖15示出了第二個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。該具體示例中是以參與方使用的系統(tǒng)(或者說(shuō)應(yīng)用、設(shè)置在參與方的系統(tǒng))為例進(jìn)行說(shuō)明,且是各參與方將基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給可信第三方后,由可信第三方TTP傳遞給下一個(gè)參與方,且基于各參與方的共享密鑰對(duì)原始待簽署文件數(shù)據(jù)進(jìn)行加密。
如圖15所示,在圖13所示的系統(tǒng)的基礎(chǔ)上,該示例中的系統(tǒng)還可以包括;
共享密鑰加密模塊151,用于在所述當(dāng)前參與方是第一個(gè)參與方時(shí),采用各參與方協(xié)商的共享密鑰對(duì)所述待簽署文件進(jìn)行加密,獲得加密后待簽署文件;
第一消息發(fā)送模塊152,用于在所述當(dāng)前參與方是第一個(gè)參與方時(shí),向可信第三方發(fā)送第一上行消息,第一上行消息包括所述加密后待簽署文件、所述第一哈希函數(shù)狀態(tài)量、以及所述數(shù)字簽名結(jié)果,或者,第一上行消息包括所述加密后待簽署文件、所述第一哈希函數(shù)狀態(tài)量、所述數(shù)字簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
此時(shí),在當(dāng)前參與方是第一個(gè)參與方時(shí),上述第一狀態(tài)量確定模塊132,是計(jì)算獲得與所述原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量;根據(jù)所述第一哈希函數(shù)狀態(tài)量、所述添加數(shù)據(jù)確定第二哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,如圖15所示,該具體示例中的系統(tǒng)還可以包括:
第二文檔接收模塊153,用于接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的初始簽名合成文檔,所述初始簽名合成文檔為所述可信第三方基于對(duì)各參與方的數(shù)字簽名結(jié)果確定的合成文檔;
第一最終文檔合成模塊154,用于根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
在一個(gè)應(yīng)用示例中,如圖15所示,該具體示例中的系統(tǒng)還可以包括:
第一消息接收模塊155,用于接收可信第三方發(fā)送的下行消息,在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),所述下行消息包括所述哈希函數(shù)狀態(tài)量、以及第一哈希函數(shù)狀態(tài)量,或者,所述下行消息包括所述哈希函數(shù)狀態(tài)量、第一哈希函數(shù)狀態(tài)量以及之前各參與方對(duì)所述待簽署文件的添加數(shù)據(jù),所述哈希函數(shù)狀態(tài)量為與前一個(gè)參與方簽署過(guò)的文件對(duì)應(yīng)的哈希函數(shù)的狀態(tài)量,所述第一哈希函數(shù)狀態(tài)量為與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的哈希函數(shù)的狀態(tài)量,之前的各參與方包括所述前一個(gè)參與方。
在此情況下,如圖15所示,該具體示例中的系統(tǒng)還可以包括:
狀態(tài)量驗(yàn)證模塊156,用于根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù),對(duì)所述下行消息中的所述第一哈希函數(shù)狀態(tài)量進(jìn)行驗(yàn)證。
圖16示出了第三個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。該具體示例中是以參與方使用的系統(tǒng)(或者說(shuō)應(yīng)用、設(shè)置在參與方的系統(tǒng))為例進(jìn)行說(shuō)明,在信息傳遞過(guò)程中進(jìn)行了VES簽名以提升安全性。
如圖16所示,在圖13所示的系統(tǒng)的基礎(chǔ)上,該示例中的系統(tǒng)還可以包括;
VES簽名模塊161,用于對(duì)所述數(shù)字簽名結(jié)果進(jìn)行VES簽名處理,獲得VES簽名結(jié)果。
在一個(gè)應(yīng)用示例中,如圖16所示,該具體示例中的系統(tǒng)還可以包括第一消息發(fā)送模塊162。
其中,在當(dāng)前參與方是第一個(gè)參與方時(shí),上述第一消息發(fā)送模塊162,用于向可信第三方發(fā)送第一上行消息,該第一上行消息包括所述VES簽名結(jié)果、以及原始待簽署文件數(shù)據(jù)。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第一上行消息包括所述VES簽名結(jié)果、原始待簽署文件數(shù)據(jù)以及當(dāng)前參與方的添加數(shù)據(jù)。
另一方面,在當(dāng)前參與方不是第一個(gè)參與方時(shí),上述第一消息發(fā)送模塊162,用于向可信第三方發(fā)送第二上行消息,該第二上行消息包括所述VES簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第二上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第二上行消息包括所述VES簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,如圖16所示,該具體示例中的系統(tǒng)還可以包括:
第一文檔接收模塊163,用于接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的最終簽名合成文檔。
在一個(gè)應(yīng)用示例中,如圖16所示,該具體示例中的系統(tǒng)還可以包括:
第一消息接收模塊164,用于接收可信第三方發(fā)送的下行消息,在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),所述下行消息包括所述哈希函數(shù)狀態(tài)量,或者,所述下行消息包括所述哈希函數(shù)狀態(tài)量、以及之前各參與方對(duì)所述待簽署文件的添加數(shù)據(jù),所述哈希函數(shù)狀態(tài)量為與上一個(gè)參與方簽名后的待簽署文件對(duì)應(yīng)的哈希函數(shù)狀態(tài)量,之前的各參與方包括所述前一個(gè)參與方。
此時(shí),上述文件獲取模塊131,可以是根據(jù)所述下行消息在概念上構(gòu)造所述待簽署文件,所述待簽署文件為虛擬文件。
圖17示出了第四個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。該具體示例中是以參與方使用的系統(tǒng)(或者說(shuō)應(yīng)用、設(shè)置在參與方的系統(tǒng))為例進(jìn)行說(shuō)明,基于各參與方的共享密鑰對(duì)原始待簽署文件數(shù)據(jù)進(jìn)行加密,在信息傳遞過(guò)程中進(jìn)行了VES簽名以提升安全性。
如圖17所示,在圖13所示的系統(tǒng)的基礎(chǔ)上,該示例中的系統(tǒng)還可以包括;
VES簽名模塊171,用于在所述當(dāng)前參與方是第一個(gè)參與方時(shí),對(duì)所述數(shù)字簽名結(jié)果進(jìn)行VES簽名處理,獲得VES簽名結(jié)果;
共享密鑰加密模塊172,用于在所述當(dāng)前參與方是第一個(gè)參與方時(shí),采用各參與方協(xié)商的共享密鑰對(duì)所述待簽署文件進(jìn)行加密,獲得加密后待簽署文件。
一個(gè)應(yīng)用示例中,如圖17所示,該具體示例中的系統(tǒng)還可以包括第一消息發(fā)送模塊173。
其中,在所述當(dāng)前參與方是第一個(gè)參與方時(shí),該第一消息發(fā)送模塊173,用于向可信第三方發(fā)送第一上行消息,第一上行消息包括所述加密后待簽署文件、所述第一哈希函數(shù)狀態(tài)量、以及所述VES簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第一上行消息包括所述加密后待簽署文件、所述第一哈希函數(shù)狀態(tài)量、所述VES簽名結(jié)果以及當(dāng)前參與方的添加數(shù)據(jù)。
其中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),該第一消息發(fā)送模塊173,用于向可信第三方發(fā)送第二上行消息,第二上行消息包括所述VES簽名結(jié)果。在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該第二上行消息還可以包括當(dāng)前參與方的添加數(shù)據(jù),即第二上行消息包括所述VES簽名結(jié)果、以及當(dāng)前參與方的添加數(shù)據(jù)。
一個(gè)應(yīng)用示例中,如圖17所示,該具體示例中的系統(tǒng)還可以包括:
第二文檔接收模塊174,用于接收可信第三方在對(duì)最后一個(gè)參與方驗(yàn)證通過(guò)后發(fā)送的初始簽名合成文檔,所述初始簽名合成文檔為所述可信第三方基于對(duì)各參與方的數(shù)字簽名結(jié)果確定的合成文檔;
第一最終文檔合成模塊175,用于根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
一個(gè)應(yīng)用示例中,如圖17所示,該具體示例中的系統(tǒng)還可以包括:
第一消息接收模塊176,用于接收可信第三方發(fā)送的下行消息,在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),所述下行消息包括所述哈希函數(shù)狀態(tài)量、以及第一哈希函數(shù)狀態(tài)量,或者,所述下行消息包括所述哈希函數(shù)狀態(tài)量、第一哈希函數(shù)狀態(tài)量以及之前各參與方對(duì)所述待簽署文件的添加數(shù)據(jù),所述哈希函數(shù)狀態(tài)量為與前一個(gè)參與方簽署過(guò)的文件對(duì)應(yīng)的哈希函數(shù)的狀態(tài)量,所述第一哈希函數(shù)狀態(tài)量為與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的哈希函數(shù)的狀態(tài)量,之前的各參與方包括所述前一個(gè)參與方。
在此情況下,如圖17所示,該示例中的系統(tǒng)還可以包括:
狀態(tài)量驗(yàn)證模塊177,用于根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù),對(duì)所述下行消息中的所述第一哈希函數(shù)狀態(tài)量進(jìn)行驗(yàn)證。
圖18示出了第五個(gè)具體示例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖。該具體示例中是以參與方使用的系統(tǒng)(或者說(shuō)應(yīng)用、設(shè)置在參與方的系統(tǒng))為例進(jìn)行說(shuō)明,且是各參與方直接基于哈希函數(shù)狀態(tài)量的相關(guān)信息傳遞給下一個(gè)參與方后,可信第三方TTP只需接收最后一個(gè)參與方發(fā)送的消息進(jìn)行驗(yàn)證處理。
如圖18所示,在圖13所示的系統(tǒng)的基礎(chǔ)上,該示例中的系統(tǒng)還可以包括;
文檔生成模塊181,用于將所述數(shù)字簽名結(jié)果添加到所述待簽署文件中獲得當(dāng)前參與方數(shù)字簽名后文檔。
文檔狀態(tài)量確定模塊182,用于確定當(dāng)前參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量。
VES簽名模塊183,用于對(duì)所述數(shù)字簽名結(jié)果進(jìn)行VES簽名處理,獲得VES簽名結(jié)果。
消息構(gòu)造模塊184,用于基于所述當(dāng)前參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、所述VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù)構(gòu)造當(dāng)前參與方簽名消息;在一個(gè)具體應(yīng)用中,在當(dāng)前參與方添加了數(shù)據(jù)的情況下,該當(dāng)前參與方簽名消息還可以包括當(dāng)前參與方的添加數(shù)據(jù)。
消息簽名計(jì)算模塊185,用于計(jì)算所述當(dāng)前參與方簽名消息的消息簽名。
簽名消息對(duì)發(fā)送模塊186,用于向下一個(gè)參與方發(fā)送簽名消息對(duì),所述簽名消息對(duì)包括所述當(dāng)前參與方的第一簽名消息對(duì),所述第一簽名消息對(duì)包括當(dāng)前參與方簽名消息、當(dāng)前參與方簽名消息的消息簽名。其中,在當(dāng)前參與方不是第一個(gè)參與方時(shí),上述簽名消息對(duì)還可以包括之前各參與方的簽名消息對(duì)。
一個(gè)應(yīng)用示例中,如圖18所示,該具體示例中的系統(tǒng)還可以包括:
第一簽名消息對(duì)接收模塊187,用于接收上一個(gè)參與方發(fā)送的簽名消息對(duì),上一個(gè)參與方發(fā)送的簽名消息對(duì)包括:當(dāng)前參與方之前的各參與方的簽名消息對(duì),之前各參與方的簽名消息對(duì)包括之前各參與方的簽名消息、之前各參與方簽名消息的消息簽名,之前各參與方簽名消息包括之前各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、之前各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù)。在一個(gè)應(yīng)用示例中,在之前各參與方添加了數(shù)據(jù)的情況下,之前各參與方簽名消息還可以包括之前各參與方的添加數(shù)據(jù)。
在此基礎(chǔ)上,該具體示例中的系統(tǒng)還可以包括:
簽名驗(yàn)證模塊188,用于在第一簽名消息對(duì)接收模塊接收上一個(gè)參與方發(fā)送的簽名消息對(duì)之后,驗(yàn)證上一個(gè)參與方發(fā)送的簽名消息對(duì)中包含的之前各參與方的消息簽名和VES簽名結(jié)果。
一個(gè)應(yīng)用示例中,如圖18所示,該具體示例中的系統(tǒng)還可以包括:
第一消息接收模塊189,用于在所述當(dāng)前參與方是第一個(gè)參與方時(shí),接收可信第三方在接收到最后一個(gè)參與方發(fā)送的消息簽名對(duì)后返回的協(xié)議執(zhí)行消息;根據(jù)所述協(xié)議執(zhí)行消息向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果。
一個(gè)應(yīng)用示例中,如圖18所示,該具體示例中的系統(tǒng)還可以包括:
數(shù)字簽名接收驗(yàn)證模塊1810,用于在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),接收上一個(gè)參與方發(fā)送的之前各參與方的數(shù)字簽名結(jié)果;在對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果。
一個(gè)應(yīng)用示例中,如圖18所示,該具體示例中的系統(tǒng)還可以包括:
第二最終文檔合成模塊1811,用于在所述當(dāng)前參與方是最后一個(gè)參與方時(shí),在對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔發(fā)送給上一個(gè)參與方。
一個(gè)應(yīng)用示例中,如圖18所示,該具體示例中的系統(tǒng)還可以包括:
最終文檔返回模塊1812,用于在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),接收下一個(gè)參與方發(fā)送的最終簽名合成文檔;并在所述當(dāng)前參與方不是第一個(gè)參與方時(shí),將該最終簽名合成文檔向上一個(gè)參與方發(fā)送。
圖19中示出了另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖,該實(shí)施例中是以可信第三方TTP應(yīng)用的系統(tǒng),或者說(shuō)系統(tǒng)應(yīng)用或設(shè)置在可信第三方TTP為例進(jìn)行說(shuō)明,且各參與方是將自己的數(shù)字簽名結(jié)果發(fā)送給可信第三方TTP。
如圖19所示,該實(shí)施例中的基于多方簽名的簽名系統(tǒng)包括:
第二消息接收模塊191,用于接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的數(shù)字簽名結(jié)果;
第二文檔合成模塊192,用于根據(jù)所述第二上行消息合成上一個(gè)參與方數(shù)字簽名后的文檔;
第二狀態(tài)量確定模塊193,用于驗(yàn)證該上一個(gè)參與方的數(shù)字簽名后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
第二消息發(fā)送模塊194,用于向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)具體應(yīng)用示例中,上述第二消息接收模塊192,還用于接收第一個(gè)參與方發(fā)送的第一個(gè)參與方數(shù)字簽名后的文檔,所述第一個(gè)參與方數(shù)字簽名后的文檔包括原始待簽署文件數(shù)據(jù)、第一個(gè)參與方的數(shù)字簽名。
在一個(gè)具體應(yīng)用示例中,上述第二狀態(tài)量確定模塊193,還用于驗(yàn)證所述第一個(gè)參與方數(shù)字簽名后的文檔中所述第一個(gè)參與方的數(shù)字簽名后,計(jì)算所述第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)具體應(yīng)用示例中,上述第二消息發(fā)送模塊194,還用于向下一個(gè)參與方發(fā)送下行消息,該下行消息包括所述第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)具體應(yīng)用示例中,上述第二消息接收模塊191,還用于接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:第一個(gè)參與方采用各參與方協(xié)商的共享密鑰對(duì)待簽署文件進(jìn)行加密后獲得的加密后待簽署文件、與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量、以及第一個(gè)參與方的數(shù)字簽名結(jié)果。
在此基礎(chǔ)上,在一個(gè)應(yīng)用示例中,上述第二文檔合成模塊192,還用于根據(jù)所述第一上行消息在概念上合成該第一個(gè)參與方數(shù)字簽名后的文檔。
此時(shí),上述第二狀態(tài)量確定模塊193,還用于驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在此基礎(chǔ)上,上述第二消息發(fā)送模塊194,還用于向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量、以及所述第一哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,如圖19所示,該具體示例中的系統(tǒng)還可以包括:
第三最終文檔合成模塊195,用于在所述上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)所述第二上行消息合成最終簽名合成文檔;并在驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,將所述最終簽名合成文檔向各參與方發(fā)送。
在一個(gè)應(yīng)用示例中,如圖19所示,該具體示例中的系統(tǒng)還可以包括:
初始文檔合成模塊196,用于在所述上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)所述第二上行消息在概念上合成上一個(gè)參與方數(shù)字簽名后的文檔,根據(jù)上一個(gè)參與方數(shù)字簽名后的文檔驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,根據(jù)各參與方的數(shù)字簽名結(jié)果合成初始簽名合成文檔,并將該初始簽名合成文檔向各參與方發(fā)送,由各參與方根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
圖20中示出了另一個(gè)實(shí)施例中的基于多方簽名的數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖,該實(shí)施例中是以可信第三方TTP應(yīng)用的系統(tǒng),或者說(shuō)系統(tǒng)應(yīng)用或設(shè)置在可信第三方TTP為例進(jìn)行說(shuō)明,且各參與方進(jìn)行了VES簽名。
如圖20所示,該實(shí)施例中的基于多方簽名的簽名系統(tǒng)包括:
第二消息接收模塊201,用于接收上一個(gè)參與方發(fā)送的第二上行消息,所述第二上行消息包括上一個(gè)參與方的VES簽名結(jié)果;在上一個(gè)參與方添加了數(shù)據(jù)的情況下,該第二上行消息還可以包括上一個(gè)參與方的添加數(shù)據(jù);
VES解密模塊202,用于對(duì)上一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得上一個(gè)參與方的數(shù)字簽名結(jié)果;
第二狀態(tài)量確定模塊203,用于驗(yàn)證該上一個(gè)參與方的數(shù)字簽名結(jié)果后,計(jì)算該上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
第二消息發(fā)送模塊204,用于向下一個(gè)參與方發(fā)送下行消息,所述下行消息包括上一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量,其中,在之前各參與方添加了數(shù)據(jù)的情況下,該下行消息還可以包括之前各參與方的添加數(shù)據(jù)。
在一個(gè)應(yīng)用示例中,上述第二消息接收模塊201,還用于接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:原始待簽署文件數(shù)據(jù)、以及第一個(gè)參與方的VES簽名結(jié)果。在該第一個(gè)參與方添加了數(shù)據(jù)的情況下,該第一上行消息還可以包括第一個(gè)參與方的添加數(shù)據(jù)。
此時(shí),上述VES解密模塊202,還用于對(duì)第一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得第一個(gè)參與方的數(shù)字簽名結(jié)果。在該第一個(gè)參與方添加了數(shù)據(jù)的情況下,第一個(gè)參與方數(shù)字簽名后的文檔還可以包括第一個(gè)參與方的添加數(shù)據(jù)
一個(gè)應(yīng)用示例中,如圖20所示,該具體示例中的系統(tǒng)還可以包括;
第二文檔合成模塊205,用于根據(jù)原始待簽署文件數(shù)據(jù)、第一個(gè)參與方的數(shù)字簽名結(jié)果合成該第一個(gè)參與方數(shù)字簽名后的文檔。
在此情況下,上述第二狀態(tài)量確定模塊203,還用于驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
此時(shí),上述第二消息發(fā)送模塊204,還用于向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量。
在一個(gè)應(yīng)用示例中,上述第二消息接收模塊201,還用于接收第一個(gè)參與方發(fā)送的第一上行消息,該第一上行消息包括:第一個(gè)參與方采用各參與方協(xié)商的共享密鑰對(duì)待簽署文件進(jìn)行加密后獲得的加密后待簽署文件、與原始待簽署文件數(shù)據(jù)對(duì)應(yīng)的第一哈希函數(shù)狀態(tài)量、以及第一個(gè)參與方的VES簽名結(jié)果。
此時(shí),上述VES解密模塊202,還用于對(duì)第一個(gè)參與方的VES簽名結(jié)果進(jìn)行解密獲得第一個(gè)參與方的數(shù)字簽名結(jié)果。
此時(shí),上述第二文檔合成模塊205,還用于根據(jù)第一個(gè)參與方的數(shù)字簽名結(jié)果在概念上合成該第一個(gè)參與方數(shù)字簽名后的文檔;
上述第二狀態(tài)量確定模塊203,還用于驗(yàn)證該第一個(gè)參與方的數(shù)字簽名后,計(jì)算該第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量;
上述第二消息發(fā)送模塊204,還用于向下一個(gè)參與方發(fā)送下行消息,該下行消息包括:第一個(gè)參與方數(shù)字簽名后的文檔的哈希函數(shù)狀態(tài)量、以及所述第一哈希函數(shù)狀態(tài)量所述哈希函數(shù)狀態(tài)量。
一個(gè)應(yīng)用示例中,如圖20所示,該具體示例中的系統(tǒng)還可以包括:
第三最終文檔合成模塊206,用于在所述上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)所述第二上行消息合成最終簽名合成文檔;并在驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,將所述最終簽名合成文檔向各參與方發(fā)送。
一個(gè)應(yīng)用示例中,如圖20所示,該具體示例中的系統(tǒng)還可以包括:
初始文檔合成模塊207,用于在所述上一個(gè)參與方為最后一個(gè)參與方時(shí),根據(jù)所述第二上行消息在概念上合成上一個(gè)參與方數(shù)字簽名后的文檔,根據(jù)上一個(gè)參與方數(shù)字簽名后的文檔驗(yàn)證所述最后一個(gè)參與方的數(shù)字簽名驗(yàn)證通過(guò)后,根據(jù)各參與方的數(shù)字簽名結(jié)果合成初始簽名合成文檔,并將該初始簽名合成文檔向各參與方發(fā)送,由各參與方根據(jù)自身存儲(chǔ)的原始待簽署文件數(shù)據(jù)、所述初始簽名合成文檔合成最終簽名合成文檔。
圖21示出了另一個(gè)實(shí)施例中的基于多方簽名的簽名系統(tǒng)的結(jié)構(gòu)示意圖,該實(shí)施例中是以可信第三方TTP應(yīng)用的系統(tǒng),或者說(shuō)系統(tǒng)應(yīng)用或設(shè)置在可信第三方TTP為例進(jìn)行說(shuō)明,且在電子合同簽署過(guò)程中可信第三方只與最后一個(gè)參與方交互。
如圖21所示,該實(shí)施例中的系統(tǒng)包括:
第二簽名消息對(duì)接收模塊211,用于接收最后一個(gè)參與者發(fā)送的簽名消息對(duì),簽名消息對(duì)包括各參與方簽名消息、各參與方簽名消息的消息簽名,各參與方簽名消息包括各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量、各參與方的VES簽名結(jié)果以及原始待簽署文件數(shù)據(jù);
簽名消息對(duì)驗(yàn)證模塊212,用于對(duì)各參與方的VES簽名結(jié)果進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果確定各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量的正確性;
執(zhí)行消息發(fā)送模塊213,用于在各參與方數(shù)字簽名后文檔的哈希函數(shù)狀態(tài)量驗(yàn)證通過(guò)時(shí),向第一個(gè)參與方發(fā)送協(xié)議執(zhí)行消息,由所述第一個(gè)參與方向下一個(gè)參與方發(fā)送該第一個(gè)參與方的所述數(shù)字簽名結(jié)果,并由各參與方接收到上一個(gè)參與方的數(shù)字簽名結(jié)果時(shí),對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,向下一個(gè)參與方發(fā)送當(dāng)前參與方的所述數(shù)字簽名結(jié)果,并由最后一個(gè)參與方對(duì)之前各參與方的數(shù)字簽名結(jié)果驗(yàn)證通過(guò)后,確定最終簽名合成文檔,并將該最終簽名合成文檔依序返回給之前各參與方。
可以理解的是,由于篇幅限制,上述系統(tǒng)的各實(shí)施例中未詳細(xì)描述的其他技術(shù)特征,可以與上述方法實(shí)施例中的相同。
本領(lǐng)域技術(shù)人員可理解,基于上述各應(yīng)用示例的說(shuō)明,可以采用任何可能的方式對(duì)其進(jìn)行組合,以得到合適的進(jìn)行數(shù)字簽名以及進(jìn)行電子文檔簽署的方案,以應(yīng)用到實(shí)際技術(shù)應(yīng)用中,因此,基于上述實(shí)施例以及下具體示例中方案,所能夠獲得的任何組合后的方案,均應(yīng)當(dāng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說(shuō)明書(shū)記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。