表单身份验证票据安全吗?

9

当用户基于默认的Forms身份验证方法登录时,服务器会创建一个包含加密数据的Cookie(使用Machine Key作为加密密钥)。

这意味着,如果有人找到/猜测/访问了服务器的Machine Key,那么他就可以登录到Web应用程序中。

我开发了一些应用程序,它们位于4个服务器上。因此,我在machine.config中为所有服务器硬编码了相同的Machine Key,并且不能使用“自动生成”模式。

  1. 是否有可能通过暴力破解Machine Key?
  2. 是否有其他方法?(我不想使用Windows和Passport)
  3. Forms身份验证票证是否足够安全?(例如可接受用于电子银行应用程序)

请记得标记最有帮助的答案 :-) - reach4thelasers
2个回答

20

ASP.NET表单认证票据使用Rijndael算法进行加密。 Rijndael作为DES(数据加密标准)的替代品而创建,它提供了无限的加密数据方式,并且也容易受到暴力破解攻击。 RSA Security在90年代末组织了一些DES挑战赛,旨在挑战团队破解DES以突出其固有的漏洞:http://en.wikipedia.org/wiki/DES_Challenges

相比之下,Rijndael(也称为高级加密标准AES)使用更长的密钥-256位和双重加密算法。 要破解256位的Rijndael密钥(例如ASP.NET机器密钥),需要2^200个操作(约10^60-带有60个零的数),几乎不可能通过暴力破解来破解。 再加上ASP.NET票据的定期更改,以及解密后基本上看起来像一串随机的字母和数字(因此无法确定您已经暴力破解的内容是否正确),您可以放心,没有人很快能够破解您的表单身份验证cookie。

有关Rijndael及其可能的攻击的更多信息,请参见此处:

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


1

加密的第一条规则是密钥影响消息的安全性。如果有人可以访问你的密钥,那么没有任何足够安全的方法。

  1. 我怀疑在合理的时间内暴力破解机器密钥是不可能的。
  2. 我相信表单身份验证是ASP.NET中唯一真正开箱即用的Web解决方案。你可以自己实现,但我怀疑它会更安全。
  3. 足够安全?在非加密连接中,它容易被中间人劫持,并且在关闭事件验证(在Web Forms中)或不使用安全令牌(MVC)时容易受到XSRF攻击的影响。否则,就像所有技术中一样,它对于被发现和修复的漏洞是安全的。

为什么暴力破解机器密钥需要关闭服务器?暴力破解基本上是检查每个可能的组合,以尝试猜测机器密钥。 - reach4thelasers
我认为这需要将 cookie 发送到服务器,是吗?或者不需要吗?无论如何,机器密钥非常长,很难被暴力破解。 - Stilgar
Rijndael只是一种算法,可以在任何计算机上运行。如果您可以通过检查机器密钥的每个可能组合来猜测机器密钥,则可以在任何计算机上破解票证。服务器已经知道了机器密钥,所以在发送票证时无需猜测它。 - reach4thelasers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接