[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] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。