Keys
許多單次使用的密鑰加密方案(不是 Shamir 的共享密鑰)
我正在尋找具有以下屬性的加密方案:
- 有一系列可用於解密消息的密鑰
- 嚴格來說只需要序列中的一個密鑰來解密消息
- 鍵需要按照鍵序列定義的順序使用
- 一旦使用,密鑰就不能再次用於解密消息(這意味著加密消息的某種轉換作為解密過程的一部分)
- 基於知道序列中任意數量的鍵,不可能從序列中派生鍵
- 加密的消息由第三方保存(例如在伺服器上),該第三方根據請求為消息的接收者解密它,但只有消息的接收者保留密鑰的序列。在安全漏洞的情況下,如果加密消息從它們保存的儲存中洩漏,它們對攻擊者來說毫無價值,因為第三方不保留密鑰的順序。我知道當接收者解密消息時,仍然有可能從主記憶體中竊取消息,但重點是使消息的永久儲存安全。
由於您已經信任伺服器在為客戶端解密後安全地刪除明文消息,因此您也可以信任它來刪除加密版本。
因此,例如 3 個密鑰 K1 .. K3 和明文 P 的情況,儲存 K1(P)、K1(K2(P))、K1(K2(K3(P))),因為它們都以 K1 開頭,即只有一開始可以使用的鑰匙。呈現 K1 後,將其應用於系列中的所有內容,這樣你就完成了。P,K2(P),K2(K3(P))。提供 P 刪除它並將其餘的儲存為 K2 到達時的新系列。重複這個過程,直到整個序列,因此所有的鍵都用完了。