Page 309 - 《软件学报》2021年第11期
P. 309

刘旭红:高效安全向量计算及其推广                                                                3635


                 3    向量相等保密判定问题

                    问题描述. Alice 和 Bob 分别具有有理数向量 X=(x 1 ,…,x n )和 Y=(y 1 ,…,y n ),双方想要保密判定两个向量 X 和 Y
                 是否相等:如果不相等,不应向对方泄露向量 X 或 Y 的任何信息.
                    计算原理.  首先证明下面的结论.
                    命题 1.  对于任意两个有理数向量 X=(x 1 ,…,x n )和 Y=(y 1 ,…,y n ),X=Y 的充要条件是以下等式成立:
                                                           2
                                                        2
                                                      |X| +|Y| =2X⋅Y                                  (9)
                 其中, | X =  | 2  x +  1 2  ... x+  2 n  ,| |Y =  2  y +  1 2  ... y+  2 n  .
                    证明:由于
                        X =  Y ⇔  | X −  Y  | 0=  ⇔  (x +  2  ... x+  2 ) (y+  2  +  ...+  y 2 ) 2(x y−  +  ... x y+  ) =  0 ⇔  | X  | +  2  | |Y =  2  2X Y⋅  ,
                                           1     n    1     n     1 1    n n
                 因此,命题 1 得证.                                                                          □
                    命题 1 是判定两向量是否相等的基本原理,即,将判定两向量 X,Y 是否相等的问题转化为判定条件(9)是否
                 成立的问题.下面我们以协议 1 为基础,构造向量相等保密判定协议.Alice 和 Bob 调用协议 1(约定 t=n+1),Alice
                                                        2
                                                                2
                 得到随机数 s>2,Bob 得到 z=sX⋅Y.Bob 计算 u=z−|Y| =sX⋅Y−|Y| ,并将 u 发送给 Alice.Alice 计算:
                                                s
                                                        2
                                           w =    (u−  | X  | )
                                               s −  2
                                             =  s  (sX Y ⋅  −  | X  | −  2  | | )
                                                                2
                                                              Y
                                              s −  2
                                                s
                                              =   ((s −  2)X Y ⋅  +  (2X Y ⋅  −  | X  | −  2  | | ))Y  2
                                              s −  2
                                              =  sX Y ⋅  +  s  (2X Y ⋅  −  | X  | −  2  | | ),Y  2
                                                    s − 2
                                                                      2
                                                                         2
                 并将 w 发送给 Bob.Bob 判断 w 是否等于 z=sX⋅Y:若 w=z,则 2X⋅Y−|X| −|Y| =0,即 X=Y;否则,X≠Y.下面为叙述方便,
                 定义二元谓词:
                                                          ⎧ 1,  如果  x =  y
                                                   Px                .
                                                    (, )y = ⎨
                                                          ⎩ 0, 如果  x ≠  y
                    协议 2.  向量相等保密判定协议.
                    输入:Alice 和 Bob 分别输入有理数向量 X=(x 1 ,…,x n )和 Y=(y 1 ,…,y n ).
                    输出:Bob 输出 P(X,Y).
                    1.   将 X,Y 作为协议 1 的输入向量,Alice 和 Bob 调用协议 1,Alice 得到一个随机数 s>2,Bob 得到 z=sX⋅Y.
                                      2
                    2.   Bob 计算 u=z−|Y| ,并将 u 发送给 Alice.
                                      s
                                              2
                    3.   Alice 计算 w =   (u−  | X  | ) ,并将 w 发送给 Bob.
                                    s −  2
                    4.   Bob 输出 y=P(w,z).
                    协议 2 的正确性.  根据二元谓词 P(x,y)的定义,需要证明 w=z⇔X=Y.因此,只需证明下式成立即可:
                                                   w =  s  (z−  | X  | −  2  |Y  | ).
                                                                    2
                                                      s −  2
                    根据向量的运算性质,对于任意有理数向量 X,Y 以及关于 X 和 Y 的任意关系式 z=sX⋅Y,均有以下等式成立:
                                                 s            s
                                            w =    (u−  | X  | ) =  2  (z−  | X  | −  2  |Y  | ).
                                                                           2
                                               s −  2       s −  2
                 因此,协议 2 是正确的.
                    协议 2 的安全性.  在协议 2 执行中首先调用协议 1,Alice 得到一个保密随机数 s,Bob 得到保密值 z=sX⋅Y.
                    首先考虑 Alice 向量的安全性.由协议 1 的安全性证明,在调用协议 1 的过程中,Bob 最多可得到向量 X 的一
   304   305   306   307   308   309   310   311   312   313   314