能否从加密的cookie值中暴力破解出validationKey和decryptionKey?
-
21-08-2019 - |
题
我使用以下代码生成加密令牌:
var ticket = new System.Web.Security.FormsAuthenticationTicket(
2,
"",
DateTime.Now,
DateTime.Now.AddMinutes(10),
false,
"user id here");
var cipherText = System.Web.Security.FormsAuthentication.Encrypt(ticket);
此代码使用 app/web.config 中指定的密钥和算法:
<system.web>
<machineKey validationKey="SOME KEY"
decryptionKey="SOME OTHER KEY"
validation="SHA1" />
</system.web>
现在假设我将由此生成的密文提供给合作伙伴。他是否有能力进行暴力破解:
- 存储在密码中的值(不代表敏感信息的用户 ID,它不会让我太烦恼)
- 用于创建密码的validationKey和decryptionKey的值(这将是灾难性的,因为他将能够生成令牌并冒充任何用户)
我想这两个问题的答案都是肯定的,但是他的机会有多现实?您认为给他密码会对我的系统构成安全威胁吗?预先感谢您的回复。
解决方案
您在这里描述的是一种已知的明文攻击。攻击者学习明文和相应的密文,他的目标是找到密钥。现代密码旨在抵御此类攻击。
事实上,任何现代密码都被设计为能够抵御更强大的攻击,例如选择明文攻击和选择密文攻击。即使允许攻击者选择明文和相应的密文,或者选择任意数量的密文并学习其解密,那么他/她仍然无法学习密钥。
这使得设计新密码变得非常困难。但幸运的是,我们已经有了 AES 等好的密码。
我还应该补充一点,上述所有攻击都假设攻击者知道所使用的密码的所有细节。他唯一不知道的是使用的钥匙。这就是著名的克霍夫原理。
不隶属于 StackOverflow