RJXB
软件学报
Journal of Software
1000-9825
软件学报编辑部
中国北京
rjxb-32-10-3266
10.13328/j.cnki.jos.006086
TP309
计算机网络与信息安全
Computer Networks and Information Security
医疗大数据隐私保护多关键词范围搜索方案
Range-based Multi-keyword Searchable Scheme with Privacy Protection in e-Healthcare Cloud Systems
张
明武
ZHANG
Ming-Wu
张明武 (1972-), 男, 博士, 教授, CCF高级会员, 博士生导师, 主要研究领域为应用密码学, 信息安全与隐私保护技术
csmwzhang@gmail.com
1
2
3
*
黄
嘉骏
HUANG
Jia-Jun
黄嘉骏 (1995-), 男, 硕士, 主要研究领域为信息安全
1
3
韩
亮
HARN
Lein
韩亮 (1955-), 男, 博士, 教授, 博士生导师, 主要研究领域为信息安全
4
1
湖北工业大学 计算机学院, 湖北 武汉 430068
School of Computer Science, Hubei University of Technology, Wuhan 430068, China
2
密码科学技术国家重点实验室, 北京 100878
State Key Laboratory of Cryptology, Beijing, 100878, China
3
桂林电子科技大学 计算机与信息安全学院, 广西 桂林 541004
School of Computer Science and Information Security, Guilin University of Electronic Technology, Guilin 541004, China
4
Department of Computer Science and Electrical Engineering, University of Missouri-Kansas City, Kansas 64110, USA
Department of Computer Science and Electrical Engineering, University of Missouri-Kansas City, Kansas 64110, USA
张明武, E-mail: csmwzhang@gmail.com
10
2021
32
10
3266
3282
22
3
2019
13
10
2019
13
5
2020
版权所有©《软件学报》编辑部2021
Copyright ©2021 Journal of Software. All rights reserved.
2021
随着医疗信息系统的急速发展,基于医疗云的信息系统将大量电子健康记录(EHRs)存储在医疗云系统中,利用医疗云强大的存储能力和计算能力对EHRs数据进行安全与统一的管理.尽管传统加密机制可以保证医疗数据在半诚实云服务器中的机密性,但对加密后的EHRs数据执行安全、快速、有效的范围搜索,仍是一个有待解决的关键问题.提出一种支持多关键词范围搜索的可搜索加密方案:利用向量积保持加密机制实现复杂查询结构的可搜索加密,可支持连接关键词查询、范围查询以及通配符的查询;通过随机化构建搜索索引和搜索陷门,实现搜索模式隐藏,达到搜索语句的隐私保护;采用矩阵哈达马积缩小所需密钥矩阵的维度.理论分析和实验结果表明:该方案在达到医疗数据隐私保证的同时,对用户的检索策略也进行了有效的隐私性保护,有效提高了检索效率,降低了创建索引及陷门所用时间,实现了多用户多文件下医疗数据的范围搜索能力.
With the rapid development of medical information systems, the information system based on medical clouds stores massive electronic health records (EHRs) in medical cloud systems and employs the powerful storage and computing capacity of medical clouds to manage EHRs in a safe and unified manner. Although the traditional encryption mechanism can protect the privacy of medical data in semi-honest cloud servers, it is still an open problem to perform safe and efficient range-based search for the encrypted EHRs. To address this problem, in this work, a range-based multi-keyword searchable scheme is proposed. It can implement searchable encryption of complex query structures with scalar-product preserving encryption and support the query of connection keywords, ranges, and wildcard characters. Furthermore, the indexes and trapdoors are created in a random manner to hide the search mode and protect the privacy of search statements. The Hadamard product is adopted to reduce the dimension of the required key matrix. Theoretical analysis and experimental results show that the scheme can efficiently protect the privacy users' search strategy while guaranteeing the privacy of medical data. This scheme improves the retrieval efficiency and reduces the time in index and trapdoor creation, achieving the range-based search of medical data in multi-user and multi-file medical environments.
隐私保护
搜索加密
非对称向量积加密
哈达马积
医疗云
privacy protection
searchable encryption
asymmetric scalar-product preserving encryption
Hadamard product
medical
国家自然科学基金
62072134
国家自然科学基金
U2001205
密码科学与技术国家重点实验室开放课题
广西自然科学基金
2019JJD170020
国家自然科学基金(62072134,U2001205);密码科学与技术国家重点实验室开放课题;广西自然科学基金(2019JJD170020)
National Natural Science Foundation of China
62072134
National Natural Science Foundation of China
U2001205
The Open Research Project of State Key Laboratory of Cryptology of China
Natural Science Foundation of Guangxi Province of China
2019JJD170020
National Natural Science Foundation of China (62072134, U2001205); The Open Research Project of State Key Laboratory of Cryptology of China; Natural Science Foundation of Guangxi Province of China (2019JJD170020)
近年来, 纸质病历在医疗系统中由于不方便储存和管理正在逐步被淘汰, 电子健康记录(electronic health records, 简称EHRs)应用越来越普及.对许多医院和医疗系统而言, 如何实现EHRs的有效管理、存储和高效检索, 是有待解决的主要问题之一.医疗云系统以其强大的存储能力和计算能力, 为EHRs计算和存储提供了有效的解决方案.将大量EHRs数据储存在云端, 可极大地减少医疗中心维护、计算和存储的开销.然而, 医疗云属于第三方商业公司外包服务, 存储在云端的医疗数据的隐私和安全风险可能会导致巨大的经济损失和社会信誉问题.因此, 研究实现敏感健康数据隐私保护条件下的安全存储与检索, 是目前重要的研究内容之一.
将EHRs数据加密后上传到云端, 当用户需要提取数据时再将其下载后解密, 似乎能够满足对于病人和医生对EHRs在云服务下隐私保护的需求.然而, EHRs数据加密后不再具有原有的可直接检索和访问特性, 当医疗机构需要检索医疗数据时, 无法直接在密文中分辨出所需的数据.在数据模型较小的情况下, 用户可以将所有密文数据下载至本地, 先解密后再在明文中搜索自己想要的数据.随着云端数据规模的急剧扩大, 医疗大数据也将以指数级的速度增长, 这种浪费大量时间开销与通信带宽的做法显然已不能满足实际需求, 也不利于精准的范围搜索.因此, 如何做到在医疗大数据中既确保EHRs数据隐私, 又能对加密后的海量EHRs数据进行快速且精准的多关键词搜索, 同时确保用户检索谓词的隐私, 是目前迫切需要解决的问题.
可搜索加密(searchable encryption, 简称SE)是一种能够使得用户对加密文件中某些关键词进行查询的密码技术, 不仅可以在密文上进行搜索, 而且还能够保护数据在半诚实医疗云中的安全性.Golle等人[1 ] 提出了可搜索加密机制, 将文件与其对应关键词绑定, 可实现密文搜索, 但不支持范围搜索; 文献[2 , 3 ]通过对加密搜索文件构建关键词索引的方式提高搜索效率, 但不能实现范围搜索.文献[4 ]基于Simhash的降维思想, 将文档关键词进行n -gram处理并得到Simhash指纹以实现模糊搜索.
考虑到医疗文件搜索特性, 需对加密后的医疗文件实现范围查询.文献[5 ]利用非对称向量积保持加密构建关键词索引, 并在生成索引向量时引入属性树的概念, 缩短构造索引向量的大小, 实现在精确搜索的同时, 具有比基于双线性对的可搜索加密更好的搜索效率.由于引入了属性树, 使得该方案只具有限制的范围精确搜索.
对称可搜索加密会依赖于安全信道, 为了克服该问题, Boneh等人[6 ] 首次提出了可搜索公钥加密: 数据拥有者建立文件关键字索引, 使用接收者公钥加密文件和关键字索引, 并上传到云服务器; 用户用自己的私钥生成待检索关键字的陷门并发送给云, 云服务器将加密的关键字索引与陷门进行匹配, 将搜索结果返回给用户.文献[7 ]提出了支持多关键词范围搜索的公钥可搜索加密, 将关键词放入合数阶群双线性运算中, 但搜索速度缓慢, 效率较低.
根据医疗信息系统多用户搜索实际情况, 以高效进行密文搜索的同时满足对多关键词搜索, 以及关键词内的范围精确搜索需求, 本文提出一种多关键词范围可搜索加密方案.主要贡献如下:
(1) 基于范围的多关键词精确搜索: 引入非对称向量积保持加密机制构建关键词索引, 支持具有复杂查询结构的连接查询功能, 支持基于范围的多关键词精确搜索;
(2) 降低系统初始化开销: 通常可搜索加密方案的关键词集合较大, 所创建的文件关键词的向量维度也很大, 因此在构建索引和陷门时, 使用的可逆矩阵也会很大, 这导致系统开销急剧增长.本文在构建索引和陷门时, 将文件关键词向量切分成长度相同的向量段, 并将向量段拼接成对应矩阵, 使得所需可逆矩阵减小, 极大地缩短了系统时间.在本文实验中, 当关键词总量n =1000时, 方案所用时间花销是文献[8 ]中方案的1/30左右.同时, 本方案对关键词量n 的剧烈增长有着较强的抵抗性, 符合大数据环境下, 关键词总量较大的电子医疗系统的要求;
(3) 降低构建索引和陷门时间: 构建索引和陷门时采用文档向量和矩阵乘法运算生成, 矩阵过大直接导致计算时间增多.本文将关键词向量通过分段构建成关键词矩阵, 将关键词矩阵与设计的可逆矩阵做哈达码积, 使得构建索引和陷门所需时间大为降低.
1
相关工作
Song等人[9 ] 首次提出了可搜索加密的概念, 采用将文档文件划分为若干词组, 对词组进行加密.在搜索阶段, 服务器需要扫描整个密文词组进行匹配, 但不能提供范围搜索.随后, Curtmola等人[10 ] 构造了加密的哈希表索引, 表中包含关键词陷门和关键词的文档标识集合.文献[11 , 12 ]提出了关键词排序搜索方案, 通过对相关度进行保序加密, 以实现对搜索结果的精确排序.
Li等人[13 ] 提出了关键词模糊匹配的搜索方案, 一定程度上实现了模糊范围搜索.文献[4 ]基于Simhash的降维思想, 将文档关键词做n -gram处理并得到Simhash指纹来实现模糊搜索.但模糊搜索方案中只考虑到关键词字符上的模糊处理, 实际应用中存在大量同义词现象, 不能输入关键词的所有同义词来查询所需文档, 导致搜索结果准确度较低.
为了实现精准的范围查询, Cao等人[14 ] 提出为每个文档创建文档向量, 并利用向量空间模型和安全KNN(K -nearest neighbour)思想, 实现多关键词的排序搜索.但是利用KNN实现范围查询需要很多次的重复迭代, 导致效率较低.文献[15 -17 ]引入了布隆过滤器以减少存储空间, 但对模糊集合中每个关键词都需要用多个哈希函数来将其插入到布隆过滤器中, 因此会增加计算开销.文献[18 , 19 ]实现了基于对称的可搜索加密, 不适用于医疗搜索模型下的多用户环境.
文献[6 ]提出的基于公钥的可搜索加密方案和文献[20 ]中提出的基于属性的可搜索加密方案可以扩展实现非对称密钥下的搜索加密, 但该方案不能实现范围搜索.Xu等人[21 ] 构造出第一个可以抵抗关键词猜测攻击并支持模糊关键字搜索的加密方案.Ma等人[22 ] 为移动医疗系统设计了一种无证书的可搜索加密, 以解决搜索加密系统的证书托管问题.为了提高搜索陷门的隐私性, Wang等人[23 ] 设计了支持多关键字的无需安全信道的可搜索公钥加密.Chen等人[24 ] 提出了支持关键字搜索的双服务器加密方案.上述方案不支持范围搜索能力.文献[25 -28 ]将关键词和文件映射到计算代价较高的合数阶群上并作双线性运算, 搜索效率较低.文献[29 ]提出了一种可以抵抗敏感信息泄露的加密, 以解决解密密钥或陷门在可能被泄露情况下的安全性, 但该方案不能提供搜索功能[30 ] .文献[31 ]提出一种医疗云中实现动态搜索能力的可搜索加密, 但其基于对称的可搜索加密, 实际应用中对密钥管理带来一定的复杂性.文献[32 ]提出一种可验证的基于词典的可搜索加密方案, 能够验证搜索结果的完备性.文献[33 ]提出一种达到前向安全的轻量级的可搜索公钥加密方案, 支持对工业物联网场景的安全数据搜索应用.
2
预备知识
2.1
符号说明
本文中, n 表示医疗数据文件中的关键词数, m 表示多关键词搜索索引数(m ≤n ).文中将使用小写符号a 、b 等表示标量, 大写符号I 、Q 等表示向量, 使用空心大写字符A 、B 表示矩阵.表 1 对本文中主要出现的符号进行了描述.
1
主要符号说明
Terms and notations
符号
说明
符号
说明
F
电子健康记录文件EHRs
TD S
向量\begin{document}$\vec S$\end{document} 对应的搜索陷门
CT
加密的EHRs文件
E key , D key
对称加密/解密算法
KEY
加密EHRs文件的对称密钥
SK ={s , P , M 1 , M 2 }
HC整体私钥
,
矩阵
划分二进制矩阵
W =(w 1 , w 2 , …, w n )
EHRs文件提取关键词集合
\begin{document}$\vec Q$\end{document}
所有位置为1的参考向量
\begin{document}$\hat I' = ({\hat I'_1}, {\hat I'_2}, ..., {\hat I'_m})$\end{document}
EHRs文件加密的搜索索引
h =n /l
划分向量段数
\begin{document}$\vec S$\end{document}
用户搜索向量
*
矩阵 和 的哈达马积
2.2
哈达马积
设两个m ×n 的矩阵 =[a ij ]与 =[b ij ](其中, i ∈[1, m ], j ∈[1, n ]), 两个矩阵的哈达马积(Hadamard product)记为 * , 哈达马积的元素定义为两个矩阵对应元素的乘积: ( * )ij =a ij b ij , 即 * =|a ij b ij |m ×n .值得注意的是, 只有大小完全相同的矩阵才能进行哈达马积运算.
2.3
非对称向量积保持加密
在非对称的向量积保持加密方案(asymmetric scalar-product preserving encryption, 简称APSE)[17 ] 中, 设E Q 和E T 分别为查询矢量和属性矢量的加密算法.设\begin{document}${I_i^{'}}$\end{document} 为\begin{document}${\vec I_i}$\end{document} 的加密矢量输出, Q' 是\begin{document}$\vec Q$\end{document} 的加密矢量输出, 即:
其中, 是n ×n 的可逆矩阵.该方案能够保持\begin{document}${\vec I_i}$\end{document} 和\begin{document}$\vec Q$\end{document} 的内积运算:
显然, ASPE方案可以实现查询矢量\begin{document}$\vec Q$\end{document} 和属性矢量\begin{document}${\vec I_i}$\end{document} 的内积.
3
问题描述
3.1
系统模型
本节中给出面向医疗云的范围可搜索加密方案系统模型, 如图 1 所示.系统中存在3个参与角色: 医疗中心HC(health center)、医疗云服务器CS(cloud server)和数据使用者DU(data user).
1
系统模型
System model
(1) 医疗中心HC: HC作为完全可信的机构, 拥有所有EHRs文件, 负责对系统进行初始化并产生系统公开参数, 选取密钥和加密算法, 生成自身私钥.同时, HC负责建立关键词索引, 将文件的关键词索引加密, 并将生成的文件密文和索引密文上传给医疗云服务器CS.医疗中心HC提供验证数据使用者DU的注册信息, 并将密钥发送给授权用户DU.值得注意的是, 系统初始化过程只做1次;
(2) 医疗云服务器CS: 负责数据处理, 包括数据存储、计算、搜索以及重加密密文的生成与发送.在本文模型中, EHRs被外包存储到医疗云服务器CS中, 要求它是一种半诚实的云服务器模型, 即“诚实且好奇(honest-but-curious)”的.虽然云服务器CS会如实执行用户的查询请求, 返回正确的检索结果, 但云服务器为了获得用户敏感数据去收集信息, 并窥探用户查询的内容以及加密EHRs文件的各种信息;
(3) 数据用户DU: 根据自身查询请求生成搜索矢量, 构建搜索陷门并向云服务器进行检索请求.
系统工作流程分为6个步骤.
1. 步骤1:系统初始化、用户注册与关键词提取.
可信HC在初始化阶段随机生成一个l ×h 比特位的二进制划分矩阵 ={1, 0}l ×h , 选取两个l ×l 的可逆矩阵1 和2 以及一个n 位全部值为1的二进制参考向量\begin{document}$\vec Q$\end{document} , 称为参考查询矢量.其中, l 是一个正整数且满足l |n , h 表示划分段数h =n /l .其中, 私钥是一个三元组SK ={ , M 1 , M 2 }.
为了保证密文的可搜索性, 可信HC在初始化阶段从所有EHRs文件F ={f 1 , f 2 , …, f m }中提取关键词集合:
\begin{document}
$
W=\left(w_{1}, w_{2}, \ldots, w_{n}\right).
$
\end{document}
2. 步骤2:EHRs文件加密.
设医疗中心HC拥有m 个医疗数据文件HER, F ={f 1 , f 2 , …, f m }.为了减小数据存储以及使用开销, HC选取对称加密方案ε (E , D )(如AES算法)对外包的EHRs文件加密成CT =(ct 1 , ct 2 , …, ct m ).
3. 步骤3:索引生成.
医疗中心HC根据提取的关键词集合W =(w 1 , w 2 , …, w n ), 为每个文件f i 加密密文的ct i 构建安全搜索索引\begin{document}${\hat I_i^{'}}, $\end{document} 最后以结构\begin{document}$({\hat I_i^{'}}||c{t_i})$\end{document} 的形式上传到云服务器CS中.
4. 步骤4:陷门的生成.
4.1 用户授权: 数据使用者DU在对医疗云上EHRs文件进行检索前, 需要预先在医疗中心HC处注册.HC根据DU注册信息决定是否授权.若DU得到授权, HC将私钥SK ={KEY , P , M 1 , M 2 }通过安全信道发送给DU;
4.2 陷门生成: 若DU得到搜索授权, DU根据公开的关键词集合W =(w 1 , w 2 , …, w n )构建搜索向量\begin{document}$\vec S, $\end{document} 随后由私钥SK ={P , M 1 , M 2 }和搜索向量\begin{document}$\vec S$\end{document} 生成搜索陷门TD S , 并发送给医疗云服务器CS.
5. 步骤5:陷门的匹配.
CS收到搜索陷门TD S 后, 将收到的搜索陷门TD S 与EHRs密文的安全索引\begin{document}${\hat I_i^{'}}$\end{document} 做搜索匹配运算, 将匹配的
EHRs密文发送回DU.
6. 步骤6:搜索确认和解密.
数据用户DU收到匹配EHRs密文之后, 通过解密算法\begin{document}${D_{ke{y_i}}}({f_i})$\end{document} 得到所要搜索的EHRs文件f i .
3.2
安全模型与设计目标
对于医疗系统, 在安全需求中, 我们主要考虑半诚实的医疗云服务器.
● 半诚实医疗云服务器.
选择外包的云服务器大多是半诚实的, 这类云服务器会“诚实地”按照协议中的各项流程执行协议, 也会按照索引标识符搜索对应的安全索引, 完成授权用户的搜索请求后, 也会如实返回结果.同时, 这类云服务器又是“好奇的”, 它会在执行协议过程中利用陷门、密文以及收集的其他信息窥探用户查询内容以及加密的EHRs文件信息, 例如用户在云服务器上查询的具体内容以及用户提交的查询请求等.
本文方案可以达到如下目标.
(1) 基于范围的多关键词精确搜索: 该方案能够针对多种关键词进行范围精确搜索, 进行高效率搜索, 能够在支持具有复杂查询结构的连接查询的同时, 能够进行支持通配符的查询;
(2) 查询隐私安全: 云服务器除了获取搜索结果的密文记录信息, 不能得到其他有关EHRs属性以及用户关键词查询的信息;
(3) 搜索模式隐藏: 搜索模式隐藏要求, 云服务器在执行一个搜索请求不是由“相同的关键词构造”时, 不能获得用户搜索请求有关的任何有用信息, 即云服务器无法区分两个不同的用户搜索请求;
(4) 高效性: 在相同关键词数量的情况下, 方案具有较高的效率, 适应于医疗大数据环境隐私保护下的范围搜索功能.
4
具体方案
4.1
属性矢量和查询矢量表示
本系统中, EHRs中的每条记录均具有预先设定的属性(例如病人姓名、年龄、性别、病种、病因等), 部分属性还都具有其子属性, 这些子属性共同构成该EHRs的关键词集.为了满足EHRs密文的可搜索性, 我们对这些属性编码成二进制矢量, 以进行搜索匹配运算.
我们采用独热编码技术(one-hot coding), 使用N 位状态寄存器来对N 个状态进行编码, 每个状态都有其独立的寄存器位, 并且在任意时候只有1位有效.
我们通过一个例子来详细说明本文属性矢量构建方式以及如何转化成属性矩阵.假定EHRs总共有4个属性(年龄、性别、疾病、地区), 其中, 年龄有100个属性值(1, 2, ..., 100), 性别有两个属性值(男, 女), 疾病假定有3个属性值(高血压, 高血糖, 高血脂), 地区假定有5个属性值(北京, 上海, 武汉, 深圳, 成都).那么对于该EHRs而言, 共有110个关键词.对于一位记录为(47, 女, 高血糖, 北京)患者的EHRs属性, 可由图 2 所示的二进制属性矢量进行转换和表示.
2
索引矢量和索引矩阵
Index vector and martix
当某医疗组织DU希望查询“高血压在武汉40多岁人群”中的患病情况时, 则该构造生成查询请求:
\begin{document}
$
\text { "年龄 }=4^{*} \mathrm{AND} \text { 疾病=高血压 } \mathrm{AND} \text { 地区=武汉". }
$
\end{document}
查询请求中对于性别并不关心, 该属性用通配符“*”代替, 查询中的范围查询“40多岁”(40~49岁之间)利用通配符“4*”来构造.上述查询的查询向量和查询矩阵转换构造如图 3 所示.
3
查询矢量与查询矩阵
Search vector and martix
本文第2节所述APSE方案, 实现了查询矢量\begin{document}$\vec Q$\end{document} 和属性矢量的内积.为实现更快的系统构建以及匹配效率, 将原有APSE方案由保证两个向量的内积拓展到两个矩阵的哈达码积, 其正确性在第4.8节中进行详细论证.本文实现查询矩阵构造方式如图 4 所示, 其范围搜索的方式如图 5 所示.为实现范围搜索, 只需在构建查询向量时对在范围内的属性位置1, 查询矩阵由差分矩阵处理后构建查询矩阵该属性值置0.因而与含有该属性的索引矩阵的哈达码积为0, 即能够实现对所有需要属性的范围搜索功能.
4
查询关键词矩阵构造
Construction of keyword search matrix
5
范围搜索匹配
Match for range search procedure
在图 3 所述实例中, 对于46岁女患者而言, 年龄46属性值为1, 性别属性值为01.按照所构建的查询矩阵年龄40~50范围内属性值均为0, 性别属性值均为0, 最后, 哈达码积计算得到的矩阵也为0矩阵, 即搜索成功.
若年龄为39岁的患者, 其年龄对应39属性值为1, 最终查询矩阵在年龄39上的属性值也为1, 哈达码积计算得到的矩阵在对应年龄39属性上的值不为0, 即哈达码积结果为非零矩阵.因此该病例并不会被本文算法搜索得到, 即该病例搜索失败.对于该例子而言, 只要属性符合我们的查询请求“(年龄=4*) AND (疾病=高血压) AND (地区=武汉)”的病例均会被成功搜索得到, 即实现了范围搜索能力.
设云医疗系统中共有m 个文件和n 个关键词, 接下来我们给出具体构造方案.
4.2
系统初始化Setup
可信健康中心HC对文件F 中提炼关键词总集(如年龄、地区、病种等), 记为W =(w 1 , w 2 , …, w n ), 生成l ×h 位二进制矩阵 ={1, 0}l ×h , 选取两个l ×l 的可逆矩阵1 和2 以及一个n 位初始值为1的二进制参考向量\begin{document}$\vec Q$\end{document} , 称为参考查询矢量.其中, l 是一个正整数且满足l |n , h 表示划分段数, h =n /l .
同时, 对于医疗数据EHRs文件F =(f 1 , f 2 , …, f m ), HC选择加密文件F 的对称加密算法.
最后, HC公开参数\begin{document}$pp = \{ n, \vec Q, W, \varepsilon (E, D)\} .$\end{document}
保存HC的系统私钥SK ={KEY , , M 1 , M 2 }.
4.3
EHRs文件加密Enc
医疗中心HC对所拥有的EHRs文件集合F =(f 1 , f 2 , …, f m ), 利用对称密钥KEY =(key 1 , key 2 , …, key m )调用对称加密算法, 将文件加密成CT =(ct 1 , ct 2 , …, ct m ).
4.4
索引生成Index SK (F )
HC对所有EHRs文件F 提炼关键词总集W =(w 1 , w 2 , …, w n ).不失一般性, 对第k 个病人的EHRs文件f k , 调用算法1生成关键词索引矩阵\begin{document}${\boldsymbol{\hat I}_k}.$\end{document}
将关键词总集每l 个划分为一段, 即:
\begin{document}
$
W_{1}=\left(w_{1}, w_{2}, \ldots, w_{l}\right), W_{2}=\left(w_{l+1}, w_{l+2}, \ldots, w_{2 l}\right), \ldots, W_{h}=\left(w_{h+1}, w_{h+2}, \ldots, w_{h+n}\right).
$
\end{document}
最后生成h =n /l 段, 关键词总集可以表示为W =(W 1 , W 2 , …, W h ).
算法1 . 索引生成算法.
输入: 关键词总集W =(w 1 , w 2 , …, w n ),
EHRs文件F =(f 1 , f 2 , …, f m ),
HC私钥中的{P , M 1 , M 2 };
输出: 文件索引\begin{document}$\boldsymbol{\hat I}'.$\end{document}
BEGIN:
FOR EACH x ∈[1, n ], w x ∈W ;
1. 对关键词总集W 进行划分, 生成矩阵W =(W 1 , W 2 , …, W h );
2. 对于k ∈[1, m ], f k ∈F ;
以W 和f k 关键字生成关键字矩阵:
FOR EACH j ∈[1, h ];
FOR EACH i ∈[1, l ];
IF 关键词存在;
该位置1;
ELSE
该位置0;
生成矩阵\begin{document}${\boldsymbol{\hat I}_k};$\end{document}
随机选取A =|ω i , j |l ×h ;
计算\begin{document}$\boldsymbol{I}_{k}^{\prime}=\boldsymbol{A}^{*} \hat{\boldsymbol{I}}_{k} $\end{document} ;
划分矩阵P 划分\begin{document}${\boldsymbol{\hat I}_k}$\end{document} 为\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j]$\end{document} 和\begin{document}${\boldsymbol{I}_{k, b}^{'}}[i, j]$\end{document} :
对P 的第i 行第j 列P [i , j ];
IF P [i , j ]=1;
\begin{document}$\boldsymbol{I}_{k, a}^{\prime}[i, j]+\boldsymbol{I}_{k, b}^{\prime}[i, j]=\boldsymbol{I}_{k}^{\prime}[i, j] ; $\end{document}
ELSE P [i , j ]=0;
\begin{document}$ \boldsymbol{I}_{k, a}^{\prime}[i, j]=\boldsymbol{I}_{k, b}^{\prime}[i, j]=\boldsymbol{I}_{k}^{\prime}[i, j];$\end{document}
END FOR ;
END FOR ;
根据{M 1 , M 2 }计算: \begin{document}${\hat I_k^{'}} = \{ {\boldsymbol{M}_1}{\boldsymbol{I}_{k, a}^{'}}, {\boldsymbol{M}_2}{\boldsymbol{I}_{k, b}^{'}}\} $\end{document}
END ;
对文件f k , 用\begin{document}${\boldsymbol{I}_k^{'}}[i, j]$\end{document} 表示第i 行第j 列关键字是否存在(i ∈[1, l ], j ∈[1, h ]): 若\begin{document}${\boldsymbol{I}_k^{'}}[i, j] = 1, $\end{document} 则对应位置的关键字存在; 若\begin{document}${\boldsymbol{I}_k^{'}}[i, j] = 0, $\end{document} 则对应的第i 行第j 列位置的关键字不存在.将第k 个EHRs文件具有的关键词属性通过该方式表示成为l ×h 的(0, 1)矩阵\begin{document}${\boldsymbol{\hat I}_k}.$\end{document}
HC选取随机矩阵A =[ω i , j ]i =1, ..., l , j =1, ..., h , 计算A 和索引矩阵\begin{document}${\boldsymbol{\hat I}_k}$\end{document} 的哈达马积, 即\begin{document}${\boldsymbol{I}_k^{'}} = \boldsymbol{A}*{\boldsymbol{\hat I}_k}, $\end{document} 其中, ω i , j ≠0.令P [i , j ]表示二进制矩阵P 的第i 行第j 列, 对于(i ∈[1, l ], j ∈[1, h ]): 若P [i , j ]=1, 则将\begin{document}${\boldsymbol{I}_k^{'}}[i, j]$\end{document} 随机划分成\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j]$\end{document} 和\begin{document}${\boldsymbol{I}_{k, b}^{'}}[i, j], $\end{document} 且满足\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j] + {\boldsymbol{I}_{k, b}^{'}}[i, j] = {I_k^{'}}[i, j];$\end{document} 若P [i , j ]=0, 则置\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j] = {\boldsymbol{I}_{k, b}^{'}}[i, j] = {I_k^{'}}[i, j]$\end{document} 构造方法如图 6 所示.
6
索引矩阵的划分
Division of index matrix
利用{M 2 }生成加密索引矩阵\begin{document}${\boldsymbol{\hat I}_k^{'}}:{\hat I_k^{'}} = \{ {\boldsymbol{M}_1}{\boldsymbol{I}_{k, a}^{'}}, {\boldsymbol{M}_2}{\boldsymbol{I}_{k, b}^{'}}\} .$\end{document}
最后, 将\begin{document}$(\hat I'||CT)$\end{document} 上传至云服务器CS.
4.5
搜索陷门生成
4.5.1
搜索向量构造
数据使用者DU要搜索和访问云服务器CS上加密EHRs文件时, 根据关键词信息, 在构建搜索向量\begin{document}$\vec S$\end{document} 时, 对于包含的关键词, 将其置1, 构建差分搜索向量\begin{document}$\vec S'$\end{document} 在该位置0.对本方案, 匹配算法4能够搜索到所需文件.
例如, 搜索年龄在20~49岁、患有高血压的男性患者的病历, 如图 7 所示.医疗组织由该方法构建搜索向量, 在文件索引和搜索陷门匹配阶段, 以该例具体分析如何实现范围搜索.
7
构造实例: 查询向量“年龄在20~49岁、患有高血压的男性病人”
Construction instance: search vector with "male, hypertension, age between 20 and 49"
4.5.2
陷门TrapdoorSK (S)生成
DU向医疗中心HC请求搜索授权, 医疗中心HC根据授权规则决定是否授权.数据使用者DU获得了授权后, HC通过安全信道将密钥SK发送给DU, DU执行以下步骤获得搜索陷门TD S (如算法2所示).
1. DU根据搜索向量\begin{document}$\vec{S} $\end{document} 利用参考向量\begin{document}$\vec{Q} $\end{document} 计算搜索差分向量\begin{document}$\overrightarrow{S^{\prime}}=\vec{Q}-\vec{S} $\end{document} ;
2. DU将\begin{document}$\overrightarrow{S^{\prime}} $\end{document} 进行划分, 即\begin{document}$\vec{S}_{1}^{\prime}=\left(s_{1}^{\prime}, s_{2}^{\prime}, \ldots, s_{l}^{\prime}\right), \vec{S}_{2}^{\prime}=\left(s_{l+1}^{\prime}, \ldots, s_{2 l}^{\prime}\right), \ldots, \vec{S}_{n / l}^{\prime} $\end{document} 共h 段, 搜索差分向量表示为
\begin{document}$\boldsymbol{S} = {({\vec S_1^{'}}, {\vec S_2^{'}}, ..., {\vec S_h^{'}})^T}.$\end{document}
同样方式将S 排列为l ×h 的矩阵\begin{document}$\hat{\boldsymbol{S}};$\end{document}
3. 用\begin{document}$\hat{\boldsymbol{S}}[i, j]$\end{document} 表示第i 行第j 列是否为本次需要搜索的关键词(i ∈[1, l ], j ∈[1, h ]): 若\begin{document}$\hat{\boldsymbol{S}}[i, j]=1$\end{document} , 则对应第i 行第j 列位置的关键字是不需要搜索的; 若\begin{document}$\hat{\boldsymbol{S}}[i, j]=0$\end{document} 则对应的第i 行第j 列位置的关键字是需要搜索的.最后输出差分搜索矩阵\begin{document}$\hat{\boldsymbol{S}} $\end{document} ;
4. DU选取随机矩阵B =|τ i , j |l ×h , 计算矩阵B 与差分搜索矩阵\begin{document}$\hat{\boldsymbol{S}}$\end{document} 的哈达马积, 即\begin{document}$\hat{\boldsymbol{S}}' = \boldsymbol{B}*\hat{\boldsymbol{S}}.$\end{document} 这里, τ i , j ≠0.随后, 根据收到的密钥SK 构造搜索陷门.令P [i , j ]表示二进制矩阵P 的第i 行第j 列, 对(i ∈[1, l ], j ∈[1, h ]): 若P [i , j ]=1, 将\begin{document}$\hat{\boldsymbol{S}}[i, j]$\end{document} 划分为\begin{document}${\hat{\boldsymbol{S}}_a}[i, j]$\end{document} 和\begin{document}${\hat{\boldsymbol{S}}_b}[i, j], $\end{document} 且满足\begin{document}$\hat{\boldsymbol{S}}[i, j] = {\hat{\boldsymbol{S}}_a}[i, j] = {\hat{\boldsymbol{S}}_b}[i, j];$\end{document} 若P [i , j ]=0, 则将\begin{document}$\hat{\boldsymbol{S}}[i, j]$\end{document} 置为\begin{document}$\hat{\boldsymbol{S}}[i, j] = {\hat{\boldsymbol{S}}_a}[i, j] + {\hat{\boldsymbol{S}}_b}[i, j].$\end{document} 结合{M 1 , M 2 }生成陷门TD S , \begin{document}$T{D_S} = \{ \boldsymbol{M}_1^{ - 1}{\hat{\boldsymbol{S}}_a}, \boldsymbol{M}_2^{ - 1}{\hat{\boldsymbol{S}}_b}\} ;$\end{document}
5. DU将搜索陷门TD S 发送给云服务器CS请求搜索.
算法2 . 陷门生成算法.
输入: 搜索向量\begin{document}$\vec S, $\end{document} 参考向量\begin{document}$\vec Q, $\end{document} HC私钥中的{P , M 1 , M 2 };
输出: 搜索陷门TD S .
开始:
1. 计算搜索差分向量\begin{document}$ \vec{S}^{\prime}=\vec{Q}-\vec{S}$\end{document} ;
2. 对于搜索差分向量\begin{document}$\vec{S}^{\prime}$\end{document}
将\begin{document}$\vec S'$\end{document} 构建成矩阵\begin{document}$\boldsymbol{S} = {({\vec s'_1}, {\vec s'_2}, ..., {\vec s'_h})^T}$\end{document}
得到差分搜索矩阵\begin{document}$\hat{\boldsymbol{S}};$\end{document}
FOR EACH j ∈[1, h ];
FOR EACH i ∈[1, l ];
选取随机矩阵B =|τ i , j |l ×h ;
计算\begin{document}$ \boldsymbol{S}' = \boldsymbol{B}*\hat{\boldsymbol{S}};$\end{document}
划分矩阵P 将矩阵\begin{document}$\hat S$\end{document} 划分为\begin{document}${\hat{\boldsymbol{S}}_a}[i, j]$\end{document} 和\begin{document}${\hat{\boldsymbol{S}}_b}[i, j]:$\end{document}
对于P 的第i 行第j 列P [i , j ];
IF P [i , j ]=1;
\begin{document}$ \hat{\boldsymbol{S}}[i, j] = {\hat{\boldsymbol{S}}_a}[i, j] = {\hat{\boldsymbol{S}}_b}[i, j];$\end{document}
ELSE P [i , j ]=0;
\begin{document}$\hat{\boldsymbol{S}}[i, j] = {\hat{\boldsymbol{S}}_a}[i, j] + {\hat{\boldsymbol{S}}_b}[i, j]; $\end{document}
END FOR ;
END FOR;
3. 计算: \begin{document}$T{D_S} = \{\boldsymbol{M} _1^{ - 1}{\hat{\boldsymbol{S}}_a}, \boldsymbol{M}_2^{ - 1}{\hat{\boldsymbol{S}}_b}\} ; $\end{document}
END
4.6
索引与陷门匹配\begin{document}${Query}\left(T D_{S}, \hat{{I}}^{\prime}\right) $\end{document}
云服务器CS执行匹配查询, 以索引矩阵\begin{document}$\boldsymbol{\hat I}'$\end{document} 和搜索陷门TD S 为输入, 计算:
\begin{document}$\hat{I}^{\prime *} T D_{S}=\left\{\boldsymbol{M}_{1} \hat{\boldsymbol{I}}_{a}^{\prime}, \boldsymbol{M}_{2} \hat{\boldsymbol{I}}_{b}^{\prime}\right\}^{*}\left\{\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right\}=\left(\boldsymbol{M}_{1} \hat{\boldsymbol{I}}_{a}^{\prime}\right)^{*}\left(\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}\right)+\left(\boldsymbol{M}_{2} \hat{\boldsymbol{I}}_{b}^{\prime}\right)^{*}\left(\boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right)=\hat{\boldsymbol{I}}_{a}^{\prime} * \hat{\boldsymbol{S}}_{a}+\hat{\boldsymbol{I}}_{b}^{\prime} * \hat{\boldsymbol{S}}_{b}, $\end{document}
其中, “*”表示两个矩阵的哈达马积.
当且仅当计算所得的矩阵为0矩阵时, 云服务器CS才将对应密文CT' 发送给DU.
注解1:
(1) 根据本方案可知: 对不需要的搜索关键词, 其搜索差分矩阵在该位置1, 一旦某文件在该关键词上的值也为1时, 该文件的索引和此次搜索陷门进行匹配计算的矩阵不为0矩阵, 对于包含不需要关键词的文件将不会被检索;
(2) 对于包含需要的关键词、不含不需检索关键词的文件, 可由通配符描述要搜索文件时, 根据独热编码原理, 将通配符代表位置的关键词均置1, 即搜索差分矩阵在这些关键词的值均为0.即: 若某文件索引该位置值为1, 该文件的索引和此次搜索陷门计算的矩阵也为0矩阵, 即该文件仍然会被搜索得到;
(3) 由于构建的文件索引和搜索陷门中包含文件的所有属性, 只需将搜索向量中需要搜索的关键词置1, 就能实现范围搜索.
4.7
密文解密
DU收到匹配的密文ct i 后, 使用对称解密算法ε (E , D )和相应的解密密钥key i 将ct i 解密成所需要的EHRs文件f i .
4
方案正确性
为描述检索匹配算法的正确性, 用一个实例来验证陷门匹配的正确性.假定l =3, h =4, 私钥中二进制矩阵:
\begin{document}$\boldsymbol{P} = \left[ {\begin{array}{*{20}{c}}
1&0&0&1 \\
0&0&1&1 \\
1&0&1&0
\end{array}} \right].$\end{document}
对于某个需要搜索的文件f k , 其关键词向量假定为\begin{document}$\vec I = [101001010011];$\end{document}
用户搜索向量为\begin{document}$\vec S = [101001010111];$\end{document}
那么, 搜索差分向量\begin{document}$\vec Q - \vec S = [010110101000];$\end{document}
可以得到, \begin{document}$\vec I \cdot (\vec Q - \vec S)$\end{document} 向量内积为0, 此用户可能成功检索到文件f .
根据本方案, \begin{document}$I' = A*\hat I, $\end{document} 建立的关键词矩阵为
\begin{document}$\boldsymbol{I}' = \left[ {\begin{array}{*{20}{c}}
{{\omega _{1, 1}}}&0&{{\omega _{1, 3}}}&0 \\
0&{{\omega _{2, 1}}}&0&{{\omega _{2, 4}}} \\
0&0&{{\omega _{3, 3}}}&{{\omega _{3, 4}}}
\end{array}} \right], $\end{document}
则以私钥P 通过索引生成算法Index SK (F )划分出的\begin{document}$ {\boldsymbol{I}}^{\prime }_{a}、{\boldsymbol{I}}^{\prime }_{b}$\end{document} 的索引矩阵为
\begin{document}$\boldsymbol{I}_{a}^{\prime}=\left[\begin{array}{cccc}
a_{1} & 0 & \omega_{1, 3} & a_{4} \\
0 & \omega_{2, 1} & a_{7} & a_{8} \\
a_{9} & 0 & a_{11} & \omega_{3, 4}
\end{array}\right], \boldsymbol{I}_{b}^{\prime}=\left[\begin{array}{cccc}
\omega_{1, 1}-a_{1} & 0 & \omega_{1, 3} & -a_{4} \\
0 & \omega_{2, 1} & -a_{7} & \omega_{2, 4}-a_{8} \\
-a_{9} & 0 & \omega_{3, 3}-a_{11} & \omega_{3, 4}
\end{array}\right].$\end{document}
以{M 1 , M 2 }生成加密的索引矩阵为\begin{document}$\hat{I}^{\prime}=\left\{\boldsymbol{M}_{1} \boldsymbol{I}_{a}^{\prime}, \boldsymbol{M}_{2} \boldsymbol{I}_{b}^{\prime}\right\} .$\end{document}
用户DU使用搜索向量\begin{document}$\vec S$\end{document} 请求搜索时, 首先调用陷门生成算法Trapdoor SK (S )划分出来搜索陷门\begin{document}$ {\hat{\boldsymbol{S}}}_{a}、{\hat{\boldsymbol{S}}}_{b}$\end{document} 为
\begin{document}$\hat{\boldsymbol{S}}_{a}=\left[\begin{array}{cccc}
0 & b_{2} & b_{3} & \tau_{1, 4} \\
b_{5} & b_{6} & \tau_{2, 3} & 0 \\
\tau_{3, 1} & b_{9} & 0 & b_{12}
\end{array}\right], \hat{\boldsymbol{S}}_{b}=\left[\begin{array}{cccc}
0 & \tau_{1, 2}-b_{2} & -b_{3} & \tau_{1, 4} \\
\tau_{2, 1}-b_{5} & -b_{6} & \tau_{2, 3} & 0 \\
\tau_{3, 1} & \tau_{3, 2}-b_{9} & 0 & -b_{12}
\end{array}\right].$\end{document}
以密钥(M 1 , M 2 )生成陷门TD S , 并将TD S 发送给云服务器CS.
云服务器以陷门\begin{document}$T D_{S}=\left\{\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right\} $\end{document} 和搜索索引\begin{document}$\hat{I}^{\prime}=\left\{\boldsymbol{M}_{1}^{T} \hat{\boldsymbol{I}}_{a}^{\prime}, \boldsymbol{M}_{2}^{T} \hat{\boldsymbol{I}}_{b}^{\prime}\right\} , $\end{document} 通过匹配算法判断:
\begin{document}$
$$
\hat{I}^{\prime} *T D_{s}=\left\{\boldsymbol{M}_{1} \hat{\boldsymbol{I}}_{a}^{\prime}, \boldsymbol{M}_{2} \hat{\boldsymbol{I}}_{b}^{\prime}\right\}{*}\left\{\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right\}=\left(\boldsymbol{M}_{1} \hat{\boldsymbol{I}}_{a}^{\prime}\right){*}\left(\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}\right)+\left(\boldsymbol{M}_{2} \hat{\boldsymbol{I}}_{b}^{\prime}\right){*}\left(\boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right)=\hat{\boldsymbol{I}}_{a}^{\prime} * \hat{\boldsymbol{S}}_{a}+\hat{\boldsymbol{I}}_{b}^{\prime} * \hat{\boldsymbol{S}}_{b}
$$.$\end{document}
对文件f 的(\begin{document}${\hat{\boldsymbol{I}}_a^{'}}, {\hat{\boldsymbol{I}}_b^{'}}$\end{document} )以及用户搜索陷门的(\begin{document}${\hat{\boldsymbol{S}}_a}, {\hat{\boldsymbol{S}}_b}$\end{document} )执行关键词搜索运算, 算法输出结果如下:
\begin{document}$\hat{\boldsymbol{I}}_{a}^{\prime} * \hat{\boldsymbol{S}}_{a}=\left[\begin{array}{cccc}
0 & 0 & b_{3} \omega_{1, 3} & a_{4} \tau_{1, 4} \\
0 & b_{6} \omega_{2, 1} & a_{7} \tau_{2, 3} & 0 \\
a_{9} \tau_{3, 1} & 0 & 0 & b_{12} \omega_{3, 4}
\end{array}\right], \hat{\boldsymbol{I}}_{b}^{\prime} * \hat{\boldsymbol{S}}_{b}=\left[\begin{array}{cccc}
0 & 0 & -b_{3} \omega_{1, 3} & -a_{4} \tau_{1, 4} \\
0 & -b_{6} \omega_{2, 1} & -a_{7} \tau_{2, 3} & 0 \\
-a_{9} \tau_{3, 1} & 0 & 0 & -b_{12} \omega_{3, 4}
\end{array}\right] \text {. }$\end{document}
显然, \begin{document}${\hat{\boldsymbol{I}}_a^{'}}*{\hat{\boldsymbol{S}}_a} + {\hat{\boldsymbol{I}}_b^{'}}*{\hat{\boldsymbol{S}}_b}$\end{document} 值为0矩阵, 则检索成功.
6
安全性分析
本方案的应用场景为面向医疗云中可搜索加密, 我们主要考虑半诚实医疗云服务器.对于外包半诚实云服务器, 云服务器会“诚实地”按照协议的各项流程执行协议, 也会按照索引标识符找到对应的安全索引, 完成授权用户搜索请求后, 会如实地返回结果.同时, 这类云服务器又是“好奇的”, 通过陷门以及收集信息去窥探用户查询的内容以及加密EHRs文件的各种信息.
6.1
搜索模式的隐藏
方案在半诚实医疗云中可以实现搜索模式的隐藏: 给定搜索向量\begin{document}$\vec S, $\end{document} 数据拥有者生成两次搜索陷门TD S 以及\begin{document}$T{D'_S}, $\end{document} 云服务器无法区分TD S 和\begin{document}$T{D'_S}, $\end{document} 证明云服务器在获得“两个搜索是由相同的关键词生成”的前提下而无法获取的任何知识, 即实现了搜索模式的隐藏, 证明过程如下.
1. 数据拥有者通过搜索向量\begin{document}$\vec S$\end{document} 计算差分向量\begin{document}$\vec S' = \vec Q - \vec S, $\end{document} 将\begin{document}$\vec S'$\end{document} 排列成为一个l ×h 的矩阵S ;
2. 数据拥有者选取两个随机矩阵B =[τ i , j ]l ×h 以及\begin{document}$\boldsymbol{B}' = {[{\tau _{i, j}^{'}}]_{l \times h}}, $\end{document} 计算B 与S 以及B' 与S 的哈达马积:
\begin{document}$\hat{\boldsymbol{S}}=\boldsymbol{B}^{*} \boldsymbol{S}, \hat{\boldsymbol{S}}^{\prime}=\boldsymbol{B}^{\prime} * \boldsymbol{S};$\end{document}
3. 数据拥有者使用划分矩阵\begin{document}$\boldsymbol{P}$\end{document} 对\begin{document}$\hat{\boldsymbol{S}}$\end{document} 和\begin{document}$\hat{\boldsymbol{S}}^{\prime}$\end{document} 进行划分, 生成\begin{document}$\hat{\boldsymbol{S}}_{a}[i, j$\end{document} 和\begin{document}$\hat{\boldsymbol{S}}_{b}[i, j]$\end{document} 以及\begin{document}$\hat{\boldsymbol{S}}_{a}^{\prime}[i, j]$\end{document} 和\begin{document}$\hat{\boldsymbol{S}}_{b}^{\prime}[i, j]$\end{document} . 最后生成搜索陷门\begin{document}$T D(S)=\left(\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right)$\end{document} 以及\begin{document}$T D^{\prime}(S)=\left(\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}^{\prime}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}^{\prime}\right) .$\end{document}
对于云服务器而言, 对TD (S )以及TD' (S )执行匹配算法:
\begin{document}$\hat{I}^{\prime *} T D=\left(\boldsymbol{M}_{1} \hat{\boldsymbol{I}}_{a}^{\prime}, \boldsymbol{M}_{2} \hat{\boldsymbol{I}}_{b}^{\prime}\right) *\left(\boldsymbol{M}_{1}^{-1} \hat{\boldsymbol{S}}_{a}, \boldsymbol{M}_{2}^{-1} \hat{\boldsymbol{S}}_{b}\right).$\end{document}
由方案正确性分析可知: TD (S )与TD' (S )在执行匹配运算后具有相同的查询结果, 即匹配文件运算中\begin{document}$\hat{I}^{\prime} * T D $\end{document} 为0矩阵, 云服务器无法从匹配算法中获得任何有用的区分信息.若云服务器仍能区分不同检索向量的陷门TD (S )和TD' (S ), 则云服务器不仅能区分B 和B' , 同时能够区分划分矩阵P 对\begin{document}$\hat S$\end{document} 和\begin{document}$\hat S'$\end{document} 的随机划分.而方案中, 矩阵B 和B' 均是随机选取的, 矩阵B 每一位置上元素的取值范围为[1, u ], 而查分矩阵中值为1的数量为v , 云服务器区分B 和B' 的概率为
\begin{document}${p_1} = \frac{1}{{{u^v}}}.$\end{document}
假定划分矩阵P 中值为1的个数为η , 则服务器区分划分矩阵P 对\begin{document}$\boldsymbol{\hat S}$\end{document} 和\begin{document}$\boldsymbol{\hat S}'$\end{document} 随机划分的概率为
\begin{document}${p_2} = \frac{1}{{{2^\eta }}}.$\end{document}
最后, 服务器区分TD (S )和TD' (S )的概率为
\begin{document}$P = {p_1}{p_2} = \frac{1}{{{u^v}{2^\eta }}}.$\end{document}
可以得到, 云服务器能够区分TD (S )和TD' (S )取决于随机矩阵B 中每个位置的取值范围以及差分矩阵和划分矩阵中1的个数.对于一个关键词总数为n 的搜索系统而言, 服务器直接猜测两次搜索是否来自同一个查询成功的概率为P' =1/(2n ).
在本方案中, 我们假定随机矩阵B 每个位置上的取值范围为[1, 2], 而我们需要搜索关键词总数一半的EHRs文件, 则p 1 =1/(2n /2 ).由于划分矩阵是随机生成的[0, 1]矩阵, 随机选取的值为0或1的概率相同, 其中, 为1的个数η ≈n /2, 即约为关键词总数n 的一半, p 2 =1/(2n /2 ).在这种最小假设下, 服务器成功区分的概率为P =p 1 p 2 =1/(2n ).可以得到: 在最小假设下, 本文方案中服务器成功区分的概率P 与服务器直接猜测的概率P' 相同.
一般而言, 作为范围搜索, 一次搜索请求中需搜索的关键词个数远远小于不需要搜索关键词的个数.因此, 差分矩阵中1的个数远大于0的个数.同时, 随机矩阵的取值范围也远远大于[1, 2].在本文方案中, 服务器成功区分的概率P < P' .因此, 云服务器不能区分TD (S )和TD' (S ), 因此, 该方案能够有效实现搜索模式的隐藏.
6.2
查询隐私安全
查询隐私安全要求云服务器CS无法根据自身构造的陷门来获取存储在云服务器端医疗EHRs密文的属性信息, 能够抵抗已知明文攻击.
● 陷门与搜索索引间匹配运算过程中的已知明文攻击安全性
假定攻击者向EHRs数据库中插入一组攻击者已知的明文I 并得到对应陷门.在不引入随机数的情况下, 对于任何矢量\begin{document}${\vec I_i} \in I, $\end{document} 攻击者不知道加密值\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j]$\end{document} 和\begin{document}${\boldsymbol{I}_{k, b}^{'}}[i, j].$\end{document} 本文模型中, 攻击者并不知道拆分二进制矩阵P , 将\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j]$\end{document} 和\begin{document}${\boldsymbol{I}_{k, b}^{'}}[i, j]$\end{document} 模型划分为两个随机的l ×h 大小的矩阵, 以求解\begin{document}${\boldsymbol{\hat I}_k^{'}} = \{ {\boldsymbol{M}_1}{\boldsymbol{I}_{k, a}^{'}}, {\boldsymbol{M}_2}{\boldsymbol{I}_{k, b}^{'}}\} .$\end{document} 其中, (M 1 , M 2 )是两个l ×l 的可逆矩阵.解方程个数为2l ×h , 而\begin{document}${\boldsymbol{I}_{k, a}^{'}}[i, j]$\end{document} 和\begin{document}${\boldsymbol{I}_{k, b}^{'}}[i, j]$\end{document} 中有2l ×h 个未知数, 在(M 1 , M 2 )中有2l 2 个未知数.本方案l 取值满足l > h , 即2l 2 大于2l ×h , 攻击者无法求解出置换矩阵, 因此在搜索过程中可以抵御已知明文攻击, 保证了查询隐私的安全性.
7
性能分析
目前, 主要的可搜索加密SE方案大致分为两大类: 基于公钥PKC的SE方案和基于对称密钥SKC的SE方案.在能够支持关键词连接查询的方案中, 文献[28 ]是基于PKC的方案, 文献[5 ]和文献[8 ]是同样使用了非对称向量积保持加密SKC的方案.由于双线性的方案效率较低, 本节中我们不再考虑双线性对构造陷门和关键词匹配的基于PKC方案(文献[28 ]), 仅与同样使用了ASPE方案的文献[5 ]和文献[8 ]作性能比较.
对于关键词总量n 的可搜索加密系统, 用t a 表示一次点加运算所用时间, t m 表示一次点乘所用时间, T d 表示生成一个长度为d 的二进制向量所用时间, T i ×j 表示生成大小为i ×j 的矩阵所用时间, α i ×j 表示大小为i ×j 的矩阵做转置所用时间, β i ×j 大小为i ×j 的矩阵做逆所用时间.方案计算性能的理论分析见表 2 .
2
方案时间复杂度(n : 关键词数)
Comparison of time complexity (n : number of keywords)
阶段
MCKS-I[5 ]
YLC18[8 ]
本文方案
初始化
T n +2T n ×n
T n +2h·T l ×l
T n +2T l ×l
索引生成
2n 2 (t a +t m )+2α n ×n
2h 2· l (t a +t m )+2h·α l ×l
2h ·l (t a +t m )+2α l ×l
陷门生成
2n 2 (t a +t m )+2β n ×n
2h 2· l (t a +t m )+2h ·β l ×l
2h ·l (t a +t m )+2β l ×l
查询检索
2n (t a +t m )+t a
2h ·l (t a +t m )+h·t a
2h ·l (t a +t m )+t a
在实际测试中, 运行在Window 7上64bit台式机进行, 处理器为Intel(R) G3240, CPU主频率为3.10GHz, 4G内存RAM.实验实现基于Java语言, 版本为1.80.非对称向量积保持加密方案实验仿真基于JAMA矩阵运算库编写.
本方案实验中, l 的取值会对实验结果产生影响, 其主要影响私钥(P , M 1 , M 2 )的生成以及矩阵运算时矩阵的大小.当l 取值增大时, 生成私钥(P , M 1 , M 2 )以及矩阵的哈达马积运算的计算开销就会增大.随着关键词数量n 的增长, ASPE方案构建矩阵大小也会增大, 导致文献[5 , 8 ]和我们的方案所需时间也相应增加.
7.1
系统初始化性能
在MCKS-Ⅱ方案[5 ] 初始化过程中, 需产生两个n ×n 的可逆矩阵(M 1 , M 2 )及所需n 位二进制矢量S , 同时需预计算\begin{document}$ {\boldsymbol{M}}_{1}^{T}、{\boldsymbol{M}}_{2}^{T}、{\boldsymbol{M}}_{1}^{-1}$\end{document} 和\begin{document}$\boldsymbol{M}_2^{ - 1}$\end{document} .在初始化阶段, 主要运算开销是矩阵的生成、计算矩阵转置和矩阵求逆, 时间复杂度为O(n 3 ).文献[8 ]在初始化过程中构造h 个可逆矩阵(M 1 , M 2 ), 大小为l ×l , 产生n 位二进制向量S , 同时需预计算\begin{document}$\boldsymbol{M}_1^T$\end{document} 和\begin{document}$\boldsymbol{M}_2^T$\end{document} .本文方案在初始化阶段需构造可逆矩阵(M 1 , M 2 ), 大小为l ×l , 产生一个l ×h 大小的二进制矩阵P .本文方案和文献[5 ]的MCKS_Ⅱ方案在初始化时间上大大优于文献[8 ]的方案, 在文件属性n =1000时, MCKS_Ⅱ所用时间比稍显更优(见表 3 ).
3
初始化时间 (毫秒)
Time of initialization phase (ms)
关键词数
MCKS-Ⅱ[5 ]
YLC18[8 ]
本文方案
250
44.142
330.279
32.209
500
48.413
418.825
39.465
750
51.988
487.392
40.756
1 000
60.940
570.445
42.549
MCKS-Ⅱ初始化效率与树形图的构建有关, 假定文献[5 ]树形图有v 层, 每层树的节点有n 0 个子节点, 其属性值长度n 1 =1+(v -1)n 0 .EHRs属性值分别取值n =(750, 1000, 1250, 1500), 文献[5 ]方案中子节点个数n 0 =10, 树层数v =4.那么属性值长度n 1 =31, 可逆矩阵(M 1 , M 2 )大小为n 1× n 1 .MCKS-Ⅱ方案中树的最大容量n =1000, 在n =750后, MCKS-Ⅱ方案相比本文方案在初始化时间上更优.但考虑到现实场景, 并非所有属性值都能有10个子属性(如性别属性只有2个子属性), 因此文献[5 ]中MCKS-Ⅱ方案所假定n 1 =31理想化的树是不完全存在的.由文献[5 ]的性能分析得知, 将MCKS-Ⅰ方案中置属性值n =302.根据树形结构转换n 1 =56, 初始化时间为44.142ms.文献[5 ]构造的n =302树的初始化时间比本文方案在n =500时所需时间更长.
后续实验中, 根据文献[5 ]在性能分析中所提MCKS-Ⅰ方案中属性值n =302, 根据树形结构转换n 1 =56, 根据n 1 =56n /302转换比例来对MCKS-Ⅱ方案进行测试实验.
考虑到非对称向量积保持加密方案的安全性, 其中, l 大小应大于h , 在属性值n 的取值上, 保证索引安全的属性值有n =(750, 1000).在属性值n =750时, 本方案时间为40.756ms, 文献[8 ]初始化时间为487.392ms, 本文方案比文献[8 ]方案优化约12倍.随着属性值n 增加到n =1000, 本文方案比文献[8 ]快约15倍.随着属性值n 的增大, 本文方案在系统初始化效率上会比文献[5 ]和文献[8 ]都要高.
7.2
索引生成性能分析
为加密EHRs文件关键词, 需先构造关键词集合W =(w 1 , w 2 , …, w n ), 总体EHRs文件总共具有n 个属性值.根据APSE安全需求, 属性值n 需取较大值, 实验测试中取n =(750, 1000, 1250, 1500).
在生成Index索引的过程中, 将每个EHRs文件映射出的n 个属性值进行加密处理.该阶段的运行时间主要由以下两方面决定: 数据库中记录条数(行数)以及索引矩阵大小(索引矢量长度).我们假定数据库中具有1 000个文件, 每个文件的关键词属性值为n .通过Java做生成Index索引仿真实验, 生成Index索引时间见表 4 .
4
建立索引所需时间 (毫秒)
Time of building the index (ms)
关键词数
MCKS-Ⅱ[5 ]
YLC18[8 ]
本文方案
750
174.293
152.433
92.885
1 000
213.672
206.729
105.887
1 250
239.631
230.767
128.561
1 500
278.324
270.335
144.281
实验分析可知: MCKS-Ⅱ方案与本文方案相对文献[8 ]方案在加密索引方面有明显的效率提升, 且本文方案在生成Index索引时比MCKS-Ⅱ效率更高.当属性值n =1500时, 处理1 000个文件索引时文献[8 ]方案时间为270.335ms, MCKS-Ⅱ方案时间为278.324ms, 本文方案为144.281ms.当属性值n 增大时, 本文方案在生成索引效率上比文献[5 ]和文献[8 ]方案更优.
7.3
陷门生成性能
生成陷门阶段将用户搜索向量n 个属性值加密处理, 需预计算\begin{document}$\boldsymbol{M}_1^{ - 1}$\end{document} 和\begin{document}$\boldsymbol{M}_2^{ - 1}$\end{document} 的时间.生成陷门TD的时间可见表 5 .测试结果显示: 本文方案在生成陷门TD时效率最高, 其次是YLC18方案.
5
生成陷门时间 (毫秒)
Time of creating the trapdoor (ms)
关键词数
MCKS-Ⅱ[5 ]
YLC18[8 ]
本文方案
750
15.789
11.712
3.665
1 000
26.673
21.634
4.610
1 250
42.054
27.127
6.089
1 500
58.469
36.482
7.402
7.4
查询性能
表 6 列出了文件数量为1 000时方案的查询性能.在查询方面: 本文方案在计算效率上较MCKS-Ⅱ方案相同; 文献[8 ]方案由于需要多组矩阵进行运算, 求和时需将所有分块后的结果再统计到一起, 因而, 相比于本文方案以及MCKS-Ⅱ方案会显得稍慢.但是, 这一点对查询时间的影响不大, 甚至不如程序运行两次时产生的误
差大.
6
关键词搜索时间 (毫秒)
Time of keyword search (ms)
关键词数
MCKS-Ⅱ[5 ]
YLC18[8 ]
本文方案
750
57.457
61.483
56.049
1 000
65.467
68.115
64.301
1 250
69.376
72.457
70.083
1 500
77.934
78.328
75.878
将整个系统执行和关键词搜索分成4个阶段: 初始化、建立搜索索引、生成陷门、查询搜索.分别在这4个阶段与文献[5 ]中的MCKS-Ⅱ方案以及文献[8 ]中的方案进行对比, 实验结果显示, 本文方案在运行效率上得到了较好的提升.由于使用更小的可逆分块矩阵作为密钥, 使得方案对关键词数的剧烈增长有着较好的抵抗性, 符合大数据环境下存在大量关键词数且需要提供良好计算性能的电子医疗系统隐私保护范围搜索.
8
结束语
对称可搜索加密通过对称密钥可以快速地对文件进行加密, 同时利用构造索引及陷门来对密文文件进行隐私保护下基于关键词的搜索.其优点在于加解密速度快, 搜索表达灵活, 适用于具有海量数据的大型文件(如文献和电子病历等)搜索环境.为提高效率的同时还能够保障灵活的范围搜索能力, 以满足大数据医疗云中对医疗数据隐私保护下的搜索需求, 本文提出了一种支持多关键词范围搜索的可搜索加密方案.该方案支持范围查询和通配符模式检索, 利用文件索引矩阵和搜索陷门矩阵替代以往的一维向量, 同时利用哈达马积运算简化查询匹配时间, 极大地提高了搜索效率.实验结果表明: 本文所提出的方案有效地缩短了系统初始化、索引构造以及陷门生成的时间, 针对关键词数剧烈增长有着较好的抵抗性, 满足了大数据环境下关键词数多的电子医疗系统的要求.然而在实际应用中, 用户建立的搜索向量中包含大量少用或不用的关键词.降低未涉及关键词导致的系统复杂度问题, 是我们下一阶段研究的目标.
References
[
]1
Golle P, Staddon J, Waters B. Secure conjunctive keyword search over encrypted data. In: Proc. of the Int'l Conf. on Applied Cryptography and Network Security (ACNS 2004). LNCS 3089, Springer-Verlag, 2004.31-45.
[
]2
Goh EJ. Secure indexes. ICAR cryptology ePrint archive, 2003/216, 2003.
[
]3
Chang YC, Mitzenmacher M. Privacy preserving keyword searches on remote encrypted data. In: Proc. of the Int'l Conf. on Applied Cryptography and Network Security. 2005.442-455.
[
]4
Yang
Y
Yang
SL
Ke
M
Rank fuzzy keyword search based on Simhash over encrypted cloud data
Chinese Journal of Computers
2017
40
2
431
444
Yang Y, Yang SL, Ke M. Rank fuzzy keyword search based on Simhash over encrypted cloud data. Chinese Journal of Computers, 2017, 40(2): 431-444(in Chinese with English abstract).
杨
旸
杨
书略
柯
闽
加密云数据下基于Simhash的模糊排序搜索方案
计算机学报
2017
40
2
431
444
杨旸, 杨书略, 柯闽. 加密云数据下基于Simhash的模糊排序搜索方案. 计算机学报, 2017, 40(2): 431-444.
[
]5
Zhang
LL
Zhang
YQ
Liu
XF
Quan
HY
Efficient conjunctive keyword search over encrypted electronic medical records
Ruan Jian Xue Bao/Journal of Software
2016
27
6
1577
1591
10.13328/j.cnki.jos.005005
Zhang LL, Zhang YQ, Liu XF, Quan HY. Efficient conjunctive keyword search over encrypted electronic medical records. Ruan Jian Xue Bao/Journal of Software, 2016, 27(6): 1577-1591(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5005.htm[doi: 10.13328/j.cnki.jos.005005]
张
丽丽
张
玉清
刘
雪峰
全
韩彧
对加密电子医疗记录有效的连接关键词的搜索
软件学报
2016
27
6
1577
1591
10.13328/j.cnki.jos.005005
张丽丽, 张玉清, 刘雪峰, 全韩彧. 对加密电子医疗记录有效的连接关键词的搜索. 软件学报, 2016, 27(6): 1577-1591. http://www.jos.org.cn/1000-9825/5005.htm[doi: 10.13328/j.cnki.jos.005005]
[
]6
Boneh D, Di Crescenzo G, Ostrovsky R, et al . Public key encryption with keyword search. In: Proc. of the EURORYPT 2004.2004.506-522.
[
]7
Li M, Yu S, Cao N, Lou WJ. Authorized private keyword search over encrypted data in cloud computing. In: Proc. of the IEEE Int'l Conf. on Distributed Computing Systems (ICDCS). Minneapolis, 2011.383-392.
[
]8
Yang
Y
Liu
J
Cai
S
Yang
S
Fast multi-keyword semantic ranked search in cloud computing
Chinese Journal Computers
2018
41
6
1346
1359
Yang Y, Liu J, Cai S, Yang S. Fast multi-keyword semantic ranked search in cloud computing. Chinese Journal Computers, 2018, 41(6): 1346-1359(in Chinese with English abstract).
杨
旸
刘
佳
蔡
圣暐
杨
书略
云计算中保护数据隐私的快速多关键词语义排序搜索方案
计算机学报
2018
41
6
1346
1359
杨旸, 刘佳, 蔡圣暐, 杨书略. 云计算中保护数据隐私的快速多关键词语义排序搜索方案. 计算机学报, 2018, 41(6): 1346-1359.
[
]9
Song DX, Wagner D, Perrig A. Practical techniques for searches on encrypted data. In: Proc. of the IEEE Symp. on Security and Privacy. 2000.44-55.
[
]10
Curtmola
R
Garay
J
Kamara
S
Searchable symmetric encryption: Improved definitions and efficient constructions
Journal of Computer Security
2011
19
5
895
934
10.3233/JCS-2011-0426 Curtmola R, Garay J, Kamara S, et al . Searchable symmetric encryption: Improved definitions and efficient constructions. Journal of Computer Security, 2011, 19(5): 895-934.
[
]11
Wang
C
Cao
N
Re
nK
Enabling secure and efficient center keyword search over out sourced cloud data
IEEE Trans. on Paralleled Distributed Systems
2012
23
8
1467
1479
10.1109/TPDS.2011.282 Wang C, Cao N, RenK, et al . Enabling secure and efficient center keyword search over out sourced cloud data. IEEE Trans. on Paralleled Distributed Systems, 2012, 23(8): 1467-1479.
[
]12
Wang C, Cao N, Li J, et al . Secure ranked keyword search over encrypted cloud data. In: Proc. of the IEEE Int'l Conf. on Distributed Computing Systems (ICDCS). Genova, 2010.253-262.
[
]13
Li J, Wang Q, Wang C, et al . Fuzzy keyword search over encrypted data in cloud computing. In: Proc. of the IEEE INFOCOM. San Diego, 2010.1-5.
[
]14
Cao
N
Wang
C
Li
M
Privacy-preserving multi-keyword ranked search over encrypted cloud data
IEEE Trans. on Parallel and Distributed Systems
2014
25
1
829
837
Cao N, Wang C, Li M, et al . Privacy-preserving multi-keyword ranked search over encrypted cloud data. IEEE Trans. on Parallel and Distributed Systems, 2014, 25(1): 829-837.
[
]15
Li
JG
Tian
XX
Zhou
AY
Privacy preserving fuzzy keyword search in database as a service paradigm
Chinese Journal of Computers
2016
39
2
414
428
Li JG, Tian XX, Zhou AY. Privacy preserving fuzzy keyword search in database as a service paradigm. Chinese Journal of Computers, 2016, 39(2): 414-428(in Chinese with English abstract).
李
晋国
田
秀霞
周
傲英
面向DaaS保护隐私的模糊关键字查询
计算机学报
2016
39
2
414
428
李晋国, 田秀霞, 周傲英. 面向DaaS保护隐私的模糊关键字查询. 计算机学报, 2016, 39(2): 414-428.
[
]16
Yu
CM
Chen
CY
Chao
HC
Privacy-preserving multikey-word similarity search over outsourced cloud data
IEEE Systems Journal
2015
99
1
10
Yu CM, Chen CY, Chao HC. Privacy-preserving multikey-word similarity search over outsourced cloud data. IEEE Systems Journal, 2015, 99: 1-10.
[
]17
Yang C, Zhang W, Xu J, et al . A fast privacy-preserving multi-keyword search scheme on cloud data. In: Proc. of the Int'l Conf. on Cloud and Service Computing. Shanghai, 2013.104-110.
[
]18
Fu
Z
Sun
X
Linge
N
Achieving effective cloud search services: Multi-keyword ranked search over encrypted cloud data supporting synonym query
IEEE Trans. on Consumer Electronics
2014
60
1
164
172
10.1109/TCE.2014.6780939 Fu Z, Sun X, Linge N, et al . Achieving effective cloud search services: Multi-keyword ranked search over encrypted cloud data supporting synonym query. IEEE Trans. on Consumer Electronics, 2014, 60(1): 164-172.
[
]19
Fu
Z
Wu
X
Guan
C
Toward efficient multi-keyword fuzzy search over encrypted outsourced data with accuracy improvement
IEEE Trans. on Information Forensics and Security
2016
11
12
2706
2716
10.1109/TIFS.2016.2596138 Fu Z, Wu X, Guan C, et al . Toward efficient multi-keyword fuzzy search over encrypted outsourced data with accuracy improvement. IEEE Trans. on Information Forensics and Security. 2016, 11(12): 2706-2716.
[
]20
Li
S
Xu
MZ
Attribute-based public encryption with keyword search
Chinese Journal of Computers
2014
37
5
1017
1024
Li S, Xu MZ. Attribute-based public encryption with keyword search. Chinese Journal of Computers, 2014, 37(5): 1017-1024(in Chinese with English abstract).
李
双
徐
茂智
基于属性的可搜索加密方案
计算机学报
2014
37
5
1017
1024
李双, 徐茂智. 基于属性的可搜索加密方案. 计算机学报, 2014, 37(5): 1017-1024.
[
]21
Xu
P
Jin
H
Wu
QH
Public-key encryption with fuzzy keyword search: A provably secure scheme under keyword guessing attack
IEEE Trans. on Computers
2013
62
11
2266
2277
10.1109/TC.2012.215 Xu P, Jin H, Wu QH, et al . Public-key encryption with fuzzy keyword search: A provably secure scheme under keyword guessing attack. IEEE Trans. on Computers, 2013, 62(11): 2266-2277.
[
]22
Ma
M
H
ed
Khanmk
Certificate less searchable public key encryption scheme for mobile health care system
Computers & Electrical Engineering
2017
43
1
9
Ma M, Hed, Khanmk, et al . Certificate less searchable public key encryption scheme for mobile health care system. Computers & Electrical Engineering, 2017, 43: 1-9.
[
]23
Wang T, Au MH, Wu W. An efficient secure channel free searchable encryption scheme with multiple keywords. In: Proc. of the Int'l Conf. on Network and System Security. 2016.251-265.
[
]24
Chen
RM
Mu
Y
Yang
GM
Dual-server public-key encryption with keyword search for secure cloud storage
IEEE Trans. on Information Forensics and Security
2016
11
4
789
798
Chen RM, Mu Y, Yang GM, et al . Dual-server public-key encryption with keyword search for secure cloud storage. IEEE Trans. on Information Forensics and Security, 2016, 11(4): 789-798.
[
]25
Jiang P, Mu Y, Guo FC, et al . Public key encryption with authorized keyword search. In: Proc. of the Australasian Conf. on Information Security and Privacy. 2016.170-186.
[
]26
Chen
RM
Mu
Y
Yang
GM
Server-aided public key encryption with keyword search
IEEE Trans. on Information Forensics and Security
2016
11
12
2833
2842
10.1109/TIFS.2016.2599293 Chen RM, Mu Y, Yang GM, et al . Server-aided public key encryption with keyword search. IEEE Trans. on Information Forensics and Security, 2016, 11(12): 2833-2842.
[
]27
Li
JG
Lin
XN
Zhang
YC
KSF-OABE: Outsourced attribute-based encryption with keyword search function for cloud storage
IEEE Trans. on Services Computing
2016
10.1109/TSC.2016.2542813
Li JG, Lin XN, Zhang YC, et al . KSF-OABE: Outsourced attribute-based encryption with keyword search function for cloud storage. IEEE Trans. on Services Computing, 2016. [doi: 10.1109/TSC.2016.2542813]
[
]28
Wong KK, Cheung DW, Kao B, Mamoulis N. Secure k -NN computation on encrypted databases. In: Proc. of the 35th SIGMOD Int'l Conf. on Management of Data. New York: ACM, 2009.139-152.
[
]29
Zhang
MW
Chen
MW
He
DB
Yang
B
An efficient leakage-resilient and CCA2-secure PKE system
Chinese Journal of Computers
2016
39
3
482
502
Zhang MW, Chen MW, He DB Yang B. An efficient leakage-resilient and CCA2-secure PKE system. Chinese Journal of Computers, 2016, 39(3): 482-502(in Chinese with English abstract).
张
明武
陈
泌文
何
德彪
杨
波
高效弹性泄漏下CCA2安全的公钥加密体
计算机学报
2016
39
3
492
502
张明武, 陈泌文, 何德彪, 杨波. 高效弹性泄漏下CCA2安全的公钥加密体. 计算机学报, 2016, 39(3): 492-502.
[
]30
Huang JJ. Privacy-preserving range-based multi-keyword search scheme in medical clouds. [MS. Thesis]. Wuhan: Hubei University of Technology, 2019(in Chinese with English abstract).
黄嘉骏. 医疗云中隐私保护多关键词范围搜索方案[硕士学位论文]. 武汉: 湖北工业大学, 2019.
[
]31
Li
H
Yang
Y
Dai
Y
Yu
S
Xiang
Y
Achieving secure and efficient dynamic searchable symmetric encryption over medical cloud data
IEEE Trans. on Cloud Computing
2017
10.1109/TCC.2017.2769645
Li H, Yang Y, Dai Y, Yu S, Xiang Y. Achieving secure and efficient dynamic searchable symmetric encryption over medical cloud data. IEEE Trans. on Cloud Computing, 2017. [doi: 10.1109/TCC.2017.2769645]
[
]32
Wang
SP
Liu
LJ
Zhang
YL
Verifiable dictionary-based searchable encryption scheme
Ruan Jian Xue Bao/Journal of Software
2016
27
5
1301
1308
10.13328/j.cnki.jos.004912
Wang SP, Liu LJ, Zhang YL. Verifiable dictionary-based searchable encryption scheme. Ruan Jian Xue Bao/Journal of Software, 2016, 27(5): 1301-1308(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4912.htm[doi: 10.13328/j.cnki.jos.004912]
王
尚平
刘
利军
张
亚玲
可验证的基于词典的可搜索加密方案
软件学报
2016
27
5
1301
1308
10.13328/j.cnki.jos.004912
王尚平, 刘利军, 张亚玲. 可验证的基于词典的可搜索加密方案. 软件学报, 2016, 27(5): 1301-1308. http://www.jos.org.cn/1000-9825/4912.htm[doi: 10.13328/j.cnki.jos.004912]
[
]33
Chen
B
Wu
L
Kumar
N
Choo
KKR
He
D
Lightweight searchable public-key encryption with forward privacy over IIoT outsourced data
IEEE Trans. on Emerging Topics in Computing
2019
10.1109/TETC.2019.2921113
Chen B, Wu L, Kumar N, Choo KKR, He D. Lightweight searchable public-key encryption with forward privacy over IIoT outsourced data. IEEE Trans. on Emerging Topics in Computing, 2019. [doi:10.1109/TETC.2019.2921113]