2014-05-08 164 views
-1

我們希望存儲我們用於FTP,網站,數據庫等的密碼。您可以將我們的軟件與keypass進行比較,但我們希望自己的解決方案。 密碼將被加密並存儲在數據庫中。我們不能使用校驗和,因爲我們需要以明文形式顯示密碼。私鑰的安全存儲

問題是我們找不到存儲私鑰的好方案。如果它是用代碼編寫的,你可以很容易地得到它。如果它隱藏在dll中,則無法有效地隱藏它,因爲機器必須使用它。我們軟件的所有用戶都可以完全訪問源代碼,使用密碼進行數據庫訪問,並且可以在他們的PC上進行管理,因此他們可以在使用代碼時閱讀代碼。

我們考慮過將私鑰存儲在一個單獨的數據庫中,該數據庫使用另一個密碼訪問,但密鑰仍然會被使用。

所以,我們沒有得到任何地方。我們知道沒有100%的保存解決方案,但是這個解決方案几乎是安全的。

+0

你還沒有提到爲什麼你不能模仿keypass獲取加密密鑰的方式:詢問用戶密碼。考慮到您拒絕dll嵌入,您似乎也不會對「幾乎安全」(即不安全,但是誰會注意到?)解決方案感到滿意。總體而言,您沒有提供足夠的上下文來幫助您找到安全的解決方案(如果有的話):您的應用程序應該將其*密碼存儲在*其合法使用的* PC上* – Perseids

+0

我們是一些人和一些FTP分享條目等。目前,我們共享一個Keepass文件。這意味着我們每個人都可以使用主密碼訪問每個條目。這就是我們不想要的東西。每個人都應該能夠訪問他自己的條目和特定的共享條目。那些共享的是我們的問題。到目前爲止,條目將使用私鑰加密。但是如果你想共享條目,另一個必須用相同的私鑰解密它。我現在正在尋找一個解決方案。 軟件在我們所有的PC上,服務器上的數據庫 – Noraya

+0

如何使用一個公共Keepass文件和每個人的私人文件?回到自制解決方案:如果您想要更細化的訪問控制,您可以爲每個用戶分配一個非對稱密鑰對,並且如果某人與某個組共享密碼,則該軟件會使用該組成員的每個公鑰對該密碼進行加密。 – Perseids

回答

0

首先,我會建議不要寫自己的解決方案,有很多方法做錯了,你需要投入大量的時間來了解所有重要的問題。

您不需要在任何地方存儲密鑰,只需使用密鑰來加密數據,然後忘記密鑰。爲了解密,您使用輸入的密鑰,如果密鑰正確,您將獲取數據,否則您將獲得加密內容。

因爲用戶不喜歡鍵入強鍵和預設密碼,所以應該使用像BCrypt或PBKDF2(Password-Based-Key-Derivation-Function-2)這樣的密鑰派生函數,它可以將密碼轉換爲鍵。

+0

無論好壞,他們希望稍後能夠檢索密碼:「我們不能使用校驗和,因爲我們需要以明文形式顯示密碼。」 – Perseids

+0

@Perseids - 可能你誤解了答案,[PBKDF2](http://en.wikipedia.org/wiki/PBKDF2)僅用於從用戶密碼中篡改密鑰(用於加密),這是它們的原始目的。密碼/密鑰本身不應該存儲。 – martinstoeckli

+0

我明白了。儘管他們似乎沒有興趣使用用戶特定的密碼進行加密,但(請參閱我對該問題的評論)。 – Perseids