表单身份验证票证是否足够安全?

时间:2012-03-26 08:38:33

标签: asp.net forms-authentication machinekey formsauthenticationticket machine-config

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

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

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

  1. 是否可以暴力破坏机器钥匙?
  2. 还有其他方法吗? (我不想使用Windows和Passport)
  3. 表单身份验证票证足够安全吗? (即电子银行申请可以接受)

2 个答案:

答案 0 :(得分:19)

使用Rijndael算法对ASP.NET表单身份验证票证进行加密。 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 - 10个,具有60个零),几乎不可能发生暴力破解。将其与ASP.NET票据定期更改的事实相结合,并且当解密时基本上看起来像一个随机的字母和数字字符串(因此无法确定您是否已经解密的蛮力是否正确)您可以放心将很快破解您的表单身份验证cookie。

有关Rijndael及其可能的攻击的更多信息:

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

答案 1 :(得分:1)

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

  1. 我怀疑是否有可能在任何合理的时间内强行使用机器钥匙。
  2. 我相信Fomrs身份验证是ASP.NET中唯一真正的Web解决方案。你可以实现自己的,但我怀疑它会更安全。
  3. 足够安全吗?如果您关闭事件验证(在Web窗体中)或不使用安全令牌(MVC),那么中间的人可以通过非加密连接劫持,并且容易受到XSRF攻击。否则,对于在所有技术中始终发现和修复的漏洞利用,它是安全的。