问题描述
dev.boringcrypto
branch of Go 将内置加密模块替换为 FIPS 验证版本:
我们一直在 Google 内部研究 Go 的一个分支,它使用 BoringCrypto(BoringSSL 的核心)用于各种加密 原语,以促进一些work related to FIPS 140-2。 我们听说一些 Go 的外部用户会感兴趣 这段代码也是如此,所以这个分支保存了让 Go 使用的补丁 无聊的加密。
浏览源代码,我可以看到对低级加密代码的修改。但是,我一直在使用的 Go 包都使用 x/crypto
library,第一次看我在分支中看不到任何引用。我想澄清一下该库与 FIPS 140-2 相关的适用性 - 如果我编译了一个使用 x/crypto
和无聊的加密 Go 构建的项目,该库是否也符合 FIPS 标准?
如果不是这样 - 为什么不呢?如果 Go 有一个经过维护的 FIPS 验证分支,为什么基本的加密库也不会有相同的修改?
解决方法
一旦有一个有效的 CMVP(加密模块验证程序),对于您正在使用的库,您就可以放心进行 FIPS 140-2 验证。
请记住,与 FIPS 相关的有“合规性”和“认证”概念。
“合规性”是指底层密码在批准的加密原语列表中的位置,即 AES256-CBC
。
“认证/验证”是指由 NIST 批准的实验室专门审核基础库的地方。
FIPS 140-2 生产使用(FedRAMP 等)必须依赖后者。
看起来 CMVP #3753 正是您所需要的。
对证书基础参数的任何修改都会使认证无效。