格密码基础

格(Lattice)

        什么是 lattice? 它是 n 维空间中具有周期结构的点集合,如图1所示。

        让 v1,v2,⋯,vn 是在 n 维欧几里得空间(Euclidean space) Rn 中的独立向量(independent vectors)。格(lattice)记作 L ,它是由 {v1,v2,⋯,vn} 的线性组合的集合, v1,v2,⋯,vn 的系数为整数:

                L={a1v1+a2v2+⋯+anvn,ai∈Z}

        备注: L 的基是生成 L 的 n 个独立向量的任意集合。格子有无穷多个基。

        为了方便,通常可以把 {v1,v2,⋯,vn} 的线性组合写作矩阵形式。换句话说,假设 {v1,v2,⋯,vn} 是格 L 的一组基,因此可以化简为:

        如果用线在所有格都连起来,那么格在 Rn 中就是一个拥有周期性且无限延伸的网格,在二维平面上就好像切起来的砖头一样好看。

         如果是个n维度的话格就是一个圆吗?

  • 如图2中的(a)所示,通过 (1,0)T 和(0,1)T 生成的格为 Z2 ,包含所有整数的格(Integer Lattice)。
  • 当然,整数格的基向量并不是唯一的,如图2中的(b)所示,通过 (1,1)T 和(2,1)T 或(2005,1)T 和(2006,1)T 同样能够生成 Z2。
  • 如图2中(c)所示,(1,1)T和(2,0)T不是 Z2的基向量,相反,它生成的整数格中,整数坐标的和为偶数。以上,所有的例子都是满格。
  • 如图2(d)所示,一个不是满格的例子是 L((2,1)T) 。 它是秩为1的2维格。
  • 最后, Z=L((1)) 是一维满格。

        看一个密码学方案:它是 lattice 可用于传统公钥密码分析的例证,另外也是 NTRU 公钥密码体系的一个低端版本。 

        首先,Alice 选择一个大整数 q 作为公共参数。然后选择两个比较小的整数 f,g 满足:

        接下来,Alice 计算:h\equiv f^{-1}g(mod q)

        这里f虽然很小但是逆元后会很大,Alice的公钥是h,私钥是<f,g>

        在来考虑 Bob 如何给 Alice 发送消息。首先,Bob 有一个小于 q/4 的明文 m,然后他随机选择整数 r<q/2. 计算:

        e≡rh+m(modq)将 e 作为密文发送给 Alice. 接下来 Alice 如此解密:先计算

                a≡fe(modq)

        然后计算

                b≡f−1a(modg)

        其中 f 的逆元也是在模 g 群中的。

        我们断言这里求出来的 b,就等于 m.

  首先,有 a 满足a≡fe≡rg+fm(modq)我们注意到,从而知道 a 就是 rg+fm 的真实值,即a=rg+fm

  接下来的步骤就顺理成章了。将 a 模掉 g,分离出 fm(modg);然后乘以 f 的逆元得到 m(modg). 而 m 是小于 g 的,从而这个 m 是真实值。

        

现在,我们来考虑敌手 Eve 如何攻击这个密码体系。仅仅已知公钥 (q,h),她并不能找到真正的 (f,g);但她可以找到一组 (F,G),如果 (F,G) 在解密时表现与 (f,g) 相同,那么 Eve 就可以完成解密工作。具体而言,她需要找到 F,G 满足Fh≡G(modq),F=O(q),G=O(q)显然真正的 (f,g) 是合法的 (F,G). 现在的问题是为什么这样的 (F,G) 可以用于解密。我们有Fe≡F⋅(rh+m)≡rG+Fm(modq)注意到这求出了 rG+Fm 的真实值。继续按照原先的解密算法来操作,模掉 G 获得 Fm(modG),乘以 F 的逆元,即可恢复出 m.

  也就是说,Eve 只需要找到合法的 (F,G),就可以攻破这个密码体系。将 Fh≡G(modR) 改写为等价形式 Fh=G+qR,那么 Eve 的任务就是找到足够小的 F,G 使得F(1,h)−R(0,q)=(F,G)

  这个式子等价于 (1,h),(0,q) 这两个向量以 F,R 为系数进行线性组合。如果我们能找到合适的 F,R,使得线性组合出来的向量足够短,那么我们就找到了合法的 (F,G) 来攻击密码体系。

  上面的问题可以概括为:有两个已知的向量,需要找出一套线性组合系数(必须是整数),来生成一个足够短的向量。Eve 的任务是:已知 v1=(1,h) 和 v2=(0,q),长度均为 O(q),要寻找它们的线性组合 w=a1v1+a2v2,长度为 O(q). 要求系数 a1,a2 均为整数。

  从 lattice 的角度看,Eve 是在一个 lattice L 中寻找一个很短的向量:L={a1v1+a2v2:a1,a2∈Z}

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值