當前位置: 華文星空 > 知識

TEM2020

2021-06-24知識

Introduction

基於區塊鏈的物聯網系統(IoT)中的細粒度存取控制。傳統的集中式存取控制中,金鑰會隨著使用者的增加呈線性直線增長。本文提出了基於內容加密機制可以實作有效的細粒度存取控制。

Method

1. Technique

1.1 Attribute-Based Encryption 基於內容加密機制

ABE機制是指將數據和數據使用者內容相關聯的一組規則,以提供對數據的存取控制。

1.2 Chameleon Hash Algorithm 變色龍哈希

人為設下一個「後門」(私鑰)。掌握了它就能輕松找到碰撞,其中 m 不等於 m' 。假設一個區塊原內容為m ,有個人知道這個哈希的「後門」為 x ,這個「私鑰」對應的公鑰為 h(=g^{x}) 。生成變色龍哈希對應的隨機數為 r ,則此時該區塊的哈希值為 g^{m}\cdot h^{r} 。若將內容m篡改為m',現在希望找到一個隨機數 r' ,使得 CH(m')=CH(m) 。r' 的求解過程如下

CH(m)=g^{m}\cdot h^{r}=g^{m+xr} ,

CH(m')=g^{m'}\cdot h^{r'}=g^{m'+xr'} ,

因此, r=\frac{m+xr-m'}{x} 。

2. Proposed method

2.1 四類角色

  • 可信第三方(TA):生成和分發基於內容加密機制的金鑰對。
  • 數據釋出者(DP):制定存取策略,生成檔金鑰對和變色龍哈希金鑰。
  • 數據使用者(DU):存取數據鏈獲取加密數據,存取金鑰鏈獲取檔金鑰。
  • 金鑰鏈礦工(KM):更新金鑰鏈。
  • 2.2 三種金鑰對

  • 檔金鑰(Conversation key): (\emph{SK}_{A,\emph{P}},\emph{PK}_{A,\emph{P}}) 。用\emph{SK}_{A,\emph{P}} 加密數據得到密文 C ;用\emph{SK}_{KM,\emph{P}} 加密變色龍哈希私鑰得到 \text{E}_{SK_{KM,P}}(CH_{SK}) 。
  • 基於內容加密機制金鑰(ABE key): (ABE_{SK},ABE_{PK}) 。用 ABE_{PK} 加密檔金鑰 PK_{P} 得到密文 CT ;
  • 變色龍哈希金鑰(CH key):(CH_{SK},CH_{PK}) 。用 CH_{PK} 和CT 生成變色龍哈希值。
  • 2.3 兩種區塊鏈

    類別 用途 特點
    數據鏈(Data Chain) 存放經檔密(Conversation key)加密後的數據 (1)傳統區塊鏈
    (2)只有一條(3)保證數據完整性和機密性並防篡改
    金鑰鏈(Key Chain) 存放經ABE加密後的檔金鑰 (1)與傳統區塊鏈不同,采用變色龍哈希(CH)機制
    (2)各的團體可透過建立自己的金鑰鏈(3)可編輯,防篡改

    2.4 金鑰鏈(Key Chain)設計

    2.4.1 塊結構

    Block structure

    (1) Block Body中Chameleonhash值計算如下

    G(h,1)=CH\_HASH(m(h,1),v(h,1)) ,

    其中 h 代表塊的深度。持有變色龍哈希私鑰(CH_{SK} )的礦工可以同時修改 m(i,j) 和 v(i,j) 的值使得 G(i,j) 不變。

    (2) Block Header中Body Hash值計算如下

    n(h)=Hash(G(h,1),G(h,2),G(h,3),...),

    由於 G(i,j) 不變,因此 n(h) 不會改變。

    (3) 狀態樹MPT(h):儲存Block- h 每一個隨機數的更新歷史,以防止惡意礦工進行虛假更新(使用者透過隨機數的值有沒有發生改變就能判斷礦工有沒有更新數據)

    2.4.2 鏈間協定(Interchain Protocol)

    (1)數據加密並上傳數據鏈

    Initialization&Encryption&Publishing

    Step1 :數據使用者(DU)向可信第三方(TA)註冊以獲得內容授權;

    Step2: 可信第三方(TA)為各內容(\alpha )生成ABE金鑰對(ABE_{\alpha,PK}, ABE_{\alpha ,SK} ),然後透過安全通道發送ABE私鑰(ABE_{\alpha,SK} )給相應的數據使用者(DU)並廣播ABE公鑰(ABE_{\alpha',PK} );

    Step3: 數據釋出者(DP)指定存取策略(A )並生成檔金鑰對(SK_{A,P},PK_{A,P} ),(SK_{KM,P},PK_{KM,P} )和變色龍哈希金鑰對( CH_{SK},CH_{PK} ),然後用ABE公鑰(ABE_{KM,PK} )加密檔金鑰公鑰(PK_{KM,P} )生成密文 \textbf{ABE}_{KM}(PK_{KM,P}) ,並生成交易釋出到Key Chain上;

    Step4: 數據釋出者(DP)用檔金鑰私鑰(SK_{KM,P} )加密變色龍哈希私鑰(CH_{SK} )生成\text{E}_{SK_{KM,P}}(CH_{SK}) ,然後和\textbf{ABE}_{KM}(PK_{KM,P}) 在Key Chain上的位置 t_{i,j} 一起生成交易並釋出到Data Chain上;

    Step5: 數據釋出者(DP)廣播變色龍哈希公鑰(CH_{PK} );

    Step6: 數據釋出者(DP)用ABE金鑰公鑰(ABE_{A,PK} )加密檔金鑰公鑰(PK_{A,P} )生成CT(=\textbf{ABE}_{A}(PK_{A,P})) 並生成交易釋出到Key Chain上;

    Step7: 數據釋出者(DP)用檔金鑰私鑰(SK_{A,P} )加密數據P 生成加密數據C(=\textbf{E}_{SK_{A,P}}(P)) 並和CT 在Key Chain上的位置t'_{i,j} 一起生成交易並釋出到Data Chain上。

    (2)索取數據並解密

    Retrieve&Decryption

    Step1-2 :數據使用者(DU)存取Data Chain並拿到加密數據C 和CT 在Key Chain上的位置t'_{i,j} ;

    Step3-4 :數據使用者(DU)根據t'_{i,j} 存取Key Chain並拿到CT(=\textbf{ABE}_{A}(PK_{A,P})) 。授權DU可以根據本地儲存的ABE私鑰(ABE_{\alpha,SK} )解密出檔金鑰公鑰(PK_{KM,P} ),進而解密出數據 P

    (3)存取許可權更新

    Updating

    Step1 :新數據使用者(NDU)向可信第三方(TA)註冊以獲得內容授權;

    Step2 :新數據可信第三方(TA)根據新註冊的使用者以及撤銷的使用者資訊生成新內容( \alpha' )進而生成新的ABE金鑰對(ABE_{\alpha',PK}, ABE_{\alpha' ,SK} )然後透過安全通道發送ABE私鑰(ABE_{\alpha',SK} )給相應的數據使用者(DU)並廣播ABE公鑰(ABE_{\alpha',PK} );

    Step3 :數據釋出者(DP)更新數據(P )的存取策略(A' ),然後用ABE金鑰公鑰(ABE_{A',PK} )加密檔金鑰公鑰(PK_{A,P} )生成CT'(=\textbf{ABE}_{A'}(PK_{A,P})) 並行送給金鑰鏈礦工(KM);

    Step4: 金鑰鏈礦工(KM)拿到變色龍哈希私鑰(CH_{SK} )後透過變色龍哈希演算法更新Key Chain中CT 為CT' 。

    Discussion

    本方案使得未撤銷存取許可權和新授權的數據使用者(NDU)不但可以存取更新之前的數據還可以存取更新之後的數據,但被撤銷存取許可權的數據使用者(UDU)不能存取更新之後的數據,因為沒有更新後的ABE私鑰(ABE_{\alpha',SK} )也就無法解密出檔金鑰公鑰(PK_{KM,P} )。但由於在更新是沒有更新件金鑰公鑰導致會發生緩存金鑰攻擊,即如果被撤銷存取許可權的使用者之前緩存了檔金鑰公鑰,那麽它依然可以解密出未來用舊的檔金鑰公鑰加密的密文。

    Reference