Hardening Distributed and Encrypted Keyword Search via Blockchain(通过区块链进行分布式加密关键字搜索)
鉴于前面好几篇都是可搜索加密与区块链结合相关的论文,可以发现结合的点大致差不多,故从此篇开始,我会精简论文笔记内容,抓主要部分或可能有用的地方记录,以便节约阅读时间和减少工作量。
与前面不同的是,本篇论文提出了一种与分布式网络中加密搜索无缝结合的协议,来解决分布式场景中实际的威胁设想(如恶意节点破坏搜索结果等),以及增强整个系统的鲁棒性。并且,在节点加入网络开始就对其进行监控管理,它将通过可验证的搜索查询得到证明和持续监控,且每个证明的结果通过标准的基于quorum的投票协议确定(重点)。最后,记录在区块链上作为可信节点的共识视图。
主要贡献:
- 1)提出了一种分布式加密搜索协议,该协议保证了在明文分布式关键字搜索中数据和查询的保密性,又保证了vertical partition的效率。
- 2)设计了一种新系统的鲁棒性协议,允许新节点从加入系统的那一刻起到被验证和持续监控。通过谨慎的利用可验证的加密搜索查询,它在区块链上维护一个可信节点列表和现成的基于quorum的投票协议。
- 3)最后对该协议进行评估,包括隐私性和鲁棒性了,评估展示了加密搜索的效率,并报告了不同规模分布式网络的区块链开销。
一、写作背景
论文名称 | 作者 / 单位 | 来源 | 年份 | 简要内容 |
---|---|---|---|---|
Hardening Distributed and Encrypted Keyword Search via Blockchain | Chengjun Cai et.al (City University of *) | IEEE Symposium on Privacy-Aware Computing | 2017 | 本文提出了一种与分布式网络结合的加密搜索协议,且能杜绝恶意节点破坏搜索结果、增强系统的鲁棒性等优势。 |
从本文可知,在完全的分布式存储数据系统中,通过分布式哈希表、可搜索加密和关键字搜索集成的协议允许网络中的节点搜索加密分布式的数据,但是该协议没有解决实际的威胁设想。例如,恶意节点会破坏搜索结果,他们可能会返回部分或虚假的结果,以节省它们的资源消耗,且随着网络的增长很容易渗透到系统中,即使用MAC和可验证数据结构等原语也很难保证整个系统的鲁棒性。另外,一个关键字匹配的文件列表可能被分到不同区域的节点,搜索请求将转发到多个不同的节点,而客户端可能会进一步参与跟踪每个关键字的分区索引位置,故这些所有的开销也都可能削弱分布式系统的性能。
因此,作者考虑使用区块链为一组分布式节点提供验证新节点的能力,并以确定的方式标记链上的损坏节点。通过验证来自客户端和该节点的搜索令牌、结果和证明,从其他节点收集到的大多数投票决定了该节点的可信度。诚实的节点被记录在链上,此前可以信任的恶意节点将在链上标记为无效。(本篇论文并不是将密文数据和索引上链,而是用区块链存储每个节点的可信度或是信誉值等信息)
二、 主要内容
如下图,作者提出的一种没有*控制的存储平台,由多个分布式的节点构成。
这些节点通过低成本为用户提供加密存储和关键字搜索服务,以保证数据的隐私和功能。首先,客户端建立一个加密文件的索引,将其上传至网络。为了之后的节点认证和监控,它与单个关键字令牌的搜索结果的承诺也被附加到索引分区,其中加密索引是基于一个标准的分布式哈希表(Distributed Hash Table,DHT)进行分区,该表表示每个节点加密的关键字令牌的范围。然后,客户端根据查询关键字生成搜索令牌,并通过DHT表转发到目标节点,目标节点在加密索引分区上处理这个令牌,并返回结果,即匹配文件的id。此过程的节点对关键字和文件的内容一无所知。
进一步,通过区块链建立可信节点共识视图的协议。从节点加入系统开始,它将通过基于quorum的投票协议[1]进行验证,并通过可验证的搜索查询进行持续监控。
[1] 基于quorum的投票协议原理:在分布式系统中,每个节点都有可能保存一份数据副本,并给每个数据副本都赋予一票。假设系统一共有 V V V个数据副本,则总票数为 V V V。每个读和写操作必须要获得读票数(完成读操作所需读取的最小副本数,read quorum, V ( r ) V(r) V(r))或写票数(完成写操作所需要读取的最小副本数write quorum, V ( w ) V(w) V(w))才能对数据进行读或写。且票数需要遵循以下规则:
- V r + V w > V V_r+V_w > V Vr+Vw>V
- V w > V 2 V_w > \frac V2 Vw>2V
第一条规则保证了一个数据不会被同时读和写。当请求一个写操作时,它需要得到 V ( w ) V(w) V(w)读票数,而剩下的票数为 V − V ( w ) < V ( r ) V-V(w) < V(r) V−V(w)<V(r),因此不再允许读操作。请求读操作时也同理;此外保证了强一致性,即写操作与读操作之间有重叠,这就保证了至少有一个读操作可以读到最新数据。
第二条规则保证了数据的串行化修改,即同一个数据不能同时被两个写操作并发修改。
因此,基于quorum的投票协议可以保证数据读写的正确性,以及同一时刻一份数据的多份副本只能用于读或用于写,而不能同时被超过两个访问对象并发读写。
引用自https://www.sczyh30.com/posts/Architecture/quorum-based-voting-for-replica-control/
可搜索加密基本原理:加密算法(encryption)、令牌生成算法(token generation)、搜索算法(search)和更新算法(update)。
- 1)加密算法:输入密钥 K K K和文件集合 F F F,输出密文 C C C和加密的搜索索引 I I I。
- 2)令牌生成算法:输入密钥 K K K和关键字,输出搜索令牌 t t t。
- 3)搜索算法:输入搜索令牌 t t t,输出匹配的加密文件集合 R R R。
- 4)更新算法:输入密钥 K K K和新文件 f f f,输出更新令牌 t ′ t^{'} t′和更新索引 I ′ I^{'} I′。(若方案有更新算法,则被称为动态SE方案)
2.1 基本设计
本文提出了一个用于加密和分布式关键字搜索的基本协议,该协议对用户透明,保护文件和查询关键字的Confidentiality。
在分布式系统中,需要跨多个节点进行划分,一般有两种分区策略,即水平分区和垂直分区。
- 水平分区:索引是通过文件标识符空间或通过索引中的倒排列表进行平均划分。这种策略在数据局部性上有好处,但在搜索过程中会引入大量的通信开销。因为查询需要发送到所有的节点,会在全球分布式系统中导致长时间的查询延迟;
- 垂直分区:通过关键字空间对索引进行分区,根据关键字在DHT中的哈希值,将关键字的倒排列表分配给目标节点。该策略使网络中的节点利用标准DHT路由来最小化给定查询的通信成本,即 O ( l o g ( N ) ) O(log(N)) O(log(N)),其中N是节点数。
协议:为了使节点能够向客户端提供加密关键字搜索功能,客户端必须从文件集中构建一个加密索引,并将索引上传至网络进行分区,如算法1所示。
2.2 区块链实现鲁棒性和加密搜索
本文提出的协议是基于可验证的SE和基于quorum的投票机制,它确保在区块链上记录一个不可变和可跟踪的可信节点列表,设计目标是使分布式节点能够共同维护区块链,而区块链主动提供系统中可信节点的共识状态。
为此,首先对每个倒排列表预先构建承诺,客户端可以认证某个节点的搜索结果是否正确。之后,包含搜索令牌、结果和承诺的消息被签名,并从客户端广播到网络。在返回结果和承诺之前,这样的消息也被签名并从上述节点广播到网络进行认证。为了使节点能够共同执行认证,系统中的每个节点将会验证来自客户端和目标节点的消息,并生成一个发送给矿工节点的投票。根据基于quorum的投票协议原理,该矿工节点可以生成一个表示认证结果的区块。如果大多数节点确认这个节点是可信的,它将记录在区块链上,否则,它将被移除。
-
1)区块的定义:通常,区块包括投票信息和经过验证的节点信息,这些信息用于为系统中部署的可信节点提供共识和可跟踪的视图。
如下图,定义了服务中的主体,包括区块标识符、时间戳、被验证节点的名称(即公钥)、该节点上的操作、指定的DHT范围、从协议收集的选票,以及该区块的签名。
具体而言,JOIN和REMOVE表示该区块的使用情况,即向系统添加一个新节点或从系统中删除一个现有节点。同时记录被认证节点的吓一跳和DHT中指定的范围,以便其他节点同步路由表。
如下图,定义了每次投票的内容,包括时间戳、对被认证节点的相应操作、对认证结果的投票、被认证节点的公钥、投票节点签名的投票。(另外,基于区块链的数据库系统[2]也采用了投票机制,但它用于数据读写的一致性,投票不记录在链上。)
- 2)节点认证:核心思想是利用区块链来维护所有受信任节点的共识状态。如下图,给出了详细的步骤。
如下图所示,只要系统中的主要节点接受操作(JOIN或REMOVE),该信息就会在区块链中得到确认。节点有动力称为矿工节点,因为它们可以从服务费中获得利润。
- 3)节点加入和移除:基于该协议,可以对新加入的节点进行验证,同时可以将现有可能受到威胁的节点从网络中移除。节点加入系统需要进行两个步骤,即引导和认证。
- 引导:现有节点向新节点发送邀请,新节点从预定义的创世区块引导并就网络最新状态达成共识。同时,该节点为新节点指定一个临时范围并更新其本地DHT路由表。
- 认证:该节点将与临时范围匹配的令牌转发给新节点以启动协议。一旦新节点通过认证,其信息被记录在区块链上。否则,拒绝,并恢复该节点的本地路由表。在节点移除方面,可以有效检测并踢出恶意节点。搜索令牌、结果和承诺也可以广播以证明恶意节点,并从中删除。
- 4)鲁棒性分析:此部分考虑三种恶意攻击,并表明了如何防御它们。
- 通过添加恶意节点进行攻击:攻击者试图插入大量恶意节点,从而破坏系统中的搜索协议。一方面,因为承诺标签和返回的结果不匹配,这些节点在协议中会失败;另一方面,发送到新节点的查询令牌是通过邀请进行处理,故还未记录在区块链上,因此不会被网络中的其他节点知道。
- 通过破坏现有节点进行攻击:可以通过完整性检测和证明过程来解决被攻击者公平的风险,另外可以假设记录在共识状态上的大多数节点没有受到损坏的情况下解决被入侵的节点返回错误的结果,或发送虚假投票等问题。
- 冒充攻击:攻击者伪装邀请节点,试图阻止新节点加入系统。由于新节点在引导程序中,需要从创世区块验证区块链,达成共识。因此,该节点额能够检测邀请节点是否有效。
- 5)激励模型:由于搜索服务需要付费,新加入节点需要交押金,这些收益都可分配给诚实执行搜索的节点和认证。(另外,要求用户平均贡献挖矿奖励,这是作者未来考虑的工作,并未实现)
2.3 实验分析
分别对加密关键字搜索的开销和区块链的开销进行了分析,这里就不再阐述,可以看原文。
三、总结与思考
本文为加密和分布式存储平台提供了一种安全且鲁棒性强的关键字搜索服务。首先,提出了一种结合SE和基于DHT的关键字搜索的基本协议,加密索引被垂直分区,同时保持用户透明度。为了解决可能故意返回错误结果的恶意节点,引入一种协议(一组节点)来证明节点,并通过搜索查询持续监控他们。此外,区块链拉存储证明结果,以维护可信节点的共识视图。
本文发表于2017年,故当时考虑用区块链的是存储对节点的可信度的一个证明结果(存证),其加密索引和原文件都还是与传统存储(分布式存储)类似。
- 利用区块链能保证这个证明结果是可信的,提高安全性,但是区块链的效率还是值得考虑,作者只验证了其区块链的开销。
- 使用区块链后并未与其他方案对比效率、开销和安全性等,无法判断是否有优势?
- 本篇论文是主要考虑节点可信度存证问题,之前的论文是考虑公平支付问题,这有很大区别。