形式陈述
GSW 构造的核心关系是
(1) C v = μ v + e ( mod q ) . C 是公开密文矩阵 公理库 矩阵 Matrix 以有限行列集合为索引、取值于半环,并以中间指标求和定义乘法的函数。 ,v 是秘密向量,消息 μ 是近似特征值,e 是受控的小误差。普通矩阵乘法因而能对应明文乘法。[1] 要把这句话变成安全的同态加密 公理库 同态加密与紧致求值 Homomorphic encryption 在公钥加密上加入公开求值接口,分开求值正确性、紧致性、深度参数与输入保密,并用非紧致反例解释真正外包了什么。 ,还需规定 C , v 的特殊形状。
取正整数 n , m 与模数 q ≥ 3 ,令 ℓ = ⌊ log 2 q ⌋ + 1 、N = ( n + 1 ) ℓ 。对 a ∈ Z q n + 1 ,BD ( a ) 把每个坐标的标准代表分解成 ℓ 个低位在前的二进制位。定义
P 2 ( s ) = ( s 0 , 2 s 0 , … , 2 ℓ − 1 s 0 ; … ; s n , … , 2 ℓ − 1 s n ) . BD − 1 将每个长度 ℓ 的块按权重 1 , 2 , … , 2 ℓ − 1 加回,再模 q ;输入块无须已经是二进制。令
Flatten ( w ) = BD ( BD − 1 ( w ) ) . 对矩阵逐行应用这些操作。它们满足
(2) BD ( a ) ⋅ P 2 ( s ) = a ⋅ s , Flatten ( w ) ⋅ P 2 ( s ) = w ⋅ P 2 ( s ) ( mod q ) . 密钥、加密与一位解密
取均匀 t ∈ Z q n 、B ∈ Z q m × n ,独立抽误差 e 0 ← χ m ,令
b = B t + e 0 , A = ( b ∣ B ) , s = ( 1 , − t ) , v = P 2 ( s ) . 公开 A ,保留 s ,于是 A s = e 0 ( mod q ) 。加密一位 μ 时均匀抽 R ∈ { 0 , 1 } N × m ,输出
C = Flatten ( μ I N + BD ( R A ) ) . C 为 N × N 二进制矩阵,并有 C v = μ v + R e 0 。在 v 的第一块选一个已知坐标 v j = 2 j ∈ ( q / 4 , q / 2 ] ,计算 ( C v ) j ,按模 q 圆周距离选择更接近0还是 v j 。若误差各坐标的绝对值都小于 q / 8 ,这个解密正确。
安全性假设是所选参数的均匀秘密判定LWE 公理库 Learning With Errors 问题 Learning With Errors · LWE 从带小噪声的随机线性方程中恢复秘密或区分其分布的平均情形问题。 困难性;还要让 m 留足随机子集和熵余量。例如若每行统计误差上界为 η 0 = 1 2 q n + 1 / 2 m ,应使 N η 0 可忽略。正确性则要求噪声预算与所支持深度相容。这些是同时要满足的条件。
直觉
若没有误差,v 就是每份密文共同的特征向量,消息就是相应特征值。两个矩阵相乘时,特征值相乘,这是同态运算的代数来源。
真正困难的是误差。普通矩阵经过多轮乘法后,系数很快变大,接下来会把另一份密文的误差放大。gadget 表示允许每次把大系数重新写成位,而不改变矩阵作用于秘密 v 的结果。服务器不知道 v ,仍可完成这种“改写表示”。
图片加载失败
例子与边界
三个位怎样保住一个内积
取 q = 7 , ℓ = 3 ,a = ( 5 , 3 ) 、s = ( 2 , 1 ) 。低位在前的分解为
BD ( a ) = ( 1 , 0 , 1 ; 1 , 1 , 0 ) , P 2 ( s ) = ( 2 , 4 , 1 ; 1 , 2 , 4 ) ( mod 7 ) . 展开后的内积为 2 + 1 + 1 + 2 = 6 ,原内积为 5 ⋅ 2 + 3 ⋅ 1 = 13 ≡ 6 ( mod 7 ) 。这些位不是把秘密公开拆开;公开的是密文坐标的位,秘密向量的重复倍数只由持钥者计算。
再取一个不是二进制的块 w = ( 3 , 2 , 0 ) 。压回去得到 3 + 2 ⋅ 2 = 7 ≡ 0 ,再展开为 ( 0 , 0 , 0 ) 。它们与 ( s , 2 s , 4 s ) 的内积都模7等于零。这说明 Flatten 可以把系数从3、2改为0、0,同时保持式 (2)。
一个NAND门的完整误差账本
设 C i v = μ i v + e i ,其中 μ i ∈ { 0 , 1 } 。先乘:
C 1 C 2 v = C 1 ( μ 2 v + e 2 ) = μ 1 μ 2 v + μ 2 e 1 + C 1 e 2 . 所以 NAND 可定义为
C NAND = Flatten ( I N − C 1 C 2 ) . 新消息为 1 − μ 1 μ 2 ,新误差为 − ( μ 2 e 1 + C 1 e 2 ) 。因为进入每一门的 C 1 已经 Flatten,系数都是0或1,用无穷范数与行和界 公理库 矩阵范数与诱导算子范数 Matrix norm · Induced matrix norm · Operator norm of a matrix 用诱导范数和常用可计算矩阵范数度量线性映射的放大能力,并区分算子范数、Frobenius 范数与谱半径。 可得
‖ e out ‖ ∞ ≤ ‖ e 1 ‖ ∞ + N ‖ e 2 ‖ ∞ . 若两输入都以 E 为界,则下一层以 ( N + 1 ) E 为界。对深度至多 L 的 NAND 电路,保守充分条件为
(3) ( N + 1 ) L E 0 < q / 8 , E 0 ≥ ‖ R e 0 ‖ ∞ . NAND 是通用门,因此这一账本覆盖通用 Boolean 计算。若直接把加法当 XOR,却仍把中间消息当作0或1,误差分析就会用错:模 q 的 1 + 1 是2,不是0。
例如只检查算术预算,取 q = 65537 , n = 1 ,则 ℓ = 17 , N = 34 。假设新鲜误差界 E 0 = 1 ,逐层上界为1、35、1225、42875。前两层小于 q / 8 = 8192.125 ,第三层的这一充分证书失效。失去上界证书不表示每个具体密文必然解错;也不表示这些微小维数参数安全。
Flatten没有洗掉噪声
式 (2) 保持 C v ,所以它也保持已有误差。它修复的是下一步误差将被多大系数放大 的问题,而非把已经增长的误差降回新鲜水平。
如果省去 Flatten,下一次左乘矩阵的行和可能接近 N q ,式 (3) 就不再成立。这是位分解在构造中的必要作用,不是为了让文件看起来更像二进制。
推论与应用
安全证明用两段混合 公理库 混合论证 Hybrid argument 在一串相邻实验间逐步替换组件并累加不可区分优势的证明方法。 。先以 LWE 把 A 换为均匀矩阵。随后每行 r T A 由剩余哈希引理的有限输出集版本 公理库 剩余哈希引理 Leftover hash lemma · LHL 二通用哈希把弱随机源压缩为公开种子和经典旁信息后仍接近均匀的输出,误差由平均条件最小熵控制;条件化与 Jensen 不等式给出证明,三比特例子精确算出联合距离。 接近均匀,N 行的联合距离可用逐行替换界为 N η 0 。矩阵 μ BD − 1 ( I N ) 只是对均匀矩阵加一个固定偏移,因此隐藏消息;再应用公开的 BD 不增加区分能力。
每份 Flatten 后的密文有 N 2 个比特,与已求值的门数无关;朴素每门矩阵乘法用 O ( N 3 ) 次模运算,解密只需一行与 v 作内积,即 O ( N ) 次模运算。N , q 与噪声参数可依赖预选深度 L ,不能把这个依赖从性能结论里抹掉。
本构造的矩阵格式直接维持固定维数,不需要先乘成秘密的平方再做重线性化 公理库 同态乘法后的重线性化 Relinearization 在明确的模数与低位消息模型中,把同态乘法产生的秘密平方项用基数分解和求值密钥压回线性密文,并核算新增噪声。 。若希望在固定噪声参数下继续更深计算,可研究自举 公理库 同态自举刷新 Bootstrapping for FHE 把旧密文作为公开常量、旧私钥位作为新密钥下的密文,求值解密电路以刷新表示,并区分功能余量、独立密钥链和循环安全。 ;公开加密私钥带来的安全条件需另外证明,原有 LWE 公钥混合并未自动包含它。
参考资料