OpenSSL

密码学和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中获取副本。