Page 299 - 《软件学报》2021年第10期
P. 299
张明武 等:医疗大数据隐私保护多关键词范围搜索方案 3271
本文方案可以达到如下目标.
(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 所示的二进制属性矢量进行
转换和表示.
当某医疗组织 DU 希望查询“高血压在武汉 40 多岁人群”中的患病情况时,则该构造生成查询请求:
“年龄=4* AND 疾病=高血压 AND 地区=武汉”.
查询请求中对于性别并不关心,该属性用通配符“*”代替,查询中的范围查询“40 多岁”(40~49 岁之间)利用
通配符“4*”来构造.上述查询的查询向量和查询矩阵转换构造如图 3 所示.
年龄 性别 疾病 地区 年龄 性别 疾病 地区
索引 46 女 高血糖 北京 查询信息 4* * 高血压 武汉
索引矢量 0..010..0 01 010 10000 查询矢量 0..111..0 11 100 00100
差分矢量 1..000..1 00 011 11011
年龄:0-9 0000000000
年龄:0-9 1111111111
年龄:10-19 0000000000
年龄:10-19 1111111111
年龄:20-29
年龄:20-29 1111111111
年龄:30-39 0000000000 1111111111
年龄:30-39
年龄:40-49 0000010000 0000000000
年龄:40-49
年龄:50-59 0000000000
年龄:50-59 1111111111
…… ……
年龄:90-99 0000000000 年龄:90-99 1111111111
其他属性 0101010000 其他属性 0001111011
索引矩阵 查询矩阵
Fig.2 Index vector and martix Fig.3 Search vector and martix
图 2 索引矢量和索引矩阵 图 3 查询矢量与查询矩阵
本文第 2 节所述 APSE 方案,实现了查询矢量 Q 和属性矢量的内积.为实现更快的系统构建以及匹配效率,
将原有 APSE 方案由保证两个向量的内积拓展到两个矩阵的哈达码积,其正确性在第 4.8 节中进行详细论证.