Терминология
Имеются по крайней мере еще 3 разновидности криптоаналитических атак.
Атака с выбранным шифртекстом.
Криптоаналитику предоставлена возможность выбора шифртекстов, подлежащих расшифрованию получателем. Он также имеет доступ к соответствующим открытым текстам. Требуется найти ключи.
Дано:
С1, Р1 = D(C1), C2, P2 = D(C2),…, Ci, Pi = D(Ci).
Найти:
К1, К2,…,Кi.
Этой криптоаналитической атаке, как правило, подвергаются алгоритмы шифрования с открытым ключом. Хотя иногда она эффективна и против симметричных криптосистем. Атаку с выбранным открытым текстом и с выбранным шифртектом называют атакой с выбранным текстом.
Атака с выбранным ключом.
В ходе этой атаки криптоаналитик обладает некоторыми знаниями относительно правил, по которым отправитель и получатель сообщений выбирают ключи шифрования.
Атака с применением грубой силы.
Криптоаналитик занимается подкупом, шантажом или пытками, чтобы получить сведения, необходимые ему для взлома криптосистемы. Подкуп иногда выделяют в отдельную категорию и называют атакой с покупкой ключа. Эти атаки являются очень эффективными и зачастую предоставляют наиболее легкий путь для получения доступа к открытым текстам шифрованных сообщений.
Атаки со знанием открытого текста и с выбранным открытым текстом не так уж редко встречаются на практике, как можно подумать. Известны случаи, когда криптоаналитику удавалось подкупить шифровальщика, чтобы он зашифровал сообщение, открытый текст которого известен криптоаналитику. Иногда даже не требуется никого подкупать, поскольку открытые тексты многих сообщений начинаются и заканчиваются стандартными фразами.
С этой точки зрения зашифрованная программа на языке С особенно уязвима, поскольку содержит множество зарезервированных слов типа #define, #include, if, then и do.
He следует забывать и о правиле Керкхоффа. Попытка добиться высокой надежности криптографического алгоритма за счет сохранения в тайне принципов его работы является малопродуктивной. Криптоаналитик может выполнить дизассемблирование любой сверхсложной программы шифрования и методом обратного проектирования воспроизвести алгоритм, положенный в основу ее функционирования. Такое случается довольно часто. Лучшие алгоритмы шифрования являются общественным достоянием уже в течение многих лет, и над их взломом продолжают безуспешно трудиться самые способные криптоаналитики в мире.
Надежность алгоритма шифрования
Различные криптографические алгоритмы обладают разной надежностью, чаще называемой стойкостью алгоритма шифрования или стойкостью шифра. Стойкость зависит от того, насколько легко криптоаналитик может взломать шифр. Если при этом стоимость затрат превышает ценность полученной в результате информации, то владельцу этого шифра, возможно, и беспокоиться не о чем. Если время, потраченное на взлом шифра, больше, чем период, в течение которого ваши данные должны храниться в секрете, то они вероятно вне опасности. Если противник не накопил достаточного количества ваших сообщений, зашифрованных с помощью одного ключа, чтобы суметь определить этот ключ, время его менять, может быть, еще и не пришло.
Слова "может быть", "вероятно" и "возможно" употреблены здесь не зря. Ведь всегда существует шанс, что в криптоанализе произойдут революционные изменения. Свести к минимуму вредные последствия очередного такого прорыва поможет соблюдение простого правила: ценность секретных данных должна быть всегда ниже, чем стоимость преодоления защитных средств, используемых для сохранения этих данных в тайне.
Под вскрытием (взломом) шифра обычно понимается решение одной из перечисленных ниже задач:
- Полное вскрытие. Криптоаналитик нашел ключ К такой, что DK(C)=P.
- Глобальная дедукция. Не зная К, криптоаналитик отыскал альтернативный DK алгоритм А такой, что А(С) = Р.
- Локальная дедукция. Криптоаналитику удалось определить открытый текст, соответствующий конкретному перехваченному шифртексту.
- Частичная дедукция. Криптоаналитик получил неполную информацию о ключе или открытом тексте. Это могут быть несколько битов ключа, или дополнительные данные о структуре открытого текста, или что-то еще в том же духе.
Криптографический алгоритм называется безусловно стойким, если вне зависимости от того каким объемом перехваченного шифртекста располагает криптоаналитик, у него нет достаточной информации, чтобы восстановить исходный открытый текст. Существует всего один безусловно стойкий шифр (о нем речь пойдет ниже). Все остальные шифры можно вскрыть с помощью атаки со знанием только шифртекста: достаточно перебрать все возможные ключи и проверить, имеет ли смысл открытый текст, полученный с их помощью.