密码分析游记

3月11日,在罗马对称密钥密码学春季学校上,我邀请大家试着证明以下等式。 如果F ⁣:F2nF2mF \colon \mathbf{F}_2^n \to \mathbf{F}_2^m是任意一个函数,那么它的差分转移矩阵和相关矩阵满足下面这个方程:

a,b(D(v,b),(u,a)F)2=2nmx,y(Cy+v,x+uFCy,xF)2.\sum_{a, b} \bigl(D^F_{(v, b), (u, a)}\bigr)^2 = 2^{n - m}\sum_{x, y} \bigl(C^F_{y + v, x + u} \,C^F_{y, x}\bigr)^2.

u=0u = 0v=0v = 0时, 由于D(0,b),(0,a)FD^F_{(0, b), (0, a)}表示一般差分近似的概率,这个方程就变成了Chabaud-Vaudenay关系式:

a,b(D(0,b),(0,a)F)2=2nmx,y(Cy,xF)4.\sum_{a, b} \bigl(D^F_{(0, b), (0, a)}\bigr)^2 = 2^{n - m}\sum_{x, y} \bigl(C^F_{y, x}\bigr)^4.

我今天想聊聊这两个等式的证明。


我们先把上面的等式推广一下。假设GGHH是有限交换群,而F ⁣:GHF \colon G \to H是任意函数。现在,上面的等式成为

a,b(D(χ,b),(ψ,a)F)2=GHρ,λ(Cλχ,ρψFCλ,ρF)2.\sum_{a, b} \bigl(D^F_{(\chi, b), (\psi, a)}\bigr)^2 = \frac{|G|}{|H|}\sum_{\rho, \lambda} \bigl(C^F_{\lambda \chi, \rho \psi} \,C^F_{\lambda, \rho}\bigr)^2.

这里,ψ\psiχ\chi是两个不可约群特征标。如果和之前一样G=F2nG = \mathbf{F}_2^nH=F2mH = \mathbf{F}_2^m,那么ψ ⁣:x(1)utx\psi \colon x \mapsto (-1)^{u^t x}χ ⁣:x(1)vtx\chi \colon x \mapsto (-1)^{v^t x}。 我在春季学校设想的证明是一个比较又长又繁琐的计算(好像当时没有人完全找到证明出来)。归根结底,应该用特征标的正交关系。可是,这种计算不太精辟。

对任意函数FF,我们可以再定义一个函数F ⁣:G×GH×HF' \colon G \times G \to H \times H

F(x,y)=(F(x),F(x+y)F(x)).F'(x, y) = (F(x), F(x + y) - F(x)).

根据这个定义,FF的差分转移矩阵就是DF=(FHid)TF(FGid)1D^F = (\mathscr{F}_H \otimes \mathrm{id}) T^{F'}(\mathscr{F}_G \otimes \mathrm{id})^{-1}。 这里,F\mathscr{F}是傅立叶变换,而且TFT^{F'}FF'的转移矩阵。 此外,FF'的相关矩阵是CF=(FHFH)TF(FGFG)1C^{F'} = (\mathscr{F}_H \otimes \mathscr{F}_H) T^{F'}(\mathscr{F}_G \otimes \mathscr{F}_G)^{-1}。也就是说,有下面的交换图:

差分密码分析基与线性密码分析基之间的基变换.

根据上面的交换图,我们有CF=(idFH)DF(idFG)1C^{F'} = (\mathrm{id} \otimes \mathscr{F}_H)\,D^{F}\,(\mathrm{id} \otimes \mathscr{F}_G)^{-1}。 相关矩阵的子块也有下面的等式:

C(χ,),(ψ,)F=FHD(χ,),(ψ,)FFG1.C^{F'}_{(\chi,\,\bullet), (\psi, \,\bullet)} = \mathscr{F}_H\,D^F_{(\chi,\,\bullet), (\psi, \,\bullet)}\,\mathscr{F}^{-1}_G.

相差一个标量因子的话,傅立叶变换是酉算子,所以它保持弗罗比尼乌斯范数:

HGC(χ,),(ψ,)Ffr2=D(χ,),(ψ,)Ffr2.\frac{|H|}{|G|}\,\bigl\|C^{F'}_{(\chi,\,\bullet), (\psi, \,\bullet)}\bigr\|_{\mathrm{fr}}^2 = \bigl\|D^F_{(\chi,\,\bullet), (\psi, \,\bullet)}\bigr\|_{\mathrm{fr}}^2.

实际上,可以把左侧的前置因子G/H|G|/|H|放在弗罗比尼乌斯范数的定义中。 就像我博士论文第三章里讨论的,C[G]\mathbb{C}[G]上的自然范数是xuxδx=Gxux2\big\|\sum_x u_x \,\delta_x\big\| = \sqrt{|G|\,\sum_{x} |u_x|^2}。 最后,根据线性密码分析,我们有

C(χ,λ),(ψ,ρ)F=Cλχ,ρψFCλ,ρF.C^{F'}_{(\chi,\lambda), (\psi, \rho)} = C^F_{\lambda \chi, \rho \psi} \,C^F_{\lambda, \rho}.

#差分密码分析 #线性密码分析 #傅立叶变换