国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于區(qū)塊鏈和動態(tài)累加器的跨域認證方案

2021-08-23 09:08黃曉芳
計算機測量與控制 2021年8期
關鍵詞:跨域證書動態(tài)

張 柯,黃曉芳

(西南科技大學 計算機科學與技術學院,四川 綿陽 621010)

0 引言

隨著互聯(lián)網(wǎng)和數(shù)字經濟的飛速發(fā)展,服務數(shù)字化的程度也在不斷提高。例如,人們經常使用電子商務、在線支付、在線政務等,這些都需要可靠的安全機制進行保障,公鑰基礎設施(PKI,public key infrastructure)[1-2]利用公鑰技術和數(shù)字證書提供服務,能夠為用戶在開放環(huán)境中進行安全的通訊提供保障。現(xiàn)有的證書頒發(fā)機構(CA,certificate authority)其公鑰基礎設施可能使用不同的密鑰體系,不同的安全和認證策略,導致需要各自維護自己的信任域[3],當單個信任域提供的服務無法滿足用戶的需求,用戶需要進行跨域訪問,由此出現(xiàn)跨域認證問題。如何消除信任孤島,打通信任體系,實現(xiàn)各CA之間證書的互認互通是亟需解決的問題。

國內外已經有大量的學者針對跨域認證進行了相關研究,并取得了一些成果,提出了一系列跨域認證模型。文獻[4]提出了PKI域間認證模型,包括層次模型,網(wǎng)狀模型和橋CA模型等,但建立橋CA存在實際困難。顏海龍等人[5]提出了CA互信互認標準體系框架,制定了多CA兼容的數(shù)字證書格式,將現(xiàn)有的數(shù)字證書格式規(guī)范化。彭博等人[6]利用橋CA實現(xiàn)不同CA的交叉認證,利用層次模型實現(xiàn)橋CA的互信,從理論上構建了跨域認證模型。以上研究成果表明,CA跨域認證仍然存在諸多問題有待解決。

區(qū)塊鏈作為驅動比特幣的底層技術,其具有去中心化,防篡改,透明化的特性。其本質是一個分布式不可篡改的賬本,底層依靠共識機制,點對點傳輸,加密算法等組合而成。區(qū)塊鏈是按照時間順序將數(shù)據(jù)以一定的方式進行組合并形成的鏈式結構,將用戶的身份信息存入?yún)^(qū)塊鏈中,能夠確保數(shù)據(jù)的安全和非法篡改。W.Wang等人[7]首次提出了基于區(qū)塊鏈的跨域認證模型,隨著區(qū)塊鏈的數(shù)據(jù)量不斷增大,存在著用戶跨域認證效率不高的問題,周致成等人[8]等針對傳統(tǒng)PKI跨域認證方案的效率問題,通過與區(qū)塊鏈技術相結合,提出了基于區(qū)塊鏈的跨域認證方案,減少了簽名與驗證的次數(shù),提升了跨域認證的效率,但用戶仍然需要申請對應信任域證書,產生額外的證書開銷,同時撤銷需要多次操作區(qū)塊鏈,效率不高。為了提升異構域的認證效率,馬曉婷等人[9]提出了一種基于區(qū)塊鏈技術的跨異構域認證方案,實現(xiàn)了PKI域和IBC域之間高效安全的通訊,簡化了重認證過程,降低了用戶端計算量。黃穗等人[10]針對區(qū)塊鏈跨域認證效率低的問題,提出了利用布谷鳥過濾器提升證書的查詢效率,但其存在著誤刪的情況,難以適應重要場合的跨域認證場景。

針對以上問題,本文提出了基于區(qū)塊鏈和動態(tài)累加器的跨域認證方案,通過將不同的CA加入到區(qū)塊鏈中作為分布式信任中心,消除了傳統(tǒng)CA中心化信任的弊端。通過利用智能合約構造動態(tài)累加器,避免了傳統(tǒng)區(qū)塊鏈跨域認證中證書的操作難題,提升了跨域認證效率,減少證書存儲開銷,實現(xiàn)證書的高效查詢、注冊和撤銷操作。

1 相關技術

1.1 區(qū)塊鏈技術

區(qū)塊鏈是一種去中心化的分布式不可篡改賬本[11],將數(shù)據(jù)按照時間先后順序組合而成的塊鏈式結構,依托密碼學方式保證區(qū)塊鏈的防篡改和不可偽造,通過共識機制將數(shù)據(jù)寫入到區(qū)塊鏈中,保證數(shù)據(jù)的一致性,利用智能合約進行數(shù)據(jù)的處理,能夠在不安全的環(huán)境中進行可靠的信息交換,實現(xiàn)不同實體之間的信任傳遞[12]。

智能合約[13]是具有自動執(zhí)行協(xié)議能力的計算機協(xié)議,合約包含可執(zhí)行的代碼和數(shù)據(jù)兩部分,允許用戶通過智能合約對區(qū)塊鏈的數(shù)據(jù)進行相關的操作并對用戶的輸入和輸出結果做出響應。比特幣(BTC,Bitcoin)中的智能合約使用依靠的是UTXO(unspent transaction outputs)模型,但合約功能有限,只能實現(xiàn)交易功能。以太坊依靠以太坊虛擬機(EVM,Ethereum virtual machine)運行智能合約,通過合約地址進行智能合約的調用與執(zhí)行,消耗GAS作為智能合約執(zhí)行成本。超級賬本(Hyperledger)中鏈碼(Chaincode)支持多種語言,其被編譯成一個獨立的應用程序,運行于隔離的Docker容器中。

通過將區(qū)塊鏈跨域認證協(xié)議和密碼累加器機制結合,利用智能合約構造出動態(tài)累加器,將區(qū)塊鏈證書指紋存入動態(tài)累加器中,各節(jié)點通過共識機制將數(shù)據(jù)寫入到區(qū)塊鏈賬本中,能夠降低證書存儲成本。

1.2 動態(tài)累加器

密碼學累加器[14]最早是由 Josh Benaloh 和 Michael de Mare 提出的,它能夠對一組元素進行綁定操作,并能夠對集合中的任何元素提供簡短的成員關系或者非成員關系證明。相較于其他累加器,動態(tài)累加器[15-16]能夠實現(xiàn)添加或移除成員時間復雜度不會隨著累加器中成員的數(shù)量增加而增加,其時間復雜度為O(1)[16],具有高效的成員添加和刪除效率。Wang P等人[17]給出了動態(tài)累加器的定義,下面給出動態(tài)累加器的形式化描述。

KeyGen(k,M):為了實例化參數(shù)而執(zhí)行的概率算法,將安全參數(shù)k和上限M作為入?yún)?,將累加器參?shù)P=(Pu,Pr)作為返回結果,其中Pu表示累加器的公鑰,Pr表示累加器的私鑰。

AccVal(L,P):用于計算累加值的概率算法,通過入?yún)和一組元素L={c1,c2,....,cm}(1

WitGen(ac,Al,P):見證生成算法,為每一個元素創(chuàng)建成員見證的概率算法。輸入ac、Al和參數(shù)P,輸出對于每一個ci(i=1,2,....,m)的見證值。

Verify(c,W,v,Pu):驗證算法,用來驗證給定的值是否為成員身份的確定性算法。輸入元素c、證據(jù)W、累加值v和公鑰Pu,通過證據(jù)W來驗證c是否被累計入v,返回YES或者NO。

DelEle(L+,ac,v,P):從累加值中刪除某些元素的概率算法,將表示為待刪除的元素L-={c1-,c2-,....,ci-}(L-?L,1≤i≤M-m),輔助信息ac,累加值v和參數(shù)P作為入?yún)?,返回新的累加值v′保持和集合LL-一致,更新輔助信息ac和au。

2 基于區(qū)塊鏈和動態(tài)累加器跨域認證方案

本文采用區(qū)塊鏈3種類型之一的聯(lián)盟鏈,其具有拓展性強和共識速度快等特點,適合跨域認證場景下大規(guī)模認證操作,鏈上各CA節(jié)點需要經過授權才能夠加入,CA節(jié)點作為各個信任域的根信任節(jié)點,主要作用是負責驗證用戶身份的真實性和頒發(fā)區(qū)塊鏈證書,同時接受跨域認證用戶的請求,生成區(qū)塊鏈跨域認證證書。區(qū)塊鏈賬本數(shù)據(jù)無需中心化的可信中心,通過多個CA節(jié)點共同維護,寫入賬本的數(shù)據(jù)需要大多數(shù)節(jié)點的同意,區(qū)塊鏈上的數(shù)據(jù)是公開透明的,避免了傳統(tǒng)基于PKI的數(shù)字證書存在的中心化信任和透明度缺失的問題。針對不同CA下用戶跨域認證問題,通過與區(qū)塊鏈技術結合,形成統(tǒng)一的區(qū)塊鏈證書,解決了傳統(tǒng)跨域認證中存在的證書路徑復雜,交叉互信難,單點故障問題。利用區(qū)塊鏈將各CA形成統(tǒng)一的信任聯(lián)盟,使得用戶持有的區(qū)塊鏈證書在不同信任域中得到認可,消除信任孤島,提升跨域認證的效率,降低證書的管理成本。通過引入動態(tài)累加器提高身份認證的效率,降低節(jié)點的存儲開銷。本章主要設計了區(qū)塊鏈證書模型和跨域認證協(xié)議。

2.1 區(qū)塊鏈證書

區(qū)塊鏈證書相較于傳統(tǒng)的數(shù)字證書[2],減少了簽名模塊部分,減輕了CA節(jié)點計算驗證的壓力。同時為了滿足動態(tài)累加器的需求,在文獻[7]提出的區(qū)塊鏈證書基礎上引入了當前累加值到區(qū)塊鏈證書中。本文設計的區(qū)塊鏈證書如圖1所示。

2.2 協(xié)議設計

傳統(tǒng)的基于區(qū)塊鏈的跨域認證模型[7]需要對區(qū)塊鏈進行查詢操作,隨著區(qū)塊鏈數(shù)據(jù)的增加,查詢耗時會線性增長,針對跨域認證中高并發(fā)的場景下,現(xiàn)有的方案無法進行高效的查詢和插入操作的問題,結合密碼學累加器,設計基于區(qū)塊鏈和累加器的跨域認證流程,認證流程如圖2所示。

1)UA→BCAB:用戶UA向CAB發(fā)送區(qū)塊鏈跨域認證請求。

2)BCAB→UA:{R1}:CAB節(jié)點收到請求響應后,將生成的隨機數(shù)R1發(fā)送給UA。

3)UA→BCAB:{BCertA,SignpriUA(R1),R1}:UA將自己的區(qū)塊鏈證書和CAB傳遞過來的R1進行簽名值以及R1返回給CAB。

4)BCAB→BCAA:{GetCertCAA,R2}:CAB通過證書驗證簽名值是否有效,檢查BCertA是否過期,根據(jù)證書中的頒發(fā)者向CAA節(jié)點請求獲得CAA根節(jié)點區(qū)塊鏈證書和隨機數(shù)R2。

5)BCAA→BCAB:{BCertCAA,R2}:CAA節(jié)點收到來自CAB節(jié)點的請求后,返回給CAB自己的證書和隨機數(shù)R2。

6)BC→BCAB:{BcertA,CAB}:將生成的跨域證書BCertA,CAB發(fā)送給CAB并將生成的哈希值通過節(jié)點之間的共識算法寫入到區(qū)塊鏈中。

7)BCAB→UA:{BcertA,CAB}:CAB將跨域證書BCertA,CAB發(fā)送UA,完成UA和CAB之間的跨域認證。

3 關鍵智能合約設計

傳統(tǒng)區(qū)塊鏈查詢數(shù)據(jù)的方式需要遍歷整個區(qū)塊鏈,隨著區(qū)塊鏈的體積不斷增大,查詢效率會變得低下。本文通過利用智能合約構造動態(tài)累加器,將遍歷區(qū)塊鏈中數(shù)據(jù)的方式替換為證明成員在累加器中,使得查詢的時間復雜度從O(n)能夠降低至O(1),降低了查詢耗時,提升了跨域認證的效率。

本章主要描述了基于Hyperledger Fabric進行基于智能合約實現(xiàn)動態(tài)累加器的區(qū)塊鏈證書成員添加,區(qū)塊鏈證書成員證明,區(qū)塊鏈證書成員刪除的鏈碼實現(xiàn)。

3.1 區(qū)塊鏈跨域證書添加

當節(jié)點成功驗證用戶身份后,從區(qū)塊鏈賬本中讀取當前累加器對象,通過用戶提交的證書信息生成區(qū)塊鏈證書,并通過sha256(cert)生成證書的指紋和隨機數(shù)n,使得mem=H(sha256(cert),n)滿足裴蜀定理,動態(tài)累加器首先通過成員搜索函數(shù)verifyMembership驗證當前待添加的證書是否已經存在,若未存在則動態(tài)累加器acc通過proveMembership計算并生成新的累加值accValue和用戶身份信息對應見證witness。算法描述如算法1所示:

算法1:區(qū)塊鏈跨域證書添加

1)Input: ctx,certValue

2)Output: accVaule,witness

3)ChaincodeStub stub = ctx.getStub();

4)byte[] ojectBytes = stub.getState(Accumulator.class.getSimpleName());

5)Accumulator acc = deserialize(ojectBytes);

6)Integer mem = H(sha256(cert),n)

7)witness1=acc .proveMembership(sha256(cert,n));

8)return accVaule,witness;

3.2 區(qū)塊鏈跨域證書驗證

用戶將區(qū)塊鏈證書cert、見證值witness、當前證書累加值value傳遞給節(jié)點,節(jié)點讀取賬本的數(shù)據(jù),反序列化動態(tài)累加器對象,通過傳入的cert,n,生成區(qū)塊鏈成員對象mem用來驗證區(qū)塊鏈證書是否在累加器中,若驗證通過返回true,驗證不通過返回false。其中value表示當前累加器值,mem表示證書成員指紋,n表示隨機數(shù)由區(qū)塊鏈證書添加時生成,witness表示通過累加器生成的見證值。算法描述如算法2所示:

算法2:區(qū)塊鏈跨域證書成員驗證

1)Input: ctx,value,mem,witness

2)Output: 驗證響應 success/false

3)ChaincodeStub stub = ctx.getStub();

4)byte[] ojectBytes = stub.getState(Accumulator.class.getSimpleName());

5)Accumulator acc = deserialize(ojectBytes);

6)boolean verifyPass = acc.verifyMembership(value, mem,n, witness, acc.getN());

7)if(witness.modPow(mem,acc.getN()).comparteTo(A)==0){

8)return true;

9)}

10)return false;

3.3 區(qū)塊鏈證書刪除

首先從區(qū)塊鏈賬本中獲取當前動態(tài)累加器對象,通過算法2驗證區(qū)塊鏈證書是否在累加器中,若驗證通過,從累加器中去掉該成員后重新計算累加器的值,返回刪除區(qū)塊鏈證書成員操成功響應當前并通過區(qū)塊鏈節(jié)點共識將累加器寫入到賬本中,若驗證失敗則返回刪除成員失敗,終止操作。

算法3:區(qū)塊鏈證書刪除

1)Input:ctx,mem

2)Output: 刪除響應 success/false

3)ChaincodeStub stub = ctx.getStub();

4)byte[] ojectBytes = stub.getState(Accumulator.class.getSimpleName())

5)Accumuldator acc = deserialize(ojectBytes);

6)BigInteger product = BigInteger.ONE;

7)for(BigInteger cert:certs){

8)product =product.multiply(H(sha256(cert),cert.getNonce())

9)}

10)acc.value = acc.value.modPow(product,acc.getN())

11)return acc.value;

4 安全性分析及實驗

4.1 安全性分析

4.1.1 證書存儲安全性

將區(qū)塊鏈證書經過Hash(bcer)=m后存儲在區(qū)塊鏈上,Hash函數(shù)的單向性保證了攻擊者無法通過m反推cert,通過Hash的抗碰撞性能夠保證選擇任意的區(qū)塊鏈證書bcert1和bert2,使得Hash(bcert1)=bcert2是計算上不可行的。

4.1.2 累加器安全性

本文的動態(tài)累加器基于強RSA假設,在該假設下尋找滿足條件的f(w,m)=wmmodn的問題是多項式時間內難解的。如果存在攻擊者C能夠找到一組v=f(x,y),使得v=f(x,y)=wmmodn,其中n是由兩個大素數(shù)產生,那么強RSA假設不成立。因此在強RSA假設下,給定v,m,找到一個w使得v=f(x,y)是困難的,所以動態(tài)累加器f(w,m)=wmmodn是一個安全的累加器。

4.1.3 非法跨域認證安全性分析

跨域認證中存在著非授權的跨域認證等安全性問題。因此,為了防止非授權用戶進行跨域認證,在跨域認證中,用戶與目標節(jié)點會通過挑戰(zhàn)-應答方式驗證用戶身份的合法性,目標節(jié)點會校驗用戶提供的證書和源跨域CA節(jié)點進行比對,確保需要驗證的隨機數(shù)和目標節(jié)點保存的隨機數(shù)一致,確保用戶的證書由源節(jié)點簽發(fā)的同時起到了防止重放攻擊的效果,同時在區(qū)塊鏈證書的拓展項中加入節(jié)點白名單,只有當跨域認證用戶的區(qū)塊鏈證書里包含了目標節(jié)點的唯一ID,用戶才能夠與目標節(jié)點進行跨域認證操作,從而杜絕了用戶非法進行跨域認證操作的可能。

4.2 實驗

4.2.1 實驗環(huán)境

實驗開發(fā)環(huán)境為AMD Ryzen 5 2600X 3.60 GHz CPU 和24 GB內存的PC機。利用VMware Workstation Pro 10.0.177 63創(chuàng)建虛擬機,并在虛擬機中通過Docker創(chuàng)建節(jié)點,為每個peer節(jié)點分配1 G內存和10 G存儲空間。Hyperledger Fabric版本為2.2.0,鏈碼使用Java 1.8開發(fā),Docker版本為19.03.13。

4.2.2 實驗比較

實驗開始前,先批量創(chuàng)建區(qū)塊鏈跨域證書3000條作為測試數(shù)據(jù)集,其中 RSA動態(tài)累加器模數(shù)是一個長度為1 024的正整數(shù),是由兩個通過Miller-Rabin素性檢測算法生成和的乘積。為了避免偶發(fā)性誤差,將實驗重復進行5次計算平均值。圖3表示查詢50,100,150,200張證書的平均耗時。表1表示不同文獻中的優(yōu)缺點比較。圖4表示不同方法在區(qū)塊鏈上的存儲成本比較。

表1 文獻優(yōu)缺點比較

通過證書查詢平均耗時看出,文獻[7]的查詢耗時隨著證書的個數(shù)增長而線性增長,本文的耗時隨著證書數(shù)量的增加波動不大,并且查詢10 000張證書耗時仍然為1秒左右,能夠滿足批量跨域認證應用場景,雖然查詢速度落后于文獻[10],但文獻[10]存在著3%的誤判概率,這在一些重要的身份認證場景是難以忽略的。同時,本文的證書存儲相較于其他方法,存儲的消耗約為其他方法的一半,隨著區(qū)塊鏈數(shù)據(jù)的增加,能夠進一步降低區(qū)塊鏈證書數(shù)據(jù)存儲的成本。綜上所述,本文將區(qū)塊鏈和動態(tài)累加器相結合,在避免誤判的前提下,提升了跨域認證的效率,降低了證書的存儲成本。實現(xiàn)結果表明,該方法具備一定的有效性和可行性。

5 結束語

本文首先闡述了區(qū)塊鏈技術、動態(tài)累加器的相關知識。針對傳統(tǒng)的區(qū)塊鏈跨域身份認證存在的證書查詢效率低下,重認證耗時長的問題。提出了基于區(qū)塊鏈和動態(tài)累加器的跨域認證方案,通過在智能合約中生成動態(tài)累加器,利用動態(tài)累加器的高效可驗證特性和成員元素支持動態(tài)添加和刪除的特點,構造包含累加值的區(qū)塊鏈跨域證書,將證書的指紋作為成員值寫入到累加器中,通過區(qū)塊鏈共識機制共同維護累加器狀態(tài),提升了鏈上數(shù)據(jù)龐大時的查詢效率,降低了證書存儲開銷。通過實驗數(shù)據(jù)進行分析比較,結果表明,該方法能夠有效提升跨域認證效率,降低證書鏈上存儲成本。

猜你喜歡
跨域證書動態(tài)
國內動態(tài)
基于多標簽協(xié)同學習的跨域行人重識別
WJCI 收錄證書
國內動態(tài)
CSCD收錄證書
為群眾辦實事,嶗山區(qū)打出“跨域通辦”組合拳
收錄證書
國內動態(tài)
G-SRv6 Policy在跨域端到端組網(wǎng)中的應用
收錄證書