2009-08-20 88 views
15

我对加密文件格式有点困惑。什么是标准加密文件格式?

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

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

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

我知道(我认为)的是:

PKCS#7 
ASN.1 
DER 
PEM 
PKCS#8 

,但我不知道它们是如何相互关联的。

显然,AESCrypt工具也有一个格式,这似乎是自己的专有格式: http://www.aescrypt.com/aes_file_format.html

是否有一个的cheatsheet上这东西哪儿了吗?我一直在使用Google搜索,发现点点滴滴,但从来没有觉得我有完整的图片。

回答

7

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

ASN.1和DER是将结构化消息翻译成二进制的规则。它们本身并不是文件格式,尽管它们用于定义和描述文件格式。

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

与S/MIME并行是OpenPGP文件格式,也是主要为公钥加密文件设计的。 (请参阅RFC4880

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

2

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

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

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

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

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

+4

对 - 但是没有基于标准的文件格式吗?所以打开文件的程序可以发现算法,使用的参数等? 这就是我所要求的 - 是否有可以写入加密数据的格式,并希望另一个程序能够理解它(假设它以相同的方式实现该算法,用户被赋予了密钥或包括公共密钥等)。如果存在这种格式,我可以在哪里找到我的选项摘要? 或者它总是“滚动你自己的?” 感谢您的帮助。 – wadesworld 2009-08-20 15:38:49

+0

好吧,当然。例如WinZip可以使用AES,并且它记录了它是如何做到的。 http://www.winzip.com/aes_info.htm PKCS#7记录在RFC 2315中。http://tools.ietf.org/html/rfc2315 MS-Word使用AES加密。 http://download.microsoft.com/download/6/7/f/67f1ff44-f1c9-4fae-a451-4e803f7b727e/2007_Office_DocEncryption.docx我不知道,如果你有一个特定的格式,或..你想了解很多格式,或什么。 – Cheeso 2009-08-20 15:49:12