2009-01-21 72 views
3

是否可以在只能由應用程序本身訪問的本地系統(Windows XP)上存儲密碼?開源桌面應用程序在磁盤上加密密碼

我本能的答案是「不」。即使使用某種哈希或加密,我也會認爲只要源代碼可用,那麼確定的搜索者就可以使用它來檢索密碼。

我正在開發一個個人開源愛好項目,我想讓用戶選擇在磁盤上存儲密碼,以便他們不需要每次使用該軟件時都鍵入它們。可以存儲的密碼的一個例子是用於在其網絡的代理服務器上進行認證的例子。

Stack Overflow有幾個相關的問題,最合適的解決方案聽起來像使用像DPAPI這樣的操作系統服務。

基本前提是正確的,只要密碼可以在沒有任何用戶輸入的情況下由軟件檢索到,並且源代碼是開源的,密碼總是可以通過(適當的技術和任意傾斜的) -通過?

回答

2

在UserData模式下使用DPAPI將只允許您的計算機上的帳戶訪問加密數據。

它根據您的登錄憑證生成主密鑰並將其用於加密。

2

如果密碼可以在沒有任何用戶輸入的情況下通過軟件檢索,那麼密碼將始終可以由(適當技術上並且任意傾斜的)途人獲取。開放或封閉的來源隻影響涉及多少努力。

0

當然,您可以編寫一個程序來安全地存儲密碼。

使用AES,您可以讓您的程序生成AES密鑰,並將該密鑰存儲在操作系統保護區中。在WinXP中,這是用DPAPI加密的註冊表。因此,訪問密鑰的唯一方法是對機器進行物理訪問。

您需要確保在以密碼安全的方式生成AES密鑰時。只使用RAND將不起作用,也不會生成隨機字符串。

開源與安全(在我看來)很少有關係。鑑於反向工程源代碼工具的複雜程度,即使您有一個封閉的源代碼解決方案,人們決定窺探您的代碼也可以這樣做。

您的努力最好花在確保遵循最佳實踐指導原則的同時使用所選擇的加密方案。我會爭辯說,讓一個更大的社區公開看待你的代碼實際上會讓你的代碼更安全;漏洞和威脅很可能會在更多的用戶通過您的代碼進行查看時被識別出來。

相關問題