当然,cookies可以被窃取并劫持会话,但是(在ASP.NET身份验证中)会话cookie本身的加密有多安全? 是否可以使用现代硬件和一点时间来操纵它?
我问这个问题是因为我想添加一个标识组的声明,但仅当cookie真正安全时才是安全的。否则,攻击者可以注册合法帐户,然后在不窃取密码的情况下破解其他组。
我问这个问题是因为我想添加一个标识组的声明,但仅当cookie真正安全时才是安全的。否则,攻击者可以注册合法帐户,然后在不窃取密码的情况下破解其他组。
针对.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位意味着即使在分布式暴力攻击下使用世界上所有计算机,也永远无法在你的生命中完成。当然,攻击者可能会通过其他方式获取你的密钥。请保持密钥的安全。