system: [SYSTEM]

user: 3. 方案设计 3.1. 主要思路 本文中，我们设计了一种利用稠密的随机矩阵对用户的输入矩阵X进行变换的方法。下面，我们先介绍方案的整体思路。 为了保护矩阵X，我们将使用随机的稠密矩阵D L 和D R 对矩阵X进行变换，它们分别对X进行左乘和右乘，即变换后的矩阵 X ′ = D L X D R 。当矩阵的维度都是n × n时，计算两个矩阵相乘的时间复杂度是O(n 3 )，因此简单使用这种方法虽然可以保护X的隐私性，但是无法降低用户端的计算开销。这里，我们使用如下方式生成随机的稠密矩阵D L 和D R 。令 D L = L + P Q ， ，这里L和R是随机的对角矩阵，P和U是n*1的随机矩阵，Q和V是1 × n的随机矩阵。假设L和R的对角线元素依次分别是 ( L 1 ， L 2 ， ⋯ ， L n ) 和 ( R 1 ， R 2 ， ⋯ ， R n ) ， P = ( P 1 ， P 2 ， ⋯ ， P n ) T ， U = ( U 1 ， U 2 ， ⋯ ， U n ) T ， Q = ( Q 1 ， Q 2 ， ⋯ ， Q n ) ， V = ( V 1 ， V 2 ， ⋯ ， V n ) 。那么， 。不难看出，LX和P(QX)可以在O(n 2 )时间内完成，因此D L X的计算复杂度是O(n 2 )。类似地，我们可以在O(n 2 )时间内求出 X ′ = D L X D R 。从安全性上看，D L 和D R 都是稠密矩阵，对矩阵X的变换过程同时包括随机的乘法和加法操作，因此可以避免文献 [ 8 ] 方案的安全问题。用户得到X'后，将其发送给云服务器。在云服务器返回矩阵X'的逆矩阵Y'给用户后，用户可以用如下方法解密Y'，得到X的逆矩阵Y。 Y = D R Y ′ D L . 易于说明，用户可以在O(n 2 )时间内完成 Y = D R Y ′ D L 计算。此外，当且仅当矩阵D L 和D R 都是可逆矩阵， 成立。下面，我们将介绍矩阵D L 和D R 中每个元素的生成方法，这个方法可以确保D L 和D R 都是可逆矩阵。 为此，我们先介绍以下引理。 引理1 ( [ 7 ] )：假设矩阵M是一个方阵，那么将M的任何一列乘以一个倍数然后加到另外一列，不会改变M的行列式。 引理2 ( [ 9 ] )：假设矩阵E，F，G，H的维度分别是a × a，a × b，b × a，b × b，且矩阵H是可逆的，那么 det [ E F G H ] = det ( H ) ∗ det ( E − F H − 1 G ) . 基于引理1和2，我们可以得到如下定理1。 定理1：假设 D L = L + P Q ， ，其中L和R是随机的对角矩阵，P和U是n × 1的随机矩阵，Q和V是1 × n的随机矩阵。L和R的对角线元素依次分别是 ( L 1 ， L 2 ， ⋯ ， L n ) 和 ( R 1 ， R 2 ， ⋯ ， R n ) ， P = ( P 1 ， P 2 ， ⋯ ， P n ) T ， ， Q = ( Q 1 ， Q 2 ， ⋯ ， Q n ) ， V = ( V 1 ， V 2 ， ⋯ ， V n ) 。如果 Q 1 = V 1 = 1 ，那么 det ( D L ) = ( 1 + P 1 L 1 + ∑ i = 2 n P i Q i L i ) ∗ ∏ j = 1 n L j ， det ( D R ) = ( 1 + U 1 R 1 + ∑ i = 2 n U i V i R i ) ∗ ∏ j = 1 n R j ， 即 det ( D L ) = ( 1 + Q L − 1 P ) ∗ det ( L ) ， det ( D R ) = ( 1 + V R − 1 U ) ∗ det ( R ) 。 证明：由于矩阵D L 和D R 的情况类似，下面我们先证明矩阵D L 的行列式满足定理1。根据定理1的说明，我们可以看出 D L = [ P 1 + L 1 Q 2 P 1 ⋯ Q n P 1 P 2 Q 2 P 2 + L 2 ⋯ Q n P 2 ⋮ ⋮ ⋱ ⋮ P n Q 2 P n ⋯ Q n P n + L n ] . 基于引理1，如果我们将矩阵D L 的第一列乘以−Q i ，然后加到第i列 ，不会改变矩阵D L 的行列式。即在矩阵D L 的第i列加上 − Q i ∗ ( P 1 + L 1 ， P 2 ， ⋯ ， P n ) 后，可以得到 det ( D L ) = det [ P 1 + L 1 − Q 2 L 1 ⋯ − Q n L 1 P 2 L 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ P n 0 ⋯ L n ] . 令矩阵 E = [ P 1 + L 1 ] ， F = [ − Q 2 L 1 ， ⋯ ， − Q n L 1 ] ， G = [ P 2 ， ⋯ ， P n ] T ，H为一个 ( n − 1 ) ∗ ( n − 1 ) 的对角矩阵，且H的对角元素依次为 L 2 ， L 3 ， ⋯ ， L n 。基于引理2，我们可以得到 det ( D L ) = det [ E F G H ] = det ( H ) ∗ det ( E − F H − 1 G ) . 此外， det ( E − F H − 1 G ) = P 1 + L 1 − ∑ i = 2 n − P i Q i D 1 L i ， det ( H ) = ∏ j = 2 n L j 。因此， det ( D L ) = ( P 1 + L 1 + ∑ i = 2 n P i Q i D 1 L i ) ∗ ∏ j = 2 n L j = ( 1 + P 1 L 1 + ∑ i = 2 n P i Q i L i ) ∗ ∏ j = 1 n L j = det ( D L ) = ( 1 + Q L − 1 P ) ∗ det ( L ) . 相似地，可以证明 det ( D R ) = ( 1 + U 1 R 1 + ∑ i = 2 n U i V i R i ) ∗ ∏ j = 1 n R j = ( 1 + V R − 1 U ) ∗ det ( R ) 。 综上所述，定理1是正确的。 根据定理1，通过如下方式我们可以确保矩阵D L 和D R 都是可逆的。 1) 对于i = 1到n，随机选择非零的L i 和R i 。 2) 设定 Q 1 = V 1 = 1 ，并对于i = 2到n，随机选择非零的{P i ， Q i }和{U i ， V i }；然后随机选择P 1 和U 1 ，使得 且 U 1 ≠ − R 1 ∗ ( 1 + ∑ i = 2 n U i V i R i ) 。 易于看出，上述方法可以确保 det ( D L ) ≠ 0 且 det ( D R ) ≠ 0 ，从而可以确保矩阵D L 和D R 都是可逆的。 3.2. 方案步骤 基于上述思路，我们所提方案的具体步骤如下。 • Gen：用户1) 随机生成n × n对角矩阵L和R，其对角线元素依次分别是 ( L 1 ， L 2 ， ⋯ ， L n ) 和 ( R 1 ， R 2 ， ⋯ ， R n ) ，并且满足任意的L i 和R i 都不等于0。2) 对于I = 2到n，分别随机选择非零的{P i ， Q i }和{U i ， V i }；然后随机选择P 1 和U 1 ，使得 P 1 ≠ − L 1 ∗ ( 1 + ∑ i = 2 n P i Q i L i ) 且 U 1 ≠ − R 1 ∗ ( 1 + ∑ i = 2 n U i V i R i ) 。3) 设定矩阵 P = ( P 1 ， P 2 ， ⋯ ， P n ) T ， U = ( U 1 ， U 2 ， ⋯ ， U n ) T ， Q = ( 1 ， Q 2 ， ⋯ ， Q n ) ， V = ( 1 ， V 2 ， ⋯ ， V n ) 。4) 将密钥K设置为 K = { L ， P ， Q ， R ， U ， V } 。 • Enc：用户利用密钥K将私有输入X加密成X'，使得 X ′ = ( L + P Q ) X ( R + U V ) 。 • Compute：用户将加密后的矩阵X'发送给云服务器。云服务器计算矩阵X'的逆矩阵Y'，并将矩阵Y'返回给用户。 • Verify：用户随机生成n × 1的矩阵 S = ( S 1 ， S 2 ， ⋯ ， S n ) T ，然后计算 S ′ = X ′ ( Y ′ S ) 。用户比较S'和S，如果 S'=S，则返回值Y'通过验证；否则Y'没通过验证。 • Dec：在验证Y'正确的情况下，用户利用密钥K解密云服务器返回的矩阵Y'，得到矩阵 Y = ( R + U V ) Y ′ ( L + P Q ) 。