2013-12-12 36 views
1

我正在開發的聊天應用程序需要將聊天記錄存儲在服務器上。什麼是安全存儲這個最好的方法?我不想在表格中存儲純文本聊天記錄。在服務器上安全存儲聊天記錄的最佳方式

我最初的想法是存儲他們基於*用戶密碼加密,但是如果用戶忘記他的密碼,最好的辦法是什麼來處理呢?因爲我不知道密碼是什麼解密,並用新密碼重新加密。

另一種解決方案是用公鑰加密所有內容,並將私鑰存儲在單獨的機器上(並在該服務器的本地內存中),並在需要解密並獲取完整聊天曆史記錄時抓取私鑰。

任何幫助或案例研究都會很棒。

*增加,以避免混亂

+1

「我最初的想法是根據密碼存儲他們加密」誰的密碼? – BoltClock

+0

我無法想象用戶會樂意給你他們的私鑰給你存儲 - 有點擊敗對象。只要告訴他們,如果他們丟失了私鑰,他們將永久失去對其歷史的訪問。 –

+2

私鑰方案是一個夢幻般的選擇,可以說是最安全的路線。也就是說,冒這個風險的是任何擁有私鑰的人都可以解密它。那就是說,你想要保護誰?數據庫管理員或盜竊?這是一個類似主題的好主意:http://stackoverflow.com/questions/70450/is-it-worth-encrypting-email-addresses-in-the-database – brandonscript

回答

0

因爲如果DB被盜,要防止這些:

  • 避免純文本郵件。
  • 這些密鑰不能存儲在同一個數據庫中。
  • 你不需要一個單一的密鑰,因爲如果這是猜測,那麼他們解鎖一切。
  • 您不希望與用戶提供的信息綁定的密鑰(特別是易於猜測或可以更改/遺忘的情況下)。

所以如果你有預算,我會使用基於hardware的解決方案。這將提供必要的分離併爲您提供良好的密鑰,這些密鑰不會存儲在文件系統或數據庫中,並且會自行保存。您可以從一張卡開始(將所有內容保存在同一臺物理服務器上),或者根據需要將其擴展到機架安裝盒。

+0

謝謝Josh,雖然我們沒有預算來獲得HSM,但這仍然是一個很好的鏈接。 –