openssl ccm зашифровать строку, как сохранить тег?

Мне нужно записать зашифрованный текст в файл, а затем впоследствии прочитать файл и расшифровать текст. я хотел использовать аутентифицированное шифрование с openssl evp с ccm, но ccm создает тег, который позже должен использоваться для расшифровки текста. вопрос - как сохранить этот тег и повторно использовать его при чтении файлов в изолированной среде en-pc (без интернета)?

Я новичок в шифровании, но уже добавляю тег к зашифрованному тексту перед записью в файл, а затем игнорирую байты тега при расшифровке, что-то вроде плохого подхода. какие-либо намеки, как решить эту проблему? я не могу попросить пользователя ввести пароль перед тем, как писать / читать текст. среда не очень чувствительна к безопасности

1 ответ

Решение

Признак, честно говоря, является точкой CCM (или GCM). Вы можете

  • Задержка записи в файл до его вычисления, добавление тега и одноразового номера (дешифрование, чтение тега, чтение одноразового номера, дешифрование остальных).
  • Напишите одноразовый номер, затем зашифрованный текст, затем тег. Восстановить соответственно
  • Запишите одноразовый номер и / или тег в отдельный файл.
  • Любой из вышеперечисленных, но с большей структурой, чем конкатенация (например, DER SEQUENCE)

Если вы используете CCM или GCM, вы ДОЛЖНЫ использовать разные одноразовые номера каждый раз, когда используете один и тот же ключ. Невыполнение этого требования может привести к компромиссу. (И нет "ну, я знаю это, но это не имеет значения в этом случае...", потому что сегодняшний намеренно неаккуратный код - это завтрашняя ошибка на несколько миллионов долларов, как только он будет скопирован (в качестве справочного примера) в другое место),

Весьма распространено передавать одноразовый номер, зашифрованный текст и тег (и "дополнительные данные") в одном и том же сообщении, например в TLS и IPSEC.

Другие вопросы по тегам