[oss-gost-crypto] Расшифровка S/MIME

Paul Wolneykien manowar at altlinux.org
Fri Sep 13 14:38:21 MSK 2019


13.09.2019 14:30, Dmitry Eremin-Solenikov пишет:
> пт, 13 сент. 2019 г. в 13:30, Paul Wolneykien <manowar �� altlinux.org>:
>>
>> 13.09.2019 13:13, Dmitry Eremin-Solenikov пишет:
>>> пт, 13 сент. 2019 г. в 12:45, Paul Wolneykien <manowar �� altlinux.org>:
>>>> 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().
> 
> Я на следующей неделе посмотрю и доделаю тогда. Норма?

  В целом, да. Я ещё поковыряю сегодня тоже. И тебе отправлю.


More information about the oss-gost-crypto mailing list