基于区块链的数据访问控制方法与流程

文档序号:11432568阅读:273来源:国知局

本发明涉及区块链数据管控技术领域,具体涉及基于区块链的数据访问控制方法。



背景技术:

大数据时代对数据共享和数据安全提出了更高的要求,传统模式下要么因为共享而基本没有什么附带保护措施,要么将数据管得太紧而限制了共享。此外,现有技术的区块链数据存在冗余。



技术实现要素:

针对上述现有技术,本发明目的在于提供基于区块链的数据访问控制方法,解决现有技术由于控制权限设计局限性和区块数据存储结构而导致的数据访问可控性较差和区块庞大等技术问题。

为达到上述目的,本发明采用的技术方案如下:

基于区块链的用户数据访问控制方法,包括

在区块链中注册信息处理后,设置每个用户数据访问请求的限制条件为只接收用户本身访问请求或满足用户设置权限的代理访问请求,同时设置第三方用户(机构或其他用户)只通过代理发出用户数据访问请求且只以代理身份进行用户数据访问。

上述方法中,所述区块链中注册信息处理包括以下步骤:

步骤1、用户和第三方用户在区块链注册成功后,生成用户的公钥、私钥、共享密钥和预定义访问权限列表且生成第三方用户的公钥、私钥、共享密钥和预定义访问权限列表,同时还生成代理的公钥、私钥、共享密钥和预定义访问权限列表,接着用户与代理对应交换各自的公钥和共享密钥、第三方用户与代理对应交互各自的公钥和共享密钥;

步骤2、由代理结合代理、用户和第三方用户的公钥和预定义访问权限列表进行计算,得到第三方用户公钥、用户公钥和代理公钥的哈希值,再

将用户公钥和代理公钥顺序取哈希值后作为顺序包含用户公钥、代理公钥、用户预定义访问权限列表和第一指针的第一存储元组的第一索引,

将代理公钥和用户公钥顺序取哈希值后作为顺序包含代理公钥、用户公钥、代理预定义访问权限列表和第二指针的第二存储元组的第二索引,

将第三方用户公钥和代理公钥顺序取哈希值后作为顺序包含第三方用户公钥、代理公钥、第三方用户预定义访问权限列表和第三指针的第三存储元组的第三索引,

同时,将代理公钥和第三方用户公钥顺序取哈希值后作为顺序包含代理公钥、第三方用户公钥、代理预定义访问权限列表和第四指针的第四存储元组的第四索引;

步骤3、发起信息存储请求至请求池,在阈值数量的共识与处理节点均达成共识时将所有存储元组及其对应索引存储至区块链中。

上述方法中,还包括用户通过满足用户设置权限的代理进行共享数据,其包括以下步骤:

步骤1、用户将数据使用用户的共享密钥加密并附上所设置的用户预定义访问权限列表,签名后得到加密数据,将加密数据发往代理;

步骤2、代理核对用户身份成功后,根据第一索引生成加密数据共享请求并将加密数据共享请求发送到请求池;

步骤3、通过共识与处理节点按第一索引找出区块链所存储的第一存储元组,再根据用户和代理的注册信息进行第一类投票共识验证,在阈值数量的共识与处理节点均达成共识时,将加密数据存储至区块链下的分布式哈希表网络,再更新步骤1中用户预定义访问权限列表,并同时存储指向加密数据的指针。

上述方法中,所述第三方用户以代理身份进行用户数据访问,包括以下步骤:

步骤1、由代理在用户数据的访问请求中写入第三方用户的签名数据和预定义访问权限列表,并以代理的签名数据结尾,再将访问请求发送到请求池;

步骤2、通过共识与处理节点按第一索引找出区块链所存储的第一存储元组,再根据用户和代理的注册信息进行第二类投票共识验证,在阈值数量的共识与处理节点均达成共识时,向代理返回存储于区块链下分布式哈希表网络的加密数据;

步骤3、通过代理将加密数据通过用户共享密钥解密,然后利用第三方用户共享密钥对解密后的数据再加密,签名后将再加密数据发送至第三方用户。

上述方法中,所述加密数据的指针为指向用户加密数据的哈希值,指向区块链下分布式哈希表网络中的一个键-值对。

基于区块链的日志访问控制方法,包括

在区块链中注册信息处理后,设置每个用户数据访问日志访问请求的限制条件为只接收代理访问日志访问请求或满足代理设置权限的用户访问日志访问请求,同时设置第三方用户(区块链存储机构)只通过代理发出用户数据访问日志的访问请求且只以代理身份进行用户数据访问日志的访问。

上述方法中,所述区块链中注册信息处理包括以下步骤:

步骤1、用户和第三方用户在区块链注册成功后,生成用户的公钥、私钥、共享密钥和预定义访问权限列表且生成第三方用户的公钥、私钥、共享密钥和预定义访问权限列表,同时还生成代理的公钥、私钥、共享密钥和预定义访问权限列表,接着用户与代理对应交换各自的公钥和共享密钥、第三方用户与代理对应交互各自的公钥和共享密钥;

步骤2、由代理结合代理、用户和第三方用户的公钥和预定义访问权限列表进行计算,得到第三方用户公钥、用户公钥和代理公钥的哈希值,再

将用户公钥和代理公钥顺序取哈希值后作为顺序包含用户公钥、代理公钥、用户预定义访问权限列表和第一指针的第一存储元组的第一索引,

将代理公钥和用户公钥顺序取哈希值后作为顺序包含代理公钥、用户公钥、代理预定义访问权限列表和第二指针的第二存储元组的第二索引,

将第三方用户公钥和代理公钥顺序取哈希值后作为顺序包含第三方用户公钥、代理公钥、第三方用户预定义访问权限列表和第三指针的第三存储元组的第三索引,

同时,将代理公钥和第三方用户公钥顺序取哈希值后作为顺序包含代理公钥、第三方用户公钥、代理预定义访问权限列表和第四指针的第四存储元组的第四索引;

步骤3、发起信息存储请求至请求池,在阈值数量的共识与处理节点均达成共识时将所有存储元组及其对应索引存储至区块链中。

上述方法中,所述第三方用户通过代理对访问日志进行访问,包括以下步骤:

步骤1、由代理将访问日志通过代理共享密钥加密、附加上代理预定义访问权限列表再以代理签名数据结尾,得到加密访问日志并生成访问日志访问请求并将访问日志访问请求发送至请求池;

步骤2、通过共识与处理节点按第二索引找出区块链所存储的第二存储元组,再根据代理和用户的注册信息进行第三类投票共识验证,在阈值数量的共识与处理节点均达成共识时,将加密访问日志存储至区块链下的分布式哈希表网络,再更新步骤1中代理预定义访问权限列表,并同时存储指向加密访问日志的指针。

上述方法中,还包括用户通过代理对访问日志进行访问,其包括以下步骤:

步骤1、由代理在访问日志的访问请求中写入用户预定义访问权限列表,并以代理的签名数据结尾,再将访问请求发送到请求池;

步骤2、通过共识与处理节点按第二索引找出区块链所存储的第二存储元组,再根据代理和用户的注册信息进行第四类投票共识验证,在阈值数量的共识与处理节点均达成共识时,向代理返回存储于区块链下分布式哈希表网络的加密访问日志;

步骤3、由代理将加密访问日志返回给用户。

上述方案中,还包括用户更改数据访问权限,其包括以下步骤:

步骤1、由代理在访问日志的访问请求中写入用户的再定义访问权限列表,并以代理的签名数据结尾,再将访问请求发送到请求池;

步骤2、通过共识与处理节点按第一索引找出区块链所存储的第一存储元组,再根据用户和代理的注册信息进行第五类投票共识验证,在阈值数量的共识与处理节点均达成共识时,把预定义访问权限列表更新为再定义访问权限列表后存入区块链中。

上述方法中,所述加密访问日志的指针为指向用户加密访问日志的哈希值,指向区块链下分布式哈希表网络中的一个键-值对。

与现有技术相比,本发明的有益效果:

通过将访问控制权限和指向访问日志的指针记录在区块链上,使得数据的拥有者自身不仅可以控制其他方对数据的访问,追踪谁在使用数据还可以随时更改数据的访问权限;

本发明还将数据和对数据的访问记录加密存储到链下的分布式哈希表存储设施中,在区块中只记录指向该加密数据的指针,以达到减少区块链中区块的大小和提高效率的目的。

附图说明

图1为本发明的模块示意图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合附图对本发明做进一步说明:

基于区块链的数据访问控制方法中,需要在区块链中存储用于访问用户数据所需的权限列表,还需要存储用于访问用户数据日志的权限列表。用户共享数据时,通过验证以后,将用户的公钥、代理的公钥、用户设置的访问权限、指向用户数据的指针记录到区块链中,作为其他方访问用户数据时的验证依据和索引,而用户数据将加密存储于链下的分布式哈希表中。其他方如机构访问用户数据时,必须通过代理发出请求,代理取得数据后先解密再加密发送给该机构。代理还需要将这次访问的机构名、时间、执行的操作等记录记录在日志中,将被访问用户的公钥、代理的公钥、代理设置的访问权限、指向访问日志的指针以及时间记录到区块链中,作为访问日志时的验证依据和索引,而日志记录也被加密存储到链下的分布式哈希表中。

基于区块链的数据访问控制方法,所有用户的数据只能由用户和代理访问(代理需要满足用户设置的权限),任何第三方想要访问用户数据必须通过代理发出请求,以代理的身份进行;

所有用户数据的访问日志只能由代理和用户访问(用户需要满足代理设置的权限),任何第三方想要访问日志必须通过代理发出请求,以代理的身份进行;

区块链上用于存储验证和控制的信息的索引由用户的公钥、代理的公钥和其它元数据联合做哈希运算产生;

区块链上存储的验证和控制的信息包括但不限于(用户的公钥、代理的公钥、用户设置的访问权限、指向用户数据指针)元组以及(被访问用户的公钥、代理的公钥、代理设置的访问权限、指向访问日志的指针)元组;

指针为指向加密用户数据或加密日志数据的哈希值,它指向链下分布式哈希表中的一个键-值对;

分布式哈希表中存储的数据,包括用户数据和访问日志,具体为经共享密钥加密并由用户签名的用户数据或经共享密钥加密并由代理签名的访问日志。

实施例1

1.用户注册。用户注册成功以后,生成公钥puku、私钥prku、共享密钥sku和预定义访问权限列表alu;代理生成生成公钥puka、私钥prka、共享密钥ska和预定义访问权限列表ala;其它机构或用户注册成功以后,生成公钥puko、私钥prko、共享密钥sko和预定义访问权限列表alo。用户与代理交换公钥和共享密钥;机构与代理交换公钥和共享密钥。

2.共识与处理节点处理用户注册信息。代理根据自己的信息puka、ala用户注册信息puku、alu,机构注册信息puko、alo进行计算,

将(puku、puka)取哈希值后作为存储元组(puku、puka、alu、pu)的索引iu(p代表加密后用户数据的哈希值,此时为空);

将(puka、puku)取哈希值后作为存储元组(puka、puku、ala、pa)的索引ia;

将(puko、puka)取哈希值后作为存储元组(puko、puka、alo、po)的索引io;

将(puka、puko)取哈希值后作为存储元组(puka、puko、ala、pa)的索引ia。随后将存储请求发送到请求池中,在有3个及以上的共识节点达成共识后将信息存储到区块中。

3.用户共享数据。用户将数据使用共享密钥sku加密并附加上访问权限列表alu后签名发往代理,代理核对用户身份成功后,根据索引iu生成请求发送到请求池中。共识与处理节点根据索引iu查找区块链存储元组(puku、puka、alu、pu),并依据pkuu、pkua是否相同进行投票,在有3个及以上的共识节点达成同意共识后,将加密数据存储到链下dht网络d(pu)处,在区块中更新访问权限列表alu并存储指向该加密数据的指针pu(pu也是加密后用户数据的哈希值)。

4.机构或其他用户访问数据。代理代表机构请求数据,代理在请求中包含机构的签名数据、机构申请的访问权限alo,末尾附加上代理自己的数字签名,并将请求发送到请求池中共识与处理节点根据索引iu查找区块链存储的元组(puku、puka、alu、pu),并依据pkuu、pkua是否相同以及alo是否属于alu进行投票,在有3个及以上的共识与处理节点达成同意共识后,则向代理返回存储于dht网络中的加密数据d(pu)。代理将数据使用共享密钥sku解密,然后再使用共享密钥sko加密并签名后发回机构。

5.区块链存储机构访问记录。代理将访问记录使用共享密钥ska加密,加上代理设置的访问权限列表ala,末尾加上自己的数字签名后发送到请求池中。共识与处理节点依据据索引ia查找区块链存储的元组(puka、puku、ala、pa),依据puka、puku是否相同进行投票,在有3个及以上的共识与处理节点达成同意共识后,将加密访问记录存储到链下dht网络d(pl)处.在区块中更新访问权限列表ala以及指向该加密日志的指针pl(pl也是加密后日志的哈希值)。

6.用户跟踪数据的使用。代理代表用户发出请求,包含用户申请的访问权限alu,并在末尾加上自己的数字签名后发送到请求池中。共识与处理节点依据请求中索引ia,查找区块链存储的元组(puka、puku、ala、pa),并依据pkua、pkuu是否相同以及alu是否属于ala进行投票,在有3个及以上的共识与处理节点达成同意共识后,则向代理返回存储于dht网络中的加密日志d(pl)。代理随后将加密日志返回给用户。

7.用户更改数据访问权限。代理代表用户发出请求,包含用户要更改的访问权限alu,并在末尾加上自己的数字签名后发送到请求池中。共识与处理节点根据请求中索引iu查找区块链存储的元组(puku、puka、alu、pu),并依据pkuu、pkua是否相同进行投票,在有3个及以上的共识节点达成同意共识后,将新的alu存入到区块中。

8.区块链与链下分布式哈希表存储设施间的加密通信可以混合采用公私钥体系、对称密钥体系实现。

9.图中的代理为一个逻辑实体,可以分布式的存在于网络上,为进一步保证数据安全,其提供的服务的实现基于安全多方计算技术。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何属于本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

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