研究对象

仅仅是例子,可以广义化理解为在每轮之间根据分支数来设计的扩散的分组密码: alt

方法

将消息切分为 d 个分支的分组密码:

OP: 将第 r 轮的数据表示为 Xr={x0r,x1r,x2r...xdr}X^r=\{x_{0}^{r},x_{1}^{r},x_{2}^{r}...x_{d}^{r}\} 需要研究某一个分支的扩散性能需要从第 0 轮开始(或者解密,从最终轮开始)。研究某个分支 x0ix_{0}^{i} 的扩散性,就将其设为 1 ,其余分支设为 0 ,即 X0={0,0,1,0...0,0}X^0=\{0,0,1,0...0,0\},一个设计合理的分组密码会保证在某些轮之后达到雪崩效应,即一个分支会影响到全部分支。

Xr|X^r| 表示第 r 轮数据的汉明重量(单位=branch),按照以上步骤,明显在第 0 轮 X0=1|X^0| = 1 ,并且会在 r 轮之后 Xr=d|X^r| =d,这个状态叫做充分扩散(FD (Full Diffusion)),记录下限制第 i 个分支,达到 FD 所需要的轮数 rir_i

仅对某个分支做以上操作是远远不够的,需要对每个分支进行 OP 操作,然后会得到一个 rir_i 列表,取其中最大值即为整个密码系统达到 FD 所需的最大轮数,令 DRmax=max{ri}  0<=i<=dDR_{max} = max\{r_i\}\ \ 0<=i<=d

对于解密而言,也是相同的做法,只不过将该过程做逆。