Рейтинг:3

Чем на практике отличаются экземпляры RSAES-OAEP и SHA*WithRSAEncryption?

флаг vu

Для проекта в свободное время, над которым я работал, я оцениваю добавленные схемы RSA PKCS # 1 для реализации.

Для PKCS#1 v1.5 шифрование, по-видимому, не требует хеш-функции, а для подписи не требуется дополнительная функция генерации маски (MGF), кроме алгоритма дайджеста для хеширования сообщения.

Для PKCS#1 v2.x и шифрование, и подпись реализуются с помощью MGF, хеш-функции и дополнительной метки (которая в настоящее время не используется). MGF, который, в свою очередь, реализуется с помощью другой хеш-функции с использованием (ad hoc) конструкции MGF1.

На мой взгляд, составная криптосистема должна иметь как можно меньше параметров реализации, чтобы упростить реализацию и обеспечить совместимость; в проект следует вставлять только параметры, необходимые для криптографической гибкости.

Вот почему меня удивляет, что хэш, создающий экземпляр MGF, может отличаться от хеш-функции, используемой для хеширования входных данных.

Мой вопрос здесь:

  • Существуют ли существующие рекомендации (например, CMS, PKIX) по использованию и реализации PKCS#1 v2.x RSAES-OAEP и RSASSA-PSS, где указан выбор хеш-функций?
  • Имеются ли назначенные идентификаторы (от IANA или аналогичных организаций)?
  • Дополнительные моменты относятся к обработке NIST Draft FIPS 186-5, где SHAKE-{128,256} должен быть одобрен для использования в качестве MGF.
Gilles 'SO- stop being evil' avatar
флаг cn
PKCS#1 рекомендует использовать одни и те же хэш-функции (и предписывает использовать одну и ту же хеш-функцию для хеширования сообщения и хэширования, различаться может только MGF), и, по моему опыту, это в основном соблюдается на практике, но я видел системы, которые застряли на SHA-1 для MGF, несмотря на то, что перешли на SHA-2 для хеширования сообщений. Я никогда не видел ничего, кроме MGF1 для MGF (кроме SHAKE, но если есть первые последователи, я их еще не видел: все, что я видел, используя SHAKE, сочетает его с ECC).
Рейтинг:1
флаг ng

Начну с функционального сравнения RSAES-PKCS1-v1_5 с РГАЭС-ОАЭП.

Последний является современной почти заменой первого.

Прежде всего, практически невозможно создать библиотеку, реализующую расшифровку RSAES-PKCS1-v1_5, обеспечивающую защиту от атак по сторонним каналам. Многие попытки обеспечить безопасность на уровне приложений потерпели неудачу: злоумышленник может сделать небольшое количество запросов к устройству, выполняющему дешифрование, и наблюдать за его поведением (код ошибки, размер пакета, время, доступ к диску, кеш, звук источника питания…) часто удается [то есть удается расшифровать одно сообщение, которое они перехватили, или подписать одно сообщение, если ключ имеет двойное назначение]. Атака Блейхенбахера CCA имеет так много вариаций, что трудно уследить. В отличие от RSAES-OAEP: ограниченное внимание к реализации библиотеки предотвращает эквивалентную атаку.

Кроме того, RSAES-PKCS1-v1_5 определен так, чтобы допускать 64-битную случайность, чего недостаточно по современным стандартам для надежного предотвращения проверки точного предположения открытого текста. Единственный способ исправить это — запретить шифрование сообщений слишком близко к максимально допустимому размеру.

RSAES-OAEP имеет доказательство безопасности (в предположении, что проблема RSA сложна, а хеш может быть смоделирован как псевдослучайная функция, а реализация не имеет побочного канала). RSAES-PKCS1-v1_5 — нет.

Одним из недостатков RSAES-OAEP является то, что он позволяет использовать меньшие сообщения для того же модуля, но на практике это редко является проблемой, поскольку при увеличении размера сообщения мы используем гибридное шифрование.


существующие рекомендации (например, CMS, PKIX) по использованию и внедрению RSAES-OAEP и RSASSA-PSS

Как указано в комментарий на вопрос, т. текущая передовая практика заключается в использовании MGF1 с тем же хэшем, что и для остальной части конструкции. SHA-256 распространен, лучше всего SHA-512. Наиболее распространенным отклонением от этого является использование SHA-1 в MGF1 для RSAES-OAEP, потому что Java API допускает легкую ошибку (см. это). Это все еще безопасно, насколько нам известно.

За РСАССА-ПСС, обычная (но не лучшая) практика - оставить поле соли пустым, то есть использовать $sLen=0$ в ЭМСА-ПСС.

Использование SHAKE-{128,256} в качестве MGF было бы разумным в теории, но не применялось на практике в известных мне приложениях и, возможно, никогда не будет.

Имеются ли назначенные идентификаторы (от IANA или аналогичных организаций)?

Есть OIDс для РГАЭС-ОАЭП, РСАССА-ПСС, MGF1, ША-256 и ША-512. Теперь, как эти OID должны использоваться в комбинации, например. сертификат X.509, и есть ли что-то, что будет продолжать работать, если это попытаются сделать? Я пас.

dave_thompson_085 avatar
флаг cn
Для большинства людей PKIX так же хорош, как X.509, а **параметры PKIX** для OAEP и PSS приведены в **RFC 4055**. TLS1.3 (RFC 8446 4.2.3) использует подписи PSS, указывая MGF-hash = message-hash и saltlen =digestlen, и сертификат должен содержать либо исходный OID (rsaEncryption по историческим причинам, даже если подпись не является шифрованием), либо OID PSS. TLS1.3 довольно широко применяется, хотя я не знаю, сколько сайтов используют RSA-PSS по сравнению с ECDSA или EdDSA — может быть, EFF пора провести еще один опрос?
Рейтинг:1
флаг vu
  • Существуют ли существующие рекомендации (например, CMS, PKIX) по использованию и реализации PKCS#1 v2.x RSAES-OAEP и RSASSA-PSS, где указан выбор хеш-функций?

И CMS, и PKIX имеют рекомендации по этому поводу. Обе CMS RFC-4056 и PKIX RFC-4055 рекомендует использовать один и тот же хэш для сообщения и MGF.

Примечание: S/MIME и PKIX являются завершенными рабочими группами в IETF, их преемнике. ЛАМПЫ занимается обслуживанием.

  • Имеются ли назначенные идентификаторы (от IANA или аналогичных организаций)?

OID ASN.1 обычно не нужно проходить через IANA.

RFC-3560 дойти до того, чтобы перечислить значения октетов для параметра алгоритма кодирования DER ASN.1, дословно.

  • Дополнительные моменты относятся к обработке NIST Draft FIPS 186-5, где SHAKE-{128,256} должен быть одобрен для использования в качестве MGF.

NIST, как и любые другие официальные правительственные органы, всегда придерживался позиции нейтральности в отношении поставщиков и отказывался от любой поддержки коммерческих продуктов, упомянутых в их официальных публикациях.

Документы IETF RFC-{8692,8702} указание SHAKE для использования с RSA (и CMS и PKIX в целом) указало Cisco Systems в качестве соредакторов. Так что это всего лишь предположение, возможно, Cisco представляет продукты, которые могут выиграть от аппаратной эффективности перестановки Keccak и параметров губки SHAKE при использовании в качестве случайного оракула в алгоритме RSA.

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

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