0Pricing
Cryptology Academy · Урок

OAEP: оптимальное асимметричное дополнение шифрования

Разберите кодирование OAEP и то, как оно обеспечивает безопасность IND-CCA2

«OAEP: оптимальное асимметричное дополнение шифрования» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Введение

OAEP (оптимальное асимметричное дополнение для шифрования) обеспечивает доказуемо безопасное шифрование RSA уровня IND-CCA2. В нём используется рандомизированное кодирование, делающее запросы к оракулу криптографически бесполезными.

Цели OAEP

OAEP была разработана Белларе и Рогавеем (1994) с двумя целями: (1) предотвратить все атаки на RSA из учебника с помощью рандомизации; (2) достичь безопасности IND-CCA2 с формальным доказательством в модели случайного оракула.

Входные данные OAEP

M: сообщение для шифрования (|M| ≤ |n| - 2*hLen - 2 байта) L: необязательная метка (обычно пустая) MGF: функция генерации маски (на основе SHA-256) r: случайное начальное значение (hLen байт)

Кодирование OAEP, шаг 1: блок данных

DB = lHash || PS || 0x01 || M где: - lHash = Hash(L) (хеш метки) - PS = нулевые байты, заполняющие блок до фиксированной длины - 0x01 отмечает начало сообщения

Кодирование OAEP, шаг 2: наложение маски

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB Это дополненное сообщение, передаваемое на шифрование RSA.

MGF1: функция генерации маски

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 с SHA-256 создаёт псевдослучайный результат произвольной длины из начального значения. Используется в OAEP и RSA-PSS.

Декодирование OAEP

Для заданного EM: 1. Разделите его на maskedSeed и maskedDB 2. Вычислите r = maskedSeed XOR MGF(maskedDB, hLen) 3. Вычислите DB = maskedDB XOR MGF(r, len(DB)) 4. Проверьте совпадение lHash; найдите разделитель 0x01; извлеките M 5. Любая ошибка → расшифрование не удалось (всегда возвращается одна и та же ошибка)

Почему OAEP устраняет атаки на оракул

Случайное начальное значение r в OAEP меняется при каждом шифровании. С изменённого шифротекста с подавляющей вероятностью расшифровывается равномерно случайное дополненное сообщение. Оракул видит «некорректно» для любых изменений.

Безопасность IND-CCA2

IND-CCA2 (неразличимость при атаке с выбранным шифротекстом 2): злоумышленник не может отличить Enc(M0) от Enc(M1), даже имея доступ к оракулу расшифрования для всех шифротекстов, кроме проверочного. OAEP обеспечивает это свойство.

OAEP и v1.5 на практике

Библиотека криптографии Python: используйте padding.OAEP(), а не padding.PKCS1v15(). В Java используйте шифр 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding'. Никогда не используйте 'RSA/ECB/PKCS1Padding' в новом коде.

Максимальный размер сообщения OAEP

Для RSA-2048 с SHA-256: Максимальное сообщение = 256 - 2×32 - 2 = 190 байт Накладные расходы OAEP составляют 2×hLen + 2 байта. Для более длинных сообщений используйте гибридное шифрование AES: зашифруйте ключ AES с помощью OAEP, а данные — с помощью AES-GCM.

Быстрая проверка

Какое свойство делает OAEP устойчивой к атакам через оракул дополнения?

Итоги

OAEP обеспечивает доказуемую безопасность шифрования RSA. Далее мы изучим RSA-PSS — аналогичное улучшение для подписей RSA.

Часто задаваемые вопросы

Урок «OAEP: оптимальное асимметричное дополнение шифрования» бесплатный?

Да — полный текст урока «OAEP: оптимальное асимметричное дополнение шифрования» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «OAEP: оптимальное асимметричное дополнение шифрования»?

Разберите кодирование OAEP и то, как оно обеспечивает безопасность IND-CCA2 Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «OAEP: оптимальное асимметричное дополнение шифрования»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Учебный RSA и причины его небезопасности
  2. Дополнение PKCS#1 v1.5 и атака Блайхенбахера
  3. OAEP: оптимальное асимметричное дополнение шифрования
  4. RSA-PSS для цифровых подписей
← Назад к Cryptology Academy