Page 302 - 《软件学报》2021年第10期
P. 302
3274 Journal of Software 软件学报 Vol.32, No.10, October 2021
ˆ
.
式表示成为 lh 的(0,1)矩阵 I
k
ˆ
ˆ
HC 选取随机矩阵 A=[ i,j ] i=1,...,l,j=1,...,h ,计算 A 和索引矩阵 I 的哈达马积,即 A I 其中, i,j 0.令 P[i,j]
I
*
,
k
k
k
表示二进制矩阵 P 的第 i 行第 j 列,对于(i[1,l],j[1,h]):若 P[i,j]=1,则将 I k [, ]ij 随机划分成 I , ka [, ]ij 和 I , kb [, ],ij 且
满足 , ka [, ]i j I , k b [ , ]ij I I k [, ];ij 若 P[i,j]=0,则置 I , ka [, ]i j I , k b [ , ]i j I k [ , ]i j 构造方法如图 6 所示.
Fig.6 Division of index matrix
图 6 索引矩阵的划分
ˆ
利用{M 2 }生成加密索引矩阵 I ˆ : I {M I , M I }.
k k 1 k ,a 2 k ,b
ˆ
最后,将 (||I CT ) 上传至云服务器 CS.
4.5 搜索陷门生成
4.5.1 搜索向量构造
数据使用者 DU 要搜索和访问云服务器 CS 上加密 EHRs 文件时,根据关键词信息,在构建搜索向量 S 时,
对于包含的关键词,将其置 1,构建差分搜索向量 S 在该位置 0.对本方案,匹配算法 4 能够搜索到所需文件.
例如,搜索年龄在 20~49 岁、患有高血压的男性患者的病历,如图 7 所示.医疗组织由该方法构建搜索向量,
在文件索引和搜索陷门匹配阶段,以该例具体分析如何实现范围搜索.
年龄 性别 疾病 地区
查询信息 20-49 男 高血压 *
查询矢量 0..111..0 10 100 00100
差分矢量 1..000..1 01 011 11011
年龄:0-9 1111111111
年龄:10-19 1111111111
年龄:20-29 0000000000
年龄:30-39 0000000000
年龄:40-49 0000000000
年龄:50-59 1111111111
……
年龄:90-99 1111111111
其他属性 0101111011
查询矩阵
Fig.7 Construction instance: search vector with “male, hypertension, age between 20 and 49”
图 7 构造实例:查询向量“年龄在 20~49 岁、患有高血压的男性病人”
4.5.2 陷门 Trapdoor SK (S)生成
DU 向医疗中心 HC 请求搜索授权,医疗中心 HC 根据授权规则决定是否授权.数据使用者 DU 获得了授权
后,HC 通过安全信道将密钥 SK 发送给 DU,DU 执行以下步骤获得搜索陷门 TD S (如算法 2 所示).