OpenSSL

密碼學和 SSL/TLS 工具組

EVP_MD-KECCAK-KMAC

名稱

EVP_MD-SHAKE、EVP_MD-KECCAK-KMAC - SHAKE / KECCAK 系列 EVP_MD 實作

說明

透過 EVP_MD API 支援計算 SHAKE 或 KECCAK-KMAC 摘要。

KECCAK-KMAC 是一種可延伸輸出函數 (XOF),其定義類似於 SHAKE,由 KMAC EVP_MAC 實作使用 (請參閱 EVP_MAC-KMAC(7))。

識別碼

此實作在 FIPS 提供者和預設提供者中皆可使用,且包含下列變種

KECCAK-KMAC-128

已知名稱為「KECCAK-KMAC-128」和「KECCAK-KMAC128」。此名稱由 EVP_MAC-KMAC128(7) 使用。使用 NIST FIPS 202 (第 6.2 節) 中的表示法,我們有 KECCAK-KMAC-128(M, d) = KECCAK[256](M || 00, d) (請參閱 NIST SP 800-185 附錄 A 中 KMAC128 的說明)。

KECCAK-KMAC-256

已知名稱為「KECCAK-KMAC-256」和「KECCAK-KMAC256」。此名稱由 EVP_MAC-KMAC256(7) 使用。使用 NIST FIPS 202 (第 6.2 節) 中的表示法,我們有 KECCAK-KMAC-256(M, d) = KECCAK[512](M || 00, d) (請參閱 NIST SP 800-185 附錄 A 中 KMAC256 的說明)。

SHAKE-128

已知名稱為「SHAKE-128」和「SHAKE128」。

SHAKE-256

已知名稱為「SHAKE-256」和「SHAKE256」。

可取得參數

此實作支援 EVP_MD-common(7) 中說明的常見可取得參數。

可設定的內容參數

這些實作支援下列 OSSL_PARAM(3) 項目,可透過 EVP_MD_CTX_set_params(3) 設定 EVP_MD_CTX

"xoflen" (OSSL_DIGEST_PARAM_XOFLEN) <unsigned integer>

設定可延伸輸出函數的摘要長度。參數「xoflen」的長度不應超過 size_t

基於向後相容性的原因,SHAKE-128 的預設 xoflen 長度為 16(位元組),這會導致安全性強度僅有 64 位元。若要確保最大安全性強度為 128 位元,xoflen 應至少設定為 32。

基於向後相容性的原因,SHAKE-256 的預設 xoflen 長度為 32(位元組),這會導致安全性強度僅有 128 位元。若要確保最大安全性強度為 256 位元,xoflen 應至少設定為 64。

這個參數可以在呼叫 EVP_DigestFinal_ex() 或 EVP_DigestFinal() 時使用,因為這些函式並未設計為處理可變長度輸出。建議改用 EVP_DigestSqueeze() 或 EVP_DigestFinalXOF()。

注意事項

對於 SHAKE-128,若要確保最大安全性強度為 128 位元,傳遞給 EVP_DigestFinalXOF() 的輸出長度應至少為 32。

對於 SHAKE-256,若要確保最大安全性強度為 256 位元,傳遞給 EVP_DigestFinalXOF() 的輸出長度應至少為 64。

另請參閱

EVP_MD_CTX_set_params(3)provider-digest(7)OSSL_PROVIDER-default(7)

版權所有 2020-2023 The OpenSSL Project Authors。保留所有權利。

根據 Apache License 2.0(「授權」)授權。您只能在遵守授權的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得一份副本,或於 https://www.openssl.org/source/license.html 取得。