崔晨雨,張麗娜,2
(1.西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安 710600;2.陜西師范大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,陜西 西安 710119)
秘密共享技術(shù)是應(yīng)用密碼學(xué)中一項(xiàng)非常重要的技術(shù),在信息安全存儲(chǔ)、傳輸及安全計(jì)算等環(huán)節(jié)起著關(guān)鍵作用。秘密共享問(wèn)題,就是如何利用密碼技術(shù)將秘密信息進(jìn)行分割存儲(chǔ),以防止權(quán)力過(guò)于集中,達(dá)到分散風(fēng)險(xiǎn)和容忍入侵的目的。門(mén)限秘密共享方案[1]自1979 年提出以后,秘密共享技術(shù)開(kāi)始迅速發(fā)展,許多研究人員都投入了大量精力對(duì)共享方案及其相關(guān)應(yīng)用進(jìn)行深入研究,目前提出的門(mén)限共享方案有很多種,主要代表有Shamir[1]的 Lagrange插值多項(xiàng)式方案、Blakley[2]的矢量方案、Asmuth等[3]的同余類方案和Karnin等[4]的矩陣法方案。文獻(xiàn)[5]提出了一種基于廣義中國(guó)剩余定理GCRT(Generalized Chinese Remainder Theorem)的主動(dòng)多秘密共享方案,相比其他共享方案,該方案添加了共享刷新階段,在滿足多秘密不變的前提下,在固定時(shí)間內(nèi)更新無(wú)序份額使方案具有更高的安全性。此外,在秘密恢復(fù)階段,該方案使用基于廣義中國(guó)剩余定理的輕量級(jí)算法,使得恢復(fù)過(guò)程具有更小的計(jì)算負(fù)載。文獻(xiàn)[6]提出了一種基于通用共享的多秘密圖像安全共享方案,利用二進(jìn)制運(yùn)算從n個(gè)秘密圖像中生成n個(gè)共享并同時(shí)生成通用共享,同時(shí)用函數(shù)確定恢復(fù)秘密的閾值,增大了共享的隨機(jī)性,提供了一種計(jì)算效率高且安全的方案。
目前秘密共享研究著重解決欺騙行為檢測(cè)以及子秘密不可重復(fù)使用問(wèn)題。Shamir和Blakley等人的方案為門(mén)限方案奠定了基礎(chǔ),但不能杜絕秘密分發(fā)者與分享者的欺騙行為。針對(duì)門(mén)限方案在實(shí)際應(yīng)用中可能存在欺騙行為的問(wèn)題,文獻(xiàn)[7]提出了一種基于特征值的安全可驗(yàn)證的門(mén)限秘密共享方案,在基本Shamir門(mén)限方案的基礎(chǔ)上,從矩陣特征值的角度出發(fā),利用n階矩陣的特征方程具有重根的特點(diǎn)設(shè)計(jì)了一種可驗(yàn)證的秘密共享方案。該方案被證明是安全的,可以抵抗參與者和分發(fā)者的惡意欺騙。文獻(xiàn)[8]提出了一種基于埃爾米特插值法的、無(wú)可信中心、可公開(kāi)驗(yàn)證、可更新的多秘密共享方案。該方案利用了基于雙線性對(duì)的零知識(shí)證明,具有可同時(shí)對(duì)秘密份額和更新份額進(jìn)行公開(kāi)驗(yàn)證的優(yōu)點(diǎn)。針對(duì)門(mén)限方案在實(shí)際應(yīng)用中經(jīng)常存在多秘密共享的問(wèn)題,為了使份額可以在子秘密中重復(fù)使用,文獻(xiàn)[9]提出了一種基于單向函數(shù)的偽份額,在秘密恢復(fù)過(guò)程中并沒(méi)有直接使用這些秘密信息,而是使用雙變量單向函數(shù)對(duì)其計(jì)算結(jié)果。盡管每個(gè)參與秘密恢復(fù)的參與者都提供了一個(gè)由其子秘密份額計(jì)算的偽份額,但根據(jù)雙變量單向函數(shù)的安全性質(zhì),該偽份額不會(huì)披露其真正的秘密份額,因此子秘密可重復(fù)使用。文獻(xiàn)[10]提出了一種安全的使用門(mén)限多秘密共享方案,基于中國(guó)剩余定理將多項(xiàng)式產(chǎn)生的子秘密信息進(jìn)行聚合生成公開(kāi)值,減少了公開(kāi)值的個(gè)數(shù),參與者只需存儲(chǔ)1個(gè)子秘密且子秘密可以多次使用。但是,文獻(xiàn)[5-10]中的方案都沒(méi)有考慮不同秘密訪問(wèn)控制權(quán)限改變的問(wèn)題,不適用于復(fù)雜場(chǎng)景。
在實(shí)際應(yīng)用中,秘密共享系統(tǒng)只考慮秘密分發(fā)過(guò)程中的欺騙行為和子秘密可重復(fù)使用是不夠的,還需要考慮對(duì)不同秘密的訪問(wèn)控制結(jié)構(gòu)[11]發(fā)生改變的問(wèn)題,這也是目前在設(shè)計(jì)和實(shí)現(xiàn)秘密共享方案時(shí)需要解決的關(guān)鍵問(wèn)題之一。滿足訪問(wèn)控制結(jié)構(gòu)可更改的方案能將門(mén)限多重秘密共享應(yīng)用于復(fù)雜場(chǎng)景中,如電話會(huì)議和文件分發(fā)等。
簡(jiǎn)單的多秘密共享方案是針對(duì)不同秘密存在不同的份額進(jìn)行恢復(fù),在n個(gè)參與者中,只要出現(xiàn)t個(gè)或t個(gè)以上的參與者共同合作就可以恢復(fù)秘密。但在實(shí)際生活中,為應(yīng)對(duì)復(fù)雜場(chǎng)景,對(duì)于不同秘密應(yīng)該設(shè)計(jì)不同的訪問(wèn)控制權(quán)限。本文設(shè)計(jì)的秘密共享方案是在用戶集合{U|u1,u2,u3,…,un}的基礎(chǔ)上設(shè)置訪問(wèn)結(jié)構(gòu)ξ,它是由用戶集合U中的一些子集G組成的,且滿足子集G可以重構(gòu)秘密K,稱子集G為秘密K的授權(quán)子集[12]。
以有30人的某公司的一次秘密文件分發(fā)過(guò)程為例,分發(fā)者需把秘密文件1和秘密文件2分別發(fā)給公司的7個(gè)高層和23個(gè)員工,要求文件1只能由高層恢復(fù),文件2只能由員工恢復(fù)。分發(fā)者對(duì)文件1和2的份額進(jìn)行加密,為防止出現(xiàn)人員監(jiān)守自盜、遺忘密鑰或因人員缺席而無(wú)法恢復(fù)文件等各種問(wèn)題,要求參與的人員至少滿足門(mén)限值5才可恢復(fù)出秘密文件,本例中普通員工與高層的訪問(wèn)權(quán)限不同,員工中任意5人或多于5人只能恢復(fù)文件2且無(wú)法恢復(fù)文件1,同理高層只能恢復(fù)文件1。限定一個(gè)新的用戶子集作為新的授權(quán)子集,定義一種具有身份鎖的(t,j)門(mén)限方案,如圖1所示。
針對(duì)不同的秘密,分發(fā)者會(huì)根據(jù)授權(quán)子集計(jì)算新的鎖X,不同秘密對(duì)應(yīng)不同身份鎖,因此本文方案可適用于門(mén)限多秘密共享。首先如圖1a所示,分發(fā)者對(duì)全體參與者分發(fā)基礎(chǔ)份額(每個(gè)參與者都有);其次,如圖1b所示,分發(fā)者對(duì)秘密K所對(duì)應(yīng)的授權(quán)子集G中的用戶分發(fā)秘密份額(不在授權(quán)子集中的參與者沒(méi)有);最后,如圖1c所示,秘密K對(duì)應(yīng)的授權(quán)子集中的參與者通過(guò)自己的基礎(chǔ)份額和秘密份額來(lái)恢復(fù)門(mén)限,當(dāng)且僅當(dāng)參與的人數(shù)達(dá)到門(mén)限t時(shí)可恢復(fù)秘密。
Figure 1 (t,j) threshold scheme with identity lock圖1 具有身份鎖的(t,j)門(mén)限方案
鑒于以上考慮,本文提出一種具有身份鎖的門(mén)限多秘密共享方案,在保持子秘密可重復(fù)使用以及可檢測(cè)欺騙行為的前提下,不增加參與者信息交互量,仍可有效地解決秘密共享技術(shù)中對(duì)不同秘密的訪問(wèn)控制結(jié)構(gòu)發(fā)生改變帶來(lái)的問(wèn)題;同時(shí),該方案也不需要預(yù)設(shè)安全通道來(lái)傳輸秘密份額,具有很好的安全性和實(shí)用性。
本文的貢獻(xiàn)在于利用CRT(Chinese Remainder Theorem)構(gòu)造了安全鎖,設(shè)計(jì)了一種綜合性能較好的多秘密門(mén)限分享方案。該方案主要有以下特點(diǎn):(1)基礎(chǔ)子份額可重復(fù)使用并可離線驗(yàn)證;(2)不同秘密對(duì)應(yīng)不同授權(quán)子集,并引入?yún)?shù)驗(yàn)證參與者身份,減少無(wú)效用戶盲目計(jì)算;(3)不需要預(yù)設(shè)安全通道;(4)參與者可檢測(cè)秘密分發(fā)者的欺騙行為。
論文的組織安排如下:第2節(jié)介紹本文多秘密共享方案相關(guān)預(yù)備知識(shí);第3節(jié)給出了基于CRT構(gòu)造的安全鎖,并在此基礎(chǔ)上提出多秘密共享方案,并對(duì)基礎(chǔ)子份額分發(fā)、秘密的份額分發(fā)、基于CRT的身份鎖構(gòu)造、秘密恢復(fù)等模塊進(jìn)行詳細(xì)介紹;第4節(jié)主要從正確性、安全性、欺騙檢測(cè)和性能等4個(gè)方面進(jìn)行分析;第5節(jié)給出本文的結(jié)論。
本文在給出方案之前,首先介紹需要用到的一些符號(hào)及其定義、中國(guó)剩余定理[13]和帶鎖的會(huì)話密鑰[14]等相關(guān)知識(shí)。
Table 1 Parameters and their definitions表1 參數(shù)及其定義
設(shè)整數(shù)N1,N2,…,Nn為兩兩互質(zhì)的正整數(shù),則對(duì)于任意的整數(shù)R1,R2,…,Rn,滿足如式(1)所示的同余方程組:
(1)
鎖是一個(gè)保護(hù)機(jī)制,只有滿足鎖的要求才能夠打開(kāi)鎖得到會(huì)話密鑰。
定義1秘密分發(fā)者(Dealer)指把1個(gè)或t個(gè)秘密S1,S2,…,St分發(fā)給n個(gè)秘密分享者的人或服務(wù)器,稱秘密分發(fā)者為Pd。
定義2假設(shè)系統(tǒng)存在一個(gè)公告欄NB(Notice Board)用來(lái)存放公開(kāi)參數(shù),系統(tǒng)各方均可訪問(wèn)NB上的內(nèi)容,但只有Pd才能修改或更新NB上的內(nèi)容。
定義3假設(shè)本文系統(tǒng)中存在一個(gè)用戶集合{U|u1,u2,u3,…,un},且U包含了系統(tǒng)中的所有用戶。存在用戶子集合G1,G2,G3,…,Gt且Gi是U的子集(滿足|Gi|≤|U|),對(duì)于不同的秘密Si有不同的用戶集合Gi與之對(duì)應(yīng)。存在X鎖滿足對(duì)于不同秘密Si只能由對(duì)應(yīng)用戶集合Gi中的用戶打開(kāi),而系統(tǒng)中的其他用戶無(wú)法打開(kāi),且X鎖依賴于秘密Si,也就是說(shuō)針對(duì)不同的秘密Si會(huì)存在不同的X鎖,如圖2所示。
Figure 2 Locked session key圖2 帶鎖的會(huì)話密鑰
本文提出的具有身份鎖的門(mén)限多秘密共享方案包含4個(gè)模塊:基礎(chǔ)子份額分發(fā)、秘密份額分發(fā)、基于CRT的身份鎖構(gòu)造和秘密恢復(fù)。此外,本文還提出了多秘密共享方案的具體實(shí)施步驟。圖3為本文方案的框架圖。
Figure 3 Schematic diagram of the scheme in this paper圖3 本文方案框架圖
定義4定義2個(gè)q階的循環(huán)群分別為(A1,+)和(A2,·),且p為A1的生成元,令e為A1和A2上的雙線性變換[15],即e:A1×A1→A2。
算法1公私鑰對(duì)生成
Output:Qj(j=1,2,…,n)和Qd。
1ifP∈uj(j=1,2,…,n)then
2Sj=h0(ζj);
3Qj=Sj*p;
4else
5Sd=h0(ζd);
6Qd=Sd*p;
7end
8returnQj(j=1,2,…,n) andQd
算法1中P是參與者,基礎(chǔ)子份額是用戶集合中所有用戶都具有的份額,本文方案不預(yù)設(shè)安全通道傳輸基礎(chǔ)子份額,分發(fā)者和參與者先利用雙線性變換和公開(kāi)參數(shù)進(jìn)行會(huì)話密鑰的協(xié)商,再通過(guò)協(xié)商的密鑰分發(fā)基礎(chǔ)子份額。分發(fā)者通過(guò)會(huì)話密鑰對(duì)基礎(chǔ)子份額進(jìn)行加密,并公開(kāi)加密后的密文用于參與者的驗(yàn)證。分發(fā)者基礎(chǔ)子份額分發(fā)算法如算法2所示。
算法2分發(fā)者基礎(chǔ)子份額分發(fā)
Input:xj,bj,Qj(j=1,2,…,n),P,h1和hk。
Output:cj,sj,Rj(j=1,2,…,n)。
1ifP=Pdthen
2mj=h1(e(Qj,p)bj);
3rj=hmj(xj);
4cj=Emj(xj‖rj);
5Rj=rj*Qd;
6sj=bj*p-rj*Sd;
7end
8returncj,sj,Rj
參與者用NB上的參數(shù)和自己私鑰計(jì)算會(huì)話密鑰,并對(duì)驗(yàn)證公開(kāi)參數(shù)。若驗(yàn)證通過(guò),則解密得到有效的基礎(chǔ)子份額,如算法3所示。
算法3參與者基礎(chǔ)子份額計(jì)算
Input:cj,sj,Rj,Sj,Qj(j=1,2,…,n),P,h1和hk。
Output:xj(j=1,2,…,n)。
1ifP∈uj(j=1,2,…,n)then
2mj=h1(e(Qj,sj)e(Sj,Rj));
3Dmj(cj)=xj‖rj;
5returntrue;
6end
7end
8returnxj
本文利用雙線性變換和公開(kāi)參數(shù)實(shí)現(xiàn)會(huì)話密鑰的協(xié)商,在此基礎(chǔ)上對(duì)基礎(chǔ)子份額進(jìn)行安全分發(fā)和正確性驗(yàn)證?;A(chǔ)子份額分發(fā)步驟如下所示:
Step3秘密分發(fā)者Pd利用公開(kāi)的帶密鑰的單向函數(shù)hk和mj,計(jì)算rj=hmj(xj),cj=Emj(xj‖rj),Rj=rj*Qd,sj=bj*p-rj*Sd,并在NB上共享參數(shù)(cj,sj,Rj)。
Step4每個(gè)參與者uj從NB上獲取cj和Rj來(lái)計(jì)算mj=h1(e(Qj,sj)e(Sj,Rj))。
本文設(shè)計(jì)中,對(duì)于不同秘密存在不同用戶子集{Gi|gi1,gi2,gi3,…,gij},且滿足j≤n。秘密分發(fā)者對(duì)份額上鎖X(X匹配Gi中的用戶)。不同的秘密存在對(duì)應(yīng)的鎖和份額,且只有滿足Gi中的用戶提供的份額個(gè)數(shù)大于t時(shí),才可以恢復(fù)出秘密Si,其中t為門(mén)限秘密恢復(fù)的閾值。
定義6f(x,y)為一個(gè)雙變量單向函數(shù)[16],即給定兩個(gè)自變量會(huì)生成一個(gè)變量,且函數(shù)不可逆。
本文以Shamir方案為基礎(chǔ),將秘密隱藏于常數(shù)項(xiàng),引入隨機(jī)數(shù)x0對(duì)基礎(chǔ)子份額進(jìn)行更新,使得基礎(chǔ)子份額可重復(fù)使用。秘密份額的參數(shù)分發(fā)算法如算法4所示。
算法4秘密份額的參數(shù)分發(fā)
Input:c1,c2,g(x)=K+a1x+a2x2+a3x3+…+at-1xt-1,ω,N1,N2,…,Nn,f(x,y),x0。
Output:x0,kij,Rij,ω,ωK,ωa1,ωa2,ωa3,…,ωat-1,Xj。
1ifP=Pd&&uj∈Gthen
2 calculateωK,ωa1,ωa2,ωa3,…,ωat-1;
3Xj=f(x0,xj);
4Tij=g(Xj)(modn);
5Sij=EXj(Tij);
6Rij=Sij-kij*Nj;//0≤Rij≤Nj
7end
8returnkij,Rij,ω,ωK,ωa1,ωa2,ωa3,…,ωat-1
本文方案利用公開(kāi)隨機(jī)數(shù)x0和雙變量單向函數(shù)f(x,y)實(shí)現(xiàn)多重秘密的共享且保證了共享的安全性,參與者可利用消息樣本ω和公開(kāi)系統(tǒng)參數(shù)ωK,ωa1,ωa2,ωa3,…,ωat-1驗(yàn)證秘密份額的正確性。秘密份額的分發(fā)步驟如下所示:
Step1秘密分發(fā)者Pd選取安全大素?cái)?shù)c1和c2,計(jì)算n=c1*c2,選取N1,N2,…,Nn為兩兩互質(zhì)的公開(kāi)正整數(shù),選取公開(kāi)隨機(jī)數(shù)x0,選取一個(gè)消息樣本ω。
Step2Pd隨機(jī)構(gòu)造一個(gè)t-1次多項(xiàng)式g(x)=K+a1x+a2x2+a3x3+…+at-1xt-1,并通過(guò)多項(xiàng)式計(jì)算ωK,ωa1,ωa2,ωa3,…,ωat-1。
Step3Pd計(jì)算用戶子集Gi中所有用戶的臨時(shí)密鑰Xj=f(x0,xj)。
Step4Pd計(jì)算秘密值K對(duì)應(yīng)的用戶子集Gi中用戶的份額Tij=g(Xj)(modn)。
Step5秘密分發(fā)者Pd計(jì)算Sij=EXj(Tij),令Sij=kij*Nj+Rij,其中0≤Rij≤Nj,得到j(luò)組(kij,Rij)。
Step6秘密分發(fā)者Pd在NB上公開(kāi)x0,kij,ω,ωK,ωa1,ωa2,ωa3,…,ωat-1。
在本文設(shè)計(jì)中,對(duì)于不同的秘密有不同的用戶子集{Gi|gi1,gi2,gi3,…,gij},秘密分發(fā)者可根據(jù)授權(quán)子集構(gòu)造不同的同余方程組,即根據(jù)不同的Nj和Rij構(gòu)造同余方程。默認(rèn)用戶{U|u1,u2,u3,…,un}和{N|N1,N2,N3,…,Nn}形成一一對(duì)應(yīng)的關(guān)系,秘密分發(fā)者可根據(jù)不同的Rij,kij和x0構(gòu)造不同的鎖X。身份鎖用于對(duì)當(dāng)前秘密用戶集合進(jìn)行限制,只有授權(quán)子集才能夠解開(kāi)身份鎖。
身份鎖用于對(duì)當(dāng)前秘密用戶集合進(jìn)行限制,只有授權(quán)子集才能夠解開(kāi)身份鎖。
身份鎖是利用中國(guó)剩余定理實(shí)現(xiàn)的,秘密分發(fā)者先通過(guò)算法4得到秘密份額,再利用份額計(jì)算秘密對(duì)應(yīng)的身份鎖X。秘密分發(fā)者只需在公開(kāi)欄NB上公開(kāi)鎖X,不需要公開(kāi)份額,有效的參與者通過(guò)CRT算法,利用公開(kāi)的X和自己的基礎(chǔ)子份額計(jì)算秘密份額。基于CRT的身份鎖構(gòu)造算法如算法5所示。
算法5基于CRT的身份鎖構(gòu)造
Input:N1,N2,…,Nn,Rij,ω,Xj。
Output:X,rj。
1ifP=Pd&&uj∈Gthen
2L=∏Nj;
5rj=EXj(ω);
6end
7returnX和rj
身份鎖X限制了恢復(fù)不同秘密時(shí),授權(quán)的用戶子集{Gi|gi1,gi2,gi3,…,gij}不同,利用CRT實(shí)現(xiàn)鎖X的構(gòu)造,保證了秘密共享的身份限制。身份鎖構(gòu)造的步驟如下所示:
Step1秘密分發(fā)者Pd,對(duì)于秘密Si,利用用戶Gi中的Nj計(jì)算L=∏Nj(j是用戶子集Gi中用戶所對(duì)應(yīng)的uj)。
Step3秘密分發(fā)者Pd根據(jù)算法4計(jì)算的Rij通過(guò)式(2)計(jì)算得到X:
(2)
Step4Pd對(duì)于消息樣本ω,計(jì)算Gi中每個(gè)用戶對(duì)應(yīng)的rj=EXj(ω)。
Step5Pd在NB上公開(kāi)(X,rj)。
所有參與者先通過(guò)公開(kāi)參數(shù)驗(yàn)證自己是否為當(dāng)前秘密的有效參與者,再利用中國(guó)剩余定理,根據(jù)X和基礎(chǔ)子份額計(jì)算出自己的份額,并利用公開(kāi)的參數(shù)驗(yàn)證份額的正確性。有效參與者可將自己的秘密份額發(fā)送給秘密計(jì)算者,當(dāng)有效參與者達(dá)到門(mén)限值時(shí),能夠恢復(fù)秘密。參與者的份額計(jì)算算法如算法6所示。
算法6參與者的份額計(jì)算
Input:ω,ωK,ωa1,ωa2,ωa3,…,ωat-1,X,x0,xj,rj,Nj,kij(j=1,2,…,n)。
Output:Mj。
1Xj=f(x0,xj);
2ifEXj(ω)=rjthen
3X≡Rij(modNj);
4Sij=kij*Nj+Rij;
5Tij=DXj(Sij);
7returntrue;
8end
9end
10returnMj=(Xj,Tij)
參與者計(jì)算份額后可通過(guò)份額驗(yàn)證來(lái)判斷份額的真實(shí)性,有效的份額參與者可向秘密計(jì)算者DC發(fā)送自己的有效份額,且秘密的恢復(fù)不會(huì)影響參與者基礎(chǔ)份額的安全性。
秘密計(jì)算者DC收到滿足閾值的有效份額后,利用拉格朗日插值多項(xiàng)式計(jì)算出秘密,如算法7所示。
算法7秘密恢復(fù)
Input:Mj。
Output:K。
1ifP=DC&&|Mj|≥tthen
3end
4returnK
當(dāng)參與者的個(gè)數(shù)達(dá)到t時(shí)可以恢復(fù)秘密,參與者利用公開(kāi)參數(shù)讓用戶確定自己是否為秘密的參與者,并通過(guò)CRT算法和公開(kāi)參數(shù)計(jì)算份額并驗(yàn)證份額的正確性。秘密恢復(fù)的步驟如下所示:
Step2參與者uj利用X和Nj計(jì)算Rij,滿足X≡Rij(modNj)。
Step3參與者uj根據(jù)公開(kāi)的kij,計(jì)算Sij=kij*Nj+Rij。
Step4參與者uj利用臨時(shí)密鑰Xj,得到秘密Si的份額Tij=DXj(Sij)。
Step6參與者uj將自己的份額Mj=(Xj,Tij)提交給指定的秘密計(jì)算者DC(可以是參與者,也可以是其他無(wú)關(guān)的人)。
Step7秘密計(jì)算者DC收到大于或等于t個(gè)信息Mj時(shí),可恢復(fù)秘密Si。此時(shí)Si的計(jì)算如式(3)所示:
(3)
本文提出的秘密共享方案具有多重秘密共享方案的特性,即只需要每個(gè)參與者保存一個(gè)秘密份額,該秘密份額可以用于多次秘密共享過(guò)程,且秘密份額無(wú)需進(jìn)行更新。
為了提高秘密共享系統(tǒng)的性能,在第1次基礎(chǔ)子份額分發(fā)之后,秘密分發(fā)者和各參與者保存相應(yīng)的秘密數(shù)據(jù)x1,x2,x3,…,xn,以便在后續(xù)其他秘密共享過(guò)程中使用。3.1節(jié)~3.4節(jié)是單個(gè)秘密的分發(fā),如果還需要進(jìn)一步共享其他秘密,算法可以繼續(xù)執(zhí)行以下步驟:
(1)秘密S′i份額分發(fā)過(guò)程。
秘密分發(fā)者Pd不再重新選取秘密數(shù)據(jù)xj,只需重新選取隨機(jī)數(shù)x′0,并更新此時(shí)秘密S′i所對(duì)應(yīng)的用戶子集{G′i|g′i1,g′i2,g′i3,…,g′ij}的臨時(shí)密鑰X′j。此時(shí)針對(duì)不同的秘密多項(xiàng)式構(gòu)造只需更改K值,在NB上更新ω′K。在3.2節(jié)的Step 6中只需在NB上更新x′0,k′ij和ωK′即可。
(2)身份鎖更新過(guò)程。
秘密分發(fā)者不需要再重新選取Nj,只需根據(jù)秘密S′i對(duì)應(yīng)的授權(quán)子集G′i得到L′,并更新參數(shù)f′j,r′j和X′。3.3節(jié)的Step 5在NB上更新X′,r′j。
(3)秘密恢復(fù)過(guò)程。
合作的參與者uj根據(jù)更新的X′,x′0和k′ij重新計(jì)算X′j和T′ij,在3.4節(jié)的Step 5中驗(yàn)證秘密S′i份額的準(zhǔn)確性,Step 6和Step 7同3.4節(jié)的步驟,且當(dāng)參與者數(shù)量大于或等于t時(shí)可以恢復(fù)秘密S′i。
重復(fù)使用秘密數(shù)據(jù)x1,x2,x3,…,xn并不會(huì)影響共享秘密的安全性,這是由雙變量單向函數(shù)的性質(zhì)所決定的,因此本文提出的秘密共享方案具有多重秘密共享方案的特性。
定理1在本文3.1節(jié)所述的基礎(chǔ)子份額分發(fā)方案中,會(huì)話密鑰的協(xié)商中恒有式(4)成立。
e(Qj,sj)e(Sj,Rj)=e(Qj,p)bj
(4)
證明利用參數(shù)的構(gòu)造和雙線性變換e運(yùn)算,可進(jìn)行如下推導(dǎo):
e(Qj,sj)e(Sj,Rj)=
e(Qj,bjp-rjSd)e(Sj,rjQd)=
e(Qj,bjp-rjSd)e(Sj,Qd)rj=
e(Qj,bjp-rjSd)e(Qj/P,Sdp)rj=
e(Qj,bjp-rjSd)e(Qj,Sd)rj=
e(Qj,bjp-rjSd)e(Qj,rjSd)=
e(Qj,bjp)=e(Qj,p)bj
□
證明從本文方案構(gòu)造可知,秘密Si存在用戶子集{Gi|gi1,gi2,gi3,…,gij}對(duì)應(yīng)的j個(gè)點(diǎn)(Xj,Tij)滿足g(x)=K+a1x+a2x2+a3x3+…+at-1xt-1的多項(xiàng)式,根據(jù)拉格朗日插值多項(xiàng)式的定義可知:
g(x)=K+a1x+a2x2+a3x3+…+at-1xt-1=
因此可得:
K=g(0)=
□
定理3在基礎(chǔ)子份額分發(fā)過(guò)程中,只有相應(yīng)的參與者uj(j=1,2,…,n)可以獲取秘密分發(fā)者發(fā)送的秘密數(shù)據(jù)xj(j=1,2,…,n),而其他人無(wú)法獲取該秘密數(shù)據(jù)。
證明秘密數(shù)據(jù)xj(j=1,2,…,n)的作用是作為參與者uj(j=1,2,…,n)的基礎(chǔ)子份額,其安全性是整個(gè)具有身份鎖的門(mén)限多秘密共享方案安全性的基礎(chǔ)。攻擊者需要對(duì)公告欄上的參數(shù)(cj,sj,Rj)進(jìn)行解密,才能得到秘密數(shù)據(jù)xj。而公開(kāi)數(shù)據(jù)ci需要用會(huì)話密鑰mj對(duì)其進(jìn)行解密,若要攻破mj等同于攻破對(duì)稱加密算法,此加密算法的困難性在于橢圓曲線的計(jì)算困難以及隨機(jī)數(shù)bj的隨機(jī)性。因此,除了參與者uj,其他人無(wú)法獲得秘密數(shù)據(jù)xj。
□
定理4在多重秘密共享時(shí),參與過(guò)秘密恢復(fù)的用戶uj重用基礎(chǔ)子份額xj,不會(huì)影響系統(tǒng)的安全性。
證明由定理 3 可知,除了秘密分發(fā)者Pd以外,只有參與者uj可以獲取基礎(chǔ)子份額xj,每個(gè)參與者都無(wú)法獲取其它參與者的基礎(chǔ)子份額。本文方案在秘密分發(fā)過(guò)程中,沒(méi)有直接使用基礎(chǔ)子份額xj進(jìn)行構(gòu)造,而是先引入公開(kāi)隨機(jī)數(shù)x0,再利用雙變量單向函數(shù)得到偽份額Xj=f(x0,xj),對(duì)不同的秘密Si有不同的公開(kāi)隨機(jī)數(shù)x0參與運(yùn)算,具有較高的安全性。在秘密恢復(fù)過(guò)程中,同樣沒(méi)有直接使用這些秘密信息xj進(jìn)行恢復(fù),而是使用Xj=f(x0,xj)進(jìn)行運(yùn)算。雙變量單向函數(shù)具有很好的安全性質(zhì),盡管每個(gè)參與秘密恢復(fù)的參與者uj都提供了一個(gè)由其基礎(chǔ)子份額xj計(jì)算得到的偽份額Xj,但根據(jù)雙變量單向函數(shù)的安全性質(zhì),該偽份額不會(huì)披露其真正的基礎(chǔ)子份額xj。
□
定理5在秘密恢復(fù)過(guò)程中,只有秘密Si相應(yīng)的用戶子集{Gi|gi1,gi2,gi3,…,gij}才可以通過(guò)達(dá)到門(mén)限值的t或t個(gè)以上的份額恢復(fù)秘密,而其他用戶無(wú)法恢復(fù)該秘密Si。
□
定理6本文具有身份鎖的多秘密共享方案符合門(mén)限秘密共享方案中的門(mén)限規(guī)則。
證明在門(mén)限秘密共享方案中,先假設(shè)此方案的門(mén)限為(t,n),則有2個(gè)基本條件必須滿足:(1)t或t個(gè)以上的參與者合作就可以恢復(fù)共享的秘密;(2)(t-1)個(gè)或更少的參與者合作無(wú)法恢復(fù)共享的秘密。對(duì)于本文基于身份鎖的構(gòu)造方案而言,也需要滿足門(mén)限值t,即若要恢復(fù)所共享的秘密Si,就必須重新構(gòu)造出(t-1)次Lagrange插值多項(xiàng)式g(x)。由秘密恢復(fù)的過(guò)程可知,只有t或t個(gè)以上參與者可以計(jì)算出滿足多項(xiàng)式g(x)的t或t個(gè)以上數(shù)值對(duì)(Xj,Tij),通過(guò)這t或t個(gè)以上的數(shù)值對(duì),就可以依據(jù)定理2重構(gòu)(t-1)次多項(xiàng)式g(x),從而計(jì)算出共享的秘密Si=K=g(0)。而對(duì)于(t-1)個(gè)或更少的參與者來(lái)說(shuō),最多只能提供(t-1)個(gè)關(guān)于g(x)的數(shù)值對(duì)。在這種情況下,若要計(jì)算出共享的秘密Si,等價(jià)于需要攻破Shamir的門(mén)限方案,這顯然在計(jì)算上是不可行的。因此,本文具有身份鎖的多秘密共享方案符合門(mén)限秘密共享方案中的門(mén)限規(guī)則。
□
定理7本文方案具備前向保密性,即秘密分發(fā)者Pd的私鑰泄露不會(huì)影響已共享秘密的安全性。
證明前向保密性是指當(dāng)秘密分發(fā)者Pd的私鑰Sd不小心或無(wú)意中泄露后,已經(jīng)共享秘密的安全性不會(huì)受到任何影響。針對(duì)本文方案可知,即使秘密分發(fā)者的私鑰Sd泄露,秘密分發(fā)者通過(guò)協(xié)商會(huì)話密鑰mj,發(fā)送給各參與者uj的基礎(chǔ)子份額xj也不會(huì)被任何攻擊者所獲。因?yàn)樵诿孛躍i的公開(kāi)參數(shù)中,cj=Emj(xj‖rj),Rj=rj*Qd且sj=bj*p-rj*Sd,面對(duì)求解離散對(duì)數(shù)問(wèn)題,攻擊者無(wú)法求出bj,則無(wú)法得到會(huì)話密鑰mj,也就無(wú)法得到基礎(chǔ)子份額xj,而由定理 3和定理4可知,本文方案的安全性主要依賴于參與者uj的基礎(chǔ)子份額xj的安全性。因此,秘密分發(fā)者私鑰Sd的泄露不會(huì)對(duì)之前所共享的秘密造成安全威脅,即本文方案具備前向保密性。
□
在實(shí)際通信過(guò)程中秘密分發(fā)者Pd可能給用戶uj(j=1,2,…,n)提供虛假的秘密影子,本文設(shè)計(jì)的方案可以驗(yàn)證秘密分發(fā)者所提供的基礎(chǔ)份額和秘密份額是否屬實(shí)。下面將證明本文方案具有欺騙行為的檢測(cè)功能。
命題1驗(yàn)證秘密分發(fā)者提供的基礎(chǔ)份額是否屬實(shí)。
□
命題2驗(yàn)證秘密分發(fā)者提供的秘密份額是否屬實(shí)。
□
本文提出的具有身份鎖的門(mén)限多秘密共享方案結(jié)合了CRT的身份鎖控制算法,避免了現(xiàn)有秘密共享方案中,不同秘密的訪問(wèn)控制結(jié)構(gòu)可能相同的缺點(diǎn)。表2給出了本文方案和其他方案的性能比較情況。
從表2可以看出,在這些秘密共享方案中:
(1)只有本文方案提供了恢復(fù)秘密時(shí)對(duì)參與者的身份控制,對(duì)于不同的秘密,由不同的用戶子集來(lái)參與運(yùn)算恢復(fù)秘密,具有更好的應(yīng)用價(jià)值,可用于電話會(huì)議和文件分發(fā)等應(yīng)用場(chǎng)景。
(2)本文對(duì)不同的秘密Si,引入rj=hmj(xj)來(lái)驗(yàn)證參與者身份,減少了用戶盲目計(jì)算的情況,而文獻(xiàn)[7-9]都是利用NB來(lái)公布有效的參與用戶,這種做法會(huì)引來(lái)惡意敵手的主動(dòng)攻擊。
(3)在秘密份額重用方面,本文方案與文獻(xiàn)[8,9]提出的方案達(dá)到一樣的效果,每個(gè)參與者的秘密份額可以用于多次秘密共享過(guò)程而無(wú)需更新;文獻(xiàn)[7]的方案在每次秘密共享過(guò)程前,都需要重新分發(fā)秘密份額,通信量較大。
(4)在安全信道方面,本文方案使用會(huì)話密鑰的協(xié)商方案,用會(huì)話密鑰對(duì)秘密數(shù)據(jù)進(jìn)行保護(hù),不需要安全信道;而在文獻(xiàn)[7]提出的方案中,預(yù)設(shè)了安全通道,且后期需維護(hù)安全信道,以保證方案的安全性。
(5)本文可以提供參與者對(duì)秘密分發(fā)者分發(fā)份額的驗(yàn)證功能,可以預(yù)防分發(fā)者可能出現(xiàn)的各種欺騙,增強(qiáng)了系統(tǒng)的安全性,也減少了參與者無(wú)效的計(jì)算。文獻(xiàn)[7-9]也提供了對(duì)秘密分發(fā)者和參與者的驗(yàn)證,保證了方案可有效檢測(cè)欺騙行為。本文中參與者是利用公開(kāi)參數(shù)檢測(cè)份額進(jìn)行驗(yàn)證,確保了方案的實(shí)用性和正確性。
(6)在安全性方面,文獻(xiàn)[7]提出的方案通過(guò)安全信道進(jìn)行秘密份額的分發(fā),秘密分發(fā)者私鑰的泄露必將影響秘密份額的安全性,從而也影響共享秘密的安全性。而本文方案基于協(xié)商密鑰的方案具有前向保密性;且本文引入橢圓曲線計(jì)算,保證了會(huì)話密鑰的安全性,從而保證了秘密數(shù)據(jù)的安全性。通過(guò)分析可知,本文方案更有效,也更符合實(shí)際應(yīng)用。
Table 2 Performance analysis表2 性能分析
本文提出了一種具有身份鎖的門(mén)限多秘密共享方案,針對(duì)不同秘密,基于CRT的身份鎖控制算法構(gòu)造不同的安全鎖,實(shí)現(xiàn)秘密份額只能由對(duì)應(yīng)用戶集合中的用戶打開(kāi),而系統(tǒng)中的其他用戶無(wú)法打開(kāi),且不同的秘密會(huì)存在不同的安全鎖。同時(shí),本文方案子秘密還可重復(fù)使用,且可檢測(cè)秘密分發(fā)者欺騙行為,也不需要通過(guò)安全通道來(lái)傳輸秘密份額,具有很好的安全性和實(shí)用性。本文的方案可應(yīng)用于門(mén)限秘密共享更復(fù)雜的場(chǎng)景。未來(lái)將在本文方案的基礎(chǔ)上,考慮如何進(jìn)行參與者的欺騙檢測(cè)和抵抗參與者的惡意攻擊。