Насколько безопасен 64-битный RC2?
При шифровании можно считать два симметричных алгоритма равными с точки зрения безопасности, если их размеры ключей эквивалентны? (т.е. обеспечивает ли 64-битный алгоритм RC2 такую же точную защиту, как и 64-битный алгоритм AES?)
Насколько безопасно (или небезопасно) использовать 64-битный алгоритм RC2?
Как долго я могу ожидать, чтобы атака грубой силой взломала этот тип шифрования?
Какие данные было бы хорошо, чтобы обеспечить с этим алгоритмом? (Например, я предполагаю, что информация о кредитной карте не была бы в порядке, чтобы шифровать с этим алгоритмом, так как алгоритм недостаточно безопасен).
2 ответа
Как правило, эквивалентные размеры ключей не подразумевают эквивалентную безопасность по ряду причин:
Во-первых, это просто тот случай, когда некоторые алгоритмы имеют известные атаки, а другие нет. Размер ключа - только верхняя граница усилия, которое потребуется, чтобы взломать шифр; в худшем случае вы всегда можете попробовать все возможные ключи и добиться успеха (в среднем) после проверки половины пространства ключей. Это не значит, что это лучшая атака. Вот пример: AES со 128-битными ключами использует 10 раундов. Если бы вы использовали AES со 128-битным ключом, но только с одним раундом, его можно было бы легко сломать, даже если ключ того же размера. Для многих алгоритмов существуют известные атаки, которые могут сломать алгоритм намного быстрее при поиске всего ключевого пространства.
В случае блочных шифров есть и другие соображения. Это потому, что блочные шифры обрабатывают данные кусками битов. Существуют различные комбинаторные свойства, которые вступают в действие после того, как вы начали шифровать большие объемы данных. Например, используя обычный режим CBC, вы начинаете сталкиваться с проблемами после шифрования около 2^(n/2) блоков (эта проблема присуща CBC). Для 64-битного шифра, такого как RC2, это означает, что 2^32 64-битных блока или 32 ГиБ, что довольно много, легко представить (например, вы шифруете образ диска с ним). Принимая во внимание, что для 128-битного шифра, такого как AES, проблема начинает возникать только после примерно 2^64 128-битных блоков, или примерно 295 экзабайт. В подобном сценарии AES с 64-битным ключом будет на самом деле намного более безопасным, чем RC2 с 64-битным ключом.
Здесь мы переходим к эпистемологической части ответа: даже если нет известных атак, это не означает, что никакие атаки невозможны. RC2 довольно старый и редко используется; даже когда это был довольно современный шифр, его было гораздо меньше, чем, скажем, DES. Вполне вероятно, что за последние 5 лет никто не удосужился вернуться назад и посмотреть, как взломать RC2, используя новейшие методы атаки, просто потому, что в относительно академической модели "опубликовать или погибнуть", в которой работают современные публичные криптографические исследования, существует меньше выгоды, которую нужно иметь; гораздо лучше, если вы ищете срок пребывания в должности (или хотите повысить свою репутацию, чтобы получить больше консультационной работы), чтобы опубликовать даже очень незначительное улучшение в атаке на AES, чем если бы вы полностью уничтожили RC2, потому что никто больше его не использует.
А с 64-битным ключом вы сразу же ограничили себя этой верхней границей, и 2 ^ 64 усилия действительно довольно низки; возможно, в пределах досягаемости не только спецслужб, но и корпораций разумного размера (или скотоводов-ботнетов).
Наконец, я укажу, что RC2 был разработан, чтобы быть быстрым на процессорах эпохи 286/386. На современных машинах он существенно (примерно в 4-6 раз) медленнее, чем AES или аналогичные шифры, разработанные за последние 10 лет.
Я действительно не вижу никакой пользы от использования RC2 для чего-либо, единственное, что я могу себе представить, это было бы целесообразно для совместимости с какой-то древней (в компьютерное время) системой. Используйте AES (или одного из 4 других финалистов AES, если необходимо).
Вот мое личное объяснение выражения "атака на n из p раундов", которое вы можете найти на странице http://en.wikipedia.org/wiki/Block_cipher_security_summary. Но будьте осторожны: я действительно публикую это как ответ, чтобы люди могли сказать мне, если я ошибаюсь. Никто никогда не объяснял мне это, и я не специалист, это единственное объяснение, которое имеет смысл, которое я мог бы понять.
Криптографы считают любой алгоритм, который требует менее грубых операций, успешной атакой. Когда говорят, что шифр имеет атаку на "n из p раундов", я предполагаю, что это означает, что если бы шифр был определен как n раундов базовой функции, на самом деле он определен как p раундов, то была бы атака для этого. Возможно, алгоритм на самом деле продолжает работать больше чем n раундов, но точка отсечения, где он становится дороже, чем грубая сила, равна n. Другими словами, это очень тонкое различие для алгоритма, который не нарушен, и говорит нам, насколько мы близки к абстрактному пониманию математической функции, которую он реализует. Это объясняет, казалось бы, произвольные числа, которые встречаются как значения "n ", когда используется это выражение.
Напомним, что шифр, который атакует n из p раундов, является шифром, который не взломан.
Кроме того, алгоритм, который "сломан" из-за атаки в 2100 операций для 128-битного ключа, все еще может быть полезен. В этом случае беспокойство вызывает то, что дальнейшие математические открытия могут продолжать сказываться на количестве операций, необходимых для его взлома. Но 2100 столь же непрактично, как 2128.