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) 中的「參數」 中找到參數的完整清單。EVP_KDF_CTX_set_params() 使用的常見參數名稱為
- key:string
-
將秘密金鑰指定為字母數字字串(僅當金鑰只包含可列印字元時使用)。字串長度必須符合 KDF 演算法的任何限制。必須為大多數 KDF 演算法指定金鑰。
- hexkey:string
-
key: 選項的替代選項,其中秘密金鑰以十六進位形式指定(每個位元組兩個十六進位數字)。
- pass:string
-
將密碼指定為字母數字字串(僅當密碼只包含可列印字元時使用)。必須為 PBKDF2 和 scrypt 指定密碼。
- hexpass:string
-
替代 pass: 選項,其中密碼以十六進位形式指定(每個位元組兩個十六進位數字)。
- salt:字串
-
指定非機密且唯一的密碼鹽,為字母數字字串(僅在包含可列印字元時使用)。長度必須符合 KDF 演算法的任何限制。多種 KDF 演算法需要 salt 參數,例如 EVP_KDF-PBKDF2(7)。
- hexsalt:字串
-
替代 salt: 選項,其中 salt 以十六進位形式指定(每個位元組兩個十六進位數字)。
- info:字串
-
某些 KDF 實作,例如 EVP_KDF-HKDF(7),會採用「資訊」參數,將衍生的金鑰材料繫結到應用程式和特定於內容的資訊。指定資訊、固定資訊、其他資訊或共用資訊引數,為字母數字字串(僅在包含可列印字元時使用)。長度必須符合 KDF 演算法的任何限制。
- hexinfo:字串
-
替代 info: 選項,其中資訊以十六進位形式指定(每個位元組兩個十六進位數字)。
- digest:字串
-
此選項與 -digest 選項相同。
- cipher:字串
-
此選項與 -cipher 選項相同。
- mac:字串
-
此選項與 -mac 選項相同。
- -provider 名稱
- -provider-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 和資訊建立十六進位編碼的衍生金鑰
openssl kdf -keylen 10 -kdfopt digest:SHA2-256 -kdfopt key:secret \
-kdfopt salt:salt -kdfopt info:label HKDF
使用 SSKDF 搭配 KMAC 從機密金鑰、salt 和資訊建立十六進位編碼的衍生金鑰
openssl kdf -keylen 64 -kdfopt mac:KMAC-128 -kdfopt maclen:20 \
-kdfopt hexkey:b74a149a161545 -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271ccd68a2 SSKDF
使用 SSKDF 搭配 HMAC 從機密金鑰、salt 和資訊建立十六進位編碼的衍生金鑰
openssl kdf -keylen 16 -kdfopt mac:HMAC -kdfopt digest:SHA2-256 \
-kdfopt hexkey:b74a149a -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271c SSKDF
使用 SSKDF 搭配雜湊從機密金鑰、salt 和資訊建立十六進位編碼的衍生金鑰
openssl kdf -keylen 14 -kdfopt digest:SHA2-256 \
-kdfopt hexkey:6dbdc23f045488 \
-kdfopt hexinfo:a1b2c3d4 SSKDF
使用 SSHKDF 從機密金鑰、雜湊和 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 新增
版權
Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
在 Apache License 2.0(「授權」)下授權。您只能在遵守授權的條件下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得一份副本,或至 https://www.openssl.org/source/license.html 取得。