Open-source aspects of GOST Cryptography
 help / color / mirror / Atom feed
* [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
@ 2019-05-02 12:41 Vitaly Chikunov
  2019-05-04 21:33 ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2019-05-02 12:41 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

Hi,

Пишут, что реализация Streebog в libgcrypt с (давно исправленной в других
реализациях) ошибкой.

  https://habr.com/ru/post/450024/




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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-02 12:41 [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012" Vitaly Chikunov
@ 2019-05-04 21:33 ` Dmitry Eremin-Solenikov
    2019-05-25 19:53   ` [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012" Dmitry Eremin-Solenikov
  0 siblings, 2 replies; 10+ messages in thread
From: Dmitry Eremin-Solenikov @ 2019-05-04 21:33 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

Спасибо, сейчас отправлю патчи.

Паралеллельно отмечу: эта ошибка не ловится тестом eeee...eeee1611...1116.

Тестовый вектор на эту ошибку (рекомендую добавить в тестовые векторы):

$ echo -ne '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
| openssl  dgst -md_gost12_512
(stdin)= 90a161d12ad309498d3fe5d48202d8a4e9c406d6a264aeab258ac5ecc37a7962aaf9587a5abb09b6bb81ec4b3752a3ff5a838ef175be5772056bc5fe54fcfc7e

Реализации с ошибкой выдают:
(stdin)= c5e8ac156e3cd7f395fa9c8bf8fb3995dcfadc0ee539d56e5138804b488e17b846fc7bccf883b21914acfd0add48e55ac359a7564f39619cd6ad9d93a35bf9a9



чт, 2 мая 2019 г. в 15:41, Vitaly Chikunov <vt@altlinux.org>:
>
> Hi,
>
> Пишут, что реализация Streebog в libgcrypt с (давно исправленной в других
> реализациях) ошибкой.
>
>   https://habr.com/ru/post/450024/
>
>
> _______________________________________________
> oss-gost-crypto mailing list
> oss-gost-crypto@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/oss-gost-crypto



-- 
With best wishes
Dmitry

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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  @ 2019-05-04 21:57     ` Vitaly Chikunov
  2019-05-25 20:03       ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2019-05-04 21:57 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Sun, May 05, 2019 at 12:50:03AM +0300, Dmitry Belyavsky wrote:
> У меня там был какой-то тестовый вектор в gost-engine. Как назывался, ща не
> помню.

На нём разницы нет.

> On Sun, May 5, 2019 at 12:33 AM Dmitry Eremin-Solenikov <
> dbaryshkov@gmail.com> wrote:
> 
> > Спасибо, сейчас отправлю патчи.
> >
> > Паралеллельно отмечу: эта ошибка не ловится тестом eeee...eeee1611...1116.
> >
> > Тестовый вектор на эту ошибку (рекомендую добавить в тестовые векторы):
> >
> > $ echo -ne
> > '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
> > | openssl  dgst -md_gost12_512
> > (stdin)=
> > 90a161d12ad309498d3fe5d48202d8a4e9c406d6a264aeab258ac5ecc37a7962aaf9587a5abb09b6bb81ec4b3752a3ff5a838ef175be5772056bc5fe54fcfc7e
> >
> > Реализации с ошибкой выдают:
> > (stdin)=
> > c5e8ac156e3cd7f395fa9c8bf8fb3995dcfadc0ee539d56e5138804b488e17b846fc7bccf883b21914acfd0add48e55ac359a7564f39619cd6ad9d93a35bf9a9

К слову, достаточно 64-х "\xff".

  libgcrypt (master)$ perl -E 'print "\xff" x 64'| openssl dgst -md_gost12_256 -r; perl -E 'print "\xff" x 64' | ./tests/gchash stribog256 -
  964a5ab60286f106288743e2fe1a422d160898ca1bd535e831aa500cfe34d7e8 *stdin
  6cad1fb10486524958e90756a6e72ab717d89842634004a0958582d256209818  -



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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-04 21:33 ` Dmitry Eremin-Solenikov
  @ 2019-05-25 19:53   ` Dmitry Eremin-Solenikov
  2019-07-09 15:20     ` Vitaly Chikunov
  1 sibling, 1 reply; 10+ messages in thread
From: Dmitry Eremin-Solenikov @ 2019-05-25 19:53 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

Коллеги,

вс, 5 мая 2019 г. в 00:33, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>:
> Спасибо, сейчас отправлю патчи.

Вопрос от разработчиков gcrypt. Нужна ли кому-нибудь поддержка неправильного
варианта Streebog (как сделано для whirlpool:
https://dev.gnupg.org/rC94030e44aaff805d754e368507f16dd51a531b72) или нам это
не нужно и достаточно просто исправленной версии.

> чт, 2 мая 2019 г. в 15:41, Vitaly Chikunov <vt@altlinux.org>:
> > Пишут, что реализация Streebog в libgcrypt с (давно исправленной в других
> > реализациях) ошибкой.
> >
> >   https://habr.com/ru/post/450024/

-- 
With best wishes
Dmitry

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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-04 21:57     ` Vitaly Chikunov
@ 2019-05-25 20:03       ` Vitaly Chikunov
  2019-05-25 21:32         ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2019-05-25 20:03 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Sun, May 05, 2019 at 12:57:21AM +0300, Vitaly Chikunov wrote:
> 
> К слову, достаточно 64-х "\xff".
> 
>   libgcrypt (master)$ perl -E 'print "\xff" x 64'| openssl dgst -md_gost12_256 -r; perl -E 'print "\xff" x 64' | ./tests/gchash stribog256 -
>   964a5ab60286f106288743e2fe1a422d160898ca1bd535e831aa500cfe34d7e8 *stdin
>   6cad1fb10486524958e90756a6e72ab717d89842634004a0958582d256209818  -

Заодно тест на реализацию add512:

  ~/infotecs$ perl -E 'print "\xff" x 64' > ff
  ~/infotecs$ xxd ff
  00000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
  00000010: ffff ffff ffff ffff ffff ffff ffff ffff  ................
  00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
  00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................

  ~/infotecs$ ./vipnethashcalc-tool ff --hash-alg Gost12S256
  Вычисленное значение хэш-функции: 6CAD1FB10486524958E90756A6E72AB717D89842634004A0958582D256209818

Значение хэша у ViPNet Hash Calculation Tool 5.2.1.1027 соответствует
реализации с ошибкой.

ps. На всякий случай:

  ~/infotecs$ ./vipnethashcalc-tool ff --hash-alg Gost94
  Вычисленное значение хэш-функции: 8505D4623B76E757B63A4F9ADFF2413BAB457560A6A41A7D0056B909CDDD3D6C


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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-25 20:03       ` Vitaly Chikunov
@ 2019-05-25 21:32         ` Vitaly Chikunov
  2020-01-13  5:07           ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2019-05-25 21:32 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Sat, May 25, 2019 at 11:03:13PM +0300, Vitaly Chikunov wrote:
> On Sun, May 05, 2019 at 12:57:21AM +0300, Vitaly Chikunov wrote:
> > 
> > К слову, достаточно 64-х "\xff".
> > 
> >   libgcrypt (master)$ perl -E 'print "\xff" x 64'| openssl dgst -md_gost12_256 -r; perl -E 'print "\xff" x 64' | ./tests/gchash stribog256 -
> >   964a5ab60286f106288743e2fe1a422d160898ca1bd535e831aa500cfe34d7e8 *stdin
> >   6cad1fb10486524958e90756a6e72ab717d89842634004a0958582d256209818  -
> 
> Заодно тест на реализацию add512:
> 
>   ~/infotecs$ perl -E 'print "\xff" x 64' > ff
>   ~/infotecs$ xxd ff
>   00000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
>   00000010: ffff ffff ffff ffff ffff ffff ffff ffff  ................
>   00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
>   00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
> 
>   ~/infotecs$ ./vipnethashcalc-tool ff --hash-alg Gost12S256
>   Вычисленное значение хэш-функции: 6CAD1FB10486524958E90756A6E72AB717D89842634004A0958582D256209818
> 
> Значение хэша у ViPNet Hash Calculation Tool 5.2.1.1027 соответствует
> реализации с ошибкой.
> 
> ps. На всякий случай:
> 
>   ~/infotecs$ ./vipnethashcalc-tool ff --hash-alg Gost94
>   Вычисленное значение хэш-функции: 8505D4623B76E757B63A4F9ADFF2413BAB457560A6A41A7D0056B909CDDD3D6C

  ~/cryptopro/linux-amd64$ /opt/cprocsp/bin/amd64/cryptcp
  CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
  Утилита командной строки для подписи и шифрования файлов.
  ...
   -hashAlg      задать алгоритм хэширования
   OID           OID алгоритма хэширования: 1.2.643.2.2.9 для ГОСТ Р 34.11-94
		 1.2.643.7.1.1.2.2 для ГОСТ Р 34.11-2012 256 bit
		 1.2.643.7.1.1.2.3 для ГОСТ Р 34.11-2012 512 bit
  ...

  ~/cryptopro/linux-amd64$ perl -E 'print "\xff" x 64' > ff

  ~/cryptopro/linux-amd64$ /opt/cprocsp/bin/amd64/cryptcp -hash -hashAlg 1.2.643.7.1.1.2.2 ff
  CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
  Утилита командной строки для подписи и шифрования файлов.
  Папка './':
  ff... OK.
  [ErrorCode: 0x00000000]
  ~/cryptopro/linux-amd64$ xxd ff.hsh
  00000000: 964a 5ab6 0286 f106 2887 43e2 fe1a 422d  .JZ.....(.C...B-
  00000010: 1608 98ca 1bd5 35e8 31aa 500c fe34 d7e8  ......5.1.P..4..

Значение хэша соответствует реализации без ошибки.



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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-25 19:53   ` [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012" Dmitry Eremin-Solenikov
@ 2019-07-09 15:20     ` Vitaly Chikunov
  0 siblings, 0 replies; 10+ messages in thread
From: Vitaly Chikunov @ 2019-07-09 15:20 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

Hi,

On Sat, May 25, 2019 at 10:53:35PM +0300, Dmitry Eremin-Solenikov wrote:
> вс, 5 мая 2019 г. в 00:33, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>:
> 
> Вопрос от разработчиков gcrypt. Нужна ли кому-нибудь поддержка неправильного
> варианта Streebog (как сделано для whirlpool:
> https://dev.gnupg.org/rC94030e44aaff805d754e368507f16dd51a531b72) или нам это
> не нужно и достаточно просто исправленной версии.

Так как в ViPNet такой-же баг[1] и это сертифицированный продукт, то это
может иметь смысл.

 [1] https://lists.altlinux.org/pipermail/oss-gost-crypto/2019-May/000250.html



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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2019-05-25 21:32         ` Vitaly Chikunov
@ 2020-01-13  5:07           ` Vitaly Chikunov
  2020-01-13  5:55             ` Wartan Hachaturow
    0 siblings, 2 replies; 10+ messages in thread
From: Vitaly Chikunov @ 2020-01-13  5:07 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

(В копилку ошибочных реализаций.)

В одном российском линуксе, хэш для данных с длинной кратной 64
считаются иначе чем у всех остальных:

  $ perl -E 'print "\x00" x 0'  | gostsum --gost-2012
  106c0c2070522f9ed0753e143809578a3b27711c5bc99553c3eaca250de2a30a  -
  $ perl -E 'print "\x00" x 1'  | gostsum --gost-2012
  6f7305265dc0937440881f9493ef1260f61a9d47742d369e952d41bdb2a9edd1  -
  $ perl -E 'print "\x00" x 64' | gostsum --gost-2012
  f69e7c846ee36c5363251bd89bc4b4794aa598d5092d952415bde2d314d85eba  -
  $ perl -E 'print "\x00" x 65' | gostsum --gost-2012
  ff494da4e950940619b06db49c4c3dac03a3823e134c22ff0b732599c85b321f  -

Сравнение с adegtyarev/streebog:

  $ perl -E 'print "\x00" x 0'  | gost3411-2012 -2
  3f539a213e97c802cc229d474c6aa32a825a360b2a933a949fd925208d9ce1bb
  $ perl -E 'print "\x00" x 1'  | gost3411-2012 -2
  6f7305265dc0937440881f9493ef1260f61a9d47742d369e952d41bdb2a9edd1
  $ perl -E 'print "\x00" x 64' | gost3411-2012 -2
  df1fda9ce83191390537358031db2ecaa6aa54cd0eda241dc107105e13636b95
  $ perl -E 'print "\x00" x 65' | gost3411-2012 -2
  ff494da4e950940619b06db49c4c3dac03a3823e134c22ff0b732599c85b321f

Интересно что там могло пойти не так.



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

* Re: [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012"
  2020-01-13  5:07           ` Vitaly Chikunov
@ 2020-01-13  5:55             ` Wartan Hachaturow
    1 sibling, 0 replies; 10+ messages in thread
From: Wartan Hachaturow @ 2020-01-13  5:55 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography


On 2020-01-13T08:07:25+0300, Vitaly Chikunov wrote:

 > (В копилку ошибочных реализаций.)

 > В одном российском линуксе, хэш для данных с длинной кратной 64
 > считаются иначе чем у всех остальных:

В каком?

--
Regards, Wartan.

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

* [oss-gost-crypto] Streebog padding bug Ex:  "Об open-source реализациях
  @ 2020-01-13  8:22               ` Vitaly Chikunov
  0 siblings, 0 replies; 10+ messages in thread
From: Vitaly Chikunov @ 2020-01-13  8:22 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Mon, Jan 13, 2020 at 09:51:18AM +0300, Dmitry Belyavsky wrote:
> On Mon, Jan 13, 2020 at 8:07 AM Vitaly Chikunov <vt@altlinux.org> wrote:
> 
> > (В копилку ошибочных реализаций.)
> >
> > В одном российском линуксе, хэш для данных с длинной кратной 64
> > считаются иначе чем у всех остальных:
> >
> > ...
> 
> >
> > Интересно что там могло пойти не так.
> >
> 
> Ну как. Финализация включает в себя дополнение непрохешированного остатка
> до полного блока.
> Вот если остаток не оставить, а всё равно дополнить - будет именно это
> скорее всего.

1. По-моему мы так и делаем.

А вот они не делают заполнение _пустого блока_.

В ГОСТ (для полных блоков) они пропускают шаги 3.1, 3.2, 3.3, 3.4.
В примерах сказано "длина сообщения меньше 512, _поэтому_ происходит
заполнение неполного блока". А что же делать когда блок полный?

Кто прав?

Вот патч который дает результаты "как у них":

diff --git a/gost3411-2012-core.c b/gost3411-2012-core.c
index de582c6..55aad37 100644
--- a/gost3411-2012-core.c
+++ b/gost3411-2012-core.c
@@ -163,13 +163,15 @@ stage3(GOST34112012Context *CTX)
     buf.QWORD[0] = BSWAP64(CTX->bufsize << 3);
 #endif
 
-    pad(CTX);
+    if (CTX->bufsize) {
+	pad(CTX);
 
-    g(&(CTX->h), &(CTX->N), (const unsigned char *) &(CTX->buffer));
+	g(&(CTX->h), &(CTX->N), (const unsigned char *) &(CTX->buffer));
 
-    add512(&(CTX->N), &buf, &(CTX->N));
-    add512(&(CTX->Sigma), (const union uint512_u *) &CTX->buffer[0],
-           &(CTX->Sigma));
+	add512(&(CTX->N), &buf, &(CTX->N));
+	add512(&(CTX->Sigma), (const union uint512_u *) &CTX->buffer[0],
+	    &(CTX->Sigma));
+    }
 
     g(&(CTX->h), &buffer0, (const unsigned char *) &(CTX->N));
 

2. Кроме того, в нашем коде есть странность:

| static inline void
| pad(GOST34112012Context *CTX)
| {
|     if (CTX->bufsize > 63)
|         return;
|
|     memset(CTX->buffer + CTX->bufsize,
|         0x00, sizeof(CTX->buffer) - CTX->bufsize);
|
|     CTX->buffer[CTX->bufsize] = 0x01;
| }


`CTX->bufsize` никогда не может быть больше 63.




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

end of thread, other threads:[~2020-01-13  8:22 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-02 12:41 [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012" Vitaly Chikunov
2019-05-04 21:33 ` Dmitry Eremin-Solenikov
2019-05-04 21:57     ` Vitaly Chikunov
2019-05-25 20:03       ` Vitaly Chikunov
2019-05-25 21:32         ` Vitaly Chikunov
2020-01-13  5:07           ` Vitaly Chikunov
2020-01-13  5:55             ` Wartan Hachaturow
2020-01-13  8:22               ` [oss-gost-crypto] Streebog padding bug Ex: "Об open-source реализациях Vitaly Chikunov
2019-05-25 19:53   ` [oss-gost-crypto] "Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012" Dmitry Eremin-Solenikov
2019-07-09 15:20     ` Vitaly Chikunov

Open-source aspects of GOST Cryptography

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/oss-gost-crypto/0 oss-gost-crypto/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 oss-gost-crypto oss-gost-crypto/ http://lore.altlinux.org/oss-gost-crypto \
		oss-gost-crypto@lists.altlinux.org oss-gost-crypto@lists.altlinux.ru oss-gost-crypto@lists.altlinux.com
	public-inbox-index oss-gost-crypto

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.oss-gost-crypto


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git