* [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
[parent not found: <CADqLbzJgJvQn8uyFo2cYiTawJx4U8P9_0h8BvjtWiQND9QAgjQ@mail.gmail.com>]
* 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