9

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

这意味着如果有人找到/猜测/访问服务器的机器密钥,他将登录到 Web 应用程序。

我开发了一些在 4 台服务器上的应用程序。因此,我为 machine.config 中的所有服务器硬编码了相同的机器密钥,我无法使用自动生成模式。

  1. 是否可以暴力破解机器密钥?
  2. 还有其他方法吗?(我不想使用 Windows 和 Passport)
  3. Forms Authentication Ticket 是否足够安全?(即电子银行应用程序可接受)
4

2 回答 2

20

ASP.NET 表单身份验证票证使用 Rijndael 算法进行加密。Rijndael 是作为 DES(数据加密标准)的替代品而创建的,DES 提供了无限的数据加密方式,并且也容易受到暴力攻击。RSA Security 在 90 年代后期组织了许多 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

于 2012-03-26T08:59:33.503 回答
1

加密的第一条规则是消息仅与密钥一样安全。如果有人可以访问您的密钥,则没有足够安全的方法。

  1. 我怀疑是否有可能在任何合理的时间内暴力破解机器密钥。
  2. 我相信 Fomrs Authentication 是 ASP.NET 中开箱即用的唯一真正的 Web 解决方案。您可以实现自己的,但我怀疑它会更安全。
  3. 对什么足够安全?如果您关闭事件验证(在 Web 表单中)或不使用安全令牌 (MVC),它可以被中间人在非加密连接中劫持,并且容易受到 XSRF 攻击。否则,对于在所有技术中一直发现和修复的漏洞利用是安全的。
于 2012-03-26T08:45:51.710 回答