REARGUARD Secure Keyword SearchUsing Trusted Hardware 论文详读

最近读了一篇关于硬件和安全方面的我文章,对于很多东西读的不是很透,所以还是老样子,先放在这里,回头有时间了再看看。
因为最初写在word里,所以懒得在这里再排一遍版,放上原版翻译的链接
REARGUARD:使用受信硬件进行关键字搜索
——翻译:ly
摘要——对加密数据的搜索(SE)会使客户机将其搜索任务委托给第三方服务器,第三方服务器一般会托管一组加密文档,同时仍然采取一些措施保证查询隐私性。基于软件的解决方案为使用不同的密码学原语,这种方式已经被深入挖掘过,由此诞生了一组丰富的安全搜索索引和算法设计。然而,每个方案只能实现一小部分信息检索(IR)功能,并且经常会泄漏相当多的搜索信息。近年来,基于硬件的安全执行已经成为在不受信任的软件环境中安全执行程序的有效机制。在本文中,我们利用基于硬件的执行环境(TEE),并探索一种软硬件结合的方法来解决具有挑战性的安全搜索问题。对于功能性,我们的设计可以支持相同的明文IR函数谱。为了安全起见,我们提出了遗忘的关键字搜索技术来减少索引搜索跟踪泄漏。我们使用英特尔SGX构建了一个系统原型。我们证明了该系统提供了对各种搜索功能的广泛支持,并且实现了与具有高度安全保护的明文数据搜索相当的计算效率。
I介绍
自Song等人在加密数据搜索方案上的开创性工作以来已过去将近20年[1]。这证明了从加密数据中检索信息的概念可以使用密码体制实现。从那时起,SE就受到学术界[2]、[3]、[4]、[5]、[6]和工业界[7]越来越多的关注。最近,由于云计算的出现,这种技术的重要性得到了强调,云计算强烈希望保护用户的敏感信息不被窥探,同时提供基本的数据服务。
实现加密数据搜索的宏伟愿景有两个主要的研究方向。一个是基于软件的安全计算研究,它通常依赖于密码学,并且集中在算法设计和理论证明上。另一个是依赖于硬件隔离和可信计算的可信执行解决方案。传统的SE是使用基于软件的解决方案来实现的。尽管沿着这一研究路线进行了广泛的研究,但是目前的SE实现在两个方面并不令人满意。首先是SE与明文IR技术之间明显的查询性能差距。这是因为实用SE解决方案建立在各种加密原语之上,例如属性保持加密[8]、函数加密[6]和可搜索对称加密(SSE)[2],并且每个加密工具仅通过合并特定类型的查询类型从而评估不同的索引结构和搜索算法。
此外,现有的现实SE解决方案有许多安全限制。在对称设置中,我们能够实现的最安全的SSE是在L1泄漏过程[9]下,它至少揭示了索引搜索跟踪,包括搜索模式和进程模式(参见Sect.II)。不幸的是,曾经被认为是“无关紧要”的信息披露并没有得到很好的研究,并且在实践中已经导致了许多破坏性的攻击[9],[10]。除了上述信息泄漏之外,基于“公钥”的方案固有地容易受到断言隐私破坏[11],即威胁代理可以在搜索过程中使用公钥生成密文并推断查询的关键字。
另一方面,基于硬件的可信执行环境最近已成为实现应用程序[12]、[13]、[14]的可信执行的有效安全机制。这些系统采用可信硬件,如可信平台模块(TPM)、英特尔可信执行技术(TXT)、ARM信任区、英特尔软件保护扩展(SGX)以及小型固件作为可信计算基础(TCB)。这种TCB不仅提供了信任的根源,而且为环境提供了必要的系统隔离。虽然看起来可以简单地将最先进的IR技术迁移到TEE中,从而实现具有相同查询功能谱的增强安全性,但是存在若干挑战,需要仔细的设计考虑才能利用该技术。
虽然基于硬件的安全执行,例如Intel SGX,可以提供TEE内部应用的机密性和完整性,但是信息侧信道通常不受保护[15]、[16]。当用户与威胁代理共享资源时,威胁极大,而资源共享是云计算的基础。最近,控制信道[15]和高速缓存信道[16]都被证明泄露了Intel SGX平台上的执行信息。因此,直接采用TEE进行安全搜索应用〔17〕,(18)可以导致索引搜索痕迹的泄露。另一个挑战在于编程环境。为了防御不受信任的操作系统,每个库函数都可能需要重新设计以加强对攻击的防御,比如Iago攻击[19]。在编写本文时,在Intel SGX的TEE中可用的库函数数量及其有限。由于英特尔SGX SDK 1.6版的库缺失,我们所研究的红外软件都不能直接用作动态远程库。
我们的贡献:在这项工作中,我们解决了基本但具有挑战性的问题——搜索加密数据。我们建议使用可信硬件——REARGUARD进行安全关键词搜索,该REARGUARD构建在TEE上,如Intel SGX[20]和AMD Memory Encryption[21],以完全在隔离内存中执行搜索计算,即使在特权软件不可信的情况下。这种硬件强制隔离保证了数据和计算的机密性和完整性,这对于云计算是必不可少的。此外,REARGUARD使IR功能与明文数据搜索相媲美。我们的方案也不再是纯粹的基于软件的方法,其计算开销在很大程度上取决于底层的密码学原语。
当前基于软件的SE的实际设计具有防止泄漏的功能,这至少揭示了索引搜索跟踪。REARGUARD可以更好地实现信息保护,并明显地通过减少这种泄漏来提高SE的安全性。在支持索引更新的动态SE场景中,设计并实现了两种新的泄漏控制方案L0+和L0。在L0+模型中,我们完全隐藏了索引搜索跟踪,并且在设置时只显示最小信息。在较弱的L0概念中,我们允许一些合理的泄漏来进行更有效的查询。在搜索算法中,我们识别出几个与查询相关的操作,并使它们适应于忽略关键字的执行,以满足已删除的安全要求。我们用4000行代码(LOC)创建出REARGUARD原型。在保证实现满足安全性要求的同时提供所需的查询功能的同时,还进行了大量的工作。REARGUARD提供搜索功能和性能可与明文数据搜索相匹配。
综上所述,我们在这项研究中做出了以下贡献。1)我们提出REARGUARD,这是一种针对动态安全关键词搜索方案的创新方法,它利用了基于硬件的安全执行的最新进展——Intel SGX。该系统在保证查询过程的机密性和完整性的同时,支持与明文IR相当的一组强大的查询功能。我们的设计对于强攻击是安全的,包括来自特权受损的软件和低级固件的攻击。2)我们的设计通过使用遗忘关键字搜索功能来减少索引搜索跟踪从存储器侧通道泄漏。这是云用户和威胁代理共享资源的SE的主要问题之一。该系统设计并实现了两个泄漏保护程序以平衡安全性和性能,两者都能显著减少索引搜索占用。3)我们精心设计和实现了流行的红外功能成为全功能SGX兼容的原型。我们在真实数据集上的实验报告了与具有增强的安全保护的明文数据搜索的性能接近的性能。
II背景
本节提供有关当前SE泄漏、反向索引结构和Intel SGX的背景信息。
SE隐私泄漏。在许多用于构造SE的密码学原语中,对于可搜索对称加密[2]、[3]、[4]是文献中公开和研究最多的。
在这里插入图片描述
SSE利用确定性加密进行有效的关键词匹配,但是对关键词隐私的保护很弱。Cash等人对静态环境下的SSE,设计了L4、L3、L2、L1四种防泄漏模型,以表征信息泄漏量[9]。特别地,L4方案揭示了文档中单词的数量、它们的顺序和出现次数。例子包括一些商业产品〔7〕。除了每个关键字的出现计数外,L3 模型揭示了以上所有信息。L2-SSE方案仅公开文档中的关键字号。L1揭示了与L2相同的信息,但仅针对已经搜索的关键字。此外,所有泄漏模型都暗示了索引搜索跟踪的启示,包括关键字搜索模式,即是否重复查询,以及访问模式,即满足查询的加密的指针。大多数SSE均为L2或L1泄漏。这样的信息公开也导致动态设置中的隐私泄露。这允许威胁代理了解新添加的文档是否包含以前查询过的关键字。
上述泄漏的后果还没有得到很好的研究。出现了许多针对SSE的攻击以利用泄漏来部分或甚至完全恢复查询和数据集信息[9]、[10]。此外,基于公钥的构造固有地容易受到断言隐私泄漏的攻击[11]。也就是说,威胁代理可以使用公钥生成密文,并在搜索过程中推断查询。
反向索引。反向索引在现代搜索引擎和当前SSE设计中被广泛采用。它支持次线性搜索复杂度(数据集中文件的数量),以及动态设置中的丰富查询功能,如布尔查询、短语查询、排序检索、拼写校正。它是通过将标准索引技术应用到目标数据集[22]来生成的,例如标记化、词干、停止词消除、语言分析等。特别地,这个数据结构包含N个垂直索引行,其中N等于提取的关键字的数目(或术语,我们以后使用它们从数据集互换。横向上,它分为两个主要部分:a)包括所有提取的关键字的词汇表(或字典);b)关键字相关的发布列表。图1所示的每个列表由包含关键字的文档的所有docID2、相应文档中的术语位置Pos以及其他统计信息(例如术语频率(TF)和反向文档频率(IDF)等)组成。通过匹配目标关键字(步骤1),检索相关的过帐列表(步骤2)和通过所获取的列表的信息来评估查询功能(步骤3)。注意,在步骤1中,我们可以线性扫描词汇表,或者使用具有恒定搜索成本的哈希表。观察到的渗漏(见IV部分)在这两种情况下都存在。为了简单起见,我们选择遍历词汇表进行关键字匹配。
英特尔SGX。SGX是Intel最新的指令扩展,旨在为在商品计算机上进行的安全敏感计算提供完整性和机密性保证。在SGX[20]的威胁代理模型中,特权软件和低级固件(如OS内核、虚拟机管理程序和系统管理模式)都被假定为潜在恶意的。这是因为SGX的TCB与它的前身如TPM、Intel TXT相比,只包含CPU和几个特权加密器。这显著减少了攻击面并提供了强有力的安全保证。为加密器保留的存储器区域,称为加密器页面缓存(EPC),只能在CPU进入特殊加密器模式时才能访问,该模式对每个外部EPC页面访问请求执行额外的硬件检查。EPC内存由SGX内存加密引擎(MEE)[23]加密和验证,它是CPU包中的内存控制器的一部分。加密器可以通过使用对称的认证加密,如GCM[AES],将加密后的计算结果保存到不可信的持久存储中。加密密钥是从英特尔未知的硬编码的根密封密钥导出的。密文可以被加载回,并通过加密它的同一个包来解密。此外,SGX还提供了远程认证功能,以在建立安全通道和提供其秘密之前使用户相信已建立的加密器的完整性。
除了物理攻击之外,SGX还容易受到回滚攻击[23]、Iago攻击[19]和旁路攻击,包括缓存定时、功率分析等。SGX不能抵抗DoS攻击,因为底层资源分配仍然由特权系统软件控制。当将这些攻击应用于基于SGX的搜索时,威胁代理可以通过破坏SGX保护来中断搜索过程或/和推断搜索隐私。这超出了本文的范围。此外,内存跟踪泄漏在两页[15]和高速缓存行级别[16]均已被确认。泄漏将向SE公开威胁代理的索引搜索轨迹。我们的目的是在这项工作中减轻这种信息披露。
III问题制定
A概述
系统包括三个实体,数据所有者、数据用户和启用SGX的服务器,如图2所示。数据所有者拥有n个文档的集合(我们使用“文档”或“文件”来指代任何文本内容记录,例如文本文件、网页)、DB={D1、D2、…、Dn},这些文档又包含m个关键字W={w1、w2、…、wm}。然后,他为数据库生成反向索引I。与SSE〔2〕、〔5〕一致,我们将数据集的存储与存储区解耦其索引3。
在这里插入图片描述
我们假设查询算法的代码和相关参数是公共的,并且已经被预先加载到服务器设置的加密器中。接下来,数据所有者向服务器进行身份验证,并启动远程验证以检查加密器中的代码和静态数据的完整性。然后他建立一个安全的通道并发送一个所有者生成的秘密密钥SKO到加密器。数据所有者还在SKo下生成索引密文,例如使用GCM[AES],并将其传递给服务器。稍后,他可以在相同的sko4下发出加密索引更新请求Tupd来添加或删除文档。
通过类似的过程,授权数据用户通过远程认证验证托管搜索代码的加密器。这保证了搜索程序执行的完整性和查询结果的正确性。用户还与加密器共享他的秘密密钥skui,并将skui下的查询密文上传到服务器。
在服务器端,搜索过程从封装加载和解密索引I开始,并使用相应的响应键查询。在加密器内部通过明文索引执行查询。使用skui的结果文档id的密文res被发送回用户i。我们设计的另一个优点是比SSE更自然地支持更现实的多用户设置,因为每个用户都能够通过自己与加密器共享的秘密密钥进行搜索。
定义1:(REARGUARD)我们使用可信硬件的安全关键词搜索方案是在数据所有者、数据用户和启用SGX的服务器之间执行的三个协议的元组,具体如下:
·(SKO,I~)设置(lλ,I):像数据集中输入一个安全参数λ和一个反向索引I,用于向数据所有者输出一个密钥sko,该密钥sko将与服务器上的被验证过的解码器以及存储在服务器上的加密索引结构I共享。
·(res,τs,SKUi)搜索(lλ,Q,I,SKO):输入安全参数λ,它为用户i输出一个密钥skui,该密钥skui将与服务器上经过认证的加密器共享。使用skui,它将一些关键字w上的查询Q加密为密文τs,并发送到服务器。在输入τs,I~,SKO,SKUI之后,输出使用SKUi 加密过的搜索结果res~。
·(IΔ,τupd)更新(lλ,upd,I,SKO):在输入时,一个索引中的更新请求upd={add/delete,w,id}(执行通过关键字w的发布列表添加或删除id)和所有者的秘密密钥sko,它输出更新令牌τupd。在输入τupd,I,SKO,它产生一个
更新索引I~Δ。
B对抗模型
我们识别了几个与关键字相关的查询操作,并提出了遗忘的索引访问技术,以确保观察内存序列的威胁代理访问索引,包括地址和加密内容,对索引搜索(更新)操作有不可区分的视角。从两个搜索(更新)查询显示的内存痕迹的口粮。我们的安全假设与SGX是一致的,只是我们扩展了旁路攻击,以使用非直接从索引访问获得的信息,如目标数据集统计(例如,发布列表长度、关键字频率等)、上下文信息(例如,趋势)来对任何攻击进行综合。单词、通信量)和语言学知识。我们不打算在本文中为他们辩护。我们还旨在实现查询不可链接性,即即使对于大多数SSE不支持的相同关键字,威胁代理也不能仅通过它们的对应关系来区分搜索令牌。在下文中,我们首先给出两个防泄漏方案,L0+和L0,然后给出我们的安全措施。
定义2:(L0±完成索引访问跟踪隐藏)这揭示任何关键字在设置阶段的初始索引大小、确定性索引搜索跟踪和同一操作(添加或删除)的更新模式。
定义3;(L0-部分索引访问跟踪隐藏)这揭示了相同组中的关键字在设置阶段的初始索引大小、非确定性索引搜索跟踪和同一操作的更新模式(参见Sect.IV)。
与SSE类似,我们不认为索引访问操作类型(即搜索或更新)是敏感信息,尽管可以额外地保护它们[24]。
安全防范。在安全计算仿真模型的基础上,提出了该方案的安全性〔4〕。特别是,它需要一个真实世界的协议执行。使用安全硬件功能的F能够模拟理想世界的功能,从而实现环境产生系统中所有输入并读取所有输出的人,但是不能区分是虚拟世界还是真是世界。我们定义基于泄漏量L0+和L0,分别在真实世界和理想世界中进行了实验 和 。
:在设置阶段,环境通过发送“设置”消息来指示数据所有者
与真实世界的威胁代理执行安装协议。在每个时间步骤中,指定用户的搜索查询Q或数据所有者的更新请求upd={add/delete,w,id}。用户(所有者)执行搜索(更新)协议。Z观察每个搜索的协议输出,可能的输出结果是协议丢弃,索索结果或者更新成功。最终会输出一个比特 b。
:在设置阶段,环境Z向数据所有者发送消息“setup”。然后所有者
将此消息转发到理想功能F,该理想功能表示泄漏L0+(L0)的理想世界威胁代理S。在每个时间步骤中,Z指定用户的搜索查询Q或数据所有者的更新请求upd={add/delete,w,id}。用户(所有者)将Q(upd)提交给F。然后,S通过发送“continue”或“abort”来通知与搜索(更新)操作相关联的泄漏L0+(L0)。F输出搜索结果,更新成功,或者由环境观察的⊥。最后,Z输出比特位 b’。
定义: 4(半诚实/恶意安全)我们说协议πF模拟半诚实/恶意模型中的理想功能F,如果对于PPT半诚实/恶意真实世界威胁代理A,存在理想世界模拟器
S,对于所有非一致的,多项式时间Z,

我们的安全措施既包括忠实遵守规定协议的半诚实的威胁代理,也包括任意偏离协议的威胁代理。由于在仿真过程中只给出泄漏L0+或L0,因此保证了方案的保密性。当理想世界中的数据用户或所有者接收到预期的结果或协议中止时,模型也捕捉到正确性。
IV我们的设计
本节提供REARGUARD的具体设计,特别关注搜索和更新阶段。我们研究了SSE中广泛研究的基本单关键字查询。然后,我们描述了动态设置,并考虑与SGX的可扩展性问题。最后,我们讨论了对其他常见查询功能的扩展,如拼写纠正、布尔查询、短语查询、接近度查询、范围查询和基于相似度的等级检索。
单一关键字查询

  1. 索引搜索跟踪泄漏:通过反向索引成功执行单个关键字查询将返回目标关键字张贴列表中的文件ID。我们在图4中的单关键字搜索算法中实现了两个关键词相关的操作。最敏感的操作是在步骤1中的索引词汇表中搜索预期的关键字w(参见Sect.ii)。当且仅当满足条件(第3行),则执行步骤2中的相应代码块以进一步检索该关键字的发布列表(第4行),然后终止索引搜索(第5行)。我们还使用图3中的Intel Pin框架[25]通过实验验证了不同关键字存在泄漏。在图3(a)(b)中,很容易区分步骤1中用于不同关键字匹配的存储器跟踪。如果第一关键字意图如图3(a)所示,则可以观察到匹配命中,然后进行中断操作。如果第三个关键词是图3(b)的兴趣,我们将首先观察两次未命中,然后比赛命中并结束。在张贴列表检索的步骤2中,我们还可以毫不费力地区分图3©中不同关键字的索引搜索模式。即使使用SGX〔15〕、〔16〕,泄漏也可能以不同粒度存在。因此,隐藏这两个依赖于查询的操作的内存跟踪在我们的设计中起着关键作用。
    在这里插入图片描述
    在这里插入图片描述
    2)遗忘关键字搜索原语:简而言之,我们实现遗忘关键字搜索原语以在索引访问期间混淆内存跟踪。其主要思想类似于[12]、[26]中使用的技术,但我们针对安全关键字搜索的目的对它们进行定制。特别地,我们通过X86 CMOVZ指令实现了不经意的数据传输,如果条件代码为真,则将源操作数移动到目标操作数。当源操作数和目标操作数都放在寄存器中时,这种数据传输结果被遗忘,并且没有泄漏关于分支选择的信息。同样,我们可以使用CPU寄存器作为私有存储来隐藏搜索足迹。对于不经意的读取,我们首先将内容加载到寄存器中,然后仅选择感兴趣的数据。另一方面,进行不经意的写操作如下。它不经意地阅读内容。如果需要数据,则将存储更新的内容;否则,将回写原始数据。由于SGX使用随机加密来保护MEE的每个写操作,所以威胁代理无法推断数据内容。
    一个读操作序列,我们只需要在更新阶段写索引。请注意,没有必要进一步混淆类似于SSE的搜索和更新操作,而在不经意读取之后,可以通过附加的虚拟写入轻松地完成此操作。
    忘记关键字匹配。我们设计了一个OMatch()函数,如图5所示,通过使用前面提到的遗忘的数据传输原语,来隐藏对关键字匹配的跟踪。特别地,我们将查询和关键词都存储在词汇表中的单独的寄存器中(第8行),然后比较它们(第5行)。如果匹配,将返回指向查询关键字的发布列表的指针;否则,将返回默认的虚拟地址(第6行)。
    不经意的张贴列表检索。在步骤2中,还采用另一个遗忘的函数ORetrieval()来隐藏用于检索发布列表的索引搜索跟踪。只有当发布列表的地址与OMatch()返回的地址匹配时,才会不经意地检索该列表;否则,ORetrieval()函数将返回一个虚拟列表。此外,我们还可以进一步提高矢量寄存器AVX2读取阵列的效率,而不是使用通用寄存器进行逐元素读取。
    3)综合考虑:我们将分别用提出的遗忘搜索函数给出防泄漏L0+和L0的具体设计。
    L0+构造。构造L0+泄漏的主要思想是显示每个查询的确定性索引搜索跟踪。特别地,我们首先使用OMatch()来扫描整个词汇表,并且不经意地匹配查询的关键字。然后,执行ORetrieval()函数,以便在接触每个索引行之后获得目标关键字的发布列表。我们还不经意地将每个查询的检索列表填充到预定长度l,l >=MaxLength(plists),以便进一步模糊攻击者的视图。尽管O(N)比较复杂,但由于CPU寄存器与服务器DRAM之间的协议执行速度较快,我们的基于硬件的方案在实际应用中还是很有效的。
    L0构造。我们创建L0 模型的目的是通过容忍额外的信息来加速搜索过程而且同时达到比SSE更好的安全性。我们首先随机吧关键字W等成不同组然后扫描索引直到某个组包含了一个希望被搜索到的关键字。然后,感兴趣列表被从这些分组中随机取回。这种构造可以提升查询速度,并且优于L0+ 。通过使用附加的常开销数据结构,例如哈希表、Bloom 滤波器,可以进一步提高效率.,从而允许直接搜索目标组。我们还将结果列表从组i填充到预设长度lgi,该长度不短于组中最长的列表。这个L0设计揭示了索引的哪一部分正在被查询。然而,威胁代理不能通过公开的聚合组搜索模式来区分针对同一组的两个查询。L0+可以被认为是L0的一个特例,只有一个组-在整个索引空间。我们在第五节提供了对分组大小含义的详细讨论。
    4)更新:在动态设置中,数据所有者可以通过向某个关键字的发布列表添加(删除)文件来更新索引。我们可以利用不经意的写操作来模糊更新视图。特别地,根据泄漏协议,我们首先不经意地搜索索引并获得预期的发布列表。为了添加文件,我们将新的文件及其元数据插入到检索的列表中。然后我们不经意地将更新后的列表写回索引,这会增加L0组或L0+的整个索引中所有发布列表的长度。删除文件关键字遵循类似的过程,用伪文件替换目标。在这种情况下,索引行的长度不变。通过观察更新的索引的大小,还可以向服务器显示更新操作的类型(添加或删除)。尽管我们不考虑泄漏敏感,但我们可以通过故意将虚拟机写入相应的列表以进行删除操作来防止泄漏。
    提出的方法可能导致随着时间的推移逐渐增加索引存储。为了解决这个问题,数据所有者在预定数量的更新操作之后下载索引。然后,他通过删除伪文件和随机刷新索引行。在加密并上传到服务器之前,他还重新组织了L0的索引。因此,威胁代理只观察聚合更新模式。可以通过在索引中随机清除一部分伪文件来进一步混淆视图。
    5)可伸缩性:REARGUARD的直接补充的问题在于EPC内存受到当前SGX规范的约束,即总共128MB。我们的实验表明,只有95MB的代码和数据可用。这种可扩展性问题影响到目前在英特尔SGX上构建的所有应用程序。在大索引之后数据集中,索引的大小很可能超过限制。通过在设置时将原始的大索引分割成小分区,我们避免了这个紧迫的问题。这些位于加密器外部的分区索引由经过身份验证的加密保护,并根据需要加载到加密器中。对于L0+,所有分区被顺序加载并在包体内搜索。对于L0,我们采用一个层次的索引结构用于高效地按需加载。特别地,我们将一个小的一级索引(例如,使用哈希表,Bloom 滤波器)放入到加密器中,并使用它在包含目标组的主内存中快速精确定位第二级索引分区。然后加密器负载和忽略搜索分区。我们还可以通过按组划分原始索引来实现更快的搜索。因此,仅由加密器内部初级索引获取预期的组索引。
    B.附加查询功能支持
    除了单关键字查询外,明文IR还具有多种功能。由于页面的限制,我们简要描述了如何将一些流行的功能结合到REARGUARD设计中。
    拼写纠正在现代搜索引擎中具有广泛的实现,即使查询中存在拼写错误,也能为用户提供正确的搜索结果。后盾可以通过修改OMatch()来支持这个功能。特别地,它检查被访问的关键字是否在预定距离内,而不是确切的关键字匹配,
    例如编辑距离(ED),到用户输入。如果是真的,这个关键字被错误地选择为正确的查询。
    布尔查询是数据库和自由文本搜索中使用的另一种基本查询类型。查询是通过将多个关键字与逻辑操作(如AND、OR和NOT)连接起来形成的。布尔查询可以通过在步骤3中基于不经意检索的张贴列表执行集合操作(即交集、并集和差集)来评估。在这种情况下,相关的数据操作不会触碰索引。因此,搜索踪迹仍将被隐藏。
    范围查询广泛用于数据库和免费文本搜索,以匹配特定范围内的记录和术语。我们可以在包中采用具有相当安全级别SSE[17]的基于树的索引,或者将范围查询转换为布尔查询[27],从而实现L0/L0+安全性。对于后者,我们不需要改变我们的基本索引结构,并且无缝地支持这种查询类型。
    我们观察到许多查询功能发生在步骤3,后索引访问阶段中执行。邻近和短语查询是常见的查询类型。在短语查询中,所有匹配的文档都应该包含特定的关键字序列,而接近度查询通过指定查询关键字之间的允许距离来约束结果。这两个函数可以用AND操作[22]作为布尔搜索的特例,并通过使用检索到的发布列表中的Pos信息来评估。基于相似性的排序是一种高级IR技术,用于根据结果与查询的相关性使用数据集的统计信息对结果进行排序。实例中,余弦度量中的“TF×IDF”权重衡量了向量空间模型〔28〕。我们可以在从索引中无意中检索到发布列表之后计算相似性得分。
    V安全性分析
    在这一节中,我们证明了REARGUARD对于单关键字搜索的安全性。由于相同的保护方法,其他查询函数的证明是相似的。
    定理1:在抵御定义4下的半诚实威胁代理时, 如果底层SGX原语是可信的并且加密是CPA安全的,那么L0+下的REARGUARD是安全的。
    证明:(草图)。在设置阶段,S可以输出索引为L0+的随机生成索引行的索引I‘。然后模拟加密索引I’=Encsko (I’),其中sk0是随机选择CPA安全加密Enc.
    在搜索阶段,根据L0+,S从I’中随机选择关键字w’作为查询Q’。 τs’可以模拟Encsku(Q’),其中随机生成sku。
    在更新阶段,模拟器S基于泄漏函数L0+输出upd’={op、w’、id’}。具体来说,op是根据显示的更新模式添加或删除的。W’是从I’中随机选择的。Id’也是随机选择的。然后,S设置了τupd’=EncSkO(upd’)。
    结果,模型4中的环境Z由于可信执行环境由SGX和CPA-secre Enc.提供
    而不能分别将I‘、τs’和τ’upd与实验中的I、τs和τupd区分开。
    定理2:如果底层SGX原语是可信的,并且加密是CPA安全的,则L0下的REARGUARD对于Definition 4下的半诚实威胁代理是安全的。
    证明:(草图)。L0构造的证明是相似的
    在L0+模型中,除了
     对于搜索,S从L0中随机选取所揭示的组中的关键词w’。
     为了更新,在L0给出组访问模式泄漏的情况下,从所揭示的组中随机选择w’。
    因此,由于安全硬件和CPA安全加密,Z不能分别从实验
    中分别区分I‘、τs’和τ’upd。
    此外,通过证明该方案的真实性,我们还能够实现对恶意威胁代理的安全。通常,这可以通过SGX的远程认证并通过认证加密替换CPA安全的加密来实现。我们的设计意味着向前的隐私(见Sect.II)隐藏索引更新操作的内存跟踪。此外,REARGUARD还通过为搜索和更新令牌生成使用语义安全的加密来实现查询不可链接性。
    L0中群体规模的隐私含义对上证综指的攻击.在索引搜索阶段[9]、[10]期间依靠精确公开的关键词搜索和访问模式来唯一地确定查询的关键词并推测明文数据集信息。然而,L0仅泄露聚合的组搜索/更新模式,包括组中的关键字数量及其相关联发布列表的长度。威胁代理只知道查询是否来自同一组。准确的关键字查询链接的概率为1 /n,对于一个n元组。只有考虑到这一点,威胁代理在损害查询隐私方面没有优势,除非我们已经证明了随机猜测。因此,无论组大小如何,显示查询的概率都与L0+一样是1/|W|。另一方面,威胁代理可以利用侧边信息,例如张贴列表的长度、上下文、通信量等,以便于查询识别。即使使用完全同态加密[29]和遗忘的RAM(ORAM)[24],这些旁路攻击也难以防御。在这种情况下,组的大小没有差别。
    VI实施和评价
    A.实施
    为了让英特尔SGX提供强有力的安全保证,加密器中包括的库必须仔细设计以防止潜在的恶意攻击[19]。在编写时,SGX SDK(V1.6)只支持C/C++。在其他编程语言中许多流行的搜索软件包,如基于Java的Lucene,不能直接在编程环境中适应。此外,SGX使用C/C++标准库的定制版本,由于安全原因,仅提供与标准C库相比功能有限的子集。因此,即使用C/C++编写的应用程序,如Clucene也不能直接迁移。我们在SGX开发环境下开发了我们自己的搜索功能的实现。为了进一步减轻索引搜索跟踪泄漏,使用内存跟踪遗忘原语编写隐私敏感操作。我们使用Intel NUC上的Intel SGX SDK v1.6,运行Ubuntu 14.04TLS,构建了一个具有4000LOC的REARGUARD原型。NUC由英特尔I7—6770HQ Skylake CPU供电,6MB高速缓存在2.6 GHz和8GB DRAM。根据厂商规格,256GBSSD的读写速度分别为560MB/s和400MB/s。AES加密解密采用英特尔AES—NI指令实现。该原型支持常见的键查询类型和功能,即拼写纠正、布尔查询、接近度查询、短语查询、范围查询(通过转换为布尔查询)和基于相似度的排序。
    B.绩效评估
    我们评估的目标是测量具有高安全保护的提议系统的性能开销。现有的SE工作只支持我们实现的所有查询函数的子集。明文和SGX -仅搜索作为基线,并与L0和L0+中的两种方案泄漏模型。对于明文搜索,我们在主内存中完全托管的索引上评估其性能。仅SGX的搜索使用SGX保护进行,但是没有遗漏的操作,这通常可以被认为是类似于[17]的L1-SE方案。此外,当处理不能完全加载到EPC内存中的大型索引时,我们有兴趣评估所提出系统的可伸缩性。
    在这里插入图片描述
    实验是用真实世界的数据集进行的——使用的是Enron然电子邮件数据集[30],它包含大约五十万个文件,并且已经被广泛用于评估SE方案[3]、[5]。我们提取了大约258,000个关键字,并在标准词干明和停止词消除之后生成了175MB的倒排索引。我们在L0中使用了80个关键字组。在所有情况下,同时通过AND布尔查询、基于相似度的排序和拼写校正(默认值为1)来测量性能,以演示效率和丰富的查询功能。我们从关键字集中选择了一致的查询。实验平均1000次。为了简单起见,我们不考虑高级IR技术的优化,例如AND布尔查询的跳过指针和索引压缩,这些技术与我们的方案兼容,因为我们使用相同的索引结构。
    对小型索引进行搜索。我们首先测量搜索完全位于加密器内的小型索引的效率。在我们的实验中,我们只有小于40MB的EPC存储器可用。我们随机选择一部分原始索引的所有情况。该指数的大小约为35Mb,由50, 000个关键词组成。如图6(a)所示,对于所有情况,时间效率都与布尔查询中的关键字数量成正比。我们认为,在加密器内部搜索是非常有效的,与明文搜索相比,加密/解密操作、上下文切换等只需要大约0.62%的额外时间。另一方面,REARGUARD比纯文本情况稍慢,这是由于建议的遗忘索引访问功能。虽然L0+设计带来了O(N)理论上的复杂性,但我们的实验表明,明文搜索只增加了1.16倍的开销。L0构造比预期的L0+快,并且与明文情况相比显示6%的效率损失。注意,在实际[31]中,查询中的6个或更少的关键词占96%以上,因此图6中的实验结果是实际应用的代表。
    搜索大型索引。对于大小超过可用加密器存储器的索引,我们将其划分为分区。在我们的实验中,我们设置了5个分区索引,每个分区大约35MB。在主内存中仍然对原始索引进行明文搜索。只有SGX搜索继续加载索引分区,直到找到匹配为止。与纯文本查询相比,只有SGX查询在图6(b)中,由于索引加载、加密/解密和上下文切换,平均损失1.12美元。我们依次加载并搜索所有分区,寻找L0+,这比明文情况慢1.45倍。虽然明文搜索时间可以通过优化索引结构进一步加快,例如使用分层索引设计,但是考虑到L0+强大的安全保证,绝对时间成本仍然是合理的。除了SGX造成的开销之外,不经意的索引访问是最耗时的操作。
    我们把L0 分成两个子案例。在L0-1中,我们利用Bloom 滤波器作为每个第二级索引的一级索引分区。我们构造了五个Bloom滤波器索引,所有伪积极率都等于10-20,这仅消耗了总计约3.03MB的EPC内存。当命中被发现在Bloom 滤波器索引中,我们只对相应的分区进行加载和搜索。在L0-2中,我们用与L0-1相同的伪积极率为每个组指数建立Bloom 滤波器。生成的一级索引的总大小约为3.3MB。在这种情况下,只有目标组索引被加载并搜索在加密器中。在图6(b)中,两种情况都显示几乎恒定的查询时间。L0-1比L0-2稍慢,主要是因为使用的指数相对较大。因为我们采用了层次索引结构来允许对较小的索引进行搜索,所以两种L0情况比它们的竞争威胁代理更快。通过类似的索引设计,纯文本搜索和SGX搜索比L0搜索更有效。
    索引更新。与搜索相比,更新索引需要额外的不经意的写操作。两种更新查询类型——add和delete——在同一索引上成本几乎相同。对于L0中针对组索引的更新查询,实验显示与对应搜索操作相比,大约慢1.09倍,而L0+引入了小型索引搜索的1.1倍开销和大型索引搜索的1.08倍开销。
    VII相关工作
    对加密数据进行搜索。Curtmola等人〔2〕在静态设置中提出了可搜索的对称加密方案。它给出了两个安全措施,即CKA1和CKA2,其中索引搜索跟踪泄漏被接受用于一个有效的查询。Kamara等人[3]提出了[2]的动态版本,支持文件插入和删除,但在更新期间泄漏前向隐私。在[4]中明确地考虑了前向私有SE,其中使用了与ORAM相关的技术来减轻隐私泄露,但是带来了不可忽略的开销。Boneh等人〔6〕利用IBE的关键字搜索建立了公钥加密算法。以上SE只支持单关键字查询。近年来,文献[5]对安全布尔查询进行了研究,但是仍然存在索引搜索跟踪漏洞。另一个工作重点是实现安全范围查询。Sun等人[27]在基因组研究场景中,通过将范围查询简化为安全的多关键字查询来解决这个问题。最近Fuhry等人的一项并行工作[17 ]提出了一种在SGX使能服务器上实现安全范围查询的方法。然而,安全与目前基于软件的SSE仍然一致。在[18 ]中,还提出了一种使用安全硬件的私有数据库查询方案。但它没有提供正式的安全性分析,他们的TCB比我们的要大得多。因此,当前的SE只覆盖了明文查询功能的一小部分,不能在保持安全性的同时提供L1泄漏之外的安全保证。
    具有安全硬件的应用程序。近年来,在安全硬件之上构建应用程序的兴趣越来越大。Santos等人[13]提出了一种使用ARM TrustZone框架来保护.NET移动应用程序的机密性和完整性的可信语言运行时(runtime)。在IoT设置,Ambrosin等[14]利用安全硬件组件在IoT设备上实现基于非对称密钥的群认证协议。最近人们正在努力利用英特尔SGX来实现各种应用的安全和隐私保护。VC3[32]是用于利用SGX实现不可信云环境中MapReduce作业的真实和隐含执行的。Zhang等人[33]提出了一种基于SGX的认证数据馈送系统,它充当支持HTTPS的服务器和智能合同之间的可信代理。Ohrimenko等人〔12〕研究了SGX使能服务器的多方机器学习问题。除了机密性之外,他们还考虑了与相关机器学习算法相关的依赖于数据的内存跟踪泄漏。
    VIII结论
    在本文中,我们提出了REARGUARD,即基于现成的可信硬件的安全关键词搜索方案,在保证查询过程的机密性和完整性的同时,实现了与明文IR相当的查询功能。我们针对SE设计了两个新的隐私泄露方案,并给出了相应的结构,它们比基于最新软件的解决方案具有更少的搜索足迹。通过设计有效的遗忘关键字搜索函数,我们提出了超出底层硬件原语能力的方法。实际数据集的实现表明了该方法的实用性和有效性。
    致谢
    我们感谢Ning Zhang博士的宝贵建议和反馈。这项工作部分支持来自NSF赠款CNS 14464 78,CNS 140577,和CNS - 1443889。
    参考文献
    [1] D. Song, D. Wagner, and A. Perrig, “Practical techniques for searches on encrypted data,” in Proc. of IEEE S&P, 2000, pp. 44–55.
    [2] R. Curtmola, J. Garay, S. Kamara, and R. Ostrovsky, “Searchable symmetric encryption: Improved definitions and efficient constructions,” in Proc. of ACM CCS, 2006, pp. 79–88.
    [3] S. Kamara, C. Papamanthou, and T. Roeder, “Dynamic searchable symmetric encryption,” in Proc. of ACM CCS, 2012, pp. 965–976.
    [4] E. Stefanov, C. Papamanthou, and E. Shi, “Practical dynamic searchable encryption with small leakage.” in NDSS, vol. 71, 2014, pp. 72–75.
    [5] D. Cash, S. Jarecki, C. Jutla, H. Krawczyk, M.-C. Ros¸u, and M. Steiner, “Highly-scalable searchable symmetric encryption with support for boolean queries,” in CRYPTO 2013, pp. 353–373.
    [6] D. Boneh, G. Di Crescenzo, R. Ostrovsky, and G. Persiano, “Public key encryption with keyword search,” in EUROCRYPT 2004, pp. 506–522.
    [7] CipherCloud, “Cloud data encryption,” http://www.ciphercloud.com/ technologies/encryption/, 2017.
    [8] A. Boldyreva, N. Chenette, Y. Lee, and A. O’Neill, “Order-preserving symmetric encryption,” in EUROCRYPT 2009, pp. 224–241.
    [9] D. Cash, P. Grubbs, J. Perry, and T. Ristenpart, “Leakage-abuse attacks against searchable encryption,” in Proc. of ACM CCS, 2015, pp. 668– 679.
    [10] Y. Zhang, J. Katz, and C. Papamanthou, “All your queries are belong to us: The power of file-injection attacks on searchable encryption,” in Proc. of USENIX Security, 2016, pp. 707–720.
    [11] E. Shen, E. Shi, and B. Waters, “Predicate privacy in encryption systems,” in TC, 2009, pp. 457–473.
    [12] O. Ohrimenko, F. Schuster, C. Fournet, A. Mehta, S. Nowozin,
    K. Vaswani, and M. Costa, “Oblivious multi-party machine learning on trusted processors,” in Proc. of USENIX Security, 2016, pp. 619–636.
    [13] N. Santos, H. Raj, S. Saroiu, and A. Wolman, “Using ARM TrustZone to build a trusted language runtime for mobile applications,” in Proc. of ASPLOS, 2014, pp. 67–80.
    [14] M. Ambrosin, M. Conti, A. Ibrahim, G. Neven, A.-R. Sadeghi, and
    M. Schunter, “SANA: Secure and scalable aggregate network attesta- tion,” in Proc. of ACM CCS, 2016, pp. 731–742.
    [15] Y. Xu, W. Cui, and M. Peinado, “Controlled-channel attacks: Determin- istic side channels for untrusted operating systems,” in Proc. of IEEE S&P, 2015, pp. 640–656.
    [16] F. Brasser, U. Mu¨ller, A. Dmitrienko, K. Kostiainen, S. Capkun, and A.-
    R. Sadeghi, “Software grand exposure: SGX cache attacks are practical,”
    arXiv preprint arXiv:1702.07521, 2017.
    [17] B. Fuhry, R. Bahmani, F. Brasser, F. Hahn, F. Kerschbaum, and A.-R. Sadeghi, “HardIDX: Practical and secure index with SGX,” in Proc. of DBSec, vol. 10359, 2017, p. 386.
    [18] S. Bajaj and R. Sion, “TrustedDB: A trusted hardware-based database with privacy and data confidentiality,” IEEE TKDE, vol. 26, no. 3, pp. 752–765, 2014.
    [19] S. Checkoway and H. Shacham, “Iago attacks: Why the system call API is a bad untrusted rpc interface,” in Proc. of ASPLOS, 2013, pp. 253–264.
    [20] F. McKeen, I. Alexandrovich, A. Berenzon, C. V. Rozas, H. Shafi,
    V. Shanbhogue, and U. R. Savagaonkar, “Innovative instructions and software model for isolated execution,” in Proc. of ACM HASP, 2013.
    [21] D. Kaplan, J. Powell, and T. Woller, “AMD memory encryp- tion,” http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/ 12/AMD Memory Encryption Whitepaper v7-Public.pdf, 2016.
    [22] C. D. Manning, P. Raghavan, and H. Schu¨tze, Introduction to informa- tion retrieval. Cambridge university press, 2008, vol. 1, no. 1.
    [23] V. Costan and S. Devadas, “Intel SGX explained,” IACR Cryptology ePrint Archive, vol. 2016, p. 086, 2016.
    [24] O. Goldreich, “Towards a theory of software protection and simulation by oblivious rams,” in Proc. of ACM CCS, 1987, pp. 182–194.
    [25] C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney,
    S. Wallace, V. J. Reddi, and K. Hazelwood, “Pin: Building customized program analysis tools with dynamic instrumentation,” in ACM Sigplan Notices, vol. 40, no. 6, 2005, pp. 190–200.
    [26] A. Rane, C. Lin, and M. Tiwari, “Raccoon: Closing digital side-channels through obfuscated execution,” in Proc. of USENIX Security, 2015, pp. 431–446.
    [27] W. Sun, N. Zhang, W. Lou, and Y. T. Hou, “When gene meets cloud: Enabling scalable and efficient range query on encrypted genomic data,” in Proc. of IEEE INFOCOM, 2017, pp. 1–9.
    [28] W. Sun, B. Wang, N. Cao, M. Li, W. Lou, Y. T. Hou, and H. Li, “Privacy- preserving multi-keyword text search in the cloud supporting similarity- based ranking,” in Proc. of ACM AsiaCCS, 2013, pp. 71–82.
    [29] C. Gentry, “A fully homomorphic encryption scheme,” Ph.D. disserta- tion, Stanford University, 2009.
    [30] W. W. Cohen, “Enron email dataset,” https://www.cs.cmu.edu/∼./enron/.
    [31] KeywordDiscovery, “Keyword and search engines statistics,” https://
    www.keyworddiscovery.com/keyword-stats.html?date=2017-04-01.
    [32] F. Schuster, M. Costa, C. Fournet, C. Gkantsidis, M. Peinado, G. Mainar- Ruiz, and M. Russinovich, “VC3: Trustworthy data analytics in the cloud using SGX,” in Proc. of IEEE S&P, 2015, pp. 38–54.
    [33] F. Zhang, E. Cecchetti, K. Croman, A. Juels, and E. Shi, “Town crier: An authenticated data feed for smart contracts,” in Proc. of ACM CCS, 2016, pp. 270–282.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值