9

當用戶根據默認的Forms身份驗證方法登錄時,服務器將創建一個包含加密數據的Cookie(使用Machine Key作爲加密密鑰)。表單身份驗證票證足夠安全嗎?

這意味着如果有人發現/猜測/訪問服務器的機器密鑰,他將登錄到Web應用程序。

我開發了一些在4臺服務器上的應用程序。因此,我對machine.config中的所有服務器硬編碼了相同的Machine Key,並且我無法使用Auto Generate模式。

  1. 是否有可能暴力破解機器鑰匙?
  2. 還有其他方法嗎? (我不想使用Windows和Passport)
  3. 並且Forms Authentication Ticket足夠安全嗎? (即可用於電子銀行應用)
+0

要記得標記,幫助最:-) – reach4thelasers 2012-03-27 09:34:25

回答

18

ASP.NET表單認證票據使用Rijndael算法加密。 Rijndael被創建爲DES(數據加密標準)的替代品,它提供了無限制的數據加密方式,同時也容易受到強力攻擊。在90年代末期,RSA Security組織了一系列DES挑戰賽,以挑戰團隊破解DES以突出其固有的漏洞:http://en.wikipedia.org/wiki/DES_Challenges

通過比較Rijndael(也稱爲高級加密標準AES)使用更長的密鑰 - 256位和一個雙重加密算法。破解256位Rijndael密鑰(如ASP.NET機器密鑰)需要2^200次操作(大約10^60 - 10個60個零),幾乎不可能發生暴力破解。結合ASP.NET票證定期更改以及解密基本上看起來像一串隨機字母和數字這樣的事實(因此無法確定您解密的暴力破解是否正確),您可以放心,沒有人將很快破解你的表單身份驗證cookie。關於Rijndael算法及其可能的攻擊這裏

更多信息:

http://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Known_attacks

1

加密的第一條規則是消息只與密鑰一樣安全。如果某人有權訪問您的密鑰,則沒有足夠的安全方法。

  1. 我懷疑是否可以在任何合理的時間蠻力機器鑰匙。
  2. 我相信Fomrs身份驗證是ASP.NET中唯一真正的Web解決方案。你可以實現你自己的,但我懷疑它會更安全。
  3. 足夠安全嗎?如果關閉事件驗證(在Web窗體中)或不使用安全令牌(MVC),它可被非加密連接中的人劫持,並容易受到XSRF攻擊。否則,對於在所有技術中始終發現和固定的漏洞利用來說,它是安全的。
+0

答案爲什麼暴力破解機鍵需要將服務器放倒?蠻力基本上是檢查每個可能的組合來嘗試猜測機器的關鍵。 – reach4thelasers 2012-03-26 09:01:39

+0

我相信這將需要發送cookie到服務器?或不?無論如何,機器的鑰匙非常長,不能輕易被強行壓制。 – Stilgar 2012-03-26 09:04:09

+0

Rijndael只是一種算法,它可以在任何機器上運行。如果您可以通過檢查機器密鑰的每種可能的組合來猜測機器密鑰,那麼您可以在任何計算機上破解該機票。服務器已經知道機器密鑰,所以當票據被髮回時它不需要猜測它。 – reach4thelasers 2012-03-26 09:15:29