AES 加密模式

■ 缩写说明 ■ 
    IN    - 输入向量
    OUT   - 输出向量(未用于和明文加密前)
    ENC   - 加密算法
    K     - 加密密钥
    P     - 明文
    C     - 密文
    XOR   - 异或
    <<    - 左移
    BSIZE - 算法的加密块尺寸
    COUNT - 计数器

  CBlockCipher支持如下加密模式:

  ------------------------------------------------------------------------------
  计数器(CTR)模式: IN(N) = ENC(K, COUNT++), C(N) = IN(N) XOR P(N);CTR 模式被
  广泛用于 ATM 网络安全和 IPSec应用中,相对于其它模式而言,CRT模式具有如下特点:

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

    ■ 软件效率:允许并行计算,可以很好地利用 CPU 流水等并行技术。

    ■ 预处理: 算法和加密盒的输出不依靠明文和密文的输入,因此如果有足够的保证安
       全的存储器,加密算法将仅仅是一系列异或运算,这将极大地提高吞吐量。

    ■ 随机访问:第 i 块密文的解密不依赖于第 i-1 块密文,提供很高的随机访问能力

    ■ 可证明的安全性:能够证明 CTR 至少和其他模式一样安全(CBC, CFB, OFB, ...)

    ■ 简单性:与其它模式不同,CTR模式仅要求实现加密算法,但不要求实现解密算法。
       对于 AES 等加/解密本质上不同的算法来说,这种简化是巨大的。

    ■ 无填充,可以高效地作为流式加密使用。

  ------------------------------------------------------------------------------
  密文块链接(CBC)模式:IN(N) = P(N) XOR C(N-1), C(N) = ENC(K, IN(N));在 CTR出
  现前广泛使用的块加密模式,用于安全的分组(迭代式)加密和认证。

  ------------------------------------------------------------------------------
  密文反馈 (CFB) 模式:  IN(N) = C(N-1) << (BSIZE-j),  C(N) = ENC(K, IN(N)) <<
  (BSIZE-j) XOR P(N). 其中 j 为每次加密的位数。CFB 模式与 CBC 模式原理相似,但一
  次仅处理 j 位数据,其余 BLOCKSIZE - j 位丢弃。由于以上性质,CFB 模式可以在不损
  失安全性的前提下,将块加密变为流式加密。但是该模式也是比较浪费的,因为在每轮加
  解密中都丢弃了大部分结果(j 通常为一字节(8 位),块加密算法中每块的尺寸通常为
  64、128 或 256 位不等)。

  ------------------------------------------------------------------------------
  输出反馈 (OFB) 模式:IN(N) = OUT(N-1) << (BSIZE-j),  C(N) = ENC(K, IN(N)) << 
  (BSIZE-j) XOR P(N), OUT(N) = ENC(K, IN(N)) << (BSIZE-j). 该模式与 CFB 模式基本
  相同,只不过本次输入是上次迭代中尚未与明文异或时的输出。 与 CFB 模式一样, OFB
  模式也可以作为流加密模式使用,除此之外,由于每次迭代的输入不是上次迭代的密文,
  从而保证了较强的容错能力, 即: 对一块(一字节)密文的传输错误不会影响到后继密
  文。但是,由于输入没有经过密文叠加使得其抗篡改攻击的能力较差,通常需要与消息验
  证算法或数字签名算法配套使用。OFB 通常用于噪音水平较高的通信连接以及一般的流式
  应用中。

  ------------------------------------------------------------------------------
  电码本(ECB)模式: IN(N) = P(N), C(N) = ENC(K, IN(N)). 最简单但最不安全的加密
  方式。每次迭代的输入都使用相同密钥进行无变换的直接加密。对于同样的明文片断,总
  会产生相同的,与之对应的密文段。抗重复统计和结构化分析的能力较差。一次性加密的
  最坏情况 (即:每次输入的明文都小于等于 BSIZE 时) 就是电码本模式。 仅在一次一
  密,或传出极少数据时考虑使用 ECB 模式。

  ------------------------------------------------------------------------------
  此外还支持两种变体:

  CBC_CTS:CBC的密文窃取模式,用于消除结尾填充(算法交换最后两个块),不推荐。

  CFB_FIPS:美国联邦信息处理标准 FIPS 800-38A 中要求的改进变体:要求完整的明文输
  入(非流模式)

你可能感兴趣的:(杂)