Аутентифицированное шифрование и ключи OpenSSL - PullRequest
0 голосов
/ 31 мая 2018

Итак, главный вопрос: «Могу ли я сохранить закрытый ключ OpenSSL (в частности, закрытый ключ RSA) с использованием аутентифицированного шифрования?».

OpenSSL поддерживает широкий спектр вариантов шифрования для ключей, однако, похоже, чтомногие из них поддерживаются только как выходы, а не как входы.Например, openssl genrsa -aes256 работает нормально и создает ключ, который можно расшифровать и использовать позже (но использует режим CBC), но если вы сделаете openssl genrsa -aes-256-gcm, полученный ключ не сможет использоваться OpenSSL.Точное сообщение об ошибке зависит от версии, последняя версия 1.1.0h дает:

root@cb772d20894d:/# openssl genrsa -aes-256-gcm | openssl rsa
Generating RSA private key, 2048 bit long modulus
.................................................+++
................................................+++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:
Enter pass phrase:
unable to load Private Key
139772421357760:error:0906A065:PEM routines:PEM_do_header:bad decrypt:../crypto/pem/pem_lib.c:445:

В то время как более старые версии даже не достигают этого с:

140678952371864:error:0906B072:PEM routines:PEM_get_EVP_CIPHER_INFO:unsupported encryption:pem_lib.c:544:

Та же ошибкапоказано с aes-256-ocb и aes-256-ccm.Я думаю, что это все из доступных аутентифицированных шифров?Может, я где-то пропустил опцию в OpenSSL, чтобы разрешить это?

Ответы [ 2 ]

0 голосов
/ 20 августа 2018

OpenSSL поддерживает внутреннюю таблицу алгоритмов дайджеста и шифров. До версии 1.1 нам нужна явная инициализация или деинициализация этой таблицы.Итак, чтобы добавить все алгоритмы, вам нужно вызвать OpenSSL_add_all_algorithms() (который добавит все алгоритмы в таблицу (дайджесты и шифры)).Это решит вашу неподдерживаемую ошибку шифрования.

Примечание. Обязательно вызовите EVP_cleanup(), чтобы удалить все шифры и дайджесты из таблицы.

0 голосов
/ 31 мая 2018

Некоторые подробности в коде OpenSSL показывают, что уровень шифрования ключей EVP не понимает теги аутентификации, поэтому они просто выбрасываются, а не сохраняются вместе с IV, как и следовало ожидать.Таким образом, в настоящее время ни один шифр AEAD не будет работать с системой шифрования ключей.

...