Рейтинг:2

Почему повторное использование ключа не является проблемой в шифре Фейстеля?

флаг ec

Я хорошо разбираюсь в потоковых шифрах и одноразовом блокноте. Я также знаю об опасностях использования одного и того же ключа в PRG для потокового шифра.

Однако, насколько я могу судить, блочный шифр Фейстеля использует один и тот же ключ для каждого блока открытого текста (который расширяется до ключей для каждого раунда). Если это правда, то почему это не проблема? Это потому, что функция F и, в частности, используемые блоки S необратимы (т.е. один выход имеет много возможных входов)?

флаг et
Поточный шифр функционирует как одноразовый блокнот — использование одного и того же ключа дважды делает его двукратным блокнотом, который можно атаковать — https://crypto.stackexchange.com/questions/59/taking-advantage-of-one- таймпад-клавиша-повторное использование
флаг et
Даже в блочном шифре вы должны каждый раз менять ключ, изменяя IV и т. д., иначе информация об утечке открытого текста нарушает безопасность. Проверьте режимы работы блочных шифров.
user2357 avatar
флаг us
@ user93353 Я думаю, что проблема современного потокового шифра, связанная с вредом использования одного и того же ключа, была решена с помощью IV, я прав?
Рейтинг:2
флаг in

Повторное использование одноразового блокнота выявляет различия открытых текстов из-за его линейности: $$c_1 = m_1 \oplus k,~~~~ c_2 = m_2 \oplus k,~~~~ c_1 \oplus c_2 = m_1 \oplus m_2.$$

С другой стороны, хорошие блочные шифры (основанные на Feistel Networks, SPN или чем-то еще) уменьшают количество информации, напрямую утекающей из-за повторного использования ключа: если $c_1 = E_k(m_1), c_2 = E_k(m_2)$, то учитывая $c_1$ и $c_2$ мы можем только сделать вывод, является ли $m_1$ и $m_2$ равны или нет (проверив, $c_1$ и $c_2$ равны или нет).

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

Однако, используя соответствующий режим блочного шифра (например, CBC, CTR), мы можем рандомизировать входные данные для блочного шифра, так что даже если сообщения одинаковы, входные и выходные данные для блочного шифра будут разными ( с очень большой вероятностью). Таким образом, злоумышленник не сможет сказать, были ли сообщения равны или не были просто заданы зашифрованные тексты.

УПД: чтобы довести мысль до конца, речь идет не о необратимости функции Фейстеля $F$ сам по себе: это может быть обратимо, и FN все еще будет в безопасности (возможно, с еще несколькими раундами). На самом деле, вам даже не нужно инвертировать $F$ расшифровать блок. Сложность его взлома заключается в том, что неизвестный секретный ключ используется сложным нелинейным образом, что очень затрудняет извлечение любой значимой связи между блоками открытого текста / зашифрованного текста (в отличие от многоразового блокнота, где связь является линейной и простой).

Maarten Bodewes avatar
флаг in
Некоторое указание, почему было бы невозможно получить ключ, учитывая известные блоки открытого текста и зашифрованного текста для шифра на основе Фейстеля, было бы неплохо, учитывая вопрос.
Abhisek Dash avatar
флаг ec
@Fractalice Спасибо за ваш ответ. Я понимаю, что вы подразумеваете. Мой вопрос был направлен на поиск «управляющей динамики» блочных шифров. Вся сложность, связанная с блочным шифром, таким как F-функция, которая принимает половину входных данных и ключ в шифрах Фейстеля, делает что-то необратимое. Так что вернуться назад невозможно (или, по крайней мере, очень сложно). Верны ли мои рассуждения?
Fractalice avatar
флаг in
@RajavelPeriyarajan речь идет не о необратимости самой функции $F$. Обратимую $F$ можно легко защитить. На самом деле вам даже не нужно инвертировать $F$ для расшифровки блока. Сложность в том, что используется неизвестный секретный ключ (до, после или внутри $F$), и это сильно затрудняет расшифровку.
Abhisek Dash avatar
флаг ec
@Fractalice Да, ты прав. Ключ — это то, что делает шифр безопасным. Но есть еще одна проблема, а именно повторное использование ключей. Я думаю, что вся сложность внутри необратимой F-функции в шифре Фейстеля облегчает повторное использование ключа для каждого блока открытого текста. Как вы указали, шифр может быть уязвим для атаки с выбранным открытым текстом, но, по крайней мере, он не так опасен, как двойной блокнот.Без функции F шифр Фейстеля был бы уязвим для двух блокнотов времени. Правильно ли я предполагаю это? Кроме того, можете ли вы указать мне некоторые шифры, использующие обратимую функцию?
Abhisek Dash avatar
флаг ec
Другими словами, что делает функция F? Пожалуй, это все, что я хотел спросить.
Fractalice avatar
флаг in
@RajavelPeriyarajan, например. [LBlock] (https://eprint.iacr.org/2011/345.pdf)
Fractalice avatar
флаг in
@RajavelPeriyarajan Это приводит к тому, что называется «путаницей»: это делает связь между открытым текстом / зашифрованным текстом / ключом очень сложной.
Abhisek Dash avatar
флаг ec
@Fractalice Понял. Функция F — это PRF (необратимая псевдослучайная функция), но шифр Фейстеля в целом — это PRP (обратимая псевдослучайная перестановка). Теперь у меня есть более четкое понимание.

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

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