* [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