当然,Cookie可能被盗,会话被劫持,但会话cookie的加密本身(在ASP.NET身份中)有多安全?它可以用现代硬件和一点点时间来操纵吗?
我问是因为我想添加一个标识组的声明,但只有在cookie非常安全的情况下这才是安全的。否则,攻击者可以注册一个合法的帐户,然后在没有窃取密码的情况下进入其他组。
答案 0 :(得分:11)
针对.NET Framework 4及更高版本更新的答案:
machineKey
元素用于:
加密,解密和验证表单身份验证数据 和视图状态数据
使用AES作为默认解密算法,最小密钥长度为128位。
它还使用HMACSHA256
作为验证的默认值,HMAC超过SHA-256。 HMAC阻止length extension attack,这是攻击者将数据附加到具有散列的值的方式,以使散列仍然有效。
对AES-128没有已知的实际攻击(与192和256不同,可能会遇到related key attack),并且SHA-256远未被破坏,尽管有academic attack against its sister SHA-1对其collision resistance提出质疑。在验证令牌值时,碰撞阻力并不重要,但理论上它在打破preimage resistance方面迈出了一步。因此,您可以放心使用AES-128和HMAC SHA-256进行攻击。
但是,与任何加密或散列算法一样,它将归结为密钥的安全性。 AutoGenerate和IsolateApps设置没问题,但是如果您自己设置,请确保它们是由加密安全的伪随机数生成器(CSPRNG)生成的,长度为128位。任何比这更少的东西意味着你可能会受到蛮力攻击(理论上)的影响。 128位意味着即使使用世界上每台计算机对您的密钥进行分布式暴力攻击也无法在您的生命周期内完成。当然,攻击者可能会试图通过其他方式抓住你的密钥来解决这个问题。保持安全。