Рейтинг:1

RSADP/RSAEP с нулевым значением базы/сообщения

флаг ng

У меня есть вопрос о том, как определяются RSADP/RSAEP (в RFC2437 https://datatracker.ietf.org/doc/html/rfc2437#section-5.1.2):

RSADP (и RSAEP) описываются с теми же ограничениями для сообщения (m) и зашифрованного текста (c), а именно 0 <= м < п. В этом случае примитив модульного возведения в степень предполагает, что заполнение уже произошло, поэтому не учитываем это.

5.1.2 РСАДП

   РСАДП (К, С)

   Вход:

   K Закрытый ключ RSA, где K имеет одну из следующих форм
                 -пара (н, д)
                 -пятерка (p, q, dP, dQ, qInv)
   c представитель зашифрованного текста, целое число от 0 до n-1

   Вывод:
   m представитель сообщения, целое число от 0 до n-1; или же
             "представитель зашифрованного текста вне досягаемости"

У меня есть следующий вопрос: действительно ли/должны ли реализации принимать 0 и 1 как допустимые значения c и m? Разве ноль и единица не останутся постоянными при возведении в степень, так что зашифрованный текст и открытый текст не изменятся? Разве это не плохо? Правильно ли для реализации отклонять эти значения, даже если спецификация, кажется, разрешает их?

ОБНОВЛЕНИЕ: я не спрашиваю о заполнении как таковом, поскольку возведение в степень происходит после заполнения (в случае шифрования), а скорее Почему спецификация, похоже, вообще допускает эти небезопасные значения. Почему спецификация явно не запрещает 0 и 1? Следует признать, что статистически редко, если результатом заполнения было такое значение, но мой вопрос заключается в том, не должны ли функции RSADP/EP запрещать эти значения, а общая схема OAEP, построенная поверх этих функций, должна быть указана для выбора другого ввода заполнения в тот случай?

Может быть, я что-то упускаю, так что ценю любую информацию.

Спасибо!

Maarten Bodewes avatar
флаг in
Очевидно, нет, нет, но помните, что шифрование статического сообщения тем же ключом также напрямую приводит к утечке информации. Так что в основном я думаю, что это не столько требование безопасности; речь идет о потере информации. Но, вероятно, другие лучше дадут более математическое объяснение. Есть много других причин, по которым требуется безопасное заполнение.
Morrolan avatar
флаг ng
Из-за того, как RSAES-PKCS1-v1_5 определяет его заполнение - в частности, фиксированный байт, который он использует, - я считаю, что дополненное сообщение не может представлять 0 или 1 при преобразовании в целое число примитивом OS2IP. Для RSAES-OAEP дополненное сообщение *может* в конечном итоге представлять 0 или 1, но вероятность того, что это произойдет, примерно равна тому, что противник угадает первый множитель вашего модуля с первой попытки.
Рейтинг:3
флаг ng

Оказывается, определение RSAEP/RSADP, данное NIST, отличается от версии RFC 2437.

Определение NIST можно найти в SP800-56Br2: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br2.pdf

В разделе 7.1 Примитивы шифрования и дешифрования спецификация NIST требует, чтобы реализации отклоняли значения 0, 1 и n-1 следующим образом:

7.1.1 РГПООС
...
1. Если m не удовлетворяет 1 < m < (n ≥ 1), вывести индикацию того, что m выходит за пределы допустимого диапазона, и выйти без дальнейшей обработки.

Аналогичные ограничения требуются как для шифрования, так и для дешифрования.

Следовательно, реализация должна фильтровать и явно блокировать эти входные данные.

Maarten Bodewes avatar
флаг in
Проблема в том, что если вы хотите выполнить сравнение, если ввод в любом случае рандомизирован. Это дополнительный, ненужный и потенциально опасный шаг из-за возможных атак по сторонним каналам.
fgrieu avatar
флаг ng
Требование NIST по удалению фиксированных точек $0$, $1$ и $n-1$, вероятно, состоит в том, чтобы блокировать атаки против расшифровки, когда злоумышленник отправляет эти зашифрованные тексты $c$ для расшифровки в атаке по побочному каналу, такой как Simple Power Analysis. При $c=0$ и $c=1$ противник знает $c^f\bmod n$ или $c^f\bmod p$ и $c^f\bmod q$ на протяжении всего вычисления, даже если они не знают $f$; и, что еще более тревожно, с $c=n-1$ они могут получить четность $f$, если им удастся отличить одно значение от другого. Это удаление не выглядит надежной защитой для меня, но не может повредить _в расшифровке_.
Brad avatar
флаг ng
@MaartenBodewes - Извините, я не вижу - где находится побочный канал, если реализация фильтрует необработанные значения c & m, прежде чем выполнять какое-либо возведение в степень?

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

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