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