engine icon indicating copy to clipboard operation
engine copied to clipboard

Allow `kuznyechik-ctr-acpkm-omac` PKCS12 integration

Open yanovich opened this issue 2 years ago • 7 comments

OpenSSL PKCS12 module sets all-zeros initial vector on encryption and doesn't change it on decryption.

This patch addresses kuznyechik-ctr-acpkm-omac behavior differences in two places:

  1. in gost2015_acpkm_omac_init() IV is initialized with a random value on encryption, thus overwriting user-defined value

  2. in gost_grasshopper_cipher_init IV is initialized with a random value, thus overwriting assumed default all-zeros value

This patch also implements 3 ctrl operations required by PKCS12 module:

  • EVP_CTRL_AEAD_GET_TAG
  • EVP_CTRL_AEAD_SET_TAG
  • EVP_CTRL_AEAD_TLS1_AAD

Signed-off-by: Sergei Ianovich [email protected]

yanovich avatar Sep 16 '22 17:09 yanovich

When CMS files are created, IV (and, hence, these parameters) shouldn't be zeroes.

beldmit avatar Sep 16 '22 20:09 beldmit

Если прямо обязательно, чтобы была рандомная строка по умолчанию, то можно добавить в структуру контекста поле has_kdf_seed, а потом в gost_grasshopper_cipher_init_ctracpkm_omac() его проверять, и при отсутствии в случае зашифрования делать рандомную инициализацию (которая раньше делалась всегда, и которую я тоже убрал).

yanovich avatar Sep 16 '22 20:09 yanovich

Просто оставить в инициализации не получается, потому что init() вызывается после set_attributes(). И получается, что в ините затирается значение, которое ранее установил пользователь.

yanovich avatar Sep 16 '22 20:09 yanovich

Да, это вариант Я не помню, что я тут делал в коммерческой реализации

beldmit avatar Sep 16 '22 20:09 beldmit

Просто убрал своё удаление инициализации. Так тоже ключи шифруются и расшифровываются стандартной библиотекой.

yanovich avatar Sep 16 '22 21:09 yanovich

Просто оставить в инициализации не получается, потому что init() вызывается после set_attributes(). И получается, что в ините затирается значение, которое ранее установил пользователь.

тут я оказался не прав

yanovich avatar Sep 16 '22 21:09 yanovich

Правильно было бы использовать NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac, но так не работает.

yanovich avatar Sep 16 '22 21:09 yanovich