ГОСТ 34.10-2018 (полное название: «ГОСТ 34.10-2018. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи», англ. «Information technology. Cryptographic data security. Signature and verification processes of electronic digital signature») — действующий межгосударственный криптографический стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи, реализуемой с использованием операций в группе точек эллиптической кривой, определенной над конечным простым полем.
Стандарт разработан на основе национального стандарта Российской Федерации ГОСТ Р 34.10-2012 и введен в действие с 1 июня 2019 года приказом Росстандарта № 1059-ст от 4 декабря 2018 года.
Область применения
Цифровая подпись позволяет:
- Аутентифицировать лицо, подписавшее сообщение;
- Контролировать целостность сообщения;
- Защищать сообщение от подделок;
История
Первые версии алгоритма разрабатывались Главным управлением безопасности связи ФАПСИ при участии Всероссийского научно-исследовательского института стандартизации (ВНИИстандарт), позже разработка перешла в руки Центра защиты информации и специальной связи ФСБ России и АО «ИнфоТеКС».
Описание
Криптографическая стойкость первых стандартов цифровой подписи ГОСТ Р 34.10-94 и ГОСТ 34.310-95 была основана на задаче дискретного логарифмирования в мультипликативной группе простого конечного поля большого порядка. Начиная с ГОСТ Р 34.10-2001 стойкость алгоритма основана на более сложной задаче вычисления дискретного логарифма в группе точек эллиптической кривой. Также стойкость алгоритма формирования цифровой подписи основана на стойкости соответствующей хеш-функции:
Тип
|
Наименование
|
Введен в действие
|
Функция хеширования
|
Приказ
|
Национальный
|
ГОСТ Р 34.10-94
|
1 января 1995 года
|
ГОСТ Р 34.11-94
|
Принят постановлением Госстандарта России № 154 от 23 мая 1994 года
|
Межгосударственный
|
ГОСТ 34.310-95
|
16 апреля 1998 года
|
ГОСТ 34.311-95
|
|
Национальный
|
ГОСТ Р 34.10-2001
|
1 июля 2002 года
|
ГОСТ Р 34.11-94
|
Принят постановлением Госстандарта России № 380-ст от 12 сентября 2001 года[1]
|
Межгосударственный
|
ГОСТ 34.310-2004
|
2 марта 2004 года
|
ГОСТ 34.311-95
|
Принят Евразийским советом по стандартизации, метрологии и сертификации по переписке (протокол № 16 от 2 марта 2004 года)
|
Национальный
|
ГОСТ Р 34.10-2012
|
1 января 2013 года
|
ГОСТ Р 34.11-2012
|
Утверждён и введен в действие приказом Федерального агентства по техническому регулированию и метрологии № 215-ст от 7 августа 2012 года в качестве национального стандарта Российской Федерации с 1 января 2013 года
|
Межгосударственный
|
ГОСТ 34.10-2018
|
1 июня 2019 года
|
ГОСТ 34.11-2018
|
Принят Межгосударственным советом по метрологии, стандартизации и сертификации (протокол № 54 от 29 ноября 2018 года). Приказом Федерального агентства по техническому регулированию и метрологии № 1059-ст от 4 декабря 2018 г. введен в действие в качестве национального стандарта Российской Федерации с 1 июня 2019 года
|
Стандарты используют одинаковую схему формирования электронной цифровой подписи. Новые стандарты с 2012 года отличаются наличием дополнительного варианта параметров схем, соответствующего длине секретного ключа порядка 512 бит.
После подписывания сообщения М к нему дописывается цифровая подпись размером 512 или 1024 бит, и текстовое поле. В текстовом поле могут содержаться, например, дата и время отправки или различные данные об отправителе:
Данный алгоритм не описывает механизм генерации параметров, необходимых для формирования подписи, а только определяет, каким образом на основании таких параметров получить цифровую подпись. Механизм генерации параметров определяется на месте в зависимости от разрабатываемой системы.
Алгоритм
Приводится описание варианта схемы ЭЦП с длиной секретного ключа 256 бит. Для секретных ключей длиной 512 бит (второй вариант формирования ЭЦП, описанный в стандарте) все преобразования аналогичны.
Параметры схемы цифровой подписи
- простое число
— модуль эллиптической кривой такой, что ![{\displaystyle p>2^{255}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed4f2be1c899a0706f1dea2a95bed2dac97e165b)
- эллиптическая кривая
задаётся своим инвариантом
или коэффициентами
, где
— конечное поле из p элементов.
связан с коэффициентами
и
следующим образом
, причём
.
- целое число
— порядок группы точек эллиптической кривой,
должно быть отлично от ![{\displaystyle p}](https://wikimedia.org/api/rest_v1/media/math/render/svg/81eac1e205430d1f40810df36a0edffdc367af36)
- простое число
, порядок некоторой циклической подгруппы группы точек эллиптической кривой, то есть выполняется
, для некоторого
. Также
лежит в пределах
.
- точка
эллиптической кривой
, являющаяся генератором подгруппы порядка
, то есть
и
для всех k = 1, 2, …, q-1, где
— нейтральный элемент группы точек эллиптической кривой E.
— хеш-функция (ГОСТ Р 34.11-2012), которая отображает сообщения M в двоичные векторы длины 256 бит.
Каждый пользователь цифровой подписи имеет личные ключи:
- ключ шифрования
— целое число, лежащее в пределах
.
- ключ расшифрования
, вычисляемый как
.
Дополнительные требования:
,
, где ![{\displaystyle B\geq 31}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fa55ede2cc73c27d79302aeab896716d715879e1)
и ![{\displaystyle J(E)\neq 1728}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4a5c87d4cc3b762896d1b56f251c791a57005f28)
Двоичные векторы
Между двоичными векторами длины 256
и целыми числами
ставится взаимно-однозначное соответствие по следующему правилу
. Здесь
либо равно 0, либо равно 1. Другими словами,
— это представление числа z в двоичной системе счисления.
Результатом операции конкатенации двух векторов
и
называется вектор длины 512
. Обратная операция — операция разбиения одного вектора длины 512 на два вектора длины 256.
Формирование цифровой подписи
Блок-схемы:
- Вычисление хеш-функции от сообщения М:
![{\displaystyle {\bar {h}}=h(M)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/38ff6f09fdb7694a3d7f8f7610c93b252d16363b)
- Вычисление
, и если
, положить
. Где
— целое число, соответствующее ![{\displaystyle {\bar {h}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ae5f5151fc1d597933be4ea4653c87aa6cccf48)
- Генерация случайного числа
такого, что ![{\displaystyle 0<k<q.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/01b355901758643800557c74006b07cc663b9569)
- Вычисление точки эллиптической кривой
, и по ней нахождение
где
— это координата
точки
Если
, возвращаемся к предыдущему шагу.
- Нахождение
. Если
, возвращаемся к шагу 3.
- Формирование цифровой подписи
, где
и
— векторы, соответствующие
и
.
Проверка цифровой подписи
- Вычисление по цифровой подписи
чисел
и
, учитывая, что
, где
и
— числа, соответствующие векторам
и
. Если хотя бы одно из неравенств
и
неверно, то подпись неправильная.
- Вычисление хеш-функции от сообщения М:
![{\displaystyle {\bar {h}}=h(M).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/98bcbab099de256d560c8218712a4b949f434abb)
- Вычисление
, и если
, положить
. Где
— целое число соответствующее ![{\displaystyle {\bar {h}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ae5f5151fc1d597933be4ea4653c87aa6cccf48)
- Вычисление
![{\displaystyle \nu =e^{-1}\,{\bmod {\,}}q.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4cdbd0ffcd3e0c3a5a0d097f1e8264af1d4d5102)
- Вычисление
и ![{\displaystyle z_{2}=-r\nu \,{\bmod {\,}}q.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/93caca0b04e19dd5b39ec785e425c254273817a5)
- Вычисление точки эллиптической кривой
. И определение
, где
— координата
точки ![{\displaystyle C.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/067be67e68f60c53ce83241748d0d6249675c58d)
- В случае равенства
подпись правильная, иначе — неправильная.
Криптостойкость
Криптостойкость цифровой подписи опирается на две компоненты — на стойкость хеш-функции и на стойкость самого алгоритма шифрования.[2]
Вероятность взлома хеш-функции по ГОСТ 34.11-94 составляет
при подборе коллизии на фиксированное сообщение и
при подборе любой коллизии.[2] Стойкость алгоритма шифрования основывается на проблеме дискретного логарифмирования в группе точек эллиптической кривой. На данный момент нет метода решения данной проблемы хотя бы с субэкспоненциальной сложностью.[3]
Один из самых быстрых алгоритмов, на данный момент, при правильном выборе параметров —
-метод и
-метод Полларда.[4]
Для оптимизированного
-метода Полларда вычислительная сложность оценивается как
. Таким образом для обеспечения криптостойкости
операций необходимо использовать 256-разрядное
.[2]
Отличия от ГОСТ Р 34.10-94 (стандарт 1994—2001 гг)
Новый и старый ГОСТы цифровой подписи очень похожи друг на друга. Основное отличие — в старом стандарте часть операций проводится над полем
, а в новом — над группой точек эллиптической кривой, поэтому требования, налагаемые на простое число
в старом стандарте (
или
), более жёсткие, чем в новом.
Алгоритм формирования подписи отличается только в пункте 4. В старом стандарте в этом пункте вычисляются
и
и, если
, возвращаемся к пункту 3. Где
и
.
Алгоритм проверки подписи отличается только в пункте 6. В старом стандарте в этом пункте вычисляется
, где
— открытый ключ для проверки подписи,
. Если
, подпись правильная, иначе неправильная. Здесь
— простое число,
и
является делителем
.
Использование математического аппарата группы точек эллиптической кривой позволяет существенно сократить порядок модуля
без потери криптостойкости.[2]
Также старый стандарт описывает механизмы получения чисел
,
и
.
Возможные применения
Примечания
- ↑ О принятии и введении в действие государственного стандарта. Постановление Госстандарта РФ от 12.09.2001 N 380-ст (рус.). bestpravo.ru. Дата обращения: 1 сентября 2019. Архивировано из оригинала 1 сентября 2019 года.
- ↑ 1 2 3 4 Игоничкина Е. В. Анализ алгоритмов электронной цифровой подписи (неопр.). Дата обращения: 16 ноября 2008. Архивировано 15 января 2012 года.
- ↑ Семёнов Г. Цифровая подпись. Эллиптические кривые (неопр.). «Открытые системы» № 7-8/2002 (8 августа 2002). Дата обращения: 16 ноября 2008. Архивировано 31 декабря 2012 года.
- ↑ Бондаренко М. Ф., Горбенко И. Д., Качко Е. Г., Свинарев А. В., Григоренко Т. А. Сущность и результаты исследований свойств перспективных стандартов цифровой подписи X9.62-1998 и распределения ключей X9.63-199X на эллиптических кривых (неопр.). Дата обращения: 16 ноября 2008. Архивировано 22 февраля 2012 года.
- ↑ RFC 4357, глава 5.2, «VKO GOST R 34.10-2001» — Additional Cryptographic Algorithms for Use with GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms
- ↑ RFC 4491 — Using the GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms with the Internet X.509 Public Key Infrastructure
- ↑ RFC 4490 — Using the GOST 28147-89, GOST R 34.11-94, GOST R 34.10-94, and GOST R 34.10-2001 Algorithms with Cryptographic Message Syntax (CMS)
- ↑
Leontiev, S., Ed. and G. Chudov, Ed. GOST 28147-89 Cipher Suites for Transport Layer Security (TLS) (англ.) (декабрь 2008). — Internet-Drafts, work in progress. Дата обращения: 12 июня 2009. Архивировано 24 августа 2011 года.
- ↑
S. Leontiev, P. Smirnov, A. Chelpanov. Using GOST 28147-89, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms for XML Security (англ.) (декабрь 2008). — Internet-Drafts, work in progress. Дата обращения: 12 июня 2009. Архивировано 24 августа 2011 года.
- ↑
V. Dolmatov, Ed. Use of GOST signature algorithms in DNSKEY and RRSIG Resource Records for DNSSEC (англ.) (апрель 2009). — Internet-Drafts, work in progress. Дата обращения: 12 июня 2009. Архивировано 22 февраля 2012 года.
Ссылки
- Текст стандарта ГОСТ Р 34.10-94 «Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма»
- Текст стандарта ГОСТ Р 34.10-2001 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
- Текст стандарта ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
- Текст стандарта ГОСТ 34.10-2018 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
- Программные реализации
- Аппаратные реализации
![Перейти к шаблону «Криптосистемы с открытым ключом»](//upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Wikipedia_interwiki_section_gear_icon.svg/14px-Wikipedia_interwiki_section_gear_icon.svg.png) |
---|
Алгоритмы | |
---|
Теория | |
---|
Стандарты | |
---|
Темы | |
---|