一种基于区块链的物联网服务分布式访问控制方法转让专利

申请号 : CN202210451799.0

文献号 : CN114944941B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 段莉胥文耀王伟李超

申请人 : 北京交通大学

摘要 :

本发明提供了一种基于区块链的物联网服务分布式访问控制方法。该方法包括:发布者生成加密事件、签名、事件证书以及事件主题映射向量,并发送给通知代理网络;通知代理网络将事件证书发送至区块链网络,将事件主题映射向量添加到布隆过滤器中;订阅者将请求主题映射向量与自身属性一同发送给通知代理网络;通知代理网络匹配主题映射向量成功后,将订阅者属性发送给区块链网络;区块链网络验证发布者的访问控制策略与订阅者属性之间的匹配关系,成功后通知代理网络将加密事件发送给订阅者,订阅者解密事件。本发明使用全同态加密算法与数字签名技术保证发布数据的隐私性,一致性与完整性,解决了开放的物联网服务协同场景下服务交互时的安全问题。

权利要求 :

1.一种基于区块链的物联网服务分布式访问控制方法,其特征在于,包括:

发布者生成加密事件、签名、事件证书以及事件主题映射向量,将所述加密事件、签名、证书以及事件主题映射向量与发布者公钥一同发送给通知代理网络;

所述通知代理网络将所述事件证书发送至区块链网络,将所述事件主题映射向量添加到布隆过滤器中;

订阅者将请求订阅事件主题映射为主题映射向量,将所述主题映射向量与加密的自身属性一同发送给通知代理网络;

通知代理网络使用布隆过滤器匹配所述订阅者发送过来的主题映射向量,在匹配成功后,将订阅者属性发送给区块链网络;

区块链网络索引相应证书验证发布者的访问控制策略与订阅者属性之间的匹配关系,将验证结果发送给通知代理网络;

通知代理网络在接收到订阅者是合法订阅者的验证结果后,将所述加密事件发送给所述订阅者,所述订阅者验证所述加密事件完整性后,使用私钥解密所述加密事件。

2.根据权利要求1所述的方法,其特征在于,所述的发布者生成加密事件、签名、事件证书以及事件主题映射向量,将所述加密事件、签名、证书以及事件主题映射向量与发布者公钥一同发送给通知代理网络,包括:发布者Pi发布主题为Tp的事件e,使用TFHE将由安全随机参数re加盐的事件e加密为C=Enc(Pki,e+re),使用TFHE私钥对e+re生成全同态签名Sig=Sign(Ski,e+re),Pki为发布者的公钥,Ski为发布者的私钥;

发布者Pi计算事件e的证书Cre,证书Cre中包含Pki加密的随机化加盐事件访问控制策略EncT;

发布者Pi根据事件主题Tp,使用通知代理网络中布隆过滤器的映射哈希函数将事件主题Tp映射为向量Spi;

发布者将{C,Sig,Cre,Spi,Pki}发送至通知代理网络。

3.根据权利要求2所述的方法,其特征在于,所述的通知代理网络将所述事件证书发送至区块链网络,将所述事件主题映射向量添加到布隆过滤器中,包括:通知代理网络接收到发布者发送的{C,Sig,Cre,Spi,Pki}后,存储加密事件C和事件签名Sig;

通知代理网络将证书Cre打包为区块发送到区块链网络,区块链利用证书存储查询合约为证书Cre添加公钥索引,并将公钥索引存储于证书Cre的区块上;

通知代理网络将事件主题映射向量Spi添加至布隆过滤器中,并在通知代理网络中存储事件主题映射向量Spi与发布者公钥pki的对应关系{Spi,Pki}。

4.根据权利要求3所述的方法,其特征在于,所述的订阅者将请求订阅事件主题映射为主题映射向量,将所述主题映射向量与加密的自身属性一同发送给通知代理网络,包括:订阅者Sj根据请求订阅事件的事件主题,使用通知代理网络中布隆过滤器的映射哈希函数将请求订阅事件的主题映射成向量Spj;

订阅者Sj生成用自身的公钥Pkj加密的随机化加盐订阅者属性Enct;

订阅者将{Spj,Enct}发送至通知代理网络。

5.根据权利要求4所述的方法,其特征在于,所述的通知代理网络使用布隆过滤器匹配所述订阅者发送过来的主题映射向量,在匹配成功后,将订阅者属性发送给区块链网络,包括:通知代理网络接收到订阅者发送的{Spj,Enct}后,使用布隆过滤器中匹配Spj,若布隆过滤器匹配成功,则通知代理网络查询自身存储的事件主题映射向量与发布者公钥的对应关系,获取事件发布者的公钥Pki,使用Pki置换Enct的密钥,将置换后加密的订阅者属性记为Enct′,通知代理网络将Enct′与Pki打包为区块后发送到区块链网络;

若布隆过滤器匹配失败,说明请求订阅事件不存在,此次事件订阅请求失败。

6.根据权利要求5所述的方法,其特征在于,所述的区块链网络索引相应证书验证发布者的访问控制策略与订阅者属性之间的匹配关系,将验证结果发送给通知代理网络,包括:区块链接收到通知代理网络发送的包含Enct′和Pki的区块后,区块链中的证书存储查询智能合约根据公钥索引在区块链账本中查询相应的事件证书,将事件证书事件中的访问控制策略EncT发往策略属性匹配合约;区块链中的策略属性匹配合约判断EncT是否与Enct′匹配,若匹配,则判断订阅者Sj的属性满足发布事件e的访问策略,订阅者是合法订阅者,智能合约向通知代理网络发出授权订阅结果,允许订阅者访问事件;否则,认为订阅者是非法订阅者,调用区块链错误请求惩罚合约对订阅者的错误访问行为进行记录并惩罚。

7.根据权利要求6所述的方法,其特征在于,所述的通知代理网络在接收到订阅者是合法订阅者的验证结果后,将所述加密事件发送给所述订阅者,所述订阅者验证所述加密事件完整性后,使用私钥解密所述加密事件,包括:通知代理网络在收到区块链网络发来的授权订阅结果后,对订阅的加密事件C进行密钥置换,把由发布者公钥Pki加密的C转化为订阅者公钥Pkj加密的密文事件C′=Enc(Pkj,e+re),将密文事件C′与事件签名Sig一同发送至订阅者;

订阅者使用发布者公钥Pki对签名Sig进行确认,验证接收事件的完整性和一致性,若签名有效,订阅者对加密事件去盐,并使用自身私钥Skj解密Enc(Pkj,e),获取请求订阅事件明文e。

8.根据权利要求6所述的方法,其特征在于,所述的调用区块链错误请求惩罚合约对订阅者的错误访问行为进行记录并惩罚,包括:所述区块链错误请求惩罚合约包括由三个属性构成的结构体:发起错误请求的订阅者、一小时内错误次数和发起错误请求时的时间戳,在事件访问控制策略与订阅者属性之间匹配验证时,若订阅者发起错误请求的时间距离上一次发起错误请求的时间大于一小时则更新时间戳并将错误次数记录为1;若订阅者发起错误请求的时间距离上一次发起错误请求的时间小于一小时,则更新时间戳并将错误次数+1,当错误次数达到3次时,表示该订阅者短时间内频繁发起错误请求,对该订阅者进行处罚,一天之内禁止该订阅者订阅任何事件。

说明书 :

一种基于区块链的物联网服务分布式访问控制方法

技术领域

[0001] 本发明涉及物联网访问控制技术领域,尤其涉及一种基于区块链的物联网服务分布式访问控制方法。

背景技术

[0002] 近年来,随着物联网应用的快速发展,网络体系逐渐面向服务,用户所需资源更加多元,致使物联网环境日益开放。然而,物联网环境的开放性很容易使提供服务的智能设备受到攻击而造成敏感信息泄露。例如在智慧交通应用场景中,恶意节点可以通过对发布的服务进行窃取或监听,造成服务的敏感信息泄露。因此,在开放的物联网环境中,保障服务协同安全和敏感数据的隐私性是实现业务目标的重要保证。
[0003] 事件驱动的发布订阅模式具有异步、松耦合和多对多通信等特征,可融合区块链技术构建大规模的物联网服务协同通信架构。分布式的区块链网络具有不可篡改性、公开透明性、可溯源性等特征,利用区块链技术能够赋予物联网服务协同防纂改和抗单点故障攻击等特性。
[0004] 现有技术中的一种基于可信执行环境的发布订阅系统利用英特尔指令集扩展Software Guard Extensions(SGX)等可信执行环境来保证数据内容隐私性和完整性,以及发布者和订阅者的匿名性。提出了中心化发布订阅系统PUBSUB‑SGX,使用可信执行环境使发布事件能够安全访问。
[0005] 上述现有技术中的一种基于可信执行环境的发布订阅系统的缺点为:基于可信执行环境的发布订阅系统成本较高,当硬件存在技术漏洞时可能造成系统敏感信息大面积泄漏,且中心化系统存在代理节点单点故障导致系统瘫痪的风险。
[0006] 现有技术中的一种基于区块链技术的具有拜占庭容错的发布订阅系统分布式地存储数据,使发布的数据不可篡改以保证服务可信。通过区块链技术实现了具有拜占庭容错的发布订阅系统,解决了中央代理节点进行数据通信时面临的单点故障问题。
[0007] 上述现有技术中的基于区块链技术的具有拜占庭容错的发布订阅系统的缺点为:存在以下三方面风险:第一,相似技术方案并未保护服务隐私,存在服务敏感信息泄漏风险;第二,相似技术方案不涉及对服务的追踪溯源与一致性验证,存在服务遭受恶意参与者篡改风险;第三,相似技术方案不对异常的服务访问进行限制,存在由恶意访问造成的网络拥塞风险。

发明内容

[0008] 本发明的实施例提供了一种基于区块链的物联网服务分布式访问控制方法,以解决开放的物联网服务协同场景下服务交互时的安全问题。
[0009] 为了实现上述目的,本发明采取了如下技术方案。
[0010] 一种基于区块链的物联网服务分布式访问控制方法,包括:
[0011] 发布者生成加密事件、签名、事件证书以及事件主题映射向量,将所述加密事件、签名、证书以及事件主题映射向量与发布者公钥一同发送给通知代理网络;
[0012] 所述通知代理网络将所述事件证书发送至区块链网络,将所述事件主题映射向量添加到布隆过滤器中;
[0013] 订阅者将请求订阅事件主题映射为主题映射向量,将所述主题映射向量与加密的自身属性一同发送给通知代理网络;
[0014] 通知代理网络使用布隆过滤器匹配所述订阅者发送过来的主题映射向量,在匹配成功后,将订阅者属性发送给区块链网络;
[0015] 区块链网络索引相应证书验证发布者的访问控制策略与订阅者属性之间的匹配关系,将验证结果发送给通知代理网络;
[0016] 通知代理网络在接收到订阅者是合法订阅者的验证结果后,将所述加密事件发送给所述订阅者,所述订阅者验证所述加密事件完整性后,使用私钥所述解密事件。
[0017] 优选地,所述的发布者生成加密事件、签名、事件证书以及事件主题映射向量,将所述加密事件、签名、证书以及事件主题映射向量与发布者公钥一同发送给通知代理网络,包括:
[0018] 发布者Pi发布主题为Tp的事件e,使用TFHE将由安全随机参数re加盐的事件e加密为C=Enc(Pki,e+re),使用TFHE私钥对e+re生成全同态签名Sig=Sign(Ski,e+re),Pki为发布者的公钥,Ski为发布者的私钥;
[0019] 发布者Pi计算事件e的证书Cre,证书Cre中包含Pki加密的随机化加盐事件访问控制策略EncT;
[0020] 发布者Pi根据事件主题Tp,使用通知代理网络中布隆过滤器的映射哈希函数将事件主题Tp映射为向量Spi;
[0021] 发布者将{C,Sig,Cre,Spi,Pki}发送至通知代理网络。
[0022] 优选地,所述的通知代理网络将所述事件证书发送至区块链网络,将所述事件主题映射向量添加到布隆过滤器中,包括:
[0023] 通知代理网络接收到发布者发送的{C,Sig,Cre,Spi,Pki}后,存储加密事件C和事件签名Sig;
[0024] 通知代理网络将证书Cre打包为区块发送到区块链网络,区块链利用证书存储查询合约为证书Cre添加公钥索引,并将公钥索引存储于证书Cre的区块上;
[0025] 通知代理网络将事件主题映射向量Spi添加至布隆过滤器中,并在通知代理网络中存储事件主题映射向量Spi与发布者公钥pki的对应关系{Spi,Pki}。
[0026] 优选地,所述的订阅者将请求订阅事件主题映射为主题映射向量,将所述主题映射向量与加密的自身属性一同发送给通知代理网络,包括:
[0027] 订阅者Sj根据请求订阅事件的事件主题,使用通知代理网络中布隆过滤器的映射哈希函数将请求订阅事件的主题映射成向量Spj;
[0028] 订阅者Sj生成用自身的公钥Pkj加密的随机化加盐订阅者属性Enct;
[0029] 订阅者将{Spj,Enct}发送至通知代理网络。
[0030] 优选地,所述的通知代理网络使用布隆过滤器匹配所述订阅者发送过来的主题映射向量,在匹配成功后,将订阅者属性发送给区块链网络,包括:
[0031] 通知代理网络接收到订阅者发送的{Spj,Enct}后,使用布隆过滤器中匹配Spj,若布隆过滤器匹配成功,则通知代理网络查询自身存储的事件主题映射向量与发布者公钥的对应关系,获取事件发布者的公钥Pki,使用Pki置换Enct的密钥,将置换后加密的订阅者属性记为Enct′,通知代理网络将Enct′与Pki打包为区块后发送到区块链网络;
[0032] 若布隆过滤器匹配失败,说明请求订阅事件不存在,此次事件订阅请求失败。
[0033] 优选地,所述的区块链网络索引相应证书验证发布者的访问控制策略与订阅者属性之间的匹配关系,将验证结果发送给通知代理网络,包括:
[0034] 区块链接收到通知代理网络发送的包含Enct′和Pki的区块后,区块链中的证书存储查询智能合约根据公钥索引在区块链账本中查询相应的事件证书,将事件证书事件中的访问控制策略EncT发往策略属性匹配合约;区块链中的策略属性匹配合约判断EncT是否与Enct′匹配,若匹配,则判断订阅者Sj的属性满足发布事件e的访问策略,订阅者是合法订阅者,智能合约向通知代理网络发出授权订阅结果,允许订阅者访问事件;否则,认为订阅者是非法订阅者,调用区块链错误请求惩罚合约对订阅者的错误访问行为进行记录并惩罚。
[0035] 优选地,所述的通知代理网络在接收到订阅者是合法订阅者的验证结果后,将所述加密事件发送给所述订阅者,所述订阅者验证所述加密事件完整性后,使用私钥所述解密事件,包括:
[0036] 通知代理网络在收到区块链网络发来的授权订阅结果后,对订阅的的加密事件C进行密钥置换,把由发布者公钥Pki加密的C转化为订阅者公钥Pkj加密的密文事件C′=Enc(Pkj,e+re),将密文事件C′与事件签名Sig一同发送至订阅者;
[0037] 订阅者使用发布者公钥Pki对签名Sig进行确认,验证接收事件的完整性和一致性,若签名有效,订阅者对加密事件去盐,并使用自身私钥Skj解密Enc(Pkj,e),获取请求订阅事件明文e。
[0038] 优选地,所述的调用区块链错误请求惩罚合约对订阅者的错误访问行为进行记录并惩罚,包括:
[0039] 所述区块链错误请求惩罚合约包括由三个属性构成的结构体:发起错误请求的订阅者、一小时内错误次数和发起错误请求时的时间戳,在事件访问控制策略与订阅者属性之间匹配验证时,若订阅者发起错误请求的时间距离上一次发起错误请求的时间大于一小时则更新时间戳并将错误次数记录为1;若订阅者发起错误请求的时间距离上一次发起错误请求的时间小于一小时,则更新时间戳并将错误次数+1,当错误次数达到3次时,表示该订阅者短时间内频繁发起错误请求,对该订阅者进行处罚,一天之内禁止该订阅者订阅任何事件。
[0040] 由上述本发明的实施例提供的技术方案可以看出,本发明将发布订阅系统与区块链网络相结合,在发布服务不可篡改基础上,使服务交互可被审计与追踪溯源。本发明使用全同态加密算法与数字签名技术保证发布数据的隐私性,一致性与完整性,解决了开放的物联网服务协同场景下服务交互时的安全问题。本发明基于区块链网络实现发布订阅系统,解决了物联网服务协同时由不信任参与者造成的敏感信息泄漏问题。
[0041] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0042] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043] 图1为本发明实施例提供的一种基于区块链的物联网服务分布式访问控制方法的实现原理示意图;
[0044] 图2为本发明实施例提供的一种基于区块链的物联网服务分布式访问控制方法的处理流程图;
[0045] 图3为本发明实施例提供的一种基于区块链的物联网服务分布式访问控制方法的时序图。

具体实施方式

[0046] 下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0047] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
[0048] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
[0049] 为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
[0050] 传统的服务安全与隐私保护方法是基于请求/响应服务交互模式中以保证简单对象访问协议Simple Object Access Protocol(SOAP)消息的通信安全,建立跨信任域的安全互操作的网络服务,并不能保证动态多变的物联网服务协同中敏感信息的机密性,并且服务交互是基于中间件的管理模型,有单点故障的风险。为了改进当前物联网服务协同场景下保护用户服务隐私与服务访问策略隐私方面存在的上述缺陷,本发明通过加密发布的服务内容与服务访问策略,通过区块链智能合约实现加密状态下的服务访问权限验证,并引入惩罚机制限制恶意用户的访问,最终实现一个高效安全的物联网服务协同场景下服务安全和数据隐私保护方法。
[0051] 本发明实施例提出的一种基于区块链的物联网服务分布式访问控制方法的实现原理示意图如图1所示,该方法包括四个参与者:发布者、订阅者、通知代理网络和区块链网络。其中,发布者Pi发布主题为Tp的事件e,其访问策略表示为T=w1∧w2,订阅者Sj的属性为t=a1∧a2,当发布者访问控制策略T与订阅者属性t相匹配,则代表订阅服务验证成功;通知代理网络是不可信的,即通知代理网络会按照系统的规则执行相应的功能,但网络中的恶意节点会试图获取发布事件和订阅者策略的敏感信息,且在网络中的部分代理节点同时参与区块链网络,代表通知代理网络与区块链网络进行数据传输;区块链网络是不可篡改的稳定网络,其中包含三个智能合约:证书存储查询合约、策略属性匹配合约和错误请求惩罚合约。
[0052] 本发明实施例提出的一种基于区块链的物联网服务分布式访问控制方法的具体处理流程如图2所示,时序图如图3所示。该方法包括系统初始化阶段和授权阶段,在初始化阶段,授权中心向发布者Pi分发TFHE(Fully Homomorphic Encryption over the Torus,环面全同态加密)公私钥对{Pki,Ski},向订阅者Sj分发TFHE公私钥对{Pkj,Skj}。授权阶段具体包含以下步骤:
[0053] 步骤S1、发布者生成加密事件、签名、证书以及事件主题映射向量,把以上数据与发布者公钥一同发往通知代理网络。
[0054] 具体包括以下步骤:
[0055] S11:发布者Pi发布主题为Tp的事件e,使用TFHE将由安全随机参数re加盐加密的事件加密为C=Enc(Pki,e+re),使用TFHE私钥对e+re生成全同态签名Sig=Sign(Ski,e+re)。Pki为发布者的公钥,Ski为发布者的私钥。加盐加密(Salt encryption)是一种随机化加密方法,通过向原文加入随机参数,使得相同加密方法加密相同内容时得出的密文结果不同,防止恶意节点对密文进行推理攻击。
[0056] S12:发布者Pi计算事件e的证书Cre,证书Cre中包含Pki加密的随机化加盐事件访问控制策略EncT;
[0057] S13:发布者Pi根据事件主题Tp,使用通知代理网络中布隆过滤器的映射哈希函数将事件主题Tp映射成向量Spi;
[0058] S14:发布者将{C,Sig,Cre,Spi,Pki}发送至通知代理网络。
[0059] 步骤S2、通知代理网络将事件证书发送至区块链网络,并将事件主题映射向量添加到布隆过滤器中。
[0060] 所述步骤S2阶段具体包括以下步骤:
[0061] S21:通知代理网络中的代理节点接收来自发布者发来的{C,Sig,Cre,Spi,Pki},存储加密事件C和事件签名Sig。
[0062] S22:与区块链网络进行通信的代理节点将证书Cre打包为区块发送到区块链网络,区块链利用证书存储查询合约为证书Cre添加公钥索引,并将公钥索引存储于证书Cre的区块上,以便用于事件访问控制策略与订阅者属性进行匹配验证。
[0063] S23:代理节点将事件主题映射向量Spi添加至布隆过滤器中,并在通知代理网络中添加事件主题映射向量Spi与发布者公钥pki的对应关系{Spi,Pki}。
[0064] 步骤S3、订阅者将请求订阅事件主题映射为主题映射向量,将主题映射向量与加密的自身属性一同发送至通知代理网络。
[0065] 所述步骤S3阶段具体包括以下步骤:
[0066] S31:订阅者Sj根据对事件的需求,针对事件主题使用通知代理网络中布隆过滤器的映射哈希函数将请求订阅事件主题映射成向量Spj。
[0067] S32:订阅者Sj生成用自身的公钥Pkj加密的随机化加盐订阅者属性Enct。
[0068] S33:订阅者将{Spj,Enct}发送至通知代理网络。
[0069] 步骤S4、通知代理网络使用布隆过滤器匹配由订阅事件主题映射的主题映射向量,如果匹配成功,将订阅者加密属性发送给区块链网络。
[0070] 所述步骤S4阶段具体包括以下步骤:
[0071] S41:通知代理节点在布隆过滤器中匹配Spj,若布隆过滤器匹配成功,说明请求订阅的事件主题存在可进行后续操作;若布隆过滤器匹配失败,说明请求订阅事件不存在,此次事件请求失败。
[0072] S42:通知代理节点根据事件主题映射向量与发布者公钥的对应关系{Spi,Pki},通过布隆过滤器事件主题映射向量Spi得到该事件发布者的公钥Pki,使用Pki置换Enct的密钥,将置换后加密的订阅者属性记为Enct′。与区块链网络进行通信的代理节点将Enct′与Pki打包为区块发送到区块链网络,用于事件e的访问控制策略与订阅者Sj属性之间的匹配验证。
[0073] 步骤S5、区块链网络索引相应证书验证发布者的访问控制策略与订阅者属性之间的匹配关系,并记录错误的访问行为,将验证结果返回通知代理网络。
[0074] 所述步骤S5阶段具体包括以下步骤:
[0075] S51:区块链中的证书存储查询智能合约根据公钥索引在区块链账本中查询相应的事件证书,将事件证书中的事件访问控制策略EncT发往策略属性匹配合约。
[0076] S52:区块链中的策略属性匹配合约判断EncT是否与Enct′匹配,若匹配,则说明订阅者Sj的属性满足发布事件e的访问策略,判断订阅者是合法订阅者,智能合约向通知代理网络发出授权,允许订阅者访问事件;否则,认为订阅者是非法订阅者,调用区块链错误请求惩罚合约对订阅者的错误访问行为进行记录并惩罚。
[0077] S53:区块链错误请求惩罚合约将对订阅者的错误访问行为进行记录并惩罚。在合约内部定义一个由三个属性构成的结构体:发起错误请求的订阅者、一小时内错误次数和发起错误请求时的时间戳。在事件访问控制策略与订阅者属性之间匹配验证时,若订阅者发起错误请求的时间距离上一次发起错误请求的时间大于一小时则更新时间戳并将错误次数记录为1,若小于一小时,则更新时间戳并将错误次数+1,当错误次数达到3次时,表示该订阅者短时间内频繁发起错误请求,对该订阅者进行处罚,一天之内禁止该订阅者订阅任何事件。
[0078] 步骤S6、通知代理网络进行密钥转换,将加密事件发往符合访问控制策略的订阅者,订阅者验证事件完整性后,使用私钥解密事件。
[0079] 所述步骤S6阶段具体包括以下步骤:
[0080] S61:通知代理节点在收到区块链网络发来的授权订阅结果后,对订阅的的加密事件C进行密钥置换,把由发布者公钥Pki加密C转化为订阅者公钥Pkj加密的密文事件C′=Enc(Pkj,e+re),与事件签名Sig一同发送至订阅者。
[0081] S62:订阅者使用发布者公钥Pki对签名Sig进行确认,验证接收事件的完整性和一致性。若签名有效,订阅者对加密事件去盐,并使用自身私钥Skj解密Enc(Pkj,e),获取请求订阅事件明文e。
[0082] 综上所述,本发明实施例的基于区块链的物联网服务分布式访问控制方法采用区块链技术防止单点故障,并对异常交互的服务进行追踪溯源,通过加密的事件访问控制策略与订阅者属性之间的匹配验证,防止发布的服务受到未授权订阅者的访问,并根据规则对发起错误事件访问的订阅者实施惩罚防止网络拥塞。
[0083] 本发明实施例使用全同态加密算法与数字签名技术保证发布数据的隐私性,一致性与完整性,解决了开放的物联网服务协同场景下服务交互时的安全问题。
[0084] 下面将从安全性和性能两个方面论述本发明优点。
[0085] 1)安全性分析
[0086] (1)非授权的订阅者与恶意的代理节点无法篡改或获取事件内容。发布者在发布事件时将事件e加盐并使用公钥加密为C,与事件签名Sig一同发送到通知代理网络。在合法订阅者获得授权后,通知代理节点将经密钥置换后的加密的事件C′,与事件签名Sig一同发送至订阅者。订阅者通过签名Sig验证接收事件的完整性和一致性,将事件去盐后使用私钥解密获取请求订阅事件明文e。此外,对事件加盐使每一次发布事件加密结果均不相同,进一步保护了事件内容隐私。因此,在发布者私钥Ski与订阅者私钥Skj未知的情况下,恶意实体无法篡改或获取事件内容e。因此在系统模型运行的全过程中,事件内容均是被加密保护的,仅有合法订阅者才可以获取事件内容。
[0087] (2)恶意的代理节点无法获取事件访问控制策略与订阅者属性中的敏感信息。首先,发布者在发布事件e时加密事件访问控制策略EncT,并经通知代理网络发送到区块链网络用以验证订阅者属性。其次,订阅者准备订阅事件时加密自身属性Enct,并经通知代理网络进行事件主题匹配后发送到区块链网络用以匹配事件的访问控制策略。最后,区块链智能合约实现加密状态下事件访问控制策略与订阅者属性之间的匹配验证。此外,对事件访问控制策略与订阅者属性的加盐使每一次访问策略与属性的加密结果均不相同,进一步保护了访问策略与属性的隐私信息。因此,在发布者私钥Ski与订阅者私钥Skj未知的情况下,恶意的代理节点无法获取事件访问控制策略与订阅者属性,因此在系统模型运行的全过程中,事件访问控制策略与订阅者属性均是被加密保护的。
[0088] 就系统整体而言,系统可在发布事件的访问控制策略隐私与订阅者属性隐私均被加密保护的前提下,使用区块链智能合约进行事件访问控制策略与订阅者属性之间的匹配验证,并根据规则对频繁发起错误事件请求的订阅者施以惩罚,防止由恶意订阅者发起的错误请求增加网络负载,从而防范诸如DDoS攻击造成的网络堵塞。
[0089] 2)性能分析
[0090] 系统时间开销取决于两次运算:通知代理网络进行的事件主题匹配,区块链智能合约进行的加密状态下事件访问控制策略与订阅者属性之间的匹配验证。事件主题匹配依赖于通知代理网络上的布隆过滤器,其空间效率和查询时间都远超一般算法。事件主题匹配成功后,区块链网络进行事件访问控制策略与订阅者属性之间的匹配验证,策略属性匹配合约主体为三次同态乘法运算与一次同态加法运算,而环面全同态加密在进行同态加法与同态乘法运算时时间开销低于其他同态加密算法。因此,系统在安全可靠前提下是较为高效的。
[0091] 本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0092] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0093] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0094] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。