对称加密算法中的扩散层(P盒)大盘点P盒作为大多数对称加密算法的线性部件其对密码算法的安全性起到了不可忽视的作用。P盒Permutation-box置换盒是分组密码算法中用于实现“扩散”的线性组件。它通过(比特或者字节)换位置换或矩阵运算将输入比特映射为输出比特将算法设计成明文每一比特的变化尽可能多地影响到输出密文比特序列的变化,以便隐蔽明文的统计特性从而抵抗线性密码分析和差分密码分析。也可以这么理解扩散性是指明文或密钥的细微变化会引起密文数据的巨大变化,也即密文数据的每一位依赖于明文和密钥的每一位从而隐藏明文和密文的结构化信息。这种变换形象地称为雪崩效应。P盒是实现香农提出的“扩散 (Diffusion)”原则的基本且关键的组件它与提供“混淆 (Confusion)”功能的S盒协同工作共同构成了现代分组密码的安全基石。正是S盒和P盒的有机配合才使得对称加密算法可以抵抗差分密码分析和线性密码分析。可以这么说S盒和P盒作为对称加密算法的两大基石二者相互结合缺一不可。没有P盒S盒的混淆效果会被局限在几个比特内没有S盒P盒的扩散很容易被逆向分析破解。本文将列举出常见或者比较有代表性的对称加密算法(分组加密算法序列密码算法密码杂凑算法认证加密算法和消息鉴别算法等)所使用到的P盒以及各项密码学指标以供大家查阅。关于P盒的密码学指标为(矩阵类型是否正交是否对合是否循环分支数等)。AES算法(分组加密算法美国)AES算法的扩散层为4X4的MDS矩阵具体如下图所示AES算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环是分支数5ARIA算法(分组加密算法韩国)ARIA算法的扩散层为16X16的MDBL矩阵具体如下图所示ARIA算法的扩散层各项密码学指标如下所示矩阵类型MDBL是否正交否是否对合是是否循环否分支数8SM4算法(分组加密算法中国)SM4算法的扩散层为基于32位字的循环异或运算具体如下图所示SM4算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环是分支数5Camellia算法(分组加密算法欧洲)Camellia算法的扩散层为8X8的MDBL矩阵具体如下图所示Camellia算法的扩散层各项密码学指标如下所示矩阵类型MDBL是否正交否是否对合否是否循环否分支数5Kuznyechik算法(分组加密算法俄罗斯)Kuznyechik算法的扩散层为16X16的MDS矩阵具体如下图所示Kuznyechik算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环否分支数17ZUC算法(序列密码算法中国)ZUC算法的扩散层为基于32位字的循环异或运算具体如下图所示ZUC算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环是分支数5ASCON算法(认证加密算法)ASCON算法的扩散层为基于64位字的循环异或运算具体如下图所示ASCON算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环是分支数未知(扩散性不好)CLEFIA算法(分组加密算法日本)CLEFIA算法的扩散层为4X4的MDS矩阵具体如下图所示CLEFIA算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交是是否对合是是否循环是分支数5PRESENT算法(分组加密算法)PRESENT算法的扩散层为基于64比特的比特置换具体如下图所示PRESENT算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数2MIBS算法(分组加密算法)MIBS算法的扩散层为8X8的MDBL矩阵具体如下图所示MIBS算法的扩散层各项密码学指标如下所示矩阵类型MDBL是否正交否是否对合否是否循环否分支数5ESF算法(分组加密算法中国)ESF算法的扩散层为基于32比特的比特置换具体如下图所示ESF算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数2PHOTON算法(密码杂凑算法)PHOTON算法的扩散层为MDS矩阵(共5个不同规模的版本)如下图所示PHOTON算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环否分支数6,7,8,9,7(按顺序)Serpent算法(分组加密算法美国)Serpent算法的扩散层为基于4个32位字的循环异或运算具体如下图所示Serpent算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数未知(扩散性很好)FASER算法(认证加密算法)FASER算法的扩散层为基于64位字的循环异或运算具体如下图所示FASER128FASER256FASER算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数未知(扩散性不好)SHA2算法(密码杂凑算法美国)SHA2算法的扩散层为基于32位字的循环异或运算具体如下图所示SHA2-256SHA2-512SHA2算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数未知(扩散性好)ITUbee算法(分组加密算法)ITUbee算法的扩散层为5X5的MDBL矩阵如下图所示ITUbee算法的扩散层各项密码学指标如下所示矩阵类型MDBL是否正交否是否对合否是否循环否分支数4Midori算法(分组加密算法)Midori算法的扩散层为4X4的几乎MDS矩阵如下图所示Midori算法的扩散层各项密码学指标如下所示矩阵类型几乎MDS和MDBL是否正交是是否对合是是否循环是分支数4HIGHT算法(分组加密算法)HIGHT算法的扩散层为基于8比特字节的循环异或运算具体如下图所示HIGHT算法的扩散层各项密码学指标如下所示矩阵类型否是否正交否是否对合否是否循环否分支数未知(扩散性好)FeW算法(分组加密算法)FeW算法的扩散层为基于16比特字的循环异或运算具体如下图所示FeW算法的扩散层各项密码学指标如下所示矩阵类型MDS是否正交否是否对合否是否循环是分支数5在对称密码学尤其是分组密码中扩散层Diffusion Layer的核心作用是将明文或密钥的微小变化扩散到整个密文中以隐藏统计关系。P盒Permutation Box是实现扩散层最经典的组件之一。以下是对P盒的全面总结1.本质定义P盒是一种线性置换。它将输入的n个比特或n个块按照预设的规则重新排列输出位置。本质上它只是“搬动”数据不改变数据本身的值。2.分类按处理宽度压缩P盒输出比特数 输入比特数。会导致信息丢失通常与S盒配合使用现已较少独立使用。扩张P盒输出比特数 输入比特数。通过重复某些比特来增加数据宽度常见于DES的初始扩张阶段。直线P盒输出比特数 输入比特数。最标准的P盒仅做位置重排。3.核心作用与S盒的配合在SPN代换-置换网络结构中P盒与S盒形成“非线性-线性”的互补S盒混淆负责局部非线性处理。将输入位映射到输出位通过混淆掩盖密钥和密文的关系。P盒扩散负责全局线性扩散。将S盒输出的每一位散布到多个不同的S盒输入中去。效果经过一轮S→P单比特输入变化会迅速影响到下一轮S盒的多个输入实现“雪崩效应”。4.设计准则与评价指标分支数衡量扩散层扩散能力的关键指标。对于线性映射yP(x)分支数定义为其中w()是汉明重量非零字节或比特数。分支数越大抗差分/线性密码分析能力越强。理想分支数可达n1n为字节数但只有MDS码最大距离可分码能达到如AES的列混合而非简单P盒。最优距离设计P盒时应确保任意两个不同输入间的差异在输出端产生尽可能多的活跃S盒。硬件/软件效率好的P盒应支持硬件上的简单布线无需逻辑门或用查表、移位、异或等操作高效实现。5.典型实例比特级P盒DES的IP置换、逆IP置换、扩张P盒以及轮函数中的P盒置换32位到32位通过固定置换表实现。字节级P盒AES中的ShiftRows行移位和MixColumns列混合组合。严格来说MixColumns是线性变换而非简单P盒ShiftRows是P盒字节重排。其他PRESENT密码的比特置换层可预计算为查表Threefish的word级循环移位。6.优缺点与局限优点实现快比特级P盒只需硬件连线或软件位运算无算术开销。扩散快配合活跃S盒一轮即可实现多维扩散。局限线性是双刃剑线性性质易被线性密码分析利用需配合足够多的非线性轮数。无混淆能力必须与S盒交替使用单独P盒无法构成安全密码。维度限制简单比特重排的分支数有限通常≤4要获得高分支数需采用MDS矩阵如AES的MixColumns不再是简单重排。7.与其他扩散组件的对比组件类型实现方式分支数潜力代表比特P盒线性重排2 (对bit)DES IP字节P盒线性重排2~4AES ShiftRowsMDS矩阵线性有限域乘/异或可达 n1AES MixColumns循环移位线性移位/取模低Threefish, RC5Feistel交换线性半交换1Feistel结构本身总结一句话P盒是用于实现全局线性扩散的置换组件通过位置重排将S盒输出的局部混淆扩散到整个状态是构建雪崩效应和抗密码分析强度的重要结构性组件——但其线性本质限制了单独使用的安全性必须与非线性S盒紧密结合。