【问题标题】:Consuming FIPS validated OpenSSL runtime使用 FIPS 验证的 OpenSSL 运行时
【发布时间】:2016-04-05 09:49:30
【问题描述】:

我有一系列与 FIPS 和 OpenSSL 相关的查询,因为我对此知之甚少。这是确认我的理解的基本问题。

我有第三方提供的 OpenSSL 运行时二进制文件作为其产品的一部分。我的应用程序应该使用那些可能在内部使用 OpenSSL 运行时的第三方模块。在我的应用程序中,我没有使用FIPS_mode_set() 明确设置 FIPS 模式。以下是与上述段落中提供的上下文相关的查询。

  1. 如果我的应用程序没有通过FIPS_mode_set() 明确设置 FIPS 模式,这是否意味着为我的应用程序设置了非 FIPS 模式并且不会使用经过 FIPS 140-2 验证的加密,即使它们在 OpenSSL 运行时可用?
  2. 有没有办法交叉检查第三方二进制文件是否设置了 FIPS 模式?

【问题讨论】:

    标签: openssl


    【解决方案1】:

    我有一系列与 FIPS 和 OpenSSL 相关的查询,因为我不太了解它。

    您应该熟悉User Guide for the OpenSSL FIPS Object Module v2.0


    如果我的应用程序没有通过FIPS_mode_set() 明确设置 FIPS 模式,这是否意味着为我的应用程序设置了非 FIPS 模式并且不会使用经过 FIPS 140-2 验证的加密,即使它们在 OpenSSL 运行时可用?

    有人必须使用非零值调用FIPS_mode_set(),并且调用必须成功。通常你这样称呼它。它基于用户指南中的示例,第 55 页:

    #ifdef OPENSSL_FIPS 
    if(FIPS_mode_set(1)) 
    {
        fprintf(stdout,"FIPS validated cryptography\n");
    } 
    else
    {
        ERR_load_crypto_strings();
        ERR_print_errors_fp(stderr);
        exit(1); 
    }
    #endif
    

    成功的调用意味着库通过了初始化自检并且它禁用了非 FIPS 算法。

    如果 (1) 没有人使用非零值调用 FIPS_mode_set(),或 (2) 调用失败,那么您没有使用 FIPS 验证的加密。

    如果 (1) 或 (2) 发生,所有密码仍然可用。它只是不会经过 FIPS 验证。


    有什么方法可以交叉检查第三方二进制文件是否设置了 FIPS 模式

    致电FIPS_mode()FIPS_module_mode()。如果它返回 0,那么您不是在 FIPS 模式下运行。如果返回非 0,则说明您处于 FIPS 模式。

    根据用户指南第 55 页中的示例:

    #ifdef OPENSSL_FIPS
    if (FIPS_mode())
    {
        fprintf(stdout,"FIPS validated cryptography\n");
    }
    else
    #endif
    {
        fprintf(stdout,"No FIPS validated cryptography\n");
    }
    

    您可能会遇到使用FIPS_mode() 等符号的一些痛点。那是因为您没有为 FIPS 配置和构建。所以像OPENSSL_FIPS 这样的预处理宏不会在你编译和链接你的程序时被定义。

    在这种情况下,您可能需要dlopen 供应商提供的库,然后使用dlsym 找到符号。在 Windows 上,您将调用 LoadLibraryGetProcAddress。手头有符号,可以间接调用FIPS_mode()

    另请参阅Dynamically Loaded (DL) Libraries HowTo 或搜索 Stack Overflow。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多