密码学与格理论:历史、概念与算法
1. 密码学历史案例
1.1 不同类型的密码系统
在密码学的发展历程中,除了常见的密码本,还存在其他类型的密码系统。例如,有一种密码使用码字模式对剪纸进行加密,推测这可能是一种格栅密码;还有一处提到“按列书写的纸张”,可能指的是列置换密码。
1.2 阿特伯里主教案
阿特伯里主教因三封所谓“叛国”信件而被定罪,这些信件分别署名琼斯、伊林顿和 1378,据称是他口授的。然而,解密者的工作存在内部不一致性。比如,一封加密信件将琼斯和伊林顿描述为不同的人,但他们是否为同一人存疑。辩护律师指出了解密过程存在的问题,但他们要求对密码分析人员进行交叉询问的请求被政治多数派驳回。由于报告中众多代码与字母之间缺乏一致性,难以计算这些密码本的唯一距离。
1.3 何塞·马蒂的密码使用
古巴民族英雄何塞·马蒂在 1895 年 2 月领导反对西班牙殖民统治的起义时,使用了维吉尼亚密码,密钥词为“habana”,对应数字 8, 1, 2, 1, 15, 1,采用 28 个字母的字母表。他在 1894 年 12 月 8 日与两位革命伙伴在纽约流亡期间写下了著名的《古巴起义计划》。不过,马蒂犯了密码学中的大忌,即混合明文和密文。但即便如此,这一失误也未能阻止古巴独立。明文先被书写,留出密文的空间,然后由他人插入密文。但在书写过程中,第 3 行留的空间过少,第 6 行留的空间过多。
2. 格理论基础
2.1 格的定义
设 (a_1, \cdots, a_{\ell} \in R^n) 是 (R) 上的线性无关行向量,则 (L = \sum_{1\leq i\leq \ell} Z a_i = { \sum_{1\leq i\leq \ell} r_i a_i : r_1, \cdots, r_{\ell} \in Z }) 是由 (a_1, \cdots, a_{\ell}) 生成的格(或 (Z) - 模),这些向量构成 (L) 的一个基。若 (\ell = n),则称 (L) 为满秩格。(L) 的一个子集 (K) 若也是格,则称 (K) 为 (L) 的子格。
2.2 格与向量空间的比较
格的概念与 (R^n) 中由 (a_1, \cdots, a_{\ell}) 张成的 (R) - 向量空间 (V = span_R(a_1, \cdots, a_{\ell}) = span_R(L)) 相似。与整数 (Z) 相比,格的优势在于可以讨论整数解以及整除性和模约简等有趣概念;缺点是不能除以任意非零整数,因此没有类似于高斯算法来求解线性方程组,只能使用相对复杂的基约简算法。
2.3 向量的范数
设 (x = (x_1, \cdots, x_n) \in R^n),(x) 的范数(或 2 - 范数,或欧几里得范数)定义为:
[
\lVert x \rVert = \lVert x \rVert_2 = \left( \sum_{1\leq i\leq n} x_i^2 \right)^{1/2} = (x \star x)^{1/2} \in R_{\geq 0}
]
其中 (x \star y = \sum_{1\leq i\leq n} x_i y_i \in R) 是 (R^n) 中两个向量 (x = (x_1, \cdots, x_n)) 和 (y = (y_1, \cdots, y_n)) 的通常内积(文献中有时写作 ((x, y)),或 (\langle x, y \rangle),或 (x \cdot y^T))。若 (x \star y = 0),则称向量 (x) 和 (y) 正交。
2.4 幺模矩阵与格的生成
一个方阵 (U) 是幺模矩阵当且仅当 (\det(U) \in \pm 1)。若 (A, B \in R^{\ell \times n}) 都有线性无关的行,则它们的行向量生成相同的格当且仅当存在一个幺模的 (\ell \times \ell) 矩阵 (U) 使得 (A = UB)。
2.5 格的范数
设 (L) 是由矩阵 (A \in R^{\ell \times n}) 的行生成的格,(L) 的范数定义为 (|L| = \det(A A^T)^{1/2} \in R)。根据定理 13.3,该范数是良定义的,即与 (L) 的生成元选择无关。当 (\ell = n) 时,定义简化为 (|L| = |\det(A)|),几何上,(|L|) 是由 (a_1, \cdots, a_{\ell}) 张成的平行六面体的体积,通常记为 (vol(L))。对于 (\ell = n),哈达玛不等式表明 (|L| \leq \lVert a_1 \rVert \cdots \lVert a_n \rVert)。
2.6 示例
设 (\ell = n = 2),(a_1 = (12, 2)),(a_2 = (13, 4)),则 (L = Z a_1 + Z a_2)。该格的范数为:
[
|L| = \left| \det \begin{pmatrix} 12 & 2 \ 13 & 4 \end{pmatrix} \right| = 22
]
这等于平面 (R^2) 中灰色平行四边形的面积。同时,(22 \leq \lVert a_1 \rVert \cdot \lVert a_2 \rVert = 74\sqrt{5} \approx 165.469)。(L) 的另一个基为 (b_1 = (1, 2)) 和 (b_2 = (11, 0) = 2a_1 - a_2),且 (b_1) 是 (L) 中的“最短”向量,(22 \leq \lVert b_1 \rVert \cdot \lVert b_2 \rVert = 11\sqrt{5} \approx 24.597)。
2.7 连续极小值
设 (L \subset R^n) 是一个 (\ell) 维格,(1 \leq i \leq \ell),第 (i) 个连续极小值 (\lambda_i(L)) 是使得 (L) 中存在 (i) 个线性无关向量,且它们的长度都不超过 (\lambda_i(L)) 的最小实数。特别地,(\lambda_1(L)) 是 (L) 中非零最短向量的长度。若 (\lVert x \rVert = \lambda_1(L)),则称 (x) 为最短向量,且有 (\lambda_1(L) \leq \lambda_2(L) \leq \cdots \leq \lambda_n(L))。
2.8 闵可夫斯基定理
对于 (z \in R^n) 和 (r > 0),考虑以 (z) 为中心、半径为 (r) 的 (n) 维球 (B_n(z, r) = { x \in R^n : \lVert x - z \rVert \leq r })。闵可夫斯基的两个著名定理表明:
[
\lambda_1(L)^n \leq \lambda_1(L) \cdots \lambda_n(L) \leq \frac{2^n |L|}{vol(B_n(0, 1))}
]
进一步的估计可得:
[
\lambda_1(L)^n \leq \lambda_1(L) \cdots \lambda_n(L) \leq n^n |L|
]
2.9 最短向量问题
计算给定格中的最短向量是一个自然的问题,但在随机归约下,该问题是 NP - 难的,不存在高效算法。不过,对于许多应用来说,计算一个“合理短”的向量就足够了,这一问题可以通过著名的 Lenstra, Lenstra & Lovász(1982)格基约简算法(有时称为 LLL 或 L3 算法)在多项式时间内解决。该算法保证得到的“短向量”与最短向量的偏差不超过一个特定因子,这个因子取决于维度而非格本身。
3. 格基约简算法
3.1 格基约简的相关定理
3.1.1 定理 13.9
设 (L \subseteq R^n) 是一个格,基为 (b_1, \cdots, b_{\ell} \in R^n),Gram - Schmidt 正交基为 (b_1^
, \cdots, b_{\ell}^
\in R^n),连续极小值为 (\lambda_1(L), \cdots, \lambda_{\ell}(L))。则对于 (1 \leq i \leq \ell),有:
[
\min { \lVert b_i^
\rVert, \lVert b_{i + 1}^
\rVert, \cdots, \lVert b_{\ell}^* \rVert } \leq \lambda_i(L)
]
3.1.2 推论 13.10
设 (L \subseteq R^n) 是一个格,基为 ((b_1, \cdots, b_{\ell})),Gram - Schmidt 正交基为 ((b_1^
, \cdots, b_{\ell}^
))。则对于任意非零 (x \in L),有:
[
\min { \lVert b_1^
\rVert, \cdots, \lVert b_{\ell}^
\rVert } \leq \lVert x \rVert
]
3.1.3 定义 13.11
设 (b_1, \cdots, b_{\ell} \in R^n) 线性无关,(b_1^ , \cdots, b_{\ell}^ ) 是对应的 Gram - Schmidt 正交基。则 (b_1, \cdots, b_{\ell}) 是约简基当且仅当对于 (1 \leq i < \ell),有 (\lVert b_i^ \rVert^2 \leq 2 \lVert b_{i + 1}^ \rVert^2)。
3.1.4 定理 13.12
设 (b_1, \cdots, b_{\ell} \in R^n) 是格 (L) 的约简基,则 (\lVert b_1 \rVert \leq 2^{(\ell - 1)/2} \cdot \lambda_1(L))。
3.2 基约简算法
3.2.1 算法描述
算法 13.13:基约简
-
输入
:线性无关的行向量 (a_1, \cdots, a_{\ell} \in Z^n)。
-
输出
:格 (L = \sum_{1\leq i\leq \ell} a_i Z \subseteq Z^n) 的约简基 (b_1, \cdots, b_{\ell})。
1. 对于 (i = 1, \cdots, \ell),执行 (b_i \leftarrow a_i)。
2. 计算 GSO (B^
\in Q^{\ell \times n}),(M \in Q^{\ell \times \ell}),如 (15.73) 和 (15.75) 所示。
3. (i \leftarrow 2)。
4. 当 (i \leq \ell) 时,执行步骤 5 - 10:
- 对于 (j = i - 1, i - 2, \cdots, 1),执行步骤 6 - 6:
- (b_i \leftarrow b_i - \lceil \mu_{ij} \rceil b_j),更新 GSO,[替换步骤]
- 若 (i > 1) 且 (\lVert b_{i - 1}^
\rVert^2 > 2 \lVert b_i^* \rVert^2),则:
- 交换 (b_{i - 1}) 和 (b_i) 并更新 GSO,[交换步骤]
- (i \leftarrow i - 1)。
- 否则 (i \leftarrow i + 1)。
5. 返回 (b_1, \cdots, b_{\ell})。
3.2.2 示例
以示例 13.5 继续,初始时 (b_1 = a_1 = (12, 2))(红色),(b_2 = a_2 = (13, 4))(蓝色)。算法执行过程如下表所示:
| step | (\begin{pmatrix} b_1 \ b_2 \end{pmatrix}) | (M) | (\begin{pmatrix} b_1^
\ b_2^
\end{pmatrix}) | action |
| — | — | — | — | — |
| 4 | (\begin{pmatrix} 12 & 2 \ 13 & 4 \end{pmatrix}) | (\begin{pmatrix} 1 & 0 \ \frac{41}{37} & 1 \end{pmatrix}) | (\begin{pmatrix} 12 \ 2 \ -\frac{11}{37} \ \frac{66}{37} \end{pmatrix}) | row 2 ← row 2 - row 1 |
| 5 | (\begin{pmatrix} 12 & 2 \ 1 & 2 \end{pmatrix}) | (\begin{pmatrix} 1 & 0 \ \frac{4}{37} & 1 \end{pmatrix}) | (\begin{pmatrix} 12 \ 2 \ -\frac{11}{37} \ \frac{66}{37} \end{pmatrix}) | exchange rows 1 and 2 |
| 4 | (\begin{pmatrix} 1 & 2 \ 12 & 2 \end{pmatrix}) | (\begin{pmatrix} 1 & 0 \ \frac{16}{5} & 1 \end{pmatrix}) | (\begin{pmatrix} 1 \ 2 \ \frac{44}{5} \ -\frac{22}{5} \end{pmatrix}) | row 2 ← row 2 - 3 · row 1 |
| 6 | (\begin{pmatrix} 1 \ 2 \ 9 & -4 \end{pmatrix}) | (\begin{pmatrix} 1 & 0 \ \frac{1}{5} & 1 \end{pmatrix}) | (\begin{pmatrix} 1 \ 2 \ \frac{44}{5} \ -\frac{22}{5} \end{pmatrix}) |
最终,算法返回约简基 (x = (1, 2)) 和 (y = (9, -4))。从图 13.3 可以清晰地看到,最终的 (b_1 = x)(绿色向量)比两个输入向量 (a_1, a_2) 短很多,并且计算得到的基 (x, y)(绿色和棕色向量)近乎正交。
通过以上内容,我们了解了密码学历史中的一些案例以及格理论的基本概念和基约简算法,这些知识在密码分析、安全归约和密码系统设计等方面都有着重要的应用。
4. 格理论在密码学中的应用
4.1 密码分析
格理论在密码分析中发挥了重要作用。在 20 世纪 80 年代,除 RSA 之外的第一代公钥密码系统——子集和系统,就被基于格理论的攻击所破解。对于许多新型密码系统,在设计时必须谨慎考虑潜在的基于格理论的攻击。以下是格理论用于密码分析的一般步骤:
1.
构建格
:将密码系统中的相关参数转化为格的形式,例如将加密方程或密钥信息表示为格的基向量。
2.
寻找短向量
:利用格基约简算法(如 LLL 算法)在构建的格中寻找短向量。这些短向量可能包含破解密码系统的关键信息。
3.
分析短向量
:对找到的短向量进行分析,尝试从中提取出与密码系统相关的有用信息,如密钥或明文。
4.2 安全归约
在密码学中,一个重要的问题是确定部分信息的安全性。例如,对于 Diffie - Hellman 密钥交换或 RSA 加密系统,即使整个系统是安全的,也不能确定其部分信息(如 Diffie - Hellman 密钥的前几位或 RSA 模数的素因子的部分信息)是否安全。格理论为解决这类问题提供了证明方法,具体步骤如下:
1.
定义问题
:明确要证明安全性的部分信息和相关的密码系统。
2.
构建格模型
:将密码系统和部分信息转化为格的形式,使得问题可以在格的框架下进行分析。
3.
利用格性质证明
:通过格的性质和相关定理,证明如果部分信息可以被破解,那么整个密码系统也将被破解,从而得出部分信息的安全性与整个系统的安全性等价。
4.3 密码系统设计
自 1996 年以来,格理论被用于设计具有特殊性质的密码系统。这些系统在一个硬度公理下被证明具有一个理想的性质:破解一个“平均实例”的难度与破解一个“最难实例”的难度相同。以下是基于格理论设计密码系统的一般流程:
graph LR
A[定义格问题] --> B[选择合适的格参数]
B --> C[设计加密和解密算法]
C --> D[证明安全性]
D --> E[实现密码系统]
- 定义格问题 :选择一个合适的格问题作为密码系统的基础,例如最短向量问题(SVP)或最近向量问题(CVP)。
- 选择合适的格参数 :确定格的维度、基向量等参数,使得密码系统既具有足够的安全性,又具有合理的计算效率。
- 设计加密和解密算法 :根据所选的格问题和参数,设计加密和解密的具体算法。
- 证明安全性 :利用格理论的相关定理和证明方法,证明密码系统在所选的格问题是困难的假设下是安全的。
- 实现密码系统 :将设计好的算法在计算机上实现,并进行性能测试和优化。
5. 总结与展望
5.1 总结
本文介绍了密码学历史中的一些经典案例,包括不同类型的密码系统、阿特伯里主教案和何塞·马蒂的密码使用。同时,详细阐述了格理论的基本概念,如格的定义、向量的范数、幺模矩阵与格的生成、格的范数、连续极小值和闵可夫斯基定理等。还介绍了格基约简算法(LLL 算法)及其相关定理,并通过具体示例展示了算法的执行过程。最后,探讨了格理论在密码分析、安全归约和密码系统设计中的应用。
5.2 展望
随着密码学和计算机科学的不断发展,格理论在密码学中的应用前景十分广阔。未来可能会有更多基于格理论的新型密码系统被提出,这些系统可能会在量子计算时代提供更强的安全性。同时,格基约简算法的效率和性能也有望得到进一步提升,以适应更复杂的密码分析和设计需求。此外,格理论与其他领域(如机器学习、通信技术等)的交叉融合也可能会产生新的研究方向和应用场景。
以下是一个总结格理论在密码学中应用的表格:
| 应用领域 | 作用 | 关键步骤 |
| — | — | — |
| 密码分析 | 破解密码系统 | 构建格、寻找短向量、分析短向量 |
| 安全归约 | 证明部分信息安全性 | 定义问题、构建格模型、利用格性质证明 |
| 密码系统设计 | 设计具有特殊性质的密码系统 | 定义格问题、选择格参数、设计算法、证明安全性、实现系统 |
通过深入研究格理论和其在密码学中的应用,我们可以更好地应对日益增长的信息安全挑战,为未来的信息社会提供更可靠的安全保障。
超级会员免费看

1510

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



