У меня есть вопрос о том, как определяются 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, построенная поверх этих функций, должна быть указана для выбора другого ввода заполнения в тот случай?
Может быть, я что-то упускаю, так что ценю любую информацию.
Спасибо!