Атака на основе подобранного шифротекста (англ. Chosen-ciphertext attack) — криптографическая атака, при которой криптоаналитик собирает информацию о шифре путём подбора зашифрованного текста и получения его расшифровки при неизвестном ключе. Как правило, криптоаналитик может воспользоваться устройством расшифрования один или несколько раз для получения шифротекста в расшифрованном виде. Используя полученные данные, он может попытаться восстановить секретный ключ для расшифровки. Существуют шифры, для которых атаки данного типа могут оказаться успешными. К их числу относятся: Схема Эль-Гамаля; RSA, используемый в протоколе SSL; NTRU. Для защиты используют шифры RSA-OAEP и Крамера-Шоупа.
Атака на основе подобранного шифротекста может быть адаптивной и неадаптивной.
При неадаптивной атаке криптоаналитик не использует результаты предыдущих расшифровок, то есть шифротексты подбираются заранее. Такие атаки называют атаками в обеденное время (lunchtime или CCA1).
В противоположном случае криптоаналитик адаптивно подбирает шифротекст, который зависит от результатов предыдущих расшифровок (CCA2).
Один из представителей криптосистем с открытым ключом (Public Key Cryptography Standards), базирующихся на алгоритме RSA. Пусть k — байтовая длина модуля RSA, n. Существует много вариантов исполнения стандарта PKCS#1. В данном примере рассмотрена версия RSAES-PKCS1-v1_5 без использования цифровой подписи, второй байт блока сообщения равен 00 или 01. Стандарт может оперировать с сообщениями максимальной длины, равной k—11. Блок стандарта PKCS#1, EB, состоит из k байт. Его вид EB = 00||02||PS||00||D. Первые два байта постоянны и равны соответственно 00 и 02. PS — строка заполнения, сгенерированное псевдослучайное число, состоящее из ненулевых байтов. Для повышения уровня безопасности рекомендуется генерировать новый блок PS для каждого отдельного шифрования. Его длина, соответственно, равна k-3-|D|, где D — блок данных, |D| - его байтовая длина. Длина блока PS должна быть не менее 8-ми байтов. Блоки PS и D должны быть разделены между собой нулевым байтом. Для удобства в дальнейшем не будем конкретизировать стандарт RSAES-PKCS1-v1_5, будем обозначать его как PKCS#1. Пусть n, e — открытый ключ, а p, q, d — секретный ключ. Согласно RSA . Блок EB преобразуется в целое число x и шифруется алгоритмом RSA, . Получатель проверяет длину шифротекста, , расшифровывает его , преобразует в блочный вид и проверяет наличие правильных первых двух байтов, разделяющего нулевого байта и длину блока PS. Если проверка не пройдена, то выдаётся ошибка.
Данный пример иллюстрирует возможность успешной атаки на основе адаптивно подобранного шифротекста. Пусть у криптоаналитика есть доступ к устройству, которое для любого выбранного шифротекста показывает, имеет ли соответствующий открытый текст формат стандарта PKCS#1, и перед ним стоит задача расшифровать шифротекст C. Таким образом аналитик может подбирать различные шифротексты и отсылать их на устройство. Получив ответ, он составляет следующий шифротекст, исходя из результатов предыдущих. Таким образом, на основании ответов, полученных от устройства и знаний о формате открытого сообщения, соответствующего стандарту, криптоаналитик может вычислить . Решающим фактором в атаке являются первые два байта открытого сообщения, которые являются константами. В данном примере рассмотрен алгоритм, который минимизирует количество шифротекстов, необходимых для получения открытого сообщения. Атаку можно разделить на 3 этапа:
Предположим, что перед криптоаналитиком стоит цель узнать . Так как k — байтовая длина числа n, тогда . Аналитик выбирает число s, вычисляет и посылает на устройство. Если устройство принимает сообщение, то нам точно известно, что первые два байта 00 и 02. Обозначим для удобства . Допустим, что s подошло, тогда верна оценка . Собрав информацию такого типа, мы можем найти m. Как правило, шифротекстов будет достаточно, но это число может колебаться в широких пределах. Распишем атаку пошагово.
Первый шаг может быть пропущен, если С является зашифрованным сообщением, удовлетворяющим стандарту PKCS. Во втором шаге подбор начинается с , так как для меньших величин сообщение не будет соответствовать стандарту PKCS. Число используется, чтобы разделить интервал на каждой итерации примерно наполовину.
Пусть вероятность того, что случайно выбранный шифротекст имеет подходящий формат открытого сообщения, равна , а — вероятность того, что для любого случайно выбранного целого числа первые 2 байта 00 и 02. Так как , отсюда следует, что . Модуль RSA обычно выбирается кратным 8-и. Значит, обычно близко к . Вероятность того, что PS блок содержит не менее 8-ми ненулевых байтов, завершающихся одним нулевым байтом, равна . Предполагая, что n не менее 512 бит (k > 64), имеем . Значит, .
Докажем, что . Так как соответствует стандарту PKCS, то , отсюда следует, что . Предположим, что . Значит, существует интервал с . Так как соответствует стандарту PKCS, то существует такое r, что , значит, , , то есть содержится в одном из интервалов.
Сообщение в шаге 1 выбрано случайно, значит, необходимо отослать на устройство около сообщений, чтобы найти . Аналогично для шагов 2.1 и 2.2 при . Пусть — число интервалов в . Тогда для . Длина интервала ограничена сверху величиной . Зная, что формата PKCS, получаем интервалов формы . будет содержать около интервалов. Если , тогда каждый из интервалов или его часть включается в , если перекрывается с одним из интервалов . Ни один из интервалов не может перекрываться с двумя интервалами . Если интервалы случайно распределены, тогда вероятность того, что один пересекается с , будет ограничена сверху величиной . Таким образом уравнение для получено в предположении, что один интервал должен содержать величину . В нашем случае мы ожидаем, что получим с помощью примерно и имеем . Следовательно, примет единичное значение с большой вероятностью. Поэтому ожидается, что шаг 2.2 возникнет только один раз. Проанализируем шаг 2.3. Имеется , следовательно, , поэтому . Длина интервала . Поэтому можно найти пару , удовлетворяющую неравенствам в шаге 2.3 для каждой третьей величины . Вероятность того, что , равна приблизительно . Поэтому мы можем найти , удовлетворяющую стандарту примерно с помощью шифротекстов. Так как остальной интервал в разделяется наполовину в каждом шаге 2.3, мы ожидаем найти с помощью около шифротекстов. Для и понадобится около шифротекстов для успешной атаки. Все вероятности, обозначенные выше, были найдены в предположении, что все независимы. Пусть и удовлетворяют стандарту PKCS и имеют одинаковую длину блока PS. Тогда для некоторого целого числа получаем и . Тогда с большой вероятностью удовлетворяют стандарту PKCS, так как тоже часто удовлетворяют стандарту. Обычно выбирают n кратным 8-ми, так как для него вероятность мала. Модуль с битовой длиной, равной , является удобным для аналитика, так как для успешной атаки необходимо в этом случае около шифротекстов.
Рассмотрим 3 ситуации, в которых аналитик может получить доступ к устройству.
Таким образом, измеряя время ответа получателя, можно определить, является ошибка форматной или нет.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .