《Order-Revealing Encryption: New Constructions,Applications, and Lower Bounds》论文学习笔记
1.论文背景
研究表明,使用OPE保序加密方案的数据库非常容易受到“推理攻击(攻击者可以通过观察加密值之间的顺序或距离来推断原始值)”,在这片论文中考虑使用了ORE(Order-Revealing Encryption),它是对OPE的泛化,允许更强的安全性。
ORE加密方案是指从密文 (索引结构) 可以判断出明文大小, 但是密文 (索引结构) 不一定保序。
首先在小的消息空间上构建一个新的ORE方案,以实现ORE的“最佳可能”的安全概念。接下来,论文介绍了一种“域扩展”技术,并将其应用到小消息空间ORE中。虽然域扩展技术确实在安全性上造成了损失,但得到的ORE方案比所有现有的(无状态和非交互的)OPE和ORE方案更安全。最后,论文展示了如何使用它来构建一个有效的范围查询协议,它对Naveed等人的推理攻击具有鲁棒性。并且还给出了我们新的ORE方案的完整实现,不仅比现有的OPE方案更安全,而且速度更快:加密一个32位整数只需要55微秒,比现有的OPE方案快65倍多。
2.论文方案
并将加密函数分解为两个独立的函数:“左”加密函数和“右”加密函数。每个这些加密函数都接收一条消息和一个密钥,并分别输出一个“左”或一个“右”密文。
论文展示了当消息空间较小时,如何从对称原语有效地构建最好的ORE(以及更普遍的功能加密)。
Chenette 等人的方案如下:
他们使用伪随机函数构造出一个顺序可见加密方案,他们所构造的顺序可见加密方案不仅是可证明安全的, 而且具有很高的效率.。准确地说, Chenette 等人的顺序可见加密方案主要包括以下算法:
• Setup(1 λ ). 设 F : K × ([n] × {0, 1} n−1 ) → ZM 为一个安全的伪随机函数.。该算法以安全参数 λ 为输入,输出伪随机函数 F 的密钥 k, 则密钥 sk = k.
• Encrypt(sk, m). 设 m 的二进制表示为 m = b1b2 · · · bn, 加密算法加密消息为ui = F(k,(i, b1b2 · · · bi−1||0 n−i )) + bi mod M
• Compare(ct1, ct2). 算法以 ct1 = (u1, u2, · · · , un) 和 ct2 = (u′ 1, u′ 2, · · · , u′ n) (u1, u2, · · · , un,u ′ 1, u′ 2, · · · , u′ *n* ∈ Z*M*) 为输入, 令 i 为使得 ui≠u ′ i 的最小正整数。如果存在这样的 i 且满足 u ′ i = ui + 1 mod M,则输出 b = 1, 否则 b = 0。
从上述方案描述可以看出,Chenette 等人只使用了伪随机函数,使得方案具有很高的检索效率。但是,此方案将泄露不同数据的第一个不相同比特位,不能达到理想安全性。
特别是,我们的新的ORE方案是在块上操作的(其中一个块是一个位序列),而在我们的方案中,额外的泄漏是两个消息不同的第一个块的位置。例如,如果块是字节大小的(8位),那么本文的ORE方案只揭示了两个消息之间不同的第一个字节的索引,比Chenette 等人的方案提供了更高的安全性。
一个密文ct可以自然地分解为一个左密文ctL和一个右密文ctR。要比较两个密文,比较函数只需要一个密文的左密文和另一个密文的右密文。其中右密文具有语义安全的属性。数据库服务器只存储右密文(在数据库中按排序的顺序存储),要执行范围查询,客户端将提供与其范围对应的“左”密文。服务器可以像往常一样响应范围查询,因为可以在左右密码上下文之间进行比较。由于数据库转储只包含存储在服务器上的正确密文,因此确保了对离线推理攻击的健壮性,对消息的加密也是语义安全级别的。
通用ORE方案:
我们的特殊构造具有只有“左密文”才能与“右密文”相比较的特性。
①Small-Domain ORE Construction
上述ORE方案显示了大量的信息,即两个加密后的明文之间不同的第一个位的位置。在这项工作中,我们展示了如何构造一个只泄漏第一个不同的块的ORE方案,其中一个块是一个或多个位的集合。
假设明文空间N = poly(λ),将域中的每个元素x∈[N]与一个加密密钥kx关联起来。一个值y∈[N]的(右)密文由y和域中每个元素x∈[N]之间的比较输出结果cmp(x,y)的N位加密,其中值cmp(x,y)是在kx下加密的。值x的左密文只是加密密钥kx。给定kx和在kx下的cmp(x,y)的加密,计算器可以解密和学习到cmp(x,y)的比较位。
需要一种方法来让评估者确定哪些N个密文是在kx下加密的,而不学习x的值。为了确保这一点,我们在设置过程中在域[N]上采样一个随机排列π。然后根据π对右密文中的组件进行排列,对x的左加密包括排列后的位置π(x)。给定π(x),求值器学习要解密的正确密文中的哪个组件,但对x一无所知。
② DOMAIN EXTENSION FOR ORE
上述过程中明文空间仅仅是在多项式大小的,下面介绍怎么在大域中构建ORE方案。可以看作是上述的小域ORE方案和Chenette 等人的方案结合。将明文空间从d位扩展到dn位。
小域方案是除了密文外什么也不泄露,而这里泄露了两个密文之间不同的第一个块的索引l,泄露的值是
③加密范围查询
在我们的模型中,客户端在服务器上存储了一个加密的数据库。客户端可以更新数据库(例如,通过添加或删除记录),并对数据库发出范围查询。在范围查询中,客户端指定一个数字间隔,服务器通过返回底层消息在该间隔内的所有密文来响应。
加密范围查询一般方案:我们用一组算法来描述一个范围查询方案,其中每个算法都是客户端和服务器之间的一个单轮协议。在每个协议中,客户端总是无状态的,但服务器是有状态的——特别是,服务器的状态表示存储在服务器上的信息,以有效地响应客户端查询所需的信息,包括加密的数据库本身。
最初,客户端运行一个设置过程,该过程以值的明文数据库D作为输入,并输出一个密钥sk和一些表示加密数据库的令牌t。对于每个查询(范围查询、插入查询、删除查询),客户端使用密钥sk推导出表示其查询的令牌t,并将t发送给服务器。此令牌包含该查询的客户端输入的屏蔽版本。在输入查询令牌t时,服务器将处理该查询并更新其内部状态。在范围查询中,服务器还返回一个响应r,客户端使用该响应r来学习范围查询的答案。
基于上述ORE的范围查询方案:
服务器的加密数据库由每个值的右密文组成,按排序顺序存储。每个查询的令牌t由对查询值的左加密组成。