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中获取副本。