2013-01-04 217 views
1

我有一個用戶系統,用於管理用戶屬性,散列醃製密碼,RSA公鑰和加密的RSA私鑰(通過實際的salt +密碼)。爲用戶安全生成RSA密鑰

RSA密鑰是在用戶註冊期間或者密碼被重置(由用戶管理員或忘記密碼)生成的,因爲私鑰在沒有密碼的情況下基本上丟失。

目前,RSA密鑰是在客戶端機器上生成的,並使用其密碼加密(存儲在瀏覽器內存中)併發送回服務器以存儲數據。

但是現在,我想爲RSA密鑰生成創建兩個其他選項。這兩種方法都可以在消息隊列系統上工作,該消息隊列系統將在本地系統上處理(通過cron),或者系統將消息發送到另一臺服務器(通過對稱加密通道),該服務器會創建密鑰並將其發送回存儲系統。

儘管這些方法是進行硬位生成RSA的有效安全方法,但我目前的難題是如何確保爲該用戶計算出的私鑰。通過密碼保護私鑰意味着需要密碼,並且任何其他機制都需要將密鑰提供給代碼,或者臨時存儲雙方(用戶和系統)可用的加密密鑰, 。

我最初認爲用系統RSA密鑰對存儲用戶密碼是一件好事,當生成新密鑰時,用戶密碼被提取(並從商店中刪除)並用於加密新的私有密鑰密鑰並將其與用戶一起存儲。但是這要求系統有權訪問其私鑰,這將使黑客訪問用戶密碼。

如果上述方法將命令發送到單獨的安全服務器(甚至物理上),則可能會發揮作用,因爲如果這是唯一一個存儲內部私鑰的方法,那麼只有在該服務器被黑客入侵時才能訪問它。

有沒有人有任何關於如何處理和保護即使黑客可以訪問完整源代碼和數據庫也無法破解的用戶私鑰的建議?

回答

1

我不打算評論你的系統的任何安全方面。然而,在閱讀您的私鑰存儲想法時,我想起了一篇由Charlie Kaufmann和Radia Perlman撰寫的關於server-side private key storage的論文。摘要註釋「...我們建議即使Alice的密碼是可猜測的也是安全的協議......」。

請注意,該論文是在1999年寫的,這意味着您應該尋找更多的最新分析和改進的概念。

+0

乾杯,現在有一個閱讀。沒有評論安全?是好還是壞?我一直在思考上個星期的這個過程,就我所知,它保證了數據的安全,即使黑客可以訪問代碼和數據庫。其中最薄弱的部分是最初創建的密鑰 – topherg

+0

我從不評論安全性。在我看來,它不能在SO上的簡短問答格式中負責任地完成。我不吝惜別人的評論,但有很多聰明的人在這裏有很好的見解。 –

+0

這是一個非常好的和務實的策略,但是在記錄中(除了將要創建的數據庫條目外),您認爲系統的安全性看起來是好的,高於還是悲觀地不足? – topherg