Go版本:go1.21.5
在你的模块/工作区中,go env
的输出为:
N/A
你做了什么?当 GOEXPERIMENT=boringcrypto
被设置并且使用以下方式强制执行 FIPS 时:
import _ "crypto/tls/fipsonly"
标准库在使用验证证书的有效性时依赖于 boringAllowCert
:https://github.com/golang/go/blob/master/src/crypto/x509/boring.go#L19-L39
因此,具有 RSA 密钥从 5K 到 16K(这个范围是针对我的用例的特定范围)的证书失败。
考虑到 Go 最近更新以使用基于待定 FIPS 140-3 验证的 20220614 BoringCrypto 模块:
FIPS 140-3 IG 部分 C.F [1] 允许 FIPS 验证使用除 2048、3072 和 4096 之外的其他大小,而上面链接的 boringAllowCert
函数中的当前限制源于早于此新指南的 FIPS 证书,这些证书仅需要特定的大小。
待定的 FIPS 验证是否允许其他(较大的)RSA 密钥大小,如果允许,Go 是否会调整限制以允许这些较大的尺寸?
[1] https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation-program/documents/fips%20140-3/FIPS%20140-3%20IG.pdf
你看到了什么发生?
tls: failed to verify certificate: x509: certificate specifies an incompatible key usage
你期望看到什么?
一个稍微天真的期望是,鉴于当前的 FIPS 140-3 指导和待定验证,看到尺寸检查的放松。
4条答案
按热度按时间j2qf4p5b1#
CC @golang/security。
qaxu7uf22#
我同意这个观点,我最近也遇到了同样的问题。关于这个问题有什么进展吗?
stszievb3#
很遗憾,由于等待最终证书,我们已经撤销了模块升级,所以这需要等待。参见 $x_1^e_0 f_1^x$
5lhxktic4#
@FiloSottile ,我看到你已经重新引入了无聊的加密模块升级。你是否考虑放宽本问题中解释的密钥大小限制?