鄧銀娟,杜紅珍,馬巧梅
(1.寶雞文理學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院,陜西寶雞 721013;2.寶雞文理學(xué)院計(jì)算機(jī)科學(xué)學(xué)院,陜西寶雞 721013)
在電子醫(yī)療檔案系統(tǒng)中,傳統(tǒng)的數(shù)字簽名會(huì)造成用戶身份信息泄露,從而給用戶隱私帶來(lái)威脅。屬性基數(shù)字簽名不僅可以保護(hù)簽名者的身份信息,而且可以實(shí)現(xiàn)細(xì)粒度的訪問(wèn)結(jié)構(gòu)。2005 年,文獻(xiàn)[1]首次定義了基于屬性的密碼體制,該體制用一組屬性集合定義用戶。文獻(xiàn)[2]中首次提出了屬性簽名ABS(Attribute-Based Signature)的概念,方案的提出是基于屬性加密的,在該方案中訪問(wèn)結(jié)構(gòu)為單層屬性。屬性簽名在訪問(wèn)控制方面具有極好的優(yōu)勢(shì),國(guó)內(nèi)外學(xué)者們?cè)谄涔δ苄?、靈活性以及效率等方面提出了各種改進(jìn)方案[3-8]。然而,這些屬性簽名所用私鑰一般都由中心化的機(jī)構(gòu)產(chǎn)生,從而會(huì)產(chǎn)生安全隱患。在無(wú)證書公鑰密碼體制中[9-14],簽名者的私鑰不完全由中心生成,簽名私鑰由KGC(Key Generate Center)和簽名者共同生成,因此可以有效地解決上述問(wèn)題。
為了實(shí)現(xiàn)安全靈活的訪問(wèn)控制,文中在分析現(xiàn)有樹形訪問(wèn)結(jié)構(gòu)屬性簽名的基礎(chǔ)上,利用無(wú)證書簽名技術(shù),提出了一種新的無(wú)證書的屬性基簽名方案。該方案的創(chuàng)新點(diǎn)有:1)解決了屬性公鑰密碼體系下固有的密鑰托管問(wèn)題,同時(shí)保留其不需要公鑰證書的特性。2)對(duì)新設(shè)計(jì)算法的安全性進(jìn)行了嚴(yán)格的數(shù)學(xué)證明,并且通過(guò)效率分析表明簽名和驗(yàn)證過(guò)程僅使用一次雙線性對(duì)運(yùn)算,計(jì)算效率得到很大的提高。最后通過(guò)仿真實(shí)驗(yàn),與效率較高的屬性簽名算法[4]比較,結(jié)果表明,該方案具有更好的簽名和驗(yàn)證效率。
雙線性映射相關(guān)定義請(qǐng)參考文獻(xiàn)[5]。
電子醫(yī)療檔案系統(tǒng)中用戶更新信息的系統(tǒng)架構(gòu)由4 部分組成:用戶、用戶中心、密鑰生成中心、存儲(chǔ)系統(tǒng)。應(yīng)用系統(tǒng)架構(gòu)如圖1 所示。
圖1 應(yīng)用系統(tǒng)架構(gòu)圖
具體操作流程如下:
1)系統(tǒng)需要更新某類用戶信息,下發(fā)該類用戶的樹形訪問(wèn)結(jié)構(gòu)給KGC,并通知該類用戶及時(shí)將信息上傳到存儲(chǔ)系統(tǒng)更新。
2)用戶選擇自己的簽名公私鑰對(duì)和傳輸公私鑰對(duì),并將傳輸公鑰給KGC,申請(qǐng)用戶的部分私鑰,并驗(yàn)證公鑰。
3)KGC 傳輸加密后的部分私鑰給用戶。
4)用戶對(duì)自己要更新的信息進(jìn)行簽名,并將簽名、要更新的信息以及用戶屬性集合發(fā)送給用戶中心。
5)用戶中心驗(yàn)證用戶屬性集合的邏輯合理性,并將簽名、待更新的信息以及用戶屬性集合發(fā)送給存儲(chǔ)系統(tǒng)。
6)存儲(chǔ)系統(tǒng)驗(yàn)證簽名,若簽名驗(yàn)證通過(guò),則更新用戶信息。
秘密共享方法請(qǐng)參考文獻(xiàn)[15]。
Case1:當(dāng)τ為關(guān)系“or”時(shí),令τ的每個(gè)子結(jié)點(diǎn)的值為s;
Case2:當(dāng)τ為關(guān)系“and”時(shí),τ的子結(jié)點(diǎn)數(shù)量為u,前u-1 個(gè)子結(jié)點(diǎn)為隨機(jī)值,最后一個(gè)子結(jié)點(diǎn)為
Case3:當(dāng)τ為關(guān)系“threshold”時(shí),如果結(jié)點(diǎn)門限值為h,那么隨機(jī)選擇一個(gè)h-1次的多項(xiàng)式f(x),使得f(0)=s;索引次序?yàn)榈淖咏Y(jié)點(diǎn),取值為f(i)。
從根結(jié)點(diǎn)起,由上述法則為每個(gè)結(jié)點(diǎn)自頂向下、遞歸地賦值,最后完成所有葉結(jié)點(diǎn)的賦值。
由秘密共享辦法定義一個(gè)與其可逆的遞歸算法Verify(Node),該算法對(duì)象Node是樹形訪問(wèn)結(jié)構(gòu)的各個(gè)結(jié)點(diǎn),分情況處理如下[16]:
Case1:當(dāng)Node結(jié)點(diǎn)不是葉結(jié)點(diǎn),關(guān)系為“and”時(shí),遍歷此結(jié)點(diǎn)的所有子結(jié)點(diǎn),并將所有子結(jié)點(diǎn)的返回值作乘積,結(jié)果為該結(jié)點(diǎn)算法的返回值;若存在一個(gè)子結(jié)點(diǎn)不滿足要求,則返回驗(yàn)證失??;
Case2:當(dāng)Node結(jié)點(diǎn)是非葉結(jié)點(diǎn),關(guān)系是“or”時(shí),遍歷此結(jié)點(diǎn)的所有子結(jié)點(diǎn),當(dāng)遇到首個(gè)滿足條件的子結(jié)點(diǎn)時(shí),遍歷停止,并且返回該子結(jié)點(diǎn)的值,即為此結(jié)點(diǎn)的驗(yàn)證值;若所有子結(jié)點(diǎn)都不滿足要求,則返回驗(yàn)證失?。?/p>
Case3:當(dāng)Node結(jié)點(diǎn)是非葉結(jié)點(diǎn),關(guān)系為“threshold”,且門限值為h時(shí),遍歷此結(jié)點(diǎn)的所有子結(jié)點(diǎn)。當(dāng)子結(jié)點(diǎn)中滿足要求的個(gè)數(shù)大于或等于h時(shí),選取其中h個(gè)結(jié)點(diǎn),記集合為H,計(jì)算的值并返回;當(dāng)子結(jié)點(diǎn)中滿足要求的個(gè)數(shù)小于h時(shí),返回驗(yàn)證失敗。
Case4:當(dāng)Node結(jié)點(diǎn)是葉結(jié)點(diǎn),且葉結(jié)點(diǎn)的屬性值滿足i∈w時(shí),返回σi,當(dāng)i?w時(shí),返回⊥。
定義1(拉格朗日插值)設(shè)f(x)是值域Zp上的一個(gè)h-1 次多項(xiàng)式,設(shè)元素個(gè)數(shù)為h的集合為S?Zp,那么可以通過(guò)下面公式求得f(x):
1)系統(tǒng)建立階段
setup(λ):輸入安全參數(shù)λ,選取一個(gè)階為q(q為大素?cái)?shù),且q>2λ)的加法群G1和乘法群G2,設(shè)g為G1的生成元。e:G1×G1→G2是一個(gè)雙線性映射,H:{0,1}?→為抗碰撞哈希函數(shù),設(shè)屬性集合為U={1,2,...,n} 。隨機(jī)選取,并定義樹形訪問(wèn)結(jié)構(gòu)為T。參數(shù)定義如下:
params={g,G1,G2,e,H},MSK=y。
2)密鑰值建立階段
Set-Secret-Value(params):用戶隨機(jī)選取s,SKs=s為用戶傳輸私鑰,SKx=x為用戶簽名私鑰,計(jì)算公鑰PKs=gs,PKx=gx。
3)部分私鑰提取階段
Extract-partial-private-key(params,w,MSK,PKs,T):w為用戶屬性,MSK為系統(tǒng)主密鑰,PKs為用戶的傳輸公鑰,MSK為共享秘密,由秘密共享方法將其賦值給樹形訪問(wèn)結(jié)構(gòu)的所有結(jié)點(diǎn)。設(shè)葉結(jié)點(diǎn)的屬性集合為L(zhǎng),葉結(jié)點(diǎn)的賦值為{yi,i∈L},隨機(jī)選取,則定義集合S={si,1 ≤i≤n},其中:
4)私鑰建立階段
5)簽名階段
6)驗(yàn)證階段
Verify-Sign(params,T,m,PK,PKx,σ):params為系統(tǒng)參數(shù),樹形訪問(wèn)結(jié)構(gòu)為T,消息為m,樹形訪問(wèn)結(jié)構(gòu)根結(jié)點(diǎn)為τ,驗(yàn)證簽名等式如下:
方案的正確性證明如下。
當(dāng)Node為樹形訪問(wèn)結(jié)構(gòu)根結(jié)點(diǎn)τ時(shí),。驗(yàn)證簽名:
定理1:該方案在選擇屬性攻擊下,滿足匿名性。
證明:假設(shè)一個(gè)多項(xiàng)式時(shí)間敵手A模擬簽名者。設(shè)C為挑戰(zhàn)者應(yīng)答A的詢問(wèn)。模擬交互過(guò)程如下:選擇兩個(gè)長(zhǎng)度相同的屬性集合{w0,w1},C任選其一進(jìn)行簽名,則敵手A正確區(qū)分簽名及部分私鑰的概率可忽略。
1)系統(tǒng)建立階段:C運(yùn)行系統(tǒng)生成算法Setup(λ),生成系統(tǒng)參數(shù)params,系統(tǒng)主密鑰MSK={y} 。
2)密鑰值建立階段:敵手A選取隨機(jī)數(shù)s,x∈,計(jì)算PKs=gs,PKx=gx,SKs=s,SKx=x。
3)部分私鑰提取階段:挑戰(zhàn)者C隨機(jī)選擇一個(gè)比 特b∈{0,1},并執(zhí)行算法 Extract-partial-private-key (params,wb,MSK,PKs)以生成部分私鑰,,其中i∈U,為隨機(jī)選取的;生成本次簽名的系統(tǒng)公鑰
4)私鑰建立階段:A運(yùn)行Set-Private-Key(params,SKpb,SKx,SKs),生成SK={SKR,SKx} 。
5)簽名階段:A運(yùn)行Sign(params,SK,m),生成,其中
6)驗(yàn)證階段:C運(yùn)行Verify-Sign(params,T,m,PK,PKx,σb),給出簽名的驗(yàn)證結(jié)果。
7)挑戰(zhàn)階段:敵手已知消息{w0,w1}、部分私鑰SKPb、簽名σb={σ1,σ2} 以及簽名的驗(yàn)證結(jié)果。但簽名過(guò)程中僅有部分私鑰SKpb含有屬性信息,而經(jīng)過(guò)r1及ti的隨機(jī)化,敵手無(wú)法正確區(qū)分屬性屬于哪個(gè)集合。
綜上所述,敵手A成功輸出b∈{0,1} 的概率為,故方案滿足匿名性。
定理2:在標(biāo)準(zhǔn)模型下,提出的無(wú)證書屬性基簽名方案滿足不可偽造性。
證明:不失一般性,假設(shè)存在攻擊者A1(不知系統(tǒng)主密鑰但可以對(duì)用戶的公鑰進(jìn)行任意的替換)、A2(知道系統(tǒng)的主密鑰不能替換目標(biāo)用戶的公鑰),定義攻擊游戲Game1,Game2,在游戲過(guò)程中C為挑戰(zhàn)者,模擬挑戰(zhàn)詢問(wèn)。
1)Game1:模擬攻擊者A1的偽造游戲
系統(tǒng)參數(shù)設(shè)置:挑戰(zhàn)者C執(zhí)行系統(tǒng)參數(shù)生成算法Setup(λ),從而生成系統(tǒng)參數(shù)params={g,G1,G2,e,H}及主密鑰MSK={y} 。C發(fā)送params給攻擊者A1。
①詢問(wèn)階段
秘密值詢問(wèn):A1對(duì)用戶i的秘密值進(jìn)行詢問(wèn),C運(yùn)行算法Set-Secret-Value(params)生成SKxi=xi和SKsi=si。如果用戶i的部分私鑰提取詢問(wèn)已經(jīng)被執(zhí)行,則輸出⊥,否則將SKxi和SKsi發(fā)送給用戶A1。
部分私鑰提取詢問(wèn):A1對(duì)用戶i的部分私鑰進(jìn)行詢問(wèn),C運(yùn)行 Extract-Partial-Private-key(params,w,MSK,PKsi)生成部分私鑰SKPi=如果已經(jīng)執(zhí)行了用戶i的秘密值詢問(wèn),則輸出⊥,否則發(fā)送SKPi給A1。
簽名詢問(wèn):A1對(duì)用戶i在消息mj的簽名進(jìn)行詢問(wèn),C運(yùn)行算法Sign(params,SKi,mj)輸出簽名σi={σ1i,σ2i},其中
②偽造階段
A1詢問(wèn)以上信息后,輸出一個(gè)簽名者i在消息m?上的有效簽名σ?。簽名需滿足下面兩個(gè)保證條件:a.簽名者i未同時(shí)提交秘密值詢問(wèn)和部分私鑰提取詢問(wèn);b.沒有對(duì)消息m?進(jìn)行過(guò)簽名詢問(wèn);
以下分析A1在m?上的簽名σ?的有效性概率,SK={SKR,SKx} 需A1通過(guò)詢問(wèn)獲取,生成簽名的必要條件。SKx可以由秘密值詢問(wèn)獲取,SKR=,SKp需要經(jīng)過(guò)部分私鑰提取詢問(wèn)獲得,SKs可以通過(guò)秘密值詢問(wèn)而獲取,SKR及SKx是經(jīng)過(guò)Set-Secret-Value 算法隨機(jī)生成的,SKp的隨機(jī)性由Extract-Partial-Private-key 算法的ri和ti保證,由條件a 通過(guò)計(jì)算SK偽造有效簽名的概率可以忽略。在無(wú)證書簽名詢問(wèn)中,r2保證了詢問(wèn)簽名σi的隨機(jī)性,由條件b 通過(guò)詢問(wèn)簽名方式獲取有效簽名的概率可忽略。
因此,Game1 中A1獲取勝利的概率可忽略。
2)Game2:模擬攻擊者A2的偽造游戲
系統(tǒng)參數(shù)設(shè)置同Game1,C將params和MSK發(fā)送給攻擊者A2。
①詢問(wèn)階段
秘密值詢問(wèn):同Game1,C將PKxi和PKsi發(fā)送給攻擊者A2;
部分私鑰提取詢問(wèn):同Game1,A2可獲取wi,SKpi;
簽名詢問(wèn):同Game1;
②偽造階段
A2通過(guò)以上詢問(wèn),輸出一個(gè)簽名者i對(duì)消息m?的有效簽名σ?。
簽名滿足保證條件:消息m?未經(jīng)簽名者i的簽名詢問(wèn)。
以下分析簽名的有效性:因?yàn)锳2不能執(zhí)行公鑰替換,所以A2輸出的簽名驗(yàn)證必須為合法用戶的公鑰,A2已通過(guò)秘密值詢問(wèn)獲取一系列的用戶有效公鑰值。由于簽名需要相對(duì)應(yīng)的用戶私鑰才能使偽造的簽名驗(yàn)證通過(guò),而,根據(jù)公鑰要求解私鑰xi相當(dāng)于解離散對(duì)數(shù)問(wèn)題,因此,A2偽造成功簽名的概率可忽略,從而贏得Game2 游戲的概率可忽略。
綜上所述,A1贏得Game1 的概率可忽略,A2贏得Game2 的概率可忽略,所以提出的無(wú)證書的屬性基簽名方案滿足不可偽造性。
表1 給出了提出方案與現(xiàn)有效率較高的樹形訪問(wèn)結(jié)構(gòu)屬性簽名方案在功能上的對(duì)比。
表1 方案功能比較
表2 給出了提出方案與現(xiàn)有方案在性能上的對(duì)比。ω表示簽名者擁有的屬性個(gè)數(shù),|G1|表示G1中元素的長(zhǎng)度,|G2|表示G2中元素的長(zhǎng)度,l表示訪問(wèn)結(jié)構(gòu)中所有屬性的個(gè)數(shù),m表示消息的長(zhǎng)度,S表示訪問(wèn)結(jié)構(gòu)中用到的所有內(nèi)結(jié)點(diǎn)的集合,內(nèi)結(jié)點(diǎn)集合的元素個(gè)數(shù)表示為ξ=|S|,h表示為訪問(wèn)結(jié)構(gòu)中所有“threshold”中門限的和,P和EXP分別表示雙線性對(duì)運(yùn)算和指數(shù)運(yùn)算的時(shí)間。
通過(guò)表1 和表2 的比較可以看出,提出方案在功能上具有無(wú)證書性,可以有效地削弱KGC 的權(quán)限,避免密鑰托管問(wèn)題。在性能上,提出方案比其他兩個(gè)方案具有更短的密鑰長(zhǎng)度和簽名長(zhǎng)度,并且在簽名生成和驗(yàn)證開銷上花費(fèi)更短的時(shí)間。
表2 方案性能比較
實(shí)驗(yàn)中樹形訪問(wèn)結(jié)構(gòu)如圖2 所示,為3 層結(jié)構(gòu),其中“threshold”的門限值為2,簽名者的屬性集合ω={1,2,4,5,7}。圖3 給出了在Inter(R) Core(TM)2 DuoT6670 CPU 2.2GHz 2.00 GB RAM 的計(jì)算機(jī)上,提出方案與文獻(xiàn)[4]算法的平均運(yùn)行時(shí)間對(duì)比,用JPBC 庫(kù)在Eclipse 上實(shí)現(xiàn)。
圖2 樹形訪問(wèn)結(jié)構(gòu)示意圖
圖3 算法的平均運(yùn)行時(shí)間對(duì)比
提出的方案可用于電子醫(yī)療檔案系統(tǒng)的用戶信息更新的操作方案,使用無(wú)證書的屬性基簽名來(lái)保證用戶更新信息的完整性。無(wú)證書密碼體制的使用,削弱了密鑰生成中心的權(quán)限,解決了傳統(tǒng)的密鑰托管問(wèn)題。在系統(tǒng)安全性得到提高的情況下,效率也有了很大的提升。