Рейтинг:28

Почему соответствие FIPS 140-2 вызывает споры?

флаг ng

Я читал комментарии к статье о предлагаемой новой реализации /dev/случайный в Linux сегодня, и кто-то заметил, что, должно быть, утомительно пройти 43 ревизии и все еще не получить свой патч. Несколько комментариев в конце и кто-то, по-видимому, подразумевает, что эта новая реализация будет соответствовать FIPS 140-2., и что это вызывает споры с «разработчиком одного известного модуля ядра VPN», который «намеренно использует только алгоритмы, не одобренные NIST», имеет «твердое мнение против соответствия FIPS, необходимого для правительственных случаев использования».

Почему это? Что вызывает споры о соответствии FIPS 140-2?

флаг ke
Еще одна вещь, которая заставляет практиков неодобрительно относиться к FIPS (хотя, возможно, и не в контексте `/dev/random`), заключается в том, что код, который был протестирован на соответствие стандартам, постоянно отстает от «последнего» кода — он отсутствовать исправления ошибок, в том числе исправления ошибок безопасности; и очень дорого перепроверить. Более того, набор наборов шифров, указанный FIPS, и наборы шифров, которые на самом деле считаются передовой практикой для использования в реальном мире, со временем выходят из строя. Реализация, прошедшая аудиторскую проверку на соответствие требованиям FIPS — чего угодно — является _старой_ реализацией.
флаг pk
Часть его упоминается ниже. Чтобы система была совместимой, не должно быть возможности использовать несовместимые алгоритмы и методы. Это несложно на уровне ОС платформы. Например, в Windows, когда включен режим FIPS, невозможно создать или использовать обычные текстовые ключи шифрования тома агента восстановления. Для разработчиков приложений, возможно, не так просто. И вы можете использовать только более старые алгоритмы, в которых могут отсутствовать некоторые криптоалгоритмы управляемых платформ (Java/.NET).
Рейтинг:33
флаг ng

я добавлю в другой ответ: в Правила сертификации FIPS 140-2 для ГСЧ были несовершенны; и уведомление об изменении FIPS 140-2 2 (декабрь 2002 г.) удалили часть о самотестировании.. Они буквально вычеркнуты из стандарта, оставив вакуум. Таким образом, FIPS 140-2 не предписывает технически удовлетворительного теста источника энтропии, никогда не предписывал, и это проблема. Он предписывает только утвержденные криптографические условия (по которым у меня нет технических оговорок после выхода Dual_EC_DRBG).

Первоначально было предписано 4 теста (монобит, покер, прогоны и длительные прогоны), которые должны выполняться по требованию оператора (на уровне 3) или при каждом включении питания (уровень 4), с ручным вмешательством, требуемым в случае сбоя теста. Это неправильно по нескольким причинам:

  • Уровни приемлемости очень строгие (больше, чем они были в FIPS 140-1). Даже с идеальным генератором испытания в полевых условиях со значительной долей вероятности пройдут неудачно, и потребуется вмешательство человека. Это просто неприемлемо для некоторых приложений, включая операционные системы, доверенные платформенные модули и смарт-карты. Все, что работает без присмотра, не может быть уровня 4, а искажения требуются на уровне 3, чтобы оправдать «требование оператора».
  • Не указано, что эти тесты должны выполняться на безусловном источнике энтропии. Таким образом, заманчиво запускать тесты на случайных числах, выводимых каким-либо блоком обработки, что делает тесты в значительной степени бессмысленными: если источник безусловной энтропии дает сбой или становится низкоэнтропийным, проверка обусловленного вывода не уловит этого, если только кондиционирование не имеет огромного теоретического недостатка.
  • Уровень приемлемости некоторых тестов (в частности, монобитного теста и, в меньшей степени, покерного теста) таков, что небольшая погрешность, которая является совершенно нормальной и безвредной для безусловного источника энтропии с последующей надлежащей криптографической обработкой, вызовет катастрофически высокий процент отказов. . Таким образом, практически невозможно применить тесты к материалу, который требует тестирования.

Последние два вопроса остаются с более поздним СП 800-22 Ред. 1а Статистические тесты NIST для ГСЧ для криптографических приложений (которые, по моему ограниченному пониманию, теперь используются при сертификации). Математика тестов в порядке. Но, как указано выше, тесты очень чувствительны, поэтому их нельзя использовать на некондиционированном источнике истинной энтропии (тесты часто терпят неудачу), поэтому их можно использовать только на выходе кондиционированного источника, поэтому они не могут обнаружить дефекты источника, если кондиционирование хорошее. И невозможно обнаружить грамотно замаскированный генератор только по его выходу.

Таким образом, эти тесты либо терпят неудачу и дают хорошую гарантию того, что тестируемый материал отличим от случайного, либо завершаются успешно и дают кажущуюся гарантию безопасности, даже если энтропия источника очень ограничена или в кондиционировании есть черный ход, который может позволить атаку. .

Сотрудники NIST компетентны, и разумно задаться вопросом, не является ли истинной целью этих тестов создание иллюзии безопасности. Это согласуется с долгой историей США, активно занимающихся тайным использованием ослабленной криптовалюты:

  • Сложный и многолетний компрометация Swiss Crypto AG фирма, которая продавала заведомо ослабленные шифровальные машины.
  • DES: публикация АНБ, теперь уже рассекреченная, признает, что 56-битный ключ является результатом сделки между разработчиками, желающими получить 64-битный (по крайней мере, Люцифер в дизайне был вариант для 128-битных ключей); и АНБ, пытающееся навязать 48-битную систему для облегчения взлома; видеть это.
  • Dual_EC_DRBG упоминается в другом ответе: преднамеренная попытка (и в свое время успешная) широко использовать ГСЧ с общедоступным дизайном и параметрами, который был бы безопасным, за исключением властей США (или того, кому удалось изменить открытый ключ, что случилось).
Рейтинг:31
флаг mc

Потому что ранее существовал утвержденный NIST генератор случайных чисел (Dual_EC_DRBG), который защищал АНБ и имел недостаток, который обычно считается преднамеренным бэкдором, созданным АНБ. Это заставило некоторых людей не доверять любым криптоалгоритмам, разработанным NIST. Много статей в сети по этому поводу, вот один от Шнайера это объясняет проблему достаточно подробно.

флаг mg
Я лично находил это всегда немного чрезмерной реакцией. Да, с Dual_EC_DRBG случился фиаско. Но мы по-прежнему используем AES, SHA2 и будем использовать все, что победит в конкурсе постквантовых алгоритмов. Мой вывод всегда был таким: не доверяйте стандартам *слепо*. Я имею в виду, что кривые EC мозгового пула также имеют некоторые причудливые константы, они по-прежнему генерируют намного меньше шума, чем что-либо, выходящее из NIST.
Swashbuckler avatar
флаг mc
@ D.Kovács Я понимаю вашу точку зрения, но подавляющее, подавляющее большинство людей не обладают техническими знаниями для оценки криптоалгоритмов на наличие недостатков (намеренно введенных или нет), и поэтому они должны слепо доверять.
флаг za
@D.Kovács Преднамеренная попытка ослабить криптографию — это не фиаско, это атака. Кроме того, как упоминалось в ответе fgrieu, тесты FIPS 140-1 и 140-2 ошибочны. Таким образом, их также можно рассматривать как попытку ослабить вашу криптографическую систему, давая пользователям ложное чувство безопасности. Противоречие является результатом того, что разработчики не доверяют слепо стандартам - как вы сами предложили
user avatar
флаг in
@slebetman У вас есть какие-либо факты, подтверждающие заявление о том, что это было преднамеренно?
флаг za
Меморандумы @user АНБ, опубликованные Эдвардом Сноуденом и опубликованные New York Times, указывают на то, что дело Dual_EC_DRBG было преднамеренной попыткой АНБ внедрить математический бэкдор (облегчив им угадывание случайных чисел) в стандарты шифрования.У нас, конечно, нет оригиналов документов, потому что, в отличие от Wikileaks, Сноуден не обнародовал секретные документы — только для прессы. Вам решать, хотите ли вы верить Нью-Йорк Таймс или АНБ, но я уверен, что АНБ будет лжецом, потому что это их работа.
Mark avatar
флаг jp
@user, мы не *знаем*, что оригинальный Dual_EC_DRBG был замаскирован АНБ, но мы знаем, что неизвестные пока злоумышленники [изменили значение Q двойного EC, реализованного Juniper Networks](https:// www.schneier.com/blog/archives/2016/04/details_about_j.html), чтобы получить собственный бэкдор.
fgrieu avatar
флаг ng
@user: Бэкдор Dual_EC_DRBG был бесспорно преднамеренным: дизайн имеет смысл только сам по себе. И есть [патент] (https://worldwide.espacenet.com/textdoc?DB=EPODOC&IDX=US2007189527), в котором четко указано намерение. Мое наблюдение о том, что тесты ГСЧ в FIPS 140 и SP 800-22 могут _намеренно_ пытаться дать ложное ощущение безопасности, является спекулятивным, основанным на том факте, что эти тесты не являются действительным доказательством безопасности (например, они дают Dual_EC_DRBG чистую ведомость). здоровье). Между прочим, они используются в качестве фиктивного аргумента безопасности ГСЧ в десятках, а то и сотнях некачественных публикаций.
Joshua avatar
флаг cn
@fgrieu: Моя очередь играть адвоката дьявола. Предположим, вы хотите надежно построить RNG, который не допускает утечки состояния. Предположим, вы сделали это, создав один из алгоритмов асимметричного шифрования, который с максимальной эффективностью раскрыл свое состояние, чтобы не было свободной энтропии для утечки чего-либо еще, а затем уничтожил ключ дешифрования? Разве это не доказывает, что ГСЧ не имеет состояния утечки?
Рейтинг:7
флаг mx

Вы можете сделать наилучший выбор во всех случаях, если вам не нужно соблюдать FIPS 140-2. Если вам необходимо соответствовать FIPS 140-2, вы можете сделать только лучшее. одобренный выбор. Таким образом, соответствие FIPS 140-2 никогда не позволяет вам сделать лучший выбор, а иногда вынуждает делать худший выбор.

Скажем, вам нужно выбрать один из двух вариантов, один из которых одобрен FIPS 140-2, а другой обычно рассматривается криптографическим сообществом как гораздо более безопасный выбор. Что выбрать?

Ответ заключается в том, что вам определенно следует выбрать тот, который считается гораздо более безопасным. пока не вы должны соответствовать стандарту FIPS 140-2. В этом случае вы должны использовать совместимый.

Очень хорошо использовать одобренные FIPS 140-2 методы, когда они имеют смысл.Единственное отличие соответствия FIPS 140-2 заключается в том, что в некоторых случаях оно вынуждает вас делать худший выбор.

fgrieu avatar
флаг ng
Да, FIPS 140-2 ограничивает использование детерминированного кондиционирования. Но в отличие от Dual_EC_DRBG, те (все еще) одобренные просты, и мое (и многие другие) мнение таково, что они не более бэкдоры, чем SHA-2 или AES. Таким образом, только из принципа, а не из технических соображений, мы можем отказаться от них. ИМХО самая реальная техническая проблема с FIPS 140-2 — это отсутствие онлайн-теста (полевой тест, что источник энтропии хороший). Таких тестов было несколько, они были технически дефектны и буквально [вычеркнуты](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf#page=65).
флаг mx
@fgrieu У меня были случаи, когда в продукте, сертифицированном по FIPS 140-2, была ошибка, которая явно ставила под угрозу безопасность, и у меня был выбор: исправить ошибку и потерять сертификацию FIPS 140-2 или сохранить и ошибку, и сертификацию.
Рейтинг:1
флаг cn

Мои мысли слишком длинны для комментариев, поэтому я завершу их как ответ...

Есть некоторые серьезные проблемы с двумя другими ответами, поскольку некоторые из нас неверно истолковали, что такое тест случайности. По пунктам: -

1. «не доверяйте любым криптоалгоритмам, разработанным NIST». В FIPS нет алгоритмов, созданных NIST. Конечно, никакой сложности Dual_EC_DRBG. Прогоны и покерные тесты не являются проприетарными алгоритмами Министерства торговли США (NIST). Это математические характеристики равномерно случайного распределения. Если я утверждаю, что ожидаемое количество единиц должно быть ~ 50%, делает ли это меня подрывником? Также не расширяется среднее значение 0,5 с $n$ Стандартное отклонение. $\mathcal{N}(\mu, \sigma^2)$ является стандартизированной формой для этого дистрибутива, и я не ожидаю ничего менее неполного. Проверка повторяющихся выходных блоков (тест непрерывного генератора случайных чисел) — это не подрывная деятельность, а здравый смысл.

2. Могу ли я предложить этот тест FIPS в качестве доказательства: -

$cat /dev/urandom | рангтест
тест 5
Copyright (c) 2004 Энрике де Мораес Хольшух
Это бесплатное программное обеспечение; см. источник условий копирования. НЕТ гарантии; даже не для КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.

rngtest: запуск тестов FIPS...
rngtest: биты, полученные с ввода: 8310580032
rngtest: FIPS 140-2 успешно: 415198
rngtest: сбои FIPS 140-2: 331
rngtest: FIPS 140-2 (2001-10-10) Монобит: 41
rngtest: FIPS 140-2 (2001-10-10) Покер: 53
rngtest: FIPS 140-2 (2001-10-10) Прогоны: 123
rngtest: FIPS 140-2 (2001-10-10) Длительный период: 115
rngtest: FIPS 140-2 (2001-10-10) Непрерывная работа: 0
rngtest: скорость входного канала: (min=10,703; avg=1976,720; max=19073,486) Мбит/с
rngtest: Скорость тестов FIPS: (минимум = 75,092; средняя = 199,723; максимальная = 209,599) Мбит/с
rngtest: Время выполнения программы: 43724402 микросекунды

Частота отказов составляет p = 0,0008. Это очень сравнимо с порогом p = 0,001 в наборе тестов SP800 STS, а также с твердолобым:

ВНИМАНИЕ: оценка(и) для рангов может быть фактически полностью
  неверным или вводящим в заблуждение. В частности, должны встречаться «слабые» значения p.
  один тест из ста, а значения p «Неудачные» должны встречаться в одном тесте из
  тысяча -- вот что ЗНАЧИТ p. Используйте их на свой страх и риск! Имейте в виду!

Так что вроде не спорно.

3. «Не указано, что эти тесты должны выполняться на безусловном источнике энтропии».. Конечно нет. Правильно. Ни у кого нет статистических характеристик для безусловного распределения источников энтропии. Они бывают всех форм и мест. Некоторые из них не имеют даже математических названий (двойная выборка логнормального, ванна МОД $х$ и т.д.) Мы можем запускать только стандартизированные статистические тесты на кондиционированном конечном выводе.

4. «Невозможно обнаружить грамотно замаскированный генератор только по его выходу». Опять же, конечно. Это не намерение, например. Стартовое тестирование FIPS. Для этого вам нужны программисты и криптографы. FIPS просто автоматизирует тестирование на случайность и устанавливает рекомендации для базового программирования безопасности, такие как отсутствие строковых литералов для управления и перемещаемый код. Все очень нормально.

Поэтому FIPS 140 не так уж и спорен. Сказать так все равно что сказать, что NIST заблокировал нормальное распределение или что твердолобый бесполезен. FIPS просто не хорош в некоторых вещах. А тестирование 20 000-битных блоков аккуратно вписывается в нижнюю часть шкалы тестирования случайности, чуть ниже энт (500 000 бит).

poncho avatar
флаг my
«В FIPS нет алгоритмов, сгенерированных NIST»; на самом деле, CTR_DRBG, HASH_DRBG и HMAC_DRBG были разработаны Джоном Келси из NIST...
fgrieu avatar
флаг ng
Некоторые комментарии были [перемещены в чат] (https://chat.stackexchange.com/rooms/131745/discussion-on-answer-by-paul-uszak-why-is-fips-140-2-compliance-controversial) продолжать этот интересный обмен.
Paul Uszak avatar
флаг cn
@fgrieu Со мной это часто случается, не так ли?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.