SM3算法的各种密码分析方法全面盘点
对SM3算法的密码分析,目前主要分为针对算法数学结构的分析和针对具体实现的物理攻击两大类。虽然SM3在设计上增强了安全性,但对其实施缩减轮数攻击和侧信道攻击的研究一直在持续。
以下是当前主要的密码分析方法盘点:
🔬针对算法结构的数学分析
这类攻击旨在利用算法内部的数学弱点,理论上可以在不依赖物理信息的情况下破解密码。
- 原像攻击 (Preimage Attack):寻找一个消息,使其哈希值等于给定的目标值。目前最好的成果是针对43轮SM3的原像攻击,以及针对32轮的攻击。更早的研究也覆盖了28轮至32轮。
- 碰撞攻击 (Collision Attack):寻找两个不同的消息,使它们的哈希值相同。
- 经典碰撞:目前对完整64轮SM3算法尚未有公开的、有效的经典碰撞攻击方法。
- 伪碰撞 (Pseudo-collision):在可自由选择初始向量(IV)的条件下寻找碰撞。已知最好的成果是针对33轮SM3的伪碰撞攻击。
- 实现层碰撞:曾发现因实现错误(如编码问题)导致的“伪”碰撞,但这属于实现漏洞,并非算法本身的弱点。
- 飞来去器攻击 (Boomerang Attack):一种高级差分分析方法。研究人员已在SM3的压缩函数上构建了有效的区分器 (Distinguisher),目前最好的成果覆盖了34至37轮。
- 中间相遇攻击 (Meet-in-the-Middle, MITM):常用于原像攻击的一种核心技术,常与Biclique技术结合使用,以降低攻击复杂度。
- 零和区分器 (Zero-sum Distinguisher):一种用于检测算法是否具有随机性的方法,已有针对32轮SM3压缩函数的实际零和四方组 (zero-sum quartets) 被发现。
- 滑动-旋转分析 (Slide-Rotational Analysis):利用算法中轮常数之间的相关性进行的分析。
- 反弹攻击 (Rebound Attack):一种常用于分析基于替换-置换网络(SPN)结构哈希函数的区分器构造方法。
⚡️针对算法实现的物理攻击
这类攻击不直接攻击数学结构,而是通过物理途径(如功耗、电磁辐射、时间)获取密钥。
- 能量分析攻击 (Power Analysis):通过分析密码设备运行时的功耗变化来恢复密钥。
- 差分能量分析 (DPA):一种主流的能量分析手段,已有研究成功对基于SM3的动态令牌实施了DPA攻击。
- 相关功耗分析 (CPA):也在相关研究中被提及。
- 单条能量迹攻击 (Single-trace Attack):一种更强大的能量攻击,仅需一条功耗曲线即可尝试恢复密钥。
⚖️安全性现状总结
综合来看,SM3算法的安全性现状如下:
- 数学结构上相对安全:目前所有有效的攻击都针对缩减轮数(如32、37轮等)的SM3版本。对于完整的64轮SM3算法,目前没有公开的、可在有效时间内完成的原像或碰撞攻击方法。
- 实现层存在风险:SM3在具体实现时(如智能卡、动态令牌等设备),容易受到侧信道攻击的威胁。
- 核心安全目标依然稳固:SM3的抗碰撞性、抗原像性等核心安全指标,在当前公开的研究成果下被认为是安全的。