Page 303 - 《软件学报》2021年第10期
P. 303

张明武  等:医疗大数据隐私保护多关键词范围搜索方案                                                      3275

                                                                        
                    1.   DU 根据搜索向量 ,S 利用参考向量 Q 计算搜索差分向量 S              Q   ; S
                              
                    2.   DU 将 S 进行划分,即 S    1  ( , ,..., ),s s   1   2  s S l     2  (s   l 1 ,...,s  2l ),...,S    / n l  共 h 段,搜索差分向量表示为
                                                                  T
                                                      S  (,SS      1   2 ,...,S    h ) .
                                                   ˆ
                        同样方式将 S 排列为 lh 的矩阵 ; S
                                                                                      ˆ
                           ˆ
                    3.   用 [, ]ij 表示第 i 行第 j 列是否为本次需要搜索的关键词(i[1,l],j[1,h]):若 [, ] 1,ij    则对应第 i 行
                                                                                     S
                           S
                         第 j 列位置的关键字是不需要搜索的;若 [, ] 0,ij S ˆ    则对应的第 i 行第 j 列位置的关键字是需要搜索的.
                                            ˆ
                         最后输出差分搜索矩阵 ; S
                                                                      ˆ
                                                                                    ˆ
                                                                                          ˆ
                                                                                        *.
                    4.   DU 选取随机矩阵 B=| i,j | lh ,计算矩阵 B 与差分搜索矩阵 S 的哈达马积,即   BS 这里, i,j 0.随后,
                                                                                   S
                        根据收到的密钥 SK 构造搜索陷门.令 P[i,j]表示二进制矩阵 P 的第 i 行第 j 列,对(i[1,l],j[1,h]):若
                                  ˆ
                                                                                                ˆ
                                              ij
                                                                                                S
                                                      ij
                                                                               ij
                         P[i,j]=1,将 [, ]ij 划分为 S ˆ a [, ] 和 S ˆ b [, ], 且满足 [, ]  S ˆ  ij  ˆ a [ , ]  S  ij  S ˆ b [ , ]; 若 P[i,j]=0,则将 [, ]ij 置为
                                 S
                                                                          1 ˆ
                                                                                1 ˆ
                         ˆ [, ]  S  ij  ˆ a [ , ] j  S  i  S ˆ b [, ]. 结合{M 1 ,M 2 }生成陷门 TD S , TD  {M SM S b };
                                                                               
                                                                         
                                                                            ,
                                        ij
                                                                               2
                                                                         1
                                                                            a
                                                                    S
                    5.   DU 将搜索陷门 TD S 发送给云服务器 CS 请求搜索.
                    算法 2.  陷门生成算法.
                                          
                    输入:搜索向量 ,S 参考向量 ,Q HC 私钥中的{P,M 1 ,M 2 };
                    输出:搜索陷门 TD S .
                    开始:
                                            
                      1.  计算搜索差分向量 S     Q   ; S
                                        
                                         :
                      2.  对于搜索差分向量 S
                                              
                                            
                          将 S 构建成矩阵 S     (, ,..., )s s 2  s h  T
                                            1
                                          ˆ
                          得到差分搜索矩阵 ; S
                        FOR EACH j[1,h];
                            FOR EACH i[1,l];
                              选取随机矩阵 B=| i,j | lh ;
                                        ˆ
                                       *;
                              计算   BS
                                  S
                                             ˆ
                              划分矩阵 P 将矩阵 S 划分为 S     ˆ  [, ] 和 S ˆ  [, ]:
                                                               ij
                                                       ij
                                                      a      b
                              对于 P 的第 i 行第 j 列 P[i,j];
                              IF P[i,j]=1;
                                ˆ [, ]  S  ij  ˆ a [ , ]  S  ij  S ˆ b [, ];
                                               ij
                              ELSE P[i,j]=0;
                                ˆ [, ]  S  ij  ˆ  [ , ] j  S  i  S ˆ  [, ];
                                               ij
                                       a      b
                            END FOR;
                          END FOR;
                                           1 ˆ
                                     1 ˆ
                                          
                                     
                      3.  计算: TD  {MS M S  b };
                                        ,
                                          2
                               S
                                       a
                                    1
                        END
                                           ˆ  I
                 4.6   索引与陷门匹配 Query  (TD  , )
                                         S
                                                     ˆ
                    云服务器 CS 执行匹配查询,以索引矩阵  I 和搜索陷门 TD S 为输入,计算:
                                                   1 ˆ
                                                                                1 ˆ
                                             1 ˆ
                                                                                               ˆ
                                                                  1 ˆ
                                                                 
                                  ˆ 
                                                                                
                                             
                                                  
                                                       
                                                                     
                                                                                                 ,
                        I ˆ   *TD S  {M I M I ˆ   }*{MS MS b } (M I ˆ   )*(MS a ) (M I ˆ   )*(M S b )   I ˆ   a  * S ˆ a    I ˆ   b  * S
                                                ,
                                    ,
                                      2 b
                                                                                                b
                                                  2
                                               a
                                                                         2 b
                                                          1 a
                                                                 1
                                             1
                                 1 a
                                                                               2
                 其中,“*”表示两个矩阵的哈达马积.
                    当且仅当计算所得的矩阵为 0 矩阵时,云服务器 CS 才将对应密文 CT发送给 DU.
                    注解 1:
   298   299   300   301   302   303   304   305   306   307   308