2009-08-20 97 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