图表——基于口令的密钥派生标准对比分析
1. 概况
基于口令的密钥派生函数及其应用方面的标准,目前搜索到如下几个标准。
- PKCS #5 v2.1: Password-Based Cryptography Standard. RSA Laboratories, 2006.见《PKCS#5 (基于口令的密钥标准)笔记》。
- NIST SP800-132: Recommendation for Password-Based Key Derivation. Part 1: Storage Applications. NIST, 2010. 见《NIST SP 800-132(基于口令的密钥导出PBKDF)笔记》
- RFC 8018: PKCS #5: Password-Based Cryptography Specification Version 2.1. IETF, 2017. 等同PKCS #5 V2.1。
- GM/T 0091-2020: 基于口令的密钥派生规范. 密码行业标准化技术委员会, 2020. 见《GMT 0091-2020(基于口令的密钥派生规范)笔记》

图1.1 基于口令的密钥派生函数及其应用方面的标准
2. 对比
2.1 基本情况对比
- PKCS#5 V2.1:最全,两个PBKDF方案(一个为兼容早期V1.5版本,不安全;另一个更安全,推荐),两个PBES方案,一个PBMAC方案。
- NIST SP800-132:只有一个PBKDF方案,额外补充使用导出密钥直接/间接保护数据的方案。
- RFC 8018:照搬PKCS#5。
- GM/T 0091-2012:挑选PKCS#5的优选方案PBKDF2系列——PBKDF2 + PBES2 + PBMAC1方案;额外补充OID定义、ASN.1语法和结构定义。
表2.1 四个标准基本信息的对比
(RFC8018等同采用PKCS#5 v2.1,故合并)
|
PKCS#5 v2.1/ RFC8018 |
NIST SP800-132 |
GM/T 0091 | |
|
主体机构 |
RSA实验室 / IETF |
NIST |
密标委 |
|
发布时间 |
2006年 / 2017 |
2010 |
2020年 |
|
密钥派生 |
PBKDF1 (兼容V1.5,安全性差) PBKDF2 (推荐) |
仅PBKDF2 |
仅PBKDF2 |
|
加密方案 |
PBES1 (兼容V1.5,用PBKDF1) PBES2 (推荐;使用PBKDF2) |
概述PBKDF导出密钥直接/间接保护数据的方案 |
PBES2 (使用PBKDF2) |
|
MAC方案 |
PBMAC1 (使用PBKDF2) |
不涉及 |
PBMAC1 (使用PBKDF2) |
|
备注 |
仅采用PBKDF2 |
采用PBKDF2系列 |

图2.1 四个标准的关系
2.2 PBKDF参数对比
表2.2 PBKDF参数对比
(RFC8018等同采用PKCS#5 v2.1,故合并)
|
PKCS#5 v2.1/ RFC8018 |
NIST SP800-132 |
GM/T 0091 | |
|
PRF |
PBKDF1: HASH(MD2、MD5、SHA-1) PBKDF2: 给出实例HMAC-SHA1、HMAC-SHA2 |
无PBKDF1 PBKDF2: 实例为HMAC,杂凑函数用FIPS/NIST获准的,如SHA2/SHA3 |
无PBKDF1 PBKDF2: 给出一个实例,为HMAC-SM3 |
|
盐值salt |
>= 64比特 |
>= 64比特 |
>= 64比特 |
|
迭代次数c |
>= 1000 |
>= 1000 |
>= 1024 |
|
备注 |
仅使用PBKDF2 |
仅使用PBKDF2 |
2.3 PBES参数对比
表2.3 PBES参数对比
(1. RFC8018等同采用PKCS#5 v2.1,故合并;2. NIST SP800-132未列出PBES,故略去)
|
PKCS#5 v2.1/ RFC8018 |
GM/T 0091 | |
|
基础PBKDF |
PBES1:使用PBKDF1 PBES2:使用PBKDF2 |
无PBES1:—— PBES2:使用PBKDF2 |
|
基础 加密方案 |
PBES1:实例DES / RC2 – CBC PBES2:实例AES-CBC-pad |
无PBES1:—— PBES2:实例SM4-CBC-pad |
|
盐值salt |
>= 64比特 |
>= 64比特 |
|
迭代次数c |
>= 1000 |
>= 1024 |
|
备注 |
仅使用PBES2 |
2.4 PBMAC参数对比
表2.4 PBMAC参数对比
(1. RFC8018等同采用PKCS#5 v2.1,故合并;2. NIST SP800-132未列出PBES,故略去)
|
PKCS#5 v2.1/ RFC8018 |
GM/T 0091 | |
|
基础PBKDF |
使用PBKDF2 |
使用PBKDF2 |
|
基础 MAC方案 |
实例HMAC-SHA1或HMAC-SHA2 |
实例HMAC-SM3 |
|
盐值salt |
>= 64比特 |
>= 64比特 |
|
迭代次数c |
>= 1000 |
>= 1024 |
|
备注 |
仅使用PBES2 |

浙公网安备 33010602011771号