ГОСТ 34.10-2018
Войти  |  Регистрация
Авторизация
» » ГОСТ 34.10-2018

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

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

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

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

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

    Описание

    Все стандарты семейства 34.10 основаны на эллиптических кривых. Стойкость этих алгоритмов основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а также на стойкости соответствующей хеш-функции.


    Стандарты используют одинаковую схему формирования электронной цифровой подписи. Новые стандарты с 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,bin 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} ot 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 nin 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 qcdot P=mathbf {0} } и k ⋅ P ≠ 0 {displaystyle kcdot P eq 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=dcdot P} .

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

    • p t ≠ 1 ( mod q ) {displaystyle p^{t} eq 1{pmod {q}}} , ∀ t = 1.. B {displaystyle forall t=1..B} , где B ≥ 31 {displaystyle Bgeq 31}
    • J ( E ) ≠ 0 {displaystyle J(E) eq 0} и J ( E ) ≠ 1728 {displaystyle J(E) eq 1728}

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

    Между двоичными векторами длины 256 h ¯ = ( α 255 , . . . , α 0 ) {displaystyle {ar {h}}=(alpha _{255},...,alpha _{0})} и целыми числами z ≤ 2 256 {displaystyle zleq 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 {ar {h}}} — это представление числа z в двоичной системе счисления.

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

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

    Блок-схемы:

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

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

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

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

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

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

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

    Для оптимизированного ρ {displaystyle ho } -метода Полларда вычислительная сложность оценивается как 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}} ), более жёсткие, чем в новом.

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

    Алгоритм проверки подписи отличается только в пункте 6. В старом стандарте в этом пункте вычисляется R = ( a z 1 y z 2 mod p ) mod q {displaystyle R=(a^{z_{1}}y^{z_{2}},{mod {,}}p),{mod {,}}q} , где y {displaystyle y} — открытый ключ для проверки подписи, y = a d mod p {displaystyle y=a^{d},{mod {,}}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} .

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

    • Использование пары ключей (открытый, закрытый) для установления ключа сессии.
    • Использование в сертификатах открытых ключей.
    • Использование в S/MIME (PKCS #7, Cryptographic Message Syntax).
    • Использование для защиты соединений в TLS (SSL, HTTPS, WEB).
    • Использование для защиты сообщений в XML Signature (XML Encryption).
    • Защита целостности Интернет-адресов и имён (DNSSEC).

    Добавлено Admin 10-01-2021, 11:00 Просмотров: 36
    Добавить комментарий
    Ваше Имя:
    Ваш E-Mail:
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent