05.03 // Случайный неизвестный S-блок в AES слабо увеличивает криптостойкость
Как известно, в старом российском стандарте блочного шифрования ГОСТ 28147-89 не были определены узлы замены (S-блоки). Это позволяло делать утверждения о том, что практика засекречивания S-блоков является эффективным способом повышения стойкости шифра. С практической т.з. это приводит к существенному увеличению размера ключа и сложностям с управлением распределения и периодической смены таких S-блоков.
В шифре AES/Rijndael используется один биективный 8-битный S-блок. Его параметры выбраны на основе эффективного алгебраического представления в целях компактности и эффективности аппаратной реализации. При этом, такой выбор параметров оптимизирован для максимального противодействия линейному и дифференциальному криптоанализу. Однако известно, что если 8-битный S-блок выбирать полностью случайно, то при таком размере он уже практически всегда окажется приемлемо стойким, а вероятности слабых и тривиальных перестановок пренебрежимо малы (хотя и не исключены полностью). Задание такого S-блока как дополнительного секретного параметра в ключе приведёт к увеличению секретной части ключа с 128-256 до 1812-1940 битов. Можно ли таким путём повысить стойкость и быстродействие, разменяв повышенный размер ключа на уменьшенное число раундов?
На примере одного из наиболее эффективных методов криптоанализа против байт-ориентированных шифров этот вопрос изучили Tyge Tiessen, Lars R. Knudsen, Stefan Kobl и Martin M. Lauridsen, кафедра прикладной математики и компьютерных наук DTU Compute, технический университет Дании.
Как оказалось, интегральный криптоанализ, что для стандартного AES, что для AES со случайными неизвестными S-блоками работает в обоих случаях до 6 раундов. Хотя разница в затратах на разные виды атак существенно растёт для AES со случайным блоком на каждый последующий раунд, результаты пока не позволяют признать такой метод защиты обоснованно-эффективным.
Cipher | Rounds | Time | Data | Memory |
---|---|---|---|---|
AES-128 (secret S-box) | 4 | 217 | 216 | 216 |
AES-128 | 4 | 214 | 29 | - |
AES-128 (secret S-box) | 5 | 238 | 240 | 240 |
AES-128 | 5 | 238 | 233 | - |
AES-128 (secret S-box) | 6 | 290 | 264 | 269 |
AES-128 | 6 | 244 | 234 | 236 |
Источник: Cryptology ePrint Archive.
Как размер ключа связан с засекречиванием S-блока? Секретный S-блок ≠ рандомный ⇒ S-блок не выводится из ключа — так?
Таблица, которую вы привели, более оптимистичная в этом плане, чем ваше предложение.
комментариев: 9796 документов: 488 редакций: 5664
Здесь предполагается, что его меняют вместе с ключом и передают как часть ключа. Если передавать случайную перестановку полностью побайтово, то потребовалось бы 256 • 8 = 2048 бит, но у авторов — меньше. Наверное, подразумевается какой-то более компактный способ представления случайных перестановок, но у них в работе не указано.
Он передаётся как его часть, так что он рэндомный.
Сколько раундов AES стойко против интегрального криптоанализа? 6 раундов. А с секретным S-блоком? А столько же. А то, что там экспоненциальные расхождения, так это всё остаётся в рамках ответа на вопрос «быстрее перебора грубой силой или нет». Т.е. такая дикая перестраховка даёт такой скромный результат. Если нужна именно перестраховка, то наверное проще каскад, даже из одного AES, но с разными ключами — хотя бы число раундов искусственно возрастёт. А с т.з. «а возьмём как очень большой ключ, выделим его часть для задания S-блока, но уменьшим число раундов, чтобы выиграть на быстродействии» получается сомнительно и неоптимально.
Т.е. интегральный криптоанализ — самый эталонный против AES, но он не действует дальше 6 раундов, хоть с обычным S-блоком, хоть с секретным.
А с чем нужно сравнивать эти показатели в степени? Сколько в них должно было бы быть, чтобы можно было сказать, что против 6-ти раундов криптоанализ не работает? 2128 вместо 290?
комментариев: 9796 документов: 488 редакций: 5664
Именно так.
комментариев: 1060 документов: 16 редакций: 32
Да похоже просто оценили энтропию случайной перестановки из 256 уникальный элементов как log2(256!) – примерно 1684 бита. В совокупности с независимым от перестановки 128-256-битным ключом это как раз 1812-1940 бит.
комментариев: 9796 документов: 488 редакций: 5664