基于格的IBE(入门学习)

0、矩阵知识点

(1)对于 m × n m \times n m×n 矩阵A,记作 C o l A Col A ColA
(2)维数 dimH :非零子空间H的维数(dimH)是H的任意一个基的向量个数
(3)秩 rankA:矩阵A的秩(rankA)是A列空间的维数,也就是矩阵A主元列的个数

一、Lattice(格)

1、格的定义

定义 1: Lattice是 R n \mathbb{R}^n Rn空间中的一个离散的、具有加法运算的子群。

定义 2: 格是 m m m 维欧氏空间 R m R^m Rm n ( m ≥ n ) n(m\ge n) n(mn) 个线性无关向量组 b 1 , b 2 , … , b n b_{1},b_{2},…,b_{n} b1,b2,,bn 的所有整系数线性组合,其整系数组合构成的集合称为格。 即: L ( B ) = { ∑ i = 1 n x i b i : x i ∈ Z , i = 1 , 2 , … , n } \mathcal L(B)=\left \{ \sum_{i=1}^{n}x_{i}b_{i}:x_{i}\in \mathbb{Z} ,i=1,2,…,n \right \} L(B)={i=1nxibi:xiZ,i=1,2,,n}, 其中向量组 b 1 , b 2 , … , b n b_{1},b_{2},…,b_{n} b1,b2,,bn 称为格的一组基,同一个格可以用不同的基表示。


m m m 称为格的维数, n n n 称为格的秩。当 m = n m = n m=n 时,该格为满秩格。 我们通常选用的格均为满秩格。

2、格的延展空间

格基实系数组合生成的空间称为格的延展空间。(区别于前面定义的整数):
s p a n ( L ( B ) ) = s p a n ( B ) = { B a ∣ a ∈ R n } span(L(B)) = span(B) =\{Ba | a \in R^n\} span(L(B))=span(B)={BaaRn}
满秩格的延展空间是整个n维空间

3、Lattice的基本属性:

(1)det( L \mathcal{L} L) = ∑ i b i ⋅ [ 0 , 1 ) = v o l ( P ( B ) ) \underset{i}{\sum} b_i \cdot [0,1) = vol(\mathcal{P}(B)) ibi[0,1)=vol(P(B))

代表 L \mathcal{L} L 的行列式将单位立方体映射到由向量基底 B B B 张成的区域的体积。无论我们怎么更换基向量,Determinant的大小,即基向量组成的多面体的体积是相同的。

(2) Lattice的密度: 格的密度是指格点在空间中的分布密度,可以通过单位体积内的格点数来衡量。计算密度时,通常考虑单位立方体或一个大球体中的格点数 S S S,然后除以该区域的体积 det( L \mathcal{L} L)


整数格中单个平行多面体内只有一个格点


(3) 最短距离: λ i \lambda_i λi 代表格中点与点之间的最短距离。 ( λ 1 ≤ λ 2 ≤ ⋯ ≤ λ n ) (\lambda_1 \le \lambda_2 \le \cdots \le \lambda_n) (λ1λ2λn)

一般为了方便理解,我们就把其中的一个点设置成坐标轴0点,然后 λ 1 \lambda_1 λ1就变成了距离0点距离最近的格点。

(4)覆盖半径:

n n n 维格, 以格点为球心, r r r 半径做 n n n 维球, 能覆盖整个空间的最小 r r r 称作覆盖半径。
严格地说,若我们定义空间中点到格的距离(Distance function):

μ ( t , L ) = min ⁡ x ∈ L ∥ t − x ∥ \mu (t,\mathcal L)=\min \limits_{x \in \mathcal L}\left \| t-x \right \| μ(t,L)=xLmintx

那么覆盖半径(Covering radius):

μ ( L ) = max ⁡ t ∈ s p a n ( L ) μ ( t , L ) \mu (\mathcal L)=\max \limits _{t \in span(\mathcal L)}\mu(t,\mathcal L) μ(L)=tspan(L)maxμ(t,L)


以格点为圆心画圆,直至所有空间被覆盖的时候,圆的半径的值即为覆盖半径。


(5) 格的平滑: 在格上引入噪音或随机扰动,以使格的统计特性更均匀或“平滑”。

对每个格点叠加随机噪音,噪音的分布特性相同,而具体每个格点的噪音值是随机的、不同的。

二、Lattice计算问题

1、最短向量问题(Shortest Vector Problem, SVP)

给定格 L \mathcal L L,找一个非零格向量 v v v,满足:
∀ u ∈ L ∖ { 0 } , ∥ v ∥ ≤ ∥ u ∥ \forall u \in \mathcal L\setminus \left \{ 0 \right \} ,\left \| v \right \| \le \left \| u \right \| uL{0},vu


画圆表示最短距离的意义:把其中的一个点设置成坐标轴0点,然后 λ 1 \lambda_1 λ1就变成了距离0点距离最近的格点。

2、最近向量问题(Closest Vector Problem, CVP)

给定格 L \mathcal L L 和目标向量 t ∈ R m t \in R^{m} tRm,找一个非零格向量 v v v,满足:

∀ u ∈ L ∖ { 0 } , ∥ v − t ∥ ≤ ∥ u − t ∥ \forall u \in \mathcal L\setminus \left \{ 0 \right \} ,\left \| v-t \right \| \le \left \| u-t \right \| uL{0},vtut

3、最小整数解问题(Short Integer Solution(SIS))
找到一个向量 z ∈ Z m z \in \mathbb{Z}^m zZm,使得 A z = 0   m o d   q Az = 0 ~mod ~q Az=0 mod q,且 z z z的范数 ∣ ∣ z ∣ ∣ ||z|| ∣∣z∣∣尽可能小。 其中 A ∈ Z n × m A \in \mathbb{Z}^{n \times m} AZn×m 是给定的矩阵,q是模数。

即 从n维整数空间中随机选取出m个向量,记为 a 1 , a 2 , ⋯ a m a_1,a_2, \cdots a_m a1,a2,am,然后找出一组非平凡解 z 1 , z 2 , ⋯ z m z_1,z_2, \cdots z_m z1,z2,zm,使得 z 1 a 1 + z 2 a 2 + ⋯ + z m a m = 0 z_1a_1 + z_2a_2 + \cdots + z_ma_m = 0 z1a1+z2a2++zmam=0

注意符号 Z q n Z_q^n Zqn 代表的是在n维空间中选取出的数据,而右下方的符号q代表的是取模,也就是把向量中的整数,全部模掉q,

SIS问题之所以难,难就难在所有的 z i ∈ { 0 , 1 , − 1 } z_i \in \{0,1,-1\} zi{0,1,1},当m很大时,组合的总数 3 m 3^m 3m 仍然是一个巨大的数字。随着 m 增加,搜索空间会以指数速度增长,使得穷举搜索变得不可行。那么求解这个问题就会变的非常困难。


4、最短线性无关向量问题(Shortest Independent Vector Problem (SIVP))


5、容错学习问题 (Learning with Errors Problem (LWE))

给定均匀随机生成的矩阵 A ∈ Z q n × m A\in Z^ {n\times m}_q AZqn×m, 向量 s ∈ Z q m s \in Z^m_q sZqm和 噪声值 e ∈ Z q n e \in Z^n_q eZqn都服从错误分布 X , b i = A i s + e \mathcal X, b_i={ A}_i s+e Xbi=Ais+e

三、基于格的密钥交换

(一)基于LWE/RLWE 及其变种问题: 由于 LWE/RLWE 及其变种问题存在误差,因此双方最终协商得到的两个近 似相等的值而不是相同的会话密钥。因此解决“误差问题”是构造抗量子攻击的 密钥交换协议的一个重难点。

(1)2009 年,Katz 等提出使用误差纠错码(error-correcting code,ECC)来解决误差问题

在这里插入图片描述

参考

[1] Lattice学习笔记01:格的简介
[2] Lattice学习笔记
[3] 格密码的基础概念(1)
[4] SIS与LWE问题

未完待续~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值