如何使用OpenSSL FIPS对象模块v2.0中的DRBG

如何使用OpenSSL FIPS对象模块v2.0中的DRBG,openssl,fips,Openssl,Fips,我试图将OpenSSL FIPS对象模块v2.0与基础OpenSSL库(1.0.1c)一起使用,以使我的应用程序FIPS 140-2受到投诉。问题是我无法理解如何使用FIPS对象模块中的DRBG API来替换我的RAND_*调用 我可以在OpenSSL模块中看到一些RAND_字节调用的实例,也可以在其他库/源文件(OpenSSL之外)中使用它们。本文提供的用户文档讨论了各自的API,但没有说明哪些调用需要映射到各自的RAND_*对应项 我试着在各种论坛上寻找这些信息,但到目前为止还不走运。如果有

我试图将OpenSSL FIPS对象模块v2.0与基础OpenSSL库(1.0.1c)一起使用,以使我的应用程序FIPS 140-2受到投诉。问题是我无法理解如何使用FIPS对象模块中的DRBG API来替换我的RAND_*调用

我可以在OpenSSL模块中看到一些RAND_字节调用的实例,也可以在其他库/源文件(OpenSSL之外)中使用它们。本文提供的用户文档讨论了各自的API,但没有说明哪些调用需要映射到各自的RAND_*对应项

我试着在各种论坛上寻找这些信息,但到目前为止还不走运。如果有人能帮助我了解如何使用这些电话,并替换目前正在使用的RAND_*电话,我将不胜感激

谢谢, 桑德普

问题是我不知道如何使用DRBGAPI 来自FIPS对象模块,用于替换我的RAND_*调用

调用
FIPS\u mode\u set
(并假设其返回非零)后,即使用NIST批准的DRBG。从OpenSSL:

默认的DRBG是使用派生函数的256位CTR AES。。。到 使用FIPS随机数生成器,只需将RAND_字节用作 如前所述。请注意,对FIPS_mode_set的调用必须在以下情况下成功: 以FIPS 140模式运行


RAND
API是一个接口。您不会替换任何
随机调用。相反,您注册DRBG(当您调用
FIPS_mode()
或其他什么时,可能会自动完成),然后您的
RAND_
调用将使用它而不是默认的RNG实现。对这个古老的答案进行了投票,但问题仍然是这些引擎是否在不切换到FIPS模式的情况下可用。仅仅使用RNG,这一步可能太大了。