FIPS 186
FIPS 186 (Federal Information Processing Standard Publication 186) — это стандарт правительства США, определяющий алгоритмы цифровой подписи. Разработан Национальным институтом стандартов и технологий (NIST). Стандарт является обязательным для использования в федеральных государственных учреждениях США при создании, проверке и управлении цифровыми подписями. Впервые опубликован в 1994 году, впоследствии неоднократно пересматривался. Наиболее известен тем, что ввел в широкое применение алгоритм DSA (Digital Signature Algorithm), а также легитимизировал использование алгоритмов на основе эллиптических кривых (ECDSA) и, в последних версиях, схемы подписи на основе хеш-функций (EdDSA).
История
Предпосылки и первая версия (1994)
В конце 1980-х — начале 1990-х годов, с развитием электронного документооборота и сети Интернет, возникла необходимость в едином стандарте, обеспечивающем подлинность и целостность электронных сообщений. В 1991 году NIST объявил конкурс на разработку алгоритма цифровой подписи, который стал бы частью Федерального стандарта обработки информации (FIPS). В 1994 году был опубликован FIPS 186, который утвердил алгоритм DSA (Digital Signature Algorithm). DSA основан на сложности вычисления дискретных логарифмов в конечных полях и был разработан Дэвидом Кравицем (David Kravitz) из Агентства национальной безопасности (АНБ). Стандарт сразу же подвергся критике со стороны криптографического сообщества из-за ряда технических ограничений (фиксированная длина ключа 512 бит, медленная верификация) и опасений по поводу возможного «черного хода» (backdoor), заложенного АНБ.
Пересмотр 186-1 (1998)
В 1998 году вышла версия FIPS 186-1. Основным изменением стало увеличение максимальной длины ключа DSA до 1024 бит, что соответствовало растущим требованиям к криптостойкости. Также была уточнена процедура генерации простых чисел для DSA, чтобы снизить риск коллизий.
Пересмотр 186-2 (2000)
В 2000 году была опубликована версия FIPS 186-2. Ключевым нововведением стало включение в стандарт алгоритмов, основанных на эллиптических кривых (ECDSA). ECDSA (Elliptic Curve Digital Signature Algorithm) был предложен как альтернатива DSA, обеспечивающая аналогичный уровень безопасности при меньшей длине ключа. Это было важно для устройств с ограниченными вычислительными ресурсами (смарт-карты, мобильные телефоны). Стандарт также включал RSA (Rivest-Shamir-Adleman) в качестве дополнительного, но рекомендованного алгоритма. В 2001 году была выпущена поправка Change Notice 1, которая уточнила параметры эллиптических кривых.
Пересмотр 186-3 (2009)
Версия FIPS 186-3, опубликованная в 2009 году, значительно расширила возможности стандарта. Были добавлены новые размеры ключей для DSA (до 3072 бит) и ECDSA (до 521 бита). Кроме того, впервые были официально разрешены ключи DSA длиной 2048 бит и 3072 бит, что соответствовало рекомендациям NIST по переходу на более стойкую криптографию. Стандарт также уточнил процедуры генерации случайных чисел и проверки подписей.
Пересмотр 186-4 (2013)
В 2013 году вышла версия FIPS 186-4. Основные изменения коснулись алгоритмов генерации псевдослучайных чисел (DRBG) и процедур проверки подписей. Стандарт четко разделил алгоритмы на три категории: DSA, ECDSA и RSA. Были добавлены рекомендации по использованию детерминированных схем подписи (например, RFC 6979) для предотвращения уязвимостей, связанных с плохим качеством случайных чисел. Также были уточнены требования к сертификации устройств, реализующих стандарт.
Пересмотр 186-5 (2023)
Последняя на данный момент версия, FIPS 186-5, была опубликована 3 февраля 2023 года. Она заменила предыдущую версию и внесла несколько важных изменений:
- Удаление DSA: Алгоритм DSA был исключен из стандарта. NIST мотивировал это тем, что DSA устарел и не рекомендуется к использованию, а его безопасность уступает ECDSA и EdDSA. Разрешено только верифицировать подписи, созданные по старым версиям стандарта.
- Добавление EdDSA: В стандарт был включен алгоритм EdDSA (Edwards-curve Digital Signature Algorithm), основанный на эллиптической кривой Curve25519 (Ed25519) и Curve448 (Ed448). EdDSA обеспечивает высокую скорость и устойчивость к атакам по сторонним каналам.
- Уточнение параметров ECDSA: Были уточнены требования к кривым P-256, P-384 и P-521.
- Уточнение RSA: Алгоритм RSA остался в стандарте, но с рекомендацией использовать ключи длиной не менее 2048 бит.
Алгоритмы, входящие в стандарт
DSA (Digital Signature Algorithm)
- Тип: Асимметричный алгоритм на основе дискретного логарифмирования в конечных полях.
- Статус: Исключен из FIPS 186-5 (2023). Разрешена только верификация старых подписей.
- Принцип: Использует простые числа p и q (где q — делитель p-1), а также генератор g. Подпись состоит из двух чисел (r, s). Безопасность основана на сложности вычисления дискретного логарифма.
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Тип: Асимметричный алгоритм на основе эллиптических кривых.
- Статус: Активный, рекомендованный.
- Принцип: Является вариантом DSA, но использует точки на эллиптической кривой. Это позволяет достичь аналогичной безопасности при меньшей длине ключа (например, 256-битная кривая P-256 обеспечивает уровень безопасности, сопоставимый с 3072-битным RSA).
- Кривые: NIST P-256, P-384, P-521 (также известные как secp256r1, secp384r1, secp521r1).
EdDSA (Edwards-curve Digital Signature Algorithm)
- Тип: Асимметричный алгоритм на основе эллиптических кривых (кривые Эдвардса).
- Статус: Активный, рекомендованный (добавлен в FIPS 186-5).
- Принцип: Использует кривые Эдвардса (Curve25519, Curve448). Отличается высокой скоростью, детерминированностью (отсутствие необходимости в качественном генераторе случайных чисел) и устойчивостью к атакам по сторонним каналам.
- Варианты: Ed25519 (на базе Curve25519, 256-битный ключ) и Ed448 (на базе Curve448, 448-битный ключ).
RSA (Rivest-Shamir-Adleman)
- Тип: Асимметричный алгоритм на основе факторизации больших чисел.
- Статус: Активный, но с ограничениями (рекомендуется длина ключа не менее 2048 бит).
- Принцип: Основан на сложности разложения произведения двух больших простых чисел на множители. Подпись создается путем возведения хеша сообщения в степень d (секретный ключ) по модулю n. Верификация — возведение в степень e (открытый ключ).
Криптографические основы
Все алгоритмы FIPS 186 используют асимметричную криптографию. Процесс создания цифровой подписи включает:
- Хеширование: Исходное сообщение (или его часть) преобразуется в хеш-значение фиксированной длины с помощью криптографической хеш-функции (например, SHA-256, SHA-384, SHA-512).
- Подписание: Хеш-значение подписывается с использованием секретного ключа подписывающего лица. Результатом является цифровая подпись (обычно одно или два числа).
- Верификация: Получатель сообщения, используя открытый ключ отправителя, проверяет, что подпись соответствует хешу сообщения и открытому ключу. Если подпись верна, это подтверждает, что сообщение не было изменено (целостность) и было создано именно владельцем секретного ключа (аутентичность).
Применение
FIPS 186 является основой для реализации цифровых подписей в широком спектре государственных и коммерческих систем:
- Электронный документооборот: Подписание контрактов, отчетов, счетов-фактур.
- Безопасность веб-сайтов: Цифровые сертификаты X.509, используемые в протоколах TLS/SSL, часто используют ECDSA или RSA для подписи сертификатов.
- Электронная почта: Подписание писем по протоколам S/MIME и PGP.
- Программное обеспечение: Подписание исполняемых файлов, драйверов, обновлений операционной системы (например, Microsoft Authenticode, Apple Code Signing).
- Криптовалюты: Биткоин, Эфириум и многие другие криптовалюты используют ECDSA (на кривой secp256k1) для подписи транзакций.
- Государственные системы: Электронные паспорта, системы голосования, системы управления идентификацией (например, PIV-карты в США).
Критика и ограничения
- Роль АНБ: Разработка DSA и ECDSA (включая выбор кривых P-256, P-384, P-521) была в значительной степени инициирована АНБ. Это породило опасения, что в алгоритмах могут быть заложены «черные ходы» (backdoors), доступные только АНБ. Хотя официальных доказательств этому нет, многие криптографы (например, Дэниел Бернштейн, автор Curve25519) критиковали NIST за непрозрачность процесса выбора кривых.
- Сложность генерации случайных чисел: ECDSA и DSA требуют высококачественного генератора случайных чисел для каждого подписания. Утечка или предсказуемость случайного числа (nonce) может привести к полному раскрытию секретного ключа. Эта уязвимость была продемонстрирована в взломе Sony PlayStation 3 (2010), где использовался фиксированный nonce.
- Устаревание DSA: DSA был медленнее и менее гибок, чем ECDSA, и его исключение из стандарта в 2023 году было ожидаемым шагом.
- Алгоритмическая сложность: Реализация FIPS 186 требует строгого соблюдения спецификаций, включая генерацию простых чисел, выбор кривых и процедуры проверки, что может быть сложной задачей для разработчиков.
Связь с другими стандартами
FIPS 186 тесно связан с другими стандартами NIST:
- FIPS 180 (SHA-1, SHA-2, SHA-3): Определяет хеш-функции, используемые для создания дайджестов сообщений перед подписанием.
- FIPS 140 (Security Requirements for Cryptographic Modules): Определяет требования к безопасности криптографических модулей, реализующих FIPS 186.
- SP 800-186 (Recommendations for Discrete Logarithm-based Cryptography): Дополнительный документ, содержащий рекомендации по выбору параметров для DSA и ECDSA.
- SP 800-56A (Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography): Определяет схемы обмена ключами, которые могут использовать те же кривые, что и ECDSA.
Источники
- National Institute of Standards and Technology (NIST). FIPS 186-5: Digital Signature Standard (DSS). February 3, 2023.
- National Institute of Standards and Technology (NIST). FIPS 186-4: Digital Signature Standard (DSS). July 2013.
- National Institute of Standards and Technology (NIST). FIPS 186-3: Digital Signature Standard (DSS). June 2009.
- National Institute of Standards and Technology (NIST). FIPS 186-2: Digital Signature Standard (DSS). January 2000.
- National Institute of Standards and Technology (NIST). FIPS 186-1: Digital Signature Standard (DSS). December 1998.
- National Institute of Standards and Technology (NIST). FIPS 186: Digital Signature Standard (DSS). May 1994.
- Bernstein, D. J. (2006). Curve25519: New Diffie-Hellman Speed Records.
- Krawitz, D. (1993). Digital Signature Algorithm. U.S. Patent 5,231,668.
- RFC 6979: Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →