2016-02-23 4 views
2

Я генерирую хеширование содержимого md5 для проверки загрузки, но недавно я обратил на это внимание, что это не удастся для всех пользователей, работающих на машине с включенным FIPS. FIPS отключает openssl md5, приводя к ValueError, когда я пытаюсь инициализировать hashlib. Обычно я использовал SHA вместо этого, но я полагаюсь на внешнюю службу, которая требует заголовка content-md5.Есть ли способ использовать non-openssl md5 для hashlib в python?

Мой вопрос заключается в следующем: есть ли способ заставить Python использовать функцию хэширования без открытия? Был разговор here о добавлении флага usedforsecurity, но, похоже, он никуда не уходил.

ответ

1

Ответ на «как я могу отправить заголовок Content-md5 из режима FIPS машины» является вы не используете неоригинальный FIPS подтвержденных алгоритмов, когда режим FIPS включен, как вы, вероятно, будете нарушать федеральные нормы или так как единственная существенная причина, по которой FIPS разрешает машине, - это если есть нормативная (или, возможно, превентивная политика) требование сделать это.

Существует также обсуждение в this github issues list, предполагающее, что content-md5 необязательно.

Дайте это нормативное требование, вы НЕ МОЖЕТЕ использовать MD5, поскольку он не является алгоритмом, совместимым с FIPS, и поэтому НЕ МОЖЕТ иметь утвержденную (!) Реализацию FIPS.

Вам необходимо выполнить одно из следующих действий:

  • получить эту услугу не требуется заголовок контента-md5

  • использовать другой сервис

  • использовать другой БЕРУЩИХ машину который не требуется в режиме FIPS

Если вашему руководству нужна ссылка, см. Annex A Approved Security Functions for FIPS PUB 140-2, прямо из nist.gov.

+0

Я где-то прочитал, что md5 было разрешено, когда происхождение была машина FIPS, но она не должна быть использована для проверки хэшей из других источников. Однако я не могу найти надежный источник этого, поэтому мне придется предположить, что это фигня. Спасибо за подтверждение! –

+0

Счастливые помочь. Я добавил ссылку на Приложение А в случае, если вашему руководству нужен удар от соблюдения. –

+0

@ JordonPhillips вы правы. Можно использовать md5sum для некриптовых задач, например. кэширование. –

0

Флаг usedforsecurity = False доступен только на некоторых дистрибутивах, так как он не является частью восходящего потока. Вы можете найти в Red Hat Enterprise Linux и производных (CentOs, Scientific Linux, Oracle Unbreakable Linux, ...).

Вы можете использовать md5 (и другие криптографически опасные хэши) только для предметов без криптографии, например. используя его для получения результатов кеширования.

md5=hashlib.new('md5',usedforsecurity=False) md5.update(data_to_hash) hex=md5.hexdigest()

 Смежные вопросы

  • Нет связанных вопросов^_^