Open-source aspects of GOST Cryptography
 help / color / mirror / Atom feed
* [oss-gost-crypto] Модули Linux с криптографией ГОСТ
@ 2018-10-03 10:48 Dmitry Eremin-Solenikov
  2018-10-03 14:34 ` Vitaly Chikunov
  2018-10-23 10:54 ` Dmitry Eremin-Solenikov
  0 siblings, 2 replies; 9+ messages in thread
From: Dmitry Eremin-Solenikov @ 2018-10-03 10:48 UTC (permalink / raw)
  To: oss-gost-crypto, Wartan Hachaturow

Коллеги!

Раз уж пошел разговор про ядерные модули, сконвертировал код для
поддержки Linux Crypto API: https://github.com/GostCrypt/linux-crypto

Коментарии и pull-request'ы приветствуются.

Есть (с покрытием тестами):
 - ГОСТ 28147-89 с поддержкой стандартных S-Box (TC26Z, CryptoPro-A, B, C, D)
- ГОСТ Р 34.12-2015 (Магма и Кузнечик)
- ГОСТ Р 34.11-1994 (S-Box CryptoPro)
- ГОСТ Р 34.11-2012 (Стрибог, подтянут репозиторий Виталия)
- ECB
- HMAC

Код есть в ядре, но пока не тестировал:
- CBC
- CTR
- CMAC

Нет:
- KeyMeshing
- CFB, CNT, IMIT
- CTR-ACPKM

-- 
With best wishes
Dmitry

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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-03 10:48 [oss-gost-crypto] Модули Linux с криптографией ГОСТ Dmitry Eremin-Solenikov
@ 2018-10-03 14:34 ` Vitaly Chikunov
  2018-10-08  9:09   ` Vitaly Chikunov
  2018-10-12  8:54   ` [oss-gost-crypto] Модули Linux с криптографией ГОСТ Vitaly Chikunov
  2018-10-23 10:54 ` Dmitry Eremin-Solenikov
  1 sibling, 2 replies; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-03 14:34 UTC (permalink / raw)
  To: oss-gost-crypto

Hi,

On Wed, Oct 03, 2018 at 01:48:01PM +0300, Dmitry Eremin-Solenikov wrote:
> Коллеги!
> 
> Раз уж пошел разговор про ядерные модули, сконвертировал код для
> поддержки Linux Crypto API: https://github.com/GostCrypt/linux-crypto

К слову, моё ядро для сходных же целей
  https://github.com/vt-alt/linux бранч tfm-streebog

ps. Herbert Xu молчит, наверное, это значит его согласие принять патчи.

> Коментарии и pull-request'ы приветствуются.
> 
> Есть (с покрытием тестами):
>  - ГОСТ 28147-89 с поддержкой стандартных S-Box (TC26Z, CryptoPro-A, B, C, D)
> - ГОСТ Р 34.12-2015 (Магма и Кузнечик)
> - ГОСТ Р 34.11-1994 (S-Box CryptoPro)
> - ГОСТ Р 34.11-2012 (Стрибог, подтянут репозиторий Виталия)
> - ECB
> - HMAC
> 
> Код есть в ядре, но пока не тестировал:
> - CBC
> - CTR
> - CMAC
> 
> Нет:
> - KeyMeshing
> - CFB, CNT, IMIT
> - CTR-ACPKM
> 
> -- 
> With best wishes
> Dmitry
> _______________________________________________
> oss-gost-crypto mailing list
> oss-gost-crypto@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/oss-gost-crypto


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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-03 14:34 ` Vitaly Chikunov
@ 2018-10-08  9:09   ` Vitaly Chikunov
    2018-10-12  8:54   ` [oss-gost-crypto] Модули Linux с криптографией ГОСТ Vitaly Chikunov
  1 sibling, 1 reply; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-08  9:09 UTC (permalink / raw)
  To: oss-gost-crypto; +Cc: Anton V. Boyarshinov

FYI

On Wed, Oct 03, 2018 at 05:34:23PM +0300, Vitaly Chikunov wrote:
> On Wed, Oct 03, 2018 at 01:48:01PM +0300, Dmitry Eremin-Solenikov wrote:
> > 
> > Раз уж пошел разговор про ядерные модули, сконвертировал код для
> > поддержки Linux Crypto API: https://github.com/GostCrypt/linux-crypto
> 
> К слову, моё ядро для сходных же целей
>   https://github.com/vt-alt/linux бранч tfm-streebog

Я еще больше адаптировал Streebog для апстрима:

  https://github.com/vt-alt/linux бранч streebog

1. Пофиксил жалобы checkpatch.pl, какие можно.

2. Полностью убрал ifdef __LITTLE_ENDIAN'ы и дублирование массивов с
константами -- даже с этими изменениями исходники самые большие в crypto/,
а были в два раза больше. Заменил где надо на le64_to_cpu/cpu_to_le64.
Это noop на x86, а на других архитектурах импакт зависит от наличия swab64.
(Однако, на big endian архитектурах не тестировал.)

3. Выкинул не используемый массив A[].

4. Переделал add512 на более простой код.

5. Переделал XLPS макрос на более быстрый (по тестам) код. (Пробовал
разные варианты переделки.) Bulk speed по тестам tcrypt увеличилась (на
E5630 под qemu+kvm) с 59 Mb/s до 70 Mb/s. К слову сказать, у
sha256-generic скорость 120 Mb/s, а у китайского sm3 85Mb/s.

Для желающих поэкспериментировать тесты можно запустить так:

   insmod tcrypt.ko mode=400 alg=sb256 sec=1

6. Перенес тесты из тела модуля в testmgr. (Раньше исходники можно было
легко собирать как in- так и out-of-tree, сейчас out-of-tree будет не
так удобно сделать не потеряв тесты.) streebog.h перенес в
include/crypto/.




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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ [PATCH]
  @ 2018-10-09  0:46       ` Vitaly Chikunov
  0 siblings, 0 replies; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-09  0:46 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Mon, Oct 08, 2018 at 09:19:11PM +0300, Dmitry Belyavsky wrote:
>    Привет!
>    Виталий, у меня в тестах на Стрибог был тест на корректную работу
>    add512.
>    [1]https://github.com/gost-engine/engine/tree/master/etalon файл carry.
>    В реализации исходно была ошибка, и на этом файле она вылезала.

Я протестил с этим вектором, но не добавлял его в патч. Если кому надо,
то патч прилагаю.

>    По XLPS - доступны ли в ядре gcc-шные intrinsics?

Что-то есть, но я использую макросы, которые определены в ядре
зависимости оттого что и как есть на конкретных архитектурах.

Например, include/uapi/linux/swab.h:

  #ifdef __HAVE_BUILTIN_BSWAP64__
  #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
  #else
  #define __swab64(x)                             \
	  (__builtin_constant_p((__u64)(x)) ?     \
	  ___constant_swab64(x) :                 \
	  __fswab64(x))
  #endif

где __fswab64 использует __arch_swab64, который может быть определен на
разных архитектурах, если нет то используется generic версия (она может
использовать __arch_swab32, если он есть, если нет то ещё более generic.).

---
ps. PATCH s carry векторами из gost-engine:

>From 4cf05497958599ab21f02a9ebb20c7c5d8183a18 Mon Sep 17 00:00:00 2001
From: Vitaly Chikunov <vt@altlinux.org>
Date: Tue, 9 Oct 2018 03:28:44 +0300
Subject: [PATCH 1/1] crypt: streebog - carry test vectors to tests

---
 crypto/testmgr.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 9f9b7d6e4072..42eff1d2d3d2 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -2340,6 +2340,31 @@ static const struct hash_testvec sb256_tv_template[] = {
 			"\xc0\xca\xc6\x28\xfc\x66\x9a\x74"
 			"\x1d\x50\x06\x3c\x55\x7e\x8f\x50",
 	},
+	{
+		.plaintext =
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\x16\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x16",
+		.psize = 128,
+		.digest =
+			"\x81\xbb\x63\x2f\xa3\x1f\xcc\x38"
+			"\xb4\xc3\x79\xa6\x62\xdb\xc5\x8b"
+			"\x9b\xed\x83\xf5\x0d\x3a\x1b\x2c"
+			"\xe7\x27\x1a\xb0\x2d\x25\xba\xbb"
+	},
 };
 
 static const struct hash_testvec sb512_tv_template[] = {
@@ -2378,6 +2403,35 @@ static const struct hash_testvec sb512_tv_template[] = {
 			"\x3f\x0c\xb9\xdd\xdc\x2b\x64\x60"
 			"\x14\x3b\x03\xda\xba\xc9\xfb\x28",
 	},
+	{ /* carry */
+		.plaintext =
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
+			"\x16\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x11"
+			"\x11\x11\x11\x11\x11\x11\x11\x16",
+		.psize = 128,
+		.digest =
+			"\x8b\x06\xf4\x1e\x59\x90\x7d\x96"
+			"\x36\xe8\x92\xca\xf5\x94\x2f\xcd"
+			"\xfb\x71\xfa\x31\x16\x9a\x5e\x70"
+			"\xf0\xed\xb8\x73\x66\x4d\xf4\x1c"
+			"\x2c\xce\x6e\x06\xdc\x67\x55\xd1"
+			"\x5a\x61\xcd\xeb\x92\xbd\x60\x7c"
+			"\xc4\xaa\xca\x67\x32\xbf\x35\x68"
+			"\xa2\x3a\x21\x0d\xd5\x20\xfd\x41"
+	},
 };
 
 /* Example vectors below taken from
-- 
2.11.0



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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-03 14:34 ` Vitaly Chikunov
  2018-10-08  9:09   ` Vitaly Chikunov
@ 2018-10-12  8:54   ` Vitaly Chikunov
  2018-10-12  9:16     ` Dmitry Eremin-Solenikov
  1 sibling, 1 reply; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-12  8:54 UTC (permalink / raw)
  To: oss-gost-crypto

On Wed, Oct 03, 2018 at 05:34:23PM +0300, Vitaly Chikunov wrote:
> ps. Herbert Xu молчит, наверное, это значит его согласие принять патчи.

Он ответил:

  https://lkml.org/lkml/2018/10/12/261
  `- https://lkml.org/lkml/2018/10/12/267

К слову сказать, про SM3 таких вопросов не было.




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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-12  8:54   ` [oss-gost-crypto] Модули Linux с криптографией ГОСТ Vitaly Chikunov
@ 2018-10-12  9:16     ` Dmitry Eremin-Solenikov
  2018-10-12 11:28       ` Vitaly Chikunov
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Eremin-Solenikov @ 2018-10-12  9:16 UTC (permalink / raw)
  To: oss-gost-crypto

пт, 12 окт. 2018 г. в 11:54, Vitaly Chikunov <vt@altlinux.org>:
>
> On Wed, Oct 03, 2018 at 05:34:23PM +0300, Vitaly Chikunov wrote:
> > ps. Herbert Xu молчит, наверное, это значит его согласие принять патчи.
>
> Он ответил:
>
>   https://lkml.org/lkml/2018/10/12/261
>   `- https://lkml.org/lkml/2018/10/12/267

Я бы ответил, что предполагается его использовать в EVM/IMA (использование
в режиме хэширования, без подписи). Затем в EVM/IMA использование вместе
с подписью. Для проверки цифровых подписей под модулями/ядром, сделанных
на отечественных ключах. И т.д.

BTW: добавь, пожалуйста, тестовые векторы для hmac(sb256) и hmac(sb512) из
Р 50.1.113-2016.

-- 
With best wishes
Dmitry

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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-12  9:16     ` Dmitry Eremin-Solenikov
@ 2018-10-12 11:28       ` Vitaly Chikunov
  2018-10-17  9:35         ` Vitaly Chikunov
  0 siblings, 1 reply; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-12 11:28 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

On Fri, Oct 12, 2018 at 12:16:32PM +0300, Dmitry Eremin-Solenikov wrote:
> пт, 12 окт. 2018 г. в 11:54, Vitaly Chikunov <vt@altlinux.org>:
> >
> > On Wed, Oct 03, 2018 at 05:34:23PM +0300, Vitaly Chikunov wrote:
> > > ps. Herbert Xu молчит, наверное, это значит его согласие принять патчи.
> >
> > Он ответил:
> >
> >   https://lkml.org/lkml/2018/10/12/261
> >   `- https://lkml.org/lkml/2018/10/12/267
> 
> Я бы ответил, что предполагается его использовать в EVM/IMA (использование
> в режиме хэширования, без подписи). Затем в EVM/IMA использование вместе
> с подписью. Для проверки цифровых подписей под модулями/ядром, сделанных
> на отечественных ключах. И т.д.
> 
> BTW: добавь, пожалуйста, тестовые векторы для hmac(sb256) и hmac(sb512) из
> Р 50.1.113-2016.

Действительно, IMA же поддерживает такой режим.


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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-12 11:28       ` Vitaly Chikunov
@ 2018-10-17  9:35         ` Vitaly Chikunov
  0 siblings, 0 replies; 9+ messages in thread
From: Vitaly Chikunov @ 2018-10-17  9:35 UTC (permalink / raw)
  To: Open-source aspects of GOST Cryptography

Hi,

JFYI, новости от Герберта.

Он проигнорировал мои вопросы как лучше сделать всякие мелочи. Но
написал это про упоминание Integrity subsystem:

On Wed, Oct 17, 2018 at 02:08:51PM +0800, Herbert Xu wrote:
> It would be better if these patches are posted together.  That
> way we don't end up with a situation where the algorithm goes into
> the kernel but the ultimate user is rejected.


On Fri, Oct 12, 2018 at 02:28:34PM +0300, Vitaly Chikunov wrote:
> On Fri, Oct 12, 2018 at 12:16:32PM +0300, Dmitry Eremin-Solenikov wrote:
> > пт, 12 окт. 2018 г. в 11:54, Vitaly Chikunov <vt@altlinux.org>:
> > >
> > > On Wed, Oct 03, 2018 at 05:34:23PM +0300, Vitaly Chikunov wrote:
> > > > ps. Herbert Xu молчит, наверное, это значит его согласие принять патчи.
> > >
> > > Он ответил:
> > >
> > >   https://lkml.org/lkml/2018/10/12/261
> > >   `- https://lkml.org/lkml/2018/10/12/267
> > 
> > Я бы ответил, что предполагается его использовать в EVM/IMA (использование
> > в режиме хэширования, без подписи). Затем в EVM/IMA использование вместе
> > с подписью. Для проверки цифровых подписей под модулями/ядром, сделанных
> > на отечественных ключах. И т.д.
> > 
> > BTW: добавь, пожалуйста, тестовые векторы для hmac(sb256) и hmac(sb512) из
> > Р 50.1.113-2016.
> 
> Действительно, IMA же поддерживает такой режим.
> _______________________________________________
> oss-gost-crypto mailing list
> oss-gost-crypto@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/oss-gost-crypto


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

* Re: [oss-gost-crypto] Модули Linux с криптографией ГОСТ
  2018-10-03 10:48 [oss-gost-crypto] Модули Linux с криптографией ГОСТ Dmitry Eremin-Solenikov
  2018-10-03 14:34 ` Vitaly Chikunov
@ 2018-10-23 10:54 ` Dmitry Eremin-Solenikov
  1 sibling, 0 replies; 9+ messages in thread
From: Dmitry Eremin-Solenikov @ 2018-10-23 10:54 UTC (permalink / raw)
  To: oss-gost-crypto, Wartan Hachaturow

Коллеги!

Допилил ядреные модули.

Есть (с покрытием тестами):
 - ГОСТ 28147-89 с поддержкой стандартных S-Box (TC26Z, CryptoPro-A, B, C, D)
- ГОСТ Р 34.12-2015 (Магма и Кузнечик)
- ГОСТ Р 34.11-1994 (S-Box CryptoPro)
- ГОСТ Р 34.11-2012 (Стрибог, подтянут репозиторий Виталия)
- ECB, CFB, CNT
- KeyMeshing
- HMAC
- CMAC
- IMIT

Код есть в ядре, но пока нет тестов:
- CBC
- CTR

Нет:
- CTR-ACPKM

https://github.com/GostCrypt/linux-crypto

Коментарии и pull-request'ы приветствуются.

-- 
With best wishes
Dmitry

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

end of thread, other threads:[~2018-10-23 10:54 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-03 10:48 [oss-gost-crypto] Модули Linux с криптографией ГОСТ Dmitry Eremin-Solenikov
2018-10-03 14:34 ` Vitaly Chikunov
2018-10-08  9:09   ` Vitaly Chikunov
2018-10-09  0:46       ` [oss-gost-crypto] Модули Linux с криптографией ГОСТ [PATCH] Vitaly Chikunov
2018-10-12  8:54   ` [oss-gost-crypto] Модули Linux с криптографией ГОСТ Vitaly Chikunov
2018-10-12  9:16     ` Dmitry Eremin-Solenikov
2018-10-12 11:28       ` Vitaly Chikunov
2018-10-17  9:35         ` Vitaly Chikunov
2018-10-23 10:54 ` Dmitry Eremin-Solenikov

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