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.
Цели
-
Реализовать криптографический алгоритм AEAD/GCM в провайдерах JCA/JCE.
-
Обновить JCA/JCE для поддержки операций AEAD.
-
Реализовать в 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.
Тестирование
- Нужно проверить, что новые интерфейсы ведут себя так, как ожидается.
- Нужно проверить, что реализация неожиданным образом не нарушает обратную совместимость.
- Нужно проверить, что реализация неожиданным образом не создаёт новых проблем совместимости с другими системами.
Влияние
- JCP: влияния на JCP нет
- Другие компоненты JDK: влияния на другие компоненты JDK нет
- Совместимость: минимальное
- Безопасность: влияния на безопасность нет
- Переносимость: ограниченное влияние на переносимость
- Пользовательский интерфейс: графического пользовательского интерфейса нет
- Документация: нужно задокументировать новую возможность
- Интернационализация: минимальное влияние, вероятно, добавятся новые сообщения об ошибках
- Локализация: минимальное влияние, вероятно, добавятся новые сообщения об ошибках
- Юридические вопросы: юридических проблем нет
- Прочее: другого влияния не выявлено