摘要
最近由博内、迪克雷森佐、奥斯特洛夫斯基和波斯西亚诺提出的公钥加密与关键字搜索(PEKS)方案,使人们能够在不影响原始数据安全性的情况下搜索加密的关键字。在本文中,我们讨论了PEKS方案的三个重要问题,“刷新关键词”、“删除安全通道”和“处理多个关键词”,这是Bonehet没有考虑的。艾尔。他的论文。我们认为,当在PEKS方案中经常使用关键字时,必须小心,因为这种情况可能与PEKS的安全性相矛盾。然后我们指出了由于使用安全通道的原始PEKS方案的低效。我们通过构造一个消除安全信道的有效PEKS方案来解决这个问题。最后,我们提出了一种能够有效地加密多个关键字的PEKS方案。
1 介绍
1.1 基础概念
Boneh等人提出的公钥加密(PEKS)方案实现了以下场景。假设爱丽丝是一家银行的经理,她正在休假,离开工作岗位。她配备了一部智能手机,可以用来查看她的重要邮件,以防有需要她注意的紧急邮件。在这种情况下,爱丽丝应该能够选择她的重要电子邮件来阅读她的假期,但不是所有的。由于她的电子邮件的重要性,所有发送给她的电子邮件都将使用她的公钥进行加密。这确保了除了爱丽丝之外,没有人能够检索到发送给爱丽丝的电子邮件。为了使Alice能够选择她的重要电子邮件,她必须向服务器发送一个“活板门”,以便服务器可以使用这些信息来选择Alice想要阅读的电子邮件。例如,当Alice想要阅读任何“紧急”电子邮件时,将创建一个关键词“紧急”的活板门并发送到服务器。因此,每当有人,比如鲍勃,想给爱丽丝发送电子邮件时,他就需要使用标准的公钥加密方案来加密他的电子邮件,然后在生成的密文中附加一个或多个我们所说的“PEKS”
简而言之,PEKS提供了一种机制,允许Alice通过提供与关键字对应的活板门来提取包含特定关键字的电子邮件,而电子邮件服务器和除Alice之外的其他各方不了解任何关于电子邮件的任何其他信息。
1.2 相关工作和贡献
在文献中,有大量关于数据库数据隐私的研究工作。但是,如[6]中所述,PEKS与以前的解决方案的不同之处在于,服务器收集的数据来自第三方,而数据不是公开的,这就排除了公共信息检索(Pir)的解决方案。
与PEKS直接相关的论文很少。[6],Waters等人的[12]表明,基于双线性配对的PEKS方案可以用于构建加密和可搜索的审计日志。
我们注意到,尽管Boneh等人。关于实现PEKS的[6]解决方案很优雅,但是关于使用PEKS仍然存在一些重要的问题,这些问题在他们的论文中没有得到解决。这些问题如下。
1、为了使服务器能够对接收到的特定关键字的密文进行测试,Alice将向服务器提供一些活板门信息。PEKS确保,如果没有这些活板门信息,服务器就不会了解任何关于电子邮件类别的信息。此外,一个关键字的活板门不会透露任何关于任何其他关键字的类别。在实践中,该系统将在许多回合中被使用。在其当前的PEKS模型中,一个已经收到了关键字w的活板门的服务器可以存储活板门,并使用它来学习具有该类别的所有未来电子邮件。换句话说,PEKS的当前版本是一个一次性的系统。人们可能会认为服务器不能记住活板门,但这是一个非常严格的假设,在实践中不容易实现。本文没有具体说明如果服务器记住了与Alice发送的关键字相关的活板门信息会发生什么,也没有讨论对这种情况的保护措施。
2、[6]中的方案在Alice和电子邮件服务器之间使用安全(加密和身份验证的)通道。这当然不适用于某些应用程序,因为构建一个安全的通道通常是昂贵的。
3、在许多情况下,搜索将在多个关键字通过连接或析取逻辑连接。例如,我们会寻找一封包含“紧急”和/或“星期一”字样的电子邮件。然而,并没有讨论如何形式化多关键词搜索的概念,并有效地为多个关键词创建PEKS密文,以及在进行连接或析取搜索时必须谨慎。
本文对上述问题进行了讨论,并提出了可证明的安全解决方案,即去除安全通道,实现有效的多关键词加密。
2 准备工作
2.1 PEKS定义
在PEKS中,涉及三方,分别称为“发送方”、“接收方”和“服务器”。发送方是创建并发送加密关键字的一方,我们称之为“PEKS密文”。服务器是接收PEKS密文并在从接收器接收到活板门时执行搜索的一方。接收方是创建活板门并将其发送到服务器以查找它想要的数据的一方。接下来,我们回顾了在[6]中给出的PEKS的正式定义。
4.2.2
证明:
假设给出了运行时间以t0为界的攻击者B(q、G1、G2、ˆe、P、aP、bP、cP),其中q≥2k作为BDH问题的实例。B的任务是利用IND-CCA攻击者a的能力计算aP、bP和cP的BDH密钥ˆe(P,P)abc,该攻击者在运行时间t内进行qH1和qH2随机预测查询和qT活板门提取查询。B模拟IND-SCF-CKA游戏2的每个阶段如下。
模拟2-1
B设置Q=bP,X=cP,并选择两个随机的神谕H1和H2,这将很快被指定。均匀随机选择y∈ZZ∗q,计算y==。它返回(q、G1、G2、ˆe、P、H1、H2)作为一个公共参数,返回(Q、X)作为服务器的公钥。它还将将Y和Y分别作为接收器的公钥和私钥返回。