Какие стандартные форматы файлов шифрования? - PullRequest
17 голосов
/ 20 августа 2009

Я немного запутался в форматах файлов шифрования.

Допустим, я хочу зашифровать файл с помощью AES-256. Я запускаю файл с помощью алгоритма шифрования, и теперь у меня есть поток зашифрованных байтов.

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

В какие форматы файлов я могу записать это, чтобы другие инструменты шифрования могли это понять?

Те, о которых я знаю (я думаю):

PKCS#7
ASN.1
DER
PEM
PKCS#8

но я не уверен, как они все связаны друг с другом.

Очевидно, что утилита AESCrypt также имеет формат, который, по-видимому, является собственным проприетарным форматом: http://www.aescrypt.com/aes_file_format.html

Есть ли где-нибудь чит-лист на этом материале? Я гуглил и нашел кусочки, но никогда не чувствовал, что у меня есть полная картина.

Ответы [ 2 ]

7 голосов
/ 20 августа 2009

PKCS # 8 - это не формат зашифрованных файлов, это формат для закрытых ключей.

ASN.1 и DER - это правила для перевода структурированного сообщения в двоичный файл. Сами по себе они не являются форматом файлов, хотя они используются для определения и описания форматов файлов.

PKCS # 7 тесно связан с PEM, и они оба являются форматами для зашифрованных файлов с открытым ключом. Они определены в терминах сообщений ASN.1 в кодировке DER в кодировке Base-64. Они являются основой формата S / MIME для безопасной интернет-почты. (см. RFC3851 )

Параллельно с S / MIME используется формат файла OpenPGP, который также в основном предназначен для зашифрованных файлов с открытым ключом. (См. RFC4880 )

В форматах S / MIME и OpenPGP имеется блок, содержащий зашифрованные данные с симметричным ключом. Можно создать действительные файлы S / MIME или OpenPGP, содержащие только этот блок. Таким образом, форматы S / MIME (a.k.a. PKCS # 7) и OpenPGP также могут использоваться для шифрования с симметричным ключом.

2 голосов
/ 20 августа 2009

AES - это алгоритм шифрования, а не формат файла.

Как вы указали, в алгоритме много ручек и рычагов - сила ключа одна. AES-256 означает только алгоритм AES с 256-битным ключом. Но есть много других ручек. Режим для одного. AES имеет несколько режимов: CBC, ECB, OFB, CFB, CTR и другие. Другим является IV, который применяется к некоторым режимам. Перетяжка это другое. Обычно эти ручки выставляются в API AES для любой используемой вами платформы.

В большинстве случаев AES объединяется с другой криптографической технологией - например, генерация ключей на основе пароля (PBKDF2) часто используется для генерации ключей или IV. MAC часто используются для проверки целостности зашифрованных данных.

Различные инструменты используют AES для шифрования, и, если они хотят, чтобы их данные были читаемыми, они публикуют список используемых им ручек, их настройку и способы использования любой связанной криптотехнологии.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...