Open-source aspects of GOST Cryptography
 help / color / mirror / Atom feed
* [oss-gost-crypto] ГОСТ в OpenPGP
@ 2019-08-13 11:28 Paul Wolneykien
  2019-08-13 13:22 ` Dmitry Eremin-Solenikov
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Paul Wolneykien @ 2019-08-13 11:28 UTC (permalink / raw)
  To: oss-gost-crypto


  Всем привет. Вернувшись к работе над GnuPG я понял, что то, о чём мне
несколько раз говорил Дима — что здесь нужен RFC, — действительно правда.

  Согласно https://tools.ietf.org/html/rfc6637 , к каждому открытому
ключу, для которого разрешено шифрование, прикладываются параметры KDF —
key derivation function, т.е., в конечном счёте — рецепт: как для
данного публичного ключа зашифровать симметричный ключ. Но для ГОСТ
рецепт требуется свой, специфический. К тому же, есть уже несколько
таких рецептов.

  Если следовать логике RFC 6637, то для открытого ключа ГОСТ нужно
определить целых три группы параметров:

  * параметры ВКО (длина UKM, хэш-функция [+ её параметры]);
  * собственно KDF (диверсификация КриптоПро / KDF_TREE (количество
итераций, сообщение-метка));
  * параметры шифрования (wrapping) симметричного ключа (вариант
упаковки + шифр + вариант имитовставки).

  Если так сделать, то получится, конечно, очень и очень гибкий вариант.
Но в этом как бы и заключается его отрицательная сторона: можно будет
такой рецепт составить, который ослабит защиту (?) или будет противоречив.

  Другой очевидный подход — вместо кучи параметров определить в самом
стандарте готовые варианты (как это сделано у Смышляева в TLS —
https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-05), и
потом указывать для публичного ключа просто номер варианта. Примерно так
сделано сейчас в OpenSSL, где длина UKM неявным образом определяет выбор
между "старым" вариантом и вариантом "2018 года" (я прав, Дима?).

  Ситуация, однако, осложняется ещё тем, что в OpenPGP выбор алгоритма
симметричного шифрования архитектурно отделён от параметров KDF:
приоритет симметричных шифров определяется глобально, на стороне
_отправителя_, в то время как предпочтительные параметры KDF определяет
_получатель_ сообщения (поскольку он передаёт их отправителю вместе со
своим публичным ключём).
  И вот тут я вообще пока не представляю как быть: теоретически,
наверное, ГОСТовым KEK-ом можно зашифровать произвольный симметричный
ключ — хоть AES, хоть Blowfish и, конечно, хоть ГОСТ 28147 или
"Кузнечик". Но с другой стороны, в том же Смышляевском TLS чётко
определены случаи, какой вариант KDF с каким шифром использовать.

  В итоге я пока не вижу простого и очевидного решения, которое хорошо
вписалось бы в OpenPGP и не противоречило имеющимся RFC про ГОСТ.


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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  2019-08-13 11:28 [oss-gost-crypto] ГОСТ в OpenPGP Paul Wolneykien
@ 2019-08-13 13:22 ` Dmitry Eremin-Solenikov
    2019-08-14  9:27 ` Paul Wolneykien
  2 siblings, 0 replies; 7+ messages in thread
From: Dmitry Eremin-Solenikov @ 2019-08-13 13:22 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

вт, 13 авг. 2019 г. в 14:28, Paul Wolneykien <manowar@altlinux.org>:

>
>
>   Всем привет. Вернувшись к работе над GnuPG я понял, что то, о чём мне
> несколько раз говорил Дима — что здесь нужен RFC, — действительно правда.

Я бы начал с более простой и понятной его части. Давай опишем симметричные
функции: Кузнечик (Магму?), Стрибог. С Кузнечиком/Магмой отдельный вопрос,
удастся ли объяснить, зачем мы хотим использовать KDF_TREE.
Отдельно можно описать цифровые подписи. И отдельной главой пойдет
шифрование.

>   Согласно https://tools.ietf.org/html/rfc6637 , к каждому открытому
> ключу, для которого разрешено шифрование, прикладываются параметры KDF —
> key derivation function, т.е., в конечном счёте — рецепт: как для
> данного публичного ключа зашифровать симметричный ключ. Но для ГОСТ
> рецепт требуется свой, специфический. К тому же, есть уже несколько
> таких рецептов.
>
>   Если следовать логике RFC 6637, то для открытого ключа ГОСТ нужно
> определить целых три группы параметров:
>
>   * параметры ВКО (длина UKM, хэш-функция [+ её параметры]);
>   * собственно KDF (диверсификация КриптоПро / KDF_TREE (количество
> итераций, сообщение-метка));
>   * параметры шифрования (wrapping) симметричного ключа (вариант
> упаковки + шифр + вариант имитовставки).

Я бы предложил не изобретать велосипед, а использовать VKO и Kexp15,
как в новых сьютах TLS вместо KDF из RFC 6637.

> потом указывать для публичного ключа просто номер варианта. Примерно так
> сделано сейчас в OpenSSL, где длина UKM неявным образом определяет выбор
> между "старым" вариантом и вариантом "2018 года" (я прав, Дима?).

Гм, я за Диму не скажу, но выбор между старым и новым вариантом должен
определяться шифронабором (если мы про TLS говорим).

>   В итоге я пока не вижу простого и очевидного решения, которое хорошо
> вписалось бы в OpenPGP и не противоречило имеющимся RFC про ГОСТ.

Собственно, это одна из причин, почему я отложил OpenPGP в свое время.

--
With best wishes
Dmitry

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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  @ 2019-08-13 13:47   ` Paul Wolneykien
    0 siblings, 1 reply; 7+ messages in thread
From: Paul Wolneykien @ 2019-08-13 13:47 UTC (permalink / raw)
  To: oss-gost-crypto

13.08.2019 14:58, Dmitry Belyavsky пишет:
>       Другой очевидный подход — вместо кучи параметров определить в самом
>     стандарте готовые варианты (как это сделано у Смышляева в TLS —
>     https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-05), и
>     потом указывать для публичного ключа просто номер варианта. Примерно так
>     сделано сейчас в OpenSSL, где длина UKM неявным образом определяет выбор
>     между "старым" вариантом и вариантом "2018 года" (я прав, Дима?).
> 
> 
> Оно по факту так, но вообще этот выбор однозначно следует из выбранного
> шифронабора.

  Следует, но по-факту так. :-) И, слушай, а как обстоит дело с выбором
VKO/KDF и прочего в S/MIME (CMS)? Там же, насколько я помню, шифронабор,
как единое целое не указывается, а указывается а) OID алгоритма
публичного ключа (+ параметры), б) OID алгоритма симметричного шифра (+
параметры) и в) UKM (соответственно, длина его тоже известна). И из
этого всего выводится догадка о том, как делать VKO/KDF/Wrapping.
Или я не прав?


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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  @ 2019-08-13 14:08       ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 7+ messages in thread
From: Dmitry Eremin-Solenikov @ 2019-08-13 14:08 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

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

вт, 13 авг. 2019 г. в 16:52, Dmitry Belyavsky <beldmit@gmail.com>:
>
> Привет!
>
> On Tue, Aug 13, 2019 at 4:47 PM Paul Wolneykien <manowar@altlinux.org> wrote:
>>
>> 13.08.2019 14:58, Dmitry Belyavsky пишет:
>> >       Другой очевидный подход — вместо кучи параметров определить в самом
>> >     стандарте готовые варианты (как это сделано у Смышляева в TLS —
>> >     https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-05), и
>> >     потом указывать для публичного ключа просто номер варианта. Примерно так
>> >     сделано сейчас в OpenSSL, где длина UKM неявным образом определяет выбор
>> >     между "старым" вариантом и вариантом "2018 года" (я прав, Дима?).
>> >
>> >
>> > Оно по факту так, но вообще этот выбор однозначно следует из выбранного
>> > шифронабора.
>>
>>   Следует, но по-факту так. :-) И, слушай, а как обстоит дело с выбором
>> VKO/KDF и прочего в S/MIME (CMS)? Там же, насколько я помню, шифронабор,
>> как единое целое не указывается, а указывается а) OID алгоритма
>> публичного ключа (+ параметры), б) OID алгоритма симметричного шифра (+
>> параметры) и в) UKM (соответственно, длина его тоже известна). И из
>> этого всего выводится догадка о том, как делать VKO/KDF/Wrapping.
>> Или я не прав?
>
>
> Старый код там примерно такой же, как в TLS. UKM, Диффи-Хеллман, упаковка.
> Шифр по ГОСТ, если кто воткнул не ГОСТ - сам дурак (типа MUST).
>
> Новый не смотрел.

В новом Kexp15 (см 8.3.1/8.3.2/8.4.1/8.4.2)



-- 
With best wishes
Dmitry

[-- Attachment #2: CMS (первая редакция)_v1.pdf --]
[-- Type: application/pdf, Size: 698468 bytes --]

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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  2019-08-13 11:28 [oss-gost-crypto] ГОСТ в OpenPGP Paul Wolneykien
  2019-08-13 13:22 ` Dmitry Eremin-Solenikov
  @ 2019-08-14  9:27 ` Paul Wolneykien
    2 siblings, 1 reply; 7+ messages in thread
From: Paul Wolneykien @ 2019-08-14  9:27 UTC (permalink / raw)
  To: oss-gost-crypto

13.08.2019 14:28, Paul Wolneykien пишет:
> Ситуация, однако, осложняется ещё тем, что в OpenPGP выбор алгоритма
> симметричного шифрования архитектурно отделён от параметров KDF:
> приоритет симметричных шифров определяется глобально, на стороне
> _отправителя_, в то время как предпочтительные параметры KDF определяет
> _получатель_ сообщения (поскольку он передаёт их отправителю вместе со
> своим публичным ключём).

  Вот тут я наврал, конечно. И то, и другое определяет получатель,
вернее — набор получателей сообщения, поскольку в OpenPGP можно
шифровать для нескольких пользователей одновременно. В этом случае
симметричный шифр выбирается методом пересечения подмножеств алгоритмов
шифрования каждого получателя.
  Применительно к ГОСТ тут может возникнуть ситуация, что ключ от
старого ГОСТ 28147 будет передан одному из получателей по новому рецепту
(типа KDF_TREE или VKO_512). Но это, наверное, ничего страшного?


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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  @ 2019-08-14 11:23     ` Paul Wolneykien
    0 siblings, 1 reply; 7+ messages in thread
From: Paul Wolneykien @ 2019-08-14 11:23 UTC (permalink / raw)
  To: oss-gost-crypto

14.08.2019 14:11, Dmitry Belyavsky пишет:
> Привет!
> 
> On Wed, Aug 14, 2019 at 12:27 PM Paul Wolneykien <manowar@altlinux.org
> <mailto:manowar@altlinux.org>> wrote:
> 
>     13.08.2019 14:28, Paul Wolneykien пишет:
>     > Ситуация, однако, осложняется ещё тем, что в OpenPGP выбор алгоритма
>     > симметричного шифрования архитектурно отделён от параметров KDF:
>     > приоритет симметричных шифров определяется глобально, на стороне
>     > _отправителя_, в то время как предпочтительные параметры KDF
>     определяет
>     > _получатель_ сообщения (поскольку он передаёт их отправителю вместе со
>     > своим публичным ключём).
> 
>       Вот тут я наврал, конечно. И то, и другое определяет получатель,
>     вернее — набор получателей сообщения, поскольку в OpenPGP можно
>     шифровать для нескольких пользователей одновременно. В этом случае
>     симметричный шифр выбирается методом пересечения подмножеств алгоритмов
>     шифрования каждого получателя.
>       Применительно к ГОСТ тут может возникнуть ситуация, что ключ от
>     старого ГОСТ 28147 будет передан одному из получателей по новому рецепту
>     (типа KDF_TREE или VKO_512). Но это, наверное, ничего страшного?
> 
> 
> Отправитель в CMS (не знаю, как в PGP) шифрует сообщение на общем ключе
> для всех, и общий ключ - для каждого.

  Тогда вопрос: общий ключ одинаковым способом для каждого или не
одинаковым? В OpenPGP можно не одинаковым, а для каждого получателя
предпочтительным ему способом.

> А получатель или смог эту цепочку проделать в обратном порядке, или не смог.


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

* Re: [oss-gost-crypto] ГОСТ в OpenPGP
  @ 2019-08-14 11:30         ` Paul Wolneykien
  0 siblings, 0 replies; 7+ messages in thread
From: Paul Wolneykien @ 2019-08-14 11:30 UTC (permalink / raw)
  To: oss-gost-crypto

14.08.2019 14:25, Dmitry Belyavsky пишет:
>     > Отправитель в CMS (не знаю, как в PGP) шифрует сообщение на общем
>     ключе
>     > для всех, и общий ключ - для каждого.
> 
>       Тогда вопрос: общий ключ одинаковым способом для каждого или не
>     одинаковым? В OpenPGP можно не одинаковым, а для каждого получателя
>     предпочтительным ему способом.
> 
> Не одинаковым скорее всего.

  А чем тогда определяется выбор для каждого получателя?


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

end of thread, other threads:[~2019-08-14 11:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-13 11:28 [oss-gost-crypto] ГОСТ в OpenPGP Paul Wolneykien
2019-08-13 13:22 ` Dmitry Eremin-Solenikov
2019-08-13 13:47   ` Paul Wolneykien
2019-08-13 14:08       ` Dmitry Eremin-Solenikov
2019-08-14  9:27 ` Paul Wolneykien
2019-08-14 11:23     ` Paul Wolneykien
2019-08-14 11:30         ` Paul Wolneykien

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