LibreSSL предоставляет тег аутентификации для aes-256-gcm

В настоящее время я запускаю свою команду так:

/usr/local/Cellar/libressl/3.0.2/bin/openssl enc -aes-256-gcm -d -in enc.token -out dec.token -iv {IV} -K {KEY}

и вывод этой команды bad decrypt. Мой выходной файл также выглядит так, как будто он только наполовину расшифрован, а файл выглядит как

Object(id=998fdsa981sdafkj@ÛP²•v’@v[ðt

  1. Это полностью расшифровано? Я считаю, что эти символы представляют собой двоичные файлы, но похоже, что только половина моего объекта была расшифрована.
  2. Я искал bad decrypt, и похоже, что это связано с тем, что тег аутентификации шифрования GCM не предоставляется для расшифровки. Есть ли способ предоставить это команде Libre? Я просматривал LibreSSL через https://www.libressl.org/, но, похоже, никакой документации.

person user3613290    schedule 12.03.2020    source источник


Ответы (1)


Я предполагаю, что LibreSSL в этом отношении такой же, как OpenSSL. OpenSSL документирует эту проблему на своей справочной странице для утилиты enc:

https://www.openssl.org/docs/man1.1.1/man1/enc.html

Программа enc не поддерживает режимы шифрования с проверкой подлинности, такие как CCM и GCM, и не будет поддерживать такие режимы в будущем.

В том же абзаце объясняется причина этого. Рекомендуется использовать утилиту cms вместо enc.

person Matt Caswell    schedule 12.03.2020
comment
Если LibreSSL не поддерживает GCM, зачем ему aes-256-gcm в качестве параметра командной строки? - person user3613290; 12.03.2020
comment
По той же причине, что и OpenSSL. Он поддерживает GCM внутри, но не в сочетании с приложением enc. Он использует общую обработку нескольких команд для разбора этих параметров и принимает любое имя шифра. Просто с некоторыми из них это не работает. OpenSSL обнаруживает это и выдает ошибку, но более старые версии этого не делали и терпели неудачу так же, как вы видите. Предостережение: я не использую Libressl, только OpenSSL. Я просто знаю, что OpenSSL работает именно так. - person Matt Caswell; 12.03.2020