system: [SYSTEM]

user: 3. 有理数域上集合成员关系保密判定 3.1. 编码方法 李顺东 [ 20 ] 等人为了解决多个有理数相等保密判定问题，提出了按位编码的方法，将一个有理数编码为一个矩阵，具体过程如下： 首先，对于参与者 P i 持有的有理数 x i = a i / b i = a i 1 a i 2 ⋯ a i s i / b i 1 b i 2 ⋯ b i s i ，其中 gcd ( a i ， b i ) = 1 ， a i k ， b i l ∈ { 0 ， 1 ， ⋯ ， 9 } ， 1 ≤ k ≤ s i ， 1 ≤ l ≤ q i ，统一其分子和分母位数分别为 s ， q ，位数不够的情况按下式转换数据， x i → 0 ⋯ 0 a i 1 a i 2 ⋯ a i s i 0 ⋯ 0 b i 1 b i 2 ⋯ b i q i → e i 1 ⋯ e i j ⋯ e i s + q (2) 即通过在分子分母之前补0将其拥有的有理数的分子分母位数统一，并将其分子分母连接起来，其中 1 ≤ j ≤ s + q 。其次，根据式(2)将有理数 x i 按位编码为矩阵： U ( s + q ) × 10 = [ u 1 1 u 2 1 ⋯ u 10 1 u 1 2 u 2 2 ⋯ u 10 2 ⋮ ⋮ ⋮ u 1 s + q u 2 s + q ⋯ u 10 s + q ] (3) 对于每一行 u j = [ u 1 j u 2 j ⋯ u 10 j ] ( 1 ≤ j ≤ s + q ) ，有： u k j = { 0 ，             e i j = k − 1 r k j ，         e i j ≠ k − 1 (4) 其中 r k j ∈ Z p * 且是非零的随机数。现将上述编码方法中的式(4)改为： u k j = { 1 ，           e i j = k − 1 r k j ，       e i j ≠ k − 1 (5) 其中 r k j ∈ Z p * 且是大于1的随机数。下文将利用改动后的方法设计有理数域上集合成员关系的保密判定协议。 3.2. 有理数域上数集成员关系的保密判定 问题描述 Alice拥有有理数 v 0 ，Bob拥有有理数集合 V = { v 1 ， v 2 ， ⋯ ， v m } 。双方希望在不泄露 v o ，V中元素及V的势的前提下合作计算函数 P ( v 0 ， V ) ：若 v 0 ∈ V ， P ( v 0 ， V ) = 1 ；否则， P ( v 0 ， V ) = 0 。 计算原理 Alice和Bob依据式(2)将有理数 v i ( i = 0 ， 1 ， ⋯ ， m ) 作如下转换： v i → e i 1 ⋯ e i j ⋯ e i s + q (6) 其中 1 ≤ j ≤ s + q 。Alice依据式(5)将有理数 v 0 编码为矩阵U，并将U发送给Bob。Bob对于其拥有的有理数 v i ，依据式(6)中的 e i j ( 1 ≤ j ≤ s + q ) 从 u 1 至 u s + q 中依次取出对应位置编码 u e i 1 + 1 1 ， u e i 2 + 1 2 ， ⋯ ， u e i s + q + 1 s + q ，计算 U i = u e i 1 + 1 1 u e i 2 + 1 2 ⋯ u e i s + q + 1 s + q ，容易得到以下命题是正确的。 命题1 P ( v 0 ， V ) = 1 当且仅当对于每一个 i = 1 ， 2 ， ⋯ ， m 存在 U i = 1 。 协议1有理数域上数集成员关系的保密判定协议 输入：Alice输入 v 0 ，Bob输入 V = { v 1 ， v 2 ， ⋯ ， v m } 。 输出： P ( v 0 ， V ) 准备：Alice和Bob依据式(2)对有理数 v 0 ， v i ( i = 1 ， 2 ， ⋯ ， m ) 进行转换得到式(6)。 1. Alice执行以下操作： 1) 产生ElGamal同态算法的密钥对 ( s k ， p k ) ； 2) 根据(5)式将 v 0 按位编码为矩阵U； 3) 利用公钥 p k 加密矩阵U中 u k j = 1 的分量，得加密矩阵： E ( U ) = [ u 1 1 u 2 1 ⋯ u 10 1 u 1 2 u 2 2 ⋯ u 10 2 ⋮ ⋮ ⋮ u 1 s + q u 2 s + q ⋯ u 10 s + q ] = [ ( c 11 1 ， c 12 1 ) ( c 21 1 ， c 22 1 ) ⋯ ( c ( 10 ) 1 1 ， c ( 10 ) 2 1 ) ( c 11 2 ， c 12 2 ) ( c 21 2 ， c 22 2 ) ⋯ ( c ( 10 ) 1 2 ， c ( 10 ) 2 2 ) ⋮ ⋮ ⋮ ( c 11 s + q ， c 12 s + q ) ( c 21 s + q ， c 22 s + q ) ⋯ ( c ( 10 ) 1 s + q ， c ( 10 ) 2 s + q ) ] (7) 其中 ( c ( e 0 j + 1 ) 1 j ， c ( e 0 j + 1 ) 2 j ) = E ( 1 ) ， ( c ( ≠ e 0 j + 1 ) 1 j ， c ( ≠ e 0 j + 1 ) 2 j ) ∈ Z p * × Z p * 为随机数对。Alice将矩阵 E ( U ) 及公钥 p k 发送 给Bob。 2. 对于每个 i = 1 ， 2 ， ⋯ ， m ，Bob执行以下操作： 1) 根据式 中的 e i j ( 1 ≤ j ≤ s + q ) 从 E ( U ) 中按位取出密文 E ( u e i 1 + 1 1 ) ， E ( u e i 2 + 1 2 ) ， ⋯ ， E ( u e i s + q + 1 s + q ) ，并计算： E ( U i ) = E ( u e i 1 + 1 1 ) E ( u e i 2 + 1 2 ) ⋯ E ( u e i s + q + 1 s + q ) (8) 2) 选取正整数l，满足 l > m 。从 Z p * 中选取 l − m 个大于1的随机数 r 1 ， r 2 ， ⋯ ， r l − m ，并计算其密文 E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m ) ； 3) 对密文 E ( U i ) ， E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m ) ( i = 1 ， 2 ， ⋯ ， m ) 的顺序进行随机置换，并按置换后的顺序发 送给Alice。 3. Alice解密收到的密文，记解密结果为 d k ( 1 ≤ k ≤ l ) 。若存在 d k = 1 ，Alice输出 P ( v 0 ， V ) = 1 ；否则，输出 P ( v 0 ， V ) = 0 。 正确性分析 命题1的正确性及本文采用的ElGamal加密算法的同态性保证了协议1的正确性。 安全性分析 Alice将加密矩阵 E ( U ) 发送给Bob，由于Bob没有私钥，因此无法获得有理数 v 0 的任何信息。Bob将随机置换后的l个密文 E ( U i ) ， E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m ) ( i = 1 ， 2 ， ⋯ ， m ) 发送给Alice，由于Alice不知道具体置换，因此无法推得集合V中任何元素的信息；同时，由于随机数 r 1 ， r 2 ， ⋯ ， r l − m 均大于1，则发送密文 E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m ) 给Alice的操作不影响协议的正确性且隐藏了集合V的势。 定理1 协议1在半诚实模型下是安全的。 证明：利用模拟范例证明协议1的安全性。在协议1中， f 1 ( v 0 ， V ) = f 2 ( v 0 ， V ) = P ( v 0 ， V ) 。首先构造模拟器 S 1 ， S 1 接受输入 ( v 0 ， P ( v 0 ， V ) ) ，按照如下方式运行： 1) 随机选取有理数集 V ′ = { v ′ 1 ， v ′ 2 ， ⋯ ， v ′ m } 使得 P ( v 0 ， V ) = P ( v 0 ， V ′ ) ，将 v 0 ， v ′ i ( i = 1 ， 2 ， ⋯ ， m ) 进行转换： v 0 → e 0 1 ⋯ e 0 j ⋯ e 0 s + q v ′ i → e i 1 ′ ⋯ e i j ′ ⋯ e i s + q ′ (9) 2) S 1 将 v 0 编码为矩阵U，并加密得矩阵 E ( U ) ，如式(7)所示。 3) 计算 E ( U ′ i ) = E ( u e i 1 ′ + 1 1 ) E ( u e i 2 ′ + 1 2 ) ⋯ E ( u e i s + q ′ + 1 s + q ) ， ( i = 1 ， 2 ， ⋯ ， m ) ，生成 l − m 个大于1的随机数 r ′ 1 ， r ′ 2 ， ⋯ ， r ′ l − m ，计算其密文 E ( r ′ 1 ) ， E ( r ′ 2 ) ， ⋯ ， E ( r ′ l − m ) 。 4) 解密 E ( U ′ i ) ， E ( r ′ 1 ) ， E ( r ′ 2 ) ， ⋯ ， E ( r ′ l − m ) ( i = 1 ， 2 ， ⋯ ， m ) ，记解密结果为 d ′ k ( 1 ≤ k ≤ l ) ，根据 d ′ k 可得 P ( v 0 ， V ′ ) 。 令 S 1 ( v 0 ， P ( v 0 ， V ) ) = { v 0 ， E ( U ′ i ) ， r ′ u ， E ( r ′ u ) ， P ( v 0 ， V ′ ) } ，其中 i = 1 ， 2 ， ⋯ ， m ， u = 1 ， 2 ， ⋯ ， l − m 。而协议执行中， V I E W 1 ( v 0 ， V ) = { v 0 ， E ( U i ) ， r u ， E ( r u ) ， P ( v 0 ， V ) } 。由于Bob没有私钥，根据ElGamal加密算法的语义安全性，对Bob来说， E ( U i )   ≡ c   E ( U ′ i ) 以及 E ( r u )   ≡ c   E ( r ′ u ) ，其中 i = 1 ， 2 ， ⋯ ， m ， u = 1 ， 2 ， ⋯ ， l − m 。由于随机数计算上不可区分，则 r u   ≡ c   r ′ u 。又因为 P ( v 0 ， V ) = P ( v 0 ， V ′ ) ，因此 { S 1 ( v 0 ， P ( v 0 ， V ) ) } = { V I E W 1 ( v 0 ， V ) } 。 S 2 可用类似方法构造，此处省略。定理1得证。 3.3. 有理数域上点集成员关系的保密判定 以n维有理点为例设计点集成员关系的保密判定协议。 问题描述 Alice拥有n维有理点 X = ( x 1 ， x 2 ， ⋯ ， x n ) ，Bob拥有n维有理点集合 Y = { Y 1 ， Y 2 ， ⋯ ， Y m } ，其中 Y t = ( y 1 t ， y 2 t ， ⋯ ， y n t ) ( t = 1 ， 2 ， ⋯ ， m ) 。双方希望在不泄露X、Y中元素及Y的势的前提下合作计算函数 P ( X ， Y ) ：若 X ∈ Y ， P ( X ， Y ) = 1 ；否则 P ( X ， Y ) = 0 。 计算原理 Alice和Bob依据式(2)将有理点 X = ( x 1 ， x 2 ， ⋯ ， x n ) ， Y t = ( y 1 t ， y 2 t ， ⋯ ， y n t )   ( t = 1 ， 2 ， ⋯ ， m ) 的坐标 作如下转换： x i → e i 1 ⋯ e i j ⋯ e i s + q y i t → e i t 1 ⋯ e i t j ⋯ e i t ( s + q ) (10) 其中 i = 1 ， 2 ， ⋯ ， n ， 1 ≤ j ≤ s + q 。对于每一个 i = 1 ， 2 ， ⋯ ， k ，Alice依据下式： u ( i ) k j = { 1 ，             e i j = k − 1 r k j ，         e i j ≠ k − 1 (11) 将 x i 编码为矩阵 U ( i ) ，并发送给Bob。对于每一个有理点 Y t ( t = 1 ， 2 ， ⋯ ， m ) 的坐标 y i t ( i = 1 ， 2 ， ⋯ ， n ) ，Bob依据式(10)中的 e i t j ，从 u ( i ) 1 至 u ( i ) s + q 中依次取出对应位置编码 u ( i ) e i t 1 + 1 1 ， u ( i ) e i t 2 + 1 2 ， ⋯ ， u ( i ) e i t ( s + q ) + 1 s + q ，并计算： U i t = u ( i ) e i t 1 + 1 1 ⋅ u ( i ) e i t 2 + 1 2 ⋅ ⋯ ⋅ u ( i ) e i t ( s + q ) + 1 s + q 。容易得到以下命题是正确的。 命题2 P ( X ， Y ) = 1 当且仅当对于每个 t = 1 ， 2 ， ⋯ ， m 存在 ∏ i = 1 n U i t = 1 。 协议2有理数域上点集成员关系保密判定协议 输入：Alice输入有理点 X = ( x 1 ， x 2 ， ⋯ ， x n ) ，Bob输入有理数集合 Y = { Y 1 ， Y 2 ， ⋯ ， Y m } ，其中 Y t = ( y 1 t ， y 2 t ， ⋯ ， y n t ) ( t = 1 ， 2 ， ⋯ ， m ) 。 输出： P ( X ， Y ) 。 准备：Alice和Bob据式(2)对有理点 X = ( x 1 ， x 2 ， ⋯ ， x n ) ， Y t = ( y 1 t ， y 2 t ， ⋯ ， y n t )   ( t = 1 ， 2 ， ⋯ ， m ) 的坐标转换得到式(10)。 1. Alice执行以下操作： 1) 产生ElGamal加密算法的密钥对 ( s k ， p k ) ； 2) 根据(11)式将 x i ( i = 1 ， 2 ， ⋯ ， n ) 按位编码为矩阵 U ( i ) ； 3) 利用公钥 p k 加密矩阵 U ( i )   ( i = 1 ， 2 ， ⋯ ， n ) 中 u ( i ) k j = 1 的分量，得加密矩阵： E ( U ( i ) ) = [ E ( u ( i ) 1 1 ) E ( u ( i ) 1 1 ) ⋯ E ( u ( i ) 10 1 ) E ( u ( i ) 1 2 ) E ( u ( i ) 1 2 ) ⋯ E ( u ( i ) 10 2 ) ⋮ ⋮ ⋮ E ( u ( i ) 1 s + q ) E ( u ( i ) 1 s + q ) ⋯ E ( u ( i ) 10 s + q ) ] = [ ( c 11 1 ， c 12 1 ) ( i ) ( c 21 1 ， c 22 1 ) ( i ) ⋯ ( c ( 10 ) 1 1 ， c ( 10 ) 2 1 ) ( i ) ( c 11 2 ， c 12 2 ) ( i ) ( c 21 2 ， c 22 2 ) ( i ) ⋯ ( c ( 10 ) 1 2 ， c ( 10 ) 2 2 ) ( i ) ⋮ ⋮ ⋮ ( c 11 s + q ， c 12 s + q ) ( i ) ( c 21 s + q ， c 22 s + q ) ( i ) ⋯ ( c ( 10 ) 1 s + q ， c ( 10 ) 2 s + q ) ( i ) ] (12) 其中 ( c ( e i j + 1 ) 1 j ， c ( e i j + 1 ) 2 j ) ( i ) = E ( 1 ) ， ( c ( ≠ e i j + 1 ) 1 j ， c ( ≠ e i j + 1 ) 2 j ) ( i ) ∈ Z p * × Z p * 为随机数对。Alice将矩阵 E ( i ) ( U ) 及公钥 p k 发送给Bob。 2. 对于每一个 t = 1 ， 2 ， ⋯ ， m 和 i = 1 ， 2 ， ⋯ ， n ，Bob执行以下操作： 1) 根据 y i t 从 E ( U ) 中按位取出密文 E ( u ( i ) e i t 1 + 1 1 ) ， E ( u ( i ) e i t 2 + 1 2 ) ， ⋯ ， E ( u ( i ) e i t ( s + q ) + 1 s + q ) ，计算： U i t = E ( u ( i ) e i t 1 + 1 1 ) E ( u ( i ) e i t 2 + 1 2 ) ⋯ E ( u ( i ) e i t ( s + q ) + 1 s + q ) (13) 进一步计算 U t = ∏ i = 1 n U i t 。 2) 选取正整数l，满足 l > m 。从 Z p * 中选取 l − m 个大于1的随机数 r 1 ， r 2 ， ⋯ ， r l − m ，并计算其密文 E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m ) ； 3) 对密文 E ( U i ) ， E ( r 1 ) ， E ( r 2 ) ， ⋯ ， E ( r l − m )   ( i = 1 ， 2 ， ⋯ ， m ) 的顺序进行随机置换，并按置换后的顺序发 送给Alice。 3. Alice解密收到的密文，记解密结果为 d k ( 1 ≤ k ≤ l ) 。若存在 d k = 1 ，Alice输出 P ( X ， Y ) = 1 ；否则，输出 P ( X ， Y ) = 0 。 正确性分析 命题2的正确性以及本文采用的ElGamal加密系统的同态性保证了协议2的正确性。 安全性分析 X、Y中元素及Y的势的隐私性可类似于协议1中 v o 、V中元素及V的势的隐私性进行分析。 定理2 协议2在半诚实模型下是安全的。 定理2的证明类似于定理1的证明，故省略。