gpt4 book ai didi

python - 为什么 Python md5 在 FIPS 模式下可用?

转载 作者:行者123 更新时间:2023-12-05 06:27:04 26 4
gpt4 key购买 nike

首先我验证我的 openssl 是否正确(编译时支持 FIPS)。

# openssl version
OpenSSL 1.0.2q-fips 20 Nov 2018

在正常模式下:

# echo -n 123456 | openssl md5
(stdin)= e10adc3949ba59abbe56e057f20f883e

在 FIPS 模式下:

# echo -n 123456 | OPENSSL_FIPS=1 openssl md5
Error setting digest md5
139993634896640:error:060A80A3:digital envelope routines:FIPS_DIGESTINIT:disabled for fips:fips_md.c:180:

正如预期的那样。

现在我想验证 python 是否也按预期运行。

我已经编译了支持 FIPS 模式的 python 3.6:

# ./python 
Python 3.6.8 (tags/v3.6.8-dirty:3c6b436a57, Apr 11 2019, 08:44:38)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.2q-fips 20 Nov 2018'

我将其设置为 FIPS 模式:

>>> import ssl
>>> ssl.FIPS_mode_set(1)
>>> ssl.FIPS_mode()
1

现在我尝试验证它是否在 FIPS 模式下运行:

>>> import hashlib
>>>
>>> m = hashlib.md5()
>>> m.update(b"Nobody inspects")
>>> m.digest()
b'>\xf7)\xcc\xf0\xccV\x07\x9c\xa5F\xd5\x80\x83\xdc\x12'

为什么在 FIPS 模式下允许 md5

编辑

我已验证 python 正在使用 openssl 实现:

>>> hashlib.md5
<built-in function openssl_md5>

最佳答案

我找到了解决方案。我对 Python 补丁做了一些更改。

问题是,hashlib 向 OpenSSL 请求算法。它拒绝 md5。然后,它切换到 md5 的默认实现。我为此制作了一个 python 补丁。

请参阅 GitHub 要点。 https://gist.github.com/goravsingal/48986505b9efedf2c05ffd729b7eae69

另一个问题是,即使您这样做了。另一个开发人员可以安装加密模块,它公开了直接与 Openssl 对话的低级库。需要专门为此构建密码模块。

参见 https://www.gyanblog.com/security/how-build-patch-python-3.7.9-fips-enable/

关于python - 为什么 Python md5 在 FIPS 模式下可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55629022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com