我有一個asp.net應用程序,可以通過互聯網上的人使用網絡瀏覽器訪問。它在Web服務器上運行,並與後端數據庫進行通信。在ASP.Net應用程序中安全地存儲(加密)數據
某些用戶希望使用應用程序來存儲一些私人數據。這個要求是:
1)只有存儲數據的用戶應該能夠看到它。
2)開發者/ dbas不應該能夠看到數據。
3)如果Web服務器和數據庫服務器遭到入侵,黑客一定不能解密數據。
所以,很明顯我將不得不加密這些數據。如果我加密的話,那裏會有一個關鍵字,可能是鹽/ IV。問題是我在哪裏存儲用於執行解密的數據?如果我將它存儲在數據庫或Web服務器中,則開發人員,dba或黑客可以訪問它並解密數據。
我想我的理想解決方案是將私鑰放在客戶端機器上,這樣他們完全負責它。但我不確定如何通過一個asp.net web應用程序來解決這個問題。
我相信我可以創建一個也存儲私鑰(PFX)的證書。客戶公司可以使用組策略將證書部署到其域中。但是,ASP.Net應用程序有可能請求Web瀏覽器將私鑰發送給它,以便它可以執行解密?解密客戶端將是最好的,但除了在JavaScript中創建一些東西我不明白這是如何可能的。
歡迎任何建議。
感謝您的建議。這帶來了一些問題。目前,每個用戶都有一個密碼,我們將其存儲爲鹽漬SHA2哈希值,以便我們驗證它。您的解決方案將涉及每次遇到私人數據時讓用戶輸入密碼,這會帶來不便。另外,如果他們忘記了密碼,那麼加密的數據將會丟失。 – Beakster
如果您願意,您可以在用戶系統使用時將密碼存儲在用戶的系統中。如果您願意,您可以實施密鑰恢復。正如我所說,這一切都歸結爲爲您的精確要求選擇最佳解決方案。聘請安全專家來做到這一點。 (如果只有用戶應該能夠訪問數據,如果用戶死亡,數據*應該*丟失。) –