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

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), за двумя следующими исключениями:

  1. Начальное хэш-значение H должно быть задано так, как указано в разд. 5.3.2, т. е. восемью 32-битными словами H0--H7: H0 = c1059ed8, H1 = 367cd507, H2 = 3070dd17, H3 = f70e5939, H4 = ffc00b31, H5 = 68581511, H6 = 64f98fa7, H7 = befa4fa4.

  2. 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): доступны тестовые векторы:

Тест на совместимость: может выполняться, когда одни и те же алгоритмы поддерживаются несколькими криптопровайдерами 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, а также справочные руководства по различным провайдерам.

  • Юридические вопросы: необходимо обновить список поддерживаемых криптографических алгоритмов в документах по экспортному контролю.