Interested Article - ГОСТ 34.10-2018

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

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

  • простое число p {\displaystyle p} — модуль эллиптической кривой такой, что p > 2 255 {\displaystyle p>2^{255}}
  • эллиптическая кривая E {\displaystyle E} задаётся своим инвариантом J ( E ) {\displaystyle J(E)} или коэффициентами a , b F p {\displaystyle a,b\in F_{p}} , где F p {\displaystyle F_{p}} конечное поле из p элементов. J ( E ) {\displaystyle J(E)} связан с коэффициентами a {\displaystyle a} и b {\displaystyle b} следующим образом
J ( E ) = 1728 4 a 3 4 a 3 + 27 b 2 ( mod p ) {\displaystyle J(E)=1728{\frac {4a^{3}}{4a^{3}+27b^{2}}}{\pmod {p}}} , причём 4 a 3 + 27 b 2 0 ( mod p ) {\displaystyle 4a^{3}+27b^{2}\not \equiv 0{\pmod {p}}} .
  • целое число m {\displaystyle m} порядок группы точек эллиптической кривой, m {\displaystyle m} должно быть отлично от p {\displaystyle p}
  • простое число q {\displaystyle q} , порядок некоторой циклической подгруппы группы точек эллиптической кривой, то есть выполняется m = n q {\displaystyle m=nq} , для некоторого n N {\displaystyle n\in \mathbb {N} } . Также q {\displaystyle q} лежит в пределах 2 254 < q < 2 256 {\displaystyle 2^{254}<q<2^{256}} .
  • точка P = ( x P , y P ) {\displaystyle P=(x_{P},\;y_{P})} эллиптической кривой E {\displaystyle E} , являющаяся генератором подгруппы порядка q {\displaystyle q} , то есть q P = 0 {\displaystyle q\cdot P=\mathbf {0} } и k P 0 {\displaystyle k\cdot P\neq \mathbf {0} } для всех k = 1, 2, …, q -1, где 0 {\displaystyle \mathbf {0} } нейтральный элемент группы точек эллиптической кривой E .
  • h ( M ) {\displaystyle h(M)} хеш-функция ( ГОСТ Р 34.11-2012 ), которая отображает сообщения M в двоичные векторы длины 256 бит.

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

  • ключ шифрования d {\displaystyle d} — целое число, лежащее в пределах 0 < d < q {\displaystyle 0<d<q} .
  • ключ расшифрования Q = ( x Q , y Q ) {\displaystyle Q=(x_{Q},\;y_{Q})} , вычисляемый как Q = d P {\displaystyle Q=d\cdot P} .

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

  • p t 1 ( mod q ) {\displaystyle p^{t}\neq 1{\pmod {q}}} , t = 1.. B {\displaystyle \forall t=1..B} , где B 31 {\displaystyle B\geq 31}
  • J ( E ) 0 {\displaystyle J(E)\neq 0} и J ( E ) 1728 {\displaystyle J(E)\neq 1728}

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

Между двоичными векторами длины 256 h ¯ = ( α 255 , . . . , α 0 ) {\displaystyle {\bar {h}}=(\alpha _{255},...,\alpha _{0})} и целыми числами z 2 256 {\displaystyle z\leq 2^{256}} ставится взаимно-однозначное соответствие по следующему правилу z = i = 0 255 α i 2 i {\displaystyle z=\sum _{i=0}^{255}\alpha _{i}2^{i}} . Здесь α i {\displaystyle \alpha _{i}} либо равно 0, либо равно 1. Другими словами, h ¯ {\displaystyle {\bar {h}}} — это представление числа z в двоичной системе счисления.

Результатом операции конкатенации двух векторов h 1 ¯ = ( α 255 , . . . , α 0 ) {\displaystyle {\bar {h_{1}}}=(\alpha _{255},...,\alpha _{0})} и h 2 ¯ = ( β 255 , . . . , β 0 ) {\displaystyle {\bar {h_{2}}}=(\beta _{255},...,\beta _{0})} называется вектор длины 512 ( h 1 ¯ | h 2 ¯ ) = ( α 255 , . . . , α 0 , β 255 , . . . , β 0 ) {\displaystyle ({\bar {h_{1}}}|{\bar {h_{2}}})=(\alpha _{255},...,\alpha _{0},\beta _{255},...,\beta _{0})} . Обратная операция — операция разбиения одного вектора длины 512 на два вектора длины 256.

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

Блок-схемы :

  • Формирование цифровой подписи
    Формирование цифровой подписи
  • Проверка цифровой подписи
    Проверка цифровой подписи
  1. Вычисление хеш-функции от сообщения М: h ¯ = h ( M ) {\displaystyle {\bar {h}}=h(M)}
  2. Вычисление e = z mod q {\displaystyle e=z\,{\bmod {\,}}q} , и если e = 0 {\displaystyle e=0} , положить e = 1 {\displaystyle e=1} . Где z {\displaystyle z} — целое число, соответствующее h ¯ . {\displaystyle {\bar {h}}.}
  3. Генерация случайного числа k {\displaystyle k} такого, что 0 < k < q . {\displaystyle 0<k<q.}
  4. Вычисление точки эллиптической кривой C = k P {\displaystyle C=kP} , и по ней нахождение r = x c mod q , {\displaystyle r=x_{c}\,{\bmod {\,}}q,} где x c {\displaystyle x_{c}} — это координата x {\displaystyle x} точки C . {\displaystyle C.} Если r = 0 {\displaystyle r=0} , возвращаемся к предыдущему шагу.
  5. Нахождение s = ( r d + k e ) mod q {\displaystyle s=(rd+ke)\,{\bmod {\,}}q} . Если s = 0 {\displaystyle s=0} , возвращаемся к шагу 3.
  6. Формирование цифровой подписи ξ = ( r ¯ | s ¯ ) {\displaystyle \xi =({\bar {r}}|{\bar {s}})} , где r ¯ {\displaystyle {\bar {r}}} и s ¯ {\displaystyle {\bar {s}}} — векторы, соответствующие r {\displaystyle r} и s {\displaystyle s} .

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

  1. Вычисление по цифровой подписи ξ {\displaystyle \xi } чисел r {\displaystyle r} и s {\displaystyle s} , учитывая, что ξ = ( r ¯ | s ¯ ) {\displaystyle \xi =({\bar {r}}|{\bar {s}})} , где r {\displaystyle r} и s {\displaystyle s} — числа, соответствующие векторам r ¯ {\displaystyle {\bar {r}}} и s ¯ {\displaystyle {\bar {s}}} . Если хотя бы одно из неравенств r < q {\displaystyle r<q} и s < q {\displaystyle s<q} неверно, то подпись неправильная.
  2. Вычисление хеш-функции от сообщения М: h ¯ = h ( M ) . {\displaystyle {\bar {h}}=h(M).}
  3. Вычисление e = z mod q {\displaystyle e=z\,{\bmod {\,}}q} , и если e = 0 {\displaystyle e=0} , положить e = 1 {\displaystyle e=1} . Где z {\displaystyle z} — целое число соответствующее h ¯ . {\displaystyle {\bar {h}}.}
  4. Вычисление ν = e 1 mod q . {\displaystyle \nu =e^{-1}\,{\bmod {\,}}q.}
  5. Вычисление z 1 = s ν mod q {\displaystyle z_{1}=s\nu \,{\bmod {\,}}q} и z 2 = r ν mod q . {\displaystyle z_{2}=-r\nu \,{\bmod {\,}}q.}
  6. Вычисление точки эллиптической кривой C = z 1 P + z 2 Q {\displaystyle C=z_{1}P+z_{2}Q} . И определение R = x c mod q {\displaystyle R=x_{c}\,{\bmod {\,}}q} , где x c {\displaystyle x_{c}} — координата x {\displaystyle x} точки C . {\displaystyle C.}
  7. В случае равенства R = r {\displaystyle R=r} подпись правильная, иначе — неправильная.

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

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

Вероятность взлома хеш-функции по ГОСТ 34.11-94 составляет 1 , 73 × 10 77 {\displaystyle 1{,}73\times {10}^{-77}} при подборе коллизии на фиксированное сообщение и 2 , 94 × 10 39 {\displaystyle 2{,}94\times {10}^{-39}} при подборе любой коллизии. Стойкость алгоритма шифрования основывается на проблеме дискретного логарифмирования в группе точек эллиптической кривой. На данный момент нет метода решения данной проблемы хотя бы с субэкспоненциальной сложностью.

Один из самых быстрых алгоритмов, на данный момент, при правильном выборе параметров — ρ {\displaystyle \rho } -метод и I {\displaystyle \mathrm {I} } -метод Полларда.

Для оптимизированного ρ {\displaystyle \rho } -метода Полларда вычислительная сложность оценивается как O ( q ) {\displaystyle O({\sqrt {q}})} . Таким образом для обеспечения криптостойкости 10 30 {\displaystyle {10}^{30}} операций необходимо использовать 256-разрядное q {\displaystyle q} .

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

Новый и старый ГОСТы цифровой подписи очень похожи друг на друга. Основное отличие — в старом стандарте часть операций проводится над полем Z p {\displaystyle \mathbb {Z} _{p}} , а в новом — над группой точек эллиптической кривой, поэтому требования, налагаемые на простое число p {\displaystyle p} в старом стандарте ( 2 509 < p < 2 512 {\displaystyle 2^{509}<p<2^{512}} или 2 1020 < p < 2 1024 {\displaystyle 2^{1020}<p<2^{1024}} ), более жёсткие, чем в новом.

Алгоритм формирования подписи отличается только в . В старом стандарте в этом пункте вычисляются r ~ = a k mod p {\displaystyle {\tilde {r}}=a^{k}\,{\bmod {\,}}p} и r = r ~ mod q {\displaystyle r={\tilde {r}}\,{\bmod {\,}}q} и, если r = 0 {\displaystyle r=0} , возвращаемся к пункту 3. Где 1 < a < p 1 {\displaystyle 1<a<p-1} и a q mod p = 1 {\displaystyle a^{q}{\bmod {\,}}p=1} .

Алгоритм проверки подписи отличается только в . В старом стандарте в этом пункте вычисляется R = ( a z 1 y z 2 mod p ) mod q {\displaystyle R=(a^{z_{1}}y^{z_{2}}\,{\bmod {\,}}p)\,{\bmod {\,}}q} , где y {\displaystyle y} — открытый ключ для проверки подписи, y = a d mod p {\displaystyle y=a^{d}\,{\bmod {\,}}p} . Если R = r {\displaystyle R=r} , подпись правильная, иначе неправильная. Здесь q {\displaystyle q} — простое число, 2 254 < q < 2 256 {\displaystyle 2^{254}<q<2^{256}} и q {\displaystyle q} является делителем p 1 {\displaystyle p-1} .

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

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

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

Примечания

  1. (рус.) . bestpravo.ru. Дата обращения: 1 сентября 2019. Архивировано из 1 сентября 2019 года.
  2. Игоничкина Е. В. (неопр.) . Дата обращения: 16 ноября 2008. 15 января 2012 года.
  3. Семёнов Г. (неопр.) . « Открытые системы » № 7-8/2002 (8 августа 2002). Дата обращения: 16 ноября 2008. 31 декабря 2012 года.
  4. Бондаренко М. Ф., Горбенко И. Д., Качко Е. Г., Свинарев А. В., Григоренко Т. А. (неопр.) . Дата обращения: 16 ноября 2008. 22 февраля 2012 года.
  5. , глава 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. — 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. — 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. Leontiev, S., Ed. and G. Chudov, Ed. (англ.) (декабрь 2008). — Internet-Drafts, work in progress . Дата обращения: 12 июня 2009. 24 августа 2011 года.
  9. S. Leontiev, P. Smirnov, A. Chelpanov. (англ.) (декабрь 2008). — Internet-Drafts, work in progress . Дата обращения: 12 июня 2009. 24 августа 2011 года.
  10. V. Dolmatov, Ed. (англ.) (апрель 2009). — Internet-Drafts, work in progress . Дата обращения: 12 июня 2009. 22 февраля 2012 года.

Ссылки

  • Текст стандарта «Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма»
  • Текст стандарта «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
  • Текст стандарта «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
  • Текст стандарта «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»
Программные реализации
  • (неопр.) . — криптографический проект компании ООО «Криптоком» по добавлению российских криптографических алгоритмов в библиотеку OpenSSL .
  • на сайте GitHub
  • КриптоПро CSP — криптографический проект компании «Крипто-Про».
  • (неопр.) . — криптографический проект компании ЗАО «Сигнал-КОМ» .
  • (неопр.) . — кроссплатформенная криптографическая библиотека компании ООО «ЛИССИ» .
  • (неопр.) . — программные комплексы, средства криптографической защиты информации компании ОАО «ИнфоТеКС» .
  • на сайте GitHub
  • Bouncy Castle
Аппаратные реализации

Same as ГОСТ 34.10-2018