【发布时间】:2017-03-24 09:19:09
【问题描述】:
我在尝试在 MIPS 设备上使用编译为 FIPS 功能 的 OpenSSL 共享库 (libcrypto) 时遇到问题。
我通过以下方式(总结)交叉编译了 FIPS 对象模块和 OpenSSL 库:
export FIPS_SIG=<my_path>/incore
./config fips --with-fipsdir=<my_path>/fips-2.0
make depend
make
make install
我完成了所有需要的步骤,因此我能够编译和安装库。
当我尝试从链接 OpenSSL 库的应用程序运行 FIPS_mod_set(1) API 时出现此问题。
FIPS 模式初始化失败,收到此错误:
2010346568:error:2D06B06F:lib(45):func(107):reason(111):NA:0:
调试FIPS代码,发现问题出在FIPS_check_incore_fingerprint(void)函数内部:
检查memcmp(FIPS_signature,sig,sizeof(FIPS_signature)) 失败。
深入调试,我发现 FIPS_signature 值仍然是默认值,所以我怀疑 fipsld 调用的 incore 脚本> 实用程序,未在 OpenSSL 共享对象中正确嵌入指纹。
如何检查 incore 脚本是否将指纹嵌入到共享对象中?
如何打印预期的指纹?
我需要调整 incore 脚本吗? (我想这是不允许的)
你有什么建议吗?
非常感谢!
P.S.:我正在使用 x86 Linux 机器进行交叉编译。
【问题讨论】:
-
仅供参考...只有一个 MIPS 平台已经过验证。它是带有 TI TNETV1050 处理器的 VxWorks 6.8 操作环境。另请参阅OpenSSL FIPS 140-2 Security Policy, v 2.0. pp. 9-10。
-
Here 是我不久前遇到一个与此相关的问题时提出的问题。出于调试目的,您可以更改任何文件(我对 fips_premain.c、fips.c、fipsld 进行了更改),但是在构建“官方”版本你不能改变任何东西(实际上有很多限制)。此外,请确保您的平台/架构对受支持。
-
问题中缺少大量可能有用的信息。与其猜测潜在的问题,也许User Guide for the OpenSSL FIPS Object Module v2.0 会是一个好的开始。
-
我了解与 FIPS 使用相关的所有限制,并且我仔细研究了所有文档。我知道 FIPS 对象模块无法更改,但我正在尝试了解如何将其与我的交叉编译的 OpenSSL 库集成。可能我找到了一个线索:incore 脚本正在处理共享库的错误偏移中的指纹。这可能是与 ELF 路径(和交叉编译的可执行文件)有关的问题。我会及时向大家发布。谢谢!
标签: linux openssl mips cross-compiling fips