JEP 129: NSA Suite B Cryptographic Algorithms
Криптографические алгоритмы NSA Suite B
| Ответственный | Valerie Peng |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | security-libs / java.security |
| Обсуждение | security dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | M |
| Одобрен | Brian Goetz |
| Создан | 2011/05/03 20:00 |
| Обновлён | 2026/08/04 23:17 |
| Задача | 8046119 |
Аннотация
Предоставить реализации криптографических алгоритмов, которых требует NSA Suite B.
Цели
Предоставить в JDK реализации по умолчанию криптографических алгоритмов Suite B, чтобы Java-приложения могли соответствовать стандартам безопасности, которых требуют правительство США, финансовые организации и т. д. Обеспечить совместимость реализаций в наших различных криптопровайдерах: например, если один и тот же алгоритм поддерживается и провайдером SunPKCS11, и провайдером SunJCE, нужно провести базовое тестирование, чтобы убедиться в их совместимости.
Большинство алгоритмов, которых требует NSA Suite B, в JDK уже поддерживаются различными криптопровайдерами: SunEC (согласование ключей ECDH, подпись ECDSA), SUN (дайджесты сообщений SHA256, SHA384), SunJCE (шифр AES в режимах ECB/CBC/OFB/CFB), SunPKCS11 (в зависимости от нативной библиотеки PKCS11; но, возможно, нам придётся доработать код провайдера для работы с нативными реализациями). Кроме того, для алгоритмов на эллиптических кривых нужно убедиться, что поддерживаются требуемые кривые и параметры.
Что не является целью
Это улучшение охватывает только требуемые алгоритмы NSA Suite B. Следование рекомендациям NSA на уровне протоколов будет отдельной работой.
Мотивация
Криптография NSA Suite B одобрена NIST для использования правительством США и описана в стандартах и рекомендациях NIST.
Описание
В 2005 году NSA объявило о криптографии Suite B, которая основана на Национальной политике использования Advanced Encryption Standard (AES) для защиты систем национальной безопасности и информации, связанной с национальной безопасностью (CNSSP-15). Помимо AES, Suite B включает криптографические алгоритмы для обмена ключами, цифровой подписи и хэширования, а именно:
-
Шифрование: Advanced Encryption Standard (AES) — FIPS PUB 197 (с размером ключа 128 и 256 бит). См. FIPS PUB 197 в перечне публикаций FIPS Национального института стандартов и технологий (National Institute of Standards and Technology).
-
Обмен ключами: Ephemeral Unified Model и One-Pass Diffie Hellman (обозначается как ECDH) — NIST Special Publication 800-56A (с кривыми с простыми модулями длиной 256 и 384 бит).
-
Цифровая подпись: Elliptic Curve Digital Signature Algorithm (ECDSA) — FIPS PUB 186-3 (с кривыми с простыми модулями длиной 256 и 384 бит).
-
Хэширование: Secure Hash Algorithm (SHA) — FIPS PUB 180-3 (с использованием SHA-256 и SHA-384).
AES с 128-битными ключами обеспечивает достаточную защиту секретной информации до уровня SECRET включительно. Аналогично ECDH и ECDSA с эллиптической кривой с 256-битным простым модулем, как указано в FIPS PUB 186-3, и SHA-256 обеспечивают достаточную защиту секретной информации до уровня SECRET включительно. В период перехода на криптографию на эллиптических кривых в ECDH и ECDSA для защиты секретной информации до уровня SECRET включительно можно использовать DH, DSA и RSA с 2048-битным модулем.
Для защиты секретной информации уровня TOP SECRET требуются AES с 256-битными ключами, криптография с открытым ключом на эллиптических кривых с эллиптической кривой с 384-битным простым модулем, как указано в FIPS PUB 186-3, и SHA-384. Поскольку некоторые продукты, одобренные для защиты секретной информации до уровня TOP SECRET включительно, будут содержать только алгоритмы с этими параметрами, совместимость алгоритмов между различными продуктами можно гарантировать, только если эти параметры доступны как варианты.
Другой набор криптографии NSA, Suite A, содержит ряд засекреченных алгоритмов, которые не будут опубликованы. Suite A будет использоваться для защиты некоторых категорий особо чувствительной информации.
NSA Suite B Cryptography также содержит рекомендации по использованию криптографии Suite B с интернет-протоколами:
-
Internet Protocol Security (IPsec) Minimum Essential Interoperability Requirements (IPMEIR) внедряются в государственное оборудование, чтобы способствовать совместимости с коммерческой отраслью. IPMEIR Version 1.0.0 Core от 31 мая 2010 года и Elliptic Curve Cryptography Groups IPMEIR IS Version 1.0 от 13 мая 2010 года поддерживают стратегию Commercial Interoperability Specification Suite B, устанавливая минимальные требования к совместимости для производителей коммерческих сетевых продуктов IPsec и традиционных поставщиков государственных сетевых шифраторов.
-
IPsec с использованием Internet Key Exchange (IKE) или IKEv2: «Suite B Cryptography for IPsec», RFC 4869
-
TLS: «Suite B Cipher Suites for TLS», RFC 5430
-
Наборы шифров TLS на эллиптических кривых с SHA-256/384 и AES в режиме Galois Counter Mode (GCM)
-
S/MIME: «Suite B in Secure/Multipurpose Internet Mail Extensions (S/MIME)», RFC 5008
-
SSH: «AES Galois Counter Mode for the Secure Shell Transport Layer Protocol» (режим счётчика с аутентификацией Галуа для шифра AES в протоколе транспортного уровня защищённой оболочки), draft-igoe-secsh-aes-gcm-02.txt
-
Для помощи в выборе вариантов, способствующих совместимости, будут разработаны профили протоколов. NIST разработал профиль IPsec — NIST Special Publication 500-267, «A Profile for IPv6 in the U.S. Government -- Version 1.0».
Этот JEP не предлагает реализовывать эти рекомендации для протоколов.
На уровне криптопровайдеров не хватает и требуют поддержки только следующие реализации:
-
SUN/SunJCE/SunEC/SunPKCS11: добавить OID для поддерживаемых алгоритмов.
-
Провайдер SUN: поддержать размеры ключей DSA (L, N), где L — длина p в битах, а N — длина q в битах: (2048, 224), (2048, 256). Поддержка пары (3072, 256) в эту работу не входит, но может быть добавлена позже, если возникнет необходимость.
-
Провайдер SunJCE: поддержка шифра AES в режимах GCM и CCM. (Примечание: эта задача отслеживается в отдельном JEP, Support AEAD CipherSuites.)
На уровне Java API нам потребуется добавить API для DSA, который поддерживает и L, и N и передаёт их нижележащим реализациям провайдеров. Сейчас поддерживается только L, например в DSAKeyPairGenerator.
Тестирование
Нужно добавить:
-
Регрессионные тесты: тесты с известными ответами для проверки реализации новых алгоритмов,
-
Тесты SQE/продукта: тесты совместимости для алгоритмов, которые поддерживаются сразу несколькими криптопровайдерами
Риски и допущения
Интеллектуальная собственность: ключевая особенность криптографии Suite B — использование технологии эллиптических кривых вместо классической технологии открытого ключа. Чтобы облегчить внедрение Suite B в отрасли, NSA получило лицензию на права по 26 патентам компании Certicom, Inc., охватывающим различные технологии эллиптических кривых. По этой лицензии NSA вправе выдавать сублицензии поставщикам, создающим определённые типы продуктов или компонентов, которые могут использоваться для защиты информации, связанной с национальной безопасностью. Подробнее — здесь.
Влияние
-
Документация: нужно обновить все соответствующие технические обзоры по безопасности, документацию провайдеров и справочные руководства с учётом новых поддерживаемых алгоритмов
-
Юридические вопросы: нужно обновить список поддерживаемых криптографических алгоритмов в документах по экспортному контролю.