openssl ccm зашифровать строку, как сохранить тег?
Мне нужно записать зашифрованный текст в файл, а затем впоследствии прочитать файл и расшифровать текст. я хотел использовать аутентифицированное шифрование с openssl evp с ccm, но ccm создает тег, который позже должен использоваться для расшифровки текста. вопрос - как сохранить этот тег и повторно использовать его при чтении файлов в изолированной среде en-pc (без интернета)?
Я новичок в шифровании, но уже добавляю тег к зашифрованному тексту перед записью в файл, а затем игнорирую байты тега при расшифровке, что-то вроде плохого подхода. какие-либо намеки, как решить эту проблему? я не могу попросить пользователя ввести пароль перед тем, как писать / читать текст. среда не очень чувствительна к безопасности
1 ответ
Признак, честно говоря, является точкой CCM (или GCM). Вы можете
- Задержка записи в файл до его вычисления, добавление тега и одноразового номера (дешифрование, чтение тега, чтение одноразового номера, дешифрование остальных).
- Напишите одноразовый номер, затем зашифрованный текст, затем тег. Восстановить соответственно
- Запишите одноразовый номер и / или тег в отдельный файл.
- Любой из вышеперечисленных, но с большей структурой, чем конкатенация (например, DER SEQUENCE)
Если вы используете CCM или GCM, вы ДОЛЖНЫ использовать разные одноразовые номера каждый раз, когда используете один и тот же ключ. Невыполнение этого требования может привести к компромиссу. (И нет "ну, я знаю это, но это не имеет значения в этом случае...", потому что сегодняшний намеренно неаккуратный код - это завтрашняя ошибка на несколько миллионов долларов, как только он будет скопирован (в качестве справочного примера) в другое место),
Весьма распространено передавать одноразовый номер, зашифрованный текст и тег (и "дополнительные данные") в одном и том же сообщении, например в TLS и IPSEC.