Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 10118-3:2004(等同采用为IEC 10118-3-04、CAN/CSA-ISO/IEC 10118-3-04)是信息技术安全技术领域中关于哈希函数的重要国际标准,全称为《信息技术 — 安全技术 — 哈希函数 — 第3部分:专用哈希函数》。该标准由ISO/IEC JTC 1/SC 27(信息技术安全技术分委会)制定,2013年经复审确认继续有效(故常标记为2013年版)。截至2026年,该标准依然是许多密码系统和安全协议的核心参考之一。
本标准的适用范围包括:定义了一系列专门设计的哈希函数(dedicated hash-functions),这些函数不依赖于其他密码原语(如分组密码或模运算),而是通过特定布尔函数、循环移位和模加操作来提供抗碰撞和抗原像能力。标准规定的算法包括SHA-1、RIPEMD-128、RIPEMD-160、SHA-256、SHA-384和SHA-512。这些哈希函数广泛用于数字签名、消息认证码(MAC)、随机数生成以及数据完整性校验等场景。标准适用于安全服务提供商、密码模块开发者、认证机构以及需要实现哈希算法的软硬件厂商。
标准中所有专用哈希函数均遵循Merkle-Dåmgård强化结构:输入消息被分成固定大小的数据块;每个数据块与前一步的中间值通过压缩函数迭代处理;最后输出固定长度的杂凑值。填充规则采用位填充(先补’1’,再补’0’至长度除区块大小的余数位置,最后附上64位或128位消息长度表示)。
标准定义的六种专用哈希函数主要参数如下表所示:
| 算法名称 | 输出长度(bit) | 区块大小(bit) | 字长(bit) | 循环轮数 | 预期安全强度(bit) |
|---|---|---|---|---|---|
| SHA-1 | 160 | 512 | 32 | 80 | 弱(≤80) |
| RIPEMD-128 | 128 | 512 | 32 | 64 | 64(碰撞) |
| RIPEMD-160 | 160 | 512 | 32 | 80 | 80(碰撞) |
| SHA-256 | 256 | 512 | 32 | 64 | 128 |
| SHA-384 | 384 | 1024 | 64 | 80 | 192 |
| SHA-512 | 512 | 1024 | 64 | 80 | 256 |
说明:预期安全强度为抗碰撞攻击的推荐强度一般为输出长度的一半(或更少)。SHA-1已不再安全,标准虽包含但建议避免在新系统中使用。
每种算法均定义了详细的布尔函数、常量和初始值(IV)。例如,SHA系列使用非线性函数(如Ch、Maj等),RIPEMD系列则基于MD4设计但进行了改进。标准附录提供了测试向量(Test Vectors),用于验证实现的正确性。
实施者应根据应用的安全需求、性能约束和合规性要求选择适当的哈希函数。对于新系统,建议使用SHA-256或更高强度的算法。
由于哈希函数对每个输入比特敏感,实现必须严格遵循标准定义的字运算(加、移位、异或、逻辑函数)和字节序(大端序)。建议使用标准附录A提供的测试向量对所有算法进行测试,包括空字符串、单块、多块消息场景。
这些专用哈希函数常用于:
ISO/IEC 10118-3是ISO/IEC 10118系列的一部分,该系列包括:
此外,本标准与以下标准紧密关联:
本标准与FIPS 180-4(美国联邦信息处理标准安全哈希标准)在SHA系列算法上保持一致,但ISO/IEC 10118-3还纳入了RIPEMD族算法。