Page 332 - 《软件学报》2021年第5期
P. 332

1556                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                    End
                    (1)  策略信息合约 PIP Contract
                    在 ABAC 模型中,策略信息点 PIP 用于提供实体的各种属性和属性关系.在本文所描述的模型中,属性和属
                 性关系用区块链进行存储,以此来保障属性和属性关系的可信性.而 PIP Contract  主要作用为 PEP,PDP 提供属
                 性查询功能.为方便表示,做如下定义:
                    定义 1.  属性(Attr)是具有指定数据类型和值域的变量,本文使用 xAttr,x∈{s,r,a,e}分别表示主体属性、资源
                 属性、操作属性、环境属性;用 xAttr_Set,x∈{s,r,a,e}分别表示主体、资源、操作、环境属性集.用 xAttrVp=
                 〈xAttr∝attrValue〉,x∈{s,r,a,e},∝∈{>,<,=,≥,≤,≠,in,not in,between}表示属性名和属性值之间的关系,称为属性名
                 值对.用 xAttrVp_Set,,x∈{s,r,a,e}分别表示主体、资源、操作、环境属性名值对集合.
                    PIP Contract 伪代码如下所示:
                    算法 2.
                    输入:属性查询请求(attributeRequest).
                    输出:属性结果集(Attribute_ResultSet).
                    Begin
                    xAttr_Set=attributeRequest.xAttr_Set;
                    //创世块序号为 0,从序号为 1 的区块开始查询
                    for (i=1; i<blocks.length; i++){
                    //判断属性结果集中的属性是否包含请求属性集中的所有元素:若包含,则说明属性均已找到
                    if (attribute_ResultSet.contain(xAttr_Set))
                        break;
                    //使用布隆过滤器判断该属性是否可能在此区块中
                    flag=bloomfilter(xAttr_Set,currentBlock);
                    if (flag=1){
                    //从当前区块中序号为 0 的事务数据开始查询
                      for (j=0; j<blocks[i].trans_Data_Length; j++){
                      if (blocks[i].trans_Data[j].Transaction_Type=‘A’){
                          if (xAttr_Set.contain(blocks[i].trans_Data[j].Transaction_Data)){
                            attribute_ResultSet.add(blocks[i].trans_Data[j]);
                          }else continue;
                      }else continue;
                      }//end for
                     } else continue;
                    }//end for
                    return Attribute_ResultSet;
                    End
                    (2)  策略管理合约 PAP Contract
                    在 ABAC 模型中,策略管理点 PAP 用于对访问控制策略的管理和整合.PAP 根据 PDP 所提供的 AAR 查询
                 符合要求的访问控制策略,并将这些访问控制策略整合为策略集发送回 PDP 进行策略判决.在本文所述模型中,
                 访问控制策略由各安全域根据各自的安全需求,使用标准化、统一的细粒度属性信息进行描述,按照访问控制
                 策略事务数据格式封装后,发布到区块链中,由区块链进行存储,以此来保障策略的公开性和可信性.而 PAP
                 Contract 为 PDP Contract 提供策略查询功能.为方便描述,做如下定义:
                    定义 2.  属性的访问请求(AAR)由主体、资源、操作、环境的属性名值对集合构成,用四元组表示如下:
   327   328   329   330   331   332   333   334   335   336   337