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 四类角色
2.2 三种密钥对
2.3 两种区块链
类型 | 用途 | 特点 |
---|---|---|
数据链(Data Chain) | 存放经文件密(Conversation key)加密后的数据 |
(1)传统区块链
(2)只有一条(3)保证数据完整性和机密性并防篡改 |
密钥链(Key Chain) | 存放经ABE加密后的文件密钥 |
(1)与传统区块链不同,采用变色龙哈希(CH)机制
(2)各的团体可通过创建自己的密钥链(3)可编辑,防篡改 |
2.4 密钥链(Key Chain)设计
2.4.1 块结构
(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)数据加密并上传数据链
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)索取数据并解密
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)访问权限更新
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