openssl-kdf
名称
openssl-kdf - 执行密钥导出函数操作
概要
openssl kdf [-help] [-cipher] [-digest] [-mac] [-kdfopt nm:v] [-keylen num] [-out filename] [-binary] [-provider name] [-provider-path path] [-propquery propq] kdf_name
描述
密钥导出函数从密钥或密码生成派生密钥。
选项
- -help
-
打印使用信息。
- -keylen num
-
派生密钥的输出大小。此字段是必需的。
- -out filename
-
要输出到的文件名,默认情况下为标准输出。
- -binary
-
以二进制形式输出派生密钥。如果没有指定,则使用十六进制文本格式。
- -cipher name
-
指定 KDF 要使用的密码。并非所有 KDF 都需要密码,在这种情况下使用此选项是错误的。
- -digest name
-
指定 KDF 要使用的摘要。并非所有 KDF 都需要摘要,在这种情况下使用此选项是错误的。要查看支持的摘要列表,请使用
openssl list -digest-commands
。 - -mac name
-
指定 KDF 要使用的 MAC。并非所有 KDF 都需要 MAC,在这种情况下使用此选项是错误的。
- -kdfopt nm:v
-
将选项传递给 KDF 算法。可以在 "EVP_KDF(3) 中的 PARAMETERS" 中找到参数的完整列表。EVP_KDF_CTX_set_params() 使用的常见参数名称是
- key:string
-
将密钥指定为字母数字字符串(如果密钥仅包含可打印字符,请使用)。字符串长度必须符合 KDF 算法的任何限制。大多数 KDF 算法必须指定一个密钥。
- hexkey:string
-
key: 选项的替代方案,其中密钥以十六进制形式指定(每字节两个十六进制数字)。
- pass:string
-
将密码指定为字母数字字符串(如果密码仅包含可打印字符,请使用)。PBKDF2 和 scrypt 必须指定密码。
- hexpass:string
-
pass: 选项的替代方案,其中密码以十六进制形式指定(每字节两个十六进制数字)。
- salt:string
-
将非秘密唯一密码盐指定为字母数字字符串(如果它包含可打印字符,请使用)。长度必须符合 KDF 算法的任何限制。几个 KDF 算法(例如 EVP_KDF-PBKDF2(7))需要 salt 参数。
- hexsalt:string
-
salt: 选项的替代方案,其中 salt 以十六进制形式指定(每字节两个十六进制数字)。
- info:string
-
一些 KDF 实现(例如 EVP_KDF-HKDF(7))采用 'info' 参数来将派生密钥材料绑定到应用程序和上下文特定的信息。将 info、固定 info、其他 info 或共享 info 参数指定为字母数字字符串(如果它包含可打印字符,请使用)。长度必须符合 KDF 算法的任何限制。
- hexinfo:string
-
info: 选项的替代方案,其中 info 以十六进制形式指定(每字节两个十六进制数字)。
- digest:string
-
此选项与 -digest 选项相同。
- cipher:string
-
此选项与 -cipher 选项相同。
- mac:string
-
此选项与 -mac 选项相同。
- -provider name
- -provider-path path
- -propquery propq
- kdf_name
-
指定要使用的受支持 KDF 算法的名称。支持的算法名称包括 TLS1-PRF、HKDF、SSKDF、PBKDF2、SSHKDF、X942KDF-ASN1、X942KDF-CONCAT、X963KDF 和 SCRYPT。
示例
使用 TLS1-PRF 从密钥和种子创建十六进制编码的派生密钥
openssl kdf -keylen 16 -kdfopt digest:SHA2-256 -kdfopt key:secret \
-kdfopt seed:seed TLS1-PRF
使用 HKDF 从密钥、salt 和 info 创建十六进制编码的派生密钥
openssl kdf -keylen 10 -kdfopt digest:SHA2-256 -kdfopt key:secret \
-kdfopt salt:salt -kdfopt info:label HKDF
使用 KMAC 的 SSKDF 从密钥、salt 和 info 创建十六进制编码的派生密钥
openssl kdf -keylen 64 -kdfopt mac:KMAC-128 -kdfopt maclen:20 \
-kdfopt hexkey:b74a149a161545 -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271ccd68a2 SSKDF
使用 HMAC 的 SSKDF 从密钥、salt 和 info 创建十六进制编码的派生密钥
openssl kdf -keylen 16 -kdfopt mac:HMAC -kdfopt digest:SHA2-256 \
-kdfopt hexkey:b74a149a -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271c SSKDF
使用 Hash 的 SSKDF 从密钥、salt 和 info 创建十六进制编码的派生密钥
openssl kdf -keylen 14 -kdfopt digest:SHA2-256 \
-kdfopt hexkey:6dbdc23f045488 \
-kdfopt hexinfo:a1b2c3d4 SSKDF
使用 SSHKDF 从密钥、hash 和 session_id 创建十六进制编码的派生密钥
openssl kdf -keylen 16 -kdfopt digest:SHA2-256 \
-kdfopt hexkey:0102030405 \
-kdfopt hexxcghash:06090A \
-kdfopt hexsession_id:01020304 \
-kdfopt type:A SSHKDF
使用 PBKDF2 从密码和 salt 创建十六进制编码的派生密钥
openssl kdf -keylen 32 -kdfopt digest:SHA256 -kdfopt pass:password \
-kdfopt salt:salt -kdfopt iter:2 PBKDF2
使用 scrypt 从密码和 salt 创建十六进制编码的派生密钥
openssl kdf -keylen 64 -kdfopt pass:password -kdfopt salt:NaCl \
-kdfopt n:1024 -kdfopt r:8 -kdfopt p:16 \
-kdfopt maxmem_bytes:10485760 SCRYPT
注意
可用的 KDF 机制将取决于构建 OpenSSL 时使用的选项。
参见
openssl(1)、openssl-pkeyutl(1)、EVP_KDF(3)、EVP_KDF-SCRYPT(7)、EVP_KDF-TLS1_PRF(7)、EVP_KDF-PBKDF2(7)、EVP_KDF-HKDF(7)、EVP_KDF-SS(7)、EVP_KDF-SSHKDF(7)、EVP_KDF-X942-ASN1(7)、EVP_KDF-X942-CONCAT(7)、EVP_KDF-X963(7)
历史
在 OpenSSL 3.0 中添加
版权
版权所有 2019-2023 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0 版(“许可证”)许可。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。