Рейтинг:5

Экстракция случайности HKDF - соль или отсутствие соли?

флаг es

Согласно Бумага HKDF, использование соли служит двум целям: разделение доменов и извлечение случайности.

Этот вопрос касается исключительно необходимости соли для извлечения случайности.

Бумага HKDF состояния:

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

Извлечение случайности и получение ключа бумага (ссылка на документ HKDF) гласит:

Кроме того, предположение о «монолитной» случайности (без ключа), такая как SHA-1, не подходит для настройки извлечение случайности как ни одна функция (даже если она полностью случайная) может извлекать близкое к равномерному распределение из произвольного входные распределения с высокой энтропией. Это так, поскольку когда-то функция фиксирована (даже если к чисто случайным значениям), то Есть входные распределения с высокой энтропией, которые будут сопоставлены с небольшими подмножествами результатов. Таким образом, жизнеспособный подход к извлечению случайности состоит в том, чтобы рассмотреть семейство (или набор) функций, индексированных набором ключей. Когда приложению требуется хеширование ввода для целью извлечения случайности, то случайный элемент (т. функция) из этого семейства выбирается и функция применяется к данный ввод. Хотя могут быть определенные входные распределения, которые плохо взаимодействуют со специфическими функциями в семье, хорошо семейство извлечения случайностей заставит это «плохое событие» произойти с очень маленькая вероятность.

Последний вопрос заключается в том, как генерировать случайные известные ключи, используемые экстрактор. Технически это не сложно, так как стороны могут генерировать соответствующую случайность, но точные детали зависят от применение.Например, в обмене ключами Диффи-Хелмана, обсужденном ранее, стороны обмениваются в чистом виде случайно выбранными значениями, которые затем объединяются для создания одного ключа [соль] для семейства экстракторов (например, HMAC-SHA1).

Бумага HKDF состояния:

семья Меркле-Дамгард [используется при разработке многих популярных алгоритмов хеширования, таких как MD5, SHA-1 и SHA-2] построен на случайных функции сжатия не хороший статистический экстрактор... выход такого семейства на любом распределении, для которого последний блок ввода фиксирован, статистически далек от однородности)

Затем он повторяет точку зрения, сделанную в Извлечение случайности и получение ключа бумага:

Как мы уже подчеркивали в предыдущих разделах, универсальные экстракторы, т. е. те, кто работает над произвольными источниками с высокой минимальной энтропией, должно быть рандомизированный с помощью случайного, но не обязательно секретного ключа (или «соли»). В частности, следующий за леммой 2 пример показывает, что для каждого детерминированный экстрактор есть источник с высокой энтропией, для которого выход далеко не равномерный.

Вопреки этим заявлениям, я знаю реализацию ECDH, которая использует хэш Keccak-256 для общего секретного элемента группы EC без соли, но, возможно, это оправдано либо A) на том основании, что выбор хэша конструкции губки смягчает опасения которые влияют на хэши семейства Меркла-Дамгарда, или B) на том основании, что сжатое точечное представление EC является достаточно однородно случайным (по сравнению с однородностью случайности общего секрета в не-EC DH).

В каких случаях необходима соль? (для каких типов входного ключевого материала и для каких типов функции HMAC-Hash).

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

kelalaka avatar
флаг in
[Стандартное снижение безопасности для HKDF применяется к противнику, который может адаптивно запрашивать HKDF-Expand для многих информационных строк, с теоремой, параметризованной количеством запросов, поэтому предлагаемое вами использование полностью соответствует предполагаемому и изученному использованию HKDF.Это применимо независимо от того, используете ли вы соль или нет.] (https://crypto.stackexchange.com/a/59070/18298)
Рейтинг:1
флаг cn

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

  1. NIST SP800 90B «Рекомендация по источникам энтропии, используемым для генерации случайных битов» не дает конкретных рекомендаций относительно того, какой тип экстрактора или конфигурации следует использовать. Вы можете использовать MD5, как было предложено в вашей первой статье.Или сверните свой собственный экзотический тип, пока вы вычисляете выходную энтропию со смещением $< 2^{-64}$.

  2. Соль может быть общедоступной, поэтому ее можно повторно использовать, поскольку она известна. Помните, что вы не защищаете пароли, а извлекаете их из источников энтропии, которые предоставляют (по общему признанию, неоднородные), но всегда случайные источники. Таким образом, требование соления становится избыточным из-за входного потока энтропии.

  3. Я не согласен с тем, что исправление последнего блока в архитектуре Меркла-Дамгарда подразумевает необходимость соления и HKDF. Да, они доказывают неравномерность последующего вывода, но это, на мой взгляд, сценарий атаки. И если противник может скормить блок всех нулей в ваш экстрактор, вам нужно лучше обезопасить комнату. Простое заполнение учитывается при расчете энтропии ввода-вывода (часто лемма Left Over Hash). Ваша статья на самом деле говорит об этом, продвигая аргумент вычислительной неразличимости.

  4. Коммерческие TRNG не солят случайным образом. Любая соль в любом случае будет повторно использована в производственном цикле.

  5. С философской точки зрения практически все экстракторы случайности имеют встроенную соль в свои векторы инициализации. Посмотрите на блок больших чисел в реализации SHA2. Или матрица Теплица.

Так что я согласен с комментарием kelalaka к вам. Не надо соль.

knaccc avatar
флаг es
Я думаю, что, по сути, вы говорите, что не согласны с утверждением статьи о том, что «существуют входные распределения с высокой энтропией, которые будут сопоставлены с небольшими подмножествами выходных данных» при использовании современного хэша. В этом есть интуитивный смысл, поскольку это похоже на поиск коллизий в хеш-функции путем вмешательства в источник с высокой энтропией.
Paul Uszak avatar
флаг cn
@knaccc Думаю, да. Вы привели три разных примера (ваши две статьи и ваш личный опыт ECDH). Часто существуют расхождения между математическими/академическими подходами и экстракторами TRNG реального мира.

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

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