Рейтинг:0

Безопасность RSA при использовании коротких сообщений

флаг cn

Мы знаем, что короткое сообщение, зашифрованное с помощью RSA, может быть легко взломано.

Допустим, Боб шифрует сообщение, содержащее только «Привет», и шифрует его с помощью открытого ключа Алисы. Любой может попытаться зашифровать все возможные комбинации очень коротких сообщений, используя открытый ключ Алисы, пока не найдет совпадение.

Мне интересно, можно ли как-то подделать личность очень короткого сообщения?

Допустим, Боб шифрует много одно- и двухсимвольных сообщений своим закрытым ключом. Мог ли злоумышленник как-то подделать новый одно- или двухсимвольное сообщение, чтобы казалось, будто оно пришло от Боба?

Конечно, в этих случаях речь идет о том, чтобы не добавлять отступы или какие-либо другие изменения.

Marc Ilunga avatar
флаг tr
Добро пожаловать в Crypto.SE! В целом учебник RSA податлив, учитывая природу модульной арифметики. т. е. Учитывая шифрование $m$ и $m'$ ($c$ и $c'$), мы можем получить шифрование $mm'$, которое равно $c*c'$. Помимо этого примечания, что, учитывая, что RSA является системой с открытым ключом, обычно предполагается, что открытый ключ известен всем.
Peter2223 avatar
флаг cn
Итак, если я правильно понял, если Боб ранее отправил сообщения «a» и «b», злоумышленник мог бы успешно подделать сообщение «ab»? Как насчет совершенно нового сообщения, такого как «с»?
Marc Ilunga avatar
флаг tr
Обратите внимание, что $ab$ относится к умножению, а не к конкатенации. Однако при шифровании в $2$ можно выполнять сдвиг битов и создавать новые зашифрованные тексты путем конкатенации. Что касается совершенно нового сообщения, еще раз обратите внимание, что открытый ключ, вероятно, дается всем, а не только Бобу. Поэтому никаких умных манипуляций на самом деле не требуется. Злоумышленник может шифровать только для себя.
Peter2223 avatar
флаг cn
Я говорю о совершенно новом сообщении, зашифрованном **закрытым ключом** Боба. Сообщение, зашифрованное его закрытым ключом, подтвердит его личность. Можно ли подделать новое сообщение так, чтобы оно выглядело так, как будто оно пришло с **приватного** ключа.
Marc Ilunga avatar
флаг tr
О, я ошибся, учитывая использование закрытого ключа для шифрования. Это не совсем стандартная практика. Подходящим инструментом будет цифровая подпись (не то же самое, что шифрование с помощью секретного ключа). Во всяком случае, некоторые подделки будут использовать те же приемы, что и раньше. Взгляните на этот ответ https://crypto.stackexchange.com/questions/20085/what-attacks-are-possible-against-raw-textbook-rsa.
Рейтинг:1
флаг ng

Мы знаем, что короткое сообщение, зашифрованное с помощью RSA, может быть легко взломано.

Короткое сообщение, зашифрованное с помощью учебника RSA, может быть легко взломано. Проблема в нет что сообщение короткое. Гораздо более длинное сообщение, выбранное в небольшом наборе (например, личность человека в общедоступном списке классов), также может быть взломано с помощью той же техники. Проблема в низкоэнтропийное сообщение в сочетании с использованием классического шифрования RSA (без случайного заполнения).

Боб шифрует (..) сообщения своим закрытым ключом.

То, что «шифрует», является ошибочной терминологией для применения преобразования $m\mapsto f(m)=m^d\bmod n$ куда $(н,д)$ является закрытым ключом RSA Боба. Это не шифровать, так как этот термин обозначает преобразование сообщения, чтобы сделать его непонятным для противников, и здесь любой может отменить преобразование, используя общедоступные $(п,е)$. Термин «шифрует» следует заменить на «преобразует» или «подписывает». Результат $ф(м)$ этой операции является учебник RSA-подпись сообщения $м$ закрытым ключом Боба.

Мог ли злоумышленник каким-то образом подделать новое одно- или двухсимвольное сообщение, чтобы казалось, будто оно пришло от Боба?

Да. Основным используемым инструментом является мультипликативное свойство функции $ф$: для всех $м_1,м_2$ он держит $f(m_1\cdot m_2\bmod n)\ =\ f(m_1)\cdot f(m_2)\bmod n$. Таким образом, злоумышленник, зная хрестоматийную RSA-подпись сообщений $m_1$ и $m_2$ можно найти учебник RSA-подпись сообщения $m_1\cdot m_2\bmod n$, или же ${m_1}^i\cdot{m_2}^j\bmod n$ для любой пары целых чисел $я,j$.

Для сообщений, которые должны иметь смысл, возможность должна иметь $m_1\cdot m_2=m_3\cdot m_4$ который позволяет вычислить учебник RSA-подпись $m_4$ от этого $m_1$, $m_2$ и $m_3$, как $f(m_4)\ =\ f(m_1)\cdot f(m_2)\cdot f(m_3)^{-1}\bmod n$.

Peter2223 avatar
флаг cn
Спасибо за ответ! Как я понял, злоумышленник не может подделать новое подписанное сообщение, состоящее из ранее не подписанных элементов? Например, если сообщение, содержащее в данном случае только букву "с", никогда не передавалось, а другие буквы передавались, то злоумышленник не мог подделать для него подпись?
fgrieu avatar
флаг ng
@Peter2223: эм, нет. Извините, я использовал общепринятое обозначение, что $u\,v$ является произведением $u$ и $v$, и вы поняли конкатенацию (часто упоминается $u\mathbin\|v$). Теперь я изменил на $u\cdot v$, чтобы было понятнее, что мы умножаем. Я имею в виду, что если подписанные сообщения кодируются целыми числами $m_1=7$ и $m_2=8$, то злоумышленник может найти сигнатуру сообщения, кодирующего целое число $7\cdot8=56$ (а также $7\cdot7 \cdot7\cdot8\cdot8=21952$). С осмысленными сообщениями это сложнее, но этот трюк можно провернуть.
Peter2223 avatar
флаг cn
Да, я не подхожу к этой теме с большими знаниями о шифровании. Я делаю программу, которая должна проверить «идентичность» отправляемого файла. Я решил хэшировать файл, а затем подписать его необработанным rsa. Но sha-256 состоит всего из 64 символов, и я читал, что rsa не очень безопасен с короткими сообщениями без случайного заполнения. Поскольку принимающая машина не может использовать случайный алгоритм, я не могу добавить случайное заполнение, а добавление предопределенного заполнения звучит так, как будто это не очень эффективно. Насколько безопасным будет sha-256, подписанный необработанным rsa 2048?
fgrieu avatar
флаг ng
@Peter2223: Peter2223: я считаю, что это было бы на небезопасной стороне предела, где могла бы применяться атака Десмедта и Одлызко (есть [вопрос] (https://crypto.stackexchange.com/q/51680/555) об этой атаке ). Ваше приложение требует подписи с хорошо продуманным дополнением подписи. Поскольку я не понимаю, что означает «не могу поделиться случайным алгоритмом», я не могу сказать, RSASSA-PSS (рандомизированное заполнение подписи), RSASSA-PKCS1-v1_5 (детерминированное заполнение подписи, отсутствие доказательства безопасности) или ISO/ Схема 2 или 3 стандарта IEC 9796-3 будет адекватной.

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

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