Рейтинг:1

Минусы потоковых шифров, основанных на хеш-функциях

флаг al

В ответ здесь кто-то упоминает:

если у вас есть хеш-функция с полномочиями оракула, то довольно легко сгенерировать псевдослучайный поток из секретного ключа путем хеширования K||n, где K — секретный ключ, а n — счетчик. Совершая XOR этого зависящего от ключа псевдослучайного потока с данными для шифрования, вы получаете потоковый шифр.

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

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

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

Действительно ли единственная проблема заключается в том, что «не доказано, что этих условий достаточно для построения потокового шифра»? Какие еще проблемы с потоковыми шифрами возникают из-за хеш-функций? Наверное, они менее безопасны? Они, наверное, медленнее? Возможно, они используют слишком много памяти? Просто исследуются другие алгоритмы шифрования, которые обещают лучшие результаты?

Я бы предположил, что хэш-функция с большим размером блока имеет то преимущество, что можно использовать более длинные ключи или более длинные одноразовые номера. Для SHA-512 можно использовать ключ длиной 384 бита и одноразовый номер длиной 128 бит. Другой возможностью было бы продолжать использовать 256-битные ключи, использовать 128-битные одноразовые номера и иметь лучший максимальный размер сообщения 2 ^ 128 блоков (или 2 ^ 137 бит для SHA-512) по сравнению с ~ 2 ^ 39 бит для AES-GCM с только 96-битные одноразовые номера (что, на мой взгляд, было бы хорошей целью).

kelalaka avatar
флаг in
Связанные [Является ли SHA-256 безопасным как блочный шифр CTR?] (https://crypto.stackexchange.com/q/1656/18298) и [Можем ли мы вместо этого использовать своего рода «хеш-функцию» в режиме CTR блочного шифра?](https://crypto.stackexchange.com/q/37566/18298)
Рейтинг:7
флаг us

Действительно ли единственная проблема заключается в том, что «не доказано, что этих условий достаточно для построения потокового шифра»?

Таким образом, устойчивости к коллизиям действительно недостаточно для создания безопасного потокового шифра, стандартным примером может быть использование устойчивой к коллизиям хеш-функции и добавление 128 $0$ бит на выходе.Это явно наследует сопротивление столкновению, но также не обеспечивает вывод, неотличимый от случайного.

Они, наверное, медленнее?

Обычно это определяется как основная проблема. Вычисление хеш-функций обычно в 3-10 раз медленнее, чем вычисление специальных симметричных конструкций, таких как AES. Это, скорее всего, связано с характером хеширования, которое имеет «более сильную» модель угроз, поскольку необходимо обеспечить безопасность перед лицом противника, знающего все значения в вычислениях, тогда как AES должен предлагать безопасность только тогда, когда противник не знает ни одного ввода. - ключ.

Наверное, они менее безопасны?

Хотя мы могли бы использовать хеш-функции, которые не обеспечивают псевдослучайности в своих выходных данных, стандартные конструкции, которые мы используем, были тщательно разработаны, чтобы обеспечить одинаково случайный вывод.
Подробные аргументы зависят от лежащей в основе конструкции, но обычно мы можем построить безопасный генератор ключевого потока как некую вариацию $H(k\|p\|n\|\text{ctr})$ для современных хеш-функций с соответствующим дополнением $р$.
В этом случае базовое предположение о безопасности аналогично предположению HMAC, требуя, чтобы внутренняя функция сжатия хэшей Меркла-Дамгарда была PRF с двумя входами, а внутренняя перестановка хэшей на основе Sponge была случайной перестановкой, которая уже предполагается для устойчивости к коллизиям.

Maarten Bodewes avatar
флаг in
Еще одна вещь, которая может не * требоваться * для хеш-функций, заключается в том, что ключ должен быть защищен, например, от атаки по сторонним каналам. Это также не является проблемой для большинства хеш-функций (иначе у HMAC были бы проблемы), но это может быть незаметно для *любой* хэш-функции/реализации.
kelalaka avatar
флаг in
Кроме того, PRF является одним из способов и может предоставлять широкий спектр функций вместо PRP.
Рейтинг:6
флаг us

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

Выход криптографической хэш-функции, устойчивый к коллизиям и прообразам, не обязательно означает, что они производят вывод, неотличимый от случайного.Потому что при атаке с выбранным открытым текстом сгенерированный поток можно легко извлечь. Если поток различим, то различимый шаблон может раскрывать информацию об открытом тексте. Насколько я знаю (другие поправят меня, если я ошибаюсь), ни одна из используемых в настоящее время хэш-функций не знает о такой проблеме. [И, как указывали другие, это может быть связано с тем, что такой криптоанализ хэш-функций, используемых в качестве генератора потока, не был выполнен с достаточной строгостью, поскольку он никогда не предназначался для использования таким образом]

Есть некоторые проблемы с тем, как был представлен ваш вопрос. Есть одноразовый номер, счетчик и ключ. Вы говорите об одноразовых значениях ниже, но не о счетчике и приведенном вами уравнении. $Ч(к\mathbin\|n)$ из ответа есть счетчик, но нет одноразового номера, поэтому вы не дали понять, как вы их используете.

Во всяком случае, насколько нам известно, $H(k\mathbin\|n\mathbin\|\text{ctr})$ куда $n$ и $\текст{ктр}$ соответственно, nonce и counter могут быть хорошим генератором потока для большинства хеш-функций, я думаю, пока $к$, $n$ и $\текст{ктр}$ все имеют фиксированную длину (вам не нужно беспокоиться об атаках типа расширения длины для ввода фиксированной длины). Но в более общем случае вы должны использовать функции, которые считаются псевдослучайными функциями (например, HMAC) для разумной гарантии безопасности, если вы хотите использовать поток на основе хэша. Как в $\operatorname{HMAC}_k(n\mathbin\|\text{ctr})$ . И поскольку HMAC использует двойное хэширование, а блочные шифры, такие как AES, имеют высокую оптимизацию, я полагаю, что он не обеспечивает той производительности, которую обеспечивают современные потоки (чача, AES-CTR/GCM), даже если он достаточно безопасен.

kelalaka avatar
флаг in
Как работает атака с расширением длины в режиме CTR?
Manish Adhikari avatar
флаг us
@kelalaka Я сказал "МОЖЕТ". На самом деле, я мало думал о том, как это сделать, пока писал ответ.Я не могу придумать реалистичный сценарий для этого, но могу представить дикий сценарий, в котором n может иметь любую произвольную длину (т. е. несколько блоков), а злоумышленник может контролировать IV, но не может повторить его. Поэтому он создает что-то вроде $n' = n\|i\|padding$ и расширяет длину от этого. Или находит какой-то шифр с большим одноразовым номером и правильным форматом для этого и выполняет CPA с контролем над одноразовым номером (использует маленький одноразовый номер), получает поток и выполняет расширение длины, чтобы получить исходный поток
Manish Adhikari avatar
флаг us
Конечно, попробовать это на встречном значении не может быть и речи.
Manish Adhikari avatar
флаг us
@kelalaka Если рассматривать менее «дикий» сценарий, то в системе есть недостаток, из-за которого весьма вероятно, что она выбирает IV правильного формата, как описано выше, и подвержена атаке с выбранным зашифрованным текстом. Зашифрованный текст должен быть аутентифицирован с использованием MAC, но не аутентифицируется IV. IV добавляется к выбранному зашифрованному тексту, и система не будет расшифровывать целевой зашифрованный текст (тот, который использует IV правильного формата). В этом случае CCA2 может раскрыть ключевой поток для целевого зашифрованного текста посредством расширения длины.
kelalaka avatar
флаг in
Это нереально в современной криптографии. Зачем нам нужно определять переменную длину, чтобы усложнить анализ и безопасность? Мы уже знаем проблемы вокруг этого, есть масса упражнений по этому поводу и тому подобных PRF.
Manish Adhikari avatar
флаг us
Я думаю, что да, я должен был сформулировать это лучше. Немного редактирую свой ответ

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

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