ГОСТ 34.10-2018

Материал из testwiki
Перейти к навигации Перейти к поиску

ГОСТ 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 года.

Область применения

Цифровая подпись позволяет:

  1. Аутентифицировать лицо, подписавшее сообщение;
  2. Контролировать целостность сообщения;
  3. Защищать сообщение от подделок;

История

Первые версии алгоритма разрабатывались Главным управлением безопасности связи ФАПСИ при участии Всероссийского научно-исследовательского института стандартизации (ВНИИстандарт), позже разработка перешла в руки Центра защиты информации и специальной связи ФСБ России и АО «ИнфоТеКС».

Описание

Криптографическая стойкость первых стандартов цифровой подписи ГОСТ Р 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 бит (второй вариант формирования ЭЦП, описанный в стандарте) все преобразования аналогичны.

Параметры схемы цифровой подписи

J(E)=17284a34a3+27b2(modp), причём 4a3+27b2≢0(modp).
  • целое число m — порядок группы точек эллиптической кривой, m должно быть отлично от p
  • простое число q, порядок некоторой циклической подгруппы группы точек эллиптической кривой, то есть выполняется m=nq, для некоторого n. Также q лежит в пределах 2254<q<2256.
  • точка P=(xP,yP) эллиптической кривой E, являющаяся генератором подгруппы порядка q, то есть qP=𝟎 и kP𝟎 для всех k = 1, 2, …, q-1, где 𝟎 — нейтральный элемент группы точек эллиптической кривой E.
  • h(M) — хеш-функция (ГОСТ Р 34.11-2012), которая отображает сообщения M в двоичные векторы длины 256 бит.

Каждый пользователь цифровой подписи имеет личные ключи:

  • ключ шифрования d — целое число, лежащее в пределах 0<d<q.
  • ключ расшифрования Q=(xQ,yQ), вычисляемый как Q=dP.

Дополнительные требования:

  • pt1(modq), t=1..B, где B31
  • J(E)0 и J(E)1728

Двоичные векторы

Между двоичными векторами длины 256 h¯=(α255,...,α0) и целыми числами z2256 ставится взаимно-однозначное соответствие по следующему правилу z=i=0255αi2i. Здесь αi либо равно 0, либо равно 1. Другими словами, h¯ — это представление числа z в двоичной системе счисления.

Результатом операции конкатенации двух векторов h1¯=(α255,...,α0) и h2¯=(β255,...,β0) называется вектор длины 512 (h1¯|h2¯)=(α255,...,α0,β255,...,β0). Обратная операция — операция разбиения одного вектора длины 512 на два вектора длины 256.

Формирование цифровой подписи

Блок-схемы:

  1. Вычисление хеш-функции от сообщения М: h¯=h(M)
  2. Вычисление e=zmodq, и если e=0, положить e=1. Где z — целое число, соответствующее h¯.
  3. Генерация случайного числа k такого, что 0<k<q.
  4. Шаблон:AnchorВычисление точки эллиптической кривой C=kP, и по ней нахождение r=xcmodq, где xc — это координата x точки C. Если r=0, возвращаемся к предыдущему шагу.
  5. Нахождение s=(rd+ke)modq. Если s=0, возвращаемся к шагу 3.
  6. Формирование цифровой подписи ξ=(r¯|s¯), где r¯ и s¯ — векторы, соответствующие r и s.

Проверка цифровой подписи

  1. Вычисление по цифровой подписи ξ чисел r и s, учитывая, что ξ=(r¯|s¯), где r и s — числа, соответствующие векторам r¯ и s¯. Если хотя бы одно из неравенств r<q и s<q неверно, то подпись неправильная.
  2. Вычисление хеш-функции от сообщения М: h¯=h(M).
  3. Вычисление e=zmodq, и если e=0, положить e=1. Где z — целое число соответствующее h¯.
  4. Вычисление ν=e1modq.
  5. Вычисление z1=sνmodq и z2=rνmodq.
  6. Шаблон:AnchorВычисление точки эллиптической кривой C=z1P+z2Q. И определение R=xcmodq, где xc — координата x точки C.
  7. В случае равенства R=r подпись правильная, иначе — неправильная.

Криптостойкость

Криптостойкость цифровой подписи опирается на две компоненты — на стойкость хеш-функции и на стойкость самого алгоритма шифрования.[2]

Вероятность взлома хеш-функции по ГОСТ 34.11-94 составляет 1,73×1077 при подборе коллизии на фиксированное сообщение и 2,94×1039 при подборе любой коллизии.[2] Стойкость алгоритма шифрования основывается на проблеме дискретного логарифмирования в группе точек эллиптической кривой. На данный момент нет метода решения данной проблемы хотя бы с субэкспоненциальной сложностью.[3]

Один из самых быстрых алгоритмов, на данный момент, при правильном выборе параметров — ρ-метод и I-метод Полларда.[4]

Для оптимизированного ρ-метода Полларда вычислительная сложность оценивается как O(q). Таким образом для обеспечения криптостойкости 1030 операций необходимо использовать 256-разрядное q.[2]

Отличия от ГОСТ Р 34.10-94 (стандарт 1994—2001 гг)Шаблон:Anchor

Новый и старый ГОСТы цифровой подписи очень похожи друг на друга. Основное отличие — в старом стандарте часть операций проводится над полем p, а в новом — над группой точек эллиптической кривой, поэтому требования, налагаемые на простое число p в старом стандарте (2509<p<2512 или 21020<p<21024), более жёсткие, чем в новом.

Алгоритм формирования подписи отличается только в пункте 4. В старом стандарте в этом пункте вычисляются r~=akmodp и r=r~modq и, если r=0, возвращаемся к пункту 3. Где 1<a<p1 и aqmodp=1.

Алгоритм проверки подписи отличается только в пункте 6. В старом стандарте в этом пункте вычисляется R=(az1yz2modp)modq, где y — открытый ключ для проверки подписи, y=admodp. Если R=r, подпись правильная, иначе неправильная. Здесь q — простое число, 2254<q<2256 и q является делителем p1.

Использование математического аппарата группы точек эллиптической кривой позволяет существенно сократить порядок модуля p без потери криптостойкости.[2]

Также старый стандарт описывает механизмы получения чисел p, q и a.

Возможные применения

Примечания

Шаблон:Примечания

Ссылки

Программные реализации

Аппаратные реализации

Шаблон:Криптографические алгоритмы с парой открытый/закрытый ключ

  1. Шаблон:Cite web
  2. 2,0 2,1 2,2 2,3 Шаблон:Cite web
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. 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
  6. 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
  7. 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)
  8. Шаблон:Cite web
  9. Шаблон:Cite web
  10. Шаблон:Cite web