2011-12-18 223 views
4

我們正在設計一個數據庫系統來存儲加密的信息串,加密和解密使用公鑰加密技術在客戶端執行。 如果密鑰曾經更改過,則需要重新加密所有記錄客戶端,這是非常不切實際的。 有沒有什麼辦法可以在不暴露原始(舊)解密密鑰或消息文本的情況下執行服務器端?在不暴露明文的情況下更改加密密鑰

我想我以後是一個關聯的密碼,這樣的事情:

T(Eo(m)) = En(Do(Eo(m)))

其中EO(m)是密文,EO /做舊酒吧/私法密鑰對, En新的酒吧鑰匙,消息文本和T魔法重新加密功能。 編輯:T計算客戶端,然後發送到服務器使用。

+0

可能會在[crypto.stackexchange.com(http://crypto.stackexchange.com/)更好,但我不知道社區有多大那邊。 – 2011-12-18 06:07:43

回答

1

不能追溯反正禁用舊的密鑰。無論您做什麼,訪問舊數據和舊密鑰的人都可以解密數據。

我會建議乾脆保持一個密鑰環。將新密鑰添加到環中並將其標記爲活動狀態。標記舊密鑰過期。對客戶端進行編碼,以便如果發現任何使用過期密鑰加密的數據,則使用活動密鑰對其進行重新加密。如果需要的話(或者不。我們需要的取決於你的實現要求的詳細信息。)

,一段時間後,你可以掃對於仍與舊的密鑰加密的任何數據重新加密。

不能消除舊密鑰的曝光反正,永遠 - 人誰可以找到舊的密鑰才能解密,如果他們有舊密鑰加密的數據的備份或複製。加密密鑰必須永遠受到保護,否則就會發生維基解密外交電報向公衆發佈的失敗告示,告密者的姓名完好無損。

+0

謝謝大衛。沒有客戶端可以訪問完整的數據庫,因此如果私鑰遭到破壞,損害將會受到限制,所有記錄都可以立即重新加密。 – 2011-12-18 06:21:15

+0

問題是,破壞密鑰的人可能已經擁有加密數據。 [你必須保護永遠鍵或者是有史以來該密鑰被泄露保護的任何數據。(http://www.google.com/hostednews/afp/article/ALeqM5iCMb6pr6EYGK3d57io_C8yfpIG2g?docId=CNG.faa7076ee940283688916c2ee187655c.01) – 2011-12-18 06:24:48

+0

我把這看作是一個風險管理問題 - 破壞私鑰的機會,要麼完全違反數據庫要麼保留備份低於每個私鑰。 (無論如何,備份都使用單獨的密鑰進行加密,並提供第二層加密) – 2011-12-18 06:33:29

0

想想你的安全周邊。如果您擔心服務器遭到入侵,請考慮構建一個難以破解的子系統,進行密碼轉換。您可以通過非網絡連接的服務器進行此操作,該服務器僅通過非常嚴格驗證的鏈接協議(通過串行線路)或專用硬件安全模塊進行聯繫。但是,如果你這樣做,你必須考慮你的密鑰是如何被保護的;如果攻擊者可以從你的服務器上竊取短暫的明文,他們是否可以竊取保護它的密鑰?

相關問題