Encryption

我應該連同 AES 密文一起發送哪些資訊,是否有任何標準可以做到這一點?

  • September 12, 2016

在使用一些加密實現時,我看到很多次評論被添加到密文中。

例如:

-----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 加密的消息執行此操作,我應該儲存哪些資訊?

  1. 我應該儲存用於加密的 AES 模式嗎?
  2. 我應該儲存我使用的 AES 實現嗎?
  3. 我應該儲存初始化向量嗎?
  4. 我是否應該在儲存這些資訊時嘗試遵守某些標準?

您正在尋找的是 PEM 的定義,即增強隱私的郵件。顯然 PEM 不再僅僅用於郵件。標題行的定義似乎在RFC 1421 的第 4.6 節:“封裝標題欄位摘要”:“Internet 電子郵件的隱私增強:第 I 部分:消息加密和驗證程序”中得到了最好的描述。顯然,對於 PGP 特定的標頭欄位,您必須查看 OpenPGP 格式,特別是關於 ASCII Armor 的部分

然後,我想使用上面顯示的評論將我的加密消息儲存為明文。假設我想為使用 AES 加密的消息執行此操作,我應該儲存哪些資訊?

這取決於您選擇的方案。對於傳輸安全性,最低要求是 IV、密文和兩者上的身份驗證標籤。

我應該儲存用於加密的 AES 模式嗎?

那要看。您可以儲存協議版本,而不是確定使用哪種模式。您不應該儲存模式而不進行身份驗證,然後根據標頭欄位繼續處理消息。這將使攻擊者決定在接收方執行哪個操作。您需要控制接收方執行的操作。

我應該儲存我使用的 AES 實現嗎?

不,如果您已經決定了一個定義良好的協議,那麼分組密碼的實現應該是無關緊要的。

您可以儲存協議的軟體實現版本。在這種情況下,您可能能夠解決實現中可能存在的錯誤。我已經看到了很多 PGP 的實施確實很重要的例子。

我應該儲存初始化向量嗎?

是的,除非您有辦法在帶外建立 IV(例如,對包含在消息計數器中的消息計數器進行操作,或者在雙方保持同步的計數器)。如果不確定包括足夠大小的隨機 IV。

我是否應該在儲存這些資訊時嘗試遵守某些標準?

強烈建議保留眾所周知的容器格式,例如 CMS 或已經命名的 OpenPGP 是的。

引用自:https://crypto.stackexchange.com/questions/32326