015 《信息论与密码学:原理、应用与深度解析》
🌟🌟🌟本文案由Gemini 2.5 Flash Preview 04-17创作,用来辅助学习知识。🌟🌟🌟
书籍大纲
▮▮▮▮ 1. chapter 1: 引言 (Introduction)
▮▮▮▮▮▮▮ 1.1 什么是信息论 (What is Information Theory)
▮▮▮▮▮▮▮ 1.2 什么是密码学 (What is Cryptography)
▮▮▮▮▮▮▮ 1.3 信息论与密码学的交叉与联系 (Intersection and Connection of Information Theory and Cryptography)
▮▮▮▮▮▮▮ 1.4 本书结构与读者指南 (Book Structure and Reader's Guide)
▮▮▮▮ 2. chapter 2: 信息论基础 (Information Theory Fundamentals)
▮▮▮▮▮▮▮ 2.1 概率论回顾 (Probability Theory Review)
▮▮▮▮▮▮▮ 2.2 熵 (Entropy)
▮▮▮▮▮▮▮▮▮▮▮ 2.2.1 香农熵 (Shannon Entropy)
▮▮▮▮▮▮▮▮▮▮▮ 2.2.2 联合熵 (Joint Entropy)
▮▮▮▮▮▮▮▮▮▮▮ 2.2.3 条件熵 (Conditional Entropy)
▮▮▮▮▮▮▮ 2.3 互信息 (Mutual Information)
▮▮▮▮▮▮▮ 2.4 KL散度 (KL Divergence) 与交叉熵 (Cross-Entropy)
▮▮▮▮▮▮▮ 2.5 信源编码简介 (Introduction to Source Coding)
▮▮▮▮▮▮▮ 2.6 信道容量简介 (Introduction to Channel Capacity)
▮▮▮▮ 3. chapter 3: 密码学基础 (Cryptography Fundamentals)
▮▮▮▮▮▮▮ 3.1 基本概念与术语 (Basic Concepts and Terminology)
▮▮▮▮▮▮▮ 3.2 对称密码简介 (Introduction to Symmetric Cryptography)
▮▮▮▮▮▮▮ 3.3 非对称密码简介 (Introduction to Asymmetric Cryptography)
▮▮▮▮▮▮▮ 3.4 密码学中的安全性定义与模型 (Security Definitions and Models in Cryptography)
▮▮▮▮ 4. chapter 4: 香农的保密理论 (Shannon's Theory of Secrecy)
▮▮▮▮▮▮▮ 4.1 理想安全 (Perfect Secrecy) 的定义与条件
▮▮▮▮▮▮▮ 4.2 密钥空间与熵 (Key Space and Entropy)
▮▮▮▮▮▮▮ 4.3 含糊度 (Equivocation) 的概念与计算
▮▮▮▮▮▮▮ 4.4 一次性密码本 (One-Time Pad) 的信息论安全性分析
▮▮▮▮▮▮▮ 4.5 香农理论的局限性与实际意义 (Limitations and Practical Significance of Shannon's Theory)
▮▮▮▮ 5. chapter 5: 信息论安全 (Information-Theoretic Security)
▮▮▮▮▮▮▮ 5.1 信息论安全的定义与范畴 (Definition and Scope of Information-Theoretic Security)
▮▮▮▮▮▮▮ 5.2 与计算安全 (Computational Security) 的对比
▮▮▮▮▮▮▮ 5.3 信息论安全系统的例子 (Examples of Information-Theoretic Secure Systems)
▮▮▮▮▮▮▮ 5.4 信息论安全在现代密码学中的地位 (Status of Information-Theoretic Security in Modern Cryptography)
▮▮▮▮ 6. chapter 6: 随机性、伪随机性与不可预测性 (Randomness, Pseudorandomness, and Unpredictability)
▮▮▮▮▮▮▮ 6.1 熵作为随机性度量 (Entropy as a Measure of Randomness)
▮▮▮▮▮▮▮ 6.2 随机源 (Randomness Sources) 与熵估计 (Entropy Estimation)
▮▮▮▮▮▮▮ 6.3 随机性提取器 (Randomness Extractors)
▮▮▮▮▮▮▮ 6.4 伪随机数生成器 (Pseudorandom Number Generators) 的信息论视角
▮▮▮▮▮▮▮ 6.5 密码学中对随机性的需求 (Requirement for Randomness in Cryptography)
▮▮▮▮ 7. chapter 7: 信息泄露与侧信道分析 (Information Leakage and Side Channel Analysis)
▮▮▮▮▮▮▮ 7.1 信息泄露的定义与模型 (Definition and Models of Information Leakage)
▮▮▮▮▮▮▮ 7.2 基于信息论的泄露量化 (Information Theory-Based Leakage Quantification)
▮▮▮▮▮▮▮▮▮▮▮ 7.2.1 互信息量化泄露 (Mutual Information for Leakage Quantification)
▮▮▮▮▮▮▮▮▮▮▮ 7.2.2 最小熵 (Min-Entropy) 与泄露 (Leakage)
▮▮▮▮▮▮▮ 7.3 侧信道攻击 (Side Channel Attacks) 示例 (功耗、电磁辐射、时间等)
▮▮▮▮▮▮▮ 7.4 防御信息泄露的策略 (Strategies for Defending Against Information Leakage)
▮▮▮▮ 8. chapter 8: 编码理论与密码学 (Coding Theory and Cryptography)
▮▮▮▮▮▮▮ 8.1 纠错码 (Error Correction Codes) 基础
▮▮▮▮▮▮▮ 8.2 基于编码的密码学 (Code-Based Cryptography)
▮▮▮▮▮▮▮ 8.3 McEliece密码系统 (McEliece Cryptosystem) 的原理与安全性
▮▮▮▮▮▮▮ 8.4 编码理论在其他密码应用中的作用 (Role of Coding Theory in Other Cryptographic Applications)
▮▮▮▮ 9. chapter 9: 量子信息与密码学 (Quantum Information and Cryptography)
▮▮▮▮▮▮▮ 9.1 量子信息基础 (Quantum Information Basics) 简介
▮▮▮▮▮▮▮ 9.2 量子密钥分发 (Quantum Key Distribution, QKD) 的信息论安全性
▮▮▮▮▮▮▮ 9.3 后量子密码学 (Post-Quantum Cryptography) 与信息论
▮▮▮▮ 10. chapter 10: 高级主题与前沿应用 (Advanced Topics and Frontier Applications)
▮▮▮▮▮▮▮ 10.1 安全多方计算 (Secure Multi-Party Computation, MPC) 中的信息论技术
▮▮▮▮▮▮▮ 10.2 差分隐私 (Differential Privacy) 与信息论度量
▮▮▮▮▮▮▮ 10.3 基于格 (Lattice-Based) 的密码学与信息论联系 (如有)
▮▮▮▮ 11. chapter 11: 总结与展望 (Conclusion and Outlook)
▮▮▮▮▮▮▮ 11.1 全书总结 (Book Summary)
▮▮▮▮▮▮▮ 11.2 未来研究方向 (Future Research Directions)
▮▮▮▮▮▮▮ 11.3 开放性问题 (Open Problems)
▮▮▮▮ 12. chapter 12: 附录 (Appendices)
▮▮▮▮▮▮▮ 12.1 数学背景知识 (Mathematical Background) (如线性代数、有限域等)
▮▮▮▮▮▮▮ 12.2 概率与统计补充 (Probability and Statistics Supplement)
▮▮▮▮ 13. chapter 13: 参考文献 (References)
▮▮▮▮▮▮▮ 13.1 经典书籍 (Classic Books)
▮▮▮▮▮▮▮ 13.2 重要研究论文 (Important Research Papers)
▮▮▮▮▮▮▮ 13.3 在线资源与工具 (Online Resources and Tools)
1. chapter 1: 引言 (Introduction)
欢迎来到信息论与密码学交叉领域的深度探索之旅。本书旨在系统地阐述信息论的基本原理如何为密码学提供坚实的理论基础,并深入分析信息论在现代密码学各个分支中的应用与影响。无论您是初学者、有一定基础的学习者,还是希望深入研究的专家,本书都力求为您提供清晰、全面且富有启发性的内容。
1.1 什么是信息论 (What is Information Theory)
信息论 (Information Theory) 是一个研究信息量化、存储和通信的数学理论。它由克劳德·香农 (Claude Shannon) 在1948年发表的划时代论文《通信的数学理论》(A Mathematical Theory of Communication) 中奠定基础。信息论的核心在于提供了一种量化“信息”的方法,并研究在存在噪声的信道中可靠地传输信息的极限。
信息论关注的核心问题包括:
⚝ 如何度量信息量?
⚝ 如何有效地压缩数据?
⚝ 如何在有噪声的环境中可靠地传输数据?
⚝ 通信信道的最大传输速率是多少?
信息论的基本概念,如熵 (Entropy)、互信息 (Mutual Information) 和信道容量 (Channel Capacity),为理解和分析各种信息处理过程提供了强大的工具。它不仅是通信工程的基石,也在统计学、机器学习、数据压缩、自然语言处理以及我们即将深入探讨的密码学等众多领域发挥着关键作用。
1.2 什么是密码学 (What is Cryptography)
密码学 (Cryptography) 是一门研究信息安全传输和存储的科学与艺术。它的主要目标是保护信息的机密性 (Confidentiality)、完整性 (Integrity)、可用性 (Availability) 和认证性 (Authentication)。简单来说,密码学研究如何通过数学方法将信息伪装起来,使得只有授权的接收者才能理解它,同时确保信息在传输或存储过程中不被篡改,并能验证信息的来源。
密码学的历史悠久,从古代的凯撒密码 (Caesar Cipher) 到现代的公钥加密 (Public-Key Cryptography),其技术和理论不断发展。现代密码学主要依赖于复杂的数学问题,如大整数分解 (Integer Factorization) 或离散对数问题 (Discrete Logarithm Problem) 的计算困难性。
密码学的核心组成部分包括:
① 加密算法 (Encryption Algorithms):将明文 (Plaintext) 转换为密文 (Ciphertext) 的过程。
② 解密算法 (Decryption Algorithms):将密文恢复为明文的过程。
③ 密钥 (Key):控制加密和解密过程的秘密参数。
④ 密码协议 (Cryptographic Protocols):涉及多个参与方,利用密码学原语 (Cryptographic Primitives) 完成特定安全任务的步骤序列,例如安全套接层 (SSL/TLS) 协议。
密码学是信息安全 (Information Security) 的核心技术之一,广泛应用于网络通信、电子商务、数字签名、身份认证等领域。
1.3 信息论与密码学的交叉与联系 (Intersection and Connection of Information Theory and Cryptography)
信息论与密码学并非孤立的学科,它们之间存在深刻的联系和交叉。信息论为密码学提供了分析安全性的理论框架和度量工具。香农本人在其另一篇重要论文《通信系统的保密理论》(Communication Theory of Secrecy Systems) 中,首次将信息论的概念应用于密码学,奠定了信息论安全 (Information-Theoretic Security) 的基础。
信息论在密码学中的主要作用体现在:
⚝ 安全性定义与分析 (Security Definition and Analysis): 信息论提供了度量不确定性(熵)和信息泄露(互信息、条件熵)的工具。这使得我们可以严格定义和分析密码系统的安全性,例如香农提出的理想安全 (Perfect Secrecy) 就是一个基于信息论的安全性概念。
⚝ 密钥管理与随机性 (Key Management and Randomness): 密钥的随机性是许多密码系统安全的基础。信息论中的熵可以用来度量密钥的随机程度。随机性提取器 (Randomness Extractor) 等概念也源于信息论。
⚝ 信息泄露量化 (Information Leakage Quantification): 在侧信道攻击 (Side Channel Attacks) 等场景中,攻击者通过非密码学途径(如功耗、时间)获取信息。信息论工具可以用来量化这些泄露的信息量,从而评估系统的脆弱性。
⚝ 编码理论的应用 (Application of Coding Theory): 编码理论(作为信息论的一个分支)与密码学也有紧密联系,例如基于编码的密码学 (Code-Based Cryptography)。
⚝ 量子密码学 (Quantum Cryptography): 量子信息论为量子密钥分发 (Quantum Key Distribution, QKD) 提供了理论基础,其安全性分析也大量依赖于信息论概念。
虽然现代密码学更多地依赖于计算复杂性理论 (Computational Complexity Theory) 来定义计算安全 (Computational Security),但信息论安全作为一种更强的安全概念,在理论研究和某些特定应用中仍然具有重要意义。理解信息论的原理,有助于我们更深刻地理解密码系统的本质安全性,而非仅仅依赖于当前计算能力的局限性。
1.4 本书结构与读者指南 (Book Structure and Reader's Guide)
本书的组织结构旨在循序渐进地引导读者深入理解信息论与密码学的交叉领域。
本书主要内容包括:
① 基础篇 (Fundamentals): 第2章回顾信息论基础,包括熵、互信息等核心概念。第3章介绍密码学基础,包括基本术语、对称与非对称密码等。
② 香农理论与信息论安全 (Shannon's Theory and Information-Theoretic Security): 第4章详细阐述香农的保密理论和理想安全。第5章深入探讨信息论安全的定义、与计算安全的对比以及相关例子。
③ 关键交叉领域 (Key Intersections): 第6章讨论随机性、伪随机性与熵的关系及其在密码学中的重要性。第7章聚焦信息泄露与侧信道分析,并介绍如何用信息论量化泄露。第8章探讨编码理论与密码学的联系,特别是基于编码的密码学。
④ 前沿与高级主题 (Frontier and Advanced Topics): 第9章介绍量子信息与密码学的交叉,包括量子密钥分发和后量子密码学 (Post-Quantum Cryptography)。第10章涵盖安全多方计算 (Secure Multi-Party Computation, MPC)、差分隐私 (Differential Privacy) 等高级主题中信息论的应用。
⑤ 总结与展望 (Conclusion and Outlook): 第11章对全书进行总结,并展望未来的研究方向和开放性问题。
⑥ 附录与参考文献 (Appendices and References): 第12章提供必要的数学背景知识回顾,第13章列出重要的参考文献和资源。
读者指南 (Reader's Guide):
⚝ 初学者 (Beginners): 建议按章节顺序阅读。重点关注第1、2、3、4章,理解信息论和密码学的基本概念以及香农的保密理论。后续章节可根据兴趣选择性阅读,或先跳过复杂的数学推导,理解核心思想。
⚝ 中级读者 (Intermediate): 假设您已具备一定的概率论和线性代数基础。建议按章节顺序深入阅读,特别是第5、6、7、8章,理解信息论工具在密码学分析中的具体应用。可以尝试理解章节中的数学公式和推导。
⚝ 专家 (Experts): 您可能对信息论或密码学中的一个领域已有深入了解。本书可以帮助您系统地了解这两个领域的交叉。建议重点关注第4、5、6、7、8、9、10章,特别是其中涉及的理论分析和前沿进展。附录可作为参考工具。
本书力求在理论深度和易读性之间取得平衡,希望能够帮助不同背景的读者构建起信息论与密码学交叉领域的知识体系。祝您阅读愉快!📚💡
2. chapter 2: 信息论基础 (Information Theory Fundamentals)
信息论 (Information Theory) 是由克劳德·香农 (Claude Shannon) 在1948年创立的一门学科,它为通信系统中的信息量化、存储和传输提供了数学框架。它是理解密码学 (Cryptography) 中许多核心概念(如安全性、随机性、信息泄露等)的基石。本章将系统地介绍信息论中的基本概念和工具,为后续章节深入探讨信息论在密码学中的应用打下坚实的基础。
2.1 概率论回顾 (Probability Theory Review)
信息论是建立在概率论 (Probability Theory) 之上的。为了理解信息论的概念,我们需要回顾一些基本的概率论知识。
① 概率空间 (Probability Space):一个概率空间通常由三元组 \( (\Omega, \mathcal{F}, P) \) 定义,其中:
▮▮▮▮ⓑ \( \Omega \) 是样本空间 (Sample Space),即所有可能结果的集合。
▮▮▮▮ⓒ \( \mathcal{F} \) 是事件集合 (Set of Events),是 \( \Omega \) 的一个子集族,满足一定的封闭性(例如,对补集和可数并运算封闭)。
▮▮▮▮ⓓ \( P \) 是概率测度 (Probability Measure),一个从 \( \mathcal{F} \) 到 \( [0, 1] \) 的函数,满足 \( P(\Omega) = 1 \) 和可数可加性。
② 随机变量 (Random Variable):一个随机变量 \( X \) 是一个从样本空间 \( \Omega \) 到实数集 \( \mathbb{R} \) 的函数。它可以是离散的 (Discrete) 或连续的 (Continuous)。在信息论中,我们经常处理离散随机变量。
③ 概率质量函数 (Probability Mass Function, PMF):对于离散随机变量 \( X \),其概率质量函数 \( p_X(x) \) 定义为 \( p_X(x) = P(X = x) \),即随机变量 \( X \) 取特定值 \( x \) 的概率。PMF 满足 \( \sum_{x} p_X(x) = 1 \),其中求和遍历 \( X \) 所有可能取值。
④ 联合概率质量函数 (Joint Probability Mass Function, Joint PMF):对于两个离散随机变量 \( X \) 和 \( Y \),其联合概率质量函数 \( p_{X,Y}(x, y) \) 定义为 \( p_{X,Y}(x, y) = P(X = x, Y = y) \)。它满足 \( \sum_{x, y} p_{X,Y}(x, y) = 1 \)。
⑤ 边缘概率质量函数 (Marginal Probability Mass Function, Marginal PMF):从联合 PMF 可以得到边缘 PMF:
\[ p_X(x) = \sum_y p_{X,Y}(x, y) \]
\[ p_Y(y) = \sum_x p_{X,Y}(x, y) \]
⑥ 条件概率质量函数 (Conditional Probability Mass Function, Conditional PMF):给定 \( Y = y \) 时 \( X = x \) 的条件概率定义为:
\[ p_{X|Y}(x|y) = P(X = x | Y = y) = \frac{P(X = x, Y = y)}{P(Y = y)} = \frac{p_{X,Y}(x, y)}{p_Y(y)} \]
前提是 \( p_Y(y) > 0 \)。类似地,可以定义 \( p_{Y|X}(y|x) \)。
⑦ 独立性 (Independence):如果对于所有可能的 \( x \) 和 \( y \),都有 \( p_{X,Y}(x, y) = p_X(x) p_Y(y) \),则称随机变量 \( X \) 和 \( Y \) 是独立的 (Independent)。这等价于 \( p_{X|Y}(x|y) = p_X(x) \) (当 \( p_Y(y) > 0 \)) 或 \( p_{Y|X}(y|x) = p_Y(y) \) (当 \( p_X(x) > 0 \))。
⑧ 期望 (Expectation):随机变量 \( X \) 的期望 \( E[X] \) 定义为:
\[ E[X] = \sum_x x p_X(x) \]
对于函数 \( g(X) \),其期望为 \( E[g(X)] = \sum_x g(x) p_X(x) \)。
这些概率论基础是理解信息论中熵、互信息等概念的必要前提。
2.2 熵 (Entropy)
熵 (Entropy) 是信息论中最核心的概念之一,它度量了随机变量的不确定性 (Uncertainty) 或信息量 (Information Content)。
2.2.1 香农熵 (Shannon Entropy)
香农熵 (Shannon Entropy),通常简称为熵,度量了离散随机变量的平均不确定性。考虑一个离散随机变量 \( X \),其可能取值为集合 \( \mathcal{X} = \{x_1, x_2, \dots, x_n\} \),对应的概率质量函数为 \( p_X(x) \)。香农熵 \( H(X) \) 定义为:
\[ H(X) = - \sum_{x \in \mathcal{X}} p_X(x) \log_b p_X(x) \]
其中 \( b \) 是对数的底数。
⚝ 如果 \( p_X(x) = 0 \),则 \( p_X(x) \log_b p_X(x) \) 项被定义为 0,因为 \( \lim_{p \to 0^+} p \log p = 0 \)。
⚝ 对数底数 \( b \) 决定了熵的单位。
▮▮▮▮⚝ 当 \( b = 2 \) 时,单位是比特 (bits)。这在信息论和计算机科学中最为常用。
▮▮▮▮⚝ 当 \( b = e \) (自然对数) 时,单位是纳特 (nats)。
▮▮▮▮⚝ 当 \( b = 10 \) 时,单位是迪特 (dits) 或哈特莱 (Hartleys)。
在本书中,除非特别说明,我们将使用 \( b = 2 \),单位为比特。
熵的直观意义:
⚝ 熵 \( H(X) \) 可以看作是表示随机变量 \( X \) 的结果平均需要多少比特。
⚝ 熵越高,随机变量的不确定性越大,其结果包含的信息量也越多。
⚝ 熵的最小值是 0,发生在随机变量的取值是确定的时候(即某个 \( p_X(x) = 1 \),其他都为 0)。
⚝ 对于具有 \( n \) 个可能取值的随机变量,当其概率分布是均匀分布时,熵达到最大值 \( \log_b n \)。例如,对于一个公平的硬币 (两个结果,概率各 0.5),熵为 \( - (0.5 \log_2 0.5 + 0.5 \log_2 0.5) = - (0.5 \times -1 + 0.5 \times -1) = 1 \) 比特。对于一个公平的六面骰子 (六个结果,概率各 1/6),熵为 \( - \sum_{i=1}^6 \frac{1}{6} \log_2 \frac{1}{6} = \log_2 6 \approx 2.58 \) 比特。
2.2.2 联合熵 (Joint Entropy)
联合熵 (Joint Entropy) 度量了两个或多个随机变量组成的联合系统的不确定性。对于两个离散随机变量 \( X \) 和 \( Y \),其联合概率质量函数为 \( p_{X,Y}(x, y) \),联合熵 \( H(X, Y) \) 定义为:
\[ H(X, Y) = - \sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p_{X,Y}(x, y) \log_b p_{X,Y}(x, y) \]
联合熵 \( H(X, Y) \) 表示同时观察 \( X \) 和 \( Y \) 的结果平均需要多少比特。
性质:
⚝ \( H(X, Y) \ge \max(H(X), H(Y)) \)
⚝ \( H(X, Y) \le H(X) + H(Y) \),等号当且仅当 \( X \) 和 \( Y \) 相互独立时成立。
2.2.3 条件熵 (Conditional Entropy)
条件熵 (Conditional Entropy),也称为含糊度 (Equivocation),度量了在已知一个随机变量的取值后,另一个随机变量的平均剩余不确定性。对于两个离散随机变量 \( X \) 和 \( Y \),给定 \( Y = y \) 时 \( X \) 的条件熵 \( H(X|Y=y) \) 定义为:
\[ H(X|Y=y) = - \sum_{x \in \mathcal{X}} p_{X|Y}(x|y) \log_b p_{X|Y}(x|y) \]
条件熵 \( H(X|Y) \) 是 \( H(X|Y=y) \) 关于 \( Y \) 的所有可能取值 \( y \) 的期望:
\[ H(X|Y) = E_{Y}[H(X|Y=Y)] = \sum_{y \in \mathcal{Y}} p_Y(y) H(X|Y=y) \]
\[ H(X|Y) = - \sum_{y \in \mathcal{Y}} p_Y(y) \sum_{x \in \mathcal{X}} p_{X|Y}(x|y) \log_b p_{X|Y}(x|y) \]
利用 \( p_{X,Y}(x, y) = p_Y(y) p_{X|Y}(x|y) \),上式可以写成:
\[ H(X|Y) = - \sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p_{X,Y}(x, y) \log_b p_{X|Y}(x|y) \]
条件熵 \( H(X|Y) \) 表示在已知 \( Y \) 的值后,平均而言,表示 \( X \) 的结果还需要多少比特。
链式法则 (Chain Rule) for Entropy:
联合熵、熵和条件熵之间存在重要的关系:
\[ H(X, Y) = H(Y) + H(X|Y) = H(X) + H(Y|X) \]
这个公式非常直观:了解 \( X \) 和 \( Y \) 的联合信息量等于先了解 \( Y \) 的信息量,再加上在已知 \( Y \) 的情况下了解 \( X \) 的信息量。
2.3 互信息 (Mutual Information)
互信息 (Mutual Information) 度量了两个随机变量之间相互依赖的程度,或者说一个随机变量提供关于另一个随机变量的信息量。它量化了通过观察一个变量来减少另一个变量不确定性的程度。对于两个离散随机变量 \( X \) 和 \( Y \),互信息 \( I(X; Y) \) 定义为:
\[ I(X; Y) = \sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p_{X,Y}(x, y) \log_b \frac{p_{X,Y}(x, y)}{p_X(x) p_Y(y)} \]
互信息也可以用熵和条件熵来表示:
\[ I(X; Y) = H(X) - H(X|Y) \]
\[ I(X; Y) = H(Y) - H(Y|X) \]
\[ I(X; Y) = H(X) + H(Y) - H(X, Y) \]
这些公式表明,互信息等于单独的熵之和减去联合熵,或者等于一个变量的熵减去已知另一个变量后的条件熵。
互信息的性质:
⚝ \( I(X; Y) \ge 0 \),等号当且仅当 \( X \) 和 \( Y \) 相互独立时成立。独立意味着它们之间没有共享信息。
⚝ \( I(X; Y) = I(Y; X) \),互信息是对称的。
⚝ \( I(X; X) = H(X) \),一个变量与自身的互信息就是它本身的熵。
⚝ 互信息可以看作是 \( p_{X,Y}(x, y) \) 与 \( p_X(x) p_Y(y) \) 之间“距离”的一种度量(尽管不是真正的距离)。
在密码学中,互信息常用于量化密钥 (Key)、明文 (Plaintext)、密文 (Ciphertext) 之间的信息泄露程度。例如,\( I(M; C) \) 可以度量密文 \( C \) 泄露了多少关于明文 \( M \) 的信息。
2.4 KL散度 (KL Divergence) 与交叉熵 (Cross-Entropy)
KL散度 (Kullback-Leibler Divergence),也称为相对熵 (Relative Entropy),度量了两个概率分布 \( P \) 和 \( Q \) 之间的差异。对于离散概率分布 \( P(x) \) 和 \( Q(x) \),定义在同一集合 \( \mathcal{X} \) 上,从 \( Q \) 到 \( P \) 的KL散度 \( D_{KL}(P || Q) \) 定义为:
\[ D_{KL}(P || Q) = \sum_{x \in \mathcal{X}} P(x) \log_b \frac{P(x)}{Q(x)} \]
⚝ 如果对于某个 \( x \),\( Q(x) = 0 \) 但 \( P(x) > 0 \),则 \( D_{KL}(P || Q) \) 是无穷大。通常要求 \( Q(x) > 0 \) 当 \( P(x) > 0 \) 时。
⚝ KL散度 \( D_{KL}(P || Q) \ge 0 \),等号当且仅当 \( P = Q \) 时成立。
⚝ KL散度不是对称的,即 \( D_{KL}(P || Q) \ne D_{KL}(Q || P) \),因此它不是一个真正的距离度量。
KL散度的直观意义:
⚝ 如果我们使用基于分布 \( Q \) 的编码方案来编码来自分布 \( P \) 的数据,KL散度表示相对于使用基于真实分布 \( P \) 的最优编码方案,平均每个符号会多消耗多少比特。
交叉熵 (Cross-Entropy) 与KL散度密切相关。对于两个概率分布 \( P \) 和 \( Q \),交叉熵 \( H(P, Q) \) 定义为:
\[ H(P, Q) = - \sum_{x \in \mathcal{X}} P(x) \log_b Q(x) \]
交叉熵可以分解为:
\[ H(P, Q) = H(P) + D_{KL}(P || Q) \]
其中 \( H(P) \) 是分布 \( P \) 的熵。
交叉熵的直观意义:
⚝ 如果我们使用基于分布 \( Q \) 的编码方案来编码来自分布 \( P \) 的数据,交叉熵表示平均每个符号消耗的比特数。
⚝ 在机器学习 (Machine Learning) 中,交叉熵常被用作损失函数 (Loss Function),尤其是在分类问题中。最小化交叉熵 \( H(P, Q) \) (其中 \( P \) 是真实分布,\( Q \) 是模型预测的分布) 等价于最小化 \( D_{KL}(P || Q) \) (因为 \( H(P) \) 是常数),这有助于使模型预测的分布 \( Q \) 接近真实分布 \( P \)。
2.5 信源编码简介 (Introduction to Source Coding)
信源编码 (Source Coding),也称为数据压缩 (Data Compression),是信息论的一个重要分支。其目标是尽可能高效地表示信息源 (Information Source) 输出的数据,即减少表示数据所需的平均比特数。
① 信息源 (Information Source):可以看作是一个产生一系列符号的随机过程 (Stochastic Process)。在离散无记忆信源 (Discrete Memoryless Source, DMS) 模型中,每个符号的产生是独立的,且遵循相同的概率分布 \( p_X(x) \)。
② 信源编码定理 (Source Coding Theorem),也称为香农第一定理 (Shannon's First Theorem):对于一个离散无记忆信源 \( X \),其熵为 \( H(X) \),任何可逆的 (Lossless) 编码方案,其平均码长 (Average Codeword Length) \( L \) 必须满足 \( L \ge H(X) \)。此外,存在一种编码方案,可以使平均码长任意接近 \( H(X) \)。
这个定理告诉我们,熵 \( H(X) \) 是对该信源进行无损压缩的理论极限。
③ 常见信源编码方法:
⚝ 霍夫曼编码 (Huffman Coding):一种构造最优前缀码 (Prefix Code) 的算法,对于已知概率分布的符号集,可以达到接近熵的平均码长。
⚝ 算术编码 (Arithmetic Coding):一种更灵活的编码方法,可以对整个消息进行编码,通常比霍夫曼编码更接近熵极限,尤其是在符号概率分布不均匀时。
信源编码在密码学中有时会间接相关,例如在考虑如何高效存储或传输密钥、随机数等。
2.6 信道容量简介 (Introduction to Channel Capacity)
信道容量 (Channel Capacity) 是信息论的另一个核心概念,它度量了在给定噪声特性的通信信道 (Communication Channel) 上,可靠传输信息的最大速率。
① 通信信道 (Communication Channel):一个系统,输入是发送的符号,输出是接收到的符号。由于噪声 (Noise) 的存在,接收到的符号可能与发送的符号不同。可以用条件概率 \( p_{Y|X}(y|x) \) 来描述信道的特性,即发送 \( x \) 时接收到 \( y \) 的概率。
② 互信息与信道:对于一个信道,输入为随机变量 \( X \),输出为随机变量 \( Y \),它们之间的互信息 \( I(X; Y) \) 度量了通过信道传输的信息量。这个值取决于输入分布 \( p_X(x) \)。
③ 信道容量定理 (Channel Coding Theorem),也称为香农第二定理 (Shannon's Second Theorem):对于一个离道,其信道容量 \( C \) 定义为输入 \( X \) 和输出 \( Y \) 之间互信息的最大值,最大化是关于所有可能的输入分布 \( p_X(x) \) 进行的:
\[ C = \max_{p_X(x)} I(X; Y) \]
信道容量 \( C \) 表示在该信道上可靠传输信息的最大速率(通常以比特每信道使用次数为单位)。
⚝ 如果信息传输速率 \( R < C \),则存在一种编码和解码方案,可以使错误概率任意小。
⚝ 如果信息传输速率 \( R > C \),则不可能实现任意低的错误概率。
④ 常见信道模型:
⚝ 二进制对称信道 (Binary Symmetric Channel, BSC):输入和输出都是二进制,翻转概率为 \( p \)。
⚝ 加性高斯白噪声信道 (Additive White Gaussian Noise Channel, AWGN):输入和输出是连续的,噪声是服从高斯分布的独立随机变量。
信道容量的概念在密码学中与安全通信密切相关。虽然密码学的目标是保密性 (Confidentiality) 和认证性 (Authentication) 而非仅仅可靠传输,但理解信息在信道中的传输限制有助于分析密码系统的鲁棒性 (Robustness) 和安全性。例如,侧信道攻击 (Side Channel Attacks) 可以被建模为通过一个“泄露信道”获取信息,而信息论工具可以用来量化这个信道的容量或泄露率。
本章回顾了概率论基础,并详细介绍了信息论中的核心概念:熵、联合熵、条件熵、互信息、KL散度、交叉熵,以及信源编码和信道容量的基本思想。这些概念是理解信息论在密码学中应用的基石,将在后续章节中反复出现。
3. chapter 3: 密码学基础 (Cryptography Fundamentals)
欢迎来到本书的第三章!在前两章中,我们回顾了信息论的基础知识,并初步探讨了信息论与密码学的联系。在本章中,我们将深入学习密码学的基本概念、核心原理以及主要的分类。密码学是一门古老而又充满活力的学科,它是信息安全的核心技术之一。理解密码学的基础对于后续章节中探讨信息论在密码学中的应用至关重要。
3.1 基本概念与术语 (Basic Concepts and Terminology)
密码学 (Cryptography) 是研究信息安全传输和存储的数学技术。它的主要目标是确保信息的机密性 (Confidentiality)、完整性 (Integrity)、可用性 (Availability) 以及认证 (Authentication) 和不可否认性 (Non-repudiation)。在深入探讨之前,我们先来明确一些核心术语:
⚝ 明文 (Plaintext):原始的、可读的信息。
⚝ 密文 (Ciphertext):经过加密 (Encryption) 转换后,不可读的信息形式。
⚝ 加密 (Encryption):将明文转换为密文的过程。
⚝ 解密 (Decryption):将密文恢复为明文的过程。
⚝ 密钥 (Key):加密和解密过程中使用的秘密信息。密钥是密码算法 (Cryptographic Algorithm) 的输入之一,其安全性对整个密码系统的安全性至关重要。
⚝ 密码算法 (Cryptographic Algorithm) / 密码 (Cipher):执行加密和解密操作的数学函数或过程。
⚝ 密码系统 (Cryptosystem):由明文空间、密文空间、密钥空间、加密算法和解密算法组成的集合。
⚝ 密码学 (Cryptography):研究密码算法和密码系统的设计与分析的学科。
⚝ 密码分析 (Cryptanalysis):研究如何破解密码系统,即在不知道密钥的情况下获取明文或密钥的学科。
⚝ 密码学 (Cryptology):密码学 (Cryptography) 和密码分析 (Cryptanalysis) 的总称。
一个基本的密码通信模型通常包含以下参与者:
① 发送方 (Sender):希望发送秘密信息的一方,通常称为 Alice 👩💻。
② 接收方 (Receiver):希望接收秘密信息的一方,通常称为 Bob 👨💻。
③ 窃听者 (Eavesdropper):试图截获和理解通信内容的一方,通常称为 Eve 👂。
④ 攻击者 (Attacker):试图破坏通信或密码系统的一方,可能包括 Eve,也可能包括篡改信息 (Tampering) 或冒充他人 (Impersonation) 的 Mallory 😈。
密码学的目标就是在存在 Eve 或 Mallory 的情况下,确保 Alice 和 Bob 之间的通信安全。
3.2 对称密码简介 (Introduction to Symmetric Cryptography)
对称密码 (Symmetric Cryptography),也称为单密钥密码 (Single-key Cryptography) 或秘密密钥密码 (Secret-key Cryptography),是指加密和解密使用相同密钥(或可以轻易相互推导的密钥)的密码系统。
其基本模型如下:
明文 \( P \) 经过加密算法 \( E \) 和密钥 \( K \) 得到密文 \( C \):
\[ C = E_K(P) \]
密文 \( C \) 经过解密算法 \( D \) 和相同的密钥 \( K \) 恢复明文 \( P \):
\[ P = D_K(C) \]
对称密码的主要特点是加解密速度快,适合处理大量数据。然而,它面临的核心问题是密钥分发 (Key Distribution):Alice 和 Bob 需要在安全的环境下共享同一个密钥。如果密钥在传输过程中被 Eve 截获,那么整个通信的机密性就会被破坏。
对称密码算法主要分为两类:
⚝ 分组密码 (Block Cipher):将明文分成固定长度的数据块 (Block),对每个块独立进行加密。
▮▮▮▮⚝ 常见的算法包括:数据加密标准 (Data Encryption Standard, DES),尽管现在已被认为不安全;高级加密标准 (Advanced Encryption Standard, AES),目前广泛使用的标准。
▮▮▮▮⚝ 分组密码的操作模式 (Modes of Operation) 也很重要,如电子密码本模式 (Electronic Codebook, ECB)、密码分组链接模式 (Cipher Block Chaining, CBC)、计数器模式 (Counter Mode, CTR) 等,它们决定了如何使用分组密码来加密任意长度的数据。
⚝ 流密码 (Stream Cipher):对明文的每个比特 (Bit) 或字节 (Byte) 逐位或逐字节进行加密。通常通过生成一个伪随机密钥流 (Keystream),然后将密钥流与明文进行异或 (XOR) 操作来生成密文。
▮▮▮▮⚝ 常见的算法包括:RC4 (现已不推荐使用)、ChaCha20、Salsa20 等。
▮▮▮▮⚝ 流密码的关键在于密钥流生成器的质量,它必须能够生成看起来随机且不可预测的序列。
对称密码的安全性通常依赖于密钥的保密性以及算法的强度(即在不知道密钥的情况下,即使拥有大量明文和密文对,也难以进行密码分析)。
3.3 非对称密码简介 (Introduction to Asymmetric Cryptography)
非对称密码 (Asymmetric Cryptography),也称为公钥密码 (Public-key Cryptography),是指加密和解密使用不同密钥的密码系统。每个用户都有一对密钥:一个公钥 (Public Key) 和一个私钥 (Private Key)。公钥可以公开,而私钥必须严格保密。
其基本模型如下:
Alice 希望发送明文 \( P \) 给 Bob。Bob 生成一对密钥:公钥 \( PK_B \) 和私钥 \( SK_B \)。Bob 将 \( PK_B \) 公开。
Alice 使用 Bob 的公钥 \( PK_B \) 对明文 \( P \) 进行加密,得到密文 \( C \):
\[ C = E_{PK_B}(P) \]
Bob 收到密文 \( C \) 后,使用自己的私钥 \( SK_B \) 进行解密,恢复明文 \( P \):
\[ P = D_{SK_B}(C) \]
非对称密码解决了对称密码中的密钥分发难题。Alice 可以使用 Bob 的公开密钥加密信息,只有拥有对应私钥的 Bob 才能解密。即使 Eve 截获了 Bob 的公钥和密文,也无法解密。
非对称密码除了用于加密,还广泛应用于:
⚝ 数字签名 (Digital Signature):用于验证信息的来源和完整性。发送方使用自己的私钥对信息进行签名,接收方使用发送方的公钥验证签名。这提供了认证和不可否认性。
⚝ 密钥交换 (Key Exchange):允许通信双方在不安全的信道上协商出一个共享的对称密钥,然后使用该对称密钥进行后续的加密通信。著名的协议有 Diffie-Hellman 密钥交换。
非对称密码算法通常基于复杂的数学问题,例如大整数分解 (Integer Factorization) 问题(如 RSA 算法)或离散对数 (Discrete Logarithm) 问题(如 ElGamal 算法、椭圆曲线密码学 (Elliptic Curve Cryptography, ECC))。这些问题在计算上被认为是困难的,从而保证了算法的安全性。
与对称密码相比,非对称密码的计算开销通常更大,因此在实际应用中,常常结合使用:非对称密码用于安全地交换对称密钥,然后使用对称密钥进行高效的数据加密。
3.4 密码学中的安全性定义与模型 (Security Definitions and Models in Cryptography)
在密码学中,仅仅说一个算法是“安全的”是不够的。安全性必须在形式化的模型下进行精确定义。一个密码系统的安全性取决于多个因素,包括算法本身、密钥的长度和管理、协议的设计以及实现细节。
Kerckhoffs's Principle (科克霍夫原则) 是现代密码学设计的基础原则之一。它指出:一个密码系统的安全性不应该依赖于算法的保密性,而应该完全依赖于密钥的保密性。换句话说,即使攻击者知道密码算法的所有细节,只要他不知道密钥,就无法破解系统。这一原则强调了算法的公开性和可审查性,鼓励密码学研究者对算法进行公开分析和评估。
密码学的安全性定义通常涉及以下几个方面:
① 攻击模型 (Attack Model):定义了攻击者拥有的能力和资源。
▮▮▮▮ⓑ 唯密文攻击 (Ciphertext-Only Attack, COA):攻击者只拥有截获的密文。
▮▮▮▮ⓒ 已知明文攻击 (Known-Plaintext Attack, KPA):攻击者拥有一些明文及其对应的密文对。
▮▮▮▮ⓓ 选择明文攻击 (Chosen-Plaintext Attack, CPA):攻击者可以选择任意明文,并获得其对应的密文。这是评估公钥加密算法安全性的重要模型。
▮▮▮▮ⓔ 选择密文攻击 (Chosen-Ciphertext Attack, CCA):攻击者可以选择任意密文,并获得其对应的明文(通过访问一个解密预言机)。CCA 又可以细分为非适应性选择密文攻击 (Non-Adaptive CCA) 和适应性选择密文攻击 (Adaptive CCA, CCA2)。CCA2 是目前评估公钥加密算法安全性的最强模型之一。
② 安全目标 (Security Goal):定义了攻击者试图达成的目标。
▮▮▮▮ⓑ 机密性 (Confidentiality):防止信息被未授权方读取。
▮▮▮▮ⓒ 完整性 (Integrity):防止信息被未授权方修改。
▮▮▮▮ⓓ 认证 (Authentication):验证信息来源或通信方的身份。
▮▮▮▮ⓔ 不可否认性 (Non-repudiation):防止发送方否认其发送过某个信息。
③ 安全定义 (Security Definition):基于攻击模型和安全目标,形式化地定义“安全”。例如,对于加密算法的机密性,常见的安全定义包括:
▮▮▮▮ⓑ 语义安全 (Semantic Security):在给定密文的情况下,攻击者无法获得关于明文的任何“额外”信息(除了从密文长度等公开信息中能推断出的)。
▮▮▮▮ⓒ 不可区分性 (Indistinguishability):攻击者无法区分两个不同明文的密文。这通常通过一个游戏 (Game) 来定义,攻击者选择两个明文,挑战者随机选择其中一个进行加密,攻击者需要猜测加密的是哪个明文。如果在多项式时间内,攻击者成功的概率与随机猜测没有显著区别,则认为算法具有不可区分性。根据攻击模型的不同,有 IND-CPA (在 CPA 模型下的不可区分性)、IND-CCA (在 CCA 模型下的不可区分性) 等。
密码学的安全性通常是在计算上定义的,即认为在合理的计算资源和时间内,攻击者无法成功破解系统。这与信息论安全 (Information-Theoretic Security) 不同,信息论安全不依赖于攻击者的计算能力,即使攻击者拥有无限的计算资源也无法破解。我们将在后续章节中详细探讨信息论安全。
本章为我们后续深入探讨信息论与密码学的交叉领域奠定了基础。我们了解了密码学的基本框架、对称与非对称密码的区别以及形式化安全定义的重要性。在下一章中,我们将回到信息论,学习香农关于保密通信的开创性理论。
4. chapter 4: 香农的保密理论 (Shannon's Theory of Secrecy)
欢迎来到本书的第四章!在前几章中,我们回顾了信息论和密码学的基本概念。现在,我们将深入探讨信息论在密码学中的一个里程碑式应用:克劳德·香农 (Claude Shannon) 在其划时代论文《通信系统的保密理论》(Communication Theory of Secrecy Systems) 中提出的保密理论。这篇论文奠定了信息论安全 (Information-Theoretic Security) 的基础,为我们理解密码系统的理论极限提供了深刻的洞察。在本章中,我们将详细解析香农的保密理论,包括理想安全 (Perfect Secrecy) 的定义、密钥与熵的关系、含糊度 (Equivocation) 的概念,并通过一次性密码本 (One-Time Pad) 的例子来具体分析信息论安全性。最后,我们将讨论香农理论的局限性及其在现代密码学中的实际意义。
4.1 理想安全 (Perfect Secrecy) 的定义与条件
在密码学中,我们追求的目标之一是确保即使攻击者截获了密文 (ciphertext),也无法获取关于明文 (plaintext) 的任何信息。香农在信息论的框架下,为这种“完美”的安全性提供了一个严格的数学定义,称之为理想安全 (Perfect Secrecy)。
① 定义 (Definition)
考虑一个密码系统,它由以下部分组成:
▮▮▮▮ⓐ 明文空间 (Message Space) \(\mathcal{M}\),包含所有可能的明文 \(M\)。
▮▮▮▮ⓑ 密文空间 (Ciphertext Space) \(\mathcal{C}\),包含所有可能的密文 \(C\)。
▮▮▮▮ⓒ 密钥空间 (Key Space) \(\mathcal{K}\),包含所有可能的密钥 \(K\)。
▮▮▮▮ⓓ 加密函数 (Encryption Function) \(E: \mathcal{M} \times \mathcal{K} \to \mathcal{C}\),对于每个密钥 \(k \in \mathcal{K}\),\(E_k(m) = c\)。
▮▮▮▮ⓔ 解密函数 (Decryption Function) \(D: \mathcal{C} \times \mathcal{K} \to \mathcal{M}\),对于每个密钥 \(k \in \mathcal{K}\),\(D_k(c) = m\) 当且仅当 \(E_k(m) = c\)。
假设明文 \(M\) 是一个随机变量,其概率分布为 \(P(M)\)。密钥 \(K\) 也是一个随机变量,其概率分布为 \(P(K)\)。通常假设密钥 \(K\) 的选择独立于明文 \(M\),即 \(P(K, M) = P(K)P(M)\)。密文 \(C\) 是由 \(M\) 和 \(K\) 通过加密过程生成的随机变量。
理想安全 (Perfect Secrecy) 的定义是:对于任意可能的明文 \(m \in \mathcal{M}\) 和任意可能的密文 \(c \in \mathcal{C}\),给定密文 \(C=c\) 后,明文 \(M=m\) 的概率等于在不知道密文的情况下明文 \(M=m\) 的概率。用条件概率表示,即:
\[ P(M=m | C=c) = P(M=m) \]
对于所有 \(m \in \mathcal{M}\) 和 \(c \in \mathcal{C}\) 且 \(P(C=c) > 0\)。
这个定义意味着,观察到密文 \(c\) 并不会改变我们对原始明文 \(m\) 的信念。换句话说,密文没有泄露关于明文的任何信息。
② 信息论视角下的定义
利用信息论的概念,理想安全可以等价地表示为:明文随机变量 \(M\) 与密文随机变量 \(C\) 之间的互信息 (Mutual Information) 为零。
\[ I(M; C) = 0 \]
回顾互信息的定义:\(I(M; C) = H(M) - H(M|C)\)。因此,\(I(M; C) = 0\) 等价于 \(H(M|C) = H(M)\)。
条件熵 \(H(M|C)\) 度量了在已知密文 \(C\) 的情况下,明文 \(M\) 的不确定性。理想安全要求这种不确定性与不知道密文时明文的不确定性 \(H(M)\) 相同。这意味着密文完全没有减少我们对明文的未知程度。
③ 理想安全的条件
香农证明了实现理想安全需要满足以下两个基本条件:
▮▮▮▮ⓐ 密钥空间的大小 \(|\mathcal{K}|\) 必须大于或等于明文空间的大小 \(|\mathcal{M}|\)。即 \(|\mathcal{K}| \ge |\mathcal{M}|\)。
▮▮▮▮ⓑ 对于每一个明文 \(m \in \mathcal{M}\) 和每一个密文 \(c \in \mathcal{C}\),必须存在唯一一个密钥 \(k \in \mathcal{K}\) 使得 \(E_k(m) = c\)。
第二个条件通常被称为“对于任意明文到密文的映射,都存在唯一密钥”。结合第一个条件,这意味着密钥必须像明文一样多,并且每个密钥都能将一个特定的明文映射到任何一个可能的密文上。
这两个条件是理想安全的充分必要条件(在密钥均匀分布且独立于明文的假设下)。
4.2 密钥空间与熵 (Key Space and Entropy)
在密码系统中,密钥 (key) 的随机性至关重要。密钥空间 (Key Space) 的大小以及密钥的概率分布直接影响了密码系统的安全性,特别是在信息论安全的框架下。熵 (Entropy) 是度量随机变量不确定性的工具,因此它自然地被用来衡量密钥的随机性或不确定性。
① 密钥熵 (Key Entropy)
假设密钥 \(K\) 是从密钥空间 \(\mathcal{K}\) 中随机选取的。密钥的熵 \(H(K)\) 度量了密钥的不确定性。
\[ H(K) = - \sum_{k \in \mathcal{K}} P(K=k) \log_2 P(K=k) \]
如果密钥是均匀随机选取的,即对于所有 \(k \in \mathcal{K}\),\(P(K=k) = 1/|\mathcal{K}|\),那么密钥的熵达到最大值:
\[ H(K) = \log_2 |\mathcal{K}| \]
这表明,密钥空间越大,均匀随机选取的密钥的熵就越高,攻击者在不知道任何信息的情况下猜测密钥的难度就越大。
② 密钥熵与理想安全
在理想安全的条件下,我们知道 \(|\mathcal{K}| \ge |\mathcal{M}|\)。如果密钥是均匀分布的,那么 \(H(K) = \log_2 |\mathcal{K}|\) 且 \(H(M) \le \log_2 |\mathcal{M}|\) (当明文均匀分布时取等号)。
香农证明了,对于一个具有理想安全性的密码系统,如果明文 \(M\) 的熵为 \(H(M)\),那么密钥 \(K\) 的熵 \(H(K)\) 必须满足:
\[ H(K) \ge H(M) \]
这意味着,为了隐藏明文的不确定性 \(H(M)\),密钥本身必须至少具有与明文相同程度的不确定性 \(H(M)\)。如果密钥的熵小于明文的熵,那么无论如何设计加密算法,密文都必然会泄露关于明文的信息,无法达到理想安全。
③ 密钥长度与熵
在实际应用中,密钥通常表示为二进制串。一个长度为 \(n\) 比特的密钥,如果所有 \(2^n\) 个可能的密钥都被等概率使用,那么密钥空间的大小是 \(|\mathcal{K}| = 2^n\),密钥的熵是 \(H(K) = \log_2 2^n = n\) 比特。
香农的理论告诉我们,如果明文的平均信息量(熵)是 \(H(M)\) 比特,那么实现理想安全所需的密钥的平均信息量(熵)至少是 \(H(M)\) 比特。对于最坏情况(明文可以是任何可能的串,且均匀分布),明文的熵接近其长度。因此,为了实现理想安全,密钥的长度至少应该与明文的长度相当,并且密钥必须是真正随机且不重复使用的。
4.3 含糊度 (Equivocation) 的概念与计算
含糊度 (Equivocation) 是香农引入的一个重要概念,用于度量在已知某些信息的情况下,关于另一个随机变量的剩余不确定性。在密码学中,我们主要关注密钥含糊度 (Key Equivocation) 和明文含糊度 (Message Equivocation)。
① 明文含糊度 (Message Equivocation)
明文含糊度是指在已知密文 \(C\) 的情况下,关于明文 \(M\) 的条件熵 (Conditional Entropy),记为 \(H(M|C)\)。
\[ H(M|C) = \sum_{c \in \mathcal{C}} P(C=c) H(M|C=c) \]
其中 \(H(M|C=c) = - \sum_{m \in \mathcal{M}} P(M=m|C=c) \log_2 P(M=m|C=c)\)。
明文含糊度 \(H(M|C)\) 度量了攻击者在截获密文后,对原始明文仍然存在的不确定性。
▮▮▮▮⚝ 如果 \(H(M|C) = H(M)\),这意味着已知密文 \(C\) 并未减少对明文 \(M\) 的不确定性,即密文没有泄露关于明文的信息。这正是理想安全 (Perfect Secrecy) 的定义。
▮▮▮▮⚝ 如果 \(H(M|C) = 0\),这意味着已知密文 \(C\) 后,明文 \(M\) 的值是完全确定的。攻击者可以唯一确定明文。
② 密钥含糊度 (Key Equivocation)
密钥含糊度是指在已知密文 \(C\) 的情况下,关于密钥 \(K\) 的条件熵,记为 \(H(K|C)\)。
\[ H(K|C) = \sum_{c \in \mathcal{C}} P(C=c) H(K|C=c) \]
其中 \(H(K|C=c) = - \sum_{k \in \mathcal{K}} P(K=k|C=c) \log_2 P(K=k|C=c)\)。
密钥含糊度 \(H(K|C)\) 度量了攻击者在截获密文后,对所使用的密钥仍然存在的不确定性。
▮▮▮▮⚝ 如果 \(H(K|C) = H(K)\),这意味着已知密文 \(C\) 并未减少对密钥 \(K\) 的不确定性。
▮▮▮▮⚝ 如果 \(H(K|C) = 0\),这意味着已知密文 \(C\) 后,密钥 \(K\) 的值是完全确定的。攻击者可以唯一确定密钥。
③ 含糊度、冗余度与破译
香农引入了“冗余度 (Redundancy)”的概念。自然语言(如中文、英文)具有很高的冗余度,这意味着即使丢失或错误传输一部分信息,接收者仍然可以理解其含义。这种冗余度在密码分析中非常有用。攻击者可以利用明文的统计特性(即冗余度)来猜测密钥或明文。
随着攻击者截获的密文数量增加,他们可以对密文进行统计分析。如果密码系统不够安全,这些统计特性会逐渐泄露关于明文或密钥的信息,导致含糊度 \(H(M|C)\) 和 \(H(K|C)\) 下降。
香农定义了几个重要的点:
▮▮▮▮ⓐ 唯一破译距离 (Unicity Distance):这是指攻击者平均需要截获多少密文才能使得密钥含糊度 \(H(K|C)\) 接近于零,从而能够唯一确定密钥。对于一个简单的替换密码 (Simple Substitution Cipher),其唯一破译距离相对较短,因为自然语言的冗余度很高。对于理想安全的密码系统,唯一破译距离是无穷大,因为 \(H(K|C) = H(K)\) 始终成立(在理想安全条件下,\(H(K|C) = H(K) - I(K;C)\)。由于密钥独立于明文,且理想安全意味着 \(I(M;C)=0\),可以推导出 \(I(K;C)=0\),故 \(H(K|C)=H(K)\))。
▮▮▮▮ⓑ 完美保密:如前所述,\(H(M|C) = H(M)\)。
含糊度是衡量密码系统抵抗唯密文攻击 (Ciphertext-Only Attack) 能力的重要指标。高含糊度意味着攻击者即使拥有密文,对明文或密钥仍然高度不确定。
4.4 一次性密码本 (One-Time Pad) 的信息论安全性分析
一次性密码本 (One-Time Pad, OTP) 是一个非常特殊的密码系统,它能够实现香农定义的理想安全。理解 OTP 的工作原理及其安全性分析是理解信息论安全性的最佳案例。
① 一次性密码本的工作原理
OTP 的工作原理非常简单:
▮▮▮▮ⓐ 明文 \(M\)、密文 \(C\)、密钥 \(K\) 都是长度相同的二进制串。
▮▮▮▮ⓑ 加密过程:将明文与密钥进行逐位异或 (XOR) 操作。\(C = M \oplus K\)。
▮▮▮▮ⓒ 解密过程:将密文与相同的密钥进行逐位异或操作。\(M = C \oplus K = (M \oplus K) \oplus K = M \oplus (K \oplus K) = M \oplus 0 = M\)。
OTP 的关键要求:
▮▮▮▮ⓐ 密钥 \(K\) 必须是真正随机 (truly random) 的。
▮▮▮▮ⓑ 密钥 \(K\) 的长度必须至少与明文 \(M\) 的长度相同。
▮▮▮▮ⓒ 每一个密钥 \(K\) 只能使用一次 (one-time)。
② OTP 的理想安全性证明
我们来证明满足上述条件的 OTP 具有理想安全。我们需要证明对于任意明文 \(m\) 和任意密文 \(c\),\(P(M=m | C=c) = P(M=m)\)。
假设明文空间 \(\mathcal{M}\)、密文空间 \(\mathcal{C}\)、密钥空间 \(\mathcal{K}\) 都是长度为 \(n\) 的所有二进制串的集合,即 \(|\mathcal{M}| = |\mathcal{C}| = |\mathcal{K}| = 2^n\)。
假设明文 \(M\) 的概率分布为 \(P(M)\)。
假设密钥 \(K\) 是从 \(\mathcal{K}\) 中均匀随机选取的,且独立于 \(M\)。即对于所有 \(k \in \mathcal{K}\),\(P(K=k) = 1/|\mathcal{K}| = 1/2^n\)。
根据贝叶斯定理,我们有:
\[ P(M=m | C=c) = \frac{P(C=c | M=m) P(M=m)}{P(C=c)} \]
首先计算 \(P(C=c | M=m)\)。如果明文是 \(m\),要生成密文 \(c\),必须使用密钥 \(k\) 使得 \(m \oplus k = c\)。解出 \(k\),得到 \(k = m \oplus c\)。由于对于任意给定的 \(m\) 和 \(c\),存在唯一一个 \(k = m \oplus c\) 满足条件,并且密钥 \(K\) 是均匀分布的,所以 \(P(K = m \oplus c) = 1/|\mathcal{K}|\)。
因此,\(P(C=c | M=m) = P(K = m \oplus c) = 1/|\mathcal{K}|\)。
接下来计算 \(P(C=c)\)。密文 \(C\) 的概率分布可以通过对所有可能的明文 \(m'\) 求和得到:
\[ P(C=c) = \sum_{m' \in \mathcal{M}} P(C=c | M=m') P(M=m') \]
对于每一个 \(m'\),要生成密文 \(c\),需要密钥 \(k' = m' \oplus c\)。由于密钥是均匀分布的,\(P(C=c | M=m') = P(K = m' \oplus c) = 1/|\mathcal{K}|\) 对于所有 \(m'\) 都成立。
所以,
\[ P(C=c) = \sum_{m' \in \mathcal{M}} \frac{1}{|\mathcal{K}|} P(M=m') = \frac{1}{|\mathcal{K}|} \sum_{m' \in \mathcal{M}} P(M=m') \]
由于 \(\sum_{m' \in \mathcal{M}} P(M=m') = 1\),我们得到 \(P(C=c) = 1/|\mathcal{K}|\)。
这表明,如果密钥是均匀分布的,那么无论明文的分布如何,密文也是均匀分布的!
现在将 \(P(C=c | M=m)\) 和 \(P(C=c)\) 代回贝叶斯公式:
\[ P(M=m | C=c) = \frac{(1/|\mathcal{K}|) P(M=m)}{1/|\mathcal{K}|} = P(M=m) \]
这正是理想安全 (Perfect Secrecy) 的定义!
③ OTP 满足理想安全条件的分析
回顾理想安全的两个条件:
▮▮▮▮ⓐ \(|\mathcal{K}| \ge |\mathcal{M}|\)。在 OTP 中,密钥长度等于明文长度,所以 \(|\mathcal{K}| = |\mathcal{M}|\) (假设它们都是 \(n\) 比特串,空间大小为 \(2^n\))。条件满足。
▮▮▮▮ⓑ 对于每一个明文 \(m\) 和每一个密文 \(c\),存在唯一一个密钥 \(k\) 使得 \(E_k(m) = c\)。在 OTP 中,\(m \oplus k = c\) 的唯一解是 \(k = m \oplus c\)。条件满足。
因此,OTP 确实满足理想安全的条件,并且在理论上提供了最高级别的安全性。
④ OTP 的密钥管理挑战
尽管 OTP 提供了理想安全,但在实际应用中却很少使用,主要原因在于其密钥管理 (key management) 的巨大挑战。
▮▮▮▮⚝ 密钥长度:密钥的长度必须与明文的长度相同。这意味着传输 1GB 的数据需要预先共享 1GB 的密钥。
▮▮▮▮⚝ 密钥分发:密钥必须在通信双方之间安全地共享,且共享的密钥总量与需要加密的总数据量相同。安全地分发如此大量的密钥本身就是一个难题。
▮▮▮▮⚝ 密钥使用:每一个密钥只能使用一次。一旦使用,就必须销毁。重复使用密钥会破坏其理想安全性。如果使用同一个密钥 \(k\) 加密两个明文 \(m_1\) 和 \(m_2\),得到密文 \(c_1 = m_1 \oplus k\) 和 \(c_2 = m_2 \oplus k\),那么攻击者截获 \(c_1\) 和 \(c_2\) 后,可以计算 \(c_1 \oplus c_2 = (m_1 \oplus k) \oplus (m_2 \oplus k) = m_1 \oplus m_2\)。如果攻击者知道明文的一些统计特性(例如,它们是英文文本),他们可以利用 \(m_1 \oplus m_2\) 的信息来破译 \(m_1\) 和 \(m_2\)。
因此,尽管 OTP 在理论上是完美的,但其对密钥的苛刻要求使得它在大多数实际场景中不切实际。它主要用于对安全性要求极高且数据量有限的场景,例如外交或军事通信。
4.5 香农理论的局限性与实际意义 (Limitations and Practical Significance of Shannon's Theory)
香农的保密理论为密码学提供了坚实的理论基础,并引入了信息论工具来分析安全性。然而,它也存在一些局限性,并且其主要贡献在于理论指导而非直接的实用方案(OTP 除外)。
① 香农理论的局限性
▮▮▮▮ⓐ 对密钥的要求过高:实现理想安全需要密钥长度至少等于明文长度,且密钥必须是真正随机且一次性的。这导致了巨大的密钥管理负担,使得理想安全在大多数实际应用中不可行。
▮▮▮▮ⓑ 仅考虑唯密文攻击:香农的理论主要分析了密码系统在唯密文攻击下的安全性,即攻击者只能获取密文。现代密码学需要考虑更强的攻击模型,如已知明文攻击 (Known-Plaintext Attack)、选择明文攻击 (Chosen-Plaintext Attack)、选择密文攻击 (Chosen-Ciphertext Attack) 等。
▮▮▮▮ⓒ 未考虑计算资源限制:信息论安全假设攻击者拥有无限的计算能力。只要密文泄露了关于明文的任何信息(即使是微不足道的),它就不具备理想安全。然而,在实际中,攻击者的计算能力是有限的。即使密文泄露了一些信息,如果从这些信息中恢复明文需要耗费天文数字般的计算资源,那么在实践中仍然认为是安全的。
② 香农理论的实际意义
尽管存在局限性,香农的保密理论对密码学产生了深远的影响:
▮▮▮▮ⓐ 提供了安全性的理论上限:香农证明了理想安全是信息论意义下所能达到的最高安全性水平。他的理论为密码系统的安全性设定了一个基准,任何密码系统都不可能在信息论意义上比 OTP 更安全(对于唯密文攻击)。
▮▮▮▮ⓑ 引入了信息论工具:香农将概率论和信息论引入密码学分析,提供了量化安全性的数学工具(如熵、互信息、含糊度)。这些工具至今仍被用于分析密码协议和评估信息泄露。
▮▮▮▮ⓒ 启发了计算安全的概念:由于理想安全在实践中难以实现,密码学研究转向了计算安全 (Computational Security)。计算安全的目标是设计这样的密码系统:虽然理论上可能被攻破,但攻破它所需的计算资源超出了任何现实攻击者的能力。香农的理论促使人们认识到信息论安全和计算安全是两个不同的安全模型。
▮▮▮▮ⓓ 强调了密钥的重要性:香农的理论清晰地表明,密钥的随机性、长度和管理是实现高安全性的核心。这促使人们对随机数生成器 (Random Number Generators) 和密钥管理协议进行深入研究。
▮▮▮▮ⓔ 奠定了信息论安全的基础:尽管理想安全难以实现,但信息论安全作为一个研究领域依然活跃,特别是在量子密码学 (Quantum Cryptography)、安全多方计算 (Secure Multi-Party Computation) 等领域,信息论工具被用于证明在特定模型下的安全性,不依赖于计算复杂性假设。
总而言之,香农的保密理论是密码学发展史上的一个重要里程碑。它用严谨的数学语言定义了“完美”的安全性,揭示了实现这种安全性所需的条件,并指出了其在实践中的挑战。虽然现代密码学主要依赖于计算安全,但香农的信息论方法仍然是分析和理解密码系统安全性的强大工具。
5. chapter 5: 信息论安全 (Information-Theoretic Security)
欢迎来到本书的第五章。在前面的章节中,我们回顾了信息论和密码学的基础知识,并深入探讨了香农关于保密通信的开创性理论,特别是理想安全 (Perfect Secrecy) 的概念以及一次性密码本 (One-Time Pad) 的信息论安全性。本章将在此基础上,系统地介绍信息论安全 (Information-Theoretic Security) 这一重要的密码学安全范式。我们将明确信息论安全的定义、范畴,将其与更常见的计算安全 (Computational Security) 进行对比,并通过具体例子加深理解,最后探讨信息论安全在现代密码学中的地位和作用。
信息论安全提供了一种极强的安全保证:即使攻击者拥有无限的计算能力,也无法攻破系统。这种“无条件”的安全保证,使得信息论安全成为密码学理论研究的基石之一,并在某些特定应用场景中具有不可替代的价值。理解信息论安全,对于深入掌握密码学的本质以及不同安全模型之间的差异至关重要。
5.1 信息论安全的定义与范畴 (Definition and Scope of Information-Theoretic Security)
信息论安全,顾名思义,是基于信息论原理来定义和分析的一种安全概念。它的核心思想是,即使攻击者拥有无限的计算资源,也无法从截获的信息中获取关于秘密信息的任何有用知识。换句话说,攻击者无法通过任何计算手段来提高其对秘密信息的猜测准确性。
让我们形式化地定义信息论安全。考虑一个密码系统,其中包含明文空间 \(\mathcal{M}\)、密文空间 \(\mathcal{C}\) 和密钥空间 \(\mathcal{K}\)。加密过程由函数 \(E: \mathcal{M} \times \mathcal{K} \to \mathcal{C}\) 定义,解密过程由函数 \(D: \mathcal{C} \times \mathcal{K} \to \mathcal{M}\) 定义。假设明文 \(M\) 是一个随机变量,密钥 \(K\) 也是一个随机变量,密文 \(C = E(M, K)\)。
一个密码系统被称为是信息论安全的,如果攻击者在观察到密文 \(C\) 后,其对明文 \(M\) 的不确定性没有降低。用信息论的语言来说,这意味着明文 \(M\) 和密文 \(C\) 是统计独立的,或者说,在已知密文 \(C\) 的条件下,明文 \(M\) 的条件概率分布与未知密文时 \(M\) 的先验概率分布完全相同。
数学上,信息论安全(或理想安全 (Perfect Secrecy))的定义可以表述为:
对于任意明文 \(m \in \mathcal{M}\) 和任意密文 \(c \in \mathcal{C}\),如果 \(P(C=c) > 0\),则有
\[ P(M=m | C=c) = P(M=m) \]
这等价于 \(P(C=c | M=m) = P(C=c)\) 对于所有 \(m, c\) 成立。
进一步,这等价于明文 \(M\) 和密文 \(C\) 的互信息 (Mutual Information) 为零:
\[ I(M; C) = 0 \]
回想一下,互信息 \(I(M; C) = H(M) - H(M|C)\)。\(I(M; C) = 0\) 意味着 \(H(M|C) = H(M)\)。条件熵 \(H(M|C)\) 表示在已知密文 \(C\) 的条件下,明文 \(M\) 的剩余不确定性。如果 \(H(M|C) = H(M)\),则说明观察到密文 \(C\) 并未减少我们对明文 \(M\) 的不确定性,即密文没有泄露关于明文的任何信息。
信息论安全的范畴非常广泛,它不仅限于传统的加密系统。任何涉及信息处理和传输的系统,只要其安全性不依赖于攻击者的计算限制,都可以被视为追求信息论安全。这包括:
⚝ 保密通信:如一次性密码本 (One-Time Pad)。
⚝ 认证码 (Authentication Codes):提供信息论意义上的认证保证。
⚝ 私密信息检索 (Private Information Retrieval, PIR) 的某些变种。
⚝ 安全多方计算 (Secure Multi-Party Computation, MPC) 的某些协议在特定模型下。
⚝ 秘密共享 (Secret Sharing) 方案。
信息论安全提供的是一种“无条件安全” (Unconditional Security) 或“证明安全” (Provable Security) 的形式,其安全性不依赖于任何未被证明的计算困难性假设。这是它与计算安全最本质的区别。
5.2 与计算安全 (Computational Security) 的对比
在现代密码学中,计算安全 (Computational Security) 是更常见的一种安全范式。理解信息论安全,必须将其与计算安全进行对比。
特性 | 信息论安全 (Information-Theoretic Security) | 计算安全 (Computational Security) |
---|---|---|
安全保证 | 无条件安全 (Unconditional Security):安全性不依赖于攻击者的计算能力。 | 条件安全 (Conditional Security):安全性依赖于攻击者计算能力的限制,通常假设攻击者是概率多项式时间 (Probabilistic Polynomial Time, PPT) 机器。 |
攻击者能力 | 拥有无限的计算资源和时间。 | 拥有有限的计算资源和时间,通常被建模为在多项式时间内运行的算法。 |
安全性定义 | 基于信息论度量 (如熵、互信息),要求密文不泄露关于明文的任何信息。 | 基于计算困难性假设 (如大整数分解、离散对数问题等),要求在有限计算资源下,攻破系统的概率可以忽略不计 (Negligible)。 |
密钥长度 | 通常要求密钥长度至少与明文长度相同 (如一次性密码本)。 | 密钥长度通常远小于明文长度,安全性随密钥长度呈指数增长。 |
实用性 | 理论上强大,但在许多实际应用中因密钥管理等问题而不实用。 | 是现代密码学的主流,广泛应用于各种实际场景 (如TLS/SSL, SSH, 加密文件系统等)。 |
典型例子 | 一次性密码本 (One-Time Pad)、理想的秘密共享方案。 | AES, RSA, ECC 等现代加密算法。 |
核心区别:
信息论安全关注的是信息本身是否泄露,与攻击者如何处理信息无关。即使攻击者能瞬间执行任意复杂的计算,也无法从密文中恢复明文或获取有用信息。
计算安全则承认攻击者拥有强大的计算能力,但假设这种能力是有限的(例如,在合理的时间内无法解决某个数学难题)。计算安全的目标是使攻击者在有限的计算资源下,攻破系统的概率非常小,小到可以忽略不计。
举例说明:
考虑一个简单的替换密码。如果密钥(替换表)是随机选择的,并且只使用一次(类似于一次性密码本),那么它是信息论安全的。因为对于任何密文,所有可能的明文都等概率地对应一个唯一的密钥,攻击者无法区分哪个是真正的明文。
然而,如果密钥重复使用,或者密钥长度远小于明文长度(如简单的凯撒密码或重复使用的维吉尼亚密码),即使攻击者计算能力有限,也可以通过频率分析等统计方法来破解。这种情况下,系统不是信息论安全的。现代分组密码 (Block Ciphers) 和流密码 (Stream Ciphers) 追求的是计算安全,它们的设计目标是使得在不知道密钥的情况下,通过密文推断明文在计算上是不可行的。
信息论安全是一种理想化的安全模型,它为密码学提供了理论上限。计算安全则是现实世界中更实用的安全模型,它在保证足够安全性的同时,兼顾了效率和可行性。
5.3 信息论安全系统的例子 (Examples of Information-Theoretic Secure Systems)
虽然信息论安全在实践中实现起来往往有挑战,但确实存在一些重要的信息论安全系统或协议。
① 一次性密码本 (One-Time Pad, OTP)
这是信息论安全最经典、最纯粹的例子。正如我们在第四章详细分析的,如果满足以下条件,一次性密码本是信息论安全的:
▮▮▮▮ⓐ 密钥是完全随机的。
▮▮▮▮ⓑ 密钥的长度至少与明文长度相同。
▮▮▮▮ⓒ 密钥只使用一次。
在这些条件下,对于任意明文 \(m\) 和任意密文 \(c\),存在唯一的密钥 \(k\) 使得 \(E(m, k) = c\)。由于密钥 \(k\) 是从一个均匀分布中随机选取的,攻击者观察到密文 \(c\) 后,对于任何可能的明文 \(m'\),总存在一个密钥 \(k'\) 使得 \(E(m', k') = c\)。由于所有密钥是等概率的,攻击者无法区分哪个明文是真实的。形式化地,\(P(M=m | C=c) = P(M=m)\),满足信息论安全的定义。
一次性密码本的挑战在于密钥的分发和管理。由于密钥必须与明文一样长且只使用一次,这在许多实际应用中是难以实现的。
② 秘密共享 (Secret Sharing)
秘密共享方案允许多个参与者共同持有一个秘密,只有当足够多的参与者(达到某个阈值)合作时,才能恢复秘密;少于阈值的参与者则无法获得关于秘密的任何信息。Shamir秘密共享方案就是一个著名的例子,它基于多项式插值。
在一个 \((t, n)\) 阈值秘密共享方案中,一个秘密 \(S\) 被分成 \(n\) 份,分发给 \(n\) 个参与者。任意 \(t\) 个参与者可以合作恢复 \(S\),而任意少于 \(t\) 个参与者则无法获得关于 \(S\) 的任何信息。这里的“无法获得任何信息”通常是在信息论意义上定义的:对于任意少于 \(t\) 份的子集,这些份额的联合熵等于秘密的熵,即 \(H(S | \text{少于 t 份的份额}) = H(S)\)。这意味着这些份额与秘密是信息论独立的。
秘密共享在密钥管理、安全备份等方面有重要应用。
③ 信息论安全的认证码 (Information-Theoretic Authentication Codes)
除了保密性,信息论安全的概念也可以应用于认证 (Authentication)。信息论安全的认证码旨在防止攻击者在不知道密钥的情况下伪造消息,即使攻击者有无限计算能力。香农在保密理论之后也研究了认证码的信息论界限。这种认证码通常需要一个共享的秘密密钥,并且密钥的使用方式使得攻击者在不知道密钥的情况下,构造一个能被接收者接受的伪造消息的概率非常低,这个概率界限与攻击者的计算能力无关。
④ 某些私密信息检索 (Private Information Retrieval, PIR) 方案
PIR 协议允许用户从服务器下载一个文件,而服务器不知道用户下载的是哪个文件。一些信息论安全的 PIR 方案要求服务器复制整个数据库,并且用户下载的数据量与数据库大小相关,这在实践中效率较低,但提供了强大的隐私保证。
这些例子展示了信息论安全在不同密码学任务中的应用,尽管其严格的要求限制了它们在通用场景下的广泛部署,但在对安全性要求极高的特定领域,它们仍然是重要的理论工具和实用方案。
5.4 信息论安全在现代密码学中的地位 (Status of Information-Theoretic Security in Modern Cryptography)
尽管计算安全是现代密码学的主流,信息论安全在其中仍然扮演着重要角色,具有不可替代的地位。
① 理论基石与安全上限: 信息论安全为密码学提供了理论上的安全上限。它告诉我们,在不限制计算能力的情况下,什么样的安全是可能实现的,什么样的安全是不可能的。例如,香农的保密理论证明了实现理想安全所需的密钥长度下界。这为设计和分析计算安全系统提供了理论指导和参照。
② 证明安全的基础: 许多现代密码学方案的安全性证明,虽然最终依赖于计算困难性假设,但在证明过程中常常会利用信息论工具和概念。例如,在规约证明 (Reduction Proof) 中,可能会证明如果一个方案可以被攻破,那么某个信息论量(如互信息)会发生显著变化,而这种变化在计算上是困难的。
③ 特定领域的应用: 在一些对安全性要求极高或攻击者计算能力可能非常强大的场景下,信息论安全方案仍然是首选或唯一选择。
▮▮▮▮ⓐ 量子密码学 (Quantum Cryptography): 量子密钥分发 (Quantum Key Distribution, QKD) 是一个典型的例子。QKD 协议(如 BB84)的安全性是基于量子力学原理和信息论的,而不是计算困难性假设。它的目标是实现信息论安全的密钥分发,即使面对拥有无限计算能力的窃听者(包括未来的量子计算机)。
▮▮▮▮ⓑ 安全多方计算 (Secure Multi-Party Computation, MPC): 在某些 MPC 模型下(例如,当参与者中恶意方的数量少于某个阈值时),可以设计出信息论安全的协议,保证即使恶意方拥有无限计算能力,也无法获取超出协议规定范围的信息或影响计算结果的正确性。
▮▮▮▮ⓒ 物理层安全 (Physical Layer Security): 利用无线信道的物理特性(如噪声、衰落)来实现信息论意义上的安全通信,使得窃听者即使在计算能力无限的情况下也无法完全恢复信息。
④ 理解计算安全的工具: 通过对比信息论安全和计算安全,我们可以更深刻地理解计算安全所依赖的假设和其局限性。信息论安全提供了一个“理想世界”的视角,帮助我们分析现实世界中计算安全方案的优劣。
⑤ 随机性与熵的度量: 信息论中的熵概念是度量随机性和不确定性的核心工具。在密码学中,随机性是许多安全机制的基础(如密钥生成、随机数生成器)。信息论工具被广泛用于分析随机源的质量、评估密钥的熵以及量化信息泄露(如在侧信道分析中,我们将在第七章详细讨论)。
总而言之,信息论安全虽然不像计算安全那样普遍应用于日常加密通信,但它作为密码学理论的基石,为我们理解安全本质、设计更强大的密码系统以及在特定场景下实现最高级别的安全保证提供了不可或缺的框架和工具。对信息论安全的深入理解,是掌握现代密码学不可或缺的一环。
6. chapter 6: 随机性、伪随机性与不可预测性 (Randomness, Pseudorandomness, and Unpredictability)
在信息论与密码学的交汇点上,随机性 (Randomness) 是一个核心概念。密码学的许多基石,如密钥的生成、协议的执行,都依赖于高质量的随机性。信息论为我们提供了量化和理解随机性的工具,特别是熵 (Entropy)。本章将深入探讨随机性的本质、如何度量它、如何从不完美的随机源中提取高质量的随机性,以及伪随机性 (Pseudorandomness) 的概念及其在密码学中的应用。
6.1 熵作为随机性度量 (Entropy as a Measure of Randomness)
随机性直观上描述了事件结果的不确定性。一个结果越难以预测,我们就认为它越随机。信息论中的熵,特别是香农熵 (Shannon Entropy),正是用来量化这种不确定性的一个强大工具。
考虑一个离散随机变量 \(X\),其取值集合为 \(\mathcal{X}\),概率质量函数 (Probability Mass Function, PMF) 为 \(P(x)\),其中 \(x \in \mathcal{X}\)。
6.1.1 香农熵 (Shannon Entropy)
香农熵 \(H(X)\) 定义为:
\[ H(X) = - \sum_{x \in \mathcal{X}} P(x) \log_b P(x) \]
其中 \(b\) 是对数的底数,通常取 2,此时熵的单位是比特 (bits)。
香农熵衡量的是随机变量 \(X\) 的平均不确定性。对于一个均匀分布 (Uniform Distribution) 的随机变量,其熵最大。例如,一个公平的硬币抛掷结果(正面或反面),其概率分布为 \(P(\text{正面}) = 0.5\),\(P(\text{反面}) = 0.5\),其熵为:
\[ H(\text{硬币}) = - (0.5 \log_2 0.5 + 0.5 \log_2 0.5) = - (0.5 \times -1 + 0.5 \times -1) = - (-0.5 - 0.5) = 1 \text{ bit} \]
这表示每次抛掷提供 1 比特的随机性。
对于一个取 \(N\) 个等概率值的随机变量,其熵为 \(\log_2 N\)。如果一个随机变量的取值是确定的(即某个值的概率为 1,其他为 0),则其熵为 0,表示没有不确定性,也就没有随机性。
香农熵是随机变量平均不确定性的度量,它在信源编码中衡量压缩的极限。然而,在密码学中,我们通常更关心最坏情况下的不确定性,即攻击者在不知道任何信息的情况下,猜测出随机变量具体取值的难度。
6.1.2 最小熵 (Min-Entropy)
最小熵 \(H_{\min}(X)\) 是另一种衡量随机性的熵度量,它关注的是随机变量取值中概率最大的那个值的负对数。定义为:
\[ H_{\min}(X) = - \log_2 \max_{x \in \mathcal{X}} P(x) \]
最小熵衡量的是随机变量中最容易被预测的那个结果的“惊喜度”的下界。如果一个随机变量的最小熵是 \(k\) 比特,这意味着任何特定输出的概率都不会超过 \(2^{-k}\)。换句话说,攻击者通过猜测来确定随机变量取值的最佳策略是猜测概率最大的那个值,其成功的概率是 \(2^{-H_{\min}(X)}\)。
在密码学中,最小熵通常比香农熵更重要,因为它直接关联到攻击者猜测秘密值(如密钥)的成功概率。一个高质量的随机源应该具有较高的最小熵。
例如,考虑一个随机变量 \(X\) 取值于 \(\{a, b, c\}\),概率分布为 \(P(a)=0.5, P(b)=0.25, P(c)=0.25\)。
香农熵为:
\[ H(X) = - (0.5 \log_2 0.5 + 0.25 \log_2 0.25 + 0.25 \log_2 0.25) = - (0.5 \times -1 + 0.25 \times -2 + 0.25 \times -2) = - (-0.5 - 0.5 - 0.5) = 1.5 \text{ bits} \]
最小熵为:
\[ H_{\min}(X) = - \log_2 \max(0.5, 0.25, 0.25) = - \log_2 0.5 = 1 \text{ bit} \]
这意味着尽管平均不确定性是 1.5 比特,但最容易猜到的结果 \(a\) 的概率是 0.5,对应的不确定性只有 1 比特。
在密码学语境下,我们通常希望用于生成密钥或随机数的源具有接近其输出空间大小的最小熵,这表示任何特定输出的概率都非常低,难以猜测。
6.2 随机源 (Randomness Sources) 与熵估计 (Entropy Estimation)
获取高质量的随机性并非易事。随机源通常分为两类:物理随机源 (Physical Randomness Sources) 和算法随机源 (Algorithmic Randomness Sources)。
① 物理随机源 (Physical Randomness Sources)
物理随机源利用物理过程中固有的随机性,例如:
⚝ 热噪声 (Thermal Noise)
⚝ 半导体结的雪崩击穿噪声 (Avalanche Noise)
⚝ 放射性衰变 (Radioactive Decay)
⚝ 大气噪声 (Atmospheric Noise)
⚝ 用户行为(鼠标移动、键盘输入间隔等)
这些物理过程理论上是不可预测的,因此可以产生真随机数 (True Random Numbers, TRN)。然而,实际的物理设备可能受到环境干扰、设备偏差等因素的影响,产生的原始输出可能存在偏差 (Bias) 或相关性 (Correlation),并非完全均匀分布。这种原始输出通常被称为“非认证随机性” (Uncertified Randomness) 或“弱随机性” (Weak Randomness)。
② 算法随机源 (Algorithmic Randomness Sources)
算法随机源基于确定性算法生成看似随机的数列。最常见的是伪随机数生成器 (Pseudorandom Number Generator, PRNG)。PRNG 从一个短的初始种子 (Seed) 开始,通过一个确定性函数迭代生成一个长序列。
算法随机源的优点是速度快、可重复(给定相同的种子),但其本质是确定性的,并非真随机。其“随机性”是计算上的,依赖于算法的复杂度和种子的随机性。
6.2.1 熵估计 (Entropy Estimation)
从物理随机源采集到的原始数据往往不是理想的均匀分布,其包含的实际随机性(熵)可能远低于其比特长度。熵估计就是用来评估这些原始数据中包含的最小熵或香农熵的过程。
熵估计通常通过统计测试 (Statistical Tests) 来进行,例如:
⚝ 单比特频率测试 (Monobit Test):检查 0 和 1 的数量是否大致相等。
⚝ 块内频率测试 (Frequency Test within a Block):检查固定大小块内 0 和 1 的频率。
⚝ 扑克测试 (Poker Test):检查固定大小块内不同模式出现的频率。
⚝ 游程测试 (Runs Test):检查连续相同比特序列的长度。
⚝ 自相关测试 (Autocorrelation Test):检查序列与其移位版本之间的相关性。
更高级的熵估计方法可能涉及数据压缩算法(如 Lempel-Ziv 压缩)或基于马尔可夫模型 (Markov Model) 的分析。这些测试和方法旨在检测数据中的统计偏差和模式,从而估计其偏离理想随机性的程度,并量化其中蕴含的熵。
准确的熵估计对于后续的随机性处理至关重要,因为它决定了我们可以从原始源中提取多少高质量的随机比特。
6.3 随机性提取器 (Randomness Extractors)
如前所述,物理随机源产生的原始数据通常是弱随机的,即其最小熵 \(H_{\min}\) 小于其比特长度 \(n\)。直接使用这种弱随机性作为密码学中的随机数是非常危险的。随机性提取器 (Randomness Extractor) 是一种函数,它接受一个弱随机输入和一个短的、独立的、真随机的种子 (Seed),然后输出一个接近均匀分布的高质量随机序列。
形式上,一个 \((n, k, \epsilon)\)-提取器是一个函数 \(Ext: \{0,1\}^n \times \{0,1\}^d \to \{0,1\}^m\),它接受一个 \(n\) 比特的弱随机源 \(X\) (其最小熵 \(H_{\min}(X) \ge k\)) 和一个 \(d\) 比特的均匀随机种子 \(S\),输出一个 \(m\) 比特的序列 \(Ext(X, S)\)。要求是,对于任何最小熵至少为 \(k\) 的 \(n\) 比特源 \(X\),输出分布 \((Ext(X, S), S)\) 与均匀分布 \((U_m, U_d)\) 在统计上是 \(\epsilon\)-接近的。这里的 \(U_m\) 和 \(U_d\) 分别表示 \(m\) 比特和 \(d\) 比特的均匀随机变量。统计接近度 (Statistical Distance) 通常用统计距离 (Statistical Distance) 或总变差距离 (Total Variation Distance) 来衡量。
\[ \frac{1}{2} \sum_{y \in \{0,1\}^m, s \in \{0,1\}^d} |P(Ext(X, S)=y, S=s) - P(U_m=y, U_d=s)| \le \epsilon \]
注意,提取器需要一个独立的真随机种子。这个种子通常被称为“帮助字符串” (Help String)。种子的长度 \(d\) 通常远小于输入长度 \(n\) 和输出长度 \(m\)。
随机性提取器的主要作用是将低质量的随机性“提纯”为高质量的随机性。它们是构建真随机数生成器 (True Random Number Generator, TRNG) 的关键组件。一个典型的 TRNG 架构包括:
① 物理随机源:产生原始弱随机数据。
② 数字化和预处理:将物理信号转换为数字比特流,并进行一些基本的去偏处理。
③ 熵估计:评估预处理后数据的最小熵。
④ 随机性提取器:使用一个(可能是从少量高质量源获得的)种子,从弱随机数据中提取出高质量的随机比特。
常见的随机性提取器构造包括:
⚝ 冯·诺依曼提取器 (Von Neumann Extractor):一种简单的在线提取器,处理成对的比特。输入 00
或 11
丢弃,输入 01
输出 0
,输入 10
输出 1
。它可以去除简单的比特偏倚,但效率较低,且不能处理更复杂的依赖性。
⚝ 基于哈希函数的提取器 (Hash Function Based Extractor):使用密码学哈希函数,如 SHA-256。将弱随机输入 \(X\) 与一个随机种子 \(S\) 拼接,然后计算哈希值 \(H(X || S)\)。如果 \(X\) 的最小熵足够高,且哈希函数具有良好的散列性质,输出的哈希值可以认为是接近均匀分布的。这是一种实用的构造方法。
⚝ 基于代数结构的提取器:利用有限域 (Finite Field) 上的线性函数或纠错码 (Error Correction Codes) 的性质来构造提取器。
随机性提取器理论是信息论在密码学中的一个重要应用,它为我们提供了从不完美物理过程中获得可用随机性的理论基础和实践方法。
6.4 伪随机数生成器 (Pseudorandom Number Generators) 的信息论视角
与真随机数生成器 (TRNG) 不同,伪随机数生成器 (PRNG) 是完全确定性的。它们从一个初始的短种子 (Seed) 开始,通过一个固定的算法生成一个看起来随机的长序列。
从信息论的角度看,一个 PRNG 生成的序列的香农熵是相对较低的。给定种子,整个序列是确定的,其条件熵 \(H(\text{序列} | \text{种子}) = 0\)。序列的随机性完全取决于种子的随机性。如果种子是 \(k\) 比特的真随机数,那么生成的整个序列的香农熵最多是 \(k\) 比特,无论序列有多长。
然而,PRNG 在密码学中的应用依赖的不是信息论意义上的真随机性,而是计算上的不可预测性 (Computational Unpredictability)。一个密码学安全的 PRNG (Cryptographically Secure PRNG, CSPRNG) 旨在满足以下性质:
① 不可预测性 (Unpredictability):在不知道种子的情况下,无法以高于随机猜测的概率预测序列中的下一个比特,即使已经观察了序列的任意前缀。
② 不可区分性 (Indistinguishability):PRNG 生成的序列与真随机序列在计算上是不可区分的。也就是说,不存在一个高效的算法能够区分 CSPRNG 的输出和同等长度的真随机序列。
这种不可区分性是基于计算复杂性理论 (Computational Complexity Theory) 的假设,例如 P \(\ne\) NP 或某些单向函数 (One-Way Function) 的存在。信息论安全 (Information-Theoretic Security) 关注的是即使拥有无限计算能力的攻击者也无法攻破的安全性,而计算安全 (Computational Security) 关注的是在有限计算资源下攻击者无法攻破的安全性。CSPRNG 属于计算安全的范畴。
尽管如此,信息论的概念仍然有助于理解 CSPRNG 的性质。例如,一个好的 CSPRNG 应该能够“扩展”种子的熵。一个短的、高熵的种子可以生成一个长序列,这个序列的每个比特虽然不是独立的真随机比特,但在计算上表现得像真随机比特。从信息论的角度看,CSPRNG 并没有增加总的熵,它只是将种子的熵“分散”到了一个更长的序列中,使得序列的任何部分都难以预测。
常见的 CSPRNG 构造包括:
⚝ 基于密码学哈希函数 (Cryptographic Hash Function) 的构造。
⚝ 基于分组密码 (Block Cipher) 的构造(如计数器模式 CTR)。
⚝ 基于数论难题 (Number Theoretic Problems) 的构造(如 Blum-Blum-Shub 生成器)。
选择一个安全的 CSPRNG 并使用一个高质量的随机种子是密码学实践中的重要环节。
6.5 密码学中对随机性的需求 (Requirement for Randomness in Cryptography)
随机性在密码学中扮演着至关重要的角色,它是许多密码学算法和协议安全性的基础。对随机性的需求贯穿于密码学的各个方面:
① 密钥生成 (Key Generation):对称密钥 (Symmetric Key) 和非对称密钥对 (Asymmetric Key Pair) 的生成都需要高质量的随机性。密钥必须是不可预测的,否则攻击者可以通过猜测密钥来破解密码系统。密钥的熵应该至少与密钥长度相当(对于对称密钥),或者满足特定算法的要求(对于非对称密钥)。低熵的密钥是密码系统中最常见的弱点之一。
② 非斯 (Nonces) 和初始化向量 (Initialization Vectors, IVs):许多密码学模式和协议需要使用非斯或 IV。这些值通常不需要保密,但必须是唯一的,并且在某些情况下需要不可预测(例如,用于加密模式)。使用可预测的 IV 或非斯可能导致重放攻击 (Replay Attack) 或其他安全漏洞。
③ 填充 (Padding):在某些加密模式或签名方案中,需要对数据进行填充以达到特定的长度。虽然填充本身是确定性的,但在某些方案中,填充值可能需要包含随机性,以防止某些类型的攻击(如填充谕言攻击 Padding Oracle Attack)。
④ 盐值 (Salts):在密码哈希 (Password Hashing) 中,使用随机的盐值与用户密码一起进行哈希,可以防止彩虹表攻击 (Rainbow Table Attack)。每个用户应该有一个唯一的、随机生成的盐值。
⑤ 挑战 (Challenges) 和响应 (Responses):在认证协议中,一方可能向另一方发送一个随机的挑战值,要求对方使用秘密信息(如密钥)对其进行处理并返回响应。挑战值的随机性确保了每次认证过程都是唯一的,防止攻击者重用旧的响应。
⑥ 零知识证明 (Zero-Knowledge Proofs):在某些交互式零知识证明协议中,验证者需要生成随机的挑战值来测试证明者的知识。这些挑战值的随机性对于协议的安全性至关重要。
如果密码系统使用的随机数质量低下(熵不足、存在可预测模式),即使算法本身是安全的,整个系统的安全性也会受到严重威胁。例如,如果用于生成 SSL/TLS 会话密钥的随机数是可预测的,攻击者就可以劫持并解密通信。历史上,许多密码学系统的实际安全漏洞都源于随机数生成的问题。
因此,理解随机性的信息论基础,确保随机源具有足够的熵,并正确使用随机性提取器和密码学安全的伪随机数生成器,是构建安全可靠密码系统的关键。
7. chapter 7: 信息泄露与侧信道分析 (Information Leakage and Side Channel Analysis)
欢迎来到本书的第七章。在前几章中,我们深入探讨了信息论的基础概念以及它们在密码学中的应用,特别是香农的保密理论和信息论安全。我们了解到,一个密码系统的安全性通常依赖于密钥的保密性以及算法的数学强度。然而,在实际实现中,即使数学上安全的算法也可能因为其物理实现上的缺陷而泄露敏感信息,例如密钥或中间计算结果。本章将聚焦于这一重要且日益突出的领域:信息泄露 (Information Leakage) 与侧信道分析 (Side Channel Analysis)。我们将学习如何定义和量化信息泄露,理解侧信道攻击的原理和类型,并探讨基于信息论的分析方法以及相应的防御策略。
7.1 信息泄露的定义与模型 (Definition and Models of Information Leakage)
在理想的密码学模型中,我们通常假设攻击者只能访问加密算法的输入(明文)和输出(密文),或者在公钥密码学中访问公钥和密文。这种模型被称为“黑盒”模型或“仅知密文攻击 (Ciphertext-Only Attack)”、 “已知明文攻击 (Known-Plaintext Attack)” 等。然而,在现实世界中,密码算法是在具体的硬件(如智能卡、嵌入式设备、CPU)或软件环境中执行的。这些物理实现过程会产生各种“副作用”或“痕迹”,例如功耗、电磁辐射、执行时间、缓存访问模式、声音甚至热量。这些副作用并非算法的预期输出,但它们却可能携带关于秘密信息(如密钥)的有用线索。我们将这些非预期的、与秘密信息相关的可观测信号称为侧信道 (Side Channel)。
信息泄露 (Information Leakage) 指的是密码系统在执行过程中,通过侧信道无意中暴露的、与秘密信息相关的任何信息。这种泄露使得攻击者无需攻破算法本身的数学难题,就能通过分析侧信道信号来推断秘密信息。
为了形式化地理解信息泄露,我们可以构建一个简单的模型。假设一个密码设备或程序执行一个操作 \(f(k, x)\),其中 \(k\) 是秘密密钥 (secret key),\(x\) 是公开输入(如明文或密文)。在执行过程中,设备会产生一个侧信道迹 (side channel trace) \(T\)。这个迹 \(T\) 是一个随机变量,其分布依赖于 \(k\) 和 \(x\)。攻击者的目标是利用观测到的 \(T\) 来推断 \(k\)。
信息泄露模型通常包含以下要素:
⚝ 秘密变量 (Secret Variable):通常是密钥 \(K\),也可能是中间计算结果。我们将其视为一个随机变量,具有先验概率分布 \(P(K)\)。
⚝ 公开输入 (Public Input):如明文 \(X\) 或密文 \(C\)。攻击者通常已知或可以控制。
⚝ 侧信道迹 (Side Channel Trace):可观测的物理信号 \(T\)。这是一个随机变量,其条件分布 \(P(T | K=k, X=x)\) 描述了给定秘密和输入时产生特定迹的概率。
⚝ 攻击者 (Adversary):攻击者观测到迹 \(T=t\) 和公开输入 \(X=x\),试图推断 \(K\)。
信息泄露的本质在于,观测到的侧信道迹 \(T\) 减少了攻击者关于秘密变量 \(K\) 的不确定性。如果 \(T\) 与 \(K\) 完全独立,即 \(P(T|K, X) = P(T|X)\),那么观测 \(T\) 不会提供关于 \(K\) 的任何额外信息,此时没有信息泄露。如果 \(T\) 与 \(K\) 强相关,那么观测 \(T\) 将极大地减少关于 \(K\) 的不确定性,存在严重的信息泄露。
侧信道攻击 (Side Channel Attack, SCA) 就是利用这些侧信道信息来攻击密码系统的技术。与传统的密码分析(如差分分析 (Differential Cryptanalysis)、线性分析 (Linear Cryptanalysis))不同,侧信道攻击不直接攻击算法的数学结构,而是攻击其物理实现。这使得侧信道攻击成为一种非常强大且实际的威胁,尤其是在资源受限的设备(如物联网设备、智能卡)上。
7.2 基于信息论的泄露量化 (Information Theory-Based Leakage Quantification)
信息论提供了量化不确定性和信息量 (Information Amount) 的强大工具,这使得它非常适合用于量化侧信道泄露。我们已经学习了熵 (Entropy)、联合熵 (Joint Entropy)、条件熵 (Conditional Entropy) 和互信息 (Mutual Information)。这些概念可以直接应用于信息泄露的分析。
假设秘密变量是 \(K\),侧信道观测是 \(T\)。攻击者在观测到 \(T\) 之前,对 \(K\) 的不确定性可以用其熵 \(H(K)\) 来衡量。观测到 \(T\) 之后,攻击者对 \(K\) 的剩余不确定性可以用条件熵 \(H(K|T)\) 来衡量。
信息泄露量 (Information Leakage Amount) 可以定义为观测到侧信道迹 \(T\) 后,关于秘密 \(K\) 的不确定性减少量。这正是互信息 (Mutual Information) 的定义:
\[ I(K; T) = H(K) - H(K|T) \]
互信息 \(I(K; T)\) 度量了随机变量 \(K\) 和 \(T\) 之间的相互依赖程度。在侧信道分析的语境下,它表示侧信道迹 \(T\) 中包含的关于秘密 \(K\) 的信息量。如果 \(I(K; T) = 0\),则 \(K\) 和 \(T\) 相互独立,没有信息泄露。如果 \(I(K; T) = H(K)\),则 \(T\) 完全确定了 \(K\),泄露是最大化的(例如,如果 \(T\) 就是 \(K\) 本身)。
互信息具有以下性质,使其成为衡量泄露的合适度量:
⚝ 非负性:\(I(K; T) \ge 0\)。信息泄露量总是非负的。
⚝ 对称性:\(I(K; T) = I(T; K)\)。从 \(K\) 中获得的关于 \(T\) 的信息量等于从 \(T\) 中获得的关于 \(K\) 的信息量。
⚝ 链式法则:\(I(K; (T_1, T_2)) = I(K; T_1) + I(K; T_2 | K, T_1)\)。如果观测到多个迹 \((T_1, T_2, \dots, T_n)\),总的泄露量是每次观测带来的信息增益之和。
使用互信息量化泄露的优点在于它提供了一个统一的、与具体攻击策略无关的度量。它告诉我们侧信道中“潜在”包含多少关于秘密的信息,而不关心攻击者是否能够有效地利用这些信息。
7.2.1 互信息量化泄露 (Mutual Information for Leakage Quantification)
互信息 \(I(K; T)\) 可以通过计算 \(K\) 和 \(T\) 的联合概率分布 \(P(k, t)\) 来计算:
\[ I(K; T) = \sum_{k \in \mathcal{K}} \sum_{t \in \mathcal{T}} P(k, t) \log_2 \frac{P(k, t)}{P(k) P(t)} \]
其中 \(\mathcal{K}\) 是密钥空间,\(\mathcal{T}\) 是侧信道迹空间。在实际应用中,我们通常无法获得精确的 \(P(k, t)\) 分布。攻击者通过实验采集大量的侧信道迹 \((t_i, x_i)\) 对应于已知的输入 \(x_i\) 和未知的密钥 \(k\)。如果攻击者可以控制输入 \(x\),他们可以针对不同的 \(x\) 收集迹。如果密钥 \(k\) 在实验过程中保持不变,那么采集到的迹 \(t_i\) 实际上是关于固定 \(k\) 和变化的 \(x_i\) 的条件分布 \(P(T|K=k, X=x_i)\) 的样本。
在侧信道分析中,我们通常关注的是关于密钥 \(K\) 的泄露。假设密钥 \(K\) 是从一个密钥空间 \(\mathcal{K}\) 中均匀随机选择的,即 \(P(k) = 1/|\mathcal{K}|\) 对于所有 \(k \in \mathcal{K}\)。攻击者观测到迹 \(T=t\) 和输入 \(X=x\)。他们对密钥的后验概率分布是 \(P(K=k | T=t, X=x)\)。攻击者对密钥的剩余不确定性是 \(H(K | T=t, X=x)\)。平均而言,剩余不确定性是 \(H(K | T, X)\)。
总的泄露量可以表示为 \(I(K; T | X)\),即在已知输入 \(X\) 的条件下,\(K\) 和 \(T\) 之间的互信息:
\[ I(K; T | X) = H(K | X) - H(K | T, X) \]
如果密钥 \(K\) 与输入 \(X\) 独立,则 \(H(K | X) = H(K)\),泄露量为 \(H(K) - H(K | T, X)\)。
计算 \(I(K; T | X)\) 需要估计条件概率 \(P(t | k, x)\) 或后验概率 \(P(k | t, x)\)。这通常通过统计建模(例如,假设功耗迹是密钥和输入某个函数的噪声测量)或非参数方法(如直方图估计)来完成。对于高维的侧信道迹 \(T\),精确估计这些概率分布是一个挑战。
尽管存在计算上的挑战,互信息作为泄露度量具有重要的理论意义。它可以帮助我们理解不同侧信道源(如功耗、电磁辐射)的潜在泄露能力,以及评估防御措施(如掩码 (Masking)、乱序执行 (Shuffling))降低泄露的效果。
7.2.2 最小熵 (Min-Entropy) 与泄露 (Leakage)
除了香农熵和互信息,最小熵 (Min-Entropy) 也是衡量随机性或不确定性的重要概念,在密码学和信息论安全中尤其有用。对于一个随机变量 \(X\),其最小熵定义为:
\[ H_{\min}(X) = -\log_2 \max_{x} P(X=x) \]
最小熵反映了随机变量中最可能出现的值的概率。如果 \(H_{\min}(X) = m\),这意味着任何特定值的概率都不超过 \(2^{-m}\)。在密码学中,最小熵常用于衡量秘密密钥或随机数的新鲜度 (Freshness) 或不可预测性 (Unpredictability)。一个高最小熵的密钥意味着即使攻击者知道其概率分布,也很难猜测出正确的密钥值。
在侧信道分析中,攻击者观测到侧信道迹 \(T=t\) 后,他们对秘密密钥 \(K\) 的后验概率分布是 \(P(K=k | T=t)\)。攻击者最有可能猜测的密钥值是使 \(P(K=k | T=t)\) 最大的那个 \(k\)。攻击者成功猜对密钥的概率是 \(\max_k P(K=k | T=t)\)。
给定迹 \(T=t\) 后,关于密钥 \(K\) 的剩余最小熵是 \(H_{\min}(K | T=t) = -\log_2 \max_k P(K=k | T=t)\)。这个值越小,攻击者猜对密钥的概率越高,泄露越严重。
平均而言,给定侧信道迹 \(T\) 后,关于 \(K\) 的剩余最小熵可以定义为 \(H_{\min}(K | T) = E_{t \sim P(T)} [H_{\min}(K | T=t)]\)。然而,更常用的是考虑最坏情况下的剩余最小熵:
\[ H_{\min}(K | T) = \min_{t \in \mathcal{T}} H_{\min}(K | T=t) = -\log_2 \max_{t \in \mathcal{T}} \max_{k \in \mathcal{K}} P(K=k | T=t) \]
这个定义考虑了攻击者可能遇到的最“有利”的迹 \(t\),即那个使得某个密钥值后验概率最大的迹。
信息泄露量也可以用最小熵的减少量来衡量:
\[ \text{Leakage}_{\min}(K; T) = H_{\min}(K) - H_{\min}(K | T) \]
最小熵泄露量衡量了侧信道信息使攻击者在最坏情况下更容易猜测秘密的程度。与互信息不同,最小熵泄露量与攻击者的最优猜测策略直接相关,因此在评估实际攻击风险时非常有用。
在实际应用中,计算 \(H_{\min}(K | T)\) 需要估计后验概率 \(P(K=k | T=t)\)。这通常通过贝叶斯推断 (Bayesian Inference) 来完成。攻击者使用先验概率 \(P(K)\) 和侧信道模型 \(P(T=t | K=k, X=x)\)(通常通过对已知密钥的设备进行剖析 (Profiling) 来建立)来计算后验概率:
\[ P(K=k | T=t, X=x) = \frac{P(T=t | K=k, X=x) P(K=k)}{\sum_{k' \in \mathcal{K}} P(T=t | K=k', X=x) P(K=k')} \]
通过对所有可能的密钥值 \(k\) 计算后验概率,攻击者可以找到概率最大的那个,并计算剩余最小熵。
信息论度量(互信息、最小熵)为量化侧信道泄露提供了一个坚实的理论基础。它们帮助我们理解泄露的本质,比较不同泄露源的严重性,并评估防御措施的有效性。
7.3 侧信道攻击 (Side Channel Attacks) 示例 (功耗、电磁辐射、时间等)
侧信道攻击利用密码设备在执行过程中产生的物理效应来获取秘密信息。根据利用的物理效应不同,侧信道攻击可以分为多种类型。本节将介绍几种主要的侧信道攻击示例。
① 功耗分析 (Power Analysis)
功耗分析是最早被发现和研究的侧信道攻击之一。密码设备在执行不同的操作时,其瞬时功耗会发生变化。这些变化与正在处理的数据(包括秘密密钥)以及执行的指令密切相关。
▮▮▮▮ⓐ 简单功耗分析 (Simple Power Analysis, SPA):直接观察单次密码操作的功耗迹线,通过分析迹线的形状和时序来推断执行的指令序列,进而可能泄露秘密信息。例如,某些算法(如RSA的平方乘算法)在处理密钥的0比特和1比特时,执行的指令序列和功耗模式可能不同。
▮▮▮▮ⓑ 差分功耗分析 (Differential Power Analysis, DPA):这是一种更强大的统计攻击。攻击者收集大量使用相同密钥但不同输入(如明文)进行加密操作的功耗迹线。通过对这些迹线进行统计分析(如计算差分平均值),攻击者可以区分出与秘密密钥相关的中间计算结果,从而推断出密钥的比特或字节。DPA通常基于一个“功耗模型”,该模型预测设备在处理特定数据时的大致功耗。例如,汉明重量模型 (Hamming Weight Model) 假设功耗与处理的数据的汉明重量(即比特1的数量)成正比。攻击者可以猜测密钥的某个部分,计算出对应的中间结果,预测其功耗,然后与实际测量的功耗迹线进行相关性分析。相关性最高的猜测密钥部分最有可能是正确的。
② 电磁分析 (Electromagnetic Analysis, EMA)
电子设备在运行时会产生电磁辐射。这些辐射也可以被测量和分析,以获取秘密信息。EMA与功耗分析类似,因为功耗的变化通常伴随着电磁辐射的变化。EMA可以提供比功耗分析更高空间分辨率的信息,有时甚至可以定位到芯片上的特定计算单元。EMA攻击也分为简单电磁分析 (SEMA) 和差分电磁分析 (DEMA)。
③ 时间分析 (Timing Analysis)
某些密码算法的执行时间可能依赖于秘密数据或秘密密钥。例如,如果一个加密算法的实现使用了依赖于数据的查找表,或者使用了分支操作,而分支条件与秘密数据相关,那么不同的秘密数据可能导致不同的执行路径和执行时间。攻击者通过精确测量密码操作的执行时间,可以推断出秘密信息。例如,SSL/TLS协议中早期版本使用的某些填充处理方式就存在时间攻击漏洞。
④ 缓存攻击 (Cache Attacks)
现代处理器使用缓存 (Cache) 来加速内存访问。当程序访问内存时,数据会被加载到缓存中。后续对同一数据的访问会更快(缓存命中),而对未在缓存中的数据的访问会更慢(缓存未命中)。如果密码算法的执行流程(例如,查找表的访问模式)依赖于秘密密钥或数据,那么攻击者可以通过监测缓存的命中/未命中模式来推断秘密信息。常见的缓存攻击包括Flush+Reload、Prime+Probe等。
⑤ 声学分析 (Acoustic Analysis)
令人惊讶的是,某些设备的计算过程甚至会产生微弱的声音,这些声音也可能携带信息。例如,通过分析键盘敲击的声音可以推断出输入的字符。虽然不如功耗或电磁分析普遍,但在特定场景下,声学分析也是一种潜在的侧信道。
⑥ 其他侧信道
还有许多其他潜在的侧信道,例如:
▮▮▮▮⚝ 热分析 (Thermal Analysis):设备不同部分的温度变化可能与计算活动相关。
▮▮▮▮⚝ 光学分析 (Optical Analysis):某些设备在运行时可能发出微弱的光,或者可以通过光学手段观察其内部状态。
▮▮▮▮⚝ 故障注入攻击 (Fault Injection Attacks):虽然这通常被归类为主动攻击而非纯粹的侧信道分析,但通过注入故障(如电压毛刺、时钟扰动、激光照射)来诱导设备产生错误输出,并分析这些错误输出与正确输出之间的关系,也可以泄露秘密信息。这与侧信道分析结合使用时尤为强大。
这些侧信道攻击表明,即使是理论上安全的密码算法,在实际部署时也必须考虑其物理实现可能带来的泄露风险。信息论为量化这些风险提供了理论框架。
7.4 防御信息泄露的策略 (Strategies for Defending Against Information Leakage)
为了对抗侧信道攻击,研究人员和工程师开发了多种防御策略。这些策略的目标是减少或消除侧信道迹与秘密信息之间的依赖性,从而降低信息泄露量。防御策略可以大致分为以下几类:
① 硬件对策 (Hardware Countermeasures)
这些对策通过修改硬件设计来减少侧信道信号的强度或使其与秘密信息无关。
▮▮▮▮ⓐ 屏蔽与滤波 (Shielding and Filtering):使用法拉第笼等屏蔽技术减少电磁辐射;在电源线上增加滤波电路减少功耗波动。
▮▮▮▮ⓑ 噪声注入 (Noise Injection):在侧信道信号中加入随机噪声,使得攻击者难以从背景噪声中提取出与秘密相关的信息。
▮▮▮▮ⓒ 随机化执行 (Randomized Execution):通过随机化指令执行顺序、内存访问模式或操作的中间表示,使得侧信道迹变得不可预测且难以对齐和平均。例如,乱序执行 (Out-of-Order Execution) 和地址空间布局随机化 (ASLR) 在一定程度上提供了这种效果,但专门设计的随机化技术更有效。
▮▮▮▮ⓓ 双轨逻辑 (Dual-Rail Logic):在电路设计中,使用一对互补的信号线来表示一个比特(例如,0表示为(0,1),1表示为(1,0))。理想情况下,无论处理的是0还是1,总的功耗变化是恒定的,从而消除数据依赖性。这是一种逻辑层面的防御。
② 软件对策 (Software Countermeasures)
这些对策通过修改密码算法的实现方式来减少信息泄露。
▮▮▮▮ⓐ 掩码 (Masking):这是目前最主要的软件防御技术之一。其基本思想是将秘密变量 \(s\) 分解成多个随机份额 (shares) \(s_1, s_2, \dots, s_d\),使得 \(s = s_1 \oplus s_2 \oplus \dots \oplus s_d\) (或其他组合方式),其中至少 \(d-1\) 个份额是随机的。密码操作在这些份额上独立进行,而不是直接在秘密 \(s\) 上进行。攻击者需要同时获取所有份额的侧信道信息才能恢复 \(s\)。如果侧信道迹只泄露单个份额的信息,而份额本身是随机的,那么泄露的信息对恢复秘密没有帮助。掩码的挑战在于如何在份额上高效地实现各种密码操作,同时保证份额的随机性不被破坏。
▮▮▮▮ⓑ 平衡实现 (Balanced Implementations):设计算法实现,使得处理不同数据值时执行的操作序列和功耗模式尽可能相似。例如,避免数据相关的分支或查找表。
▮▮▮▮ⓒ 常量时间实现 (Constant-Time Implementations):确保算法的执行时间不依赖于秘密数据。这对于防御时间攻击至关重要。许多密码库都提供了常量时间实现的函数。
▮▮▮▮ⓓ 混淆 (Obfuscation):使代码或执行流程难以理解和分析,从而增加攻击者识别秘密相关操作的难度。但这通常不能完全消除泄露。
③ 协议层对策 (Protocol-Level Countermeasures)
在某些情况下,可以通过修改通信协议来减轻侧信道攻击的风险。例如,在TLS中,对填充攻击的防御是通过改变填充的处理方式或使用不同的加密模式来实现的。
④ 信息论安全防御 (Information-Theoretic Secure Countermeasures)
一些高级防御技术旨在达到信息论意义上的安全,即无论攻击者拥有无限计算能力,也无法从侧信道迹中获取关于秘密的任何信息。掩码技术在理论上可以达到任意阶的信息论安全,但实际实现中会受到噪声、不精确的测量和实现错误的影响。
评估防御措施的有效性通常也依赖于信息论工具。通过测量应用防御措施后侧信道迹与秘密之间的互信息或剩余最小熵,可以量化防御效果。一个有效的防御措施应该显著降低 \(I(K; T)\) 或增加 \(H_{\min}(K | T)\)。
侧信道分析与防御是一个持续演进的领域。新的攻击技术不断涌现,针对这些攻击的防御措施也在不断发展。理解信息泄露的本质,并利用信息论工具对其进行量化和分析,是设计和实现安全密码系统的关键。
8. chapter 8: 编码理论与密码学 (Coding Theory and Cryptography)
欢迎来到本书的第八章!📚 在前面的章节中,我们深入探讨了信息论的基础概念以及它们在密码学中的应用,特别是香农的保密理论和信息论安全。在本章中,我们将把目光投向另一个与信息论紧密相关的领域——编码理论 (Coding Theory),并探讨它如何与密码学交织在一起,催生出新的密码学方案和技术。
编码理论最初是为了解决在 noisy channel (噪声信道) 中可靠传输信息的问题而发展起来的。它研究如何将信息编码成具有冗余的码字 (codeword),以便在传输过程中即使发生错误,接收方也能检测甚至纠正这些错误。这听起来似乎与密码学中隐藏信息的目标不同,但实际上,编码理论中的许多数学结构和困难问题,特别是关于解码 (decoding) 的问题,为构建安全的密码系统提供了新的思路和工具。
本章将首先回顾纠错码 (Error Correction Codes) 的基础知识,这是编码理论的核心。然后,我们将重点介绍基于编码的密码学 (Code-Based Cryptography),详细解析其中的代表性系统——McEliece密码系统。最后,我们将探讨编码理论在密码学其他领域中的应用。
8.1 纠错码 (Error Correction Codes) 基础
在现实世界的通信系统中,信息在传输过程中常常会受到噪声的干扰,导致接收到的信息与发送的信息不完全相同,即发生了传输错误。纠错码 (Error Correction Codes, ECC) 的目的就是通过在原始信息中加入适当的冗余信息,使得接收方能够检测甚至纠正这些错误,从而提高通信的可靠性。
想象一下,你要发送一个二进制串。如果直接发送,一个比特 (bit) 翻转就会导致错误。如果我们将每个比特重复三次,比如发送 000
代替 0
,发送 111
代替 1
。当接收方收到 001
时,它可以通过“多数投票”原则推断原始信息是 0
。这就是一个最简单的重复码 (Repetition Code),它利用冗余来实现纠错。
更正式地,纠错码涉及以下几个基本概念:
⚝ 消息词 (Message Word):原始的、未编码的信息块。通常是固定长度的二进制向量,例如长度为 \(k\)。
⚝ 码字 (Codeword):由消息词通过编码器 (encoder) 生成的、包含冗余信息的向量。通常长度为 \(n\),其中 \(n > k\)。
⚝ 码率 (Code Rate):码字的长度与消息词长度之比,即 \(k/n\)。码率反映了编码的效率,码率越高,冗余越少。
⚝ 码本 (Codebook):所有可能的码字组成的集合。
⚝ 编码器 (Encoder):一个函数或算法,将消息词映射到码字。
⚝ 解码器 (Decoder):一个函数或算法,接收可能包含错误的接收向量,并尝试恢复原始的消息词。
⚝ 汉明距离 (Hamming Distance):两个等长向量之间不同位置的数量。例如,\(d(0110, 0011) = 2\)。汉明距离是衡量两个码字之间“差异”的常用度量。
⚝ 码的最小距离 (Minimum Distance of a Code):码本中任意两个不同码字之间的最小汉明距离,记为 \(d_{min}\)。
纠错码的纠错能力与码的最小距离密切相关。一个码的最小距离为 \(d_{min}\) 时,它可以检测 \(d_{min}-1\) 个错误,并且可以纠正 \(\lfloor (d_{min}-1)/2 \rfloor\) 个错误。
常见的纠错码类型包括:
① 线性码 (Linear Codes):码本构成一个向量空间 (vector space)。这意味着任意两个码字的线性组合(在有限域上,通常是 \(\mathbb{F}_2\))仍然是一个码字。线性码具有良好的代数结构,便于分析和实现。生成矩阵 (generator matrix) \(G\) 和校验矩阵 (parity-check matrix) \(H\) 是描述线性码的关键工具。一个 \(k \times n\) 的生成矩阵 \(G\) 可以将 \(k\) 维的消息词 \(m\) 编码成 \(n\) 维的码字 \(c = mG\)。
② 循环码 (Cyclic Codes):一种特殊的线性码,其码本中的任意码字的循环移位 (cyclic shift) 仍然是码字。
③ BCH码 (Bose-Chaudhuri-Hocquenghem Codes) 和 Reed-Solomon码 (Reed-Solomon Codes):强大的纠错码,广泛应用于通信和存储系统(如CD、DVD)。
④ LDPC码 (Low-Density Parity-Check Codes) 和 Turbo码 (Turbo Codes):在现代通信系统中表现优异,接近信道容量 (channel capacity)。
在密码学中,我们通常关注的是线性码,因为它们的结构便于分析和构建密码系统。特别是,解码一个随机线性码 (random linear code) 是一个已知困难的问题,这为构建基于编码的密码系统提供了基础。
8.2 基于编码的密码学 (Code-Based Cryptography)
基于编码的密码学 (Code-Based Cryptography) 是一类公钥密码系统 (Public-Key Cryptosystems),其安全性依赖于编码理论中的困难问题,最常见的是解码一个随机线性码的问题,也称为一般解码问题 (General Decoding Problem, GDP) 或带噪声的码字问题 (Learning With Errors for Codes)。
这个困难问题可以非正式地描述为:给定一个线性码的生成矩阵 \(G\)(可能经过伪装),一个属于该码的码字 \(c\),以及一个随机错误向量 \(e\)(具有较小的汉明重量,即非零元素的数量),计算 \(y = c + e\)。现在,如果只给你 \(y\) 和伪装后的 \(G\),让你找到原始码字 \(c\) 或错误向量 \(e\),这是一个计算上非常困难的任务。
基于编码的密码系统通常利用一个具有高效解码算法的特定类型的码(例如,Goppa码 (Goppa Codes)),但通过一些变换(如矩阵乘法和置换)将其伪装成一个随机线性码。公钥包含伪装后的生成矩阵,而私钥则包含原始码的结构信息以及用于伪装的变换。
基于编码的密码学的主要特点包括:
⚝ 潜在的抗量子性 (Potential Quantum Resistance):目前已知的量子计算算法(如Shor算法和Grover算法)对基于编码的密码系统没有显著的加速作用。这使得基于编码的密码学成为后量子密码学 (Post-Quantum Cryptography) 的重要研究方向之一。
⚝ 安全性基础坚实 (Solid Security Foundation):一般解码问题是一个经过长期研究的困难问题,其难度被认为很高。
⚝ 公钥尺寸较大 (Large Public Key Size):这是基于编码的密码系统的一个主要缺点,特别是与基于数论的系统(如RSA和椭圆曲线密码学)相比。
下一节我们将详细介绍基于编码的密码学中最著名的例子——McEliece密码系统。
8.3 McEliece密码系统 (McEliece Cryptosystem) 的原理与安全性
McEliece密码系统是由Robert McEliece在1978年提出的第一个基于编码的公钥密码系统。它使用Goppa码作为底层的高效可解码码。
核心思想:
利用Goppa码具有高效解码算法的特性作为私钥,而将Goppa码通过一系列线性变换伪装成一个一般的、难以解码的线性码,将其生成矩阵作为公钥。加密时,向消息对应的码字中加入一个随机的、低重量的错误向量;解密时,利用私钥(原始Goppa码的结构)高效地纠正错误,恢复原始码字,进而恢复消息。
系统组成:
一个McEliece密码系统由以下几个算法组成:
① 密钥生成 (Key Generation):
▮▮▮▮ⓑ 选择一个参数 \(m\) 和一个域 \(\mathbb{F}_{2^m}\)。
▮▮▮▮ⓒ 选择一个长度为 \(n\) 的 Goppa 码 \(C\) 在 \(\mathbb{F}_{2^m}\) 上,其纠错能力为 \(t\)。这个码 \(C\) 具有一个高效的解码算法。设 \(C\) 是一个 \((n, k)\) 线性码,其生成矩阵为 \(G'\)。
▮▮▮▮ⓓ 随机选择一个 \(k \times k\) 的非奇异矩阵 (non-singular matrix) \(S\) 在 \(\mathbb{F}_2\) 上。
▮▮▮▮ⓔ 随机选择一个 \(n \times n\) 的置换矩阵 (permutation matrix) \(P\) 在 \(\mathbb{F}_2\) 上。
▮▮▮▮ⓕ 计算公钥生成矩阵 \(G = S G' P\)。
▮▮⚝ 公钥 (Public Key):\((G, t)\)。\(G\) 是一个 \(k \times n\) 的矩阵,\(t\) 是码的纠错能力(即可以纠正的错误数量)。
▮▮⚝ 私钥 (Private Key):\((S, G', P)\) 以及 Goppa 码 \(C\) 的结构信息(用于高效解码)。
② 加密 (Encryption):
▮▮▮▮ⓑ 设明文 (plaintext) 是一个长度为 \(k\) 的二进制向量 \(m\)。
▮▮▮▮ⓒ 随机生成一个长度为 \(n\) 的错误向量 (error vector) \(e\),其汉明重量 \(w(e) = t\)。
▮▮▮▮ⓓ 计算密文 (ciphertext) \(c = mG + e\)。
▮▮⚝ 密文 (Ciphertext):\(c\)。
③ 解密 (Decryption):
▮▮▮▮ⓑ 接收到密文 \(c\)。
▮▮▮▮ⓒ 计算 \(c' = c P^{-1}\)。由于 \(P\) 是置换矩阵,\(P^{-1}\) 也是置换矩阵,计算 \(P^{-1}\) 很容易。
▮▮▮▮ⓓ 替换 \(c = mG + e\) 中的 \(G\),得到 \(c' = (m S G' P) P^{-1} + e P^{-1} = m S G' + e P^{-1}\)。
▮▮▮▮ⓔ 注意到 \(mS\) 是一个长度为 \(k\) 的向量,\(G'\) 是原始 Goppa 码的生成矩阵,\(e P^{-1}\) 是一个汉明重量为 \(t\) 的向量(因为 \(P^{-1}\) 只是重新排列了 \(e\) 的位置)。因此,\(c'\) 是原始 Goppa 码的一个码字 \(mS G'\) 加上一个重量为 \(t\) 的错误向量 \(e P^{-1}\)。
▮▮▮▮ⓕ 利用 Goppa 码的高效解码算法,对 \(c'\) 进行解码,纠正错误 \(e P^{-1}\),得到码字 \(mS G'\)。
▮▮▮▮ⓖ 从 \(mS G'\) 中恢复 \(mS\)。对于线性码,如果 \(G'\) 是系统生成矩阵 (systematic generator matrix),这一步很容易;或者可以通过求解线性方程组来完成。
▮▮▮▮ⓗ 计算 \(m = (mS) S^{-1}\) 来恢复原始明文 \(m\)。由于 \(S\) 是非奇异矩阵,计算 \(S^{-1}\) 很容易。
安全性分析:
McEliece密码系统的安全性主要依赖于以下两个困难问题:
① 一般解码问题 (General Decoding Problem):给定一个随机线性码的生成矩阵 \(G\) 和一个接收向量 \(y = c + e\),其中 \(c\) 是码字,\(e\) 是低重量错误向量,找到 \(e\) 或 \(c\)。对于一个随机线性码,目前已知的最好算法是信息集解码算法 (Information Set Decoding, ISD),其复杂度是指数级的。
② 区分问题 (Distinguishing Problem):区分一个伪装后的 Goppa 码(公钥 \(G\))与一个随机线性码是困难的。如果攻击者能够区分,他们可能可以利用 Goppa 码的结构进行攻击。
攻击 McEliece 系统的最直接方法就是尝试对 \(c = mG + e\) 进行解码,找到 \(e\),然后计算 \(mG = c - e\),再恢复 \(m\)。由于 \(G\) 被设计成看起来像一个随机线性码的生成矩阵,攻击者需要解决一般解码问题,这被认为是困难的。
McEliece 系统的主要缺点是公钥尺寸非常大。例如,为了达到与RSA 2048位或ECC 256位相当的安全级别,McEliece 系统可能需要使用一个 \((n, k)\) 码,其中 \(n\) 约为几千,\(k\) 约为几百到一千多,导致公钥矩阵 \(G\) 的大小达到几兆比特。这限制了它在某些应用中的使用。然而,其抗量子性使其在后量子密码学领域仍然具有重要地位。
8.4 编码理论在其他密码应用中的作用 (Role of Coding Theory in Other Cryptographic Applications)
除了直接构建基于编码的密码系统外,编码理论的概念和技术还在密码学的其他许多领域发挥着重要作用:
⚝ 秘密共享 (Secret Sharing):秘密共享方案允许将一个秘密分割成多个份额 (shares),只有当足够多的份额组合在一起时才能恢复秘密,单个份额或少量份额无法获取任何关于秘密的信息。Shamir秘密共享方案就是基于多项式插值 (polynomial interpolation) 的,这与Reed-Solomon码的原理密切相关。Reed-Solomon码的编码过程可以看作是构造一个多项式,并在多个点上进行求值,而解码过程则类似于通过部分点恢复多项式。
⚝ 格密码学 (Lattice-Based Cryptography):格 (Lattices) 是向量空间的离散子群。格密码学是另一个重要的后量子密码学分支,其安全性基于格上的困难问题,如最短向量问题 (Shortest Vector Problem, SVP) 和最近向量问题 (Closest Vector Problem, CVP)。格与线性码之间存在深刻的联系。例如,一个线性码的校验矩阵的行向量张成的格称为该码的对偶码 (dual code) 的格。许多格上的困难问题与编码理论中的困难问题有相似之处,研究编码理论的工具和技术有时可以应用于格密码学。
⚝ 密码哈希函数 (Cryptographic Hash Functions):虽然大多数哈希函数不直接使用纠错码,但一些构造方法可能借鉴了编码理论中的思想,例如利用线性变换和非线性操作来扩散输入的变化,类似于编码器如何将消息扩展成码字。
⚝ 认证码 (Authentication Codes, A-codes):认证码用于保证信息的完整性和来源真实性。一些认证码的构造利用了有限域上的线性空间和编码理论的概念。
⚝ 私有信息检索 (Private Information Retrieval, PIR):PIR 允许用户从数据库中检索信息,而数据库不知道用户检索的是哪条信息。信息论PIR方案通常利用编码技术,将数据库的内容编码,使得用户可以通过下载与查询相关的编码块来恢复所需信息,同时不泄露查询内容。
⚝ 同态加密 (Homomorphic Encryption):允许在密文上进行计算而无需解密。一些基于格的同态加密方案与编码理论有联系。
总而言之,编码理论不仅为构建新型公钥密码系统提供了基础,其丰富的数学结构和分析工具也为密码学的其他分支提供了深刻的洞察和技术支持。信息论、编码理论和密码学这三个领域之间存在着紧密的联系和相互促进的关系。
9. chapter 9: 量子信息与密码学 (Quantum Information and Cryptography)
欢迎来到本书的第九章!📚 在前面的章节中,我们深入探讨了经典信息论与经典密码学的基本原理及其交叉点。然而,科学技术总是在不断发展,特别是量子力学(Quantum Mechanics)的飞速进步,不仅为计算带来了革命性的潜力,也对传统的密码学构成了严峻的挑战,同时也催生了全新的密码学分支。本章将带领大家进入量子世界,探讨量子信息(Quantum Information)的基本概念,以及它如何影响和塑造现代密码学,特别是量子密钥分发(Quantum Key Distribution, QKD)和后量子密码学(Post-Quantum Cryptography, PQC)。我们将看到信息论的原理如何在量子密码学中发挥作用,以及量子计算(Quantum Computing)对信息安全(Information Security)的深远影响。
9.1 量子信息基础 (Quantum Information Basics) 简介
要理解量子密码学,首先需要对量子信息有一些基本的认识。量子信息是基于量子力学原理的信息处理方式。与经典信息以比特(Bit)为基本单位不同,量子信息的基本单位是量子比特(Qubit)。
9.1.1 量子比特 (Qubit)
经典比特只能处于两种确定的状态:0 或 1。而量子比特则可以处于 0 和 1 的叠加态(Superposition)。一个量子比特的状态可以表示为一个二维复向量:
\[ |\psi\rangle = \alpha|0\rangle + \beta|1\rangle \]
其中 \( |0\rangle \) 和 \( |1\rangle \) 是计算基态(Computational Basis States),对应于经典比特的 0 和 1;\( \alpha \) 和 \( \beta \) 是复数,满足 \( |\alpha|^2 + |\beta|^2 = 1 \)。\( |\alpha|^2 \) 表示测量时得到状态 \( |0\rangle \) 的概率,\( |\beta|^2 \) 表示测量时得到状态 \( |1\rangle \) 的概率。这种叠加性是量子计算和量子通信威力的源泉之一。
9.1.2 量子态的测量 (Measurement of Quantum States)
对量子比特进行测量(Measurement)会导致其叠加态坍缩(Collapse)到某个计算基态(\( |0\rangle \) 或 \( |1\rangle \))。测量结果是概率性的,由叠加态中的概率幅(Probability Amplitudes)决定。一旦测量完成,量子比特就失去了其叠加性。重要的是,测量过程会不可避免地改变量子态(除非量子态恰好处于被测量的基态之一)。
9.1.3 量子纠缠 (Quantum Entanglement)
量子纠缠是一种奇特的量子现象,指两个或多个量子比特之间存在一种特殊的关联,无论它们相距多远,测量其中一个量子比特的状态会瞬间影响到其他纠缠的量子比特的状态。纠缠态(Entangled State)无法分解为单个量子比特状态的乘积。一个著名的纠缠态例子是贝尔态(Bell State):
\[ |\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle) \]
纠缠是实现量子通信和量子计算中许多高级功能(如量子隐形传态(Quantum Teleportation))的关键资源。
9.1.4 不可克隆定理 (No-Cloning Theorem)
不可克隆定理是量子信息中的一个基本定理,它指出无法构建一个通用的量子操作,能够精确地复制一个任意未知的量子态。这意味着,如果一个窃听者(Eve)试图复制一个传输中的量子比特来获取信息而不被发现,这是不可能的。任何复制尝试都会失败或以某种方式改变原始量子态,从而暴露窃听行为。这一定理是量子密钥分发安全性的重要基石。
9.2 量子密钥分发 (Quantum Key Distribution, QKD) 的信息论安全性
量子密钥分发(QKD)是一种利用量子力学原理在通信双方(通常称为 Alice 和 Bob)之间安全地建立共享密钥(Shared Secret Key)的方法。与依赖计算复杂性(Computational Complexity)的经典公钥密码学(Public-Key Cryptography)不同,QKD 的安全性基于物理定律,特别是量子力学的基本原理,因此它提供的是信息论安全性(Information-Theoretic Security)。
9.2.1 QKD 的基本原理
QKD 的核心思想是利用量子态的特性来传输信息,并检测窃听者的存在。最著名的 QKD 协议是 BB84 协议,由 Charles Bennett 和 Gilles Brassard 于 1984 年提出。
BB84 协议的简化流程:
① Alice 准备一系列处于随机选择的基(Basis)(如计算基 \( \{|0\rangle, |1\rangle\} \) 或 Hadamard 基 \( \{|+\rangle, |-\rangle\} \),其中 \( |+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle), |-\rangle = \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle) \)) 中的量子比特,并将它们发送给 Bob。
② Bob 接收到量子比特后,随机选择一个基对每个量子比特进行测量。
③ Alice 和 Bob 通过一个公开的经典信道(Public Classical Channel)宣布他们使用的基序列,但不透露测量结果。
④ Alice 和 Bob 保留那些他们使用了相同基的量子比特对应的测量结果,这些结果构成了一个原始密钥(Raw Key)。
⑤ Alice 和 Bob 公开一部分原始密钥,并比较这些公开比特的一致性。如果存在窃听者 Eve,她试图测量量子比特会扰动其状态(根据测量原理和不可克隆定理),导致 Alice 和 Bob 的测量结果出现异常高的错误率。
⑥ 如果错误率低于某个阈值,Alice 和 Bob 认为信道是安全的,Eve 的信息获取量有限。他们会进行信息协调(Information Reconciliation)来纠正剩余的错误,并进行隐私放大(Privacy Amplification)来减少 Eve 可能获得的关于最终密钥的信息。
9.2.2 信息论在 QKD 安全性分析中的作用
信息论在 QKD 的安全性证明中扮演着核心角色。
⚝ 检测窃听: 窃听者 Eve 试图获取量子比特的信息,根据量子力学原理,任何测量都会对量子态产生扰动。这种扰动在经典信道上表现为 Alice 和 Bob 共享的原始密钥中的错误。通过计算错误率,Alice 和 Bob 可以估计 Eve 可能获取的信息量。信息论中的互信息(Mutual Information) \( I(A;E) \) 和 \( I(B;E) \) 可以用来量化 Eve 从 Alice 或 Bob 那里获取的信息量。
⚝ 隐私放大 (Privacy Amplification): 即使 Alice 和 Bob 检测到较低的错误率,Eve 仍然可能通过窃听获得关于原始密钥的部分信息。隐私放大是一种利用信息论原理的技术,通过一个公开的哈希函数(Hash Function)将一个较长的、部分泄露的原始密钥压缩成一个较短的、对 Eve 来说几乎完全随机的最终密钥。其核心思想是利用强随机提取器(Strong Random Extractors)的概念,将具有一定最小熵(Min-Entropy)的源(原始密钥)转换为接近均匀分布的输出(最终密钥),即使源的部分信息已知。信息论中的熵(Entropy),特别是最小熵,被用来衡量原始密钥的随机性以及 Eve 已知信息对这种随机性的影响。隐私放大的目标是使得 Eve 关于最终密钥的互信息 \( I(K_{final}; E) \) 趋近于零。
⚝ 密钥率 (Key Rate): 信息论还用于计算 QKD 协议的最大安全密钥率,即在存在噪声和窃听的情况下,每传输一个量子比特平均可以生成多少安全密钥比特。这通常涉及到信道容量(Channel Capacity)的概念在量子信道中的推广。
QKD 的信息论安全性意味着,即使 Eve 拥有无限的计算能力,她也无法在不被发现的情况下获取关于最终密钥的有用信息。这是 QKD 相较于依赖计算复杂性的经典密码学的根本优势。
9.3 后量子密码学 (Post-Quantum Cryptography) 与信息论
尽管 QKD 提供了信息论安全的密钥分发方式,但它主要解决的是密钥分发问题,并且依赖于量子信道。对于数字签名(Digital Signatures)、公钥加密(Public-Key Encryption)等其他重要的密码学应用,目前广泛使用的方案(如 RSA、ECC)其安全性依赖于解决某些数学难题(如大整数分解、椭圆曲线离散对数)的计算复杂性。然而,Shor 算法(Shor's Algorithm)表明,量子计算机可以在多项式时间内解决这些难题,从而破解这些经典的公钥密码系统。
后量子密码学(PQC),也称为抗量子密码学(Quantum-Resistant Cryptography),旨在开发能够在经典计算机上运行,并且能够抵抗量子计算机攻击的密码算法。PQC 的安全性通常不依赖于信息论安全性,而是依赖于量子计算机难以有效解决的数学难题。然而,信息论的概念和工具在 PQC 的设计和分析中仍然发挥着重要作用。
9.3.1 PQC 的主要研究方向
目前,PQC 的主要研究方向包括:
⚝ 基于格(Lattice-Based)的密码学:安全性基于格上的困难问题,如最短向量问题(Shortest Vector Problem, SVP)或最近向量问题(Closest Vector Problem, CVP)。
⚝ 基于编码(Code-Based)的密码学:安全性基于纠错码(Error Correction Codes)的困难问题,如解码随机线性码(Decoding Random Linear Codes)。
⚝ 基于哈希(Hash-Based)的密码学:主要用于数字签名,安全性基于哈希函数的抗碰撞性。
⚝ 基于多变量(Multivariate)的密码学:安全性基于求解高维非线性方程组的困难问题。
⚝ 基于同源(Isogeny-Based)的密码学:安全性基于寻找超奇异椭圆曲线同源的困难问题。
9.3.2 信息论在 PQC 中的关联与应用
尽管 PQC 的核心安全性依赖于计算复杂性,但信息论的概念和工具在以下方面有所关联或应用:
⚝ 基于编码的密码学: 这是信息论与密码学交叉的一个经典领域(如本书第八章所述)。McEliece 密码系统是基于编码的密码学的代表,其安全性依赖于解码随机线性码的困难性。信息论中的编码理论(Coding Theory)提供了构建和分析这些密码系统的基础,包括纠错码的性质、码率(Code Rate)、最小距离(Minimum Distance)等概念。信息论中的信道模型和错误概率分析也与基于编码的密码学紧密相关。
⚝ 基于格的密码学: 格密码学中的一些构造和安全性分析会涉及到高斯噪声(Gaussian Noise)的处理,这与信息论中的连续信道(Continuous Channels)和噪声分析有联系。此外,格密码学中的某些问题可以从信息论的角度进行理解,例如,某些格问题可以被视为在存在噪声的情况下恢复隐藏信息的问题。信息论中的熵概念有时也用于分析格上分布的随机性。
⚝ 随机性与熵: PQC 算法的设计和实现同样需要高质量的随机数,这与第六章讨论的随机性、伪随机性及熵的概念直接相关。安全的密钥生成、随机填充(Random Padding)等都需要依赖于具有足够熵的随机源。
⚝ 信息泄露分析: 即使是 PQC 算法,在实际实现中也可能面临侧信道攻击(Side Channel Attacks)。第七章讨论的基于信息论的泄露量化方法(如互信息、最小熵)同样可以应用于分析 PQC 实现中的信息泄露风险。
总而言之,虽然 PQC 的主要安全范式是计算安全,但信息论作为处理信息、不确定性和随机性的基础理论,其概念和工具在 PQC 的某些分支的设计、分析和实现中仍然是重要且有用的。
本章我们初步探索了量子信息的基本概念,理解了量子密钥分发如何利用量子力学原理实现信息论安全性,并简要介绍了后量子密码学及其与信息论的关联。量子计算和量子信息是当前信息科学领域最前沿的方向之一,它们不仅对密码学构成了挑战,也带来了全新的机遇。
10. chapter 10: 高级主题与前沿应用 (Advanced Topics and Frontier Applications)
欢迎来到本书的高级章节!在前几章中,我们已经系统地学习了信息论和密码学的基本概念、香农的保密理论以及信息论安全的基础。现在,我们将把目光投向信息论与密码学交叉领域的一些前沿和高级主题。这些领域不仅是当前研究的热点,也展示了信息论工具和思想在解决现代安全和隐私问题中的强大力量。本章将深入探讨安全多方计算 (Secure Multi-Party Computation, MPC)、差分隐私 (Differential Privacy) 以及基于格 (Lattice-Based) 的密码学与信息论的联系。
10.1 安全多方计算 (Secure Multi-Party Computation, MPC) 中的信息论技术
安全多方计算 (Secure Multi-Party Computation, MPC) 是密码学中的一个重要分支,其目标是允许多个参与方在不泄露各自私有输入的情况下,共同计算一个预定的函数。想象一下,有几家公司想计算它们的总销售额,但都不想透露各自的具体销售数据。MPC 提供了一种解决方案。
MPC 的核心挑战在于如何在保护隐私的同时实现计算的正确性。信息论在 MPC 中扮演着至关重要的角色,尤其是在构建具有信息论安全性 (Information-Theoretic Security) 的 MPC 协议时。
10.1.1 MPC 的基本概念与目标
MPC 协议通常涉及 \(n\) 个参与方 \(P_1, P_2, \dots, P_n\),每个参与方 \(P_i\) 持有私有输入 \(x_i\)。他们的目标是计算一个公开函数 \(f(x_1, x_2, \dots, x_n)\),使得在协议执行结束后:
① 正确性 (Correctness):所有诚实 (Honest) 的参与方都能得到函数计算的正确结果。
② 隐私性 (Privacy):除了函数的结果 \(f(x_1, x_2, \dots, x_n)\) 外,任何参与方(包括恶意的 (Malicious) 参与方或由多个恶意参与方组成的联盟)都无法获得关于其他诚实参与方私有输入的任何额外信息。
根据对参与方行为的假设,MPC 协议可以分为不同的安全模型:
⚝ 诚实但好奇 (Honest-but-Curious / Semi-Honest) 模型:参与方遵循协议的每一步,但会试图从收到的所有信息中推断出额外的信息。
⚝ 恶意 (Malicious) 模型:参与方可以任意偏离协议,发送虚假信息,甚至合谋。
信息论安全 MPC 主要关注在诚实但好奇模型下的安全性,或者在恶意模型下,通过信息论手段限制恶意方的能力(例如,通过秘密共享 (Secret Sharing) 确保即使恶意方控制了部分参与方,也无法恢复秘密)。
10.1.2 信息论安全 MPC 的基石:秘密共享 (Secret Sharing)
秘密共享 (Secret Sharing) 是信息论安全 MPC 的一个基本工具。一个 \((t, n)\) 门限秘密共享方案 (Threshold Secret Sharing Scheme) 允许将一个秘密 \(S\) 分割成 \(n\) 份份额 (Shares),分发给 \(n\) 个参与方,使得:
① 任意 \(t\) 个或更多份额可以重构出秘密 \(S\)。
② 任意少于 \(t\) 个份额无法获得关于秘密 \(S\) 的任何信息。
香农的完美保密概念在这里得到了体现:少于 \(t\) 个份额与秘密 \(S\) 是信息论独立的。例如,在 Shamir 秘密共享方案中,秘密 \(S\) 是一个多项式在 \(x=0\) 处的值,份额是多项式在其他点上的值。知道少于 \(t\) 个点不足以确定多项式,因此无法确定 \(S\)。
在 MPC 中,参与方可以将他们的私有输入通过秘密共享的方式分发给其他参与方。然后,各方在这些份额上进行计算,而不是直接在输入上计算。这种基于份额的计算需要满足同态性 (Homomorphism),即对份额的计算对应于对秘密的计算。加法秘密共享 (Additive Secret Sharing) 是一种常用的同态秘密共享方案,它允许对份额进行加法操作,对应于对秘密的加法。
10.1.3 信息论安全 MPC 协议示例与技术
构建信息论安全 MPC 协议的关键在于如何安全地执行乘法(如果函数需要乘法运算)。加法秘密共享本身不支持乘法。解决这个问题的方法包括:
⚝ BGW 协议 (Ben-Or, Goldwasser, Wigderson):这是最早的通用信息论安全 MPC 协议之一,基于 Shamir 秘密共享。它通过一个称为“乘法三元组” (Multiplication Triple) 或“乘法共享” (Multiplication Share) 的技术来处理乘法。这些三元组 \((a, b, c)\) 满足 \(ab=c\),并且它们的秘密共享是在协议开始前预先生成或通过一个辅助协议生成的。参与方利用这些预计算好的三元组来执行乘法,而无需泄露被乘数和乘数本身。BGW 协议在诚实但好奇模型下是信息论安全的,并且可以抵抗少于总参与方三分之一的恶意参与方(在恶意模型下,需要额外的技术)。
⚝ 信息论安全不经意传输 (Information-Theoretic Oblivious Transfer, IT-OT):不经意传输 (Oblivious Transfer, OT) 是 MPC 中的另一个基本原语。在一个 1-out-of-2 OT 中,发送方有两个消息 \(m_0, m_1\),接收方有一个选择比特 \(c \in \{0, 1\}\)。接收方希望获得 \(m_c\) 但不获得 \(m_{1-c}\),而发送方希望不知道接收方选择了哪个消息 \(c\)。信息论安全的 OT 保证了这种隐私属性是信息论意义上的。虽然通用的信息论安全 OT 协议通常需要一个广播信道或可信方,但在某些特定设置下(例如,基于物理假设或特定的信道模型),可以实现信息论安全的 OT。OT 可以作为构建更复杂 MPC 协议的模块。
信息论安全 MPC 的主要优点在于其安全性不依赖于任何计算困难性假设。即使拥有无限计算能力的攻击者也无法攻破其隐私性。然而,它的缺点通常是通信开销较大,并且在恶意模型下实现信息论安全通常需要对恶意方的数量有严格的限制(例如,少于总参与方数量的一半或三分之一)。
10.1.4 信息论在 MPC 安全分析中的应用
除了作为构建模块,信息论工具也被用于分析 MPC 协议的安全性。例如,可以使用互信息 (Mutual Information) 来量化协议执行过程中泄露的信息量。对于一个诚实但好奇的参与方 \(P_i\),其输入为 \(x_i\),协议执行过程中观察到的所有信息为 \(View_i\)。如果对于所有可能的输入 \(x_i, x'_i\) (保持其他参与方的输入不变),\(View_i\) 的分布与 \(x_i\) 是信息论独立的(即 \(I(x_i; View_i | \text{other inputs}) = 0\)),那么协议对于 \(P_i\) 的输入是信息论安全的。更一般地,隐私性要求 \(View_i\) 只能泄露关于 \(f(x_1, \dots, x_n)\) 的信息,而不能泄露关于 \(x_j\) (\(j \neq i\)) 的额外信息。
信息论为定义和证明 MPC 协议的隐私属性提供了严谨的数学框架。
10.2 差分隐私 (Differential Privacy) 与信息论度量
差分隐私 (Differential Privacy, DP) 是一种用于保护数据库中个体隐私的技术框架。其核心思想是在查询敏感数据集时,通过向查询结果添加噪声来模糊个体记录的存在性,使得攻击者即使知道数据集中除某一个个体记录外的所有信息,也难以判断该个体是否在数据集中。信息论在差分隐私中扮演着核心角色,提供了量化隐私损失和分析机制性能的工具。
10.2.1 差分隐私的基本概念
一个随机化机制 \(M\) 满足 \(\epsilon\)-差分隐私,如果对于任意两个相邻数据集 \(D\) 和 \(D'\) (只相差一条记录),以及 \(M\) 的任意输出集合 \(S\),都有:
\[ P(M(D) \in S) \le e^\epsilon \cdot P(M(D') \in S) \]
这里的 \(\epsilon\) 是一个非负参数,称为隐私预算 (Privacy Budget)。\(\epsilon\) 越小,隐私保护水平越高。这个定义直观地表示,单个记录的存在或缺失对机制输出的概率分布影响有限。
更一般的定义是 \((\epsilon, \delta)\)-差分隐私,允许以很小的概率 \(\delta\) 违反 \(\epsilon\)-DP。
10.2.2 信息论度量在差分隐私中的应用
信息论中的一些度量可以用来理解和量化差分隐私:
① 互信息 (Mutual Information):互信息 \(I(X;Y)\) 度量了随机变量 \(X\) 和 \(Y\) 之间的相互依赖程度,即知道 \(Y\) 减少了关于 \(X\) 的不确定性(熵)。在差分隐私的背景下,我们可以将数据集 \(D\) 视为随机变量 \(X\),机制的输出 \(M(D)\) 视为随机变量 \(Y\)。互信息 \(I(D; M(D))\) 可以用来度量机制 \(M\) 关于数据集 \(D\) 泄露的总信息量。然而,DP 关注的是 个体 隐私,即单个记录的泄露。因此,直接使用 \(I(D; M(D))\) 来度量 DP 并不完全准确,因为它度量的是关于整个数据集的信息,而不是单个记录的敏感信息。
② KL 散度 (KL Divergence):KL 散度 \(D_{KL}(P || Q)\) 度量了概率分布 \(P\) 相对于概率分布 \(Q\) 的差异。DP 的定义 \[ P(M(D) \in S) \le e^\epsilon \cdot P(M(D') \in S) \] 可以等价地表示为,对于任意输出 \(y\),\[ \ln \frac{P(M(D)=y)}{P(M(D')=y)} \le \epsilon \] 这与概率比率有关。KL 散度 \[ D_{KL}(P_{M(D)} || P_{M(D')}) = \sum_y P(M(D)=y) \ln \frac{P(M(D)=y)}{P(M(D')=y)} \] 可以用来度量机制在相邻数据集上的输出分布的差异。虽然 KL 散度本身不是 DP 的直接定义,但它与 DP 密切相关,并且在分析 DP 机制的组合性 (Composition) 时很有用。
③ Rényi 散度 (Rényi Divergence):Rényi 散度 \(D_\alpha(P || Q)\) 是 KL 散度的一种推广。对于 \(\alpha > 1\),\(\alpha\)-Rényi 散度定义为:
\[ D_\alpha(P || Q) = \frac{1}{\alpha-1} \ln \sum_y \left(\frac{P(y)}{Q(y)}\right)^\alpha Q(y) \]
研究表明,\(\epsilon\)-差分隐私与 \(\alpha\)-Rényi 散度之间存在直接联系。一个机制满足 \(\epsilon\)-DP 当且仅当对于所有相邻数据集 \(D, D'\),其输出分布 \(P_{M(D)}\) 和 \(P_{M(D')}\) 满足 \(D_\alpha(P_{M(D)} || P_{M(D')}) \le \alpha \epsilon\) 对于所有 \(\alpha > 1\)。更重要的是,零阶 Rényi 散度 (Collision Entropy / Min-Entropy) 和 无穷阶 Rényi 散度 (Max Divergence) 与 DP 的定义形式紧密相关。特别是,最大散度 \(D_\infty(P || Q) = \sup_y \ln \frac{P(y)}{Q(y)}\) 直接反映了 DP 定义中的概率比率界限。
信息论度量为理解和分析差分隐私机制提供了深刻的视角。它们帮助我们量化隐私损失,比较不同机制的隐私保护能力,并分析多次查询对总隐私预算的影响。
10.2.3 信息论与隐私泄露量化
信息论提供了一种通用的框架来量化信息泄露。在侧信道分析 (Side Channel Analysis) 中,我们已经看到互信息可以用来度量泄露量。在差分隐私中,虽然关注点是数据集中的个体隐私而非秘密密钥的泄露,但基本思想是相似的:通过观察输出 \(Y\),我们能学到多少关于敏感输入 \(X\) 的信息?
信息论安全的概念要求泄露的信息量为零(或接近零)。差分隐私则提供了一个更灵活的框架,允许有限但可控的隐私泄露,并使用 \(\epsilon\) 参数来量化这种泄露的程度。信息论度量,特别是 Rényi 散度,为这种量化提供了数学基础。
10.3 基于格 (Lattice-Based) 的密码学与信息论联系 (如有)
基于格 (Lattice-Based) 的密码学是后量子密码学 (Post-Quantum Cryptography) 的一个重要分支,其安全性基于格上困难问题的计算复杂性,例如最短向量问题 (Shortest Vector Problem, SVP) 或带误差学习问题 (Learning With Errors, LWE)。与前两节不同,基于格的密码学主要依赖于计算安全 (Computational Security),而非信息论安全。然而,信息论的概念和工具在基于格的密码学的某些方面仍然有所关联和应用。
10.3.1 基于格密码学的基本原理
格 (Lattice) 是 \(n\) 维向量空间中由一组基向量的整数线性组合构成的点集。格上存在一些被认为是量子计算机难以有效解决的困难问题。基于格的密码系统利用这些困难问题的计算硬度来构建加密、签名等方案。
例如,LWE 问题是:给定一个矩阵 \(A \in \mathbb{Z}_q^{m \times n}\) 和一个向量 \(b = As + e \pmod q\),其中 \(s \in \mathbb{Z}_q^n\) 是一个短向量(秘密),\(e \in \mathbb{Z}_q^m\) 是一个来自某个“小”误差分布的向量,目标是恢复 \(s\)。如果误差 \(e\) 的分布选择得当,即使知道 \(A\) 和 \(b\),恢复 \(s\) 也是困难的。
10.3.2 信息论在格密码学中的潜在联系
尽管格密码学主要依赖计算硬度,信息论概念可以在以下方面有所关联:
① 误差分布的熵 (Entropy of Error Distribution):在 LWE 等问题中,误差向量 \(e\) 通常从一个离散高斯分布 (Discrete Gaussian Distribution) 或其他“小”分布中采样。这些分布的熵可以用来度量其随机性或不可预测性。误差的随机性对于保证 LWE 问题的困难性至关重要。信息论中的熵概念可以帮助分析这些分布的性质。
② 信息论安全 LWE (Information-Theoretic Secure LWE):虽然标准的 LWE 问题是计算困难性假设,但存在一些变体或相关的概念可能涉及信息论安全。例如,如果误差的方差足够大,使得 \(b = As+e\) 的分布与 \(As\) 的分布在信息论意义上不可区分,那么即使拥有无限计算能力的攻击者也无法从 \(b\) 中区分出 \(As\) 的结构。但这通常会导致密钥或模数非常大,实用性受限。一些研究探索了在特定模型或假设下 LWE 的信息论性质。
③ 格与编码理论的联系 (Connection between Lattices and Coding Theory):格与线性码 (Linear Codes) 之间存在密切联系。许多格可以被视为线性码的构造。编码理论是信息论的一个重要分支,研究如何设计和分析用于纠错和检测的码。基于编码的密码学 (Code-Based Cryptography) 是后量子密码学的另一个分支,其安全性基于解码随机线性码的困难性。由于格和码之间的联系,信息论在编码理论中的应用(如信道容量、纠错能力分析)可能间接与格密码学产生关联,尤其是在分析格的结构性质或设计相关算法时。
④ 信息泄露分析 (Information Leakage Analysis):与所有密码实现一样,基于格的密码系统在实际部署时也可能面临侧信道攻击。信息论工具(如互信息、最小熵)可以用于量化格密码实现中的信息泄露,例如通过功耗或时间分析泄露关于秘密密钥或中间计算值的信息。这属于信息论在密码实现安全分析中的通用应用,而非格密码学特有的信息论联系。
总的来说,基于格的密码学与信息论的联系不如 MPC 或差分隐私那样直接和基础。格密码学的核心是计算困难性。然而,信息论的概念和工具可以在分析格上分布的随机性、探索理论界限或在实现层面分析信息泄露等方面发挥作用。这是一个仍在发展的研究领域,未来可能会发现更深刻的联系。
本章探讨了信息论在几个高级和前沿密码学领域的应用,包括信息论安全 MPC 的构建、差分隐私中隐私泄露的量化,以及基于格密码学的一些潜在联系。这些例子展示了信息论作为一种强大的理论工具,如何为现代安全和隐私问题的解决提供基础和分析框架。
11. chapter 11: 总结与展望 (Conclusion and Outlook)
11.1 全书总结 (Book Summary)
亲爱的同学们,我们已经一起走过了信息论与密码学交叉领域的精彩旅程。从信息的基本度量——熵(Entropy)开始,我们深入探讨了信息如何在通信和安全系统中扮演核心角色。本书旨在为大家构建一个系统性的知识框架,帮助大家理解信息论的强大工具如何被应用于密码学的设计、分析和理解中。
我们首先回顾了信息论的基础,包括概率论(Probability Theory)的必要背景,以及香农熵(Shannon Entropy)、联合熵(Joint Entropy)、条件熵(Conditional Entropy)和互信息(Mutual Information)等核心概念。这些度量不仅量化了不确定性(Uncertainty)和信息量(Information Amount),也为我们分析密码系统的安全性提供了数学基础。KL散度(KL Divergence)和交叉熵(Cross-Entropy)则帮助我们理解概率分布之间的差异,这在某些密码分析和机器学习相关的安全应用中至关重要。
接着,我们转向密码学的基础,介绍了对称密码(Symmetric Cryptography)和非对称密码(Asymmetric Cryptography)的基本原理,并初步探讨了密码学中的安全性定义(Security Definitions)。这为后续章节中应用信息论工具分析密码安全性奠定了基础。
本书的核心部分之一是香农的保密理论(Shannon's Theory of Secrecy)。我们学习了理想安全(Perfect Secrecy)的严格定义,理解了为什么一次性密码本(One-Time Pad)在信息论意义上是安全的,以及实现理想安全所需的密钥条件。同时,我们也认识到香农理论的局限性,即在实际应用中,理想安全往往难以实现,这引出了计算安全(Computational Security)的概念。
信息论安全(Information-Theoretic Security)作为一个重要的范畴被独立讨论。我们对比了信息论安全与计算安全,理解了前者不依赖于计算资源的限制,提供的是一种更强的、理论上的安全性保证。虽然实现信息论安全通常需要更多的资源(如密钥),但在某些特定应用场景下(如物理层安全、某些量子密码协议),它具有独特的价值。
随机性(Randomness)是密码学的生命线,信息论为我们提供了量化和理解随机性的工具。我们探讨了熵如何度量随机源(Randomness Sources)的质量,学习了随机性提取器(Randomness Extractors)的概念,并从信息论视角审视了伪随机数生成器(Pseudorandom Number Generators)。理解随机性的本质及其在密码学中的作用,对于设计和分析安全的密码系统至关重要。
信息泄露(Information Leakage)是现代密码系统面临的严峻挑战,特别是通过侧信道(Side Channel)进行的攻击。信息论为量化这种泄露提供了强大的框架。我们学习了如何使用互信息(Mutual Information)和最小熵(Min-Entropy)等度量来量化侧信道泄露的信息量,并探讨了常见的侧信道攻击(Side Channel Attacks)类型及其防御策略。
编码理论(Coding Theory)与密码学有着深刻的联系。我们简要回顾了纠错码(Error Correction Codes)的基础,并重点介绍了基于编码的密码学(Code-Based Cryptography),特别是McEliece密码系统。这展示了信息论的另一个分支如何在构建具有潜在后量子安全性(Post-Quantum Security)的密码系统中发挥作用。
最后,我们触及了量子信息(Quantum Information)与密码学的交叉领域。我们简要介绍了量子信息的基础概念,并重点分析了量子密钥分发(Quantum Key Distribution, QKD)的信息论安全性,这是量子密码学(Quantum Cryptography)中最成熟的应用之一。我们也讨论了后量子密码学(Post-Quantum Cryptography)与信息论的相关性。
在高级主题中,我们瞥见了信息论在安全多方计算(Secure Multi-Party Computation, MPC)和差分隐私(Differential Privacy)等现代密码学和隐私保护技术中的应用。这些领域都广泛利用了信息论的工具来定义、分析和实现安全性或隐私性。
总而言之,信息论为密码学提供了一套严谨的数学语言和分析工具,帮助我们理解安全性的本质、量化不确定性和信息泄露、评估随机源的质量,并为设计新型密码系统提供了理论基础。它不仅揭示了密码系统的理论极限,也为实际系统的分析和改进提供了指导。
11.2 未来研究方向 (Future Research Directions)
信息论与密码学的交叉领域是一个充满活力且不断发展的研究前沿。随着技术的进步和新的安全挑战的出现,许多令人兴奋的研究方向正在涌现。以下是一些值得关注的未来研究方向:
① 后量子密码学(Post-Quantum Cryptography)的信息论分析:
▮▮▮▮ⓑ 深入研究基于格(Lattice-Based)、基于编码(Code-Based)、基于哈希(Hash-Based)等后量子密码方案的信息论安全性界限。
▮▮▮▮ⓒ 开发新的信息论工具来分析这些方案在面对量子计算(Quantum Computing)和经典计算(Classical Computing)攻击时的安全性。
▮▮▮▮ⓓ 探索信息论在后量子密钥分发(Post-Quantum Key Distribution)和密钥协商(Key Agreement)协议中的作用。
② 信息论安全在实际系统中的应用:
▮▮▮▮ⓑ 如何在资源受限的环境下(如物联网设备)实现接近信息论安全的通信或计算。
▮▮▮▮ⓒ 将信息论安全的概念应用于更复杂的系统模型,如分布式系统(Distributed Systems)和区块链(Blockchain)。
▮▮▮▮ⓓ 研究信息论安全与计算安全之间的更深层次联系和权衡。
③ 高级信息泄露量化与防御:
▮▮▮▮ⓑ 开发更精细的信息论度量来量化复杂侧信道(Complex Side Channels)和组合泄露(Compositional Leakage)。
▮▮▮▮ⓒ 研究基于信息论原理的通用侧信道防御机制。
▮▮▮▮ⓓ 将信息论泄露分析应用于新的计算范式,如同态加密(Homomorphic Encryption)和安全硬件(Secure Hardware)。
④ 随机性与熵的理论与实践:
▮▮▮▮ⓑ 改进和分析物理随机源(Physical Random Sources)的熵估计方法。
▮▮▮▮ⓒ 设计更高效、更安全的随机性提取器(Randomness Extractors)。
▮▮▮▮ⓓ 探索信息论在评估和改进伪随机数生成器(Pseudorandom Number Generators, PRNGs)和真随机数生成器(True Random Number Generators, TRNGs)中的作用。
⑤ 信息论在隐私保护技术中的深化应用:
▮▮▮▮ⓑ 差分隐私(Differential Privacy)的更高级信息论分析,特别是其与信息泄露的联系。
▮▮▮▮ⓒ 将信息论工具应用于联邦学习(Federated Learning)、差分模糊(Differential Obfuscation)等新兴隐私技术。
▮▮▮▮ⓓ 研究信息论在量化和管理数据隐私(Data Privacy)方面的潜力。
⑥ 量子信息论与量子密码学的交叉:
▮▮▮▮ⓑ 探索量子熵(Quantum Entropy)和量子互信息(Quantum Mutual Information)在分析量子密码协议安全性中的作用。
▮▮▮▮ⓒ 研究量子信道容量(Quantum Channel Capacity)与量子密钥分发速率(Quantum Key Distribution Rate)的关系。
▮▮▮▮ⓓ 开发基于量子信息论原理的新型量子密码协议。
⑦ 形式化方法(Formal Methods)与信息论的结合:
▮▮▮▮ⓑ 利用信息论度量来增强密码协议的形式化验证(Formal Verification)。
▮▮▮▮ⓒ 开发能够自动分析协议信息泄露的形式化工具。
这些方向不仅具有深刻的理论意义,也对构建更安全、更可靠的未来信息系统具有重要的实践价值。
11.3 开放性问题 (Open Problems)
尽管信息论为密码学提供了强大的理论基础,但该领域仍存在许多悬而未决的开放性问题,等待着有志之士去探索和解决。这些问题可能涉及基础理论的突破,也可能关乎理论与实践的鸿沟。
⚝ 信息论安全与计算安全的统一框架: 是否存在一个统一的理论框架,能够优雅地桥接信息论安全和计算安全?如何更好地理解和量化在有限计算资源下的“近似”信息论安全性?
⚝ 实用且信息论安全的密码系统: 除了像一次性密码本这样有严格限制的方案,是否存在其他更实用(例如,密钥量远小于消息长度)且能提供非平凡信息论安全保证的密码系统?
⚝ 复杂系统中的信息泄露量化: 如何准确、可组合地量化在大型、复杂、交互式系统中(如云计算、分布式账本)的信息泄露总量?现有的信息论度量是否足够捕捉所有相关的泄露模式?
⚝ 随机性提取的理论极限与实践效率: 在给定一个具有一定最小熵(Min-Entropy)的随机源时,理论上可以提取多少高质量的随机比特?如何在实践中构建既高效又能达到理论极限的随机性提取器?
⚝ 后量子密码的信息论下界: 对于特定的密码学任务(如公钥加密、数字签名),在量子计算模型下,信息论上可能达到的最佳安全性是什么?这能否为后量子密码方案的设计提供指导?
⚝ 量子侧信道攻击与防御: 量子计算设备是否会产生新的侧信道?如何使用量子信息论的工具来分析和防御这些潜在的量子侧信道攻击?
⚝ 信息论在零知识证明(Zero-Knowledge Proofs)中的作用: 信息论能否为零知识证明的隐私性(Privacy)和安全性提供新的分析视角或度量?
这些开放性问题代表了该领域的挑战和机遇。解决其中任何一个问题都可能对信息论和密码学领域产生深远的影响。希望本书能够激发大家对这些问题的兴趣,并投身于相关的研究中。
信息论与密码学的结合是一个迷人且富有挑战性的领域。我们希望本书能够成为大家探索这一领域的坚实起点。理论知识是基础,实践应用是关键。鼓励大家在掌握理论的同时,积极尝试将这些知识应用于实际问题中,无论是参与开源项目、进行学术研究,还是在工业界解决实际的安全挑战。
祝大家在信息论与密码学的学习和探索之路上取得丰硕的成果!🚀
12. chapter 12: 附录 (Appendices)
本附录旨在为读者提供理解本书主体内容所需的数学和概率统计基础知识回顾。信息论和密码学是高度依赖数学的学科,扎实的数学基础对于深入理解这些领域的概念至关重要。本章内容并非对这些主题的全面讲解,而是侧重于与本书后续章节紧密相关的概念和工具。
12.1 数学背景知识 (Mathematical Background)
本节回顾一些在信息论和密码学中常用的数学概念,包括模运算、线性代数基础以及有限域。
12.1.1 模运算 (Modular Arithmetic)
模运算是密码学中最基础的数学工具之一,特别是在公钥密码学和对称密码学中都有广泛应用。
① 定义:
给定整数 \(a\)、\(b\) 和正整数 \(n\),如果 \(a\) 和 \(b\) 除以 \(n\) 的余数相同,则称 \(a\) 与 \(b\) 模 \(n\) 同余,记作 \(a \equiv b \pmod{n}\)。
等价地,\(a \equiv b \pmod{n}\) 当且仅当 \(n\) 整除 \(a - b\),即存在整数 \(k\) 使得 \(a - b = kn\)。
② 基本性质:
设 \(a, b, c, d\) 为整数,\(n\) 为正整数。
⚝ 自反性 (Reflexivity): \(a \equiv a \pmod{n}\)。
⚝ 对称性 (Symmetry): 如果 \(a \equiv b \pmod{n}\),则 \(b \equiv a \pmod{n}\)。
⚝ 传递性 (Transitivity): 如果 \(a \equiv b \pmod{n}\) 且 \(b \equiv c \pmod{n}\),则 \(a \equiv c \pmod{n}\)。
⚝ 加法同余 (Addition): 如果 \(a \equiv b \pmod{n}\) 且 \(c \equiv d \pmod{n}\),则 \(a+c \equiv b+d \pmod{n}\)。
⚝ 乘法同余 (Multiplication): 如果 \(a \equiv b \pmod{n}\) 且 \(c \equiv d \pmod{n}\),则 \(ac \equiv bd \pmod{n}\)。
③ 模逆 (Modular Inverse):
给定整数 \(a\) 和正整数 \(n\),如果存在整数 \(x\) 使得 \(ax \equiv 1 \pmod{n}\),则称 \(x\) 是 \(a\) 模 \(n\) 的乘法逆元 (multiplicative inverse),记作 \(a^{-1} \pmod{n}\)。
\(a\) 模 \(n\) 的乘法逆元存在的充要条件是 \(a\) 与 \(n\) 互质 (coprime),即它们的最大公约数 \(gcd(a, n) = 1\)。
计算模逆通常使用扩展欧几里得算法 (Extended Euclidean Algorithm)。
12.1.2 线性代数基础 (Fundamentals of Linear Algebra)
线性代数在编码理论(如纠错码)和某些密码学构造(如基于格的密码学)中扮演重要角色。这里我们关注向量空间和矩阵,特别是它们在有限域上的应用。
① 向量空间 (Vector Space):
一个向量空间 \(V\) 是一个集合,其元素称为向量 (vectors),定义了向量加法和标量乘法两种运算,并满足一系列公理。在密码学和编码理论中,我们经常考虑定义在有限域 \(F\) 上的向量空间 \(F^n\),其元素是长度为 \(n\) 的向量 \((v_1, v_2, \dots, v_n)\),其中每个 \(v_i \in F\)。
② 矩阵 (Matrices):
一个 \(m \times n\) 矩阵是一个包含 \(m\) 行 \(n\) 列的元素排列,这些元素通常来自一个域 \(F\)。
\[ A = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{pmatrix} \]
矩阵加法和乘法在有限域上与实数域上的定义类似,只是所有运算都在该有限域内进行。
⚝ 矩阵乘法:如果 \(A\) 是 \(m \times n\) 矩阵,\(B\) 是 \(n \times p\) 矩阵,则它们的乘积 \(C = AB\) 是一个 \(m \times p\) 矩阵,其元素 \(c_{ij}\) 定义为:
\[ c_{ij} = \sum_{k=1}^n a_{ik} b_{kj} \]
这里的加法和乘法都是在域 \(F\) 中进行的。
③ 线性独立性 (Linear Independence) 与基 (Basis):
向量集合 \(\{v_1, v_2, \dots, v_k\}\) 是线性独立的,如果方程 \(c_1 v_1 + c_2 v_2 + \dots + c_k v_k = 0\) 只有零解 \(c_1 = c_2 = \dots = c_k = 0\),其中 \(c_i \in F\)。
向量空间 \(V\) 的基是一组线性独立的向量,它们可以张成 (span) 整个空间 \(V\)。基中向量的个数称为向量空间的维数 (dimension)。
12.1.3 有限域 (Finite Fields)
有限域,也称为伽罗瓦域 (Galois Field),是包含有限个元素的域。它们在对称密码(如 AES)、公钥密码(如椭圆曲线密码学 ECC)和编码理论中至关重要。
① 域 (Field) 的定义:
一个集合 \(F\) 连同两个二元运算:加法 (+) 和乘法 (⋅),构成一个域,如果满足以下条件:
⚝ 在加法下是阿贝尔群 (Abelian group):
▮▮▮▮ⓐ 加法结合律:\((a+b)+c = a+(b+c)\)
▮▮▮▮ⓑ 加法交换律:\(a+b = b+a\)
▮▮▮▮ⓒ 存在零元素 (additive identity) 0:\(a+0 = a\)
▮▮▮▮ⓓ 存在负元素 (additive inverse) \(-a\): \(a+(-a) = 0\)
⚝ 在乘法下,非零元素构成阿贝尔群:
▮▮▮▮ⓐ 乘法结合律:\((a \cdot b) \cdot c = a \cdot (b \cdot c)\)
▮▮▮▮ⓑ 乘法交换律:\(a \cdot b = b \cdot a\)
▮▮▮▮ⓒ 存在单位元素 (multiplicative identity) 1 (\(1 \ne 0\)):\(a \cdot 1 = a\)
▮▮▮▮ⓓ 对任意非零元素 \(a\),存在逆元素 (multiplicative inverse) \(a^{-1}\):\(a \cdot a^{-1} = 1\)
⚝ 乘法对加法满足分配律 (Distributive law):\(a \cdot (b+c) = a \cdot b + a \cdot c\)
② 有限域的阶 (Order of a Finite Field):
有限域的元素个数称为它的阶。有限域的阶一定是素数 \(p\) 的幂次方 \(p^m\),其中 \(p\) 是素数,\(m\) 是正整数。对于任何素数 \(p\) 和正整数 \(m\),都存在一个阶为 \(p^m\) 的有限域,且同构意义下是唯一的,记作 \(GF(p^m)\) 或 \( \mathbb{F}_{p^m} \)。
③ 素数阶有限域 \(GF(p)\):
当 \(m=1\) 时,有限域的阶是素数 \(p\)。\(GF(p)\) 可以构造为整数模 \(p\) 的集合 \(\{0, 1, \dots, p-1\}\),加法和乘法都是模 \(p\) 运算。例如,\(GF(2)\) 只有两个元素 \(\{0, 1\}\),加法是异或 (XOR),乘法是与 (AND)。
④ 扩展域 \(GF(p^m)\) (\(m > 1\)):
\(GF(p^m)\) 可以构造为在 \(GF(p)\) 上系数的多项式环 \(GF(p)[x]\) 对一个 \(m\) 次不可约多项式 \(f(x)\) 取模得到的商环 \(GF(p)[x] / \langle f(x) \rangle\)。
其元素是次数小于 \(m\) 的多项式 \(a_{m-1}x^{m-1} + \dots + a_1x + a_0\),其中 \(a_i \in GF(p)\)。
加法是多项式对应项系数在 \(GF(p)\) 中相加。
乘法是多项式乘法,然后对不可约多项式 \(f(x)\) 取模。
12.2 概率与统计补充 (Probability and Statistics Supplement)
信息论的核心概念,如熵、互信息等,都建立在概率论的基础上。本节回顾概率论的基本概念。
12.2.1 基本概率概念 (Basic Probability Concepts)
① 样本空间 (Sample Space) \( \Omega \):
一个随机实验所有可能结果的集合。例如,抛掷一枚硬币两次,样本空间为 \( \Omega = \{HH, HT, TH, TT\} \)。
② 事件 (Event) \( A \):
样本空间 \( \Omega \) 的一个子集。例如,抛掷硬币两次至少出现一次正面的事件为 \( A = \{HH, HT, TH\} \)。
③ 概率测度 (Probability Measure) \( P \):
一个函数 \( P: \mathcal{F} \to [0, 1] \),其中 \( \mathcal{F} \) 是 \( \Omega \) 的子集构成的集合(通常是 \( \Omega \) 的幂集或一个 \( \sigma \)-代数),满足以下公理(柯尔莫哥洛夫公理):
⚝ 非负性 (Non-negativity): 对于任意事件 \( A \in \mathcal{F} \),\( P(A) \ge 0 \)。
⚝ 规范性 (Normalization): \( P(\Omega) = 1 \)。
⚝ 可列可加性 (Countable Additivity): 对于一列互不相容 (mutually exclusive) 的事件 \( A_1, A_2, \dots \) (即 \( A_i \cap A_j = \emptyset \) 对于 \( i \ne j \)),有 \( P(\cup_{i=1}^\infty A_i) = \sum_{i=1}^\infty P(A_i) \)。
④ 条件概率 (Conditional Probability):
在已知事件 \( B \) 发生的情况下,事件 \( A \) 发生的概率,记作 \( P(A|B) \)。
定义为 \( P(A|B) = \frac{P(A \cap B)}{P(B)} \),前提是 \( P(B) > 0 \)。
⑤ 事件的独立性 (Independence of Events):
事件 \( A \) 和 \( B \) 是独立的,如果 \( P(A \cap B) = P(A)P(B) \)。
等价地,如果 \( P(B) > 0 \),\( A \) 和 \( B \) 独立当且仅当 \( P(A|B) = P(A) \)。
⑥ 贝叶斯定理 (Bayes' Theorem):
描述了在已知一些条件下,某个事件的后验概率 (posterior probability) 如何通过先验概率 (prior probability) 来计算。
\[ P(A|B) = \frac{P(B|A) P(A)}{P(B)} \]
其中 \( P(B) \) 可以通过全概率公式 (Law of Total Probability) 计算:如果 \( A_1, A_2, \dots, A_n \) 构成样本空间的一个划分 (partition),则 \( P(B) = \sum_{i=1}^n P(B|A_i) P(A_i) \)。
12.2.2 随机变量与分布 (Random Variables and Distributions)
① 随机变量 (Random Variable) \( X \):
一个将样本空间 \( \Omega \) 中的结果映射到实数 \( \mathbb{R} \) 的函数 \( X: \Omega \to \mathbb{R} \)。
② 离散随机变量 (Discrete Random Variable):
随机变量的取值是有限或可列无限个。
⚝ 概率质量函数 (Probability Mass Function, PMF) \( p_X(x) \):
\( p_X(x) = P(X=x) \) 对于 \( X \) 的所有可能取值 \( x \)。
满足 \( p_X(x) \ge 0 \) 且 \( \sum_x p_X(x) = 1 \)。
③ 连续随机变量 (Continuous Random Variable):
随机变量的取值是不可列无限个(通常在一个区间内)。
⚝ 概率密度函数 (Probability Density Function, PDF) \( f_X(x) \):
满足 \( f_X(x) \ge 0 \) 且 \( \int_{-\infty}^\infty f_X(x) dx = 1 \)。
对于连续随机变量,\( P(X=x) = 0 \)。概率通过对 PDF 积分来计算:\( P(a \le X \le b) = \int_a^b f_X(x) dx \)。
⚝ 累积分布函数 (Cumulative Distribution Function, CDF) \( F_X(x) \):
\( F_X(x) = P(X \le x) \)。对于离散 RV,\( F_X(x) = \sum_{t \le x} p_X(t) \)。对于连续 RV,\( F_X(x) = \int_{-\infty}^x f_X(t) dt \)。
12.2.3 期望与方差 (Expectation and Variance)
① 期望 (Expectation) 或均值 (Mean) \( E[X] \):
随机变量 \( X \) 的平均值。
⚝ 离散 RV: \( E[X] = \sum_x x p_X(x) \)
⚝ 连续 RV: \( E[X] = \int_{-\infty}^\infty x f_X(x) dx \)
期望具有线性性质:\( E[aX + bY] = aE[X] + bE[Y] \)。
② 方差 (Variance) \( Var(X) \) 或 \( \sigma_X^2 \):
衡量随机变量取值分散程度的量。
\( Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2 \)
标准差 (Standard Deviation) 是方差的平方根 \( \sigma_X = \sqrt{Var(X)} \)。
12.2.4 联合分布与条件分布 (Joint and Conditional Distributions)
考虑两个或多个随机变量。
① 联合概率质量函数 (Joint PMF) \( p_{X,Y}(x,y) \):
对于离散 RVs \( X \) 和 \( Y \),\( p_{X,Y}(x,y) = P(X=x, Y=y) \)。
满足 \( p_{X,Y}(x,y) \ge 0 \) 且 \( \sum_x \sum_y p_{X,Y}(x,y) = 1 \)。
② 边缘概率质量函数 (Marginal PMF) \( p_X(x) \):
从联合分布中得到单个随机变量的分布。
\( p_X(x) = \sum_y p_{X,Y}(x,y) \)
\( p_Y(y) = \sum_x p_{X,Y}(x,y) \)
③ 条件概率质量函数 (Conditional PMF) \( p_{Y|X}(y|x) \):
在已知 \( X=x \) 的条件下,\( Y=y \) 的概率。
\( p_{Y|X}(y|x) = P(Y=y|X=x) = \frac{P(X=x, Y=y)}{P(X=x)} = \frac{p_{X,Y}(x,y)}{p_X(x)} \),前提是 \( p_X(x) > 0 \)。
类似地,\( p_{X|Y}(x|y) = \frac{p_{X,Y}(x,y)}{p_Y(y)} \),前提是 \( p_Y(y) > 0 \)。
④ 随机变量的独立性 (Independence of Random Variables):
随机变量 \( X \) 和 \( Y \) 是独立的,如果对于所有 \( x, y \),\( P(X=x, Y=y) = P(X=x)P(Y=y) \),即 \( p_{X,Y}(x,y) = p_X(x)p_Y(y) \)。
等价地,如果 \( X \) 和 \( Y \) 独立,则 \( p_{Y|X}(y|x) = p_Y(y) \) (当 \( p_X(x) > 0 \)) 且 \( p_{X|Y}(x|y) = p_X(x) \) (当 \( p_Y(y) > 0 \))。
这些概率论和数学概念是理解信息论中熵、互信息、信道容量以及密码学中安全性证明、算法构造的基础。读者在阅读本书主体内容时,如果遇到困难,可以随时回顾本附录的相关部分。
13. chapter 13: 参考文献 (References)
本章提供了本书撰写过程中参考的重要文献资源,旨在为希望深入学习信息论与密码学交叉领域的读者提供进一步的阅读指引。这些文献涵盖了从基础理论到前沿研究的各个层面,适合不同程度的读者查阅。
13.1 经典书籍 (Classic Books)
以下列出了一些在信息论和密码学领域具有里程碑意义或被广泛认可的经典教材和专著。它们为理解相关概念和理论奠定了坚实的基础。
① 信息论经典
▮▮▮▮⚝ Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley-Interscience.
▮▮▮▮▮▮▮▮⚝ 这本书是信息论领域的圣经,内容全面且深入,涵盖了香农理论的各个方面,包括熵 (entropy)、互信息 (mutual information)、信源编码 (source coding) 和信道容量 (channel capacity) 等。对于希望系统学习信息论的读者来说,是不可或缺的参考书。
▮▮▮▮⚝ MacKay, D. J. C. (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.
▮▮▮▮▮▮▮▮⚝ 这本书以更现代的视角讲解信息论,并将其与机器学习 (machine learning)、推理 (inference) 等领域联系起来。风格生动,包含大量例子和习题,适合对信息论应用感兴趣的读者。
② 密码学经典
▮▮▮▮⚝ Stinson, D. R. (2006). Cryptography: Theory and Practice (3rd ed.). Chapman and Hall/CRC.
▮▮▮▮▮▮▮▮⚝ 这是一本经典的密码学教材,内容涵盖了对称密码 (symmetric cryptography)、非对称密码 (asymmetric cryptography)、哈希函数 (hash functions)、数字签名 (digital signatures) 等基础知识,并对一些高级主题有所介绍。理论与实践并重。
▮▮▮▮⚝ Katz, J., & Lindell, Y. (2007). Introduction to Modern Cryptography. Chapman and Hall/CRC.
▮▮▮▮▮▮▮▮⚝ 这本书是现代密码学的标准教材之一,强调基于严格安全定义 (security definitions) 和可证明安全 (provable security) 的方法。对于希望理解现代密码学理论基础的读者非常有价值。
▮▮▮▮⚝ Goldreich, O. (2001). Foundations of Cryptography: Basic Tools. Cambridge University Press.
▮▮▮▮⚝ Goldreich, O. (2004). Foundations of Cryptography: Basic Applications. Cambridge University Press.
▮▮▮▮▮▮▮▮⚝ 这两卷书是密码学理论的权威著作,对密码学的基本概念、工具和应用进行了深入而严谨的探讨。适合希望进行密码学理论研究的读者。
③ 信息论与密码学交叉领域相关书籍
▮▮▮▮⚝ Csiszár, I., & Körner, J. (2011). Information Theory: Coding Theorems for Discrete Memoryless Systems (2nd ed.). Cambridge University Press.
▮▮▮▮▮▮▮▮⚝ 虽然主要是信息论书籍,但其中关于多用户信息论 (multi-user information theory) 和相关性 (correlation) 的章节与密码学中的信息泄露 (information leakage) 和秘密共享 (secret sharing) 等概念有紧密联系。
▮▮▮▮⚝ Maurer, U. M. (1999). Information-Theoretic Cryptography. In Advances in Cryptology—CRYPTO '99 (pp. 47-64). Springer, Berlin, Heidelberg.
▮▮▮▮▮▮▮▮⚝ 这是一篇重要的会议论文,但它系统地概述了信息论安全 (information-theoretic security) 的概念和范畴,可以作为该领域的入门文献。虽然不是一本完整的书,但其思想影响深远。
▮▮▮▮⚝ Pass, R., & Shelat, A. (2021). A Course in Cryptography. Available online.
▮▮▮▮▮▮▮▮⚝ 这是一本在线提供的密码学讲义,其中包含了一些关于信息论安全和随机性提取器 (randomness extractors) 的章节,从现代密码学的角度审视了信息论工具的应用。
13.2 重要研究论文 (Important Research Papers)
以下列出了一些在信息论与密码学交叉领域具有开创性或重要影响力的研究论文。阅读这些论文有助于读者了解该领域的历史发展和前沿进展。
① Shannon, C. E. (1949). Communication Theory of Secrecy Systems. Bell System Technical Journal, 28(4), 656-715.
▮▮▮▮⚝ 这是克劳德·香农 (Claude Shannon) 关于密码学信息论的开创性论文,首次提出了理想安全 (perfect secrecy) 的概念,并分析了一次性密码本 (one-time pad) 的安全性。是理解信息论安全基石的必读文献。
② Wyner, A. D. (1975). The Wiretap Channel. Bell System Technical Journal, 54(8), 1355-1387.
▮▮▮▮⚝ 这篇论文引入了窃听信道模型 (wiretap channel model),并证明了在存在窃听者的情况下,仍然可以通过信源编码 (source coding) 和信道编码 (channel coding) 实现安全通信。是物理层安全 (physical layer security) 的奠基性工作。
③ Maurer, U. M. (1992). Conditionally Perfectly Secure Secret Key Agreement from Common Information. Journal of Cryptology, 5(2), 101-137.
▮▮▮▮⚝ 这篇论文研究了如何在两个合法用户共享部分公共信息 (common information) 的情况下,通过公开信道 (public channel) 协商出一个秘密密钥 (secret key),并证明了其信息论安全性。
④ Dodis, Y., Impagliazzo, R., Kabanets, V., & Wigderson, A. (2004). Pseudorandomness and Extracting Randomness. In Proceedings of the 36th Annual ACM Symposium on Theory of Computing (STOC '04) (pp. 429-438).
▮▮▮▮⚝ 这篇论文深入探讨了伪随机性 (pseudorandomness) 和随机性提取 (randomness extraction) 的概念,并给出了随机性提取器的构造。对于理解密码学中随机性的理论基础非常重要。
⑤ Kocher, P. (1996). Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems. In Advances in Cryptology—CRYPTO '96 (pp. 104-113). Springer, Berlin, Heidelberg.
▮▮▮▮⚝ 这是一篇关于侧信道攻击 (side channel attacks) 的早期重要论文,展示了如何通过测量密码算法执行时间来获取秘密信息。虽然不是直接使用信息论工具,但它揭示了信息泄露 (information leakage) 的实际威胁,并催生了使用信息论量化泄露的研究。
⑥ Micali, S., & Rogaway, P. (1999). Cryptographic Hash Functions. Journal of Cryptology, 13(2), 241-256.
▮▮▮▮⚝ 这篇论文形式化定义了密码学哈希函数 (cryptographic hash functions) 的安全属性。虽然主要关注计算安全性 (computational security),但哈希函数与信息论中的碰撞 (collision) 和熵 (entropy) 概念密切相关。
⑦ Goldwasser, S., & Micali, S. (1984). Probabilistic Encryption. Journal of Computer and System Sciences, 28(2), 270-299.
▮▮▮▮⚝ 这篇论文引入了概率加密 (probabilistic encryption) 的概念,并提出了语义安全 (semantic security) 的定义。这是现代密码学安全定义方法的奠基性工作之一,其思想与信息论中的不可区分性 (indistinguishability) 概念有联系。
⑧ McEliece, R. J. (1978). A Public-Key Cryptosystem Based on Algebraic Coding Theory. DSN Progress Report, 42-44, 114-116.
▮▮▮▮⚝ 这篇论文提出了基于纠错码 (error correction codes) 的公钥密码系统 (public-key cryptosystem),即 McEliece 密码系统 (McEliece cryptosystem)。是编码理论 (coding theory) 在密码学中应用的重要例子,也是后量子密码学 (post-quantum cryptography) 的候选方案之一。
13.3 在线资源与工具 (Online Resources and Tools)
互联网上有许多优秀的在线资源和工具,可以辅助读者学习信息论和密码学。
① 在线课程与讲座
▮▮▮▮⚝ Coursera, edX, Udacity 等平台提供的信息论和密码学相关课程。
▮▮▮▮⚝ 各大高校(如 MIT, Stanford, Berkeley 等)在网上公开的课程讲义和视频。
▮▮▮▮⚝ YouTube 上的一些科普或专业讲座频道。
② 维基百科 (Wikipedia)
▮▮▮▮⚝ 维基百科提供了大量关于信息论和密码学概念的介绍,是快速了解术语和基本思想的良好起点。注意核对信息来源。
③ 密码学标准与规范
▮▮▮▮⚝ 美国国家标准与技术研究院 (NIST) 的密码学标准和指南 (e.g., FIPS, SP 800系列)。
▮▮▮▮⚝ 国际标准化组织 (ISO) 的密码学相关标准。
④ 密码学软件库与工具
▮▮▮▮⚝ OpenSSL: 广泛使用的开源密码学库。
▮▮▮▮⚝ Python 的 cryptography
库。
▮▮▮▮⚝ SageMath: 一个开源数学软件系统,包含密码学和信息论相关的功能。
▮▮▮▮⚝ 各类用于演示或实验特定密码算法或信息论概念的在线工具。
⑤ 学术搜索引擎与文库
▮▮▮▮⚝ Google Scholar, IEEE Xplore, ACM Digital Library, Cryptology ePrint Archive 等,用于查找最新的研究论文和技术报告。
⑥ 专业社区与论坛
▮▮▮▮⚝ Stack Exchange 的 Cryptography Stack Exchange 社区。
▮▮▮▮⚝ 相关的学术会议(如 CRYPTO, EUROCRYPT, ASIACRYPT, ISIT 等)网站和论文集。
希望这些参考文献和资源能帮助读者在信息论与密码学的探索之旅中走得更远。