Page 333 - 《软件学报》2021年第5期
P. 333
张建标 等:一种基于区块链的域间访问控制模型 1557
AAR=〈sAttrVp_Set,rAttrVp_Set,aAttrVp_Set,eAttrVp_Set〉.
四元组中,sAttrVp_Set 表示主体属性名值对集合,rAttrVp_Set 表示资源属性名值对集合,aAttrVp_Set 表示操
作属性名值对集合,eAttrVp_Set 表示环境属性名值对集合.
AAR 的含义为:“属性为 sAttrVp_Set 的主体在环境属性 eAttrVp_Set 条件下,对资源 rAttrVp_Set 进行
aAttrVp_ Set 的操作请求”.
定义 3. 访问控制策略(Policy)定义了对资源进行特定操作所需要的属性集合.用三元组表示如下:
Policy←〈pAttr_Set,Rule,CombiningAlgorithm〉.
三元组中,pAttr_Set 表示策略的属性集合,Rule 表示规则集合,CombiningAlgorithm 表示合并算法.
pAttr_Set 用四元组表示如下:
pAttr_Set=〈sAttr_Set,rAttr_Set,aAttr_Set,eAttr_Set〉.
四元组中,sAttr_Set 表示主体属性集合;rAttr_Set 表示资源属性集合;aAttr_Set 表示操作属性集合; eAttr_Set
表示环境属性集合,用来判断该策略是否满足请求.
Rule 表示规则集合:Rule={rule_1,rule_2,…,rule_n},其中,rule_n 表示第 n 条规则.rule 用四元组表示如下:
rule=Result←〈sAttrVp_Set,rAttrVp_Set,aAttrVp_Set,eAttrVp_Set〉.
四元组中,sAttrVp_Set 表示主体属性名值对集合,rAttrVp_Set 表示资源属性名值对集合,aAttrVp_Set 表示操
作属性名值对集合,eAttrVp_Set 表示环境属性名值对集合.Result 表示规则的判决结果,Result∈(Permit,Deny)
CombiningAlgorithm 为用来解决策略冲突的合并算法,用来解决规则集判定冲突问题.
PAP Contract 伪代码如下所示.
算法 3.
输入:AAR.
输出:策略结果集(Policy_ResultSet).
Begin
rAttrVp_Set=AAR.rAttrVp_Set;
//创世块序号为 0,从序号为 1 的区块开始查询
for (i=1; i<blocks.length; i++){
//使用布隆过滤器判断包含该属性的策略是否可能在此区块中
flag=bloomfilter(rAttrVp_Set,currentBlock);
if (flag=1){
//从当前区块中序号为 0 的事务记录开始查询
for (j=0; j<blocks[i].trans_Data_Length; j++){
if (blocks[i].trans_Data[j].Transaction_Type=‘P’){
if (rAttrVp_Set.contain(blocks[i].trans_Data[j].
Transaction_Data(pAttr_Set.rAttr_Set))){
Policy_ResultSet.add(blocks[i].trans_Data[j]);
}else continue;
}else continue;
}//end for
}else continue;
}//end for
return Policy_ResultSet;
End