public inbox for gost@lists.cypherpunks.ru
Atom feed
* Вопрос по созданию подписи для банка
@ 2020-09-03 13:21 Dmitrii Zolotov
  2020-09-03 17:50 ` Sergey Matveev
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitrii Zolotov @ 2020-09-03 13:21 UTC (permalink / raw)
  To: gost

Простите, что вас беспокою, но возникла какая-то непонятная ситуация с 
созданием подписи в pygost (алгоритм gost3410, режим 2012). Пытаемся 
взаимодействовать с банком Тинькофф, но созданная подпись не принимается 
(ключ извлечён из Криптопро pfx через инструменты от ЛиссиСофт). 
Дайджест по ГОСТ 34.11-2012 создаётся успешно, но размер подписи ГОСТ 
34.10-2012 (256) получается 128 байт, в то время как банк ожидает 
подпись 64 байта. Подскажите, пожалуйста, в какую сторону думать, уже 
испытал все варианты создания подписи, ничего не получается :(

Фрагмент кода:

     curve = CURVES["id-tc26-gost-3410-2012-256-paramSetA"]
     data_for_signing = val.encode("utf-8")

     dgst = gost34112012256.new(data_for_signing).digest()
     dgstb64 = base64.b64encode(dgst)
     private = prv_unmarshal(base64.b64decode(pkey))
     sg = sign(curve, private, dgst, mode=2012)
     print(len(sg))
     signature = base64.b64encode(sg)

Заранее спасибо!

---

Дмитрий Золотов



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Вопрос по созданию подписи для банка
  2020-09-03 13:21 Вопрос по созданию подписи для банка Dmitrii Zolotov
@ 2020-09-03 17:50 ` Sergey Matveev
  2020-09-04 20:13   ` PyGOST 5.0, GoGOST 5.0.0 (Re: Вопрос по созданию подписи для банка) Sergey Matveev
  0 siblings, 1 reply; 3+ messages in thread
From: Sergey Matveev @ 2020-09-03 17:50 UTC (permalink / raw)
  To: gost

[-- Attachment #1: Type: text/plain, Size: 1665 bytes --]

Приветствую!

*** Dmitrii Zolotov [2020-09-03 16:21]:
>Простите, что вас беспокою, но возникла какая-то непонятная ситуация с
>созданием подписи в pygost (алгоритм gost3410, режим 2012).

Чисто исторически так сложилось, что режим 2001/2012 в PyGOST (и GoGOST)
обозначает длину ключей с которыми идёт работа. mode=2001 должен
использоваться при работе с 256-бит ключами, а mode=2012 для 512-бит.
Это сбивает с толку людей уже не в первый раз и я в следующем релизе
переименую этот сбивающий с толку "режим".

>    dgst = gost34112012256.new(data_for_signing).digest()
>    dgstb64 = base64.b64encode(dgst)
>    private = prv_unmarshal(base64.b64decode(pkey))
>    sg = sign(curve, private, dgst, mode=2012)

Лично я не знаком с тем что нужно банкам, но просто напоминаю что
возможно хэш или подпись придётся "перевернуть". Форматы сериализации
хэшей и ключей у ГОСТ алгоритмов не регламентированы и в разных
контекстах применения (X.509, CMS, etc) могут отличаться:
http://www.pygost.cypherpunks.ru/FAQ.html

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* PyGOST 5.0, GoGOST 5.0.0 (Re: Вопрос по созданию подписи для банка)
  2020-09-03 17:50 ` Sergey Matveev
@ 2020-09-04 20:13   ` Sergey Matveev
  0 siblings, 0 replies; 3+ messages in thread
From: Sergey Matveev @ 2020-09-04 20:13 UTC (permalink / raw)
  To: gost

[-- Attachment #1: Type: text/plain, Size: 1938 bytes --]

Приветствую!

*** Sergey Matveev [2020-09-03 20:50]:
>*** Dmitrii Zolotov [2020-09-03 16:21]:
>>Простите, что вас беспокою, но возникла какая-то непонятная ситуация с
>>созданием подписи в pygost (алгоритм gost3410, режим 2012).
>
>Чисто исторически так сложилось, что режим 2001/2012 в PyGOST (и GoGOST)
>обозначает длину ключей с которыми идёт работа. mode=2001 должен
>использоваться при работе с 256-бит ключами, а mode=2012 для 512-бит.
>Это сбивает с толку людей уже не в первый раз и я в следующем релизе
>переименую этот сбивающий с толку "режим".

Я зарелизил как PyGOST:

    http://www.pygost.cypherpunks.ru/pygost-5.0.tar.xz (78 KiB)
    http://www.pygost.cypherpunks.ru/pygost-5.0.tar.xz.sig
    Streebog-256 hash: ec813d16f6c7de42ccce61dfbc1a9cfd6523588e414e6e0aa9768371d405fd78
    SHA256 hash: D5321979 12558C5A 543CCD67 EAA34674 604457BB BF16EB0A 740C8487 C7574C87

так и GoGOST:

    http://www.gogost.cypherpunks.ru/gogost-5.0.0.tar.xz (62 KiB)
    http://www.gogost.cypherpunks.ru/gogost-5.0.0.tar.xz.sig
    Streebog-256 hash: 2a0fc616372fe905e8677e1e82d8bd82f852e6393c03cbfb34f69f855bcbfc85
    SHA256 hash: 222CB86E 559E9CCF E80FFFB1 B3A7908B A978FE84 9E12B7F9 DA571512 6A24BCA7

В обеих библиотеках полностью удалил это понятие "режима 2001/2012" и
размеры ключей/точек определяются размерами параметров эллиптических
кривых.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-09-04 20:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-03 13:21 Вопрос по созданию подписи для банка Dmitrii Zolotov
2020-09-03 17:50 ` Sergey Matveev
2020-09-04 20:13   ` PyGOST 5.0, GoGOST 5.0.0 (Re: Вопрос по созданию подписи для банка) Sergey Matveev