Теоретически, приложив достаточно усилий, можно взломать любую криптографическую систему. Вопрос заключается в том, сколько работы необходимо проделать, чтобы информация была расшифрована. Существует множество типов атак, каждый из которых обладает той или иной степенью сложности. Рассмотрим некоторые из них.
Только шифрованный текст. Говоря о взломе системы шифрования, многие имеют в виду атаку с использованием только шифрованного текста. В этом случае пользователи А и Б зашифровывают свои данные, а злоумышленник видит только шифрованный текст. Попытка расшифровать сообщения только при наличии шифрованного текста и называется атакой с использованием только шифрованного текста. Это наиболее трудный тип атаки, поскольку злоумышленник обладает наименьшим объемом информации.
Известный открытый текст. При атаке с известным открытым текстом известен и открытый и шифрованный текст. Цель такой атаки состоит в том, чтобы найти ключ.
На практике существует множество ситуаций, откуда можно узнать открытый текст сообщения. Иногда содержимое сообщения легко отгадать.
При наличии известного открытого текста у злоумышленника оказывается больше информации, чем при наличии только шифрованного текста, а вся дополнительная информация только увеличивает шанс расшифрования.
Существует два вида атак с избранным открытым текстом:
Автономный (offline). Открытый текст, который должен подвергнуться шифрованию, подготавливается заранее, еще до получения шифрованного текста.
Оперативный (online).Набор каждого последующего открытого текста осуществляется, исходя из уже полученных шифрованных текстов. Данный вид является более результативным.
Криптосистемы и виды атак на них. Рассмотренные выше виды атак применимы ко всем видам криптосистем. Но каждая из них имеет свои индивидуальные особенности, в результате чего имеются и специфические атаки характерные только для определенных видов криптосистем.
Атаки на блочные шифры. Блочный шифр - это функция шифрования, которая применяется к блокам текста фиксированной длины. Текущее поколение блочных шифров работает с блоками текста длиной 128 бит.
Функции шифрования построены на основе многократного применения 32-битовых операций. Применяя такие операции, довольно сложно получить нечетную перестановку. В результате практически все известные блочные шифры генерируют только четную перестановку. Упомянутый факт позволяет злоумышленнику построить простой различитель (на основе различающей атаки). Так называемый атака с проверкой четности. Для заданного значения ключа строится перестановку, зашифровав по порядку все возможные варианты открытого текста. Если перестановка является нечетной, значит, перед нами идеальный блочный шифр, так как реальный блочный шифр никогда не генерирует нечетную перестановку.
Атака с помощью решения уравнений. Основная идея этого метода заключается в том, чтобы представить блочное шифрование в виде системы линейных и квадратных уравнений над некоторым конечным полем, а затем решить эти уравнения, используя новые методы наподобие XL, FXL и XSL.
Атаки на асимметричные шифры. Алгоритм RSA обеспечивает как цифровое подписывание, так и шифрование, что делает его весьма универсальным средством.
Алгоритм RSA основан на использовании односторонней функции с лазейкой. N - это открытый ключ, который формируется как n = p⋅q. Разложение числа n на множители и есть та самая «лазейка». Значения p и q - это два разных больших простых числа, длина каждого из которых составляет порядка тысячи бит или более.
Возникает проблема, когда пользователь Б зашифровывает с помощью открытого ключа пользователя А сообщение небольшого размера. Если e = 5 и , тогда , поэтому взятие числа по модулю не требуется. Злоумышленник сможет восстановить m, просто извлекая корень пятой степени из m5.
Структура алгоритма RSA допускает осуществление сразу нескольких типов атак. Но существуют и более изощренные атаки, основанные на методах решения полиномиальных уравнений по модулю n . Все сводятся к одному: подчинение чисел, которыми оперирует алгоритм RSA, какой бы то ни было структуре крайне нежелательно.
Таким образом, применение алгоритма RSA должно ограничиваться шифрованием коротких последовательностей, а именно секретных ключей шифрования для симметричных криптосистем. Для шифрования нужно использовать более стойкие к атакам шифры с длиной ключа 256 бит. К таким шифрам относят шифр AES и ГОСТ 28147-89.