@one_question

[RSA] почему схема с шифрованием данных напрямую не является «практически надёжной»?

Необходимо реализовать шифрование и заинтересовало почему данные напрямую не шифруют с помощью RSA, а шифруют только ключи симметричных алгоритмов.
Нашел на википедии упоминание того, что
Данная схема на практике не используется по причине того, что она не является практически надёжной (semantically secured). Действительно, односторонняя функция E(m) является детерминированной — при одних и тех же значениях входных параметров (ключа и сообщения) выдаёт одинаковый результат —, а это значит, что не выполняется необходимое условие практической (семантической) надёжности шифра.

Можете объяснить что это значит?
  • Вопрос задан
  • 1358 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пусть стороны для шифрования постоянно используют одну и ту же пару ключей (не обязательно RSA), а мы перехватываем их трафик. Даже не зная самих ключей мы можем заметить, что каждый раз, когда Алиса начинает диалог с Бобом, к нам попадает один и тот же зашифрованный блок. Можно предположить, что это приветствие, и перебрав варианты "Привет", "Здравствуй" и т.п., получить возможные ключи, которые проверяются на других блоках.
Именно поэтому обязательной частью шифрованного обмена является периодическая смена ключей, и фиксированные персональные ключи используют только для обмена неповторяющимися сеансовыми ключами.
Ответ написан
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
С моей колокольни я вижу бред. На самом деле RSA не используется для прямого шифрования ровно по двум причинам.

Дорого. Дороговизна обусловлена высокой стоимостью операций. Взятие по модулю и возведение в степень - не самые простые операции для CPU, сложнее (из примитивных) разве что деление. К тому же, используя самые эффективные алгоритмы, сложность шифрования где-то O(n log(n)), возможно даже выше, но даже так на огромных данных логарифм портит всю малину. Как следствие - низкая производительность. Тут даже специализированные схемы не очень помогает, ибо их сложность слишком большая и стоимость производства - также высокая. Можно вспомнить про кредитные карты, которые есть почти у всех, но их производительность очень низкая, просто её хватает, но едва.

Неудобно. Все операции происходят в поле по очень и очень большому простому числу. Это не делает ей никакой чести, абсолютно никакой (некоторое число атак даже эксплуатируют эту проблему). Сделать полное отображение 2048 бит в поле огромного числа банально невозможно, поэтому данные просто обрубают. Учитывая просто громаднейший размер ключа это и незаметно, но проблема всё равно существует.

В любом случае, смысл использовать один и тот же ключ - отсутствует. Абсолютно аналогичный результат можно получить, используя симметричный шифр. Намного интереснее, если ключ меняется от блока к блоку, тогда можно невозбранно получить стойкость одноразового блокнота (точнее - генератора случайных чисел, да и число простых чисел всё-таки ограничено, но это мелочи). Так что это полный бред, что прямой RSA - бесполезен. Но предыдущие две причины практически полностью решили его судьбу, как шифр для симметричного ключа или хеша.
Ответ написан
Комментировать
Проиллюстрировать можно примерно так: представьте что у вас есть огромный файл из нулей, в котором имеется очень малое (в процентном соотношении) количество единиц. Напрямую зашифровав блоки RSA вы легко увидите блоки состоящие только из нулей, и блоки содержащие единицы. А если распределение единиц не равномерно и известно, то накопив некоторую статистику вы сможете различать в какой позиции блока находится единица и сможете полностью декодировать текст.
Поэтому для шифрования большого объема данных обычно используются потоковые шифры (или блочные в специальном режиме, защищающими от подобных атак - гаммированние с обратной связью) с уникальной гаммой (ключом). А с помощью RSA шифруются только либо одноразовые уникальные случайные либо не секретные данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы