一种基于区块链技术的安全发布订阅系统及发布订阅方法转让专利

申请号 : CN201910231629.X

文献号 : CN109981641B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕品王励成李丽香

申请人 : 北京邮电大学

摘要 :

本发明实施例提供了一种基于区块链技术的安全发布订阅系统及发布订阅方法,系统包括:密钥服务器,消息订阅客户端,消息发布服务器,包括多个区块链节点的区块链;方法包括:接收由消息发布服务器发送的密文和加密标签;接收由订阅客户端发送的属性值,陷门值,预解密密钥;验证密文是否与属性值匹配;如果匹配则验证加密标签是否与陷门值匹配;如果匹配则利用预解密密钥对密文进行预解密处理得到预解密密文;将预解密密文发送至消息订阅客户端,以使消息订阅客户端解密得到订阅消息。本发明实施例能够提高发布订阅系统中所保存数据的安全性。

权利要求 :

1.一种基于区块链技术的安全发布订阅系统,其特征在于,所述系统包括:密钥服务器,消息订阅客户端,消息发布服务器,以及区块链,所述区块链包括多个区块链节点,其中:所述密钥服务器用于基于所述消息发布服务器的授权发布时间,向该消息发布服务器分配密钥,以及,基于所述消息订阅客户端的属性值和授权访问时间,向该消息订阅客户端分配密钥;所述密钥包括:主私钥,系统公钥,第一私钥,第二私钥;其中,所述第一私钥用于消息发布服务器,所述第二私钥用于消息订阅客户端;

所述消息订阅客户端用于基于订阅关键字生成与该订阅关键字对应的陷门值,基于自身的属性值生成预解密密钥,并将所述陷门值和所述预解密密钥发送至所述区块链节点;

以及,基于所述第二私钥生成解密密钥;

所述消息发布服务器用于基于所述第一私钥对消息以及该消息对应的关键字集合进行加密处理,分别生成与所述消息对应的密文以及与所述关键字集合对应的加密标签,并将所述密文和所述加密标签发送至所述区块链节点;其中,所述密文中携带有与该密文相关联的访问控制策略;

所述区块链节点用于验证所述消息订阅客户端的属性值是否满足所述消息发布服务器的访问控制策略,以及验证所述加密标签是否与所述陷门值匹配,并在验证通过后将预解密密文发送至所述消息订阅客户端;所述预解密密文通过对所述密文进行预解密处理后得到;

所述区块链上部署有智能合约,所述智能合约用于验证所述消息发布服务器和所述消息订阅客户端之间的访问控制策略以及订阅策略;

所述区块链节点具体用于:

判断所述消息发布服务器发布的密文是否与所述消息订阅客户端的属性值匹配;

如果所述消息订阅客户端不满足所述消息发布服务器的访问控制策略,则所述智能合约终止执行;否则,基于所述智能合约继续判断所述消息发布服务器的加密标签是否满足所述消息订阅客户端的订阅策略,如果不满足则所述智能合约终止执行;否则,所述区块链进行预解密操作,并将预解密密文发送至所述消息订阅客户端。

2.根据权利要求1所述的系统,其特征在于,所述区块链节点具体用于:判断消息发布服务器的所述密文是否与消息订阅客户端的所述属性值匹配。

3.根据权利要求2所述的系统,其特征在于,所述区块链节点具体用于:如果消息发布服务器的所述密文与消息订阅客户端的所述属性值匹配,则验证所述加密标签是否与所述陷门值匹配。

4.根据权利要求3所述的系统,其特征在于,所述区块链节点具体用于:如果所述加密标签与所述陷门值匹配,则将所述预解密密文发送至所述消息订阅客户端。

5.根据权利要求3所述的系统,其特征在于,所述区块链节点具体用于:判断所述加密标签与所述陷门值是否对应相同的关键字。

6.根据权利要求4或5所述的系统,其特征在于,所述消息订阅客户端还用于:利用所述解密密钥解密所述预解密密文,得到订阅消息。

7.一种基于区块链技术的安全发布订阅方法,应用于如权利要求1~6任一项所述的基于区块链技术的安全发布订阅系统中的所述区块链节点,其特征在于,所述方法包括:接收由所述消息发布服务器发送的密文和加密标签;所述密文中携带有与该密文相关联的访问控制策略;

接收由所述订阅客户端发送的属性值,陷门值,以及预解密密钥;

验证所述密文是否与所述属性值匹配;

如果所述密文与所述属性值匹配,则验证所述加密标签是否与所述陷门值匹配;

如果所述加密标签与所述陷门值匹配,则利用所述预解密密钥对所述密文进行预解密处理,得到预解密密文;

将所述预解密密文发送至所述消息订阅客户端,以使所述消息订阅客户端解密所述预解密密文,得到订阅消息。

8.根据权利要求7所述的方法,其特征在于,所述验证所述加密标签是否与所述陷门值匹配的步骤,具体包括:判断所述加密标签与所述陷门值是否对应相同的关键字。

9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行存储器上所存放的程序时,实现权利要求7或8所述的方法步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求7或8所述的方法步骤。

说明书 :

一种基于区块链技术的安全发布订阅系统及发布订阅方法

技术领域

[0001] 本发明涉及物联网技术领域,特别是涉及一种基于区块链技术的安全发布订阅系统及发布订阅方法。

背景技术

[0002] 发布订阅系统是一种中间件系统,其具有异步传输,多方通信,松耦合的特点,它能够使通信双方在时间、空间与控制流程上实现完全解耦,而实体间则以松散的方式进行数据传输,与此同时消息发布服务器与订阅者彼此之间并不知道对方的存在。订阅者只需将自己感兴趣的请求提交给中间件,只要有发布者向中间件发布消息,中间件就可以向所有感兴趣的订阅者发送该消息。
[0003] 受益于无线传感技术的发展,物联网实现了在智慧城市、智慧医疗以及自动驾驶领域的长足发展。物联网的一个显著特点是分布式,由于发布订阅系统固有的实现传感器间交互信息去耦合的特点,使得其更加适合应用于物联网场景。
[0004] 但是,正是由于发布订阅系统去耦合的特点,使得针对该系统的中所保存数据的攻击层出不穷,也就是说,现有的发布订阅系统中所保存数据的安全性仍有待提高。

发明内容

[0005] 本发明实施例的目的在于提供一种基于区块链技术的安全发布订阅系统及发布订阅方法,以进一步提高发布订阅系统中所保存数据的安全性。具体技术方案如下:
[0006] 第一方面,本发明实施例提供了一种基于区块链技术的安全发布订阅系统,所述系统包括:密钥服务器,消息订阅客户端,消息发布服务器,以及区块链,所述区块链包括多个区块链节点,其中:
[0007] 所述密钥服务器用于基于所述消息发布服务器的授权发布时间,向该消息发布服务器分配密钥,以及,基于所述消息订阅客户端的属性值和授权访问时间,向该消息订阅客户端分配密钥;所述密钥包括:主私钥,系统公钥,第一私钥,第二私钥;其中,所述第一私钥用于消息发布服务器,所述第二私钥用于消息订阅客户端;
[0008] 所述消息订阅客户端用于基于订阅关键字生成与该订阅关键字对应的陷门值,基于自身的属性值生成预解密密钥,并将所述陷门值和所述预解密密钥发送至所述区块链节点;以及,基于所述第二私钥生成解密密钥;
[0009] 所述消息发布服务器用于基于所述第一私钥对消息以及该消息对应的关键字集合进行加密处理,分别生成与所述消息对应的密文以及与所述关键字集合对应的加密标签,并将所述密文和所述加密标签发送至所述区块链节点;其中,所述密文中携带有与该密文相关联的访问控制策略;
[0010] 所述区块链节点用于验证所述消息订阅客户端的属性值是否满足所述消息发布服务器的访问控制策略,以及验证所述加密标签是否与所述陷门值匹配,并在验证通过后将预解密密文发送至所述消息订阅客户端;所述预解密密文通过对所述密文进行预解密处理后得到。
[0011] 可选的,所述区块链节点具体用于:
[0012] 判断消息发布服务器的所述密文是否与消息订阅客户端的所述属性值匹配。
[0013] 可选的,所述区块链节点具体用于:
[0014] 如果消息发布服务器的所述密文与消息订阅客户端的所述属性值匹配,则验证所述加密标签是否与所述陷门值匹配。
[0015] 可选的,所述区块链节点具体用于:
[0016] 如果所述加密标签与所述陷门值匹配,则将所述预解密密文发送至所述消息订阅客户端。
[0017] 可选的,所述区块链节点具体用于:
[0018] 如果所述加密标签与所述陷门值匹配,则将所述预解密密文发送至所述消息订阅客户端。
[0019] 可选的,所述消息订阅客户端还用于:
[0020] 利用所述解密密钥解密所述预解密密文,得到订阅消息。
[0021] 第二方面,本发明实施例提供了一种基于区块链技术的安全发布订阅方法,应用于如第一方面所述的基于区块链技术的安全发布订阅系统中的所述区块链节点,所述方法包括:
[0022] 接收由所述消息发布服务器发送的密文和加密标签;所述密文中携带有与该密文相关联的访问控制策略;
[0023] 接收由所述订阅客户端发送的属性值,陷门值,以及预解密密钥;
[0024] 验证所述密文是否与所述属性值匹配;
[0025] 如果所述密文与所述属性值匹配,则验证所述加密标签是否与所述陷门值匹配;
[0026] 如果所述加密标签与所述陷门值匹配,则利用所述预解密密钥对所述密文进行预解密处理,得到预解密密文;
[0027] 将所述预解密密文发送至所述消息订阅客户端,以使所述消息订阅客户端解密所述预解密密文,得到订阅消息。
[0028] 可选的,所述验证所述加密标签是否与所述陷门值匹配的步骤,具体包括:
[0029] 判断所述加密标签与所述陷门值是否对应相同的关键字。
[0030] 第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现本发明实施例第二方面提供的基于区块链技术的安全发布订阅方法的方法步骤。
[0031] 第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行本发明实施例第二方面提供的基于区块链技术的安全发布订阅方法的方法步骤。
[0032] 本发明实施例提供的一种基于区块链技术的安全发布订阅系统及发布订阅方法,区块链节点通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034] 图1为本发明实施例提供的基于区块链技术的安全发布订阅系统的一种架构示意图;
[0035] 图2为本发明实施例提供的基于区块链技术的安全发布订阅方法的一种流程示意图;
[0036] 图3为本发明实施例提供的基于区块链技术的安全发布订阅装置的一种结构示意图;
[0037] 图4为本发明实施例提供的电子设备的一种结构示意图;
[0038] 图5为本发明实施例中订阅者密钥生成时长与订阅者自身属性值数量的关系示意图;
[0039] 图6为本发明实施例中订阅者订阅陷门的生成时间与关键字数量及属性值数量的关系示意图;
[0040] 图7为本发明实施例中发布者加密时间与关键字数量及属性值数量的关系示意图;
[0041] 图8为本发明实施例中策略匹配时间与关键字数量及属性值数量的关系示意图;
[0042] 图9为本发明实施例中的预解密阶段,加密时长与关键字数量及属性值数量的关系示意图;
[0043] 图10为本发明实施例中解密时长与关键字数量及属性值数量的关系示意图。

具体实施方式

[0044] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045] 如图1所示,本发明实施例提供了一种基于区块链技术的安全发布订阅系统,该系统包括:
[0046] 密钥服务器,消息订阅客户端,消息发布服务器,以及区块链,其中区块链可以包括多个区块链节点。
[0047] 密钥服务器用于基于消息发布服务器的授权发布时间,向该消息发布服务器分配密钥,以及,基于消息订阅客户端的属性值和授权访问时间,向该消息订阅客户端分配密钥;密钥包括:主私钥,系统公钥,第一私钥,第二私钥;其中,第一私钥用于消息发布服务器,第二私钥用于消息订阅客户端。
[0048] 也就是说,密钥服务器可以用于负责管理本发明实施例系统中的属性值及授权时间,当消息订阅客户端向密钥服务器发起注册请求时,密钥服务器可以根据订阅客户端的属性值以及授权访问时间,为其分配密钥;当消息发布服务器向密钥服务器发起注册请求时,密钥服务器可以根据述消息发布服务器的授权发布时间,为其分配密钥。
[0049] 尽管基于属性的加密算法在细粒度用户访问控制以及可扩展性等方面有着其它加密方案无法比拟的优势,但是密钥的撤销在基于属性的加密算法中依然存在不足,因此,本发明实施例将密钥管理与访问控制方案相结合,以时间维度对用户密钥进行授权,使得本发明实施例可以在对用户密钥动态授权的同时,还可以对用户支持细粒度的访问控制。本发明实施例可以利用现有的基于椭圆曲线的限时密钥管理方案,为消息发布服务器和消息订阅客户端分配密钥,该技术为现有技术,本发明实施例在此不再赘述。
[0050] 本发明实施例中,密钥服务器生成密钥的原理过程为:
[0051] 选择两个具有大素数阶p(p>2k)的乘法群,选择G,GT双线性映射e:G*G→GT,其中g为群G的生成元,选取哈希函数H1∶{0,1}→G(将任意一个属性映射为群G中的一个元素),选取哈希函数H2:{0,1}→G(将任意个关键字映射为群G中的一个一个元素),选取哈希函数HK,其中K表示时间界限加密算法的私钥。选取α,β,γ,a,b∈Zp,其中Zp表示在p域内的整数,则该系统的主私钥可以表示为:
[0052] msk=(ga,α,β,γ,a,b,K)
[0053] 系统公钥可以表示为:
[0054] pk=(p,g,G,GT,e,e(g,g)a,gα,gβ,gγ,H1,H2)
[0055] 密钥服务器为消息发布服务器以及消息订阅客户端生成私钥,表示为:
[0056] SkeyGen(msk,pk,{Ssub},{pub})→({sksub},{skpub})
[0057] 其中,msk表示主私钥,pk表示公钥,{Ssub}表示订阅者属性集合,{pub}表示发布者集合,{sksub}表示订阅者(即消息订阅客户端,sub)的私钥,{skpub}表示发布者(即消息发布服务器,pub)的私钥。
[0058] 对于系统中的每一个拥有属性集合{Ssub}的订阅者,随机选取一个随机数其中 表示在p域内的正整数,并选取发布者可以访问的时间范围(tb,te),b表示时间下限下标,e表示时间上限下标,按照如下方式生成订阅者私钥分量1到6:
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065] 订阅者的私钥表示为:
[0066] sksub=(K1,sub,K2,sub,K3,sub,K4,sub,Ksub,attr,K5,sub,K6,sub)[0067] 对于每一个发布者,按照如下规则生成发布者私钥分量1到3,选择一个授权发布消息时间t∈[1,Z],
[0068]
[0069]
[0070] 发布者的私钥表示为:
[0071] skpub=(K1,pub,K2,pub,K3,pub,K4,pub)
[0072] 消息订阅客户端,用于基于订阅关键字生成与该订阅关键字对应的陷门值,基于自身的属性值生成预解密密钥,并将陷门值和预解密密钥发送至区块链节点;以及,基于第二私钥生成解密密钥。
[0073] 可以理解的是,消息订阅客户端作为订阅者,可以根据订阅关键字订阅消息,作为一种具体实现方式,可以生成该订阅关键字对应的陷门值。本发明实施例中的陷门值,可以理解为一个与订阅关键字对应的数值,可以利用该陷门值,在发布的消息中匹配到与订阅关键字相符的消息,其数学原理将在下文中示出。
[0074] 预解密密钥可以用于对密文进行预解密处理,本发明实施例中可以将预解密密钥发送至区块链节点,密文在区块链节点中经预解密处理后,密文转换为预解密密文。
[0075] 本发明实施例中,消息订阅客户端订阅消息的原理过程为:
[0076] 消息订阅客户端可以通过一些关键字生成订阅策略以及关键字的陷门,具体地,消息订阅客户端首先根据其订阅策略生成线性秘密共享方案矩阵,表示为(Mt,ρt),其中,Mt表示订阅者订阅访问控制矩阵,ρt表示应订阅者订阅的关键字集合,其与Mt中的每一行一一对应。消息订阅客户端首先生成陷门值,表示为Tdsub,预解密密钥,表示为pdksub,以及解密密钥,表示为dksub。
[0077] 生成解密密钥的过程表示为:
[0078] TdGen(sksub,pk,(Mt,ρt))→(Tdsub,pdksub,dksub)
[0079] zt,Ksub,t(tb
[0080]
[0081]
[0082]
[0083] 其中,Ksub,t表示订阅者时间界限私钥,Ht(a)表示时间上限的哈希值,HZ-t(b)表示时间下限的哈希值。
[0084] 随机选择 和一个用于分享st的随机向量,其中st为分享的秘密值该式表示待分享的秘密向量,对于j=1到nt计算
Mt,j对应于Mt的每一行,λt,j表示对于st秘密的隐藏结果分量,然后计算tj=λt,j·zt,tj表示最终的隐藏结果值分量,然后计算陷门值分量:
[0085]
[0086] 其中各个符号含义在上文均有提及。
[0087] 最后计算陷门值:
[0088]
[0089] 预解密密钥计算式表示如下:
[0090]
[0091] 式中,K'sub,L'sub以及K'sub,attr均表示预解密密钥分量值。
[0092] 消息订阅客户端调用智能合约查询满足条件的记录,其查询的参数为(Tdsub,pdksub)。
[0093] 消息发布服务器用于基于第一私钥对消息以及该消息对应的关键字集合进行加密处理,分别生成与消息对应的密文以及与关键字集合对应的加密标签,并将密文和加密标签发送至区块链节点;其中,密文中携带有与该密文相关联的访问控制策略。
[0094] 本发明实施例中,基于密文策略的属性加密算法将访问策略同密文相关联,而解密密钥则同一组属性集合相关联。当且仅当解密密钥中属性集合的属性值满足密文中的访问策略时,密文才能被使用该解密密钥解密。密文策略与实际应用场景较为相似,每个用户都可以通过其自身的属性获得相适应的密钥,同时加密者(例如密钥服务器)可以自由的选择属性来构造密钥。
[0095] 本发明实施例中的关键字,可以指一个消息中能够标识该消息的一个或多个字,例如,对于一个消息“近日天气以晴到多云为主”,则天气可以构成该消息的关键字,而关键字集合即是由多个关键字构成的集合。需要说明的是,基于第一私钥对消息以及该消息对应的关键字集合进行加密处理的过程,可以通过现有的基于密文策略的属性加密算法实现,该算法本发明实施例在此不再赘述。
[0096] 本发明实施例中,消息发布服务器发布消息的原理过程为:
[0097] 消息发布服务器为了发布消息,其首先要定义一个用于限定订阅者属性的线性秘密共享矩阵(M,ρ),M是一个n×l访问矩阵,ρ对应于矩阵上的每一个属性行。
[0098] 对数据加密的过程表示为:
[0099] Encrypt(m,Sm,pk,skpub,(M,ρ))→(Cm,Tm)
[0100] 该算法主要有两部分组成,数据加密以及标签加密。
[0101] 其中,数据加密过程表示为:
[0102] DataEnc(m,pk,(M,ρ))→Cm
[0103] 首先选择两个随机数 然后选择两个随机向量 和上述两个随机向量用于对秘密s1,s2进行隐藏。从1到n计算
[0104]
[0105] λi,μi分别表示对s1,s2隐藏后的结果。
[0106] 最后计算密文,表示为:
[0107]
[0108] 式中,C表示消息密文分量,C’表示s1的隐藏密文分量,Ci表示用以匹配订阅者属性值的密文分量,Di表示对μi隐藏的密文。
[0109] 标签加密过程表示为:
[0110] TagGen(Sm,pk,skpub,s2)→Tm
[0111] 随机选取随机数 按照如下方式生成加密标签:
[0112]
[0113] 式中,Wi表示用于确定订阅者订阅关键字位置的标签分量,Ti表示用于确定预先解密密钥的标签分量。
[0114] Wi通过以下方式生成,选择随机数
[0115]
[0116] 式中,W1,i,W2,i,W3,i,W4,i表示标签Wi的各个分量值。
[0117] Ti通过以下方式计算生成,首先选取随机数
[0118]
[0119] 式中,T1,i,T2,i,T3,i,T4,i分别表示标签Ti的各个分量值。
[0120] 消息发布服务器随后向区块链中发布(Cm,Tm),其中Cm为加密后的消息,Tm为加密标签,主要用于消息的匹配以及对匹配成功的消息进行预解密操作。
[0121] 区块链节点用于验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,以及验证加密标签是否与陷门值匹配,并在验证通过后将预解密密文发送至消息订阅客户端;
[0122] 本发明实施例中,可以在区块链上部署智能合约,该智能合约可以用于验证消息发布服务器和消息订阅客户端之间的访问策略以及订阅策略,如果访问策略以及订阅策略满足智能合约要求,便可以将该消息发送给调用该智能合约的消息订阅客户端。
[0123] 具体地,对于每一个消息发布服务器发布的密文,将密文与消息订阅客户端的属性值进行匹配,如果消息订阅客户端不满足消息发布服务器的访问策略,则智能合约终止执行;否则,基于智能合约继续判断消息发布服务器的加密标签是否满足消息订阅客户端的订阅策略,如果不满足则智能合约终止执行;否则,区块链进行预解密操作,并将预解密密文发送至消息订阅客户端。
[0124] 作为本发明实施例一种具体的实施方式,区块链节点具体可以用于:
[0125] 判断消息发布服务器的密文是否与消息订阅客户端的属性值匹配,即上文中的将密文与消息订阅客户端的属性值进行匹配的过程。
[0126] 如果消息发布服务器的密文与消息订阅客户端的属性值匹配,则验证加密标签是否与陷门值匹配,即上文中的基于智能合约继续判断消息发布服务器的加密标签是否满足消息订阅客户端的订阅策略的过程。可选的,具体可以判断加密标签与陷门值是否对应相同的关键字。
[0127] 如果加密标签与陷门值匹配,则将预解密密文发送至消息订阅客户端,即上文中的区块链进行预解密操作并将预解密密文发送至消息订阅客户端的过程。
[0128] 作为本发明实施例一种可选的实施方式,消息订阅客户端得到预解密密文后,即可利用解密密钥解密预解密密文,得到订阅消息。
[0129] 本发明实施例中,区块链的访问控制策略和订阅策略验证原理为:
[0130] 访问策略验证:由于属性没有被隐藏,所以该验证过程只需测试消息订阅客户端的属性值是否满足消息发布服务器制定的访问策略,如果该策略不满足则输出“⊥”,表示算法结束,否则继续算法的以下步骤。
[0131] 订阅策略验证:如果消息订阅客户端满足消息发布服务器的访问策略,继续验证消息发布服务器的加密标签是否满足消息订阅客户端的订阅策略,
[0132] 由于消息发布服务器的加密标签以及消息订阅客户端的陷门值使用可搜索加密算法进行加密,所以应首先查找每一个加密标签查所对应的陷门值,当搜索完所有的加密标签后输出索引集合,索引集合表示为:
[0133]
[0134] 式中各个符号的含义上文均有所提及。
[0135] 为了验证标签分量Wi与陷门Tdj是否对应于同一个关键字,这就需要通过以下公式确定订阅者的关键字在发布者的关键字中的位置,其中公式中的各个符号为上文所提及订阅者的陷门以及发布者的标签分量值。
[0136]
[0137] 其中,“?”用于表示判断等式左边是否与1(等式右边)相等,如果相等,则表明i和j对应同一个关键字,每一个匹配的关键字ρt(j)=wi,使Φ是它们之间的映射关系i=Φ(j)。
[0138] 数据预解密:如果访问策略以及订阅策略都满足,算法接下来按照如下过程进行预解密,表示为:
[0139] PreDecrypt(Cm,pdksub,It)→C'm
[0140] 其中,It表示上文所提及的索引集合。
[0141] 可以找到一个集合{ct,j},使得
[0142] 然后由智能合约计算TK1:
[0143]
[0144] TK1表示第一个预解密密钥分量。
[0145] 同样由于消息订阅客户端的属性值满足访问控制策略,可以找到一个常数集合{ci},使得∑iciλi=s1,∑iciμi=s2
[0146] 然后按照如下方式计算TK2:
[0147]
[0148] TK2表示第二个预先解密密钥分量。
[0149] 最后计算TK:
[0150]
[0151] 其中,TK表示预解密密钥, 表示将TK1与TK2做乘法运算得到的结果。
[0152] 预解密密文表示为:
[0153]
[0154] 本发明实施例中,消息订阅客户端解密密文的原理过程为:
[0155] 如果密文的时间戳t∈[tb,te],消息订阅客户端可以获取密钥
[0156]
[0157]
[0158]
[0159] 消息订阅客户端可以解密密文,表示为:
[0160] Decrypt(C'm,dksub)→m
[0161]
[0162] 本发明实施例提供的一种基于区块链技术的安全发布订阅系统,区块链节点通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。
[0163] 如图2所示,本发明实施例提供了一种基于区块链技术的安全发布订阅方法,应用于如上述实施例的基于区块链技术的安全发布订阅系统中的区块链节点,该过程可以包括以下步骤:
[0164] S101,接收由消息发布服务器发送的密文和加密标签。
[0165] 密文中携带有与该密文相关联的访问控制策略
[0166] S102,接收由订阅客户端发送的属性值,陷门值,以及预解密密钥。
[0167] S103,验证密文是否与属性值匹配。
[0168] S104,如果密文与属性值匹配,则验证加密标签是否与陷门值匹配。
[0169] S105,如果加密标签与陷门值匹配,则利用预解密密钥对密文进行预解密处理,得到预解密密文。
[0170] S106,将预解密密文发送至消息订阅客户端,以使消息订阅客户端解密预解密密文,得到订阅消息。
[0171] 作为本发明实施例一种可选的实施方式,上述步骤S104,具体包括:
[0172] 判断加密标签与陷门值是否对应相同的关键字。
[0173] 本发明实施例提供的一种基于区块链技术的安全发布订阅方法,区块链节点通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。
[0174] 本发明实施例提供的一种基于区块链技术的安全发布订阅装置的一种具体实施例,与图2所示流程相对应,参考图3,图3为本发明实施例的一种基于区块链技术的安全发布订阅装置的一种结构示意图,包括:
[0175] 第一接收模块201,用于接收由消息发布服务器发送的密文和加密标签;密文中携带有与该密文相关联的访问控制策略。
[0176] 第二接收模块202,应用于接收由订阅客户端发送的属性值,陷门值,以及预解密密钥。
[0177] 第一验证模块203,用于验证密文是否与属性值匹配。
[0178] 第二验证模块204,用于如果密文与属性值匹配,则验证加密标签是否与陷门值匹配。
[0179] 预解密模块205,用于如果加密标签与陷门值匹配,则利用预解密密钥对密文进行预解密处理,得到预解密密文。
[0180] 发送模块206,用于将预解密密钥发送至消息订阅客户端,以使消息订阅客户端解密预解密密文,得到订阅消息。
[0181] 本发明实施例提供的一种基于区块链技术的安全发布订阅装置,通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。
[0182] 由表1所示,将发明实施例方案与现有方案一、现有方案二、现有方案三进行对比。将从对于消息保护的机密性、是否支持加密搜索、订阅策略是否是支持细粒度、是否去中心化、是否动态授权以及是否在服务端发起匹配等几个角度对本方案进行对比,由比较结果可知,其它三个发布订阅系统均可以实现对于数据保护机密性的需求。
[0183] 现有方案一所提出的方案虽然可以实现消息的机密性,但是对于匹配策略等确采用明文的形式进行传输,所以加密搜索等特性、细粒度的访问控制、动态授权以及去中心化等特性也就无法满足。
[0184] 现有方案二使用区块链构建了一个公平的发布订阅系统,该系统使用区块链作为消息传递的基础设施虽然可以实现去中心化以及加密搜索等特性,但是由于其所采用的对称与非对称加密的混合加密策略,其无法实现细粒度的访问控制、动态授权以及服务端匹配等对于发布订阅系统隐私保护所需的特性。
[0185] 现有方案三所提的方案由于使用了基于属性加密以及可搜索加密,其可以实现对于消息的细粒度权限访问控制、服务端策略匹配,但是对于去中心化以及动态授权等特性该方案无法提供支持。
[0186] 本发明实施例的安全发布订阅系统是基于区块链的,首先,它只需要一个可信的第三方对于成员的管理,而对于区块链上的数据的交换过程是不存在可信的第三方节点的,可以有效地防止数据被篡改。此外,由于本方案使用智能合约完成对于消息的匹配过程,可以有效地避免了参与匹配服务器作恶的可能性。最后,由于本方案将限时密钥管理与基于属性加密相结合,所以可以完成属性的动态授权功能。
[0187] 表1本方案与其他方案对比
[0188]
[0189] 方案仿真与性能评估
[0190] 实验环境介绍
[0191] 本发明实施例的测试环境是部署在mac OS 10.14.2环境下,在实现过程中,利用Hyperledger Fabric 1.2对区块链平台进行模拟,然后利用fabric平台提供的Java JDK进行与区块链的交互。对于哈希等基本密码学算法,利用Java JDK中security包提供支持,使用JPBC(Java配对密码库)提供对于算法中要求的配对运算的支持,具体的运行软硬件环境见表2。
[0192] 表2实验环境软硬件配置
[0193]类别 配置
CPU(处理器) 2.6GHz Intel Core i7
OS(操作系统) mac OS 10.14.2
RAM(内存) 32G
Java版本 1.8.0_191
JPBC(Java配对密码库) 2.0.0
[0194] 方案性能分析
[0195] 配对参数的选择对于配对运算体制来说是至关重要的,该参数不仅提供了双线性群的很多重要信息,而且在超级计算机性能日渐提升的背景下对于系统的安全性来说也也是至为重要的。因此本发明实施例选择了160位的大素数p以及512位的G群空间,该参数对于现今计算机的计算能力来说是足够安全的。具体参数选择见表3。
[0196] 表3配对运算参数选择
[0197]
[0198]
[0199] 以下位该系统各部分算法运算所需要的算法效率统计情况,所有的数据都是在做了20次运算所取得的平均值。系统建立时间以及发布者私钥生成时间与属性以及关键字的个数无关,这两部分的时间分别为系统建立时间为15.17ms,发布者生成密钥的时间为3.30ms。如图5所示,订阅者密钥生成时长与订阅者自身属性值的数量成正比,这是由于该算法需要为每一个属性生成对应的密钥分量。
[0200] 如图6所示,对于订阅者订阅陷门的生成时间(计算时间)而言,该时间受到订阅者自身属性值以及其订阅关键字个数的影响,我们可以看到如果关键字个数不变,该时间随着订阅者自身属性值的数量成线性增涨,如果订阅者自身属性值个数不变,该时间随着订阅者订阅关键字的个数而线性增长,这主要是由于该算法要依赖于订阅关键字生成陷门值,以及自身属性值生成预解密密钥有关。
[0201] 如图7,可以看到在发布者对数据进行加密阶段,如果发布者消息所对应的关键字数量不变,发布者加密的时长(计算时间)与发布者规定访问权限中的属性值的个数成线性正相关,如果发布者规定的访问权限中的属性值个数不变,发布者加密的时长与关键字的个数成线性正相关。这是由于发布者在对数据进行加密过程中涉及到了数据加密以及标签生成两个步骤,对于数据加密这个步骤,该过程所需时长主要是由属性值的个数所决定,而对于标签生成这个步骤,该过程的时长主要有关键字的个数所决定。
[0202] 如图8,策略匹配(即访问控制策略和订阅策略)的计算时间主要受到关键字数量的影响,即如果维持关键字数量不变,可以看到该时长基本维持不变,而如果使属性值的数量不变,可以看到该时长与属性值的数量成正相关。
[0203] 如图9所示,对于预解密阶段而言,当属性值的数量不变,该时长与关键字的个数大致成线性正相关,如果关键字数量不变,该时长与属性值的数量成正相关。这是因为该算法在最开始需要完成秘密值的恢复,而该秘密值的恢复依赖于这两个变量。
[0204] 如图10所示,对于订阅者解密时长,可以看到计算时间与订阅者自身属性值以及订阅者订阅关键字数量都无关,这主要是因为在智能合约在预解密阶段已经完成了主要的解密运算。
[0205] 通过上述对于本发明实施例效率上的分析,可以看出该安全的发布订阅模型是高效的。
[0206] 本发明实施例还提供了一种电子设备,如图4所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
[0207] 存储器303,用于存放计算机程序;
[0208] 处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
[0209] 接收由消息发布服务器发送的密文和加密标签;密文中携带有与该密文相关联的访问控制策略;
[0210] 接收由订阅客户端发送的属性值,陷门值,以及预解密密钥;
[0211] 验证密文是否与属性值匹配;
[0212] 如果密文与属性值匹配,则验证加密标签是否与陷门值匹配;
[0213] 如果加密标签与陷门值匹配,则利用预解密密钥对密文进行预解密处理,得到预解密密文;
[0214] 将预解密密钥发送至消息订阅客户端,以使消息订阅客户端解密预解密密文,得到订阅消息。
[0215] 本发明实施例提供的一种电子设备,通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。
[0216] 上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0217] 通信接口用于上述电子设备与其他设备之间的通信。
[0218] 存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0219] 上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0220] 本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,用以执行如下步骤:
[0221] 接收由消息发布服务器发送的密文和加密标签;密文中携带有与该密文相关联的访问控制策略;
[0222] 接收由订阅客户端发送的属性值,陷门值,以及预解密密钥;
[0223] 验证密文是否与属性值匹配;
[0224] 如果密文与属性值匹配,则验证加密标签是否与陷门值匹配;
[0225] 如果加密标签与陷门值匹配,则利用预解密密钥对密文进行预解密处理,得到预解密密文;
[0226] 将预解密密钥发送至消息订阅客户端,以使消息订阅客户端解密预解密密文,得到订阅消息。
[0227] 本发明实施例提供的一种计算机可读存储介质,通过验证消息订阅客户端的属性值是否满足消息发布服务器的访问控制策略,进一步再验证加密标签是否与陷门值匹配,能够在验证通过后将预解密密文发送至消息订阅客户端,从而使消息订阅客户端解密该预解密密文,得到预订消息。由于本发明实施例通过区块链节点的两层验证策略验证消息发布服务器和消息订阅客户端的数据传输安全性,并且,利用区块链节点中存储的数据具有难以被篡改的特性,因此一方面能够防止消息发布服务器发布的订阅消息和消息订阅客户端接收的订阅消息被恶意篡改,达到提高发布订阅系统中所保存数据的安全性的技术效果,另一方面实现对用户的细粒度的访问权限控制的目的。
[0228] 对于装置/电子设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0229] 需要说明的是,本发明实施例的装置、电子设备及存储介质分别是应用上述基于区块链技术的安全发布订阅方法的装置、电子设备及存储介质,则上述基于区块链技术的安全发布订阅方法的所有实施例均适用于该装置、电子设备及存储介质,且均能达到相同或相似的有益效果。
[0230] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0231] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0232] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。