什么是Block Cipher

依赖工作流(Mode of operation),加密定长明文的算法

常见的工作模式

ECB 模式

按照可加密的长度切分明文之后,直接进行加密
因为该模式可能泄露明文之间的关系,可被选择明文攻击不应该使用

CBC 模式

每次先把明文和一个随机生成的 做异或,然后放到函数 里面做加密,得到结果 使用 再输入 做加密得到下一段密文

优点

  • 加密是基于概率的
  • 如果函数 满足PRF 安全,那么CBC模式满足CPA安全,即豁免选择明文攻击

缺点

  • 整个加密流程是串行(sequential)的,并且无法进行并行化

OFB 模式

首先生成随机的串,经过 加密之后作为输入传给下一个 同时用作密钥给明文做异或操作。

优点

  • 密钥生成的部分是可以预处理的,所以理论上可以更快
  • 函数 不要求是可逆的(因为此时其实只需要正向运用 得到每一次的密文就可以了)
  • 如果函数 是满足 PRF 的,那么加密算法满足 PCA 安全

CTR 模式

首先生成一个串 ctr 然后依次使用 作为输入给 获得密钥对对应的明文进行加密

优点

  • 如果函数 是满足 PRF 的,那么加密算法满足 PCA 安全
  • 同样 不要求为可逆
  • 密钥生成部分不仅可以预处理,还可以做并行化

雪崩效应

我们希望如果输入发生一个微小的变化,那么每一位的输出都能够发生变化,这称之为 雪崩效应

如何理解雪崩效应:
可以从差分隐私保护的角度理解,如果变化不够大,可以通过差分攻击的方式获取更多信息

关于 confusion-diffusion 模式

  • 该模式一般会重复多轮的 confusion 的 diffusion
  • 输入会被拆分成若干个小块
  • 在每一轮中:
    • 每一个小块会被输入一个小的随机函数中进行混淆
    • 然后混淆的结果会在 diffusion 步骤中被混合到一起

Substitution-permutation network(SPN)

单轮SPN

在该模式下,每一轮包含一下步骤:

  • Key mixing: in each round, the input is first xor-ed with the current-round sub-key or (round key)
  • Substitution: after key mixing, each block i is inputted into a fixed, invertible “substitution function” (i.e. permutation) Si called S-box.
  • Permutation: the bits of all S-boxes’ outputs are permuted.
    在该模式下,整个加密过程可以被公开,只有输入的 key 需要加密传输
    单轮加密示意图
    单轮加密示意图

多轮SPN

多轮的本质改变就是上面的模式不止进行一轮,而是把上一轮的输出再贴上下一轮的key 然后做下一轮

如何保证雪崩效应

  • S盒在设计的时候,如果改变一位,输出至少改变两位
  • 每一轮的输出都会在混合后进入下一轮

注意事项

该模式下的 盒要求是可逆的

Feistel Network

该模式下的函数不要求是可逆的

每一轮使用的 是使用一个公开的 生成的即 其中的 是第i轮的密钥

加密方案


解密方案