Этот блочный шифр просто выполняет операцию XOR над блоками [...]
Тот факт, что вы говорите здесь о «блоках сообщений», предполагает, что вы работаете с одним из тех ужасных (неправильных) определений «блочного шифра» для начинающих, которые говорят, что это шифр, который шифрует сообщение переменной длины по одному блоку за раз. . Об этом говорится во многих вводных объяснениях, но настоящие криптографы используют этот термин не так, поэтому я нахожу это (предположительно) удобное для начинающих «определение» просто неверным и сбивающим с толку.
Блочный шифр в теоретической криптографии — это алгоритм, задуманный как реальная реализация семейство псевдослучайных перестановок- алгоритм с секретным ключом, который реализует функцию, которая шифрует блоки данных фиксированной длины способом, который на практике невозможно отличить от случайно выбранной перестановки его домена. Этот ответ на этом сайте довольно подробно рассказывает об этом.
То, что вы имеете в виду именно под «блочным шифром» здесь, имеет решающее значение, потому что если вы собираетесь использовать «шифр, который шифрует сообщения переменной длины по одному блоку за раз», что я критикую, то ваше предложение здесь:
Этот блочный шифр просто выполняет операцию XOR над блоками сообщений с разными ключами, полученными из главного ключа.
... на самом деле это надежный способ построения безопасного шифра переменной длины из блочного шифра (в собственном смысле). Широко используемый Режим работы CTR на самом деле работает примерно так: вы генерируете ключевой поток (то, что вы называете «разными ключами, полученными из главного ключа») путем применения блочного шифра к счетчику блоков сообщений.
Однако в вашем предложении есть огромный пробел, потому что вы не говорите, как получить подключи из главного ключа, кроме как предположить, что он «криптографически безопасен» — что это значит для него? безопасно в этом приложении, и как вы этого добиваетесь? На самом деле, это отличный переход к вашему упоминанию о сетях замещения/перестановки, потому что это «особый соус», который AES использует для удовлетворения этого требования, которого вы вообще не можете достичь, если все, что у вас есть, — это мастер. ключ и исключающее ИЛИ.
Итак, повторим и резюмируем:
- Несмотря на то, что в тонне материалов для начинающих говорится, что «блочный шифр» — это алгоритм, который шифрует сообщение переменной длины по одному блоку за раз, это не фактическое техническое определение в криптографии.
- Ваша идея шифрования сообщения переменной длины путем разбиения его на блоки и независимой операции XOR с ключами, сгенерированными с помощью «расширителя ключей», по своей сути здрава и очень распространена.
- Тем не менее, вы замалчиваете, как будет работать ваш ключевой расширитель, и что именно здесь подходят такие методы, как сети замещения/перестановки (или альтернативы, такие как сети Фейстеля). Это одна из вещей, которая делает AES подходящим для использования в качестве «ключевого расширителя» для этого приложения.