格与密码学:LLL算法及其应用
1. BKZ - LLL算法概述
在格与密码学领域,BKZ - LLL算法是一种重要的格基约化算法。与标准LLL算法不同,BKZ - LLL算法处理长度为β的向量块,即(v_k, v_{k + 1}, \cdots, v_{k + \beta - 1}),并将该块中的向量替换为张成相同子格的KZ约化基。
当β较大时,计算KZ约化基会花费较长时间,但该算法的最终输出在理论和实践上都会得到改善。定理6.75表明,如果在维度为n的格L上使用大小为β的块运行BKZ - LLL算法,该算法保证在不超过(O(\beta^{c\beta}n^d))步内终止,其中c和d是小常数。并且,算法找到的最小向量(v_1)满足(|v_1| \leq (\frac{\beta}{\pi e})^{\frac{n - 1}{\beta - 1}} \min_{0 \neq v \in L} |v|)。
与标准LLL算法相比,BKZ - LLL算法在解决近似最短向量问题(apprSVP)时,精度更高,但运行时间也更长。随着β的增加,BKZ - LLL算法的精度提高,但如果要在(O(n^{\delta}))的因子内解决apprSVP问题,对于大维度n,需要取(\beta \approx \frac{n}{\delta}),此时BKZ - LLL算法的运行时间会呈指数级增长。
2. LLL算法在密码分析中的应用
LLL算法在密码分析中有广泛的应用,包括对背包公钥密码系统的攻击,以及对基于格的密码系统(如Ajtai - Dwork、GGH和NTRU)的分析。此外,在某些情况下,还存在对RSA的格约化攻击。
2.1 同余密码系统
同余密码系统中,Alice选择模数q和两个小的秘密整数f和g,其公钥为(h \equiv f^{-1}g \pmod{q})。Eve知道q和h的值,想要恢复私钥f。一种方法是在由(v_1 = (1, h))和(v_2 = (0, q))生成的格L中寻找小向量,因为向量((f, g))在L中,且根据f和g的大小约束,它很可能是L中最短的非零向量。
例如,当(q = 122430513841),(h = 39245579300)时,应用高斯格约化算法对由((1, 39245579300))和((0, 122430513841))生成的格进行约化,算法经过11次迭代找到短基((-231231, -195698))和((-368222, 217835)),从而得到Alice的私钥(f = 231231)和(g = 195698)。
操作步骤如下:
1. 确定公钥h和模数q。
2. 生成格的基向量(v_1 = (1, h))和(v_2 = (0, q))。
3. 应用高斯格约化算法对格进行约化。
4. 根据约化结果得到私钥f和g。
2.2 应用LLL算法解决背包问题
背包问题可以转化为格问题。对于由(M = (m_1, \cdots, m_n))和S描述的背包问题,可以使用由矩阵(6.4)的行给出的基生成的格(L_{M,S})。目标向量(t \in L_{M,S})的长度(|t| = \sqrt{n}),可能约为(L_{M,S})中其他非零向量长度的一半。
例如,对于(M = (89, 243, 212, 150, 245))和(S = 546)的背包问题,应用LLL算法对由矩阵
[
A_{M,S} =
\begin{pmatrix}
2 & 0 & 0 & 0 & 0 & 89 \
0 & 2 & 0 & 0 & 0 & 243 \
0 & 0 & 2 & 0 & 0 & 212 \
0 & 0 & 0 & 2 & 0 & 150 \
0 & 0 & 0 & 0 & 2 & 245 \
1 & 1 & 1 & 1 & 1 & 546
\end{pmatrix}
]
的行生成的格进行约化。LLL算法进行21次交换,返回约化基。将约化基中的短向量((-1, 1, -1, 1, -1, 0))表示为原基向量的线性组合,得到((-1, 0, -1, 0, -1, 1)A_{M,S}),从而得到背包问题的解(-89 - 212 - 245 + 546 = 0)。
操作步骤如下:
1. 根据背包问题的参数M和S,构造矩阵(A_{M,S})。
2. 应用LLL算法对由(A_{M,S})的行生成的格进行约化。
3. 将约化基中的短向量表示为原基向量的线性组合,得到背包问题的解。
在使用LLL算法解决子集和问题时,将(m_1, \cdots, m_n, S)乘以一个大常数C通常是有帮助的。这会使矩阵(6.4)的最后一列乘以C,行列式乘以C,高斯期望最短向量乘以(C^{\frac{1}{n + 1}}),从而使目标向量相对更容易被LLL算法找到。
2.3 应用LLL算法破解GGH密码系统
在GGH密码系统中,Alice的公钥是由矩阵
[
\begin{pmatrix}
-4179163 & -1882253 & 583183 \
-3184353 & -1434201 & 444361 \
-5277320 & -2376852 & 736426
\end{pmatrix}
]
的行生成的格L,Bob的加密消息为(e = (-79081427, -35617462, 11035473))。Eve想要找到L中接近e的向量。
她首先应用LLL算法对格L进行约化,找到准正交基
[
\begin{pmatrix}
36 & -30 & -86 \
61 & 11 & 67 \
-10 & 102 & -40
\end{pmatrix}
]
该基的Hadamard比率(H = 0.956083),比Alice的好基还要好。然后,Eve应用Babai算法找到一个接近e的格向量(v = (79081423, 35617459, -11035471)),最后将v表示为原格向量的线性组合(v = -86w_1 + 35w_2 + 32w_3),从而恢复Bob的明文(m = (-86, 35, 32))。
操作步骤如下:
1. 确定公钥格L和加密消息e。
2. 应用LLL算法对格L进行约化,得到准正交基。
3. 计算准正交基的Hadamard比率。
4. 应用Babai算法找到接近e的格向量v。
5. 将v表示为原格向量的线性组合,恢复明文m。
2.4 应用LLL算法破解NTRU密码系统
对于NTRU密码系统,当(N = 7),(q = 41),公钥为(h(x) = 30 + 26x + 8x^2 + 38x^3 + 2x^4 + 40x^5 + 20x^6)时,相关的NTRU格由矩阵
[
M_{NTRU}^h =
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 & 0 & 0 & 30 & 26 & 8 & 38 & 2 & 40 & 20 \
0 & 1 & 0 & 0 & 0 & 0 & 0 & 20 & 30 & 26 & 8 & 38 & 2 & 40 \
0 & 0 & 1 & 0 & 0 & 0 & 0 & 40 & 20 & 30 & 26 & 8 & 38 & 2 \
0 & 0 & 0 & 1 & 0 & 0 & 0 & 2 & 40 & 20 & 30 & 26 & 8 & 38 \
0 & 0 & 0 & 0 & 1 & 0 & 0 & 38 & 2 & 40 & 20 & 30 & 26 & 8 \
0 & 0 & 0 & 0 & 0 & 1 & 0 & 8 & 38 & 2 & 40 & 20 & 30 & 26 \
0 & 0 & 0 & 0 & 0 & 0 & 1 & 26 & 8 & 38 & 2 & 40 & 20 & 30 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 & 0 & 0 & 0 & 0 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 & 0 & 0 & 0 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 & 0 & 0 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 & 0 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 41
\end{pmatrix}
]
的行生成。Eve应用LLL约化算法对(M_{NTRU}^h)进行约化,算法进行96次交换步骤,返回LLL约化矩阵(M_{NTRU}^{red})。
通过计算Hadamard比率,比较原基和约化基的相对准正交性,(H(M_{NTRU}^h) = 0.1184),(H(M_{NTRU}^{red}) = 0.8574)。约化基中的最小向量是约化矩阵的第一行((1, 0, -1, 1, 0, -1, -1, -1, 0, -1, 0, 1, 1, 0)),将其拆分为两个多项式(f’(x) = 1 - x^2 + x^3 - x^5 - x^6)和(g’(x) = -1 - x^2 + x^4 + x^5),虽然它们不是Alice的原始私钥多项式,但可以用于解密消息。
操作步骤如下:
1. 确定NTRU密码系统的参数N、q和公钥h(x)。
2. 构造NTRU格的生成矩阵(M_{NTRU}^h)。
3. 应用LLL约化算法对(M_{NTRU}^h)进行约化,得到约化矩阵(M_{NTRU}^{red})。
4. 计算原基和约化基的Hadamard比率。
5. 从约化基中提取最小向量,拆分为多项式,用于解密消息。
3. 总结
LLL算法在密码分析中具有重要作用,通过对不同密码系统的应用实例可以看出,它能够有效地解决一些密码学中的难题。然而,在实际应用中,为了保证密码系统的安全性,通常需要使用更高维度的格,这也增加了密码分析的难度。同时,不同的格约化算法和密码分析方法在精度和运行时间上存在权衡,需要根据具体情况进行选择。
下面是一个简单的流程图,展示了应用LLL算法破解密码系统的一般步骤:
graph TD;
A[确定密码系统类型] --> B[收集公钥和相关参数]
B --> C[构造格的生成矩阵]
C --> D[应用LLL算法进行约化]
D --> E[计算相关指标(如Hadamard比率)]
E --> F[使用约化结果破解密码(如应用Babai算法)]
F --> G[恢复明文]
总之,格与密码学的研究是一个充满挑战和机遇的领域,LLL算法及其相关技术的不断发展将为密码分析和密码设计带来新的思路和方法。
格与密码学:LLL算法及其应用
4. 练习题解析
为了更好地掌握格与密码学的相关知识,下面对一些练习题进行解析。
4.1 同余密码系统练习题
- 问题 :Alice使用同余密码系统,(q = 918293817),私钥((f, g) = (19928, 18643))。求Alice的公钥(h);Alice收到Bob的密文(e = 619168806),求明文;Bob使用临时密钥(r = 19564)加密明文(m = 10220),求Bob发送给Alice的密文。
-
解答
:
- 求公钥(h) :根据公钥定义(h \equiv f^{-1}g \pmod{q}),先求(f)在模(q)下的逆元(f^{-1}),然后计算(h)。
- 求明文 :根据加密公式(e \equiv r \cdot h + m \pmod{q}),已知(e)、(h)和(r),可求出明文(m)。
- 求密文 :将(m)和(r)代入加密公式计算密文(e)。
操作步骤如下:
1. 计算(f)在模(q)下的逆元(f^{-1})。
2. 计算公钥(h = f^{-1} \cdot g \pmod{q})。
3. 根据加密公式(e \equiv r \cdot h + m \pmod{q}),已知(e)和(h),求明文(m = e - r \cdot h \pmod{q})。
4. 计算密文(e = r \cdot h + m \pmod{q})。
4.2 子集和问题练习题
- 问题 :使用相关算法解决不同的子集和问题,如(M = (3, 7, 19, 43, 89, 195)),(S = 260)等。
- 解答 :可以使用命题6.5中描述的算法来解决子集和问题。如果得到的“解”不正确,需要分析问题出在哪里。
操作步骤如下:
1. 按照命题6.5的算法步骤进行计算。
2. 检查得到的解是否满足子集和问题的条件。
3. 如果解不正确,分析可能的原因,如算法步骤执行错误等。
4.3 背包密码系统练习题
- 问题 :Alice的背包密码系统公钥为(M = (5186, 2779, 5955, 2307, 6599, 6771, 6296, 7306, 4115, 7039)),Eve截获加密消息(S = 26560),并偷得Alice的秘密乘数(A = 4392)和秘密模数(B = 8387)。求Alice的超递增私有序列(r)并解密消息。
- 解答 :根据已知信息,利用秘密乘数和秘密模数对(M)进行逆变换,得到超递增私有序列(r),然后使用(r)解密消息。
操作步骤如下:
1. 计算(A)在模(B)下的逆元(A^{-1})。
2. 对(M)中的每个元素(m_i),计算(r_i = A^{-1} \cdot m_i \pmod{B}),得到超递增私有序列(r)。
3. 使用(r)和(S)解决子集和问题,得到解密结果。
4.4 向量空间和格相关练习题
- 问题 :涉及向量空间的基变换、向量长度和点积计算,格的基本性质和运算等。
-
解答
:
- 基变换 :对于给定的两个基(B)和(B’),求将(B’)变换为(B)的基变换矩阵。
- 向量计算 :计算向量的长度、点积和夹角。
- 格的性质 :证明格的离散性、计算格的行列式和Hadamard比率等。
操作步骤如下:
1.
基变换
:设基变换矩阵为(P),根据基变换的定义(B’ = PB),求解(P)。
2.
向量计算
:使用向量长度公式(|v| = \sqrt{v \cdot v})和点积公式(v \cdot w = \sum_{i = 1}^{n} v_i w_i)进行计算,夹角(\theta)满足(\cos\theta = \frac{v \cdot w}{|v| |w|})。
3.
格的性质
:根据格的定义和相关定理进行证明和计算。
5. 不同算法的比较与分析
在格与密码学中,有多种算法用于解决不同的问题,下面对一些常见算法进行比较和分析。
| 算法 | 适用问题 | 优点 | 缺点 |
|---|---|---|---|
| 高斯格约化算法 | 二维格的最短向量问题 | 简单高效,适用于低维情况 | 不适用于高维格 |
| LLL算法 | 格的约化,解决近似最短向量问题和子集和问题等 | 可以处理高维格,在一定程度上提高了精度 | 运行时间较长,特别是对于高维格 |
| Babai算法 | 解决最近向量问题 | 结合好的基可以得到较好的结果 | 依赖于基的质量 |
从运行时间和精度的角度来看,不同算法存在权衡。例如,高斯格约化算法运行时间短,但精度有限;LLL算法精度较高,但运行时间随着维度的增加而显著增长。
6. 未来研究方向
格与密码学是一个不断发展的领域,未来有许多值得研究的方向。
- 算法优化 :进一步优化格约化算法,减少运行时间,提高精度。例如,研究更高效的LLL算法实现,或者开发新的格约化算法。
- 高维格的处理 :随着密码系统安全性要求的提高,需要处理更高维度的格。研究如何有效地处理高维格,降低计算复杂度。
- 新的密码系统设计 :基于格的困难问题设计新的密码系统,提高密码系统的安全性和性能。
- 密码分析技术的发展 :不断发展密码分析技术,应对新的密码系统和攻击手段。
下面是一个流程图,展示了未来研究方向的关系:
graph TD;
A[算法优化] --> B[提高性能]
C[高维格处理] --> B
D[新密码系统设计] --> B
E[密码分析技术发展] --> B
B --> F[增强密码系统安全性]
总之,格与密码学的研究前景广阔,通过不断的研究和创新,将为信息安全领域带来新的突破和发展。在实际应用中,需要根据具体需求选择合适的算法和密码系统,同时关注技术的发展动态,以应对不断变化的安全挑战。
LLL算法在格与密码学中的应用
超级会员免费看
1307

被折叠的 条评论
为什么被折叠?



