Рейтинг:0

Для чего нужны сети замещения и перестановки в AES?

флаг ec

Я уже довольно давно пытаюсь ответить на этот вопрос. Но полное интуитивное понимание все еще ускользает от меня.

Рассмотрим альтернативную конструкцию блочного шифра без какой-либо сети замен и перестановок. Этот блочный шифр просто выполняет XOR блоков сообщений с разными ключами, полученными из главного ключа (аналогично режиму ECB, но с разными ключами для каждого блока сообщения). Если расширитель ключей, который генерирует несколько ключей из одного главного ключа, криптографически безопасен, то полученный блочный шифр также должен быть криптографически устойчивым. Я почти уверен, что мои рассуждения неверны, но я не могу указать на ошибку.

Приветствуются любые интуитивные объяснения, почему эта конструкция не годится и зачем нужны сети замещения и перестановки в AES.

fgrieu avatar
флаг ng
Подсказка: рассмотрите функцию шифрования вашей альтернативной конструкции для фиксированного секретного ключа. Что такое $E(A\oplus B)$ (где $\oplus$ — это [побитовое исключающее ИЛИ](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)) w.r.t. $E(A)$ и $E(B)$? Можно ли ожидать этого свойства от случайной перестановки? Как это вредит безопасности?
Abhisek Dash avatar
флаг ec
Не могли бы вы уточнить, что представляют собой A и B?
fgrieu avatar
флаг ng
В моем комментарии выше $A$ и $B$ являются произвольными входными данными рассматриваемого блочного шифра (иначе говоря: произвольные блоки открытого текста). Если бы это был AES-192, $A$ и $B$ были бы произвольными 128-битными строками битов.
Abhisek Dash avatar
флаг ec
Вы предлагаете зашифровать A и B одним и тем же ключом? Если я повторно использую ключ, это вызовет проблему с двумя таймпадами. Таким образом, сеть перестановок замещения предотвращает это, запутывая отношения ввода-вывода. Это верно?
fgrieu avatar
флаг ng
Да, я предлагаю изучить последствия шифрования $A$ и $B$ одним и тем же ключом. Это часть предполагаемого использования блочного шифра: он должен оставаться безопасным, даже если один и тот же ключ используется со многими разными блоками. И действительно, повторное использование ключа было бы небезопасным с конструкцией, рассматриваемой в вопросе, по причинам, связанным с тем, что происходит, когда блокнот повторно используется в одноразовом блокноте.
Рейтинг:0
флаг vn

Этот блочный шифр просто выполняет операцию XOR над блоками [...]

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

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

То, что вы имеете в виду именно под «блочным шифром» здесь, имеет решающее значение, потому что если вы собираетесь использовать «шифр, который шифрует сообщения переменной длины по одному блоку за раз», что я критикую, то ваше предложение здесь:

Этот блочный шифр просто выполняет операцию XOR над блоками сообщений с разными ключами, полученными из главного ключа.

... на самом деле это надежный способ построения безопасного шифра переменной длины из блочного шифра (в собственном смысле). Широко используемый Режим работы CTR на самом деле работает примерно так: вы генерируете ключевой поток (то, что вы называете «разными ключами, полученными из главного ключа») путем применения блочного шифра к счетчику блоков сообщений.

Однако в вашем предложении есть огромный пробел, потому что вы не говорите, как получить подключи из главного ключа, кроме как предположить, что он «криптографически безопасен» — что это значит для него? безопасно в этом приложении, и как вы этого добиваетесь? На самом деле, это отличный переход к вашему упоминанию о сетях замещения/перестановки, потому что это «особый соус», который AES использует для удовлетворения этого требования, которого вы вообще не можете достичь, если все, что у вас есть, — это мастер. ключ и исключающее ИЛИ.


Итак, повторим и резюмируем:

  1. Несмотря на то, что в тонне материалов для начинающих говорится, что «блочный шифр» — это алгоритм, который шифрует сообщение переменной длины по одному блоку за раз, это не фактическое техническое определение в криптографии.
  2. Ваша идея шифрования сообщения переменной длины путем разбиения его на блоки и независимой операции XOR с ключами, сгенерированными с помощью «расширителя ключей», по своей сути здрава и очень распространена.
  3. Тем не менее, вы замалчиваете, как будет работать ваш ключевой расширитель, и что именно здесь подходят такие методы, как сети замещения/перестановки (или альтернативы, такие как сети Фейстеля). Это одна из вещей, которая делает AES подходящим для использования в качестве «ключевого расширителя» для этого приложения.
Abhisek Dash avatar
флаг ec
Спасибо за ваш подробный ответ. Я думаю, все, что я спрашиваю, это то, что если ключи, сгенерированные моим «расширителем ключей», неотличимы от случайных, то нужна ли мне все еще сеть перестановок замещения в моем блочном шифре? Или мой блочный шифр может просто XOR блоков сообщений с ключами, сгенерированными расширителем ключей (немного похоже на потоковый шифр)? Я подозреваю, что если мое сообщение нужно дополнить, то эта конструкция может привести к утечке значений ключа, но для простоты предположим, что дополнять не нужно.Я понимаю, что криптография сложна, и мне придется учитывать множество крайних случаев.
Abhisek Dash avatar
флаг ec
Теперь я получил твое объяснение. Будет продолжать исследовать дальше.

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

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