0%

symmetric-key-encryption

1. 加密模式

对称加密又分为两种加密模式: 分组加密和序列密码。

  • 分组密码,也叫块加密(block cipher),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。

  • 序列密码,也叫流加密(stream cipher),一次加密明文中的一个位。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
    解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。

1.1. 分组密码

将数据等长分组后进行加密. 如果最后一段长度不足, 需要填充.

1.1.1. ECB

Electronic Code Book, 电码本模式
需要密钥 key
在将数据分组后, 每一段通过 key 进行分组加密.

特点:

  • 可并行
  • 不能隐藏明文的模式: 重复相同的明文段会得出相同的密文, 可以通过观察密文规律作为线索破解密码或操纵密文.

1.1.2. CBC

Cipher Block Chaining, 密文分组链接方式
需要密钥 key 及 初始向量 IV
在将数据分组后, 每一段的明文与前一段的密文进行异或后, 再通过 key 进行加密.
第一段明文与初始向量异或.

特点:

  • 只能串行
  • 无法通过密文得出明文规律

1.1.3. PCBC

Propagating cipher-block chaining, 填充密码块链接模式
类似于 CBC, 差别在于, 加密时, 除了需要每一段的明文与前一段的密文之外, 前一段的明文也需要参与异或.

1.2. 序列密码

数据不需要分成固定长度, 也不需要填充

1.2.1. CFB

Cipher feedback, 密文反馈模式
在将数据分组后, 每一段的明文与 (前一段的密文再用 key 加密) 异或, 算出密文

1.2.2. OFB

Output feedback, 输出反馈模式

1.2.3. CTR

Counter mode,计数器模式

特点:

硬件效率:允许同时处理多块明文 / 密文。

  • 软件效率:允许并行计算,可以很好地利用 CPU 流水等并行技术。
  • 预处理:算法和加密盒的输出不依靠明文和密文的输入,因此如果有足够的保证安全的存储器,加密算法将仅仅是一系列异或运算,这将极大地提高吞吐量。
  • 随机访问:第 i 块密文的解密不依赖于第 i-1 块密文,提供很高的随机访问能力。
  • 可证明的安全性:能够证明 CTR 至少和其他模式一样安全(CBC, CFB, OFB, …)
  • 简单性:与其它模式不同,CTR模式仅要求实现加密算法,但不要求实现解密算法。对于 AES 等加/解密本质上不同的算法来说,这种简化是巨大的。
  • 无填充,可以高效地作为流式加密使用。

1.2.4. GCM

Galois/Counter Mode

在之前的加密算法中都没有考虑消息完整性校验, GCM 是基于 GMAC 和 CTR 模式的算法, 即提供了消息加密, 又提供了完整性校验.

GMAC 是基于伽罗华域(Galois Field,GF,有限域)乘法运算来计算消息的MAC值.
GMAC 是基于伽罗华域(Galois Field,GF,有限域)乘法运算来计算消息的MAC值.

2. Resource