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

张建标  等:一种基于区块链的域间访问控制模型                                                         1553


                    具体来讲,PEP 接收原始访问请求 NAR,然后根据 NAR 调用 PIP Contract 查询在区块链中存储的相关属性
                 信息,用来构建一个基于属性的访问请求(AAR),AAR 描述了主体、资源、操作和环境属性,如果不希望公开请
                 求,那么 PEP 会将 AAR 用资源拥有域的公钥加密封装成请求事务,然后通过区块链网络广播,区块链网络中的
                 节点负责验证该事务的合法性并将其继续传播,资源拥有域收到该事务后调用 PDP Contract,PDP Contract 会分
                 别调用 PAP Contract,PIP Contract,通过 PAP Contract 和 PIP Contract 获取策略集和属性信息,对 AAR 进行判定,
                 并将判定结果和资源访问地址用请求域的公钥加密后封装成响应事务,通过区块链网络广播.PEP 收到响应事
                 务后执行此访问,判定结果.
                    访问控制策略存储在区块链中,防止中心化策略判决不透明,保证策略按照资源拥有域的意图判定,即策略
                 信息以及策略执行结果对于区块链中的各个安全域是公开透明、可验证、可追溯、不可篡改的.如果未进行加
                 密处理,那么维护区块链的所有安全域均可以对策略信息和策略执行结果进行公开验证;如果对 AAR 进行了加
                 密处理,那么请求域(作为请求方的安全域)可以对策略信息和策略执行结果进行公开验证,保障访问控制过程
                 和结果的可信性.使用区块链网络作为各种事务的传播方式,对于请求域来说,区块链服务处理过程是完全透明
                 的,请求域可以使用资源拥有域的公钥对请求进行加密处理,在充分利用区块链网络特点的同时,有效地防止请
                 求域隐私泄露,保障在公开的域间区块链网络中的隐私安全.
                 2.3   区块链服务
                    1)  数据存储结构
                    各类数据以事务形式存储在区块中,区块链将各种事务经过分类组成事务数据集,并将它们打包成区块进
                 行存储,区块格式如图 6 所示.数据区块由区块头和区块体构成:区块头封装了前一区块哈希、Merkle 根以及时
                 间戳等信息;区块体包括当前区块的事务数量以及经过验证的、区块创建过程中生成的所有事务数据,主要包
                 括智能合约、属性和属性关系、访问控制策略以及请求/响应,这些事务经过 Merkle 树的哈希过程生成唯一的
                 Merkle 根并计入区块头.Merkle 根可以快速归纳和校验区块数据的存在性和完整性,极大地提高了区块链的运
                 行效率和可扩展性.






















                                                    Fig.6   Block structure
                                                      图 6   区块结构
                    2)  事务的数据格式
                    各类非合约事务数据在区块链中的数据格式如图 7 所示,其中,ID 表示事务的编号;Transaction_Type 表示
                 事务的类型,具体包括属性事务类型 A、访问控制策略事务类型 P、数据请求/响应事务类型 R;Publisher_PK 表
                 示发布者的公钥地址,在数据请求/响应事务中用于加密;Operation_Type 表示操作类型,具体包括创建操作 C、
                 更新操作 U、撤销操作 D.数据请求/响应事务类型在操作域统一填入创建操作 C;Transaction_Data 表示事务的
   324   325   326   327   328   329   330   331   332   333   334