如何检查openssl库是否使用FIPS验证的crytpography

时间:2016-03-29 08:53:18

标签: windows openssl fips

我已经从第三方(libeay32.dllssleay32.dll)打开了OpenSSL提供的二进制文件。我需要检查并验证那些提供的运行时库是否使用符合FIPS 140-2的加密算法。有没有办法检查这个?

1 个答案:

答案 0 :(得分:0)

  

有没有办法检查这个?

是的,有很多方法。最简单的方法是从命令行运行openssl version。如果它的FIPS验证加密,那么它会说:

> openssl version
Version: OpenSSL 1.0.1f-fips 6 Jan 2014

在Linux上执行此操作的相关问题是How to check FIPS 140-2 support in OpenSSL?。 Windows是完全不同的,所以这个问题应该保持开放。

虽然前一个问题是Linux,但您可以使用dumpbinfindstrings在Windows上执行相同操作。确保打开Developer Prompt(而不是常规命令提示符)以确保像dumpbin这样的工具在路径上。

以下是您可以查看的一些内容(来自下面讨论的幻灯片):

  • 存在预期的用户空间符号
    • FIPS_mode_set(),FIPS_module_mode_set(),FIPS_mode(),FIPS_module_mode()
  • 存在预期的内部符号
    • FIPS_text_start(),FIPS_text_end(),FIPS_rodata_start [],FIPS_rodata_end [],FIPS_signature [20];
  • 调用FIPS_set_mode(1)并且不会失败
    • ERR_get_error返回0x0f06d065
    • CRYPTO_R_FIPS_MODE_NOT_SUPPORTED返回FTW!
  • 使用字符串
    • “FIPS 2.0验证模块2012年3月14日”
    • “FIPS 2.0.1验证测试模块2012年6月12日”
  • 已知答案测试
    • 可执行文件的RO部分中的二进制字符串数据
    • 检查* .c文件中的静态值
    • 各种子目录:aes,cmac,des,...,ecdsa,dsa,...
    • 自检文件:aes_selftest.c,dsa_selftes.c,...

以下是fips/rand/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,0x38

我还上传了一个关于OpenSSL wiki主题的幻灯片。它被称为Building Applications using OpenSSL Validated Cryptography: Notes from the Field for Developers and Auditors。您需要查看从幻灯片18开始的材料。

我为OWASP制作了幻灯片,但没有兴趣接收它。我知道Stack Overflow对OpenSSL wiki上的链接皱眉,但我不知道如何在这里提供35+幻灯片。