一、背景
在数据爆炸的当今社会,数据本地化已经不能满足用户业务需求,越来越多的数据需要被共享,因此越来越多的用户选择数据上云服务器。
然而,这会引入两个问题:一是云服务器大多都是第三方人员管理或者运维人员管理,二是大多数用户存储的数据总是以明文的方式出现。那么关于这部分未被加密的数据,云端的管理人员能够随意检查,更改,间接从服务器平台删除。一旦管理人员进行了这些恶意的操作,将导致一系列严重后果;如随意窥探用户的隐私信息,甚至恶意修改用户数据等,给用户带来了信息泄露和丢失的困扰。这意味着用户在云上上传的数据和信息越来越多,所带来的信息安全隐患就越来越大;如前段时间网络曝光的某公有云平台,私自窃取了用户的数据为己所用,投诉和协商无果后,已被告,一时也引起了不少的争议。另一方面,云平台可能会恶意的收集用户的行为习惯从中获取有用的分析数据,如分析某些平台的搜索数据,可以分析出一些商业价值的信息,这导致用户搜索的敏感信息泄露。
二、可搜索加密概述
为了解决上述提到的问题,用户所有的数据都可以密文的方式上传,这种存储方式降低了隐私泄露。但同时它也引入新的问题:比如,当云服务器有若干的密文数据时,他们怎么能找回本人的数据,而无需向终端输入任何有关该数据的明文内容。
可搜索加密技术就可以很好的应对这个问题。通过该技术,用户可先分别加密数据和数据标签,然后将加密后的数据与标签一同存储在云服务器上。当用户搜索包含字“KW”的文件时,他能够发送关于关键字的标签(也称为陷门的文件)到云服务器。云服务器将接纳到的关键词陷门与每一个加密文件的标签进行匹配。假如匹配成功,则该文件中包含的关键字。此时,服务器再将匹配的文件发送给用户,然后用户在本地进行解密即可。从安全性上说,云服务器除了有可能猜到任何两个搜索文件是否包含相同关键字的外,对其他信息不清楚。
总的来说,可搜索加密具有以下的安全性优势:
- 可证明安全:即不可信服务器仅仅通过密文不能获得有关明文的任何信息;
- 控制搜索:即不可信服务器不能在没有合法用户的认证下进行搜索;
- 隐藏查询:即用户向服务器发起有关一个关键字的询问然而却不必向服务器表明关键字是什么;
- 查询独立:即不可信服务器除了查询结果之外不能获得有关明文的任何信息。
三、一种可搜索加密算法的原理及实践
3.1 算法核心部分描述
文献[1]提出的可搜索加密方案的关键算法称为PAEKS,其伪代码实现如下:
PAEKS算法是基于决定性双线性 (Decisional BilinearDiffie-Hellman, DBDH)假设和修正线性决策(modified Decision Linear,mDLIN)假设,同时使用了双线性对运算增强了其安全性。
现假设用户A有一个开源的公共资源数据,A把存放于云服务器中,但A为了防止云服务器擅自恶意的盗取数据,或者收集其他用户的查询数据来分析用户的行为习惯,因此A需要对数据进行加密处理。
现假设用户B(可以是一个用户,也可以是一个群组)需要从A的公共数据库中查询数据,为了防止第三方盗取任何有用的数据信息,所以他们之间可以使用可搜索加密技术。首先密码系统给A、B颁发公私钥,私钥为A、B随机选择安全的大数,然后使用密码系统计算公钥,把公钥存放到公钥列表中,设A的公私钥对为(PKs,SKs),B的公私钥对为(PKr,SKr)。现A存放一个关键字为W的数据到云服务的,需要对关键字做如下计算:
然后存储C=(C1,C2)到关键列表,同时把数据加密存储。
当B想去A的数据库中查询时,为了防止被收集行为数据,所以B计算一个陷门
然后传输此陷门给云服务器。
云服务器拿到后,去依次验证云服务器存放的关键字密文,返回验证结果给B,验证流程如下:
等式满足时,则验证通过,证明此关键字密文就是B要查询的关键字。
3.2 代码实现及演示
本案例模拟了2个用户,一个用户产生关键字信息,另一个用户使用关键字去匹配查询。匹配成功后,返回其明文信息。具体包括以下主要流程:
1.密钥系统初始化
2.两个用户分别产生公私钥对。公钥后续加入公钥列表,私钥由用户自行秘密的保存
3.用户1选择信息nsfocus进行关键字的封装同时加密原信息,产生过程中使用了数据发布者的私钥、数据查询用户的公钥、关键信息数据进行计算。(此过程在本地客户端发生,生成后的签名、密文数据通过网络发生到云端)
4.用户2使用关键字nsfocus进行查询信息时,首先使用数据发布者的公钥与自己的私钥生成陷门。(此过程在本地客服端发生,将生成的陷门发生给云端服务器去作数据匹配验证)
5.云平台使用密码文匹配检索,验证成功后返回密文数据给数据查询者,此过程中不知用户的任何信息,不知道用户查询的具体信息。
6.效果如下
3.3 总结
可搜索加密技术的优势在前文已经提到过,它保障了用户的数据安全,而且在查询过程中是处于全密文状态,所以云服务器不知道用户的任何搜索行为,这抵抗了云服务器的监听用户隐私;同时,用户在发布数据时,生成的关键字信息时,是联合了数据接收者与数据本身产生的,所以有签名的功能在里面,这样也实现访问的权限控制,即数据不是任何人都可以查询的,抵抗了穷举攻击,即遍历数据集比对分析数据集的内容;此外,也防止了攻击者的恶意篡改数据,给用户返回诱导数据,如果被篡改后签名验证通不过,也不会被查询出。
但上述方案的不足也很明显,可以看到,每个文件提供给每个查询者时都需要单独生成一个关键字信息,这样就导致如果同一个文件要共享给一个群组时,就要生成若干关键字文件,这样不仅到处存储加大、难易管控,同时也大大的降低了验证的效率。那怎么解决这个问题呢?请听下回分解……
参考文献
[1] Huang Q,Li H.Anefficient public-key searchable encryption scheme secure against inside keywordguessing attacks[J]. Information Sciences, 2017, s 403–404:1-14.
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。