CN113312637B - 代理服务器及其对加密的订阅与事件进行匹配的方法 - Google Patents
代理服务器及其对加密的订阅与事件进行匹配的方法 Download PDFInfo
- Publication number
- CN113312637B CN113312637B CN202110552615.5A CN202110552615A CN113312637B CN 113312637 B CN113312637 B CN 113312637B CN 202110552615 A CN202110552615 A CN 202110552615A CN 113312637 B CN113312637 B CN 113312637B
- Authority
- CN
- China
- Prior art keywords
- binary tree
- constraint
- node
- value
- subscription
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Abstract
本发明公开了一种代理服务器及其对加密的订阅与事件进行匹配的方法,所述方法包括:接收到加密的事件时,针对事件的每个属性,获取与该属性相对应的二叉树集合,在将该属性的取值插入到二叉树集合中每个二叉的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于SGX的容器中进行解密并对得到的明文值进行比较;根据容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而确定该二叉树中符合约束的节点,以及各符合约束的节点相关联的订阅集合;将确定出的订阅集合取交集后得到与该事件匹配的订阅。应用本发明可以在基于SGX方案的基础上不需要大量的硬件内存开销,且提高匹配效率,从而适用于对大规模订阅的处理。
Description
技术领域
本发明涉及发布订阅技术领域,特别是指一种代理服务器及其对加密的订阅与事件进行匹配的方法。
背景技术
发布订阅(Pub/sub)通信架构由于能在通信实体之间提供时间、空间和同步上的完全解耦,已被广泛应用到大规模的信息传输系统中,比如智慧楼宇、e-health电子健康系统、智能交通监控系统以及股票报价系统等。随着云服务的普及和发展,发布订阅云服务逐渐被广泛应用。如图1中,越来越多的公司倾向使用发布订阅云服务而不是自己构建发布订阅服务,从而加快产品上市速度、降低运营成本。
这种新的产品开发与运营模式,带来了新的安全威胁与挑战。图1中APP开发者通常自己开发客户端和服务器,然后使用基础设施提供者提供的发布订阅云服务来执行事件匹配和路由。但是APP开发者并不能信任基础设施拥有者,因为他们在获取到事件或订阅后有可能将其进行非法售卖,造成用户敏感信息的泄露,甚至带来巨大的经济损失。因此,针对发布订阅云服务带来的隐私保护问题,设计一种高效的机密性保护方案,使得发布订阅基础设施中的代理在获取到事件密文和订阅密文后,能在不知道事件和订阅内容的情况下提供事件匹配和路由已成为亟待解决的问题。
发布订阅系统通常由三个参与者组成:(1)发布者:其向系统中发布事件;(2)订阅者:其向系统中注册感兴趣的订阅;(3)代理:作为连接发布者和订阅者的中间节点,负责存储订阅,匹配事件和订阅路由表,并将匹配的事件转发给对应的订阅者。图2给出了系统的框架,发布者和订阅者分别通过APP客户端发布事件及发送订阅(图2中的①和②)。由于发布订阅云服务中的代理可能会泄露事件和订阅内容,需在APP服务端对事件和订阅加密后再将其发送到发布订阅云基础设施中(图2中的③)。当基础设施中的代理执行完事件匹配和路由后(图2中的④),匹配的事件会被转发给APP服务端解密(图2中的⑤),解密完成后再返回给对应的客户端(图2中的⑥)。
虽然已经有很多方法被提出用于保护事件和订阅的机密性,但是这些方法存在性能方面的不足。特别是当订阅数量较大时,会使系统的性能显著下降,其根本原因是这些方法在执行密文匹配时需要将事件与订阅集合中的订阅密文逐条比较。
当前对事件和订阅的机密性保护方案的研究可被划分为两类,一类是采用密码学算法构建密文匹配方案使得代理在不对事件和订阅解密的条件下实现事件匹配;另一类是从系统安全的角度使用Intel提供的可信执行环境SGX(software guard extensions),SGX将应用程序的安全操作封装在Enclave容器中,在这个容器内可保证代码和数据的机密性与完整性,事件和订阅的匹配被放到创建的Enclave中执行。以下分别进行介绍:
(1)基于密码学算法的机密性保护方案
该方案的核心思想是将事件属性值和订阅约束值表示成多维空间上点的坐标,然后将事件坐标和订阅坐标用ASPE算法加密,判断事件与订阅是否匹配只需比较加密的订阅坐标和加密的事件坐标之间的距离。
基于密码学的隐私保护方案的基本策略是实现一种密文匹配方案首先对事件和订阅加密,然后对每个加密的事件将其与订阅集中每个加密的订阅一个个执行匹配。匹配的时间复杂度与系统中订阅的数量成正比,匹配不具有可伸缩性.随着系统中订阅数量的增加,系统的性能会越来越差。
(2)基于SGX的机密性保护方案
该方案的核心思想是在Enclave外对事件和订阅加密,借助Enclave提供的TEE,在Enclave内对事件和订阅解密,然后对订阅构建高效的索引实现快速匹配。
实验结果表明基于SGX的方案其执行效率高于使用密码学算法的方案,因为在SGX内部执行的是明文匹配,不需要像密文匹配那样还需进行复杂的运算。但是由于Enclave容器运行内存有限,当存储的数据量比较多或者占用内存比较大(超过90MB)时,易出现页面缺失和缓存缺失,此时Enclave需要与系统内存进行交互以调入调出缓存或者页面,会额外增加开销。因此,目前的基于SGX的方案需要大量的硬件内存开销,不适用对大规模订阅的处理。
发明内容
有鉴于此,本发明的目的在于提出一种代理服务器及其对加密的订阅与事件进行匹配的方法,能在基于SGX方案的基础上不需要大量的硬件内存开销,且提高匹配效率,从而适用于对大规模订阅的处理。
基于上述目的,本发明提供一种对加密的订阅与事件进行匹配的方法,包括:
接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中;其中,所述二叉树集合中的各二叉树分别对应各种操作符的约束类型;其中,所述操作符为所有订阅中的约束所用到的操作符;
在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于SGX的容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;
将确定出的订阅集合取交集后得到与该事件匹配的订阅。
其中,所述二叉树的构建方法为:
接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合,从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树;在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点;进而将该订阅加入到与该节点相关联的订阅集合。
其中,所述构建的二叉树中,右侧节点的值大/小于左侧节点的值;以及
所述根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,具体包括:
若该二叉树所对应的操作符的约束类型为等值操作,则将所述事件在该二叉树中插入的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为大于操作,则将所述事件在该二叉树中插入的节点的左/右侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为小于操作,则将所述事件在该二叉树中插入的节点的右/左侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为大于等于操作,则将所述事件在该二叉树中插入的节点及其左/右侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为小于等于操作,则将所述事件在该二叉树中插入的节点及其右/左侧的节点作为符合约束的节点。
进一步,在所述将该约束的约束值插入到该二叉树后,还包括:平衡该二叉树。
进一步,在所述平衡该二叉树后,还包括:
对所述二叉树的节点,按插入的值的大小顺序依次进行编码。
本发明还提供一种代理服务器,包括:事件匹配模块,以及基于SGX的容器;其中,
所述事件匹配模块用于在接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中;其中,所述二叉树集合中的各二叉树分别对应各操作符的约束类型;在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;将确定出的订阅集合取交集后得到与该事件匹配的订阅;其中,所述操作符为所有订阅中的约束所用到的操作符。
进一步,所述代理服务器还包括:
订阅处理模块,用于接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合,从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树;在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点;进而将该订阅加入到与该节点相关联的订阅集合。
本发明还提供一种电子设备,包括中央处理单元、信号处理和存储单元,以及存储在信号处理和存储单元上并可在中央处理单元上运行的计算机程序,其中,所述中央处理单元执行如上所述的基于SGX对加密的订阅与事件进行匹配的方法。
本发明的技术方案中,接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中;其中,所述二叉树集合中的各二叉树分别对应各种操作符的约束类型;其中,所述操作符为所有订阅中的约束所用到的操作符;在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于SGX的容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;将确定出的订阅集合取交集后得到与该事件匹配的订阅。本发明的技术方案相比于现有的基于密码学算法的机密性保护方案,由于通过针对每个属性建立的二叉树可以快速找到事件所匹配的订阅,而不必将事件与每个加密的订阅一个个判断匹配结果,因此,可以缩短匹配时间,提高匹配效率,从而适用于对大规模订阅的处理;本发明的技术方案相比于现有的基于SGX的机密性保护方案,由于不需要在容器内执行整个匹配过程,而只是在容器内进行简单的两个值的比较操作,大大减少了对容器内存的要求,也就是说本发明技术方案不需要大量的硬件内存开销,即大大减少硬件内存的开销,从而适用于对大规模订阅的处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的使用发布订阅云服务发布订阅服务的示意图;
图2为现有技术的发布订阅系统的框架图;
图3为本发明实施例提供的一种基于SGX对加密的订阅与事件进行匹配的系统的架构图;
图4为本发明实施例提供的一种二叉树的构建方法流程图;
图5为本发明实施例提供的一种将订阅的约束值插入到二叉树的方法流程图;
图6为本发明实施例提供的一种对加密的订阅与事件进行匹配的方法流程图;
图7为本发明实施例提供的一种发布订阅云服务的代理服务器的内部结构框图;
图8为本发明实施例提供的一种电子设备硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面结合附图详细说明本发明实施例的技术方案。
在基于内容的发布订阅系统中,事件可看做一个二元组(属性名,属性值),其中属性名表示要发布的事件属性,属性值表示在该属性上的取值。比如在股票报价系统中,发布者发布了一个事件e1:price=300,name=“IBM”,那么price和name是属性名,300和“IBM”是对应属性上发布的事件值,即事件在该属性上的取值,表示IBM公司发布的股票价格为300美元。
订阅由属性约束集组成,每个属性约束可看作一个三元组(属性名,操作符,约束值),其中属性名表示对哪个属性设置约束;操作符,表示可以设置的约束类型,比如等值(=)、非等值(>,<,≤,≥)或者区间类型等;约束值,即设置的感兴趣的订阅属性上的取值。比如同样在股票报价系统中存在一条订阅s1:price<400,name=“IBM”,那么price和name就是属性名,<和=为操作符,400和“IBM”为约束值,表示该订阅者想获取IBM公司股票价格小于400美元时的股票信息。
事件和订阅匹配当且仅当对订阅中的每个约束在事件中均能找到与其匹配的属性和属性值。可以看出对订阅s1,事件e1在属性name和price上的取值均满足该订阅,因此e1匹配s1。
本发明实施例提供的一种发布订阅系统的架构,如图3所示,包括:发布事件与订阅的客户端301、发布事件与订阅的服务端302、发布订阅云服务的代理服务器303。
其中,客户端301用于将发布者发布的事件发送给服务端302,以及将订阅者的订阅发送给服务端302。
服务端302用于将客户端301对接收的事件以及订阅加密后发送给代理服务器303。
代理服务器303用于对加密的订阅与事件进行匹配后,将匹配结果返回给服务端302。
服务端302将匹配结果中的匹配事件解密后,发送给相应订阅者的客户端301。
其中,代理服务器303是基于SGX技术对加密的订阅与事件进行匹配的,在对事件进行匹配之前,代理服务器303可以先根据订阅构建二叉树,具体方法流程,如图4所示,包括如下步骤:
步骤S401:初始化二叉树。
统计所有订阅的属性,并为统计的每个属性ai生成一个二叉树集合,在二叉树集合中分别对应各种操作符的约束类型生成一颗空的平衡二叉树Ti,作为初始化的二叉树。例如,针对属性price生成的二叉树集合中,分别对应各种操作符的约束类型=、>、<、≤、≥生成一颗空的平衡二叉树,即在针对属性price生成的二叉树集合中生成5颗空的平衡二叉树。
步骤S402:在每次接收到加密的订阅时,将订阅的每个约束的约束值插入到相应属性的二叉树中。
具体地,将订阅的每个约束的约束值插入到二叉树的方法,流程如图5所示,包括如下步骤:
步骤S501:接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合。
例如,接收到上述订阅s1时,针对订阅s1中属性为price的约束,获取与属性price相对应的二叉树集合,该二叉树集合中包括分别对应各种操作符的约束类型=、>、<、≤、≥的二叉树。
步骤S502:从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树。
例如,对于上述订阅s1中属性为price的约束,本步骤中,从所述二叉树集合中获取与该约束的操作符的约束类型“<”相对应的二叉树。
步骤S503:将该约束的约束值插入到获取的二叉树中。
本步骤中,在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点。
通常二叉树中节点的排列是有规律的;比如,一种二叉树中节点的排列规律为:右侧节点的值大于左侧节点的值;或者,另一种二叉树中节点的排列规律为:右侧节点的值小于左侧节点的值。
例如,对于右侧节点的值大于左侧节点的值的二叉树,将该二叉树中各节点按从上到下、从左到右的顺序,依次与该约束值进行值的大小比较;在进行值的大小比较时,将待比较的二叉树的节点的密文值与该约束值的密文值发给设置于代理服务器303中的Enclave容器,Enclave容器对两个密文值使用密钥sk进行解密,而密钥sk是与服务端302共享的。Enclave容器对解密得到的两个明文值,即二叉树的节点的明文值以及所述约束值的明文值进行比较,并输出比较结果;进而,代理服务器303根据比较结果确定该约束值在该二叉树中插入的节点,并将该约束值的密文值插入所确定的节点中。如何根据比较结果确定该约束值在该二叉树中插入的节点,为本领域技术人员所熟知的技术,此处不赘述。
例如,对于右侧节点的值小于左侧节点的值的二叉树,将该二叉树中各节点按从上到下、从右到左的顺序,依次与该约束值进行值的大小比较;在进行值的大小比较时,将待比较的二叉树的节点的密文值与该约束值的密文值发给设置于代理服务器303中的基于SGX的Enclave容器,基于SGX的Enclave容器对两个密文值使用密钥sk进行解密,而密钥sk是与服务端302共享的。Enclave容器对解密得到的两个明文值,即二叉树的节点的明文值以及所述约束值的明文值进行比较,并输出比较结果;进而,代理服务器303根据比较结果确定该约束值在该二叉树中插入的节点,并将该约束值的密文值插入所确定的节点中。如何根据比较结果确定该约束值在二叉树中插入的节点,为本领域技术人员所熟知的技术,此处不赘述。
更优地,在将将该约束的约束值插入到获取的二叉树后,可重新平衡该二叉树;如何平衡二叉树为本领域技术人员所熟知的技术,此处不再赘述。
更优地,在重新平衡该二叉树后,还可对所述二叉树的节点,按插入的值的大小顺序依次进行编码;比如,按节点插入的值从小到大的顺序依次编码为1、2、3……。
步骤S504:将该订阅加入到与插入的节点相关联的订阅集合。
具体地,针对为该订阅的每个约束获取的二叉树,将该订阅加入到与该二叉树中确定的插入的节点相关联的订阅集合;比如,将该订阅的标识ID添加到该节点关联的ID链表中。
基于构建的二叉树,代理服务器303对加密的订阅和事件进行匹配的方法,流程如图6所示,包括如下步骤:
步骤S601:接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合。
例如,接收到上述事件e1时,针对事件e1中的属性price,获取与属性price相对应的二叉树集合;在该二叉树集合中包括分别对应各种操作符的约束类型=、>、<、≤、≥的二叉树。
步骤S602:将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中。
具体地,所述二叉树集合中的各二叉树分别对应各种操作符的约束类型按照上述方法预先构建;其中,所述操作符为所有订阅中的约束所用到的操作符;
在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在所述Enclave容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点。
例如,对于右侧节点的值大于左侧节点的值的二叉树,将该二叉树中各节点按从上到下、从左到右的顺序,依次与该属性的取值进行值的大小比较;在进行值的大小比较时,将待比较的二叉树的节点的密文值与该属性的取值的密文值发给所述Enclave容器,所述Enclave容器对两个密文值使用密钥sk进行解密,而密钥sk是与服务端302共享的。Enclave容器对解密得到的两个明文值,即二叉树的节点的明文值以及所述属性的取值的明文值进行比较,并输出比较结果;进而,代理服务器303根据比较结果确定该属性的取值在该二叉树中插入的节点,并将该属性的取值的密文值插入所确定的节点中。如何根据比较结果确定该属性的取值在该二叉树中插入的节点,为本领域技术人员所熟知的技术,此处不赘述。
例如,对于右侧节点的值小于左侧节点的值的二叉树,将该二叉树中各节点按从上到下、从右到左的顺序,依次与该属性的取值进行值的大小比较;在进行值的大小比较时,将待比较的二叉树的节点的密文值与该属性的取值的密文值发给所述Enclave容器,所述Enclave容器对两个密文值使用密钥sk进行解密,而密钥sk是与服务端302共享的。Enclave容器对解密得到的两个明文值,即二叉树的节点的明文值以及该属性的取值的明文值进行比较,并输出比较结果;进而,代理服务器303根据比较结果确定该属性的取值在该二叉树中插入的节点,并将该属性的取值的密文值插入所确定的节点中。如何根据比较结果确定该属性的取值在二叉树中插入的节点,为本领域技术人员所熟知的技术,此处不赘述。
更优地,在将该属性的取值插入到该约束的约束值插入到二叉树后,可重新平衡该二叉树;更优地,在重新平衡该二叉树后,还可对所述二叉树的节点,按插入的值的大小顺序重新进行编码。
步骤S603:根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点。
例如,对于右侧节点的值大于左侧节点的值的二叉树,若该二叉树所对应的操作符的约束类型为等值操作,则将所述事件在该二叉树中插入的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为大于操作,则将所述事件在该二叉树中插入的节点的左侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为小于操作,则将所述事件在该二叉树中插入的节点的右侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为大于等于操作,则将所述事件在该二叉树中插入的节点及其左侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为小于等于操作,则将所述事件在该二叉树中插入的节点及其右侧的节点作为符合约束的节点。
例如,对于右侧节点的值小于左侧节点的值的二叉树,若该二叉树所对应的操作符的约束类型为等值操作,则将所述事件在该二叉树中插入的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为大于操作,则将所述事件在该二叉树中插入的节点的右侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为小于操作,则将所述事件在该二叉树中插入的节点的左侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为大于等于操作,则将所述事件在该二叉树中插入的节点及其右侧的节点作为符合约束的节点;若该二叉树所对应的操作符的约束类型为小于等于操作,则将所述事件在该二叉树中插入的节点及其左侧的节点作为符合约束的节点。
较佳地,对于节点被编码的二叉树,将所述事件在该二叉树中插入的节点的编码作为插入节点编码后,若该二叉树为右侧节点的值大于左侧节点的值的二叉树,则将该二叉树中编码小于插入节点编码的节点视为位于插入节点左侧的节点;若该二叉树为右侧节点的值小于左侧节点的值的二叉树,则将该二叉树中编码小于插入节点编码的节点视为位于插入节点右侧的节点。
步骤S604:确定所述符合约束的节点相关联的订阅集合。
步骤S605:将确定出的订阅集合取交集后得到与该事件匹配的订阅。
基于上述的对加密的订阅与事件进行匹配的方法,发布订阅云服务的代理服务器303的一种内部结构,如图7所示,包括:事件匹配模块701,以及基于SGX的容器702;
其中,事件匹配模块701用于在接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中;其中,所述二叉树集合中的各二叉树分别对应各操作符的约束类型;在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于所述容器702中进行解密并对得到的明文值进行比较;之后,根据所述容器702输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;将确定出的订阅集合取交集后得到与该事件匹配的订阅;其中,所述操作符为所有订阅中的约束所用到的操作符。
进一步,发布订阅云服务的代理服务器303还可包括:订阅处理模块703;
订阅处理模块703用于接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合,从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树;在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点;进而将该订阅加入到与该节点相关联的订阅集合。
进一步,订阅处理模块703还用于在所述将该约束的约束值插入到该二叉树后,平衡该二叉树;并在所述平衡该二叉树后,对所述二叉树的节点,按插入的值的大小顺序依次进行编码。
发布订阅云服务的代理服务器303中模块的功能的实现方法可参考上述图4、5、6所示流程各步骤中的方法,此处不再赘述。
图8示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的对加密后的订阅和事件进行匹配的方法。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,可以与非线性接收机相连,从非线性接收机接收信息,实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明的技术方案中,接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中预先构建的每个二叉树中;其中,所述二叉树集合中的各二叉树分别对应各种操作符的约束类型;其中,所述操作符为所有订阅中的约束所用到的操作符;在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将属性的取值的密文值与该二叉树的节点的密文值在基于SGX的容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅;将确定出的订阅取交集后得到与该事件匹配的订阅。本发明的技术方案相比于现有的基于密码学算法的机密性保护方案,由于通过针对每个属性建立的二叉树可以快速找到事件所匹配的订阅,而不必将事件与每个加密的订阅一个个判断匹配结果,因此,可以缩短匹配时间,提高匹配效率,从而适用于对大规模订阅的处理;本发明的技术方案相比于现有的基于SGX的机密性保护方案,由于不需要在容器内执行整个匹配过程,而只是在容器内进行简单的两个值的比较操作,大大减少了对容器内存的要求,也就是说本发明技术方案不需要大量的硬件内存开销,即可以大大减少硬件内存的开销,从而适用于对大规模订阅的处理。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种对加密的订阅与事件进行匹配的方法,其特征在于,包括:
接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中分别针对各种操作符的约束类型预先构建的各二叉树中;其中,所述操作符为所有订阅中的约束所用到的操作符;
在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将属性的取值的密文值与该二叉树的节点的密文值在基于SGX的容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;
将确定出的订阅集合取交集后得到与该事件匹配的订阅。
2.根据权利要求1所述的方法,其特征在于,所述二叉树的构建方法为:
接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合,从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树;在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点;进而将该订阅加入到与该节点相关联的订阅集合中。
3.根据权利要求2所述的方法,其特征在于,所述构建的二叉树中,右侧节点的值大/小于左侧节点的值;以及
所述根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,具体包括:
若该二叉树所对应的操作符的约束类型为等值操作,则将所述事件在该二叉树中插入的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为大于操作,则将所述事件在该二叉树中插入的节点的左/右侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为小于操作,则将所述事件在该二叉树中插入的节点的右/左侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为大于等于操作,则将所述事件在该二叉树中插入的节点及其左/右侧的节点作为符合约束的节点;
若该二叉树所对应的操作符的约束类型为小于等于操作,则将所述事件在该二叉树中插入的节点及其右/左侧的节点作为符合约束的节点。
4.根据权利要求2所述的方法,其特征在于,在所述将该约束的约束值插入到该二叉树后,还包括:平衡该二叉树。
5.根据权利要求4所述的方法,其特征在于,在所述平衡该二叉树后,还包括:
对所述二叉树的节点,按插入的值的大小顺序依次进行编码。
6.一种代理服务器,其特征在于,包括:事件匹配模块,以及基于SGX的容器;其中,
所述事件匹配模块用于在接收到加密的事件时,针对所述事件的每个属性,获取与该属性相对应的二叉树集合,并将该属性的取值插入到所述二叉树集合中分别针对各种操作符的约束类型预先构建的各二叉树中;其中,所述操作符为所有订阅中的约束所用到的操作符;在将该属性的取值插入到所述二叉树集合中的一个二叉树的过程中,将该属性的取值的密文值与该二叉树的节点的密文值在基于所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该属性的取值在该二叉树中插入的节点;进而根据该二叉树所对应的操作符的约束类型,确定该二叉树中符合约束的节点,确定所述符合约束的节点相关联的订阅集合;将确定出的订阅集合取交集后得到与该事件匹配的订阅;其中,所述操作符为所有订阅中的约束所用到的操作符。
7.根据权利要求6所述的代理服务器,其特征在于,还包括:
订阅处理模块,用于接收到加密的订阅时,针对该订阅的每个约束,获取与该约束的属性相对应的二叉树集合,从所述二叉树集合中获取与该约束的操作符的约束类型相对应的二叉树;在将该约束的约束值插入到该二叉树的过程中,是将该约束值的密文值与该二叉树的节点的密文值在所述容器中进行解密并对得到的明文值进行比较;之后,根据所述容器输出的比较结果确定该约束值在该二叉树中插入的节点;进而将该订阅加入到与该节点相关联的订阅集合。
8.根据权利要求7所述的代理服务器,其特征在于,
所述订阅处理模块还用于在所述将该约束的约束值插入到该二叉树后,平衡该二叉树。
9.根据权利要求8所述的代理服务器,其特征在于,
所述订阅处理模块还用于在所述平衡该二叉树后,对所述二叉树的节点,按插入的值的大小顺序依次进行编码。
10.一种电子设备,包括中央处理单元、信号处理和存储单元,以及存储在信号处理和存储单元上并可在中央处理单元上运行的计算机程序,其特征在于,所述中央处理单元执行所述程序时实现如权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110552615.5A CN113312637B (zh) | 2021-05-20 | 2021-05-20 | 代理服务器及其对加密的订阅与事件进行匹配的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110552615.5A CN113312637B (zh) | 2021-05-20 | 2021-05-20 | 代理服务器及其对加密的订阅与事件进行匹配的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113312637A CN113312637A (zh) | 2021-08-27 |
CN113312637B true CN113312637B (zh) | 2022-08-05 |
Family
ID=77373902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110552615.5A Active CN113312637B (zh) | 2021-05-20 | 2021-05-20 | 代理服务器及其对加密的订阅与事件进行匹配的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312637B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671717A (zh) * | 2020-12-02 | 2021-04-16 | 北京邮电大学 | 对加密后的订阅和事件进行匹配的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10104049B2 (en) * | 2014-09-12 | 2018-10-16 | Vmware, Inc. | Secure distributed publish/subscribe system |
CA3144715A1 (en) * | 2018-06-21 | 2019-12-26 | Haibin Zhang | Systems and methods for permissioned blockchain infrastructure with fine-grained access control and confidentiality-preserving publish/subscribe messaging |
US11087027B2 (en) * | 2018-10-12 | 2021-08-10 | Marin Software Incorporated | Privacy-safe attribution data hub |
-
2021
- 2021-05-20 CN CN202110552615.5A patent/CN113312637B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671717A (zh) * | 2020-12-02 | 2021-04-16 | 北京邮电大学 | 对加密后的订阅和事件进行匹配的方法 |
Non-Patent Citations (1)
Title |
---|
王启旭等.一种面向发布订阅系统的访问控制机制.《电子科技大学学报》.2018,(第04期), * |
Also Published As
Publication number | Publication date |
---|---|
CN113312637A (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102596445B1 (ko) | 개인 정보 보호를 위한 방법 | |
US9589151B2 (en) | Techniques and architecture for anonymizing user data | |
US20170308580A1 (en) | Data Aggregation/Analysis System and Method Therefor | |
CN104426869A (zh) | 基于二维码获取信息、发送信息的方法及装置 | |
CN109522462B (zh) | 一种基于区块链的云查询方法、装置、设备及存储介质 | |
CN112073444B (zh) | 数据集的处理方法、装置和服务器 | |
CN114547078A (zh) | 基于隐私计算的联邦跨特征查询方法、装置、介质及设备 | |
US9344407B1 (en) | Centrally managed use case-specific entity identifiers | |
CN111510413B (zh) | 数据的处理方法、装置及设备 | |
CN112671717B (zh) | 对加密后的订阅和事件进行匹配的方法 | |
JP7475492B2 (ja) | 機密情報を保護するためのマルチパーティ計算およびk-匿名性技法の使用 | |
US9251375B1 (en) | Use case-specific entity identifiers | |
CN114731293A (zh) | 在确定准确的位置事件测量时防止数据操纵和保护用户隐私 | |
CN116010678B (zh) | 一种匿踪查询方法、装置及设备 | |
US10506288B2 (en) | DRM addition authentication | |
US20130254545A1 (en) | Method, system and apparatus for transmitting digital contents | |
CN113312637B (zh) | 代理服务器及其对加密的订阅与事件进行匹配的方法 | |
WO2023215290A1 (en) | Privacy secure batch retrieval using private information retrieval and secure multi-party computation | |
CN109525550B (zh) | 一种数据报文的处理方法、装置以及系统 | |
Raj et al. | Enhanced encryption for light weight data in a multi-cloud system | |
WO2023196016A1 (en) | Secure computation using multi-party computation and a trusted execution environment | |
CN115599959A (zh) | 数据共享方法、装置、设备及存储介质 | |
EP4085365A1 (en) | Privacy preserving cross-domain machine learning | |
CN110633273A (zh) | 一种权限管理方法和装置 | |
CN112118208B (zh) | 上报数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |