一种基于区块链的访问控制方法和系统与流程

文档序号:12890050阅读:361来源:国知局

本发明属于计算机应用软件领域,更具体地,涉及一种基于区块链的访问控制方法和系统。



背景技术:

近来兴起的区块链(blockchain)和在其上运行的智能合约(smartcontract)技术在金融、大数据、物联网、教育、公益等众多领域掀起了一轮颠覆性的革命。

其中智能合约的本质是运行在区块链上的一段可执行代码,它的执行是由链上的所有节点共同见证的,因此一旦合约开始执行,它就会按照预定的流程进行,没有人能够试图抵赖或者恶意地影响合约的执行结果。其优点是公正公开,不可篡改,可审计,可追溯,不可抵赖,计算结果安全可信。然而,目前的智能合约存在如下不足:

(1)目前区块链平台基本没有智能合约的访问控制模块,智能合约被公开而不可更改地存储在区块链上,没有访问控制权限的主体可以随意调用其中的任何方法;

(2)每编写一个新的智能合约需要从头到尾实现访问控制,开发成本高且不能在不同合约之间复用;

(3)区块链平台的文件系统或相应的键值对状态数据库不适合对访问控制规则等数据的存储和管理;

(4)区块链中没有集中化的访问控制元数据管理方法(对管理员权限等的管理),多管理员对元数据的修改较难达成一致。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于区块链的访问控制方法和系统,其目的在于,解决现有区块链中存在的没有访问控制权限的主体随意调用智能合约中的方法、智能合约之间不能复用访问控制方法、区块链的存储模式不方便对访问控制规则数据的管理以及多管理员对访问控制元数据的修改难达成一致的问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于区块链的访问控制方法,包括以下步骤:

(1)区块链节点接收来自于客户端的请求,并判断该请求是元数据管理请求,非元数据管理请求,还是访问鉴权请求,如果是元数据管理请求,则转入步骤(2),如果是非元数据管理请求,则转入步骤(4),如果是访问鉴权请求,则转入步骤(6);

(2)区块链节点对该元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入步骤(3),否则过程结束;

(3)区块链节点将元数据管理请求添加到区块链中的待办请求列表的末尾,并在该元数据管理请求出现在待办请求列表头部的时候,通知元数据表中的管理员参与投票,并在投票结果显示通过时执行元数据管理请求对应的管理操作,从而完成对元数据表、公共客体访问规则表、以及表结构表的更新;

(4)区块链节点对该非元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入步骤(5),否则过程结束;

(5)区块链节点执行上述非元数据管理请求对应的管理操作,从而完成对用于管理员的主体属性表和客体访问规则表的更新;

(6)区块链节点根据访问鉴权请求对应的客体从用于管理员的客体访问规则表中取出对应的访问规则,从用于管理员的主体属性表中取出该访问规则对应的主体属性,并将该主体属性代入访问规则中求值,返回鉴权结果。

优选地,该方法进一步包括在步骤(1)之前初始化的操作,即建立表结构表、元数据表、公共客体访问规则表、用于管理员的主体属性表和客体访问规则表,其中表结构表中反映了表类型、表名称、属性名称、属性类型、属性默认值、是否主键之间的映射关系,元数据表中反映了管理员标识符、管理员公钥、表名称以及表类型之间的映射关系,公共客体访问规则表中反映了客体名称和访问规则之间的映射关系,用于管理员的主体属性表反映了主体名称与主体安全属性之间的映射关系,用于管理员的客体访问规则表中反映了客体名称与客体访问规则之间的映射关系。

优选地,表结构表的建立过程是将表类型、表名称作为键值对中的键,将属性名称、属性类型、属性默认值、是否主键作为键值对中的值存入区块链的键值对数据库中,存入之前检查该键对应的数据是否存在,如果不存在则存入该数据,如果存在则结束该条数据的存入过程。其对应的映射关系如下:

[表类型][表名]→[属性名称][属性类型][属性默认值][主键]。

优选地,元数据表的建立过程是将表类型、表名称、管理员标识符作为键值对中的键,将表中所有数据作为键值对中的值存入到区块链的键值对数据库中,在插入每条数据之前检查数据中每个项与表结构表中元数据表中对应的属性类型是否匹配,检查插入数据是否已在表中存在,如果匹配且不存在,则允许插入,否则拒绝该数据的插入,格式如下所示:

[表类型][表名称][管理员标识符]→[管理员标识符][管理员公钥][表类型][表名称]。

优选地,公共客体访问规则表、用于管理员的主体属性表和客体访问规则表的建立过程是插入数据之前检查数据中每个项与表结构表中元数据表中对应的属性类型是否匹配,检查插入数据是否已在表中存在,如果匹配且不存在,则允许插入,否则拒绝该数据的插入,格式如下所示:

[表类型][表名][主键属性值]→[所有属性值]。

优选地,步骤(2)具体包括以下子步骤:

(2-1)区块链节点根据元数据管理请求中的管理员标识符、请求操作表类型、请求操作表名称在元数据表中是否存,如果存在,转入步骤(2-2),否则表示管理员鉴权失败,过程结束;

(2-2)区块链节点根据元数据表中管理员的公钥并使用非对称加密算法验证元数据管理请求中的签名信息的是否合法,如果合法,表示管理员鉴权通过,否则表示管理员鉴权失败,过程结束。

优选地,步骤(4)具体包括以下子步骤:

(4-1)区块链节点根据非元数据管理请求中的管理员标识符、请求操作表类型、请求操作表名称在元数据表中是否存在,如果存在,转入步骤(4-2),否则表示管理员鉴权失败,过程结束;

(4-2)区块链节点根据元数据表中管理员的公钥并使用非对称加密算法验证非元数据管理请求中的签名信息的是否合法,如果合法,表示管理员鉴权通过,否则表示管理员鉴权失败,过程结束。

按照本发明的另一个方面,提供了一种基于区块链的访问控制系统,其设置于区块链节点中,其特征在于,包括:

第一模块,用于接收来自于客户端的请求,并判断该请求是元数据管理请求,非元数据管理请求,还是访问鉴权请求,如果是元数据管理请求,则转入第二模块,如果是非元数据管理请求,则转入第四模块,如果是访问鉴权请求,则转入第六模块;

第二模块,用于对该元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入第三模块,否则过程结束;

第三模块,用于将元数据管理请求添加到区块链中的待办请求列表的末尾,并在该元数据管理请求出现在待办请求列表头部的时候,通知元数据表中的管理员参与投票,并在投票结果显示通过时执行元数据管理请求对应的管理操作,从而完成对元数据表、公共客体访问规则表、以及表结构表的更新;

第四模块,用于对该非元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入第五模块,否则过程结束;

第五模块,用于执行上述非元数据管理请求对应的管理操作,从而完成对用于管理员的主体属性表和客体访问规则表的更新;

第六模块,用于根据访问鉴权请求对应的客体从用于管理员的客体访问规则表中取出对应的访问规则,从用于管理员的主体属性表中取出该访问规则对应的主体属性,并将该主体属性代入访问规则中求值,返回鉴权结果。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明由于采用了步骤(1)至步骤(6),因此能够解决现有智能合约由于缺乏访问控制权限,导致其他主体可以随意调用其中方法的技术问题。

(2)本发明由于采用了步骤(6),因此能够解决其他智能合约需要从头到尾实现访问控制且不能在合约之间复用的问题。

(3)本发明由于采用了所有步骤之前的初始化操作,因此能够解决区块链键值对数据库存储访问规则的问题。

(4)本发明由于采用了步骤(2)至步骤(3),因此能够解决多管理员对访问控制元数据修改难以达成一致的问题。

附图说明

图1是本发明基于区块链的访问控制方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明的整体思路在于,利用区块链的安全特性保证访问控制框架的防止单节点数据库篡改、计算结果伪造、管理员身份冒用等攻击;利用投票机制保证访问控制策略元数据的可信;下面给出本发明的访问控制方法和系统的具体实施方案。

如图1所示,本发明基于区块链的访问控制方法包括以下步骤:

(1)区块链节点接收来自于客户端的请求,并判断该请求是元数据管理请求,非元数据管理请求,还是访问鉴权请求,如果是元数据管理请求,则转入步骤(2),如果是非元数据管理请求,则转入步骤(4),如果是访问鉴权请求,则转入步骤(6);

需要注意的是,本发明的方法还包括在本步骤之前初始化的操作,即建立表结构表、元数据表、公共客体访问规则表、用于管理员的主体属性表和客体访问规则表,其中表结构表中反映了表类型、表名称、属性名称、属性类型(整型、浮点型和字符串类型)、属性默认值、是否主键之间的映射关系,元数据表中反映了管理员标识符、管理员公钥、表名称以及表类型(主体即用户、客体)之间的映射关系,公共客体访问规则表中反映了客体名称和访问规则之间的映射关系,用于管理员的主体属性表反映了主体(即用户)名称与主体安全属性之间的映射关系,用于管理员的客体访问规则表中反映了客体名称与客体访问规则之间的映射关系。

其中表结构表的建立过程是将表类型、表名称作为键值对中的键,将属性名称、属性类型(整型、浮点型和字符串类型)、属性默认值、是否主键作为键值对中的值存入区块链的键值对数据库中,存入之前检查该键对应的数据是否存在,如果不存在则存入该数据,如果存在则结束该条数据的存入过程。其对应的映射关系如下所示:

[表类型][表名]→[属性名称][属性类型][属性默认值][主键]

元数据表的建立过程是将表类型、表名称、管理员标识符作为键值对中的键,将表中所有数据作为键值对中的值存入到区块链的键值对数据库中,在插入每条数据之前检查数据中每个项与表结构表中元数据表中对应的属性类型是否匹配,检查插入数据是否已在表中存在,如果匹配且不存在,则允许插入,否则拒绝该数据的插入,格式如下所示:

[表类型][表名称][管理员标识符]→[管理员标识符][管理员公钥][表类型][表名称]

其他表的建立过程是插入数据之前检查数据中每个项与表结构表中元数据表中对应的属性类型是否匹配,检查插入数据是否已在表中存在,如果匹配且不存在,则允许插入,否则拒绝该数据的插入,格式如下所示:

[表类型][表名][主键属性值]→[所有属性值]

(2)区块链节点对该元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入步骤(3),否则过程结束;

本步骤具体包括以下子步骤:

(2-1)区块链节点根据元数据管理请求中的管理员标识符、请求操作表类型、请求操作表名称在元数据表中是否存,如果存在,转入步骤(2-2),否则表示管理员鉴权失败,过程结束;

(2-2)区块链节点根据元数据表中管理员的公钥并使用非对称加密算法验证元数据管理请求中的签名信息的是否合法,如果合法,表示管理员鉴权通过,否则表示管理员鉴权失败,过程结束。

(3)区块链节点将元数据管理请求添加到区块链中的待办请求列表(to-dolist)的末尾,并在该元数据管理请求出现在待办请求列表头部的时候,通知元数据表中的管理员参与投票,并在投票结果显示通过时执行元数据管理请求对应的管理操作,从而完成对元数据表、公共客体访问规则表、以及表结构表的更新;

具体而言,投票结果满足预定规则时,表示投票结果通过,例如,50%的投票者同意,或者50个投票者同意。

(4)区块链节点对该非元数据管理请求对应的访问控制权限进行鉴定,如果鉴定通过,则转入步骤(5),否则过程结束;

本步骤具体包括以下子步骤:

(4-1)区块链节点根据非元数据管理请求中的管理员标识符、请求操作表类型、请求操作表名称在元数据表中是否存在,如果存在,转入步骤(4-2),否则表示管理员鉴权失败,过程结束;

(4-2)区块链节点根据元数据表中管理员的公钥并使用非对称加密算法验证非元数据管理请求中的签名信息的是否合法,如果合法,表示管理员鉴权通过,否则表示管理员鉴权失败,过程结束。

(5)区块链节点执行上述非元数据管理请求对应的管理操作,从而完成对用于管理员的主体属性表和客体访问规则表的更新。

(6)区块链节点根据访问鉴权请求对应的客体从用于管理员的客体访问规则表中取出对应的访问规则,从用于管理员的主体属性表中取出该访问规则对应的主体属性,并将该主体属性代入访问规则中求值,返回鉴权结果。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1