簡體   English   中英

將使用RSACryptoServiceProvider類的加密密碼插入數據庫?

[英]Inserting encrypted password using RSACryptoServiceProvider class into DB?

我有客戶端正在使用的WCF服務,以下是我當前用於用戶身份驗證的實現,我想要一個建議來增強它或更好的機制。

  • 我正在使用RSACryptoServiceProvider類(RSA實現)將加密的用戶密碼保存到數據庫中

  • 客戶端應在每次登錄時使用公共密鑰(存儲在文件中)對密碼進行加密,並將其發送給具有用戶名的登錄方法

  • 在服務器端,登錄方法選擇提供的用戶名的加密密碼,並使用私鑰比較解密的密碼(由用戶和數據庫一發送)

    注意:每次使用具有相同公共密鑰的RSA加密字符串時,都會生成一個新的加密字節,因此我無法比較加密密碼,因此必須解密它們才能進行比較

PS答案說:“出於身份驗證的目的,應避免使用可逆加密來存儲密碼”

我要問的是,除了擁有私鑰之外,沒有人可以解密密碼,這是什么問題,即使哈希是不可逆的,但它還是壞了!

存儲加密而不是散列的密碼是不常見的做法。 您是否有任何特定原因?

如果沒有,我建議用鹽存儲散列的密碼(SHA-2或類似名稱)。

我認為有兩個問題需要注意:

  • 密碼如何安全傳輸?
  • 密碼應如何安全存儲?

現有的基於密碼的密鑰協議(例如SRP)解決了這兩個問題。

使用RSA加密密碼的解決方案不是一個壞主意,而只是部分解決方案:由於RSA隨機化了加密,因此可以防止離線字典攻擊。 根據您的描述,尚不清楚您的建議是否可以防止重放攻擊。 攻擊者可以通過發送先前攔截的加密密碼來登錄,還是您有諸如時間戳之類的對策?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM