可以通过加密cookie值的强力来找到validationKey和decryptionKey吗?

时间:2009-05-14 08:14:40

标签: .net cryptography sha1 brute-force

我使用以下代码生成加密令牌:

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>

现在假设我将这样生成的密文发送给合作伙伴。他是否有能力强迫:

  1. 存储在密码中的值(用户ID不代表敏感信息且不会打扰我)
  2. 用于创建密码的validationKey和decryptionKey的值(这将是灾难性的,因为他将能够生成令牌并冒充任何用户)
  3. 我认为这两个问题的答案都是肯定的,但是他的机会是多么现实,你认为给他密码会对我的系统构成安全威胁吗?提前感谢您的回复。

1 个答案:

答案 0 :(得分:5)

你在这里描述的是一种已知的明文攻击。攻击者学习明文和相应的密文,他的目标是找到密钥。现代密码旨在抵御这种攻击。

事实上,任何现代密码都可以抵御更强大的攻击,例如选择的明文攻击和选择的密文攻击。即使攻击者被允许选择明文和相应的密文或选择任意数量的密文并学习解密,他/她仍然无法学习密钥。

这使得设计新密码变得非常困难。但幸运的是,我们已经有了很好的密码,比如AES。

我还应该补充一点,上面的所有攻击都假设攻击者知道所使用的密码的所有细节。他唯一不知道的是使用的钥匙。这被称为Kerkhoff的原则。