同态加密(1) GSW加密方案

GSW方案是由Craig Gentry1, Amit Sahai与Brent Waters于2013年提出的方案, 发表于论文[GSW13] 2中.

GSW方案确实如论文标题一样, 概念清晰明了, 其Intuition简单到一个刚学完线性代数的大一新生也能理解. GSW还支持基于属性的加密, 但本文中我们将不介绍这一部分内容.

当然, 完全理解GSW方案仍然需要用到一些比较进阶的知识, 如LWE问题的困难性等. 我们在本文中不会对这些知识做过多的介绍, 这些知识将在今后其他的博文中介绍. 关于同态加密的基础知识可以参阅博文同态加密(0) 基础概念, 这篇博文完成后, 地址将被更新到这里.

Basic Intuition

密文的基本格式

最基本的GSW同态加密方案的私钥( s k sk sk)是一个向量 v ∈ Z q N \mathbf v\in\mathbb Z_q^N vZqN3, 而所有的明文 μ i ∈ { 0 , 1 } \mu_i\in\{0,1\} μi{ 0,1}都被加密一个矩阵 C i ∈ Z q N × N C_i\in\mathbb Z_q^{N\times N} CiZqN×N中, 其中 C i C_i Ci是以 v v v为近似特征向量并以 μ i \mu_i μi为近似特征值的矩阵, 即我们要求
C i v ≈ μ i v C_i\mathbf v\approx \mu_i \mathbf v Civμiv

这里可以看出, 我们只需要挑选 v \mathbf v v中非 0 0 0的位(最好是选较大的位), 如第 j j j v j v_j vj, 并比较 v j v_j vj μ i v j \mu_iv_j μivj的值就可以解出 μ i \mu_i μi的值.

一个需要注意的地方就是, 虽然 μ i \mu_i μi取自 { 0 , 1 } \{0,1\} { 0,1}, 但被视作是 Z q \mathbb Z_q Zq中的元素, 因此具体的运算也是按照 Z q \mathbb Z_q Zq的运算方式来进行.

我们也可以将噪声(error)显式地写出来, 记作
C i v = μ i v + e C_i\mathbf v=\mu_i\mathbf v+\mathbf e Civ=μiv+e
其中 e \mathbf e e是非常小的向量. 因此可以看出, 如果 e \mathbf e e确实是一个较小的噪声, 那么我们就可以正确地解出 μ i \mu_i μi.

乘法同态性质

现在我们来验证该加密方案具有同态性质. 现在假设有两个密文 C 1 , C 2 C_1, C_2 C1,C2, 对对应的明文分别是 μ 1 , μ 2 \mu_1,\mu_2 μ1,μ2, 即
C 1 v = μ 1 v + e 1 C 2 v = μ 2 v + e 2 C_1\mathbf v=\mu_1\mathbf v+\mathbf e_1\\ C_2\mathbf v=\mu_2\mathbf v+\mathbf e_2\\ C1v=μ1v+e1C2v=μ2v+e2
其中 e 1 , e 2 \mathbf e_1,\mathbf e_2 e1,e2均为较小的噪声, 那么令 C × = C 1 ⋅ C 2 C^\times=C_1\cdot C_2 C×=C1C2, 我们检验 C × C^\times C×的解密结果
C × v = ( C 1 ⋅ C 2 ) v = C 1 ( μ 2 v + e 2 ) = μ 2 ( μ 1 v + e 1 ) + C 1 e 2 = μ 1 μ 2 v + μ 2 e 1 + C 1 e 2 \begin{aligned} C^\times\mathbf v &=(C_1\cdot C_2)\mathbf v=C_1(\mu_2\mathbf v+\mathbf e_2)=\mu_2(\mu_1\mathbf v+\mathbf e_1)+C_1\mathbf e_2\\ &= \mu_1\mu_2\mathbf v+\mu_2\mathbf e_1+C_1\mathbf e_2 \end{aligned} C×v=(C1C2)v=C1(μ2v+e2)=μ2(μ1v+e1)+C1e2=μ1μ2v+μ2e1+C1e2
这里可以看出, μ 2 e 1 \mu_2\mathbf e_1 μ2e1确实是一个比较小的噪声项, 但是要让 C × C^\times C×的噪声比较小, 那么就需要让 C 1 C_1 C1是一个较小的矩阵(即其最大的元素较小), 我们稍后会解释如何做到这一点.

虽然说是乘法同态性质, 但是由于 μ i ∈ { 0 , 1 } \mu_i\in\{0,1\} μi{ 0,1}, 我们也可以将 C × C^\times

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值