openjdk.ruOpenJDK на русском

JEP 115: AEAD CipherSuites

Наборы шифров AEAD

АвторXuelei Fan
ОтветственныйBradford Wetmore
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск8
Компонентsecurity-libs / java.security
Обсуждениеsecurity dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
ОдобренBrian Goetz
Создан2011/07/25 20:00
Обновлён2026/08/04 23:15
Задача8046105

Аннотация

Поддержка наборов шифров AEAD/GCM, определённых в SP-800-380D, RFC 5116, RFC 5246, RFC 5288, RFC 5289 и RFC 5430.

Цели

  1. Реализовать криптографический алгоритм AEAD/GCM в провайдерах JCA/JCE.

  2. Обновить JCA/JCE для поддержки операций AEAD.

  3. Реализовать в JSSE наборы шифров на основе AEAD/GCM.

Мотивация

В рамках программы Suite B Агентства национальной безопасности США (модернизация национальной криптографической инфраструктуры) JDK должен поддерживать режим шифрования Galois Counter Mode (GCM) для таких шифров, как AES. GCM также используется в ряде новых наборов шифров TLS. Режим GCM будет обязательным для продаж правительству США и другим заказчикам, которым нужны современные криптографические технологии.

Для соответствия TLS требованиям Suite B наборы шифров GCM ОБЯЗАТЕЛЬНО должны использоваться всегда, когда и клиент, и сервер поддерживают нужные наборы шифров. Чтобы соответствовать Suite B, шифры GCM должны поддерживаться в провайдере JSSE по умолчанию.

Описание

В Java SE интерфейсы AEAD/GCM уже определены в JDK 7. В JDK 8 провайдеры JCA/JCE реализуют эти интерфейсы AEAD/GCM. Для стандарта PKCS#11 поддержка GCM определена в спецификации PKCS#11 V2.30, которая пока остаётся черновиком. Поэтому провайдер SunPKCS11 в JDK 8 не будет доработан для поддержки GCM.

Эта возможность добавит поддержку следующих наборов шифров в реализацию JSSE по умолчанию:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (RFC 5430, RFC 5289)
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (RFC 5430, RFC 5289)
  • TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 (RFC 5289)
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (RFC 5289)
  • TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 (RFC 5289)
  • TLS_RSA_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_RSA_WITH_AES_256_GCM_SHA384 (RFC 5288)
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (RFC 5288)
  • TLS_DH_RSA_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_DH_RSA_WITH_AES_256_GCM_SHA384 (RFC 5288)
  • TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 (RFC 5288)
  • TLS_DH_DSS_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_DH_DSS_WITH_AES_256_GCM_SHA384 (RFC 5288)
  • TLS_DH_anon_WITH_AES_128_GCM_SHA256 (RFC 5288)
  • TLS_DH_anon_WITH_AES_256_GCM_SHA384 (RFC 5288)

Обратите внимание: чтобы наборы шифров GCM AEAD поддерживались в JSSE, реализация шифра GCM должна быть доступна хотя бы в одном из провайдеров JCA/JCE. Поэтому в рамках этого JEP провайдер SunJCE будет соответствующим образом доработан, чтобы обеспечить поддержку GCM, необходимую для наборов шифров AEAD в JSSE.

Тестирование

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

Влияние

  • JCP: влияния на JCP нет
  • Другие компоненты JDK: влияния на другие компоненты JDK нет
  • Совместимость: минимальное
  • Безопасность: влияния на безопасность нет
  • Переносимость: ограниченное влияние на переносимость
  • Пользовательский интерфейс: графического пользовательского интерфейса нет
  • Документация: нужно задокументировать новую возможность
  • Интернационализация: минимальное влияние, вероятно, добавятся новые сообщения об ошибках
  • Локализация: минимальное влияние, вероятно, добавятся новые сообщения об ошибках
  • Юридические вопросы: юридических проблем нет
  • Прочее: другого влияния не выявлено