> For the complete documentation index, see [llms.txt](https://dizzzzy.gitbook.io/notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dizzzzy.gitbook.io/notebook/course/crypto-and-application-1.md).

# Crypto and application-1

密码技术及应用

## CH1 密码技术概述

#### 密码学学科特点&密码学研究的主要内容

是信息的机密性、完整性、鉴别和不可抵赖性等信息安全问题相关的一门学科

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FYB4WWLXcBpOGVtFpjzyv%2F0d7e1ab4-4ab9-47af-8c7b-7d8f4107e4ac.png?alt=media&amp;token=159d4f08-ecec-4fdd-9e1e-48ad0913c045" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FgkabsF61Ux43Zf42ukKq%2Fimage.png?alt=media&amp;token=307c84e4-e307-4d54-a273-ec94ccfd9e30" alt=""><figcaption></figcaption></figure></div>

#### 密码系统的安全条件

理论不可破译和实际不可破译

Kerckhoffs原则（柯克霍夫斯原则）：一切秘密寓于密钥之中

* **密码体制即使不是理论上不可破译的，也应该是实际不可破译的**
* **密码体制的泄露不应该给保密通信者带来麻烦**

**一个提供机密性服务的密码系统是实际可用的**，必须满足的基本要求：

①系统的保密性不依赖于对加密体制或算法的保密，而仅依赖于密钥的安全性。 “一切秘密寓于密钥之中”是密码系统设计的一个重要原则。

②满足实际安全性，使破译者取得密文后在有效时间和成本范围内，确定密钥或相应明文在计算上是不可行的。

③加密和解密算法应适用于明文空间、密钥空间中的所有元素。

④加密和解密算法能有效地计算，密码系统易于实现和使用。

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FAZz69PqpL3GqgyWZQWEY%2F3d25bcea-9a76-41a0-81c2-8034de1484b2.png?alt=media&amp;token=bba8bf87-649e-4b6f-96e9-0cf66cb488e8" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F09OAIgKJtFunbptGSaOg%2F4dd7dcb4fd65a74ace539e2f3f0e43e3.png?alt=media&amp;token=5453dda5-af95-4f5d-8459-fb1725c4f253" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FaMesQNCxSlv2EpyUww9o%2F3ed55115-8695-48b1-8967-e8370e8dc0d1.png?alt=media&amp;token=9bf63017-988a-45b5-898e-aa059399de77" alt="" width="563"><figcaption></figcaption></figure>

#### 两种保密通信模型

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FepNXqYZuglujqngc42EF%2F83e1b213-90bb-4a7e-b5e7-fcfd8a150b66.png?alt=media&amp;token=339ddef3-2e60-4c2e-955a-f912924c8366" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FMZXHb7O1Try624JJ9YJl%2Ffcd8ddc4-eac4-419f-8b16-9bcff22335e5.png?alt=media&amp;token=9b9d3a28-e2bd-40c8-b8da-ab2f5c55f3e7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FYiHRifmeLTG1lp6aW8Yj%2F266a2d91-626f-4524-9d66-219604c75505.png?alt=media&amp;token=28b7511e-671d-4c9a-b4b6-6d5132c6f851" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fqr5RMjtceZyAv7RqcZbU%2F270e1314-613c-45ca-997d-cf8c61d08636.png?alt=media&amp;token=87f85800-fcd3-44c4-a59f-4f814521d5ac" alt=""><figcaption></figcaption></figure>

#### 对密码系统的两种攻击类型：主动攻击与被动攻击

所谓的被动式攻击意指入侵者（非法）**取得信息资产的存取权限，但是并未对其内容进行窜改**。主要的攻击方式有以下两种：

1. **窃听**（Eavesdropping）：窃听是指入侵者针对档案或通信内容进行监控。最常见的例子是于视频中时常出现的电话监听与网络监听等等。
2. **通信分析**（Traffic Analysis）：流量分析是针对网络通信的流量、内容、以及行为等等进行分析，透过通信内容或者流量的分析可以获得目标网络可观的数据，如：服务器位址、通信模式等等。

所谓的主动式攻击意指入侵者**针对档案或通信内容进行伪造或修改**，可能为以下四种攻击型式之一或是采取混合方式进行：

1. **伪装**（Masquerade）：伪装是指攻击者欺骗认证系统，非法取用系统资源。例如利用社交工程法骗取，或者利用网络窃听的方式取得密码后登入系统。
2. **回放**（Replay）：回放是指攻击者将从网络上截取的某些通信内容（如认证信息）重新发送，以欺骗服务器认证机制。常见的实例如早期Windows网络芳邻采用哈希方式（Hash Function）进行密码的加密，入侵者若能截取获得编码后的密码内容，可以利用重送一次的方式取得系统登入的授权。
3. **信息窜改**（Message Modification）：信息窜改指攻击者针对网络通信的内容进行删增或者更动。通信劫夺（Session Hijacking）利用TCP/ IP网络通信的弱点，抢夺合法使用者的通信频道，进而获得系统的操作权限，这种方式为信息窜改的一个实例。
4. **服务阻绝**（Denial of Service）：服务阻绝大概是大家最耳熟能详的攻击方式，攻击者透过各种可能的方法（ICMP flooding、SYN Flooding、Mail Bomb）等等方式使得使用者与管理者无法取得系统资源及服务。

#### 密码分析攻击的主要类型：

根据密码分析者对明文、密文等数据资源的掌握程度可以分为四类分析攻击：

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FN06gMBNnZxK89vwcxOek%2Fdafa59e3-785a-4b7c-aec2-2c8e8da2cccf.png?alt=media&amp;token=a09f7ac2-8b95-40c3-903d-48fec2393e8d" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FgwQamnfFXIzMMjFFrYmX%2Fa1a30d1e-0896-4f97-be39-41e3d2d3f1fa.png?alt=media&amp;token=ed12547b-193d-4fae-bcbf-c1f6d39c1bd2" alt=""><figcaption></figcaption></figure></div>

#### 密码算法的分类

* 根据密码算法功能分类

  <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FR5R1uHqCYbxGQjLEaqTh%2F6bca2538-6929-40b5-b235-ce7e7a96862e.png?alt=media&amp;token=be398952-84ec-4b9a-bb4c-fbedf19624bc" alt=""><figcaption></figcaption></figure>
* 根据密码算法密钥数量

  <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FM7P9vCoguIj9eJ2am68e%2F59b9cbc7-1807-44a6-9abc-057cb7807255.png?alt=media&amp;token=6908c8ce-cd39-4e41-bcc1-af95befe2e2e" alt=""><figcaption></figcaption></figure>
* &#x20;根据对明文信息的处理方式

  <div data-full-width="true"><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FH75AsMiTOKmUEbqamdaB%2F3f085091-74ee-4610-9a5e-78d6f38c6e38.png?alt=media&amp;token=33531c6b-8852-4418-b316-bda406a16182" alt=""><figcaption></figcaption></figure></div>

  <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FFbbUIR8C94E9mcdBv6pa%2F290f726a-1391-42b8-8b7d-d635b08102bc.png?alt=media&amp;token=303509d5-e46e-4cd8-a595-d38d17b1a07f" alt=""><figcaption></figcaption></figure>
* 其他分类方式

  <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Ff4Yfwo0xNMxSWGlD9oey%2F3cb84ff9-6ebe-4ed7-ba7e-1462a6ffd3f0.png?alt=media&amp;token=1a3f8a22-221e-4f96-9382-08298995ce55" alt=""><figcaption></figcaption></figure>

#### 确定性和非确定性密码算法

**确定性密码**：在给定**相同的密钥和相同的明文**时，算法每次运行都会产生**完全相同的密文**，整个过程不引入随机因素

<p align="center"><span class="math">C = Enc(K, M)</span></p>

**（1）无随机性：**&#x7B97;法不使用随机数或随机填充，输出结果完全由输入决定。

**（2）可重复性强：**&#x540C;一输入在任何环境下加密结果一致，便于调试、测试和结果验证。

**（3）结构简单，实现成本低：**&#x65E0;需安全随机数生成器（CSPRNG），实现复杂度相对较低。

**（4）安全性依赖密钥而非随机性：**&#x5728;现代安全模型下，其安全性通常较弱，容易泄露明文模式，

* **明文模式泄露**：相同明文 → 相同密文
* **易受字典攻击、频率分析攻击**
* **通常不满足 IND-CPA（选择明文攻击下的不可区分性）**

例如：（1）古典密码（凯撒密码、维吉尼亚密码）（2）分组密码的 ECB 模式（如 AES-ECB）（3）确定性哈希（在固定输入下输出固定）

非确定性密码算法（**概率密码算法）：概率密码算法**在加密过程中引入**随机性**，即使在使用相同密钥和相同明文的情况下，不同加密过程也可能产生**不同的密文：**

$$
C=Enc(K,M;r)
$$

引入随机性（Nonce / IV / Salt）；安全性更高，但实现更复杂；**满足现代安全定义，**&#x901A;常可满足：IND-CPA，在认证加密中甚至满足 IND-CCA

* 防止重放分析
* 防止字典攻击
* 防止流量模式泄露
* 可抵御大多数已知的被动攻击模型

例如：（1）RSA-OAEP（概率公钥加密）（2）ElGamal 加密（3）AES-CBC（使用随机 IV）（4）带随机 salt 的密码哈希（如 bcrypt、scrypt）

#### 对称密码体制和非对称密码体制

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fjx72m0g9xlzn5ZukawJT%2F24e2ee22-eaf7-46bc-b2ce-9b91f83bdf2f.png?alt=media&amp;token=c824268a-a42b-45e4-b01d-f77e1b23beaf" alt=""><figcaption></figcaption></figure>

#### 针对不同功能密码算法的攻击目标

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F9OfpGHOODyAVVUztGs6C%2F537bdfdd-c4ba-432c-897e-fe36527550cc.png?alt=media&amp;token=27a22905-fbb8-466e-bf31-f745d7066280" alt=""><figcaption></figcaption></figure>

| 密码功能      | 核心安全目标    | 攻击目标             |
| --------- | --------- | ---------------- |
| 对称/公钥加密   | 机密性       | 明文恢复 / 密钥恢复 / 区分 |
| MAC       | 完整性       | 伪造合法 MAC         |
| 哈希函数      | 抗碰撞 / 抗原像 | 原像 / 二次原像 / 碰撞   |
| 数字签名      | 不可否认      | 伪造签名             |
| 密钥交换      | 安全建密      | 会话密钥恢复 / MITM    |
| PRG / PRF | 不可区分      | 区分真随机            |

## CH1-2 古典密码

#### 替换密码和置换密码

替换密码：

**（1）单表替换密码（Monoalphabetic）**

* 同一个明文字母始终被替换为同一个密文字母
* 例如：凯撒密码 $$c=(p+k) mod 26，k=3$$

**（2）多表替换密码（Polyalphabetic）**

* 同一明文字母在不同位置可能被替换为不同密文字母
* 例如：维吉尼亚密码

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F1IVXFT4a9WqKGampDq2R%2F31c58336-f702-4fe0-b232-039aaa9b53fb.png?alt=media&amp;token=d9124679-be54-4dac-aa9a-a2a5e3433e8d" alt="" width="563"><figcaption></figcaption></figure>

<div data-full-width="true"><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FL6R9pCECD77UrLdxizNz%2Ffa4b8085-ebd4-40ba-a0b9-01e2e77a9dd1.png?alt=media&amp;token=1e34e861-e766-4e36-8fbd-195b445080ad" alt="" width="563"><figcaption></figcaption></figure></div>

置换密码：

* 栅栏密码（Rail Fence Cipher）
* 列置换密码（Columnar Transposition Cipher）

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F5xk8k2Ea1j32R2s3Lm8x%2Fa8af2de8-dc86-4056-b289-731c155f0797.png?alt=media&amp;token=8960a954-fc53-4b31-ac25-ca9e6304d4d2" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FqfA5ASVaehLxgaj5Y7OQ%2Fe1794591-cca7-4ed6-9c27-857aeb210200.png?alt=media&amp;token=bad09570-5101-4dde-997f-a1738cb56d84" alt="" width="563"><figcaption></figcaption></figure>

| 对比维度    | 替换密码   | 置换密码 |
| ------- | ------ | ---- |
| 操作对象    | 符号     | 位置   |
| 是否改变字符  | 是      | 否    |
| 是否改变顺序  | 否      | 是    |
| 是否保持频率  | 是（单表）  | 是    |
| 抗统计攻击能力 | 弱      | 弱    |
| 密钥本质    | 映射（双射） | 排列   |

现代分组密码并不单独使用其中之一，而是通过**反复组合**：

* **替换（Substitution）** → 提供混淆（Confusion）
* **置换（Permutation）** → 提供扩散（Diffusion）

这正是 **Shannon 提出的“混淆与扩散原则”**，也是 SPN（Substitution–Permutation Network）结构的理论基础。

#### 凯撒密码、仿射密码、单表替换密码、多表替换密码的概念与特点

* 凯撒密码（k=3时的一般单表替代密码）
  * $$\mathrm{E}=\left{E: Z\_{26} \rightarrow Z\_{26}, E\_{\mathrm{k}}(m)=m+k(\bmod 26) \mid m \in M, k \in K\right}$$
  * $$\mathrm{D}=\left{D: Z\_{26} \rightarrow Z\_{26}, D\_{\mathrm{k}}(m)=c-k(\bmod 26) \mid c \in C, k \in K\right}$$
  * 密钥空间极小（仅 25 种有效密钥）
  * 完全保持明文字母的频率分布
  * 极易被穷举攻击和频率分析破解
  * 仅具教学和历史意义
* 仿射密码（Affine Cipher）
  * $$c= E\_ {k}  (m)= k\_{1}m+ k\_ {2} (mod26)$$
  * $$m=D\_k\left(c\right)=k\_1^{-1}\left(c\text{一}k\_2\right)\left(\mathrm{mod\~}26\right)$$
  * 密钥空间（ $$K={(k\_1,k\_2)|k\_1,k\_2\in Z\_{26},\gcd(k\_1,26){=}1}$$）比凯撒密码大，但仍有限
  * 保持明文字母频率分布
  * 易受已知明文攻击与频率分析
  * 线性结构明显，安全性较弱
* 单表替换密码
  * 整个加密过程中使用**同一张固定的替换表**，将每个明文字母替换为唯一的密文字母
  * 密钥空间为 26!，理论上很大
  * 明文字母与密文字母存在固定一一对应关系
  * 严格保持字母频率和统计特征
  * 在自然语言下可被频率分析、模式分析破解
* 多表替换密码
  * 多表替换密码在加密过程中**周期性或非周期性地切换多张替换表**，使同一明文字母在不同位置可能映射为不同密文字母
  * 显著削弱单一字母频率特征
  * 抗频率分析能力强于单表替换密码
  * 安全性依赖密钥长度与使用方式
  * 仍可通过 Kasiski 检验、Friedman 检验等方法破解

#### 维吉利亚(Vigenère)、 Playfair算法计算方法和特性

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FbgpWeNUMPDoSYxSpOg0e%2Fb4fb3fa1-71e0-4ffc-a561-1863131dae37.png?alt=media&amp;token=6f5e8c78-6521-4775-8b16-4738403bfed0" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FkiZX2fJ3NejLe06B2YZ0%2Fbd6fe8e2-7e8f-4e7b-9dd7-7a7e4b078403.png?alt=media&amp;token=82924fbe-3d4a-4bd9-bf78-b3dfb960dca0" alt="" width="563"><figcaption></figcaption></figure>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F3NEghEYUWYr5g1996Xzw%2F2b48eb49-3794-4798-a9be-6a70d6812125.png?alt=media&amp;token=d979eb4c-9c49-4af6-ab5a-c0dcb8278559" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FUX1Wc6RcCEOyb009G7ky%2F72ebe9e1-cee0-418d-8d97-9007420b60e3.png?alt=media&amp;token=4ed02fa4-3b89-448c-806c-531e21831d71" alt=""><figcaption></figcaption></figure></div>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FL8pLflYN3GM2l9VcsEuO%2F74c8a284-dad9-405a-b9a2-ee5046672165.png?alt=media&amp;token=2d115c0f-0349-4d1a-aacd-3fbf0261aabf" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FEDwPe3j8JIoxFLHerLkD%2F27d736b2-a54b-4a2d-bc08-a0353ece32eb.png?alt=media&amp;token=e33bcb9e-32f4-42db-95ae-003c6696230a" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FZBMz1OXGS1UVaGpErT0k%2F5a116aa8-deec-4708-9bde-8d605e2880e1.png?alt=media&amp;token=d94f32f6-c369-425a-9fd6-5f1e63c6dfd6" alt="" width="563"><figcaption></figcaption></figure>

#### Hill密码的特性与计算方法

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FEGY8YsphtjuYXI7felMO%2F1ed8b17d-4cab-4490-a8c1-7e9d53cb2575.png?alt=media&amp;token=79b1ef10-7cf9-4f69-8c73-bc46fd59182d" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fv3AkHM0xdzQEWUC3b4oj%2Fa1b64adc-12d9-4bde-9d17-4517db713cb6.png?alt=media&amp;token=c8b073b1-10dd-4f72-828f-1428ad967b28" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fc724bHrBT4Kk3wtmiuQe%2F4e767151-523f-4114-b4f9-f568dcd717bb.png?alt=media&amp;token=31fb7882-8598-45bf-a799-f632f4a52b21" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FpG3qgGSR0XRPmW3H0O8q%2F378442fa-0234-44b9-81f1-3211502aa0ef.png?alt=media&amp;token=7006a343-cf4b-457f-b44e-a5648eb4fe7c" alt="" width="563"><figcaption></figcaption></figure>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F6eJdX7LNBHGuvZuF243W%2F3cf610ed-5ea3-483a-9b38-194488988fb3.png?alt=media&amp;token=c8510f7d-096e-4a49-b9ad-28ec6ca98614" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FqYFxyeiMBTs7nGWVuiGQ%2F1aff6f7d-d941-4c87-870e-88361110eee4.png?alt=media&amp;token=dc0b0ef2-9841-4f7b-b46a-d9e0c9727d6d" alt=""><figcaption></figcaption></figure></div>

#### 转轮机密码、OTP等古典密码算法的原理与特点

**转轮机密码：**&#x8F6C;轮机密码是一类**机电式多表替换密码系统**，其核心思想是通过**多个可旋转的转轮（Rotor）构造一个动态变化的替换表**。

每个转轮本质上是一个固定的单表替换，但随着每次按键操作，转轮发生转动，从而改变整体的替换关系。一个**随时间变化的多表替换密码；**&#x5178;型代表：**Enigma 密码机**。

工作机制

* 明文输入一个字母
* 信号依次通过多个转轮（正向替换）
* 经反射器（Reflector）反射
* 再反向通过转轮
* 输出密文字母
* 每加密一个字符，至少有一个转轮转动

主要特点

* 同一明文字母在不同位置会被映射为不同密文字母
* 具备较强的混淆能力，远强于传统多表替换密码
* 密钥空间较大（转轮选择、初始位置、插线板设置）
* 仍存在结构性弱点（如自反性、不映射为自身等）
* 可被利用操作失误和统计规律进行系统性破译

**一次一密** One-Time Pad, OTP

**基本原理：**&#x4E00;次一密是一种基于**模加或异或运算**的流加密体制，其核心思想是：**使用一段真正随机、与明文等长、且只使用一次的密钥进行加密。**

常见形式（以比特串为例）：

加密： $$c = p \oplus k$$

解密： $$p = c \oplus k$$

**理论安全性：**&#x4F;TP 在严格满足以下条件时，具备**信息论安全性（Perfect Secrecy）**：

1. 密钥完全随机
2. 密钥长度 ≥ 明文长度
3. 密钥只使用一次
4. 密钥绝对保密

这是**唯一被严格证明具有完全保密性的加密方案**（Shannon 定理）。

**主要特点**

* 在理论上不可破解（即使无限计算能力）
* 不泄露任何关于明文的统计信息
* 密钥管理成本极高
* 一旦密钥复用，安全性彻底失效
* 实际系统中难以大规模部署

## CH2 香农保密理论基础

#### 密码体制的数学模型

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FwpH9VyZLPHS7QZk1xarQ%2F84096244-33f8-4c59-a8ac-fe24e7b89638.png?alt=media&amp;token=37483bbe-3b11-4039-9f03-a04c37c39af7" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FRoow5hEWC6dHFllqZeR1%2F27974c17-c142-4c6e-9312-6388c5b970ce.png?alt=media&amp;token=6fcdf129-d6ad-4968-a88a-2639734ea812" alt=""><figcaption></figcaption></figure></div>

#### 熵的概念与熵的特性

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FIISUttAeIB1HkzbyMSpl%2F976b0a9b-c492-4ede-946b-f78d3f4f14ce.png?alt=media&amp;token=b49a3e0e-bf35-4e61-b28a-0f2b81a985bc" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fvp31oSMCKrIKhbantkMq%2F9d0cc579-8894-42ad-9143-6aa7894ab3e6.png?alt=media&amp;token=62e6dd40-36ea-4a3b-8be0-f9bd752f60a7" alt=""><figcaption></figcaption></figure></div>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FLDYr5sz0stdbBWyCzPyA%2F86db5e66-663f-4e81-8c9a-e2dca903887b.png?alt=media&amp;token=19184cf4-6e4c-4474-9412-4e5913adbf98" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FOuZfj7Xy0v79AL4YR8P5%2Fimage.png?alt=media&amp;token=cf548002-2306-42a9-bbe1-0d2283c7eed3" alt=""><figcaption></figcaption></figure></div>

#### 多余度和唯一解距离

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FOhNGE3IWE88SpGbImOB2%2F19df0ea7-371e-418a-a062-fd781bcbc532.png?alt=media&amp;token=52586ff0-9222-4d0b-9c3e-ca857100fab0" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F8ae0vYSm8Y9E3fpv9fae%2F6002c289-9e97-4f07-bf9d-2418c31ac505.png?alt=media&amp;token=d2404b18-0fd5-4867-bcee-94e7b1d2e07d" alt=""><figcaption></figcaption></figure></div>

多余度： $$\mathbf{d}=\log\_2|\mathbf{P}|-\mathbf{H}\_\mathrm{L}，另一种形式：d\_0=\frac{\log\_2\lvert P\rvert-H\_L}{\log\_2\lvert P\rvert}=1-\frac{H\_L}{\log\_2\lvert P\rvert}$$

唯一解距离： $$\mathbf{U\_d=H(K)/d}=\frac{H(K)}{d\_0\log\_2\lvert P\rvert}$$

当密码分析者所截获的密文字符数小于 $$U\_d$$时，存在多个可能的解（存在伪密钥），但当所截获的密文字符数大于 $$U\_d$$时，这种密码的破译问题理论上就存在唯一解。

**唯一解距离**表示了密码分析者必须处理的密文量的**理论下限，**&#x4F8B;如计算出密码的唯一解距离 $$U\_d=28$$,则至少要给出长度为28的密文串，唯一地破解该密码才有可能

#### 完全保密体制和理论保密体制

完全保密性（Perfect Secrecy ） ：对于密码分析者通过观察密文不能获得有关明文的任何信息。\
定义： $$对\forall m\in M,c\in C,有:P\_r(m|c)=P\_r(m)$$即**明文m的后验概率等于明文m的**\
**先验概率**，则该密码体制具有完全保密性。

密码体制的完全保密性是**针对唯密文攻击而言的**。一个完全保密密码体制并**不能保证它在已知明文攻击或选择明文攻击下也是安全的**。

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fz1fRuyZQJT1RrOak9Pbf%2Fecc2d41d-4914-4ee5-9215-e4154448c5b4.png?alt=media&amp;token=b83c454c-8aaa-40af-a0ff-5f6d4f9e392c" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FkQMTrFISXLyx5eNi5few%2F5f5b56b7-9439-4fb3-8e7d-84fcb387b132.png?alt=media&amp;token=ec276a2e-1554-4262-92a4-f232ca91ca7d" alt=""><figcaption></figcaption></figure></div>

理想保密性（Ideal Secrecy ）：\
定义：当一个密码体制的**唯一解距离** $$U\_d$$**趋向于无穷大**时，该密码体制就称为具有理想保密性。

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FVFPglYS5HDuNZvYIMvMr%2Ff7119247-a0a2-4633-bd7e-8cc1735dd844.png?alt=media&amp;token=c0c2cf9d-51ff-4920-9c6d-e1dc897e952d" alt="" width="563"><figcaption></figcaption></figure>

#### 扩散与扰乱原理&#xD;

扩散原理(diffusion)：尽量使得明文的每一位都影响密文中许多位的值\
扰乱原理(confusion)：使密文与明文、加密密钥之间的统计关系尽量复杂化，使破译者难以从密文的统计特性导出与密钥相关的信息

#### 乘积密码体制

对于幂等密码，有: $$对 m\in M,\forall k\_1,k\_2\in K,\exists k\_3\in K, 满足：E\_{k\_2}(E\_{k\_1}(m))=E\_{k\_3}(m)$$

**迭代密码体制必须使用非幂等密码体制。**

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FpFdmsCuzQzQPCEwQwkTy%2F0393ae9a-a272-4a62-b936-3a274d75a505.png?alt=media&amp;token=355e26f5-27c9-4b1b-8472-48e861c0c65f" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FiXslQXrnB73AJ7lu5eI1%2F1c99b68b-7244-4f11-b6b5-1adefb2074d8.png?alt=media&amp;token=e9bcf44d-d170-4dfa-98cd-8030c2ddec3f" alt=""><figcaption></figcaption></figure></div>

## CH-3 对称密码技术

#### 分组密码的设计原理和整体结构

分组密码是一种将明文分成固定长度的块，然后对每个块进行加密的密码算法。在**设计分组密码时，需要满足以下要求**：

1. **分组长度足够大**：为了提高安全性，分组长度应该足够大。当明文分组长度为n位时，至多需要2n个明文密文对就可完全破解密码。因此，分组长度的大小应该足够大，**防止攻击者通过收集不同的密文、明文对来进行穷举明文空间攻击**
2. **密钥空间足够大**：**防止攻击者穷举密钥空间的攻击**
3. **密码算法足够复杂**：分组密码的设计要求密码变换必须足够复杂，使攻击者**除了强行攻击（穷举）外，找不到其他便捷的数学破译方法**。这样可以有效防止攻击者通过分析密文得到有意义的明文。

分组密码的设计原理主要包括**数学规则、简单函数和非线性函数等运算**。

在整体结构上，分组密码通常包括**密钥调度、初始置换、多次轮函数迭代和最后的逆初始置换**等部分。其中，**轮函数**是分组密码的核心部分，由非线性函数构成，可以有效地防止攻击者通过分析密文得到明文。

分组密码的分析方法主要包括朴素密码分析、差分密码分析、线性密码分析和相关密钥密码分析等。这些方法都是通过分析密文和密钥之间的关系，尝试破解出明文和密钥。为了提高安全性，现代的分组密码算法通常采用多种分析方法的结合，以增加破解的难度。

密钥管理是分组密码应用中的重要环节。为了保证安全性，密钥应该在安全的环境中生成、存储和使用。同时，应该定期更换密钥，以降低密钥被破解的风险。此外，对于一些重要的数据加密场景，可以采用一些额外的安全措施，如使用硬件加密模块等来保护密钥的安全性。

分组密码的工作模式主要包括**电子密码本模式、密文链接模式和计数器模式**等。这些模式可以根据实际应用场景选择使用。在选择工作模式时，应该充分考虑安全性、效率和实现难度等因素。

分组密码的检测与评估：为了确保分组密码的安全性，需要对算法进行严格的检测和评估。评估指标主要包括算法的安全性、效率、实现难度和资源占用等方面。此外，还可以通过对比分析不同的分组密码算法来评估其优劣

#### 分组密码的两种基本结构SPN，Feistel、分组密码原理与概念

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FG6poBIMgZxdifbl2xTS3%2F113de309917114c7b80aad0668292949.png?alt=media&amp;token=02653c63-d021-4e36-a9c9-89b79ac68364" alt="" width="375"><figcaption></figcaption></figure>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FgO8BMPlAoAjVMywM9r0m%2F624431ab-4a31-4e0a-91bd-fe98bfe33f52.png?alt=media&amp;token=d42f7d4f-c670-4b19-92a6-60a5f77ddc64" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FXB9h34pchCcKmX4wyr50%2F891a008a-610e-49fb-8d33-16017b069e41.png?alt=media&amp;token=c675fe7e-9680-4ba5-bd8f-a7cf1ba4d9d1" alt=""><figcaption></figcaption></figure></div>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FxaG6JSsaZBQKP4IOzjwl%2Fa356f335-f179-4ee3-8b5a-12983e854046.png?alt=media&amp;token=d11167fa-fd3b-4ff1-8a22-b36575aed1e0" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FVcLVg73nOz2QB6jBdFdd%2F57589dad-04b1-4121-bf9d-a3561bc8b83c.png?alt=media&amp;token=d2cb925a-bf72-422a-a88d-5d37198b9427" alt=""><figcaption></figcaption></figure></div>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FtVDN7Qpti6YD3vGFuH69%2F321f45ac-9e23-4e7e-a0a0-4cd09e71f219.png?alt=media&amp;token=12f3c98f-0a9e-424a-97b6-51407006ec8c" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FRs36I5jAmDtDtYQOG3uW%2F814a11ed-5828-4fa2-b614-4bba2661f9ba.png?alt=media&amp;token=857b2a98-d789-49c9-ac85-2ae7c2335442" alt=""><figcaption></figcaption></figure></div>

#### 数据加密标准DES、三重DES, IDEA, AES，SM4等算法原理与基本特性

<table><thead><tr><th width="78.13334655761719">算法</th><th width="91.4666748046875">结构</th><th width="79.46670532226562">分组</th><th width="90.6666259765625">密钥长</th><th width="81.06671142578125">轮数</th><th>基本运算 </th><th>主要特点</th></tr></thead><tbody><tr><td><strong>DES</strong></td><td>Feistel </td><td>64 bit</td><td>56 bit（有效）</td><td>16 轮</td><td>置换、S 盒替换、异或与循环移位</td><td>结构经典，安全性不足，易受暴力破解</td></tr><tr><td><strong>3DES</strong></td><td>Feistel </td><td>64 bit</td><td>112 / 168 bit</td><td>48 轮</td><td>DES 运算重复（EDE/EEE）</td><td>提高安全性但效率低，逐步淘汰</td></tr><tr><td><strong>IDEA</strong></td><td>非 Feistel </td><td>64 bit</td><td>128 bit</td><td>8.5 轮</td><td>模加、模乘、异或</td><td>代数结构复杂，抗差分/线性分析</td></tr><tr><td><strong>AES</strong></td><td>SPN </td><td>128 bit</td><td>128 / 192 / 256 bit</td><td>10 / 12 / 14 轮</td><td>S 盒、行移位、列混合、轮密钥加</td><td>高效、安全、应用最广</td></tr><tr><td><strong>SM4</strong></td><td>Feistel 变种</td><td>128 bit</td><td>128 bit</td><td>32 轮</td><td>S 盒、线性变换、异或</td><td>国家商用密码，适合软硬件实现</td></tr></tbody></table>

DES：

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FrkOvPhBIiNDy0rhTMRDv%2F2f7f6436-17e1-498e-8a46-e3483a610abe.png?alt=media&amp;token=4bd2cabc-6163-4a11-85e2-9a7aef8f8b32" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FvFy9nucfaalP9TnH3cgH%2F17c3a0d4-3102-4289-b9a5-77bd5cd89dcd.png?alt=media&amp;token=fc25729b-1912-434a-8303-795d388ac985" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FSxznSiARM7yD7hwqgyRl%2Fe632e8fa-8c53-4cb9-b288-a2d7720a1815.png?alt=media&amp;token=4529af3e-3d25-4482-9bd3-d21a1e895a7d" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FoYsCamGUenkLSpuXwTKH%2F479801c0-4815-4b14-89b9-4957a6e8fd73.png?alt=media&amp;token=26b2f42a-aa7e-4491-a442-924b98b5397f" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FUx42FYZe0vQ9R84UDIvK%2Fcb4ff2ee-2323-4749-994f-f21c819c1261.png?alt=media&amp;token=d58bb14c-8c35-4787-9d2a-38bcaf5360ed" alt="" width="563"><figcaption></figcaption></figure>

<div><figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FvW8UJ9ritcchvSXa1qf7%2F55b643e9-5c7d-4f16-a911-79a9cf8c2517.png?alt=media&amp;token=c65b14dc-a4fb-4190-9b3e-dfe524685517" alt=""><figcaption></figcaption></figure> <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FNO7FnponYwPGzpL8lqnQ%2F84f13f4c-124a-41be-97fe-d8abbd95deca.png?alt=media&amp;token=b290543a-e86e-4a81-9d8f-349985e81412" alt=""><figcaption></figcaption></figure></div>

利用DES算法的互补对称性,利用选择明文进行穷举攻击时可将密钥的加密测试量**降低一半**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FGfu30M5bTyaEyuxY0M9B%2F87ca8321-ca83-4d3e-a8db-aae6b79243c4.png?alt=media&amp;token=38879e07-6b64-4714-a3f0-a3f1d0987eff" alt="" width="563"><figcaption></figcaption></figure>

#### 分组密码的操作方式及特点

美国国家标准和技术研究所（NIST）规定了四种标准的操作模式

* ECB：**独立加密每个块**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FfW5UwKIA7cZBg1y1KAGR%2F6ed4e88e-fd33-466b-a6ea-86bbab773f4a.png?alt=media&amp;token=b89a4955-1dbb-4c2a-adee-be821baa4302" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fcqbim0ilZd1YsnWWBepI%2Fdeb02349-80f4-4573-a063-5b7fe238d52c.png?alt=media&amp;token=fe0ff37e-8639-4171-8fda-1cc4fa263669" alt="" width="563"><figcaption></figcaption></figure>

* CBC：**每个块与前一个密文块异或**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FmS0cGpmEPaJgyXd37EMv%2F8e720f8a-fadc-4a90-b05b-93a21a5d5486.png?alt=media&amp;token=05bf9ee4-e531-4f14-bf80-c51037562149" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FkQjgxptylNLo40CyhAqf%2Faee3a530-cd0e-4d03-aac5-bd44b8bb30e2.png?alt=media&amp;token=790d3a83-2f32-497d-a6b0-8483e8bfed1d" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FiRbEganL6LPmlGiQttok%2Fac198d9f-61ed-41aa-a8bd-d4e917485aaf.png?alt=media&amp;token=6b06f083-7c7d-42cd-9b98-b89584ee038a" alt="" width="563"><figcaption></figcaption></figure>

* CFB：**将分组密码转换为流密码**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FJzvkNM5p36fT50PT6tQr%2Fimage.png?alt=media&amp;token=80f139b1-775a-49ef-968a-51fc300c71e7" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F9vrr7giMzoTgFcBuZwJY%2F27501202-5864-4a8b-aac4-1341d84d283a.png?alt=media&amp;token=5eed4551-dadb-493b-8144-1dc75cd3a218" alt="" width="563"><figcaption></figcaption></figure>

特点：

* 移位寄存器的的内容与明文整个以前的历史有关，同样需要一个初始向量（寄  存器初值）；
* 存在误码扩散（仍有自同步特性），加密效率不及CBC 模式（为什么？）；
* 将分组密码转换为流密码（序列密码），实现及时加密；
* 可用于用户鉴别。

{% hint style="info" %}
CFB 模式由于采用反馈结构，加解密过程中都必须顺序调用分组密码的**加密运算**，无法并行处理分组，也无法利用解密阶段的并行和硬件优化；而 CBC 模式在解密时可以并行执行、实现更高吞吐率，因此整体加密效率通常不如 CBC。
{% endhint %}

* OFB：**生成密钥流与明文异或**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F1PcJoiEsdsKEOgs6WXm3%2F191598b2-ce2f-44a4-87da-05b240616b59.png?alt=media&amp;token=54963db1-3696-413e-bca5-d11dd2aab187" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FvuKZ9oKdgrXUbrJJAJP0%2Fed091406-a131-4e22-b821-22c26502e210.png?alt=media&amp;token=b6996ea2-288a-4125-9c6f-e0d6ee51d5d6" alt="" width="563"><figcaption></figcaption></figure>

* **计数器模式（CTR）：用计数器生成密钥流**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FqFUTQ1SCvU6t6CBS14kC%2Fdd803f57-583a-4227-9f0b-9ff438773c13.png?alt=media&amp;token=68fd32ca-faf8-46ee-a46b-bb296965cca1" alt="" width="563"><figcaption></figcaption></figure>

* 特点：
  * 处理效率高，可进行并行处理，提高数据吞吐量；
  * 可提前进行预处理；
  * 具有随机访问特性，可随机对任意一个密文分组进    行解密处理，对该密文分组的处理与其他密文无关；
  * 实现简单，加、解密阶段都只涉及加密函数。    （这点与ECB和CBC模式不同）。
* **密文窃取模式CSM（Ciphertext Stealing Mode）**

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F1q1VeLcCMYiBYFS3qNU9%2F80b0dbed-7d4b-4585-b9dd-f7800202d6da.png?alt=media&amp;token=dd31e16d-f108-4116-a523-b3e5622d3995" alt="" width="375"><figcaption></figcaption></figure>

| 特性       | ECB | CBC   | CFB | OFB | CTR   |
| -------- | --- | ----- | --- | --- | ----- |
| **填充需求** | 需要  | 需要    | 不需要 | 不需要 | 不需要   |
| **并行加密** | 支持  | 不支持   | 不支持 | 不支持 | 支持    |
| **并行解密** | 支持  | 支持    | 不支持 | 支持  | 支持    |
| **错误传播** | 1块  | 后续所有块 | 8字节 | 无   | 无     |
| **IV要求** | 无   | 唯一    | 唯一  | 唯一  | 唯一计数器 |
| **安全等级** | 低   | 中     | 中   | 中   | 高     |
