Рейтинг:1

Взломайте RSA без заполнения, используя атаку радужной таблицы

флаг cl

Мы используем RSA без OAEP с относительно небольшим входным доменом.

Предположим, что у нас есть Джон и Боб, подключенные к линии, и мы их подслушиваем. Боб сначала отправляет Джону свой открытый ключ (e,n), затем Джон шифрует свое сообщение m и отправляет его по зашифрованной строке. Когда мы подслушиваем линию, мы получаем его зашифрованное сообщение, например 3211 4431 9938 ... (я использую низкий модуль только для примера)

Я, как злоумышленник, могу составить радужную таблицу шифрования каждого числа от 0 до n, а затем расшифровать сообщение Джона, используя созданную мной таблицу.

  1. Я прав?
  2. Когда мы используем какой-либо метод заполнения, мы предотвращаем эту атаку (правильно?), вставляя случайные биты в сообщение, но как дешифратор (Боб) может «удалить» эти случайные биты, если он их не знает.
kelalaka avatar
флаг in
Если вы можете построить радужную таблицу для модуля размера 2048, вам вообще не нужно беспокоиться об OAEP. Для коротких сообщений да, есть опасность для TextBook RSA. Заполнение имеет решающее значение для просмотра вероятностного шифрования.
kelalaka avatar
флаг in
Связанный q/[Разница между атакой с известным открытым текстом и атакой прямого поиска] (https://crypto.stackexchange.com/q/15040/18298)
Maarten Bodewes avatar
флаг in
@kelalaka Я не понимаю, как учебник RSA может быть проблематичным при построении радужной таблицы для определенного открытого ключа. Однако все зависит от входного домена, и если у вас есть только одно сообщение, это займет столько же времени, сколько и перебор сообщения. Другие способы атаки на учебник RSA можно найти [здесь] (https://crypto.stackexchange.com/q/20085/1172)
kelalaka avatar
флаг in
@MaartenBodewes для каждого открытого ключа и модуля, можете ли вы создать радужную таблицу для размеров сообщений до 2048? Для коротких сообщений да, возможно. Я имел в виду, что если вы можете достичь размера модуля таблицы, вы можете сломать модуль :)
Maarten Bodewes avatar
флаг in
Да, это то, что я имею в виду под «входным доменом».Честно говоря, я не думаю, что это плохой способ атаковать небольшие входные домены и несколько сообщений. И это довольно общая атака. Вот почему я снова открыл вопрос, поскольку у нас уже есть Q/A, чтобы перечислить все атаки на открытый текст RSA.
Yotam Sofer avatar
флаг cl
@MaartenBodewes, ЕСЛИ я могу предположить, что сообщение содержит только буквы ascii, поэтому входной домен очень мал, верно? и он должен легко ломаться. кроме того, есть ли ответ на мою вторую часть вопроса?
Maarten Bodewes avatar
флаг in
Да, вы можете отключить эту атаку, если добавите *достаточно* случайных битов. Для этого вы можете использовать любую кодировку, на самом деле PKCS#1 имеет довольно простую кодировку: байты со значениями 01..FF и 00 в качестве значения конечного байта (с сильным недостатком, который, конечно, требует получения диапазона из PRNG), но подойдет любая другая обратимая кодировка. После того, как вы сможете идентифицировать случайные биты, вы можете просто проигнорировать их и вернуть сообщение. Конечно, на PKCS#1 и OAEP возможны и другие атаки, **такие как** padding-атаки, которые, я думаю, требуют дополнительного изучения.
kelalaka avatar
флаг in
@MaartenBodewes любое заполнение слишком общее, однако, если общий размер сообщения со случайным заполнением находится в диапазоне радужной таблицы, можно будет увидеть и случайные биты...
Рейтинг:2
флаг ng
  1. Да, атака в вопросе будет работать для низкого модуля примера.Термин «словарь» более уместен, чем «радужная таблица» (используется в контексте создания компактной таблицы предварительно вычисленных хэшей).

    Однако настоящие атаки не могут работать таким образом. В RSA, как это практикуется, невозможно построить достаточно большой словарь, так как это займет слишком много времени (пропорционально модулю $n$, который в настоящее время обычно составляет не менее 2048 бит). Однако, если Алиса зашифровала сообщение, которое, как известно, принадлежит небольшому набору (например, имена в списках классов) непосредственно с помощью учебника RSA $m\mapsto c:=m^e\bmod n$, то можно расшифровать $с$ путем шифрования каждого возможного сообщения и тестирования, которое соответствует $с$. Последовательный поиск $м$ в списке классов подойдет: словарь соответствующих $с$ полезно только в том случае, если сообщений несколько (и RSA практически не используется, разбивая сообщения на небольшие куски, как в вопросе).

  2. Случайное заполнение шифрования решает эту проблему, обратимо перевернуть сообщение $м$ в достаточно случайный представитель сообщения $\широкая м\in[0,n)$. Тогда учебник RSA можно смело применять к $\широкая м$, согласно предположению RSA: для правильного открытого ключа $(п,е)$ и случайный $х\в[0,n)$, трудно найти $х$ от $х^е\bмод п$.

    как дешифратор (Боб) может «удалить» эти случайные биты, если он их не знает?

    Общая картина такова, что между Алисой и Бобом существует соглашение о том, какие биты $\широкая м$ являются отступами (некоторые из которых случайны), добавленными Алисой, которые должны быть удалены Бобом. Это упрощенное описание довольно близко к устаревшему методу заполнения в RSAES-PKCS1-v1_5. Современный РГАЭС-ОАЭП имеет дополнительные шаги, поэтому все, кроме (максимум) 8 бит $\широкая м$ кажутся случайными, даже когда $м$ не является (что получается с помощью обратимого симметричного криптографического преобразования после применения случайного заполнения, рассеивающего случайность), но идея остается.

kelalaka avatar
флаг in
Я думаю, что заполнение должно быть на MSB, чтобы, когда 3 используется в качестве общедоступного показателя, $\sqrt[3]{c}$ не мог быть найден.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.