Рейтинг:0

Подвержено ли многократное шифрование с использованием режима работы CBC атакам Meet-in-the-middle?

флаг pf

Я прочитал это однажды на странице (ссылку не помню и не нашел), где говорилось о каскаде AES с двумя 256-битными ключами и о том, что он обеспечивает 384-битную безопасность. Возможно, не 512-битная мощность из-за размера блока AES-256, равного 128-битным.

Это оставило у меня сомнения.

Предположим, я шифрую что-то два раза, используя режим CBC и два разных ключа.

Злоумышленник не может определить блок, зашифрованный с помощью первого уровня шифрования, поскольку выполняется операция XOR с предыдущим блоком, а предыдущий блок зашифрован вторым уровнем шифрования. Это может сделать шифрование невосприимчивым к атакам Meet-in-the-middle, я прав или нет?

kelalaka avatar
флаг in
Если вы не находите предыдущий ответ полезным, зачем писать другой? Следует указать, что непонятно или почему ответ не был полезен. Ответ — да [аналогично предыдущему] (https://crypto.stackexchange.com/a/98436/18298). Предыдущий блок — это IV, поэтому атака MiTM возможна с атакой по известному открытому тексту. Кроме того, вы должны поддержать свою претензию, предоставив страницу.
phantomcraft avatar
флаг pf
@kelalaka Извините, я не помню ссылку на страницу, я искал ее, но не могу найти. Как отметить ответ полезным? Извините, я не нахожу этот ресурс здесь, на странице вопросов.
kelalaka avatar
флаг in
Можно проголосовать за ответ, если он полезен/правилен/и т. д. Спрашивающий может принять ответ, если ответ его удовлетворит (галочка под голосованием за/против). Чтобы другие могли видеть, что вопросы удовлетворительны. Поставьте минус, если это не так, и укажите это в комментарии.
Рейтинг:2
флаг ar

Если IV для обоих зашифрованных уровней передаются в открытом виде, то существует общая атака восстановления ключа с известным открытым текстом, которая работает (по существу) в любом режиме шифрования и позволяет восстановить два ключа, используя примерно $3 \lceil k \mathbin/ b \rceil \cdot 2^k$ блокировать шифрование/дешифрование, $2k \cdot 2^k$ биты памяти и $O(к\cdot 2^k)$ среднее время незашифрованных вычислений, где $к$ и $b$ - размеры ключа и блока шифра в битах (т.е. $k = b = 128$ для AES-128 или $к = 256$, $б = 128$ для AES-256). Это просто выглядит так:

  1. Расшифровать первый $\lceil k \mathbin/ b \rceil$ блоков зашифрованного текста с каждым из $2^к$ возможные внешние ключи и известный внешний IV. Для каждого ключа возьмите первый $к$ биты результирующего открытого текста (если $к$ уже не кратно $b$, что всегда для AES), добавьте ключ и сохраните комбинированный $2k$-битовая строка в списке.

  2. Отсортируйте список. (Это занимает $O(n\logn)$ время для $n$-список элементов, где $n = 2^k$ в таком случае.)

  3. Попытка зашифровать первый $\lceil k \mathbin/ b \rceil$ блоков известного открытого текста, используя каждый из $2^к$ возможные внутренние ключи и известный внутренний IV. Для каждого ключа найдите первый $к$ биты результирующего открытого текста в списке (используя бинарный поиск, который занимает $O(\log п)$ time), чтобы получить список возможных внешних ключей, которым может соответствовать этот внутренний ключ. (Среднее количество совпадений-кандидатов, которые вы найдете для каждого внутреннего ключа, равно одному, хотя, конечно, некоторые ключи не будут иметь совпадений, а некоторые будут иметь несколько.) Если совпадения есть, зашифруйте еще один блок известного открытого текста с помощью внутреннего ключа. ключ и расшифровать еще один блок зашифрованного текста с каждым совпадающим внешним ключом, чтобы увидеть, совпадают ли они по-прежнему. Если они это сделают (что вы ожидаете после тестирования в среднем половины внутренних ключей), у вас почти наверняка есть правильная пара ключей.

Обычная атака методом полного перебора ключей на не замужем многоуровневое шифрование, конечно, занимает около $\frac12 \lceil k \mathbin/ b \rceil \cdot 2^k$ заблокировать шифрование/дешифрование в среднем. Таким образом (по крайней мере, если мы игнорируем затраты памяти и учитываем только операции блочного шифрования) двойное шифрование с известными IV только (максимум) $6$ раз труднее взломать в среднем, чем одиночное шифрование, для (всего!) около $\log_2 6 ≈ 2,6$ дополнительные элементы безопасности. Который, просто чтобы быть ясным, абсолютно ничтожен.

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


Обратите внимание, что общая атака «встреча посередине», описанная выше, зависит от того, что внутренний IV доступен злоумышленнику в открытом виде. Если это не так, но вместо этого он также зашифрован внешним ключом, то атака не будет работать без модификаций.

Конечно, тривиальным решением было бы просто перебрать все возможные значения 128-битного внутреннего IV на шаге 2. Для двойного AES-256 это позволит взломать двойное шифрование примерно за $2^{128} \times 2^{256} = 2^{384}$ шифрования AES, что все еще меньше, чем $2^{512}$ шифрования, которые можно было бы ожидать от длины ключа.

kelalaka avatar
флаг in
Вы перешли на полный режим, который мне надо обновить, значит, тоже. :)

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

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