開啟SSL

密碼學和 SSL/TLS 工具包

EVP_MD-SHAKE

名稱

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) <未簽署整數>

設定可延伸輸出函數的摘要長度。「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 OpenSSL 專案作者。保留所有權利。

根據 Apache 授權條款 2.0 版(「授權條款」)授權。您不得使用此檔案,除非符合授權條款。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得副本。