Алгоритм цифровой подписи
Алгоритм цифровой подписи ( DSA ) — это криптосистема с открытым ключом и федеральный стандарт обработки информации для цифровых подписей , основанный на математической концепции модульного возведения в степень и задаче дискретного логарифма . В криптосистеме с открытым ключом генерируются два ключа: данные могут быть зашифрованы только с помощью открытого ключа, а зашифрованные данные могут быть расшифрованы только с помощью закрытого ключа. DSA — это вариант схем подписи Шнорра и Эль-Гамаля . [ 1 ] : 486
Национальный институт стандартов и технологий (NIST) предложил DSA для использования в своем стандарте цифровой подписи (DSS) в 1991 году и принял его как FIPS 186 в 1994 году. [ 2 ] Было выпущено пять редакций первоначальной спецификации. Новейшая спецификация: FIPS 186-5 от февраля 2023 г. [ 3 ] DSA запатентован, но NIST сделал этот патент доступным по всему миру без лицензионных отчислений. Спецификация FIPS 186-5 указывает, что DSA больше не будет одобрен для создания цифровых подписей, но может использоваться для проверки подписей, созданных до даты внедрения этого стандарта.
Обзор
[ редактировать ]DSA работает в рамках криптосистем с открытым ключом и основан на алгебраических свойствах модульного возведения в степень вместе с проблемой дискретного логарифма , которая считается вычислительно неразрешимой. Алгоритм использует пару ключей, состоящую из открытого ключа и закрытого ключа. Закрытый ключ используется для создания цифровой подписи сообщения, и такую подпись можно проверить с помощью соответствующего открытого ключа подписывающего лица. Цифровая подпись обеспечивает аутентификацию сообщения (получатель может проверить происхождение сообщения), целостность (получатель может убедиться, что сообщение не было изменено с момента его подписания) и неотказуемость (отправитель не может ложно заявлять, что он не подписал сообщение).
История
[ редактировать ]В 1982 году правительство США запросило предложения по стандарту подписи с открытым ключом. В августе 1991 года Национальный институт стандартов и технологий (NIST) предложил DSA для использования в своем стандарте цифровой подписи (DSS). Первоначально была серьезная критика, особенно со стороны компаний- разработчиков программного обеспечения , которые уже вложили усилия в разработку программного обеспечения для цифровой подписи на основе криптосистемы RSA . [ 1 ] : 484 Тем не менее, NIST принял DSA в качестве федерального стандарта (FIPS 186) в 1994 году. Было выпущено пять версий первоначальной спецификации: FIPS 186–1 в 1998 году, [ 4 ] ФИПС 186-2 в 2000 г., [ 5 ] ФИПС 186-3 в 2009 г., [ 6 ] ФИПС 186-4 в 2013 г., [ 3 ] и FIPS 186–5 в 2023 году. [ 7 ] Стандарт FIPS 186-5 запрещает подписание с помощью DSA, но позволяет проверять подписи, созданные до даты реализации стандарта в качестве документа. Он должен быть заменен более новыми схемами подписи, такими как EdDSA . [ 8 ]
DSA защищен патентом США № 5 231 668 , поданным 26 июля 1991 г., срок действия которого истек, и принадлежит Дэвиду В. Кравицу. [ 9 ] бывший сотрудник АНБ . Этот патент был передан «Соединенным Штатам Америки в лице министра торговли Вашингтона, округ Колумбия», и NIST сделал этот патент доступным по всему миру без лицензионных отчислений. [ 10 ] Клаус П. Шнорр утверждает, что его патент США № 4 995 082 (срок действия которого также истек) распространяется на DSA; это утверждение оспаривается. [ 11 ]
В 1993 году Дэйву Банисару удалось получить подтверждение по запросу FOIA , что алгоритм DSA был разработан не NIST, а АНБ. [ 12 ]
OpenSSH объявил, что DSA планируется удалить в 2025 году. [ 13 ]
Операция
[ редактировать ]Алгоритм DSA включает в себя четыре операции: генерацию ключей (которая создает пару ключей), распределение ключей, подписание и проверку подписи.
1. Генерация ключей
[ редактировать ]Генерация ключей состоит из двух этапов. Первый этап — это выбор параметров алгоритма , которые могут быть общими для разных пользователей системы, а второй этап — вычисление одной пары ключей для одного пользователя.
Генерация параметров
[ редактировать ]- Выберите утвержденную криптографическую хеш-функцию. с выходной длиной биты. В оригинальном DSS всегда был SHA-1 , но более сильные хеш-функции SHA-2 одобрены для использования в текущем DSS. [ 3 ] [ 14 ] Если больше длины модуля , только крайний левый используются биты хэш-вывода.
- Выберите длину ключа . Исходный DSS ограничен быть кратным 64 между 512 и 1024 включительно. NIST 800-57 рекомендует длину 2048 (или 3072) для ключей со сроком действия, превышающим 2010 (или 2030). [ 15 ]
- Выберите длину модуля такой, что и . FIPS 186-4 определяет и иметь одно из значений: (1024, 160), (2048, 224), (2048, 256) или (3072, 256). [ 3 ]
- Выберите -битное простое число .
- Выберите -битное простое число такой, что кратно .
- Выберите целое число случайно из .
- Вычислить . В том редком случае, когда попробуйте еще раз с другим . Обычно используется. Это модульное возведение в степень можно эффективно вычислить, даже если значения велики.
Параметры алгоритма: ( , , ). Они могут использоваться разными пользователями системы.
Ключи для каждого пользователя
[ редактировать ]Учитывая набор параметров, второй этап вычисляет пару ключей для одного пользователя:
- Выберите целое число случайно из .
- Вычислить .
это закрытый ключ и является открытым ключом.
2. Распределение ключей
[ редактировать ]Подписавшаяся сторона должна опубликовать открытый ключ. . То есть они должны отправить ключ получателю через надежный, но не обязательно секретный механизм. Подписавшаяся сторона должна хранить закрытый ключ. секрет.
3. Подписание
[ редактировать ]Сообщение подписывается следующим образом:
- Выберите целое число случайно из
- Вычислить . В том маловероятном случае, что , начните снова с другим случайным образом .
- Вычислить . В том маловероятном случае, что , начните снова с другим случайным образом .
Подпись
Расчет и равносильно созданию нового ключа для каждого сообщения. Модульное возведение в степень в вычислениях — это самая затратная в вычислительном отношении часть операции подписания, но ее можно вычислить до того, как сообщение станет известно. Вычисление обратного модуля — вторая по стоимости часть, и ее также можно вычислить до того, как сообщение станет известно. Его можно вычислить с помощью расширенного алгоритма Евклида или малой теоремы Ферма : .
4. Проверка подписи
[ редактировать ]Можно проверить, что подпись является допустимой подписью для сообщения следующее:
- Убедитесь, что и .
- Вычислить .
- Вычислить .
- Вычислить .
- Вычислить .
- Подпись действительна тогда и только тогда, когда .
Корректность алгоритма
[ редактировать ]Схема подписи правильна в том смысле, что проверяющая сторона всегда принимает подлинные подписи. Это можно показать следующим образом:
Во-первых, поскольку , отсюда следует, что по малой теореме Ферма . С и является простым, должен быть порядок .
Подписавшаяся сторона вычисляет
Таким образом
С имеет порядок у нас есть
Наконец, корректность DSA следует из
Чувствительность
[ редактировать ]При использовании DSA энтропия, секретность и уникальность случайного значения подписи являются критическими. Это настолько важно, что нарушение любого из этих трех требований может раскрыть злоумышленнику весь закрытый ключ. [ 16 ] Использование одного и того же значения дважды (даже при сохранении секрет), использование предсказуемого значения или утечка даже нескольких битов в каждой из нескольких подписей достаточно, чтобы раскрыть закрытый ключ . [ 17 ]
Эта проблема затрагивает как DSA, так и алгоритм цифровой подписи с эллиптической кривой ( ECDSA ) — в декабре 2010 года группа Fail0verflow объявила о восстановлении закрытого ключа ECDSA, используемого Sony для подписи программного обеспечения для игровой консоли PlayStation 3 . Атака стала возможной, потому что Sony не удалось сгенерировать новый случайный за каждую подпись. [ 18 ]
Эту проблему можно предотвратить, выведя детерминированно из закрытого ключа и хэша сообщения, как описано РФК 6979 . Это гарантирует, что различен для каждого и непредсказуем для злоумышленников, не знающих закрытый ключ .
Кроме того, могут быть созданы вредоносные реализации DSA и ECDSA, где выбран для подсознательной утечки информации через подписи. Например, автономный закрытый ключ может быть украден из идеального автономного устройства, которое выпускает только невинно выглядящие подписи. [ 19 ]
Реализации
[ редактировать ]Ниже приведен список криптографических библиотек, обеспечивающих поддержку DSA:
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Шнайер, Брюс (1996). Прикладная криптография . Уайли. ISBN 0-471-11709-9 .
- ^ «FIPS PUB 186: Стандарт цифровой подписи (DSS), 19 мая 1994 г.» . qcsrc.nist.gov . Архивировано из оригинала 13 декабря 2013 г.
- ^ Jump up to: а б с д «FIPS PUB 186-4: Стандарт цифровой подписи (DSS), июль 2013 г.» (PDF) . csrc.nist.gov .
- ^ «FIPS PUB 186-1: Стандарт цифровой подписи (DSS), 15 декабря 1998 г.» (PDF) . csrc.nist.gov . Архивировано из оригинала (PDF) 26 декабря 2013 г.
- ^ «FIPS PUB 186-2: Стандарт цифровой подписи (DSS), 27 января 2000 г.» (PDF) . csrc.nist.gov .
- ^ «FIPS PUB 186-3: Стандарт цифровой подписи (DSS), июнь 2009 г.» (PDF) . csrc.nist.gov .
- ^ «FIPS PUB 186-5: Стандарт цифровой подписи (DSS), февраль 2023 г.» (PDF) . csrc.nist.gov .
- ^ «Стандарт цифровой подписи (DSS)» . Министерство торговли США. 31 октября 2019 года . Проверено 21 июля 2020 г.
- ↑ Доктор Дэвид В. Кравиц. Архивировано 9 января 2013 г., в Wayback Machine.
- ^ Вернер Кох. «DSA и патенты»
- ^ «Годовой отчет CSSPAB за 1994 год» . 26 августа 2009 г. Архивировано из оригинала 26 августа 2009 г.
- ^ Нойманн, Питер Г. (29 февраля 2020 г.). «Дайджест RISKS, том 14, выпуск 59» . Архивировано из оригинала 29 февраля 2020 г. Проверено 3 октября 2023 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «OpenSSH объявляет график удаления DSA [LWN.net]» . lwn.net . Проверено 11 января 2024 г.
- ^ «FIPS PUB 180-4: Стандарт безопасного хеширования (SHS), март 2012 г.» (PDF) . csrc.nist.gov .
- ^ «Специальная публикация NIST 800-57» (PDF) . csrc.nist.gov . Архивировано из оригинала (PDF) 6 июня 2014 г.
- ^ «Катастрофа Debian PGP, которая почти случилась» . корневые лаборатории rdist . 18 мая 2009 г.
- ^ ДСА -значение Требования
- ^ Бендель, Майк (29 декабря 2010 г.). «Хакеры описывают безопасность PS3 как эпический провал: получите неограниченный доступ» . Exophase.com . Проверено 5 января 2011 г.
- ^ Вербюхельн, Стефан (2 января 2015 г.). «Как идеальные офлайн-кошельки все еще могут утекать приватные ключи Биткойнов». arXiv : 1501.00447 [ cs.CR ].
Внешние ссылки
[ редактировать ]- FIPS PUB 186-4: Стандарт цифровой подписи (DSS) , четвертая (и текущая) версия официальной спецификации DSA.
- Рекомендации по управлению ключами. Часть 1: общие сведения , Специальная публикация NIST 800-57, стр. 62–63