JEP 130: SHA-224 Message Digests
Дайджесты сообщений SHA-224
| Ответственный | Valerie Peng |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | security-libs / java.security |
| Обсуждение | security dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | M |
| Одобрен | Brian Goetz |
| Создан | 2011/05/10 20:00 |
| Обновлён | 2017/06/15 00:08 |
| Задача | 8046120 |
Аннотация
Реализовать алгоритм дайджеста сообщений SHA-224 и связанные с ним алгоритмы.
Цели
Дополнить существующие криптографические алгоритмы JDK вариантом SHA-224 из семейства реализаций дайджестов сообщений SHA-2. Обеспечить совместимость с широко используемыми сторонними криптопровайдерами, а также между провайдерами, входящими в состав JDK.
Мотивация
Из-за известных уязвимостей дайджеста сообщений SHA-1 всё больше приложений и протоколов переходят на дайджесты сообщений SHA-2. Изначально JDK не поддерживал SHA-224, поскольку этот вариант распространён не так широко, как другие варианты SHA-2, т. е. SHA-256, SHA-384 и SHA-512. В последние годы некоторые стандарты, например PKCS11, были дополнены поддержкой SHA-224, поэтому нам тоже следует его поддерживать.
Описание
SHA-224 определяется точно так же, как SHA-256 (FIPS 180-3, раздел 6.2), за двумя следующими исключениями:
-
Начальное хэш-значение H должно быть задано так, как указано в разд. 5.3.2, т. е. восемью 32-битными словами H0--H7: H0 = c1059ed8, H1 = 367cd507, H2 = 3070dd17, H3 = f70e5939, H4 = ffc00b31, H5 = 68581511, H6 = 64f98fa7, H7 = befa4fa4.
-
224-битный дайджест сообщения получается усечением итогового хэш-значения H(N) до его старших (крайних левых) 224 бит: Помимо реализации дайджеста сообщений SHA-224, для полноты решения следует также реализовать другие криптографические алгоритмы, использующие SHA-224. Ниже приведён список криптографических алгоритмов и соответствующих им провайдеров:
- Дайджест сообщений SHA224 в провайдере SUN
- Подпись SHA224withRSA в провайдере SunRsaSign
- Подпись SHA224withECDSA в провайдере SunEC
- MAC HmacSHA224 в провайдере SunJCE
- Поддержка OAEPwithSHA-224AndMGF1Padding в провайдере SunJCE
- Дайджест сообщений SHA224 (CKM_SHA224), подпись SHA224withRSA (CKM_SHA224_RSA_PKCS), MAC HmacSHA224 (CKM_SHA224_HMAC) в провайдере SunPKCS11
Тестирование
Тест с известными ответами (Known-Answer Test): доступны тестовые векторы:
-
SHA224: http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/SHA224.pdf
-
HmacSHA224: http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/HMAC_SHA224.pdf
Тест на совместимость: может выполняться, когда одни и те же алгоритмы поддерживаются несколькими криптопровайдерами JDK, например SUN и SunPKCS11 для SHA224, SunRsaSign и SunPKCS11 для SHA224withRSA и т. д. Кроме того, SQE может разработать продуктовые тесты, проверяющие совместимость с криптопровайдерами 3-й стороны, такими как Bouncy Castle.
Риски и допущения
Провайдер SunPKCS11 поддерживает не все механизмы, определённые стандартом PKCS11. Например, PKCS11 определяет механизмы для функциональности формирования ключей, т. е. по заданному секретному ключу можно получить другой секретный ключ с битами, скорректированными по чётности. Провайдер SunPKCS11 не поддерживает никакую функциональность формирования ключей с использованием дайджестов сообщений, т. е. механизмы CKM_[MD5/SHA1/SHA256/SHA384/SHA512]_KEY_DERIVATION, поэтому поддержка CKM_SHA224_KEY_DERIVATION не предусмотрена. То же касается механизма CKM_SHA224_RSA_PKCS_PSS, функции CKG_MGF1_SHA224, механизма CKM_SHA224_HMAC_GENERAL, а также провайдера SunRsaSign в отношении подписей RSA PSS.
Влияние
-
Документация: несколько документов по безопасности придётся дополнить новыми поддерживаемыми алгоритмами, например JCA Standard Algorithm Name Documentation, а также справочные руководства по различным провайдерам.
-
Юридические вопросы: необходимо обновить список поддерживаемых криптографических алгоритмов в документах по экспортному контролю.