2009-05-18 117 views
0

我需要爲新應用程序加密/解密密碼。規範要求我使用AES;任何人都可以提出一個很好的理由要麼密碼加密/數據庫層AES或應用層AES

  1. 使用CLR函數或
  2. 在.net應用程序層做這做我的數據庫層中的所有加密?
  3. 的db和服務器

打算是驗證密碼的混合物;該應用程序使用Telerik ORM進行了n層分層。唯一真正的功能是創建/更新密碼並檢查輸入的值。

在我的內心,我認爲

  1. 數據庫是用於驗證用戶輸入的對現有的記錄密碼更好;和
  2. 創建/更新密碼的前端(所以明文密碼絕不會傳送)

我感興趣的其他想法和建議,爲什麼我可以做一個選擇。如果你建議我在前臺做這個,你對加密密鑰有什麼想法? XML中的每個用戶一個或配置文件中的每個應用一個?

感謝您的任何建議:)

回答

4

密碼不要保存在所有 - 他們只是哈希值。

剛剛加密密碼的問題相當明顯 - 您必須將密鑰存儲在某處。如果您執行客戶端加密,我將只使用Reflector在代碼中查找密鑰或附加調試器,並等待客戶端從服務器獲取密鑰。

如果您在服務器上執行加密,獲取密鑰將變得更加困難 - 但每個有權訪問服務器的人都可能使用與之前提到的技術相同的技術,因爲您仍然需要將密鑰存儲在某個位置。當然,您必須加密客戶端和服務器之間的連接,否則攻擊變得微不足道。

將加密移動到數據庫服務器的變化不會太大,您將不得不加密連接 - 客戶端和服務器之間以及服務器和數據庫服務器之間的連接。

我建議在服務器上執行加密,否則你必須信任客戶端。這當然需要客戶端和服務器之間的安全連接。服務器和數據庫服務器之間的連接可能未加密。

+0

雖然我通常會避免「不要那麼做」的答案,但在這種情況下,我希望我可以兩次投票。 – 2009-05-18 13:06:26