OpenSSL

密码学和 SSL/TLS 工具包

EVP_KDF-PBKDF2

名称

EVP_KDF-PBKDF2 - PBKDF2 EVP_KDF 实现

描述

通过 EVP_KDF API 支持计算 PBKDF2 基于密码的 KDF。

EVP_KDF-PBKDF2 算法实现了基于密码的密钥导出函数 PBKDF2,如 SP800-132 中所述;它使用盐和迭代次数从密码中导出密钥。

标识

"PBKDF2" 是此实现的名称;它可以与 EVP_KDF_fetch() 函数一起使用。

支持的参数

支持的参数是

"pass" (OSSL_KDF_PARAM_PASSWORD) <八位字节串>
"salt" (OSSL_KDF_PARAM_SALT) <八位字节串>
"iter" (OSSL_KDF_PARAM_ITER) <无符号整数>

此参数的默认值为 2048。

"properties" (OSSL_KDF_PARAM_PROPERTIES) <UTF8 字符串>
"digest" (OSSL_KDF_PARAM_DIGEST) <UTF8 字符串>

这些参数的工作方式如 "PARAMETERS" in EVP_KDF(3) 中所述。

"pkcs5" (OSSL_KDF_PARAM_PKCS5) <整数>

此参数可用于启用或禁用 SP800-132 符合性检查。将模式设置为 0 会启用符合性检查。

执行的检查是

- 迭代次数至少为 1000。
- 盐长度至少为 128 位。
- 导出密钥长度至少为 112 位。

默认提供程序使用 1 的默认模式以实现向后兼容性,而 FIPS 提供程序使用 0 的默认模式。

值字符串应为十进制数 0 或 1。

注意

此算法的典型应用是从“pass”中的密码、”salt”中的盐和迭代次数中为加密算法导出密钥材料。

增加“iter”参数会减慢算法速度,这使得攻击者更难使用大量候选密码进行暴力攻击。

不会对给定的密码进行任何假设;它仅仅被视为一个字节序列。

符合

SP800-132

另请参阅

EVP_KDF(3), EVP_KDF_CTX_new(3), EVP_KDF_CTX_free(3), EVP_KDF_CTX_set_params(3), EVP_KDF_derive(3), "PARAMETERS" in EVP_KDF(3)

历史

此功能在 OpenSSL 3.0 中添加。

Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.

根据 Apache 许可证 2.0(“许可证”)授权。除符合许可证的规定外,您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。