什么是标准加密文件格式?

时间:2009-08-20 15:13:48

标签: encryption cryptography

我对加密文件格式感到有点困惑。

假设我想用AES-256加密文件。我通过加密算法运行文件,现在我有一个加密字节流。

我显然可以将该字节流写入文件,但任何第三方加密应用程序都不会理解它,因为它不期望只是一个原始的加密字节流。

我可以编写哪种文件格式,以便其他加密工具可以理解它?

我所知道的(我认为)是:

PKCS#7
ASN.1
DER
PEM
PKCS#8

但我不确定它们是如何相互关联的。

显然,AESCrypt实用程序也有一种格式,它似乎是它自己的专有格式: http://www.aescrypt.com/aes_file_format.html

这个东西上有备忘单吗?我一直在谷歌搜索,发现了点点滴滴,但从来没有觉得我有完整的画面。

4 个答案:

答案 0 :(得分:7)

PKCS#8不是加密文件格式,它是私钥的格式。

ASN.1和DER是将结构化消息转换为二进制的规则。虽然它们用于定义和描述文件格式,但它们本身并不是文件格式。

PKCS#7与PEM密切相关,它们都是公钥加密文件的格式。它们是根据base-64封装的DER编码的ASN.1消息定义的。它们是安全互联网邮件的S / MIME格式的基础。 (见RFC3851

与S / MIME并行的是OpenPGP文件格式,也主要用于公钥加密文件。 (见RFC4880

在S / MIME和OpenPGP格式中,都有一个包含对称密钥加密数据的块。可以创建仅包含此块的有效S / MIME或OpenPGP文件。这样,S / MIME(a.k.a. PKCS#7)和OpenPGP格式也可用于对称密钥加密。

答案 1 :(得分:2)

AES是一种加密算法,而不是文件格式。

正如你所指出的,算法上有很多旋钮和杠杆 - 关键力量是一个。 AES-256只是指具有256位密钥的AES算法。但是还有很多其他的旋钮。模式,一个。 AES有多种模式:CBC,ECB,OFB,CFB,CTR等。另一种是IV,适用于某些模式。填充是另一个。通常这些旋钮在AES api中暴露,无论您使用何种框架。

在大多数情况下,AES与其他加密技术相结合 - 例如,基于密码的密钥派生(PBKDF2)通常用于生成密钥或IV。 MAC通常用于验证加密数据的完整性。

不同的工具使用AES进行加密,如果他们希望他们的数据可读,他们会发布他们使用的旋钮列表,它们的设置方式,以及如何使用相关的加密技术。

创建文件格式时,如果您希望其他应用程序可以读取您的文件,则需要存储或发布这些类型的内容。

答案 2 :(得分:1)

您可能想研究在2019年底标准化的Crypt4GH

Crypt4GH,这是来自Global的一种新的标准文件容器格式 基因组与健康联盟(GA4GH),允许将基因组数据 从最初的排序到 与外部组织的专业人员共享。

据我所知,就加密而言,它与NaCl的crypto_box类似,但具有将磁盘上的文件格式规范化的优点。

答案 3 :(得分:0)

JSON Web加密RFC 7516是一种IETF标准,可以满足您的需求,除其他加密算法外,它还可以处理AES。

JSON Web加密(JWE)表示使用JSON-
的加密内容 基于数据的结构[RFC7159]。 JWE加密机制
加密并为任意序列的完整性提供保护 八位字节。

可以使用nimbus

用Java等多种语言实现JWE。