Hash

防篡改日誌文件

  • January 31, 2018

問題概述

我想安全地儲存日誌文件,以便內容是秘密的,並且在沒有檢測到的情況下無法修改它們。

這些文件將使用經過身份驗證的加密(GCM 模式下的 AES)進行加密,每個文件都有一個隨機 IV 和對稱密鑰。對稱密鑰將使用 RSA 密鑰對的公共部分進行加密。IV 和加密的對稱密鑰都將包含在附加的經過身份驗證的數據中。

這給了我機密性、完整性和真實性——但僅限於每個單獨的日誌文件。

例如,假設我有日誌文件2013-01-01.log2013-01-05.log並且2013-02-09.log- 攻擊者可以2013-01-05.log在沒有檢測到的情況下刪除。

我想出了兩種可能的解決方案。

可能的解決方案 1

該程序可以維護一個加密的(可能是 RSA 簽名的)“計數器文件”,其中包含一個序列號,每次我們編寫一個新的日誌文件時,該序列號都會遞增。序列號將成為日誌文件名的一部分,並且還將包含在附加的經過身份驗證的數據中。因此,我們可以從失去的文件中檢測到任何“空白”。

可能的解決方案 2

該程序可以維護一個加密的(可能是 RSA 簽名的)“數據庫文件”,其中包含所有先前寫入的日誌文件的文件名。因此,我們可以從失去的文件中檢測到任何“空白”。

問題

我想就我的 2 個可能的解決方案提供回饋 - 它們是否有效,是否需要進行一些更改,我是否遺漏了什麼?

或者我的問題有更好的解決方案嗎?

“用於安全審計日誌的高效、妥協彈性和僅附加

加密方案”(PDF)

提供了一種可公開驗證的方法,允許細粒度驗證,

但它是在隨機 Oracle 模型中。

簡單方法: 驗證器和記錄器從前 向安全偽隨機數生成器

的種子開始 。 要表示日誌的有效結尾,請將

下一個字元串

$ b $ PRNG 的輸出位到日誌中。

要添加日誌條目,請獲取下一個 $ :b+k: $ PRNG 輸出的位,

將日誌條目的加密和

使用最後一個密文的 mac 放入日誌 $ k $ 的 $ :b+k: $ PRNG 輸出位作為

mac 密鑰,然後擦除那些 $ :b+k: $ 位和之前的 PRNG 狀態。

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