ASP.NET Identity会话cookie有多安全?

9
当然,cookies可以被窃取并劫持会话,但是(在ASP.NET身份验证中)会话cookie本身的加密有多安全? 是否可以使用现代硬件和一点时间来操纵它?
我问这个问题是因为我想添加一个标识组的声明,但仅当cookie真正安全时才是安全的。否则,攻击者可以注册合法帐户,然后在不窃取密码的情况下破解其他组。

3
请查看这个问题。其中有一条评论:“FormsAuth令牌的全部内容都被加密和签名,包括用户名/用户ID,因此它无法被篡改。”我认为这可能回答了你的问题。 - KevDevMan
有点类似,但也有人批评微软的标准密码哈希,许多人现在认为它不够标准。因此仍然想知道 cookie 是否以强加密方式进行签名和加密。如果攻击者可以在一周内破解它,那就不够安全。 - Benjamin E.
1个回答

13

针对.NET Framework 4及更高版本更新的答案:

machineKey元素用于以下内容:

对表单验证数据和视图状态数据进行加密、解密和验证

默认情况下,它使用AES作为解密算法,并采用最小128位密钥长度。

它还使用HMACSHA256作为默认验证方式,这是SHA-256上的HMAC。 HMAC可以防止长度扩展攻击,这是攻击者以一种使哈希仍然有效的方式附加数据到哈希值的方法。

目前没有已知的对AES-128的实际攻击方法(而192和256可以受到相关密钥攻击的影响),而SHA-256也远未被破解,尽管有一个学术攻击针对它的姐妹算法SHA-1,质疑其碰撞抗性。然而,在身份验证令牌值时,碰撞抗性并不重要,但这是理论上破解预像抗性的一步。因此,您可以放心使用AES-128和HMAC SHA-256来防御攻击。

然而,与任何加密或哈希算法一样,最终取决于你的密钥有多安全。AutoGenerate和IsolateApps设置是可以的,但如果你自己设置,请确保它们由密码学安全的伪随机数生成器(CSPRNG)生成,并且长度为128位。小于此长度意味着你可能会受到暴力攻击的威胁(理论上)。128位意味着即使在分布式暴力攻击下使用世界上所有计算机,也永远无法在你的生命中完成。当然,攻击者可能会通过其他方式获取你的密钥。请保持密钥的安全。

3
我认为 ASP.NET Identity 使用比 ASP.NET 以前更现代的算法和哈希循环次数,因此这个答案可能不再完全准确。 - pwdst

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