Почему Python md5 доступен в режиме FIPS? - PullRequest
0 голосов
/ 11 апреля 2019

Сначала я проверяю, что мой 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 ведет себя так же, как и ожидалось.

У меня Python 3.6 скомпилирован с поддержкой режима FIPS:

# ./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'

Почему md5 разрешено в режиме FIPS?

EDIT

Я убедился, что Python использует openssl реализацию:

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