技术简介:
本专利针对传统属性加密依赖中心化权威、安全性不足的问题,提出基于区块链的去中心化访问控制系统。通过用户节点、属性节点与存储节点协同,利用智能合约部署密钥生成算法,实现加密密钥的分布式生成与解密验证,无需第三方中心参与,确保数据访问控制的安全性与去中心化特性。
关键词:去中心化访问控制,区块链存储,属性加密
1.本发明涉及的是一种信息安全领域的技术,具体是一种分布式场景下基于角色属性的访问控制系统及方法。
背景技术:2.在现有的云计算和云存储场景下,云服务提供商的系统架构是中心化的,用户存储在云端的数据安全依赖于中心节点的可信任程度以及其抵御外来攻击的安全措施。从安全要素分析,存储在云端的数据面临的安全问题主要有以下两点。首先是可靠性问题,即云端数据的完整性与可用性。在外来攻击或者硬件故障的影响下,云服务可能在一段时间内不可用,且云服务提供商也可能因为数据成本或数据内容等原因删除用户存储的数据。另外则是数据的机密性与数据共享,即在基于云存储的数据共享中保护用户数据的隐私安全。通常数据以密文的形式存储在第三方存储系统中,因此数据的共享取决于密钥的管理与分发。随着数据总量与数据源的增加,为每一对数据分享者和数据接收者提供密钥管理成本越来越高。因此引入基于角色或者基于属性的细粒度访问控制格外重要。利用区块链技术实现去中心化存储是目前主流的实现云端数据可靠性的解决方案。去中心化要求系统不依赖可信的第三方权威中心,而现有的基于属性加密算法(attribute-based encryption,abe)是基于中心化的访问控制系统设计的,其实现依赖于某中心化机构。
3.简要来说,密文策略的属性加密算法(cp-abe)是当前实现基于属性的细粒度访问控制的关键算法,算法主要分初始化、加密、密钥生成、解密四个步骤。在加密时,算法输入访问控制策略因而将访问控制策略嵌入密文中。在密钥生成中,算法输入用户的属性集因而将属性嵌入密钥中。最后属性集和访问控制策略得以匹配的密文和密钥能够通过解密步骤还原出原始明文。以上是密文策略的属性加密算法的核心逻辑。而在算法设计中,其执行依赖于某第三方来负责主密钥、公共参数的生成和管理,这与利用基于区块链实现去中心化访问控制的需求相悖。
4.目前的解决方案主要围绕着将现有中心架构下的属性加密算法移植到去中心化平台中,这些方案有以下实现形式:一种是仅在存储层面进行去中心化,基于属性的访问控制层面依然依赖如权威中心、属性中心、认证中心等诚实可信的第三方机构,这些第三方仍具备窃取用户机密数据的能力;另一种将属性认证功能去中心化,但是在解密算法执行的过程中需要进行属性认证节点返回属性相关的秘密参数,这一点危害属性节点的隐私安全。
技术实现要素:5.本发明针对现有技术存在的上述不足,提出一种分布式场景下基于角色属性的访问控制系统及方法,不依赖于任何中心化的权威,摒弃了现有属性加密算法中对第三方权威中心的依赖,通过初始化、加密密钥生成、加密、解密密钥生成、解密,将用户属性的具体认证步骤与加密算法的流程分离,便于加密算法的执行同时实现具体认证与计算的分离,
实现属性加密和区块链的去中心存储系统的结合。
6.本发明是通过以下技术方案实现的:
7.本发明涉及一种分布式场景下基于角色属性的访问控制系统,包括:位于访问控制层的用户节点、属性节点以及位于存储层的存储节点,其中:用户节点作为通道的生成者基于通道的访问控制策略执行通道生成算法生成通道及相关数据,或作为数据的分享者基于明文与通道中的加密密钥与加密公钥执行数据加密算法生成密文,或作为用户数据的接收者基于密文和解密密钥执行密文解密算法生成原始明文;属性节点根据访问控制策略以及该节点的属性密钥参与执行加密密钥生成算法,根据部分密文以及该节点的属性密钥参与执行解密密钥生成算法输出解密密钥;存储节点根据用户节点的数据存储请求进行写权限检查以及底层数据的去中心化存储,或根据用户节点的数据获取请求进行相关的检索并得到目标数据。
8.所述的用户节点依据访问控制策略需求生成或检索具体的通道数据,数据的分享者执行密文解密算法对加密密钥的密文解密获得加密密钥,使用加密密钥与加密公钥执行数据加密算法生成密文,数据的接收者获得密文后按照该节点的读策略向相关的属性节点递交属性认证数据,属性节点在属性证书通过属性认证后执行解密密钥生成算法得到解密密钥,数据的接收者使用解密密钥对密文进行解密获得明文数据。
9.所述的加密密钥生成算法具体包括:用户节点生成最初的数组数据,用户节点按照访问控制策略的各个析取子式分成子算法,在每个子算法中,访问控制策略相关的属性节点依次读取数组数据并使用属性密钥执行计算后替换为计算结果,用户节点获得最终数组数据使用预留参数执行双线性映射计算后生成加密密钥与加密公钥。
10.所述的属性认证数据包括部分密文和属性节点颁发的属性证书。
11.所述的属性证书为属性节点颁发给用户节点的数字证书,包括用户节点的公钥,对应的属性,使用属性节点的私钥对上述两者的签名。属性证书用于属性节点对属性的快速认证。
12.所述的属性节点使用非对称密码体系中的公钥作为对外的标识,其作为第三方的认证机构为本系统提供属性认证服务。
13.所述的属性认证是指:属性节点在系统中向用户节点提供可靠的属性认证服务并参与执行加密密钥生成算法以及解密密钥生成算法,属性节点公开其所属的属性列表。
14.所述的属性列表包括每个属性节点所属的各个用户属性,该用户属性成对存在且互为互反属性,具体为:由属性节点定义的并在系统中公示的与用户节点相关的特性描述,每个用户属性α用(pk,index,b)来表示,其中pk为属性节点的公钥,index为该属性在属性节点中对应的索引编号,b为0或1,其对应一对互反属性中的一个。
15.所述的属性密钥是指:属性节点在定义某属性时自主生成并保存的与该属性一一对应的私钥s,该私钥用于参与加密密钥生成算法或解密密钥生成算法。
16.所述的互反属性是指:具备某属性描述条件和不具备某属性描述条件两方面。在这里,不具备某属性描述条件也是属性节点认证的。同时,属性节点的可靠认证服务也要求用户节点不应该同时具备两个互反属性。
17.所述的可靠的属性认证服务是指:属性节点确保对某用户的属性认证前后统一,确保其计算能力在解密密钥生成步骤中可靠。
18.所述的访问控制策略(access control policy,acp)是一种与用户属性相关的访问结构,其中属性以布尔表达式的主合取范式组成;访问控制系统中的每一个主文件都有两类访问控制策略:写策略用于控制文件内容的修改,读策略用于控制文件明文的获得。同一个主文件下的所有文件分片都具备相同访问控制策略。
19.所述的主文件是指:访问控制层中抽象的文件,其由一系列的文件分片组成,每个分片记录着对文件内容的一次写操作。主文件具备唯一的文件编号。
20.所述的文件分片是指:对相关文件内容的一次写操作的记录。文件分片数据由主文件的文件编号、时间戳、修改类型、修改位置信息、修改内容组成。
21.所述的通道是指:对算法参数进行复用的一种抽象结构,即对于相同读策略和写策略的主文件,其对应的算法参数如加密密钥相同的,即对这类算法参数进行复用,并保存在通道这一数据结构中。
22.所述的通道与主文件以通道索引,即文件编号的形式关联,通道由用户节点生成,并且在生成后存储在存储节点中。
23.所述的通道数据包括:通道索引、包含属性节点的公钥地址的读写策略、加密公钥、加密密钥的密文(满足写策略可解密出明文)、公共参数以及如版本号等其它控制信息。技术效果
24.与现有技术相比,本发明技术效果包括:
25.1.数据的分享者与数据的接收者完全解耦,即数据的分享者在分享数据前可以完全不知道具体的接收者,仅仅根据指定的访问控制策略选择可信的属性节点或通道,将加密算法生的密文通过存储节点共享在去中心化的存储系统中(如ipfs)即完成一次数据共享。
26.2.本发明可以实现自上到下的去中心化,从底层的数据存储、文件存储到上层的属性节点架构均可实现去中心化。具体体现在:底层的数据存储及文件存储可以应用各种去中心的分布式文件系统如ipfs、storj等保障存储数据的可靠性,上层的属性节点之间相互独立且只需要负责提供可靠的属性认证服务便可以在算法层面实现文件数据的访问控制。
27.3.本发明将解耦的细粒度的数据共享和系统架构的去中心化结合,区别于现有的基于角色或基于属性的访问控制方案都依赖于中心化的第三方权威机构进行加密算法的初始化与密钥生成,部分方案还需要第三方权威机构进行密钥管理与数据存储,依赖于第三方权威机构的特性会导致用户数据的安全性缺失,同时,第三方机构也有能力获取用户的隐私数据。而去中心的存储系统也难以共同实现数据的灵活共享与数据的隐私保护。
28.4.本发明在去中心存储系统的基础上实现了更为灵活的基于访问控制策略的文件数据共享功能,涉及其它满足写策略的节点对文件的修改以及满足读策略的节点对文件的明文获取。
附图说明
29.图1为本发明系统示意图;
30.图2为实施例主文件的文件分片结构示意图;
31.图3为实施例的算法项目结构示意图。
具体实施方式
32.如图1所示,为本实施例涉及一种基于上述系统的分布式场景下基于角色属性的访问控制方法,包括以下步骤:
33.步骤1、数据的分享者确定接收者应具备的属性(读取的策略acp
read
),同时也指明对此文件进行写操作的用户应具备的属性(修改的策略acp
write
)。在明确读写策略之后,分享者可以以两种方式获得加密密钥:一种是从存储节点获得具备相同读写策略的已创建的通道(关键在于获得通道的索引、加密密钥的密文cipher(ck)、加密公钥ek),并且以写策略为基础执行解密算法dec(acp
write
,cipher(ck))获得此通道的加密密钥ck;另一种是自行创建一个新的通道并执行初始化算法init(acp
write
,acp
read
,pp)获得通道的加密公钥ek和加密密钥ck。
34.所述的加密密钥和加密公钥,是在通道创建时执行的密钥生成算法gen(pp,acp
read
)生成的与读策略相关的两组输出ek和ck,其中加密公钥以明文的方式存储在通道数据中,加密密钥由创建通道的节点执行加密算法(基于写策略生成的加密密钥与公钥)加密保护。这一目的在于使用写策略限制加密密钥的获取实现对写操作的访问控制。
35.所述的初始化算法,基于两次密钥生成算法,两次算法分别使用读策略和写策略作为算法输入,生成读钥和写钥两个输出(均是公钥加私钥的形式)后,通道创建者使用写密钥与写公钥加密读钥中的加密密钥部分生成cipher(ck),即在算法层面控制加密密钥的获取来实现对写权限的控制。
36.步骤2、分享者使用加密密钥与公钥(ek,ck)对文件的每个文件分片msg进行加密 (enc(ek,ck,msg))生成密文cipher(msg),并附加文件索引、通道索引及其它检索相关参数,将其打包成存储请求提交给存储节点,由存储节点保存在去中心化的存储系统中实现文件的分享。
37.步骤3、文件的接收者基于文件索引或其它检索参数从存储节点获得所有文件分片的密文,并且从其关联的通道数据中获得公共参数以及读策略相关的属性节点公钥地址后,执行解密算法dec(acp
read
,cipher(msg))获得各个分片的明文并组装成完整文件。
38.所述的密钥生成算法,具体为:gen(pp,acp)
→
(ek,ck),其中:acp不仅提供算法基于的访问控制策略且提供相关属性节点的地址(属性的前缀),该密钥生成算法按照acp的主合取范式分成m个子算法sgen(pp,d
t
),其中:m是范式中析取子式的个数,d
t
是一个属性个数为n
t
的析取子式,其代表着参与计算的各个属性节点与其属性密钥s(s∈zq);任意一个子算法 sgen
t
(pp,d
t
)的输出为(a
t,0
,a
t,1
,
…
,a
t,n+1
,b
t,0
,b
t,1
,
…
,b
t,n+1
),n=n
t
,其计算步骤具体包括:
39.i)由主节点,即生成此通道的用户节点随机生成群g内的两个元素r和s,再生成zq内的两个随机数h0,h1,并按照下列方式创建两个数组其中:b∈ {0,1},i∈{0,
…
,n+1};
40.ii)将数组以智能合约的形式部署在系统中,调用合约的节点即为d
t
中的属性节点,属性节点使用属性密钥s计算下式,并将计算结果更新入合约中(数据使用私钥签名进
行认证),实现对数组的更新:
41.iii)在所有属性节点更新完成后,主节点取得数组并计算ai=e(n
0,i
,s),bi=e(n
1,i
,s),完成子算法sgen
t
(pp,d
t
)的执行,密钥生成算法gen(pp,acp)输出ek=(ek1,
…
,ekm),ck= (ck1,
…
,ckm),其中:ek
t
=(a0,
…
,an,b0,
…
,bn),ck
t
=(a
n+1
,b
n+1
)。
42.所述的密钥生成算法由生成通道的用户节点发起,并且由其与访问控制策略相关的属性节点参与完成。其生成的加密密钥由ek和ck两部分组成,其内含访问控制的逻辑。
43.所述的基于属性的加密算法,具体为:enc(ek,ck,msg)
→
cipher(msg),即在加密时,数据分享者同样依照通道中的acp将算法划分成m个子算法senc
t
(ek
t
,r,s)和一个对msg加密的算法menc(msg,ck,r,s),其中:r和s是数据分享者进行概率加密的随机种子,是从中随机生成的,即r=(r1,
…
,rm),s=(s1,
…
,sm)(r
t
,s
t
∈zq),senc
t
(ek
t
,r,s)的输出为c
t
=(c
t,0
,c
t,1
,
…
,c
t,n
),当ek
t
=(a0,
…
,an,b0,
…
,bn)则menc(msg,ck,r,s)的输出为为a
t,n+1
和b
t,n+1
是指在生成ck
t
中提及的a
n+1
和b
n+1
,最后加密算法输出密文 cipher(msg)=(c
*
,c1,
…
,cm)。
44.所述的基于属性的加密算法是只需要数据分享者参与的概率加密算法,算法的加密密钥需要分享者,即执行通道内文件写操作的用户节点通过dec(acp
write
,cipher(ck,ek))获得,acp
read
的访问控制逻辑已经在密钥生成过程中嵌入密钥中。
45.所述的基于属性的解密算法,具体为:dec(acp,cipher)
→
msg
′
,其包括了解密密钥生成和密文解密两个阶段,其中解密密钥生成算法由数据的接收者在从存储节点中获得密文后发起,此算法需要读策略内属性相关的属性节点参与完成,属性节点的列表可以通过通道数据中的访问控制策略acp
read
获取。接收者需要满足acp
read
中的每个析取子式d
t
中m个属性中的任意一个属性即可成功解密;接收者将向与这m个属性节点发出解密密钥生成算法sdec
t
(s
t
,c
t
) 的计算请求,其返回的计算结果为解密密钥中的一个即dk
t
,s
t
是d
t
中接收者满足的其中一个属性对应的属性密钥,c
t
是cipher(msg)中的一部分,c
t
=(c
t,0
,c
t,1
,
…
,c
t,n
),则则该解密密钥生成算法是由属性节点执行的,属性节点已经预先给通过认证的用户节点发放证书,在接收到执行解密算法的请求时,属性节点或者其外包的计算节点会先验证证书的正确性,之后使用属性密钥s
t
进行上述计算,并将计算结果dk
t
用非对称加密的形式返回给用户节点;接收者在获得m份dk
t
后执行密文解密算法 mdec(cipher,dk1,
…
,dkm)
→
msg
′
,其中:msg
′
即为cipher的原始明文。
46.经过具体实际实验(数据模拟),使用加密实验来说明该加密算法的正确性,而其在隐私保护上的效果将用理论证明的方式来说明,该加密实验包含简要编写的几个工具类以及如加密密钥、密文、访问控制策略的对象定义,其中工具类的主要功能有:将文件或控制台输入的字节流按照每128字节转化为jpbc中的element对象(实际含义为算法相关群中的一个元素),基于输入的访问控制策略生成加密密钥,将代表明文的element数组经过加密生成密文,解密密钥的生成,将密文对象解密为element对象进而还原为字节数组。这里
的加密密钥、解密密钥、密文均为以element为基础的java对象,在实现序列化的基础上可以实现持久化、网络传输。
47.如下所示,为加密算法的其中一个代码示例:
48.publicstaticciphertextencrypt(elementplaintext,encryptkeyencryptkey,parameterpp,element[]rseed)
[0049]
pairingbppp.bp;
[0050]
fieldg1pp.g1;
[0051]
fieldg2pp.g2;
[0052]
fieldgtpp.gt;
[0053]
fieldzrpp.zr;
[0054]
intnencryptkey.getkeylist().size();
[0055]
ciphertextctnewciphertext(n);
[0056]
elementcoreciperplaintext.duplicate();
[0057]
for(int1=0;1《n;1+){
[0058]
list《element》elements=encryptkey.getkeylist().get(1);/-一列密钥列表
[0059]
list《element》clonelistnewarraylist《》();
[0060]
for(inti=0;i《elements.size();j++){
[0061]
clonelist.add(i,elements.get(j).duplicate().powzn(rseed[i]));
[0062]
elementxclonelist.remove(index:clonelist.size()-1).duplicate();
[0063]
corecipercoreciper.duplicate().mul(x.duplicate());
[0064]
ct.set(clonelist);
[0065]
ct.setcore(coreciper.duplicate());
[0066]
returnct;
[0067]
}
[0068]
对应上述代码的解密密钥生成算法的代码为:
[0069]
publicstaticelementdkgen(elementsk,list《element》cipherlist,parameterpp){
[0070]
pairingbppp.bp;
[0071]
fieldg1pp.g1;
[0072]
fieldg2pp.g2;
[0073]
fieldgtpp.gt;
[0074]
fieldzrpp.zr;
[0075]
elementpigt.newelement().settoone().duplicate();
[0076]
for
[0077]
(inti0;i《cipherlist.size();i++){
[0078]
pipi.duplicate().powzn(sk).mul(cipherlist.get(i).duplicate());
[0079]
}
[0080]
returnpi.duplicate().powzn(sk).duplicate();
[0081]
}
[0082]
对应上述代码的解密算法的代码为:
[0083]
publicstaticelement[]decrypt(element[]cores,element[]dk){
[0084]
element[]outsnewelement[cores.length];
[0085]
for(inti=0;i《cores.length;j++){
[0086]
elementoutcores[i].duplicate();
[0087]
for
[0088]
(inti=0;i《dk.length;i++){
[0089]
outout.duplicate().mul(dk[i].duplicate());
[0090]
outs[i]out.duplicate();
[0091]
}
[0092]
returnouts;
[0093]
}
[0094]
则上述加密解密后执行得到:
[0095]
输入通道的读访问控制策略acp:(使用:和@分隔)
[0096]
2:4702:6:903:11:1901:2:5
[0097]
1:4:7
[0098]
2:6:9
[0099]
3:11:19
[0100]
1:2:5
[0101]
本用户具备的属性集为:(用:分隔每个属性)
[0102]
a5:1:4:702:6:903:11:1901:2:5
[0103]
1:2:3
[0104]
原文件中的内容为:arnoldv.sarn,aclas5actionlawsuitthatcalledforservicesforpeoplewithseriousmentalillnessregardles5ofcost,celebratesitsfortiethbirthdaythisyear.thelitigationendedin2014withasettlementagreementthatlargelyreplaced"shall"with"may,"encouragingthesystemtotryitsbestwhilesofteningrequirements,andpermanentlydoingawaywithacourtmonitor-thelastremnantofrobustaccountabilitythathadbeeninplacefordecades.nowcharles"chick"arnold,theleadplaintiff,saystheagreementshouldhavebeenmoreaggressive.
[0105]
经过加密解密后的执行结果为:arnoldv.sarn,aclassactionlawsuitthatcalledforservicesforpeoplewithser1ousmentalillnessregardlessofcost,celebratesitsfortiethbirthdaythisyear.thelitigationendedin2014withasettlementagreementthatlargelyreplaced"shall"with"may,"encouragingthesystemtotryitsbestwhilesofteningrequirements,andpermanentlydoingawaywithacourtmonitor-thelastremnantofrobustaccountabilitythathadbeeninplacefordecades.nowcharles"chick"arnold,theleadplaintiff,saystheagreementshouldhavebeenmoreaggressive.
[0106]
对应的密文16进制表示为:
[0107]
6d6e35a0b768035fe5a111f1f97993ccbfc72a4f3ca3ebb53d42ee92aa030407490efa11b 95a76dca7b995f4b1e3adf146b9d3c70a10eaf3f4b765d501b0f397da11c7f81a9143a1c6bb763 6fc31e6b24fa34e36321d2d,d842578810f96e91e8836c847c3761fc58fb9633d873f63c0423597 15be67896332dcd1a58c18eb0df594d5eef939e4216a54f30c164a26ea7fc4f1f5585608746226 29e5d8483d84afe344e5d92d774fb2d3d85de85,0a8cee2b6e81e6fd1909d6d084d63064a0ca7 2c93e7f7ff394a03f01134f36479f4c25104a5a0d33d8258027 cdcfd2a6f14106995a7240c5563dbff3d85a6892923a59eb57d75dcc5444176e8ac7af104be7f8a 3862b8,12016c36290ac548cff2d27c82a682a6b94651f3ac2b22e8e78a01aff9fe7ecf80af3542f8 7f9dd7c8e6395ed1ca48ed036842521cf085eab336e59a8f2422d212bf405cd927e814c4e94b61 e5763c316ec942aab8d265,06d35653b9886fb71c7a1a2628a090e6582e7dbdc88dfe3605f2344 d6feda42cf767b41bba385e2c53d22d4b8f1db5be3efa5de478498b54e6e0e305526649d2a8c5 71ee24b7573b4067b745faf35b02b98b51f760f93,c1cbd9ab0c5d8e512bf3b7044d9de5d1cfb1c cbc5da94e2b97bb15b9ae4ea239f4d92a8773c37dc3711f3e17be5795f7d0208f81f5c61eff2074 2febd0a9c574824f8be89296162c3a68f31b9582ae46094df87cea956a,ea5c073c5c6fb0e82bb2 5586262ec0f12777904d532a6df0585ec1dcbbce99c3e49b468f5b20d18d0ce963cd5228a3799 a9d8919ba35bf1bd332f78aac5f316613dfb78ed18ea5108254eba3d04ca6768e0f9baec0c2e3,7 9b8384f7c8d21633397294f56738ede8e866dae26742f63dda39994d62f5ebe3e45fc53c0c3e2f 0917c8306446c2ba253fa4cef71a4d7479ea68d9999ffe7628b628518965adcd38b8f21542699 148b7742c733a835b4,d590a1abe9c0029eed427f16a2ddcc46bf86cf512e5742b32bc60184990 a5fe7d41616ca41958c4f65cf21422434a1dbb17bc063f9da9889367a79243b9 facba0797b54159a1ea6efa1cd4401c9979dc9349bae7a81689,s31e3d53ff2491fea500ad50cdaa 4917992af912d0cab1d2964749f5107faf15f207f4aa808b039df953ef72c71a1b72c7ce6927b82 a632645bb98126e546b1cdba897355d635148a94f36a0535f7a64818db3fd11e92a,d0eb71a11 fe73e561a6d1e628e1a8149368e8a44d88bcd56fc0a5928b139f65b91192c6a4790e08c9a8f8f9 d2666a574ea377eda4db1d74869fed116c7139e19c14fd8a21203cbd8b340798732e2be2d8e4c 21addc97e3,317d8f83e318e2168f1c38 deeff3e61c5b95fc3eb780c84d7e434dd73d0e358c86ef2a163b9ea70ae27137ce1aa6615ae436 be1d3278604bd4baef679869997a01a356e44f67 bedaa087eee6bf94a13e326f83bdc13493,39adc954cd094b88da79bbe03c4d59a88b3b328844 e8e297d46d4876c76715622a0da494f2ca3da2d8200b5325ec26ac031e457acc285b841616cd1 aa79235d8034b9e143388968e591fb3562d1285567ada66961d42e2,cb0e25d430dc20cf6ddb1 b3ad5a453d5f615f433210c49dc819c48d9f2bc5a187ff9678410135eb9f9e363a01c8b5d55668 67b92500875f8d86cd7c40fb2 fcacf71df1adcd9f52399f8062de2ae51f9963010989f17088,se557d7c768da5b6e25440f48aa47 10d9c1451db8839a65b8b7b797d918b46314d7946d8179d9ef8a632c626692 fdace11678f1ccf06813fe9ca3f9ee58e29ad1a5022b9e8dee6e444b4046645eb2
[0108]
明文和密文的大小分别为:581字节和2688字节;当增加明文字节数后再进行加密解密对应的明文密文大小分别为:12121字节和14208字节。
[0109]
在加密实验中,明文在经过复杂的加密以及解密手段后可以复原,也是为了确定
加密的效率以及密文较明文扩大了多少字节。在实验中,首先使用控制台输入测试算法的功能特性, acp的输入以“:”和“@”作为分隔符,其中“:”表示或,“@”表示且。属性使用0-100的整数作为索引表示,并且将索引与属性节点的关系用映射表的方式存储。实验验证了给定基于acp生成的加密密钥后,按照本方法所述的加密方法、解密密钥生成方法、解密方法可以还原原本的明文数据。其中当访问控制策略acp不变时,密文比明文扩大相同的字节,因此同批次加密中明文越大,密文比明文的比值就越小。而访问控制策略acp越复杂,密文较明文的扩大字节就越多。算法的安全性基于离散对数难题,在无法获得属性密钥的条件下,密文的破解将是多项式时间内困难的。
[0110]
与现有技术相比,本方法完全基于对等节点的去中心化设计,可以在属性节点相互独立的情况下进行加密密钥生成以及解密密钥生成的计算工作。本方法的访问控制逻辑包含在算法的数学性质中,因此其不依赖于任何参与方对用户是否满足访问控制策略的判断,系统唯一需要保障的是单个属性节点的可靠性,这点取决与数据分享者自身的选择。
[0111]
本方法不仅实现对资源获取的权限控制,还可以实现写操作相关的权限控制。属性节点的加入更为灵活,任何实现认证与计算功能的节点都可以在系统中成为属性节点。用户节点的属性是可被撤销,权限撤销只需要在属性节点层面使用户节点的属性证书失效即可实现。
[0112]
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。