一种基于属性加密的区块链数据访问控制方法及装置
技术领域
本发明涉及区块链领域,尤其涉及一种基于属性加密的区块链数据访问控制方法及装置。
背景技术
目前,区块链技术蓬勃发展,区块链技术具有:去中心化、不可篡改、去信任、开放性、自治性、匿名性的特点。基于上述特点,目前通常采用区块链技术实现访问控制,即防止对任何资源进行未授权的访问,从而使系统在合法的范围内使用。
然而基于区块链的访问控制方案通常无法保证数据的机密性,例如对于一些敏感信息和需要保密的信息,数据拥有者希望数据被加密存储在区块链中,并且只有具有特定的访问权限的用户才可以对数据进行解密和访问。
但是,通常情况下,对于采用基于身份的公钥加密算法,用户的公、私钥和身份信息一一对应,若用户的公钥和私钥被不法分子获得后,就可以破解出用户的身份信息,从而造成用户身份信息的泄露。
并且,申请人经研究发现,在用户拥有访问某个数据的密钥后,无法撤销密钥,这样在用户的身份发生改变后,仍然可以访问数据,这样无法保证数据的私密性。
发明内容
有鉴于此,本发明实施例公开了一种基于属性加密的区块链的数据访问控制方法的流程示意图,在本实施例中,该装置包括:
在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;
在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间段是依据用户属性确定的;
在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;
响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。
可选的,所述依据系统属性集合和时间密钥管理参数对所述交易进行加密,生成密文,包括:
从所述系统属性集合中挑选至少一个属性;
依据挑选出的属性构建访问控制树;
依据所述时间密钥管理参数计算时间限制密钥;
基于所述访问控制树和时间限制密钥对所述交易信息进行加密,生成密文。
可选的,所述响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问,包括:
判断当前的访问时间是否在用户的访问时间段内,且所述用户的属性集合是否包含所述访问控制树中所有的属性;
若当前的访问时间在用户的访问时间段内,计算时间限制密钥;
依据所述用户属性加密的私钥和所述时间限制密钥计算所述交易信息的解密私钥;
利用用户的属性集合、所述解密私钥和所述访问控制树中的各个叶子节点,对密文进行解密。
可选的,还包括:
获取区块生成者的验证密钥,并依据所述区块生成者的验证密钥验证交易所在区块是否存在;
获取所述交易信息生成者的验证密钥,并依据所述交易信息生成者的验证密钥验证交易是否存在;
在所述交易所在区块存在,且所述验证密钥存在的情况下,响应用户的访问请求。
本发明实施例还公开了一种基于属性加密的区块链数据访问控制装置,包括:
系统属性集合生成单元,用于在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;
用户属性集合生成单元,用于在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间段是依据用户属性确定的;
密文生成单元,用于在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;
数据访问单元,用于响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。
可选的,所述密文生成单元,包括:
属性挑选子单元,用于从所述系统属性集合中挑选至少一个属性;
访问控制树构建子单元,用于依据挑选出的属性构建访问控制树;
时间限制密钥计算子单元,用于依据所述时间密钥管理参数计算时间限制密钥;
密文生成子单元,用于基于所述访问控制树和时间限制密钥对所述交易信息进行加密,生成密文。
可选的,所述时间限制密钥计算子单元,包括:
第一计算子单元,用于依据时间密钥管理参数和基于属性加密的系统参数,计算第一时间密钥参数;
第二计算子单元,用于基于时间密钥管理的哈希函数和第一时间密钥参数,计算时间限制密钥。
可选的,所述数据访问单元,包括:
判断子单元,用于判断当前的访问时间是否在用户的访问时间段内,且所述用户的属性集合是否包含所述访问控制树中所有的属性;
时间限制密钥计算子单元,用于若当前的访问时间在用户的访问时间段内,计算时间限制密钥;
解密私钥计算子单元,用于依据所述用户属性加密的私钥和所述时间限制密钥计算所述交易信息的解密私钥;
解密子单元,用于利用用户的属性集合、所述解密私钥和所述访问控制树中的各个叶子节点,对密文进行解密。
可选的,还包括:
第一验证单元,用于获取区块生成者的验证密钥,并依据所述区块生成者的验证密钥验证交易所在区块是否存在;
第二验证单元,用于获取所述交易信息生成者的验证密钥,并依据所述交易信息生成者的验证密钥验证交易是否存在;
访问请求响应单元,用于在所述交易所在区块存在,且所述验证密钥存在的情况下,响应用户的访问请求。
本发明实施例公开了一种基于属性加密的区块链数据访问方法,包括:在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间是依据用户属性确定的;在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。由此可知,通过属性对去信息进行加密,解决了现有技术中由于通过用户身份信息加密会导致用户身份信息泄露的风险.
并且加入了时间密钥管理,限制了用户的访问时间,实现了密钥的自动撤销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种基于属性加密的区块链数据访问控制方法的流程示意图;
图2示出了本发明实施例提供的一种基于属性加密的区块链数据访问控制装置的结构示意图;
图3示出了本发明实施例提供的一种物联网系统的架构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,示出了本发明实施例提供的一种基于属性加密的区块链数据访问控制方法的流程示意图,在本实施例中,该方法包括:
S101:在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间的密钥管理参数;
本实施例中,基于属性加密的系统参数包括:系统公共参数PK和主密钥MK。
其中,计算系统公共参数PK和主密钥MK的过程为:
选择一个双线性群G0,G0的阶是素数P,生成元是g,随机选取α,β∈Zp;
通过如下的公式1)计算公共参数PK:
1)PK=(G0,g,h=gβ,e(g,g)a);
通过如下的公式2)计算主密钥MK:
2)MK=(β,ga);
其中,系统属性集合根据系统的应用场景决定,不同用途的系统包含不同的属性集合,并且不同的属性集包含多个维度的属性信息。
其中,如图3所示,对于物联网系统,包括不同的角色,例如包括:销售商、购买方、管理员、权威结构。该物联网系统包含的系统属性集合包括:身份维度属性,例如包括:购买方属性、制造商属性、销售商等,除此之外,还可以包括区域属性等。
其中,在物联网系统中,不同身份在系统中的作用是:
制造商:制造商生产物联网设备并将设备交易给购买方,制造商也需要对设备进行维护。据此功能,在本实施例中,制造商可以向新交易区块和设备维护区块写入数据;
销售商:销售商也可以与购买方进行物联网设备的交易,并向新交易区块中添加新的交易数据;
购买方:购买方可以直接从制造商处购买物联网设备,也可以从销售商处购买物联网设备,购买方只能将消息写入新交易区块;
管理员:管理员对物联网设备进行管理,还需要管理系统的访问控制策略,管理员可以向设备管理块中写入新的数据。
权威机构:当用户想要加入物联网设备管理系统时(即当用户向系统注册时),他们需要向权威机构发起申请(制造商,销售商,购买方和管理员都是用户)。当用户向权威机构申请后,权威机构需要验证用户的身份,然后将公共参数PK和主密钥MK分发给用户。权威机构还将用户的属性分配给他们,这些信息都包含在权威机构所签署的证书中。在此之后,将不再需要权威机构参与区块链中数据的访问。
本实施例中,时间密钥管理参数包括:在Fq上选择的一个椭圆曲线E,(q表示一个大素数)椭圆曲线E上的点Q。
S102:在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;
其中,在一些系统中包含权威机构的节点,,当用户向系统注册时,该权威机构的节点会向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段。
本实施例中,基于用户属性集合的私钥的计算过程包括:
随机选取r∈Zp,对于每一个属性j∈S,随机选取rj∈Zp,选择用于属性加密的哈希函数H1;
如下公式3)计算用户属性集合的私钥:
其中,签名密钥和验证密钥可以通过ECDSA(中文全称:椭圆曲线数字签名算法,英文全称:Elliptic Curve Digital Signature Algorithm)算法进行计算。
并且,用户的访问时间段是根据用户的属性信息确定的,具体的,包括:
获取用户的属性集合;
根据用户的属性集合确定用户的访问时间段。
举例说明:应用在物联网系统中,不同属性的节点的访问时间段不同,假设设置属性为销售商的用户节点的访问时间段为【2017.01.01,2018.12.31】,即该用户只能在2017年-2018年之间对系统中的交易信息进行访问。
S103:在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;
本实施例中,为了对用户的访问时间进行管理,对于密文的生成需要时间密钥管理参数信息,并且为了避免基于用户信息生成的密钥造成用户隐私泄露,还需要基于属性信息对密文进行加密,具体的,S103包括:
从所述系统属性集合中挑选至少一个属性;
依据挑选出的属性构成访问控制树;
依据所述时间密钥管理参数计算时间限制密钥;
基于所述访问控制树和时间限制密钥对所述交易信息进行加密,生成密文。
本实施例中,用户生成交易信息M,生成交易的用户从系统属性集合中挑选至少一个属性构建访问控制树,其中,访问控制树中每个叶子节点表示一个属性。
计算限制密钥的过程包括:
依据时间密钥管理参数和基于属性加密的系统参数,计算第一时间密钥参数;
基于时间密钥管理的哈希函数和第一时间密钥参数,计算时间限制密钥。
举例说明:选择p(双线性群的阶)的两个不同的模数ni,gi,再选择两个整数a和b,在椭圆曲线E(Fq)上计算Pi=ni·Q,根据上述参数,计算第一时间密钥参数Ki,如下公式4):
4)Ki=pi·gi;
其中,Pi,ni,gi,a和b是不公开的参数。
根据上述参数通过如下的公式5)计算时间限制密钥:
其中t∈[1,Z],H2是用于时间限制的密钥管理中的哈希函数。
本实施例中,对于密文的计算过程可以包括:
为访问控制树的每个叶子节点定义一个多项式qx,,叶子节点的集合为Y,根节点为R,ZP中选取随机数S,令qR(0)=s,生成的消息可以通过如下的公式6)加密:
生成密文后,将密文发布到区块中,具体的包括:
将密文加上时间戳;
采用所述签名密钥对所述密文签名;
将所述密文封装成交易进行发布。
其中,从系统属性集合中挑选出构造访问控制树T的至少一个属性,表明了哪些用户可以解密该条交易,在主节点生成新的区块的过程中,使用拜占庭容错机制达成共识,生成的新的区块也需要带有生成者的签名。
S104:响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。
本实施例中,在对区块中的密文信息进行访问之前,需要先验证交易信息所在区块,具体的,包括:
获取区块生成者的验证密钥,并依据所述区块生成者的验证密钥验证交易所在区块是否存在;
获取所述交易信息生成者的验证密钥,并依据所述交易信息生成者的验证密钥验证交易是否存在;
在所述交易所在区块存在,且所述验证密钥存在的情况下,响应用户的访问请求。
本实施例中,用户要访问区块中的某条交易时,首先利用区块生成者的验证密钥Vksig_block验证交易所在区块,再利用交易信息生成者的验证密钥Vksig_tran验证验证交易,在该区块和交易都通过验证的情况下,则该交易信息为有效交易,在区块或者交易中任何一个验证不通过的情况下,验证失败。
本实施例中,当用户对保存在区块中的交易信息进行访问时,需要验证用户身份,以及对密文解密后才可以进行访问,具体的,S104包括:
判断当前的访问时间是否在用户的访问时间段内,且所述用户的属性集合是否包含所述访问控制树中所有的属性;
若当前的访问时间在用户的访问时间段内,计算时间限制密钥;
依据所述用户属性加密私钥和所述时间限制密钥计算所述交易信息的解密私钥;
利用用户的属性集合、所述解密私钥和所述访问控制树中的各个叶子节点,对密文进行解密。
本实施例中,若用户具有加密该数据时设定的属性,且用户的访问时间有效,则用户可以对交易信息进行访问,具体的,包括:
1)当时间t∈[t
b,t
e]时,用户可以计算时间限制的密钥Kt,通过上述的介绍可知,
其中t∈[1,Z],H
2是用于时间限制的密钥管理中的哈希函数。
在对数据进行访问时,计算时间限制密钥时的各个参数为:
2)其中,根据上述计算出的时间限制密钥和用户具有的属性加密私钥,计算解密私钥。
其中,解密私钥可以通过如下的公式7)计算:
其中,通过解密私钥对交易信息进行访问的过程包括:
在对数据进行解密时,用户利用交易的密文CT,与其具有的属性集合S相关联的解密私钥SK和访问控制树T的节点x,
其中,当节点x是一个叶子结点时,
定义i=att(x),如果i∈S,计算DecryptNode(CT,SK,x):
如果,i∈S,计算DecryptNode(CT,SK,x)=⊥;
(4)如果x是一个非叶子结点,定义z为x的子节点,Fz是DecryptNode(CT,SK,x)的输出结果,Sx是z的大小为kx的集合,并且,计算:
其中,i=index(Z),S′x={index(x):z∈Sx};
(5)如果用户的属性集合S符合访问控制树T,定义R为T的根结点,计算
则通过如下公式计算交易信息的明文:
为避免用户需要不断的尝试解密消息以确定其是否具有访问消息的权限,在本发明实施例中,在区块链中定义了设备管理区块,用户可以先从设备管理区块中得到访问控制权限,再根据权限解密其可以访问的物联网设备信息。
举例说明:如图3所示,在物联网设备管理区块链中,有三种不同类型的区块,新交易区块,设备维护区块和设备管理区块。
其中,新交易区块是在交易信的物联网设备时生成的,该交易区块中存储有交易信息,该交易信息包括:交易日期、供应商信息、设备型号、设备类型、合同等,设备的唯一标识符,存放地点,责任人,使用人,设备状态,制造商信息,硬件信息(版本号)和软件信息(版本号)。
设备维护区块是在物联网设备需要维护时生成,该设备维护区块中包含唯一的设备标识符和一些维护数据,如硬件信息(版本号),软件信息(版本号),维护人员,维护日期等。
设备管理区块存储每种类型区块的访问控制策略。因为在解密的过程中,用户需要反复尝试他的属性是否可以解密当前数据,这使得解密效率降低,但是在本方案中,用户可以通过首先查找设备管理区块上的访问控制策略来提高解密效率。
本实施例中,在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间是依据用户属性确定的;在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。由此可知,通过属性对去信息进行加密,解决了现有技术中由于通过用户身份信息加密会导致用户身份信息泄露的风险.
并且加入了时间密钥管理,限制了用户的访问时间,实现了密钥的自动撤销。
参考图2,示出了本发明实施例提供的一种基于属性加密的区块链数据访问控制装置的结构示意图,包括:
系统属性集合生成单元201,用于在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;
用户属性集合生成单元202,用于在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间是依据用户属性确定的;
密文生成单元203,用于在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;
数据访问单元204,用于响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。
可选的,其特征在于,还包括:
获取单元,用于获取用户的属性集合;
访问时间段确定单元,用于根据用户的属性集合确定用户的访问时间段。
可选的,所述密文生成单元,包括:
属性挑选子单元,用于从所述系统属性集合中挑选至少一个属性;
访问控制树构建子单元,用于依据挑选出的属性构建访问控制树;
时间限制密钥计算子单元,用于依据所述时间密钥管理参数计算时间限制密钥;
密文生成子单元,用于基于所述访问控制树和时间限制密钥对所述交易信息进行加密,生成密文。
可选的,所述数据访问单元,包括:
判断子单元,用于判断当前的访问时间是否在用户的访问时间段内,且所述用户的属性集合是否包含所述访问控制树中所有的属性;
时间限制密钥计算子单元,用于若当前的访问时间在用户的访问时间段内,计算时间限制密钥;
解密私钥计算子单元,用于依据所述用户属性加密的私钥和所述时间限制密钥计算所述交易信息的解密私钥;
解密子单元,用于利用用户的属性集合、所述解密私钥和所述访问控制树中的各个叶子节点,对密文进行解密。
可选的,还包括:
第一验证单元,用于获取区块生成者的验证密钥,并依据所述区块生成者的验证密钥验证交易所在区块是否存在;
第二验证单元,用于获取所述交易信息生成者的验证密钥,并依据所述交易信息生成者的验证密钥验证交易是否存在;
访问请求响应单元,用于在所述交易所在区块存在,且所述验证密钥存在的情况下,响应用户的访问请求。
通过本实施例的装置,在系统初始化时,生成基于属性加密的系统参数、系统属性集合和基于时间密钥管理参数;在用户向系统注册时,系统向用户发送基于用户属性集合的私钥、签名密钥、验证密钥和用户的访问时间段;所述用户的访问时间是依据用户属性确定的;在生成新的交易信息时,依据系统属性集合和时间密钥管理参数对所述交易信息进行加密,生成密文,并将所述密文保存到区块中;响应于用户的访问请求,依据用户的属性集合和用户的访问时间对交易信息进行访问。由此可知,通过属性对去信息进行加密,解决了现有技术中由于通过用户身份信息加密会导致用户身份信息泄露的风险,并且加入了时间密钥管理,限制了用户的访问时间,实现了密钥的自动撤销。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。