容器格式是否與內部加密消息的安全性有關?
仍在**嘗試為我的移動應用程序設計一個完全二進制加密容器格式**,我在這裡詢問容器是否相關。
感謝Apple,我不能直接使用GPG,因為我既不能通過GPGME呼叫GPG(
fork(2)
不允許)也不能嵌入它(許可證衝突)容器格式是一種簡單的
ar(1)
格式,它以純文字形式儲存其內容,然後可能使用 Gzip 等算法進行壓縮。我想知道容器格式是否會影響已加密數據的安全性,即作為獨立實體保存的 MAC 和 IV。計劃是使用 AES-CTR(或 AES-CFB,或 AES-OFB,或我的自製密碼 SHA512-HMAC-OFB,由於其更大的塊大小,結果與 AES 一樣快)來加密數據和將其放入存檔文件(在
data.obj
存檔中),其初始化向量為普通格式(一些元數據(使用的算法,使用的明文壓縮,可能是使用者提供的純文字標籤)()iv.bin``key.bin``mac.bin``info.json
編輯
ar(1)
格式在其文件頭中儲存文件名(最多 16 個字元)、所有者 UID/GID、修改時間、文件模式(權限)。MAC(或簽名)是在“檢查存檔”上計算的:除 MAC(或簽名)本身之外的每個實體都在檢查存檔中,它也是
ar(1)
格式的,根據它們的文件名按二進制順序排序,保留它們的所有屬性(名稱、所有者、修改日期和文件模式)。
將評論轉換為答案…
“使用的算法”應與密鑰一起儲存。“使用的明文壓縮,可能是使用者提供的標籤”應該進入 MAC。
傲遊陳:
也就是說,算法根本不應該出現在容器中,而不是MAC本身的一切都應該包含在MAC中?
是的。另請注意,壓縮可能有問題。
傲遊陳:
我忘記了非對稱加密的對稱密鑰可能出現在文件以及 key.bin 中。如何處理?
如果您也使用公鑰,那麼您可能應該使用數字簽名,而不是 MAC。