Глава 4. Блочные шифры
Заявления о возможности осуществления XSL-атак делают процесс выбо-
ра блочного шифра несколько неприятным. Мы просто не знаем, насколько
такие атаки влияют на безопасность блочного шифра. Информации по этой
теме пока еще очень немного, а та, что есть, постоянно оспаривается. По-
скольку ни один блочный шифр не разрабатывался с учетом возможности
XSL-атак, все эти шифры могут оказаться уязвимыми. На наш взгляд, в те-
кущей ситуации выбор шифра не должен определяться восприимчивостью
к XSL-атакам. Никто не может сказать, насколько один шифр более уязвим,
нежели другой.
Самым безопасным выбором для карьеры, безусловно, является AES. Это
официальный стандарт шифрования, принятый правительством США. Он
будет использоваться всеми и каждым. Конечно же, мы не думаем, что это
самый удачный выбор в плане безопасности данных. Тем не менее, даже если
AES и взломают, это будет не ваша вина. Вы, вероятно, не раз слышали
фразу: “Никого не оштрафуют за то, что он купил IBM”. Точно так же никто
не упрекнет вас за то, что вы выбрали AES. Итак, если речь не идет о вашем
семейном бюджете и/или спокойном сне, смело выбирайте AES.
Алгоритм AES имеет и другие преимущества. Он довольно прост в реали-
зации и применении. Его поддерживают все криптографические библиотеки
и любят все клиенты, потому что “это стандарт”. Исходя из этого, вы опре-
деленно не ошибетесь, выбрав AES.
Если вы серьезно обеспокоены безопасностью своих данных и готовы ради
этого пожертвовать быстродействием, выбирайте Serpent. В процессе отбора
кандидатов на AES все авторитетные криптографы признали, что Serpent
был самым безопасным (или самым консервативным) из всех поступивших
предложений.
Приведенные выше аргументы практически не оставляют места для Two-
fish. Выбирайте Twofish только тогда, когда хотите получить скорость AES
без всех присущих тому недостатков в плане обеспечения безопасности. Ра-
зумеется, в этом случае все преимущества AES как официального стандарта
шифрования будут направлены против вас. Если Twofish взломают, вас об-
винят в неправильном выборе шифра.
В некоторых ситуациях наилучшим выбором все еще является 3DES. Если
вам нужно обеспечить обратную совместимость с существующими система-
ми или же если остальные части системы не поддерживают размеры блоков
более 64 бит, выбирайте 3DES. Не забывайте, однако, что он не удовлетворя-
ет нашим критериям безопасности, и будьте особенно бдительны, используя
маленькие 64-битовые блоки.
4.5. Современные блочные шифры
85
4.5.8
Каким должен быть размер ключа
Все три шифра, рекомендуемые нами для использования в современных
системах (AES, Serpent и Twofish), поддерживают ключи размером 128, 192
и 256 бит. Практически всем приложениям достаточно уровня безопасности
128 бит. Несмотря на это, нам очень не нравятся 128-битовые ключи.
Эти ключи хороши всем, за исключением одного: возможность осуществ-
ления атак на основе коллизий. Нам то и дело попадаются системы, чув-
ствительные к атакам, в основе которых лежит парадокс задачи о днях рож-
дения, или к двусторонним атакам. Одни разработчики просто игнорируют
такие атаки, другие думают, что защищены от них, однако ни те, ни другие
не застрахованы от появления новых, более изощренных способов нападения.
Большинство режимов работы блочных шифров в той или иной форме допус-
кают двусторонние атаки. Мы уже достаточно натерпелись от них, а потому
предлагаем еще одно правило проектирования.
Правило проектирования 3.
Если уровень безопасности системы равен
n
бит, каждое криптографическое значение должно иметь длину, как ми-
нимум,
2
n
бит.
Это правило сводит на нет все усилия по обнаружению коллизий, а рас-
ходы на его реализацию не так уж велики. В реальной жизни, однако, сле-
довать ему довольно сложно. Например, для обеспечения 128-битового уров-
ня безопасности необходимо использовать блочный шифр с размером блока
256 бит, однако все распространенные блочные шифры работают с блоками
по 128 бит. Данная проблема намного серьезнее, чем кажется. Существует
довольно большое количество атак на основе коллизий, направленных на ре-
жимы работы блочных шифров.
Несмотря на это, мы, как минимум, можем использовать ключи большего
размера, которые поддерживают все рекомендуемые нами шифры. Отсюда
урок: используйте 256-битовые ключи!
К сожалению, шифр AES (Rijndael) — единственный из всех финалистов
AES, который работает с 256-битовыми ключами медленнее, чем со 128-би-
товыми
7
. Как следствие этого, во избежание потери производительности вас
могут вынудить использовать ключи меньшего размера. Мы вовсе не утвер-
ждаем, что 128-битовые ключи небезопасны как таковые. Вполне возможно
создать систему со 128-битовым уровнем безопасности, используя 128-бито-
вые ключи, однако это будет крайне сложно. Например, вы не сможете просто
воспользоваться одним из стандартных режимов работы блочных шифров.
7
Serpent работает с одной и той же скоростью независимо от размера ключа. Twofish
работает медленнее при выполнении предварительных вычислений над ключами большего
размера, однако в программной реализации скорость шифрования не зависит от размера
ключа.
|