孫麗艷, 周 健, 楊 威
(1. 安徽財(cái)經(jīng)大學(xué) 管理科學(xué)與工程學(xué)院, 安徽 蚌埠 233041;2. 合肥工業(yè)大學(xué) 管理科學(xué)與工程學(xué)院, 安徽 合肥 230000; 3. 北京郵電大學(xué) 計(jì)算機(jī)學(xué)院, 北京 100083)
隨著電子貨幣、電子支付及電子合約的廣泛應(yīng)用[1-2],支撐上述運(yùn)用的密碼學(xué)原語得到廣泛研究,如零知識(shí)、盲簽名、安全多方計(jì)算、承諾協(xié)議等[3-4].承諾協(xié)議來源于1982年Blum提出的比特承諾協(xié)議[5],它不僅是安全協(xié)議的基礎(chǔ)內(nèi)容和模塊[6],而且為電子貨幣、電子支付、電子合約提供支撐,如電子投票、電子投標(biāo)、彩票銷售、電子支付和商業(yè)談判[7]等,因此承諾協(xié)議在電子金融中具有重要的研究意義及廣闊的應(yīng)用前景[8-10].
承諾協(xié)議中參與者包括承諾方Promisor和驗(yàn)收方Verifier,承諾者通過交互過程向驗(yàn)收者證明一個(gè)斷言,并且確保不向驗(yàn)證者泄露任何額外的信息[9].在承諾階段,承諾者發(fā)送給驗(yàn)收者一個(gè)證明,用來向接受者做出承諾,并且確保接受者得不到關(guān)于證明的任何信息;在打開階段,承諾者公開打開承諾的必要信息,驗(yàn)收者用打開承諾的信息打開承諾,并驗(yàn)證承諾的信息是否來自承諾者.協(xié)議必須滿足3個(gè)安全性質(zhì):隱藏性,驗(yàn)收者在承諾階段不能打開承諾者的證明,即使接受者非誠實(shí)也滿足該條件;綁定性,在承諾階段,驗(yàn)收者只能接受一個(gè)合法的承諾,并且承諾者不能在打開階段改變自己的承諾,沒有承諾者的幫助驗(yàn)收者打開證明是一個(gè)困難問題;正確性,承諾者和驗(yàn)收者都誠實(shí)遵守協(xié)議的情況下,協(xié)議的錯(cuò)誤是一個(gè)小概率事件.承諾協(xié)議無需第三方介入,提供非誠實(shí)環(huán)境中的協(xié)議模式.
構(gòu)造特殊性質(zhì)的承諾協(xié)議是一個(gè)具有挑戰(zhàn)性的問題.根據(jù)承諾協(xié)議使用的密鑰基礎(chǔ)不同,分為2大類,一類是使用對(duì)稱密鑰機(jī)制構(gòu)造的承諾方案,如基于單向函數(shù)的承諾、使用偽隨機(jī)數(shù)生成器的承諾[10],使用較為簡單,思想也較容易理解,但安全性分析起來較困難;另一類是基于公開密碼算法的承諾方案[11],如基于離散對(duì)數(shù)的承諾,雖然構(gòu)造較為復(fù)雜,但是安全分析過程較為系統(tǒng),公鑰基礎(chǔ)的豐富特性能夠進(jìn)一步的豐富承諾協(xié)議的特點(diǎn).根據(jù)承諾結(jié)構(gòu)和內(nèi)容,承諾協(xié)議分為比特承諾協(xié)議,數(shù)字承諾協(xié)議和復(fù)雜承諾結(jié)構(gòu)的承諾協(xié)議[12].比特承諾協(xié)議中承諾是一個(gè)字符,數(shù)字承諾協(xié)議中承諾是一串字符,這些承諾協(xié)議關(guān)注承諾內(nèi)容,而缺少承諾結(jié)構(gòu),因此具有功能性缺陷,不能滿足復(fù)雜場景的需要.目前針對(duì)承諾結(jié)構(gòu)的研究,集中關(guān)注于不可關(guān)聯(lián)承諾[13-14],克服關(guān)聯(lián)承諾造成的不公平性.一些承諾結(jié)構(gòu)具有特殊的屬性,如基于BCDR具有概率加密和同態(tài)加密特性[15]的承諾方案及全局可構(gòu)承諾[16].一些面向多個(gè)承諾者的承諾協(xié)議被提出[17],但是不支持部分成員的損毀,承諾打開階段也需要全體成員參與.因此,設(shè)計(jì)具有復(fù)雜承諾結(jié)構(gòu)的承諾協(xié)議是一個(gè)挑戰(zhàn)性問題.
隨著互聯(lián)網(wǎng)金融安全的廣泛深入研究,現(xiàn)有的承諾協(xié)議存在缺陷,承諾者和驗(yàn)證者之間的關(guān)系不能滿足多個(gè)合作者參與承諾過程,且承諾結(jié)構(gòu)不能滿足承諾者的需求,如聯(lián)合投票、聯(lián)合競標(biāo)、聯(lián)合支付等.多參與者的承諾協(xié)議可能因?yàn)槌兄Z者和接受者之間的合謀攻擊導(dǎo)致無法滿足數(shù)字承諾協(xié)議的隱藏安全屬性[18].為解決上述問題,提出一種門限數(shù)字承諾協(xié)議,通過門限密鑰協(xié)議構(gòu)造承諾者的密鑰碎片,將承諾的信息分布在多個(gè)承諾者中,只有超過門限值的承諾者合作,承諾打開方才可打開承諾,防止承諾者和驗(yàn)證者間的合謀攻擊.
門限承諾協(xié)議具有多個(gè)承諾人,妥協(xié)承諾人可能造成協(xié)議失敗.考慮以下場景,多個(gè)承諾人聯(lián)合向驗(yàn)證者承諾,每個(gè)承諾者提供私有的承諾內(nèi)容,所有承諾者獨(dú)立提供的部分承諾通過約定操作組成完整承諾,承諾者可能在承諾打開之前因妥協(xié)而無法參與承諾打開,造成驗(yàn)證者可能只能收集部分承諾者的驗(yàn)證承諾信息.例如多個(gè)聯(lián)合購買者向被購買者支付,購買人的支付結(jié)果由每個(gè)聯(lián)合購買者提供部分承諾,在承諾階段競標(biāo)結(jié)果對(duì)被購買者是秘密的,在打開階段可能購買人因外在原因而缺失,但是剩余購買者可以給出承諾信息,被購買者在得到部分購買者的承諾信息后,可以恢復(fù)出承諾價(jià)格.從中可以總結(jié)這種承諾協(xié)議的特點(diǎn),承諾內(nèi)容由全部承諾人的私有承諾組成,承諾人在承諾打開階段提供承諾碎片,驗(yàn)證者在收集超過門限值數(shù)量的承諾碎片后,可以恢復(fù)出承諾內(nèi)容.
門限承諾協(xié)議中具有多個(gè)承諾者和一個(gè)驗(yàn)證者,協(xié)議承諾者pi組成集合P={pi,1≤i≤n},規(guī)模為n;驗(yàn)證者V,規(guī)模為1.
定義1 分項(xiàng)承諾:承諾協(xié)議中具有多個(gè)承諾者pi,分項(xiàng)承諾是多個(gè)承諾者中一個(gè)承諾者pi的承諾ci.
定義2 分項(xiàng)承諾關(guān)系:分項(xiàng)承諾關(guān)系是承諾ci之間的關(guān)系,記為Ri,j=〈ci,cj〉.
定義3 完整承諾:完整承諾是所有承諾者對(duì)驗(yàn)證者的一個(gè)完整承諾集合,以及該集合中分項(xiàng)承諾的關(guān)系,記為m={C={ci,1≤i≤n},R={
定義4 承諾碎片:承諾碎片是完整承諾中的一個(gè)碎片,具有門限恢復(fù)性質(zhì),即超過門限數(shù)量的承諾碎片可以恢復(fù)完整承諾.
定義5 門限承諾協(xié)議:門限承諾協(xié)議是一種多個(gè)承諾人向驗(yàn)證者提供承諾分項(xiàng),并且驗(yàn)證者能夠通過收集超過門限數(shù)量的承諾碎片恢復(fù)完整承諾的一種承諾協(xié)議.
門限承諾協(xié)議由4個(gè)階段組成:初始化階段、承諾分割階段、承諾階段和打開階段.初始化階段生成承諾者的私有密鑰、密鑰碎片和公開加密密鑰,生成算法gen(1k)→〈si,0,ki,gs〉,1≤i≤n.承諾分割階段,承諾人貢獻(xiàn)私有承諾分項(xiàng)Δmi構(gòu)造完整承諾con({Δmi,1≤i≤n})=m,通過承諾分割算法dis(m)得到承諾碎片dis(m)={?mi,1≤i≤n}.承諾階段,承諾人使用算法com(·)輸入公共參考值r和被承諾的承諾分量Δmi,輸出承諾ci=com(Δmi,r),發(fā)給驗(yàn)證者.在承諾打開階段,驗(yàn)證人收集所有承諾人的承諾分量,使用算法col(·),得到完整承諾m=col({ci,1≤i≤n}).
性質(zhì)1 承諾的獨(dú)立性,在承諾打開前,承諾者不能通過承諾分項(xiàng)和承諾碎片打開其他承諾者的承諾分項(xiàng)和承諾碎片.
性質(zhì)2 承諾的隱藏性,在承諾打開前,驗(yàn)證者不能通過承諾分項(xiàng)打開完整承諾.
性質(zhì)3 承諾的門限性,在承諾打開階段,驗(yàn)證者能夠通過使用超過門限數(shù)量的承諾碎片打開承諾.
性質(zhì)4 承諾的綁定性,所有承諾者不能否定完整承諾.
性質(zhì)5 承諾的正確性,承諾者使用承諾分項(xiàng)給出的完整承諾與驗(yàn)證者使用承諾碎片恢復(fù)的完整承諾一致.
性質(zhì)6 承諾的一致性,驗(yàn)證者能夠根據(jù)承諾者的承諾分項(xiàng)和承諾碎片判斷承諾者是否誠實(shí),即承諾者尋找一個(gè)滿足承諾分項(xiàng)且能修改完整承諾的承諾碎片是一個(gè)小概率事件.
性質(zhì)7 承諾的關(guān)系完整性,打開階段的完整承諾保留分享承諾的關(guān)系{Ri,j,1≤i≤n,1≤j≤n}.
首先由承諾者{pi,1≤i≤n}隨機(jī)生成一個(gè)多項(xiàng)式fi(x),根據(jù)該隨機(jī)多項(xiàng)式分配承諾者的密鑰碎片和共享加密密鑰.設(shè)p為一個(gè)大素?cái)?shù),令g為n階循環(huán)群G的生成元,采用門限ElGamal協(xié)議為每個(gè)用戶分配密鑰碎片和公開加密密鑰,通過Feldman的VSS方案[19]秘密分配密鑰碎片,并給出門限密鑰的驗(yàn)證.
步驟3 承諾者pi將vj,i=fi(j)通過安全信道秘密發(fā)送給其他承諾者pj,i≠j,令ai,0=si,0,pi計(jì)算并廣播承諾Bi=gai,j,1≤i≤n,1≤j≤t;
(1)
如果式(1)成立,則接受該碎片ki為有效密鑰碎片,否則,請(qǐng)求所有承諾者pi重新發(fā)送正確碎片.
協(xié)議結(jié)束后,所有承諾者pi具有一個(gè)秘密的密鑰碎片ki和公開加密密鑰h,如果每個(gè)承諾者都正確的發(fā)送碎片vi,j,則有如下正確性校驗(yàn):
在承諾分割階段,承諾m被分成承諾分項(xiàng)和承諾打開階段的承諾碎片.
承諾分割階段承諾者得到承諾分項(xiàng)Δmi和承諾碎片?mi.
在承諾階段,所有承諾者統(tǒng)一對(duì)承諾內(nèi)容m承諾,承諾者保存承諾碎片?mi,則承諾者的承諾碎片?mi和完整承諾m之間滿足如下關(guān)系:
步驟1 所有承諾者協(xié)商產(chǎn)生共享隨機(jī)數(shù)r∈p;
步驟2 承諾者pi使用計(jì)算ci=grsi,0yΔmi(modp),ci即為成員pi對(duì)驗(yàn)證者的承諾,承諾者pi將ci發(fā)送給接受者;
步驟1 超過門限t數(shù)量的承諾者向接受者公布密鑰碎片r,gki(modp)和承諾碎片?mi;
步驟2 接受者使用t數(shù)量的gki(modp)和mi驗(yàn)證承諾.
設(shè)承諾者和驗(yàn)證者的計(jì)算能力為多項(xiàng)式時(shí)間有界,從獨(dú)立性、隱藏性、門限性、綁定性、正確性和一致性6個(gè)方面分析協(xié)議的安全性.
承諾階段承諾者pi給出ci=grsi,0yΔmi(modp),承諾者pj給出cj=grsj,0yΔmj(modp),基于離散對(duì)數(shù)難解問題,區(qū)分ci和cj的概率滿足如下公式,v(k)為一個(gè)可忽略的函數(shù):
密文ci=grsi,0yΔmi(modp)中基于離散對(duì)數(shù)難解問題,驗(yàn)證者獲得mi的概率等同破解理算對(duì)數(shù)難解問題,同理驗(yàn)證者從密文grs0ym中獲得m的概率等同破解離散對(duì)數(shù)難解問題.
驗(yàn)證者在承諾打開階段中得到的完整承諾是準(zhǔn)確的.計(jì)算如下公式,驗(yàn)證者收集超過門限t數(shù)量的承諾碎片后,計(jì)算完整的承諾:
承諾階段的承諾與打開階段的承諾一致.
單方數(shù)字承諾協(xié)議中,驗(yàn)證者處于不利地位,在沒有承諾者的幫助下,驗(yàn)證者不能夠打開承諾者的證明.在保證門限數(shù)量承諾者參與情況下,即使部分成員的損毀,仍可打開證明.從正確性上的公式可以看出,驗(yàn)證者只需要收集超過門限數(shù)量的承諾碎片就可以驗(yàn)證承諾的正確性.
經(jīng)過參數(shù)協(xié)商階段、承諾分割階段,每個(gè)誠實(shí)的承諾者在承諾階段給出的承諾分量對(duì)應(yīng)完整承諾,建議協(xié)議中,每個(gè)承諾者的承諾分量為ci=grsi,0yΔmi(modp), 驗(yàn)證者收集全部承諾分量后,計(jì)算完整的承諾
因此建議的協(xié)議滿足門限承諾協(xié)議的一致性.
本文提出一種具有門限性質(zhì)的承諾協(xié)議模型,定義完整承諾、承諾碎片和承諾關(guān)系,并通過門限密鑰基礎(chǔ)擴(kuò)展數(shù)字承諾協(xié)議,驗(yàn)證門限數(shù)字承諾協(xié)議的可行性.門限承諾協(xié)議不僅豐富了承諾結(jié)構(gòu),通過承諾碎片建立多個(gè)承諾人之間的承諾關(guān)系,而且能夠容忍部分承諾者的損毀,防止承諾者和驗(yàn)證者間的合謀攻擊,滿足門限數(shù)量的承諾碎片即可恢復(fù)完整承諾,提高了協(xié)議運(yùn)行的可靠性和靈活性,支持多承諾者參與,進(jìn)一步豐富了承諾協(xié)議的研究內(nèi)容.建議協(xié)議進(jìn)一步優(yōu)化電子支付、電子投票、電子投標(biāo)等復(fù)雜應(yīng)用.