From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: To: oss-gost-crypto@lists.altlinux.org References: <3325bd72-e866-e5c8-c98a-f722dbd23ce9@altlinux.org> From: Paul Wolneykien Organization: ALT Linux Team Message-ID: <18755075-3a1b-a3cf-1a7b-4c6f0ce2aa95@altlinux.org> Date: Fri, 13 Sep 2019 14:38:21 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: ru Content-Transfer-Encoding: 8bit Subject: Re: [oss-gost-crypto] =?utf-8?b?0KDQsNGB0YjQuNGE0YDQvtCy0LrQsCBTL01J?= =?utf-8?q?ME?= X-BeenThere: oss-gost-crypto@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: Open-source aspects of GOST Cryptography List-Id: Open-source aspects of GOST Cryptography List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Sep 2019 11:38:22 -0000 Archived-At: List-Archive: 13.09.2019 14:30, Dmitry Eremin-Solenikov пишет: > пт, 13 сент. 2019 г. в 13:30, Paul Wolneykien : >> >> 13.09.2019 13:13, Dmitry Eremin-Solenikov пишет: >>> пт, 13 сент. 2019 г. в 12:45, Paul Wolneykien : >>>> 13.09.2019 00:53, Dmitry Eremin-Solenikov пишет: >>>>> >>>>> Да, у меня не был дописан CryptoPro meshing для gost. Если нужен, давай обсудим >>>>> интерфейс и я его протолкну Вернеру. >>>> >>>> Может быть ты и gpgsm заодно протолкнёшь? :-) >>> >>> Если он будет нормально сделан, почему бы и нет. Я в свое время >>> засыпался на том, >>> что не удавалось нормально доделать libksba. На github.com/GostCrypt >>> должны и патчики >>> лежать для gpgsm с libksba. >> >> Наверное, я их уже использую. > > Посмотрел. gnupg/gpgsm я никогда не выкладывал, потому что от полностью > рабочего оно далеко было. Mea culpa. > >>>> Интерфейс, я думаю, такой же как для установки S-box: >>>> >>>> gcry_cipher_ctl (hd, GCRYCTL_SET_KEYMESHING, buf, len) >>> >>> Да, это логично. Но в этот момент все становится весело. >>> Потому что hd — это gost28147 + cfb. И мешинг должен идти в cfb. >> >> Я посмотрел сейчас в gost_cipher_do_cfb() из openssl-gost-engine. Там >> gost_crypt_mesh() — это обёртка над gostcrypt(), функцией шифрования >> буфера, которая делает meshing когда надо (а когда не надо — не делает). >> На первый взгляд кажется, что если добавить счётчик в GOST28147_context >> и накручивать его в gost_encrypt_block(), то наверх в >> _gcry_cipher_cfb_encrypt() можно ничего не выносить. > > Да, согласен. С CFB прокатывает. Это в CNT были неудобства, если > честно разносить > счетчик и encrypt. > >>> У меня альтернативное предложение: сделать GCRY_CIPHER_MODE_CFB_MESH. >>> Вопрос, уложится ли это у тебя в gpgsm? Должно уложиться, если поправить >>> oids_gost28147 в cipher/gost28147.c. >> >> Можно и так. Но что от этого изменится во взаимоотношении между >> cipher/cipher-cfb.c (общей частью Libgcrypt) и нашей частью >> cipher/gost28147.c ? Что нам здесь даёт отдельный >> GCRY_CIPHER_MODE_CFB_MESH ? Вероятно, он даёт отдельный >> gcry_cipher_spec_t со своими функциями encrypt и decrypt. Но, как я >> написал выше, кажется можно использовать обёртки над теми >> gost_encrypt_block() и gost_decrypt_block(), которые определены сейчас в >> спеке _gcry_cipher_spec_gost28147. > > Тогда проще не обертки, а вставить нужный код в них и действительно > gcry_cipher_ctl(). > >>> Отдельный вопрос: тебе IMIT и CNT нужны или нет? >> >> IMIT да. Я же CMAC считаю при передаче ключей. > > Хорошо. Приведу код в порядок и отправлю. CMAC считается нормально. Правда, я добавил возможность установки S-box для него. Не знаю, может и перестарался: http://git.altlinux.org/people/manowar/packages/?p=libgcrypt.git;a=commitdiff;h=179dafc3fb3e16da306bfc8eb0bd5845d076c7d7 http://git.altlinux.org/people/manowar/packages/?p=libgcrypt.git;a=commitdiff;h=f88c1f27dd02fefed60475dcda1cac6361c6fd8c >>>> допустим. В OpenSSL тоже через gost_cipher_ctl() сделано, с аналогичным >>>> интерфейсом. В качестве аргумента *buf тоже, наверное, какая-то >>>> константа, вроде ..._CRYPTOPRO_KEYMESHING. Не знаю только, куда её в >>>> Libgcrypt засунуть: в enum или в define и в какой раздел? >>> >>> Учитывая, что 28147 медленно, но верно должен начать уходить, я бы не особо >>> морочился на эту тему. Это бы имело смысл, если бы были еще keymeshing. >>> Но их пока нет. А ACPKM проще тоже отдельной модой вводить. >> >> Тут ещё вопрос, кстати, а нужен ли нам вообще GCRY_CIPHER_MODE_CFB без >> _MESH ? И для чего тогда OIDs править? В том, что прилетает в CMS, >> значится просто "1.2.643.2.2.21". Следовательно, key meshing должен быть >> включен по умолчанию. > > Тебе все равно SBOX выбирать надо, это же не автоматом идет. Туда же вставить и > gcry_cipher_ctl(). > > Я на следующей неделе посмотрю и доделаю тогда. Норма? В целом, да. Я ещё поковыряю сегодня тоже. И тебе отправлю.