基于混淆的公钥可搜索加密方案
扫描二维码
随时随地手机看文章
0 引 言
随着云计算的快速发展,众多用户已经把本地数据放到云服务器上,以节省本地的存储空间和系统维护费用。但由于数据脱离了用户的物理控制而存储在云端,因此云端服务器管理员和非法用户(如黑客等不具有访问权限的用户)可以尝试通过访问数据来获取数据所包含的信息,造成数据信息和用户隐私的泄露 [1]。为了保证云服务器上数据的私密性, 用户先用已有的加密体制对数据加密后再放到云服务器上。加密后,用户在云服务器中检索特定文件的难度大大增加。如果把文件下载到本地解密后再检索,会为用户增加巨大的负担。为了解决这一问题,密码学研究者提出可搜索加密技术, 包括对称可搜索加密方案 [2-9]、公钥可搜索加密方案 [10-14] 及增加特殊功能的可搜索加密方案 [15-17]。1996 年,Goldreich O 和 Ostrovsky R 首次提出隐藏用户访问模式的密文搜索技术, 但是该技术要求用户和服务器端进行多重对数轮交互,这种方法在实际应用中的效率并不高 [18]。2000 年,Song D, Wagner D 和 Perrig A 提出一种基于对称算法的可搜索加密方案机制,用户进行搜索时,生成关键字的密文发送给服务器, 通过将密文关键字和密文文件进行扫描比对,服务器可以确认关键字是否存在 [2]。在此之后,许多研究者提出支持多个关键字搜索的对称可搜索加密方案,模糊关键字搜索方案等。2004 年,Boneh D 等人提出基于公钥密码学算法的可搜索加密机制 [10],Golle 等人首次提出基于多关键字的可搜索加密概念 [11],为后来的研究者通过公钥密码学实现更加多样的可搜索加密方案提供指导。
2001 年,Barak 等人开始正式研究程序的混淆,希望能够实现输入一个程序,输出另一个程序并且该程序与原始程序功能相同却可以隐藏原始程序工作方式的目标。同时他们给出两个混淆的概念,分别是虚拟黑盒混淆和不可区分混淆, 遗憾的是他们并未给出如何实现 [19]。直到 2013 年,Gary 等人给出第一个对于一般程序的有效的不可区分混淆的候选方案。此方案由多线性拼图困难块(Multilinear Jigsaw Puzzle) 构造 [20],并且给出如何利用不可区分混淆来构造功能加密。随后很多学者给出利用不可区分混淆构造的其他方案。
公钥可搜索加密方案更适用于多用户体制以及不安全的网络环境。该方案无需发送者和接收者事先协商密钥,发送者可以直接使用对外公开的公钥对关键字加密。公钥可搜索加密方案普遍利用双线性对实现,虽然双线性对的特性使得一些支持更加复杂的搜索语句的方案得以发展,但双线性对的计算开销较大。利用不可区分混淆构造可搜索加密可以简化其算法,使方案更容易实现且更好地保护隐私。本文利用不可区分混淆器封装一个安全的加密算法及用户自己的私钥作为用户的公钥,安全的不可区分混淆器可有效保证方案的安全。
1 基础知识
1.1 不可区分混淆
作为一个新的密码学原语,不可区分混淆未来的应用极具吸引力。混淆的概念最初来源于计算机学科,之后回归到密码学。不可区分混淆是密码学中的一个重要工具,它可以更方便地实现算法,并具有很好的安全性。很多密码学研究学者应用不可区分混淆构造了许多密码学方案,包括版权和软件的保护、私钥加密模式转换为公钥加密模式、同态加密、证据加密、否定加密、功能加密、多方密钥交换等 [21-25]。
定义 1(不可区分混淆器)对于一个电路族{Cλ},一个同类 PPT(概率多项式时间图灵机)i 是不可区分混淆器, 如果满足以下条件 [20] :
(1)对于所有输入 x,安全参数 λ ∈ N,C ∈ Cλ,则有
1.2 公钥可搜索加密
公钥可搜索加密方案中最具有代表性的是由 Boneh 等提出的 PEKS 方案 [10],此方案允许文件或信息的发送者是任何可以获得公钥的人,但是生成陷门值必须使用接收者的私钥才能完成。
定义 2 一个非交互式公钥加密搜索体制包含如下四个概率多项式时间算法 [10] :
(1)初始化(Setup):输入安全参数 λ,输出密钥 k 和公钥 PK。
(2)公钥可搜索加密(PEKS):输入消息 m,关键字 w,利用公钥生成关于 m 和 w 的密文 C。
(3)限门(Trapdoor):输入密钥 k 和一个关键字 w,计算关于 w 的陷门值 τ。
(4)测试(Test):输入可搜索加密的一个陷门值 τ,如果满足搜索关系则输出密文文件 C,否则输出终止符号。
2 方案构造
2.1 初始化算法
输入安全参数 λ,系统生成 Bob 的私钥 k 和公钥 PK,公 钥 PK 是对图 1 Public Key 经过混淆后生成的程序,PK= i (Public Key)。
2.2 公钥可搜索加密算法
Alice 调用 Bob 的公钥 PK 对明文文件 m 和关键字 w 加密生成密文 C=(c,s1,s2)。Alice 将密文文件 C=(c,s1, s2)上传到云服务器供 Bob 搜索。
2.3 陷门生成算法
Bob 利用带密钥的哈希函数 H(k,· )对关键字 w 加密生成 τ。并将 τ 发送至云服务器,作为对关键字 w 的搜索请求 :
H(k,w)=τ
2.4 检测算法
当云服务器接收到 Bob 的搜索请求后,判断 s s τ 是否成立。若成立,则云服务器返回 c 给 Bob,Bob 收到 c 后用自身私钥 k 解密后得到明文文件 m ;若不成立,则输出终止符号。
3 正确性及安全性分析
(2)文件密文的安全性 :文件的安全性依赖于加密算法的安全性,因此为文件加密时需选用安全的加密算法。
(3)混淆器的安全性 :文献 [20] 中就有对不可区分混淆器安全性的描述,一个安全的不可区分混淆器可以确保混淆器中的数据不被泄漏。
(4)密钥和陷门信息的安全性 :密钥的安全性不仅依赖于密钥管理,更依赖于不可区分混淆器的安全性,如果 i是一个安全的不可区分混淆器,那么在混淆器中的密钥就是安全的且不会被泄露。陷门信息通过使用带密钥的 Hash 函数对关键字加密生成。根据 Hash 函数的性质,如果不知道密钥 k 则无法生成陷门信息。
(5)关键字的安全性 :每一个关键字先由随机数 r1,r2完成随机化,每加密一次都会换一次随机数,再经过不可区分混淆器后攻击者无法直接获取关键字的任何信息。
4 结 语
目前的公钥可搜索加密方案大多基于双线性对实现,由于其计算开销大、效率低、难以在实际中应用,所以找到一种不用双线性对且易实现的方案十分必要。本文利用不可区分混淆构造公钥可搜索加密方案以避免使用双线性对,使算法变得更简单。不足之处是目前不可区分混淆的效率并不高,此后应将提高不可区分混淆的效率作为研究重点。