GVKun编程网logo

如何检查OpenSSL中的FIPS 140-2支持?(openssl-fips是openssl)

21

本篇文章给大家谈谈如何检查OpenSSL中的FIPS140-2支持?,以及openssl-fips是openssl的知识点,同时本文还将给你拓展2014phpstudyopenssl0.9.8/1.0

本篇文章给大家谈谈如何检查OpenSSL中的FIPS 140-2支持?,以及openssl-fips是openssl的知识点,同时本文还将给你拓展2014 phpstudy openssl 0.9.8/1.0.1怎么切换、CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g、centos7.4 升级openssl环境至openssl-1.1.0c、FIPS支持OpenSSL交叉编译:incore指纹问题等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何检查OpenSSL中的FIPS 140-2支持?(openssl-fips是openssl)

如何检查OpenSSL中的FIPS 140-2支持?(openssl-fips是openssl)

我们有一个客户正在询问有关OpenSSL FIPS (Federal Information Processing Standard) 140-2
兼容支持的 验证密码用法。如何检查OpenSSL是否 具有FIPS抱怨 是否提供了FIPS验证的加密?

作业系统: Redhat 5 Linux

答案1

小编典典

如何检查OpenSSL是否提供了FIPS验证的加密?

这取决于您要检查的方式和时间。它还取决于应用程序。

FIPS可能可用,但未使用。因此,应用程序必须通过启用验证密码FIPS_mode_set,并且调用 必须 成功。


如果要检查是否已将FIPS功能库(例如OpenSSL 1.0.1e)配置为使用FIPS对象模块,则可以:

$ cat /usr/local/ssl/include/openssl/opensslconf.h  | grep -A 2 -i fips#ifndef OPENSSL_FIPS# define OPENSSL_FIPS#endif

OPENSSL_FIPS告诉您FIPS Capable Library已配置为使用FIPS对象模块。因此,可以使用经过FIPS验证的加密技术。

OPENSSL_FIPS但是,这并不意味着应用程序正在使用FIPS验证的密码学。应用程序必须调用FIPS_mode_set,并且函数必须返回成功。


在运行时,您可以打印与以下内容关联的字符串(其取自我专门为此使用的代码):

ostringstream oss;oss << OPENSSL_VERSION_TEXT;LogVersion(oss.str().c_str());

该代码将产生类似于以下内容的日志条目:

Version: OpenSSL 1.0.1f-fips 6 Jan 2014

您可以通过一些技巧来审核该模块。例如,以下内容将测试如果可执行文件是真正的FIPS ,则 必须 出现的某些符号。

在这种情况下,我正在测试支持OpenSSL
FIPS的共享对象。如果应用程序链接到libcrypto.a,那么您可以审核程序而不是OpenSSL共享对象。

$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_*00000000000c7f60 T ERR_load_FIPS_strings00000000000c2250 T FIPS_add_error_data00000000000c3900 T FIPS_add_lock0000000000082820 T FIPS_bn_bin2bn0000000000082980 T FIPS_bn_bn2bin0000000000082760 T FIPS_bn_clear0000000000082350 T FIPS_bn_clear_free00000000000823d0 T FIPS_bn_free0000000000087c90 T FIPS_bn_generate_prime_ex0000000000082790 T FIPS_bn_get_word0000000000082d20 T FIPS_bn_is_bit_set0000000000087c80 T FIPS_bn_is_prime_ex0000000000087750 T FIPS_bn_is_prime_fasttest_ex...

您还具有来自的符号fips_premain.c

$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_text_*00000000000c4520 T FIPS_text_end000000000007b340 T FIPS_text_start$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_rodata*00000000001e1e20 R FIPS_rodata_end00000000001d8ce0 R FIPS_rodata_start$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_signature*00000000004696c0 B FIPS_signature$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_incore*000000000007b5a0 T FIPS_incore_fingerprint

现在,这真是偷偷摸摸。您可以检查模块是否包含自检。例如,fips_drbg_selftest.h将对其自检包括以下字节:

0x2e,0xbf,0x98,0xf9,0x85,0x27,0x8b,0xff,0x36,0xb9,0x40,0x0b,0xc0,0xa1,0xa0,0x13,0x20,0x06,0xcc,0xe6,0x2a,0x03,0x77,0x7d,0xee,0xde,0xcc,0x34,0xe3,0xcd,0x77,0xea,0xd0,0x3e,0xbe,0xdd,0xf6,0x15,0xfb,0xa7,0xd7,0x8e,0xd0,0x2e,0x2f,0x82,0x4c,0xc7,0x87,0xb1,0x6f,0xc5,0xf8,0x5c,0x78,0xde,0x77,0x9b,0x15,0x9a,0xb9,0x3c,0x38

您可以通过转储符号的20个字节来验证开发人员是否已运行incoremacho_incore在其可执行文件上嵌入FIPS指纹FIPS_signature。如果它的20个字节为0(默认为fips_premain.c),则指纹未嵌入并且FIPS_mode_set将失败。因此,在这种情况下不可能使用FIPS验证的密码学。


更新 :我将关于主题的幻灯片放到了OpenSSL
Wiki。其称为使用OpenSSL验证密码学构建应用程序:开发人员和审计人员的现场说明。您将需要从幻灯片18开始复习材料。

我为OWASP构建了幻灯片平台,但是没有兴趣接收它。我知道Stack Overflow不赞成OpenSSL
Wiki上的链接,但是我不知道如何在此处提供35张以上的幻灯片。

2014 phpstudy openssl 0.9.8/1.0.1怎么切换

2014 phpstudy openssl 0.9.8/1.0.1怎么切换

2014 phpstudy 自带openssl 0.9.8和1.0.1,问题是要配制支持https时,还得满足TLSv1.2,而要满足TLSv1.2就必须要支持openssl1.0.1及以上版本,现在不知道怎么切换,还请phpstudy大神给帮忙解决下,谢谢。

以上就是2014 phpstudy openssl 0.9.8/1.0.1怎么切换的详细内容,更多请关注php中文网其它相关文章!

CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g

CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g

# cd /usr/src
# wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz
# tar -zxf openssl-1.0.1g.tar.gz
# cd openssl-1.0.1g
# ./config
# make
# make test
# make install
# openssl version(显示的是旧的版本1.0.1e)

执行下面的命令:

# mv /usr/bin/openssl /root/ (或者删除)
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# openssl version
OpenSSL 1.0.1g 7 Apr 2014

centos7.4 升级openssl环境至openssl-1.1.0c

centos7.4 升级openssl环境至openssl-1.1.0c

升级openssl环境至openssl-1.1.0c@H_301_2@

升级openssl环境至openssl-1.1.0c
1、查看源版本

[root@zj ~]#openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013

2、下载 openssl-1.1.0c.tar.gz

最新版本可以在这个网站下载:
https://www.openssl.org/source/
wgethttp://www.openssl.org/source/openssl-1.1.0c.tar.gz

3、更新zlib
yum install -y zlib

4、解压安装
tar zxfopenssl-1.1.0c.tar.gz
cdopenssl-1.1.0c
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v

5、查看是否升级成功
[root@zj ~]#openssl version -a


解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误
问题在Centos7上编译安装openssl后,运行openssl version出现如下错误:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory这是由于openssl库的位置不正确造成的。解决方法:在root用户下执行:ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

FIPS支持OpenSSL交叉编译:incore指纹问题

FIPS支持OpenSSL交叉编译:incore指纹问题

我在尝试使用编译为MIPS设备上的FIPSfunctionOpenSSL共享库(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:

debuggingFIPS代码,我发现问题出在FIPS_check_incore_fingerprint(void)函数中:

检查memcmp(FIPS_signature,sig,sizeof(FIPS_signature))失败。

进一步深入debugging,我发现FIPS_signature值仍然是默认值,所以我怀疑由fipsld实用程序调用的incore脚本没有正确地将指纹embedded到OpenSSL共享对象中。

如何检查incore脚本是否将指纹embedded到共享对象中?

如何打印预期的指纹?

我需要修改incore脚本吗? (我想这是不允许的)

你有什么build议吗?

非常感谢!

PS:我正在使用x86 Linux机器进行交叉编译。

C ++跨平台开发(Windows和Mac OS)

在Mac上编译Swift并在Windows上运行

针对Windows上的Linux进行交叉编译(链接器输出文件不会在Linux上以可执行文件的forms运行,并且具有未定义的符号)

在cygwin上的crosstool-ng构build中,gettext编译失败

为QNX 6.6.0 armle v7交叉编译perl

Android-Ndk与交叉编译? 这两个工作,那么Android NDK的需求是什么?

如何使用u-boot为ARM处理器加载应用程序

CUDA交叉编译错误! cuda-gdb错误信息RSEG1058

cuda nvcc交叉编译器

从哪里可以findcp命令的源代码?

我发现这个问题! 我将尝试解释整个调试过程和解决方案。

介绍:

当OpenSSL被配置为具有FIPS功能时,在编译过程中,Makefile调用一个实用程序fipsld ,它们执行FIPS对象模块检查,并为应用程序可执行文件生成新的HMAC-SHA-1摘要(正如官方OpenSSL用户指南https://www.openssl.org/docs/fips/UserGuide-2.0.pdf )

fipsld命令要求设置CCFIPSLD_CC环境变量,后者优先。

在Makefile中你会发现这样的东西:

libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT) @if [ "$(SHLIB_TARGET)" != "" ]; then if [ "$(FIPSCANLIB)" = "libcrypto" ]; then FIPSLD_LIBCRYPTO=libcrypto.a ; FIPSLD_CC="$(CC)"; CC=$(FIPSDIR)/bin/fipsld; export CC FIPSLD_CC FIPSLD_LIBCRYPTO; fi; $(MAKE) -e SHLIBDirs=crypto CC="$${CC:-$(CC)}" build-shared && (touch -c fips_premain_dso$(EXE_EXT) || :); else echo "There''s no support for shared libraries on this platform" >&2; exit 1; fi

然后, fipsld实用程序将调用一个shell脚本incore ,用于将FIPS对象模块的预期指纹嵌入到OpenSSL共享对象中。 通过FIPS_SIG env变量指定incore路径很重要,例如:

export FIPS_SIG=$PWD/opensslfips2.0/util/incore

调试:

调试incore脚本,我可以看到脚本尝试将签名嵌入到0x001EE6B0偏移量的共享对象中,而共享对象内的FIPS_signature符号位于不同的偏移量处,更具体地在0x001F0630 :

objdump -t libcrypto.so.1.0.0 | grep FIPS_signature 001f0630 g O .data 00000014 FIPS_signature readelf -a libcrypto.so.1.0.0 | grep FIPS_signature 870: 001f0630 20 OBJECT GLOBAL DEFAULT 18 FIPS_signature 3925: 001f0630 20 OBJECT GLOBAL DEFAULT 18 FIPS_signature

此外,转储共享对象,我无法找到生成的签名在偏移量0x001EE6B0,所以我得出的结论是,共享对象是由签名嵌入过程后编辑一些其他进程。

解:

我正在使用以下方式格式化的OpenSSL数据包的软件包Makefile:

$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> all $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> build-shared rm $(PKG_BUILD_DIR)/libssl.so.*.*.* $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> do_linux-shared $(MAKE) -C $(PKG_BUILD_DIR) <options> install

正如所怀疑的那样, make build-shared 并使do_linux-shared命令负责以错误的方式更改共享对象。

注意make build-shared被调用时不使用正确的环境变量。

我改变了包Makefile:

$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> all $(MAKE) -C $(PKG_BUILD_DIR) <options> install

现在FIPS_check_incore_fingerprint(void)函数返回成功,一切正常工作!

注意:

下面的Android设备指南对找到合适的解决方案非常有用。 https://wiki.openssl.org/index.PHP/FIPS_Library_and_Android

总结

以上是小编为你收集整理的FIPS支持OpenSSL交叉编译:incore指纹问题全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

关于如何检查OpenSSL中的FIPS 140-2支持?openssl-fips是openssl的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2014 phpstudy openssl 0.9.8/1.0.1怎么切换、CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g、centos7.4 升级openssl环境至openssl-1.1.0c、FIPS支持OpenSSL交叉编译:incore指纹问题的相关信息,请在本站寻找。

本文标签: