Каковы стандартные форматы файлов шифрования?
Я немного запутался в форматах файлов шифрования.
Скажем, я хочу зашифровать файл с помощью AES-256. Я запускаю файл через алгоритм шифрования, и теперь у меня есть поток зашифрованных байтов.
Я, очевидно, могу написать этот поток байтов в файл, но любое стороннее приложение для шифрования не собирается его понимать, поскольку оно не ожидает только сырого потока зашифрованных байтов.
В какие форматы файлов я могу написать это, чтобы другие инструменты шифрования могли его понять?
Я знаю (я думаю):
PKCS#7
ASN.1
DER
PEM
PKCS#8
но я не уверен, как все они связаны друг с другом.
Очевидно, что утилита AESCrypt также имеет формат, который, по-видимому, является его собственным проприетарным форматом:
http://www.aescrypt.com/aes_file_format.html
Есть ли там чит-лист в этом месте? Я искал поиски в Интернете и нашел кусочки, но никогда не чувствовал, что у меня полная картина.
Ответы
Ответ 1
PKCS # 8 не является зашифрованным файловым форматом, это формат для закрытых ключей.
ASN.1 и DER - это правила для перевода структурированного сообщения в двоичный файл. Они сами по себе не являются файловым форматом, хотя они используются для определения и описания форматов файлов.
PKCS # 7 тесно связан с PEM, и они оба являются форматами для зашифрованных файлов с открытым ключом. Они определены в терминах инкапсулированных по стандарту DER закодированных ASN.1 сообщений с базовым уровнем 64. Они являются основой формата S/MIME для безопасной интернет-почты. (см. RFC3851)
Параллельно с S/MIME это формат файла OpenPGP, также в основном предназначенный для зашифрованных файлов с открытым ключом. (См. RFC4880)
В форматах S/MIME и OpenPGP есть блок, который содержит данные с зашифрованным символьным ключом. Можно создать действительные файлы S/MIME или OpenPGP, содержащие только этот блок. Таким образом, форматы S/MIME (a.k.a. PKCS # 7) и OpenPGP также могут использоваться для шифрования с симметричным ключом.
Ответ 2
AES - это алгоритм шифрования, а не формат файла.
Как вы отмечаете, в алгоритме много ручек и рычагов - сила ключа - одна. AES-256 просто означает алгоритм AES с 256-битным ключом. Но есть много других ручек. Режим, для одного. AES имеет несколько режимов: CBC, ECB, OFB, CFB, CTR и другие. Другой - это IV, который применяется к некоторым режимам. Прокладка - другая. Обычно эти кнопки отображаются в AES api для любых фреймворков, которые вы используете.
В большинстве случаев AES сочетается с другой криптотехнологией - например, для генерации ключей или IV часто используется генерация ключа на основе пароля (PBKDF2). MAC часто используются для проверки целостности зашифрованных данных.
Различные инструменты используют AES для шифрования, и если они хотят, чтобы их данные были читаемыми, они публикуют список ручек, которые они используют, и как они установлены, а также как можно использовать любую связанную криптотехнологию.
При создании формата файла вам нужно будет хранить или публиковать такие вещи, если вы хотите, чтобы ваш файл был доступен для чтения другими приложениями.