Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
随着信息安全的全球化发展,中国商用密码算法SM3已于2016年正式通过国际标准化组织认证,成为IEC 10118-2-12:2016(即ISO/IEC 10118-2-12:2016)标准。该标准由中国主导推动,标志着中国密码技术在国际舞台上取得了重要突破。截至2026年,该标准仍然有效,并在众多领域得到广泛应用。
IEC 10118-2-12:2016是ISO/IEC 10118“信息技术—安全技术—哈希函数”系列标准的第2-12部分,专门定义了SM3哈希函数。SM3是中国国家密码管理局发布的密码哈希算法标准,其国际标准化版本在技术内容上与国内标准(GB/T 32905-2016)保持一致。该标准适用于需要产生256比特哈希值的各类信息安全场景,包括:
SM3哈希函数的输入为任意长度不超过264比特的消息,输出固定长度为256比特的哈希值。算法基于Merkle-Damgård结构,对消息进行分组处理(每组512比特),每轮压缩函数进行64轮迭代。下表列出了SM3的关键参数:
| 参数 | SM3值 |
|---|---|
| 消息最大长度(比特) | 264 |
| 输出哈希值长度(比特) | 256 |
| 字长(比特) | 32 |
| 分组长度(比特) | 512 |
| 压缩函数轮数 | 64 |
| 安全强度(比特) | 128(抗碰撞) |
| 初始值IV | 7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e |
SM3的处理流程包括消息填充、消息扩展、迭代压缩和输出。填充规则:先添加比特‘1’,然后添加k个‘0’,使填充后长度模512等于448,最后附加64位消息长度(大端序)。填充后的消息被划分为512比特的消息分组。
消息扩展:将每个512比特分组B(i)扩展为132个字:W0~W67和W0’~W63’。其中前16个字直接取自B(i),后面的字通过递推公式生成。
迭代压缩:对每个消息分组执行64轮压缩,使用状态变量V(i)。每轮使用布尔函数FF、GG和置换函数P0、P1。64轮结束后,将V(i)与前一状态异或生成新的状态。最终所有分组处理完毕后的状态即为哈希值。
SM3设计充分考虑了现代密码分析攻击。其布尔函数和置换函数的选取具有较好的雪崩效应和扩散性。当前公开文献未发现对完整SM3的有效攻击优于穷举。SM3的预期安全强度为128比特(抗碰撞)和256比特(抗原像)。这使得SM3在2026年依然保持足够的安全性,能够有效抵抗差分攻击、线性攻击等经典方法。
标准提供了两个测试向量(消息、中间值及哈希结果)供实现验证。开发者应首先利用这些向量检验实现的正确性。
在软件实现中,可利用SIMD指令(如SSE、NEON)或查表优化加速消息扩展和压缩函数。硬件实现可基于FPGA或ASIC,吞吐量可达10Gbps以上。
合规性方面,在中国及部分采用中国密码标准的系统中,SM3是强制性要求。例如,GM/T 0024-2014规定了SSL VPN中使用SM3,GM/T 0045-2016规定了金融数据密码机中的SM3应用。在国际环境中,通过IEC 10118-2-12:2016认证的SM3也可作为互操作基础。
IEC 10118-2-12:2016与其他标准存在密切的联系:
通过ISO/IEC的标准化,SM3获得了广泛国际认可,部署场景从中国扩展到全球。