一种基于属性布隆过滤器的快速策略检索方法

文档序号:29469012发布日期:2022-04-02 04:17阅读:147来源:国知局
一种基于属性布隆过滤器的快速策略检索方法

1.本发明属于大数据、访问控制技术领域,具体涉及区块链中密文访问控制策略的检索问题,该方法利用区块链的透明性提出基于属性布隆过滤器的密文策略检索技术,即实现了策略的快速定位,也保证了策略的检索速度,满足数据安全共享的要求。


背景技术:

2.随着大数据的快速发展和应用,用户数据的安全共享是亟需解决的问题。访问控制是实现数据安全和隐私保护的重要支撑技术之一。由于“中心化”的传统访问控制技术存在策略执行不透明、动态数据管理不灵活、资源拥有者自主性差、易发生单点故障带来性能瓶颈等问题,使其难以适用当前处理海量、动态和分布式数据的新型计算环境。鉴于区块链具有去中心化、透明性、不可篡改等优点,当前基于区块链的去中心化访问控制技术日益得到关注。现有两类基于区块链的访问控制方法,一类是利用区块链不可篡改的特性将其作为可信实体与现有访问控制模型结合,另一类是基于智能合约的访问控制机制,设计基于交易和智能合约的访问控制模型。
3.然而,当前基于区块链去中心化的访问控制研究提出将访问控制策略加密存储到区块链上。当策略中的主客体属性被加密后,未授权用户和授权用户都无法知道访问策略中涉及的主客体属性,这使得解密成为一个具有挑战性的问题。此外,当链上访问控制策略存储过多时,策略的检索速度必然会成为整个系统的瓶颈,如何快速准确检索出相应策略是目前亟需解决的另一个重要问题。为此,本发明提出一种基于属性布隆过滤器的快速策略检索方法,旨在实现对区块链上的密文策略的高效检索,在保证正确授权的同时,也不影响用户的使用体验。


技术实现要素:

4.针对区块链上的密文访问控制策略的检索问题,本发明基于线性秘密共享矩阵构造属性布隆过滤器,实现了对加密访问控制的检索,完成权限的安全鉴定。
5.本发明提出的一种基于属性布隆过滤器的策略检索方法,实现该方法涉及数据拥有者、数据访问者、区块链平台和云存储服务四个实体,这四个实体之间相互协作,共同完成对数据的安全访问控制。其中:
6.①
数据拥有者:是数据的拥有者,拥有对数据绝对的管理权限。其重要责任是把客体资源上传到云服务器存储,同时制定相应的访问控制策略,通过区块链客户端发起交易申请,上传到区块链中。
7.②
数据访问者:客体资源的访问者。当数据所有者的属性满足数据所有者指定的访问控制策略时,可以获得客体资源的地址,否则无法访问。
8.③
区块链平台:区块链平台是整个架构模型的基础设施,主要包括数据层,存储相应的策略信息、智能合约、主体属性信息等。
9.④
云存储服务:用于存储客体资源,并和区块链、用户交互以完成数据的访问共
享。
10.本发明提出的方法具体流程如图1所示。具体流程如下,
11.step1:客体上传阶段
12.首先假设云数据服务器是可信的,数据所有者将数据存储到云端数据库服务器上,返回所存储数据的地址(address)和摘要值(hash)。其中摘要值主要用于对云端数据的完整性校验,数据地址将作为客体资源,通过访问控制策略来控制不同主体对该地址的访问。
13.step2策略生成阶段,数据所有者制定访问控制策略,将访问控制策略存储到策略管理合约管理的策略库中,具体流程如图2所示。
14.①
将属性相关的逻辑表达式转化为线性秘密共享矩阵(lsss)。得到(m, ρ)。此时策略可以表示为:policy1:result(r,action,pid)

θ{(m, ρ)}signature_owner,其中signature_owner为数据所有者的签名,pid表示策略id,只有当θ{(m,ρ)}为真时,请求方能被允许对资源r进行action操作;其中ρ是属性匹配函数,会泄露属性信息。
15.②
去掉属性匹配函数ρ,引入属性布隆过滤器,实现策略加密。
16.setup(1
λ
)

(pk,msk)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
17.初始化算法输入安全参数λ,输出公钥pk和主密钥msk。初始化算法选择两个阶为素数p的循环群g0与g1,g是g0的生成元。任意选取h,k,q∈g0,α, β∈zp,计算公钥和主密钥。
18.pk={g0,p,g
α
,g
β
,h,k,e(g,g)
α
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
19.msk={α}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
20.③
数据所有者针对不同数据使用者的属性计算密钥sk,该算法输入公钥 pk、主密钥msk和数据使用者的属性集合,输出密钥sk。得到sk后,使用数据使用者以太坊钱包中的公钥对sk进行加密,得到sk’。
21.keygen(pk,msk,s)

sk
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
22.④
数据所有者通过访问策略(m,ρ),公钥pk对客体资源的地址address 进行加密,得到密文ct。
23.enc(pk,address,(m,ρ))

ct
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
24.在加密阶段,数据拥有者根据主体的属性信息进行预加密计算,然后在知道要加密的消息时,数据拥有者加速生成密文,然后构造abf。当加密信息未知时,数据拥有者根据指定的访问控制结构对加密信息进行线性秘密共享,得到共享向量v1,v2,

vn,当需要加密时,输入密钥,生成密文。
25.⑤
数据所有者通过m,ρ构造属性布隆过滤器,输入访问控制矩阵(m, ρ),访问控制策略相关的属性与访问矩阵m对应的行号相关联,对于属性元素集合se={i||ate}i∈[1,
……
l],m的第i行和ρ之间的关系是ρ(i)=ate,然后通过位字符串的左侧填零,将行号和属性扩展到最大位长度,最后通过调用abf 算法构造abf。
[0026]
abfbuilder(m,ρ)

abf
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0027]
此时策略表示为:policy1:result(r,action,pid)

[0028]
θ{(ct,abf,pk,sk’)}signature_owner。
[0029]
最终将这个策略放进策略库中进行保存。然后,对于主体属性集合attr,选择属性
布隆过滤器abf生成二进制向量v
abf
(h,k),对于k个哈希函数,对应 hk(attrj),第i个属性的存储位置是hk(attrj),通过调用第k个哈希函数hk(attrj), 获取attrj的具体位置,即hk(attrj)代表abf的索引位置,当继续向abf添加元素时,某些位置可能已被先前添加的元素占用,如果出现这种情况,将现有共享作为新元素的一个共享来重用。
[0030]
step3:策略执行阶段,当主体发出对数据所有者的资源请求时,根据主体的请求执行如下操作,具体流程如图3所示。
[0031]

策略实施点(pep)接收到主体的请求后,调用属性权威合约(pipcontract)查询区块链中存储的相关属性信息,构建出一个基于属性的访问请求 (aar),aar描述了主体、资源、操作和环境属性。然后将aar发送给策略抉择合约(pdp contract)做访问的抉择。
[0032]

策略抉择合约从属性权威合约(pip contract)中得到主体属性信息s,然后将s传给策略管理合约(pap contract)。pap contract得到要查询的主体属性s后,利用属性布隆过滤器重新构造出属性匹配函数ρ’,输入属性集合s,abf, 和公共哈希函数hi,对于每个属性at∈s,通过哈希函数hi可以得到属性at的位置索引hi(at)。
[0033]
abfquery(s,abf,pk)

ρ
’ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0034]
如果能成功构造出属性映射函数ρ’,证明数据使用者的属性满足数据拥有者制定的访问策略,然后pap contract将构造出的ρ’,客体资源地址(address) 的密文ct以及访问策略中的sk’拼装成三元组(ρ’,ct,sk’)返回给pdpcontract。如果不能构造出属性映射函数ρ’,pap contract向pdp contract直接返回null表示拒绝访问。其中ρ’的构造过程如下,首先对于主体属性 attr={attr1,

,attr2}中的属attrj利用abf中的k个哈希函数h1,

hk计算hi(attrj), 对于主体属性中的每个attrj,利用v
abf
(h,k)验证hi(attrj)是否为1,若是则说明这个属性attrj∈attr,从实现对主体属性的快速检索。
[0035]

如果允许访问,pdp contract将(ρ’,ct,sk’)返回给策略实施点,最后策略实施点将访问控制结果发送给数据使用者。该过程的时序图表示如图3所示。
[0036]

数据使用者得到(ρ’,ct,sk’)后,首先使用自己的以太坊钱包私钥解密sk’;然后通过sk解密得到客体资源的明文地址address。
[0037]
dec(sk,ct,ρ’)

address
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0038]
得到客体资源的地址后,访问得到对应的客体资源,完成数据共享。
[0039]
step4:合约部署阶段
[0040]
本方法使用智能合约作为代理,为系统提供相关属性及策略的查询或者判定服务,pip contract提供属性查询服务;pap contract提供策略查询服务,主要完成属性映射函数的构造;pdp contract作为pip contract和pap contract之间的桥梁,提供策略判定服务。将查询过程分为链上和链下两个部分进行完成,提高检索速度。
[0041]
本方法部署在基于hyperledger fabric2.0的联盟链环境中。处理器amd 3600
ꢀ×
1,内存8gb,操作系统为ubuntu 18.04。实验一共使用5台物理机,其中1台物理机作为order节点,4台物理机作为peer节点。部署的拓扑结构如图4所示。
[0042]
访问控制策略检索:
[0043]
数据所有者制定好访问控制策略后,转化为线性秘密共享矩阵,让访问控制策略相关的属性与访问矩阵m对应的行号相关联,即属性匹配函数ρ(i)=ate。然后去掉能够泄露属性信息的属性映射函数ρ,通过线性秘密共享矩阵构造出属性布隆过滤器abf,通过调
用k个哈希函数来快速确定主体属性是否在链上的密文策略库中。在权限鉴定时,利用主体属性s和abf重新构造出属性映射函数ρ,完成策略的加密,与此同时,在知道要加密的消息之前,用户根据公共参数进行大量预计算。当要加密的消息已知时,可以快速生成密文。解密环节在用户客户端完成,这样充分减缓和区块链平台的压力,将解密的时间分散到各个客户机,从而实现对策略的快速检索。
[0044]
与现有技术相比,本发明具有以下优点:
[0045]
1.实现对区块链上密文访问控制策略的检索,将整个属性隐藏在策略中,将主体属性映射到k个哈希函数中;当主体发出请求时,能够根据主体属性快速判断链上的策略库中是否有该主体的属性信息,并迅速定位出现的位置,在解决了区块链上访问控制策略的隐私泄露问题的同时,完成了对链上密文策略的检索功能。
[0046]
2.使用提前预解密技术,当加密信息未知时,数据拥有者根据指定的访问控制结构对加密信息进行线性秘密共享,得到共享向量v1,v2,

vn,当需要加密时,输入密钥,生成密文,快速完成对策略的加密。
[0047]
3.将检索的压力分散到各个客户端,解密环节在用户客户端完成,这样充分减缓和区块链平台的压力,将解密的时间分散到各个客户机,提高系统整体性能,缩短策略的检索时间。
附图说明
[0048]
图1密文检索流程图。
[0049]
图2策略构建时序图。
[0050]
图3策略检索时序图。
[0051]
图4方法部署图。
具体实施方式
[0052]
下面结合附图和具体实施方式对本发明做进一步说明。
[0053]
本发明所述一种基于属性布隆过滤器的快速策略检索方法的具体实施过程如图1所示,包括以下步骤:
[0054]
步骤1:准备阶段。
[0055]
步骤1.1:生成策略加解密所需的参数。
[0056]
1)数据所有者根据安全参数生成公钥pk和主密钥msk,具体见公式(1)。
[0057]
2)数据所有者针对不同的用户属性生成密钥sk,具体见公式(4)。
[0058]
步骤1.2:将数据拥有者指定的访问控制策略统一转化为线性秘密共享矩阵。
[0059]
步骤2:策略生成阶段。
[0060]
数据所有者根据线性秘密共享矩阵和属性布隆过滤器构造访问控制策略,具体见公式(5-6)。
[0061]
步骤2.1:生成客体资源地址的密文。
[0062]
1)数据拥有者输入客体资源的地址address。
[0063]
2)数据拥有者输入线性秘密共享矩阵。
[0064]
3)数据拥有者添加cp-abe加密所需的公钥pk,得到客体资源地址的密文ct。
[0065]
步骤2.2:构造属性布隆过滤器。
[0066]
1)数据拥有者输入构造好的线性秘密共享矩阵(m,ρ)。
[0067]
2)数据拥有者将新生成的策略添加到策略库。
[0068]
步骤3:策略执行阶段。
[0069]
步骤3.1:构造访问控制请求aar。
[0070]
1)pep接收主体的原始请求。
[0071]
2)pip合约查询区块链中的属性库,验证主体属性。
[0072]
3)pep根据主体属性构建aar,发送请求判决。
[0073]
步骤3.2:主体权限鉴别,具体见公式(7)。
[0074]
1)pap合约根据主体属性查询策略库中的策略。
[0075]
2)pap合约重新构造属性映射函数ρ’。
[0076]
3)如果2)构造成功,返回三元组(ρ’,ct,sk’),否则返回null表示构造失败。
[0077]
步骤3.3:客体资源地址解密,具体见公式(8).
[0078]
1)使用以太坊钱包的私钥解密sk’,得到sk。
[0079]
2)通过sk,ρ’解密客体资源地址address。
[0080]
3)通过地址address获取客体资源。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1