我應該連同 AES 密文一起發送哪些資訊,是否有任何標準可以做到這一點?
在使用一些加密實現時,我看到很多次評論被添加到密文中。
例如:
-----BEGIN PGP MESSAGE----- Version: OpenPGP.js v1.5.0 Comment: http://openpgpjs.org wcBMAyJd6d8o7Y2pAQf/WZM1LV/iq3R8QGK7fUiQoUVzR8nEow+RJcBh6ujH MBGWKcm4Y//a76hOL4r/Htbt7lwnfGe2HLrznRQip1TaONW897zrD7amsOp3 xlbZZep/HQNHNgtOGHx4peqDjrPQk9Y7HvRxrPFQWM2jMFTFlvJsw3kBWiNn FI0jn+8RZalxCXloAE2OSWTkzInf+RfAefrFRCSiQW536UZ0h89u560TgA10 u7N0b+iGzRAB+4AFBZjkWpO5/KpYRzlUng+BMw4TmrlHJlLxiW7s3R3V74/J ZNu1IIZ0S16A0r3XuWGbccO59igNY8qzi3FyMiQgCbYCReccm6M59no7M0gK 0tJFAe9BC5GJuS0oTrnoH9Wf6/tftw5booEaNU67HDnU0qI9blUK2rFVFoR/ ZCNlDy2HxpQZFgrnGPBMsvV6wZSj/LgLF+wi =jLQU -----END PGP MESSAGE-----
在哪裡:
-----BEGIN PGP MESSAGE-----
… 標識數據的開頭。
Version: OpenPGP.js v1.5.0
… 確定協議的哪個實現用於加密文本。
Comment: http://openpgpjs.org
… 提供一般性評論。
-----END PGP MESSAGE-----
標識數據的結尾。
我想知道的第一件事是否是該評論的一些標準,如果是的話,還有一些關於它的連結或資訊。會問Google,但不知道要搜尋什麼。
然後,我想使用上面顯示的評論將我的加密消息儲存為明文。
假設我想對使用 AES 加密的消息執行此操作,我應該儲存哪些資訊?
- 我應該儲存用於加密的 AES 模式嗎?
- 我應該儲存我使用的 AES 實現嗎?
- 我應該儲存初始化向量嗎?
- 我是否應該在儲存這些資訊時嘗試遵守某些標準?
您正在尋找的是 PEM 的定義,即增強隱私的郵件。顯然 PEM 不再僅僅用於郵件。標題行的定義似乎在RFC 1421 的第 4.6 節:“封裝標題欄位摘要”:“Internet 電子郵件的隱私增強:第 I 部分:消息加密和驗證程序”中得到了最好的描述。顯然,對於 PGP 特定的標頭欄位,您必須查看 OpenPGP 格式,特別是關於 ASCII Armor 的部分。
然後,我想使用上面顯示的評論將我的加密消息儲存為明文。假設我想為使用 AES 加密的消息執行此操作,我應該儲存哪些資訊?
這取決於您選擇的方案。對於傳輸安全性,最低要求是 IV、密文和兩者上的身份驗證標籤。
我應該儲存用於加密的 AES 模式嗎?
那要看。您可以儲存協議版本,而不是確定使用哪種模式。您不應該只儲存模式而不進行身份驗證,然後根據標頭欄位繼續處理消息。這將使攻擊者決定在接收方執行哪個操作。您需要控制接收方執行的操作。
我應該儲存我使用的 AES 實現嗎?
不,如果您已經決定了一個定義良好的協議,那麼分組密碼的實現應該是無關緊要的。
您可以儲存協議的軟體實現版本。在這種情況下,您可能能夠解決實現中可能存在的錯誤。我已經看到了很多 PGP 的實施確實很重要的例子。
我應該儲存初始化向量嗎?
是的,除非您有辦法在帶外建立 IV(例如,對包含在消息計數器中的消息計數器進行操作,或者在雙方保持同步的計數器)。如果不確定包括足夠大小的隨機 IV。
我是否應該在儲存這些資訊時嘗試遵守某些標準?
強烈建議保留眾所周知的容器格式,例如 CMS 或已經命名的 OpenPGP 是的。