ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何基于置换算法来设计对称加密算法

如何基于置换算法来设计对称加密算法 如何基于置换算法来设计对称加密算法一、置换算法的定义在密码学中“置换”通常有两层含义。狭义定义位置置换。给定一个有限符号序列置换算法按照固定规则重新排列符号的位置但不改变符号本身。例如把 64 个比特重新排成另一个顺序。数学上可写成双射π:01…n-1→01…n-1输出第i位等于输入第πi位或反过来。因为π是双射所以每个位置恰好被映射一次逆置换存在信息无损。广义定义有限集合上的双射。若集合为01n则置换是n比特串到自身的双射P:01n→01n每个输入对应唯一输出每个输出也恰好有一个原像。分组密码的加密函数Ek在固定密钥k下本质上就是01n上的一个置换解密则是其逆置换。因此置换与“代换”不同代换改变符号的值例如把字节0x3A换成0xC5置换改变符号的位置例如把第 1 位放到第 17 位。纯位置置换保持汉明重量、符号频率和整体统计分布但改变局部相关性。二、置换算法在对称加密算法中的地位1. Shannon的混淆与扩散Shannon提出强密码需要“混淆”和“扩散”。混淆使密钥与密文之间的关系复杂通常由非线性代换完成如 S 盒。扩散使明文或密钥的每一位影响密文的许多位通常由置换和线性混合完成。置换算法主要承担扩散功能。没有扩散S 盒逐字节独立工作局部变化无法传播到整个分组容易受到差分分析、线性分析和截断差分分析。2.分组密码中的核心组件现代分组密码常见结构是 SPN即“代换-置换网络”。代换层S 盒提供非线性置换层或线性扩散层重新排列或混合比特/字节使一个 S 盒的输出扩散到下一轮多个 S 盒。密钥加层引入密钥。典型例子DES 中有初始置换 IP、扩展置换 E、P 盒、压缩置换 PC-1/PC-2。AES 中没有传统比特 P 盒但有 ShiftRows 和 MixColumns它们共同完成字节级扩散。PRESENT、GIFT 等轻量级密码使用规则比特置换层如 PRESENT 的 pLayer 将比特i映射为16imod63使每个 S 盒输出扩散到下一轮不同 S 盒。3.分组密码本身是伪随机置换从理论上看一个安全分组密码的理想模型是伪随机置换即固定密钥后加密函数看起来像一个随机选择的置换。安全性定义通常要求攻击者不能区分Ek与随机置换也不能区分其逆Ek-1与随机逆置换。因此置换不仅是组件也是分组密码的理论抽象。Luby-Rackoff 还证明用伪随机函数通过 Feistel 结构多轮迭代可以构造伪随机置换。4.流密码、哈希与海绵结构在流密码、哈希函数和认证加密中置换也常作为核心。例如 Keccak/SHA-3 使用 Keccak-f[1600] 置换海绵结构通过反复应用置换吸收和挤出数据。这里置换必须是高效、可逆、扩散良好的双射。5.密钥编排与白化置换还用于密钥编排如 DES 的 PC-1、PC-2把密钥比特重新排列和选取使轮密钥之间相关性降低。白化操作中也常通过置换或线性混合增强密钥影响。总之置换在对称加密中不是单独的安全来源而是扩散和结构的基础。单独使用纯置换不安全因为它保持频率和汉明重量但缺少置换现代分组密码的扩散和雪崩效应会严重不足。三、密码学性质良好的置换算法应怎样设计设计良好的置换算法需要区分目标是设计纯位置置换/P 盒还是设计线性扩散层还是设计伪随机置换/分组密码整体。下面给出通用原则和具体方法。1.基本安全目标一个好的置换算法通常应满足双射与可逆性构造上保证每个输入有唯一输出逆置换存在且高效。强扩散性输入一位变化应影响输出多位多轮后接近雪崩效应。雪崩准则翻转输入任意一位输出每一位翻转概率约为1/2。比特独立准则输出位之间尽量独立不泄露输入位关系。低差分与线性相关性若置换是非线性 S 盒或伪随机置换应具有低差分均匀性和低线性偏差。大周期、无短循环作为置换其循环结构不能有大量短环或固定点避免迭代攻击和弱结构。实现友好低门数、低延迟、常数时间、硬件面积小、抗侧信道。2.纯位置置换/P 盒的设计纯位置置换是线性操作只重排比特或字节。设计重点在扩散。常用指标分支数BPminx≠0wtxwtPx分支数越大一个非零输入经过置换后非零位越多扩散越强。对线性扩散层MDS 矩阵可达到最优分支数n1。扩散距离任意输入位到输出位的影响路径长度。SAC/BIC检查输入翻转一位时输出位翻转概率是否接近1/2。设计方法规则置换如循环移位、比特矩阵、PRESENT pLayer便于硬件布线几乎零门成本。不规则置换通过搜索算法、SAT/SMT、MILP、遗传算法寻找扩散更好的位置映射。与 S 盒配合置换层应使每个 S 盒输出进入下一轮不同 S 盒最大化活跃 S 盒数量。宽轨迹策略扩散层分支数越高多轮后活跃 S 盒下界越大抗差分和线性分析能力越强。AES 的 ShiftRows MixColumns 是典型代表。注意纯比特置换保持汉明重量本身线性不能单独作为密码。它必须与非线性代换和密钥加交替迭代。3.线性扩散层的设计现代分组密码常把置换推广为线性扩散层如 GF(2) 或 GF(2^8) 上的矩阵乘法。设计要点使用MDS矩阵在n个符号上达到分支数n1如 AES MixColumns 在 4 字节上分支数为 5。可用 Reed-Solomon 码、Cauchy 矩阵、循环矩阵构造。循环矩阵便于硬件实现但需检查差分/线性分支数。二进制矩阵适合轻量级实现但分支数通常低于 MDS需要更多轮数补偿。扩散层应与 S 盒层对齐使每轮活跃 S 盒数最大。4.密钥控制置换与伪随机置换若目标是设计一个由密钥控制的置换族Pk或直接设计分组密码常用结构Feistel结构轮函数不必可逆整体可逆。Luby-Rackoff 证明 3 轮可构造 PRP4 轮可构造强 PRP。SPN结构S 盒 线性扩散 轮密钥加多轮迭代。AES 是典型。ARX结构模加、循环移位、异或。软件友好但安全分析较复杂。Benes网络/开关网络用密钥控制交换开关可实现任意置换适合设计密钥控制置换但需防止相关密钥攻击。海绵结构中的置换如 Keccak-f强调扩散、非线性、常数时间。设计时轮数必须足够使差分、线性、积分、代数、滑动、不变子空间、回旋等攻击的复杂度高于穷举。密钥编排应避免弱密钥和轮密钥简单关系。5. S盒作为置换的设计S盒本身是01n→01n的双射因此也是一种置换。AES S 盒设计是经典先取有限域GF28上的乘法逆x↦x-10↦0再作仿射变换。结果是差分均匀性为 4线性偏差低代数次数为 7能抵抗已知差分和线性攻击。设计 S 盒时应关注差分均匀性尽量小线性谱尽量平坦代数次数高无固定点、无反演点无隐藏陷门实现可常数时间。6.评估与验证设计完成后需从多个维度评估数学指标分支数、SAC、BIC、差分均匀性、线性偏差、代数次数、置换周期。密码分析差分、线性、截断差分、积分、代数、滑动、不变子空间、回旋、相关密钥。实现指标门数、面积、延迟、吞吐、功耗、常数时间性。可证明安全活跃 S 盒下界、宽轨迹策略、PRP/PRF 归约。总结置换算法是有限集合上的双射在对称加密中主要承担扩散功能。现代分组密码中它既是 SPN 的线性扩散层也是分组密码整体的理论模型——伪随机置换。好的置换设计不能孤立追求“排列复杂”而应与非线性 S 盒、密钥加和多轮迭代配合纯位置置换要优化分支数、雪崩和活跃 S 盒线性扩散层要用 MDS 或高分支数矩阵伪随机置换要用足够轮数和抗分析结构S 盒型置换要追求低差分、低线性、高代数次数。最终目标是在安全性、可证明性、实现效率和抗侧信道之间取得平衡。
返回列表