Предотвратите частичную расшифровку зашифрованных текстов (или другую утечку информации), гарантируя, что злоумышленник не сможет восстановить какую-либо часть открытого текста без возможности инвертировать одностороннюю перестановку с люком .
Первоначальная версия OAEP (Bellare/Rogaway, 1994) демонстрировала форму « осведомленности об открытом тексте » (которая, как они утверждали, подразумевает защиту от атак с выбранным зашифрованным текстом ) в модели случайного оракула, когда OAEP используется с любой перестановкой лазейки. Последующие результаты опровергли это утверждение, показав, что OAEP был безопасным только IND-CCA1 . Однако в модели случайного оракула было доказано , что исходная схема безопасна IND-CCA2, когда OAEP используется с перестановкой RSA с использованием стандартных показателей шифрования, как в случае RSA-OAEP. [2] Для решения этой проблемы Виктор Шуп
предложил улучшенную схему (называемую OAEP+), которая работает с любой односторонней перестановкой с люком . [3]
Более поздние работы показали, что в стандартной модели (то есть, когда хэш-функции не моделируются как случайные оракулы) невозможно доказать безопасность IND-CCA2 RSA-OAEP при предполагаемой сложности проблемы RSA . [4] [5]
M — сообщение, которое необходимо дополнить (не более байтов),
L — необязательная метка, связанная с сообщением (по умолчанию метка представляет собой пустую строку и может использоваться для аутентификации данных без необходимости шифрования),
PS — это байтовая строка из нулевых байтов.
⊕ — это операция XOR .
Кодирование
RFC 8017 [6] для PKCS#1 v2.2 определяет следующую схему OAEP для кодирования:
Хэшируйте метку L , используя выбранную хэш-функцию:
Создайте строку заполнения PS , состоящую из байтов со значением 0x00.
Объедините lHash , PS , одиночный байт 0x01 и сообщение M, чтобы сформировать блок данных DB :. Этот блок данных имеет длину в байтах.
Сгенерируйте случайное начальное число длиной hLen .
Используйте функцию генерации маски, чтобы сгенерировать маску соответствующей длины для блока данных:
Замаскируйте блок данных сгенерированной маской:
Используйте функцию генерации маски, чтобы сгенерировать маску длины hLen для начального числа:
Замаскируйте семя сгенерированной маской:
Закодированное (дополненное) сообщение представляет собой байт 0x00, объединенный с MaskedSeed и MaskedDB :
Декодирование
Декодирование работает путем изменения шагов, выполненных в алгоритме кодирования:
Хэшируйте метку L , используя выбранную хэш-функцию:
Чтобы отменить шаг 9, разделите закодированное сообщение EM на байт 0x00, MaskedSeed (длиной hLen ) и MaskedDB :
Создайте семенную маску , которая использовалась для маскировки семени :
Чтобы отменить шаг 8, восстановите начальное число с помощью семенной маски :
Создайте dbMask , который использовался для маскировки блока данных:
Чтобы отменить шаг 6, восстановите блок данных DB:
Чтобы отменить шаг 3, разделите блок данных на части: .
Подтвердите это:
lHash' равен вычисленному lHash
PS состоит только из байтов 0x00
PS и M разделены байтом 0x01 и
первый байт EM — это байт 0x00.
Если какое-либо из этих условий не выполняется, заполнение недействительно.
Использование в RSA: закодированное сообщение затем можно зашифровать с помощью RSA. Детерминистическое свойство RSA теперь можно избежать при использовании кодировки OAEP, поскольку начальное число генерируется случайным образом и влияет на все закодированное сообщение.
Безопасность
Безопасность « все или ничего » заключается в том, что для восстановления C: необходимо восстановить всю базу данных и все начальное значение ; DB требуется для восстановления начального числа из Seed , а начальное число требуется для восстановления блока данных DB из DB . Поскольку любой измененный бит криптографического хеша полностью меняет результат, вся БД и все начальное число должны быть полностью восстановлены.
Выполнение
В стандарте PKCS#1 случайные оракулы идентичны. Стандарт PKCS#1 также требует, чтобы случайные оракулы были MGF1 с соответствующей хэш-функцией. [7]
^
Эйитиро Фудзисаки, Тацуаки Окамото, Дэвид Пойнтчеваль и Жак Стерн . RSA — OAEP безопасен в соответствии с предположением RSA . В изд. Дж. Килиана, Достижения в криптологии – CRYPTO 2001, vol. 2139 конспектов лекций по информатике, SpringerVerlag, 2001. Полная версия (pdf)
^
Виктор Шуп. Пересмотр OAEP . Исследовательская лаборатория IBM в Цюрихе, Saumerstr. 4, 8803 Рушликон, Швейцария. 18 сентября 2001 г. полная версия (pdf)
^
П. Пайе и Дж. Вильяр, Односторонняя торговля против безопасности выбранного зашифрованного текста в шифровании на основе факторинга , Достижения в криптологии - Asiacrypt 2006.
^ «Операция шифрования». PKCS #1: Спецификации криптографии RSA, версия 2.2. IETF . Ноябрь 2016. с. 22. сек. 7.1.1. дои : 10.17487/RFC8017 . РФК 8017 . Проверено 4 июня 2022 г.
^ Браун, Дэниел Р.Л. (2006). «Какие хэши обеспечивают безопасность RSA-OAEP?» (PDF) . Архив электронной печати криптологии IACR . Проверено 3 апреля 2019 г.