文章目录
- [一 密码学概述](#一 密码学概述)
-
- [1.1 基本概念](#1.1 基本概念)
- [1.2 密码体制](#1.2 密码体制)
- [1.3 安全性需求和密码分析](#1.3 安全性需求和密码分析)
- [1.4 密码学的发展简史中的重要知识](#1.4 密码学的发展简史中的重要知识)
-
- [1.4.1 古典密码时期](#1.4.1 古典密码时期)
- [1.4.2 近代密码时期](#1.4.2 近代密码时期)
- [1.4.3 现代密码时期](#1.4.3 现代密码时期)
- [1.5 密码分析(重要)](#1.5 密码分析(重要))
-
- [1.5.1 密码体制的攻击方法](#1.5.1 密码体制的攻击方法)
- [1.5.2 唯密文攻击](#1.5.2 唯密文攻击)
- [1.5.3 已知明文攻击](#1.5.3 已知明文攻击)
- [1.5.4 选择明文攻击](#1.5.4 选择明文攻击)
- [1.5.5 适应性选择明文攻击](#1.5.5 适应性选择明文攻击)
- [1.5.6 选择密文攻击](#1.5.6 选择密文攻击)
- [1.5.7 适应性选择密文攻击](#1.5.7 适应性选择密文攻击)
- [1.5.8 6种攻击方式的核心区别](#1.5.8 6种攻击方式的核心区别)
- [1.6 密码体制的评估模型](#1.6 密码体制的评估模型)
一 密码学概述
- 密码学是研究在又敌手的情况下,如何隐秘传输信息的科学。密码学的分支包括编码密码学和密码分析学。
- 编码密码学:对消息进行变化和伪装,保证消息在信道的传输过程中不被敌手窃取、篡改和利用。
- 密码分析学:破译和分析密码体制。
1.1 基本概念
- 明文 m m m(message):要变换的消息。
- 密文 c c c(ciphertext):变换后的消息。
- 密钥 k k k(key):密钥参数。
- 加密 e n c enc enc(encryption):将明文经过一组规则变换成看似没有意义的随机消息(密文)。
- 解密 d e c dec dec(decryption):将密文恢复为明文。
1.2 密码体制
一个密码体制的组成:
- 明文空间 μ \mu μ:全体明文的集合。
- 密文空间 C C C:全体密文的集合。
- 密钥空间 κ \kappa κ:全体密钥的集合。
- 加密算法 ε \varepsilon ε:由加密密钥控制的加密变换的集合。
- 解密算法 D D D:由解密密钥控制的解密密钥的集合。
密码体制分类
- 按密钥类型,密码体制可以分为对称密码体制和非对称密码体制。
- 对称密码体制:加密密钥和解密密钥相同或者从一个密钥很容易推导出另外一个密钥。
- 非对称密码体制:加密密钥和解密密钥不同,且从一个密钥难以推导出另外一个密钥。
- 按照加密方式,密码体制可以分为流密码和分组密码。
- 流密码:将明文按照位(比特)加密。
- 分组密码:将明文分成定长的快进行加密。

- 注意:在具体的一次加密过程中,明文 m m m,密文 c c c,加密密钥。解密密钥都应来自相对应的空间,加密算法、解密算法来自相应得算法集合。
- 一个加密算法应该满足一致性要求:
C = E k e ( m ) → m = D k d ( C ) C=E_{k_e}(m)→ m=D_{k_d}(C) C=Eke(m)→m=Dkd(C) - 只要密文是通过加密算法和加密密钥正确生成的,那么这个密文一定可以利用解密算法和解密密钥正确恢复出明文。
1.3 安全性需求和密码分析
- 机密性(Confidentiality):保证信息为授权者使用而不泄漏给未经授权者。
- 完整性(integrity):信息在传输或存储过程中,不能被偶然或蓄意地删除、修改、伪造、重放、插入等破坏和丢失。
- 认证性(authentication):保证消息来源和通信实体的真实性。
- 不可否认性(non-repudiation):防止通信方对以前的许诺或者行为的否认。

1.4 密码学的发展简史中的重要知识
- 从整体上来说,密码学经过了人工密码,到机械密码,到电子计算机的发展历程。
1.4.1 古典密码时期
- 古希腊斯巴达军队中使用的Scytale密码,是一种置换密码。
- 古罗马帝国皇帝Caesar曾经使用有序的单表代换密码,即Caesar密码,是单表代换密码的代表。
- 欧洲的密码学起源于中世纪的罗马和意大利。
- 阿拉伯人是第一个清晰地理解密码学原理的人
- 1883年,A. Kerckhoffs在《军事密码学》一书中提出了密码系统的安全性的一个基本假设,称为Kerckhoffs假设(原则),即密码分析者知道所使用的密码算法。
- 1917年,Vernam密码由美国AT&T公司的G. Vernam为电报通信设计的非常简单方便的密码。它奠定了序列密码的基础。
- 1918年,W. F. Friedman的论文《重合指数及其在密码学中的应用》(The Index of Coincidence and Its Applications in Cryptography),给出了多表代换密码的破译方法,是1949年之前最重要的密码文献。
- 古典密码时期密码技术仅是一门文字变换艺术,其研究和应用远没有形成一门科学,最多只能称其为密码术。
1.4.2 近代密码时期
- 转轮密码机(Rotor)的出现是密码学发展的重要标志之一。
- 第二次世界大战是人工加密时代转变为机械加密时代的转折点。转轮密码机的大量使用极大提高了加解密速度,同时抗攻击性能有很大的提高,是密码学发展史上的一个里程碑。同时,密码分析最伟大的成功发生在二次大战期间,波兰人和英国人破译了Enigma密码,美国人攻破了日本的RED、ORANGE和PURPLE密码,对盟军在二次大战中获胜起到了关键性作用。
- 近代密码时期可以看作是科学密码学的前夜,这阶段的密码技术可以说是一种艺术,是一种技巧和经验的综合体,但还不是一种科学,密码专家常常是凭直觉和信念来进行密码设计和分析,而不是推理和证明。因此,也有学者将古典、近代密码时期划分为一个阶段。
1.4.3 现代密码时期
- 1949年香农在发表《保密系统的通信理论》(Communication Theory of Secrecy Systems),用概率和统计等科学工具研究加密系统,为密码学奠定了坚实的理论基础,从此密码学从艺术变为科学。
- 1976年,W. Diffie和M. Hellman在《密码学的新方向》一文中提出公钥密码密码体制。是密码学发展史上最伟大的一次革命,是现代密码学诞生的标志。
- 香农的工作是现代密码学的"理论基础",而Diffie-Hellman的工作则是现代密码学的"实践开端"!
- 1984年,S. Goldwasser与S. Micali提出了概率公钥密码系统的概念,并提出Goldwasser-Micali概率公钥密码系统。
- 1985年,N. Koblitz和V. Miller提出了椭圆曲线密码系统(Elliptic Curve Cryptography,ECC),实现了公钥密码体制在效率上的重大突破。
- 1994年,Peter Shor发现了一种在量子计算机上多项式时间运行的大整数因子分解算法,这意味着一旦人们能研制出量子计算机,则RSA密码体制将不再安全。
- 1996年在Crypto会议上,布朗大学的Hoffstein、Pipher、Silverman三位数学家提出了NTRU(Number Theory Research Unit)公开密钥算法,是一种基于格的快速公开密钥体制。
1.5 密码分析(重要)
- 密码分析:在信息的传输和处理过程中,非授权的敌手通过各种方法(如搭线窃听、电磁窃听、声音窃听等)来截获密文,希望从中获取原来的明文。

密码分析的前提
- Kerckhoffs假设:假定密码分析者和敌手知道所使用的密码系统。即密码体制的安全性仅依赖于对密钥的保密,而不应依赖于算法的保密。
- 一切秘密皆蕴含在密钥中!
- 密码分析的目标:恢复合法密文、恢复密钥。
密码分析的分类
- 被动攻击:敌手只是采取窃听的方法。可以用于获取消息的内容或者是进行业务流量分析,破坏消息的保密性。
- 主动攻击:敌手采取删除、修改、插入、重放等方法向系统注入消息,破坏消息的完整性、认证性和不可否认性。
1.5.1 密码体制的攻击方法
- 密码分析者(敌手)攻击密码体制的方法:
- 穷举攻击:通过试遍所有的密钥来进行破译。对抗方法:可增大密钥的数量。
- 统计分析攻击:通过分析密文和明文的统计规律来破译。对抗方法:设法使明文和密文的统计规律不一样。
- 数学分析攻击:针对加密变换的数学基础,通过数学求解设法找到解密变换。对抗方法:选用具有坚实的数学基础和足够复杂的加密算法。
根据敌手可以利用的数据资源,可将攻击分为以下六种(攻击能力越来越强):
- 唯密文攻击(Ciphertext Only Attack):敌方只有密文,没有明文。
- 已知明文攻击(Known Plaintext Attack):敌方有对应的明文和密文对。
- 选择明文攻击(Chosen Plaintext Attack):敌方可以选择明文,并得到对应的密文。
- 适应性选择明文攻击(Adaptive Chosen Plaintext Attack):敌方可以根据之前的反馈继续选择明文。
- 选择密文攻击(Chosen Ciphertext Attack):敌方可以选择特定的密文并要求解密,以获得明文。
- 适应性选择密文攻击(Adaptive Chosen Ciphertext Attack):敌方可以在前面的基础上继续选择密文,并根据之前的反馈调整分析。
- 最终的目的是找到密钥或者获得明文的相关信息!
| 攻击类型 | 攻击者拥有的资源/黑盒 | 核心能力 | 攻击强度 |
|---|---|---|---|
| 1. 唯密文攻击 | 仅一堆密文 | 被动统计分析 | 最弱 |
| 2. 已知明文攻击 | 一些固定的明文-密文对 | 分析已知输入输出关系 | 较弱 |
| 3. 选择明文攻击 | 加密黑盒(可批量查询) | 主动选择输入进行探测 | 较强 |
| 4. 适应性选择明文攻击 | 加密黑盒(可交互式查询) | 根据结果调整下一步探测 | 强 |
| 5. 选择密文攻击 | 解密黑盒(可批量查询) | 主动探测解密行为 | 强 |
| 6. 适应性选择密文攻击 | 解密黑盒(可交互式查询) | 根据结果调整下一步解密探测 | 最强 |
1.5.2 唯密文攻击
- 密码分析者(敌手)仅知道一些密文。
- 最困难,一般是穷搜索,对截获密文用所有可能的密钥去尝试。
- 唯密文攻击敌手知道的信息量最少,最易抵抗。
- 只要有足够的计算时间和存储容量,原则上可成功,但在实际上一种能保证安全要求的实用密码算法,都会设计成这一攻击方法在实际上不可行。
1.5.3 已知明文攻击
- 密码分析者(敌手)知道一些明文和相应的密文。
- 在很多情况下,敌手可能有更多的信息,也许能够截获一个或多个明文及其对应的密文,或消息中将出现某种明文格式,敌手也许能从已知的明文被变换成密文的方式得到密钥。
1.5.4 选择明文攻击
- 密码分析者(敌手)可以精心选择一些明文,并得到相应的密文。
- 如果攻击者能在加密系统中插入自己选择的明文消息,则通过该明文消息对应的密文有可能确定出密钥的结构。
1.5.5 适应性选择明文攻击
- 密码分析者(敌手)不仅可以选择明文,还可以根据这些明文的加密结果来修改自己的选择。选择的明文之间可能存在一定的关系。
- 适应性选择明文攻击比选择明文攻击的攻击强度更高。
1.5.6 选择密文攻击
- 密码分析者(敌手)可以选择一些密文,并得到相应的明文 。选择的密文可以与要破解的密文相关。
- 攻击者利用解密算法,对自己所选的密文解密出相应的明文,有可能确定出密钥信息。
1.5.7 适应性选择密文攻击
- 密码分析者(敌手)不仅可以选择密文,还可以根据这些密文的解密结果来修改自己的选择。
- 选择的密文之间可能存在一定的关系。
- 适应性选择密文攻击的攻击强度最高。
1.5.8 6种攻击方式的核心区别
- 攻击者拥有的能力不同。唯密文攻击中,
- 攻击者不拥有任何预言机(Oracle,谕示机),即任何可以"回答"攻击者构造的"询问"的机器,只能就现成拥有的一些信息开展分析和攻击。
- 选择明文攻击和自适应选择明文攻击的攻击者拥有加密预言机,该机器会"回答"攻击者构造的"询问"明文,给出相应的密文。
- 在选择密文攻击和自适应选择密文攻击中,攻击者拥有解密预言机,该机器会"回答"攻击者构造的"询问"密文,给出相应的明文。
1.6 密码体制的评估模型
对于一个密码体制,可以用三种评估模型对其进行评价:无条件安全性(Unconditional Security)、计算安全性(Computational Security)、可证明安全性(Provable Security)。
- 无条件安全性(Unconditional Security):如果一个具有无限计算资源的敌手都不能破译一个密码体制,则称该密码体制是无条件安全的。一次一密方法在唯密文攻击下可以达到无条件安全性。高昂的密钥分配成本使得一次一密方法在现代通信系统中是不实用的。
- 一次一密指每次加密一个消息的时候都会使用不同的密钥。
-
计算安全性(Computational Security):如果使用最好的算法来破译一个密码体制所需要的计算代价远远超出敌手的计算资源,则称这个密码体制是计算安全的。如,敌手希望通过穷举攻击来破译密钥为128位的AES算法,敌手需要试遍整个大小为2128的密钥空间,但目前敌手的计算能力根本无法完成试遍整个密钥空间,AES在穷举攻击的情况下是计算安全的。
-
可证明安全性(Provable Security):如果一个密码体制的安全性可以规约到某一个数学问题,且这个数学问题是难解的,则称这个密码体制是可证明安全的。如果一个敌手可以攻破RSA加密算法,我们则可以构造一个新算法,这个新算法能够求解大整数分解问题。然而,目前大整数分解还没有有效的求解方法,则敌手不可能攻破RSA加密算法。这种证明方法实际上是数学上的反证法。
- 无条件安全性是一个理论的概念,实际应用的密码体制都不能满足该安全性要求。
- 实际应用的密码体制只要求满足如下准则:一个密钥可以重复使用;一个短密钥可以加密长明文 。满足这两个要求的密码体制不可能是无条件安全的,但可能达到计算安全性。