1

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

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 的值(这将是灾难性的,因为他将能够生成令牌并冒充任何用户)

我想这两个问题的答案都是肯定的,但是他的机会有多现实,你认为给他密码会对我的系统构成安全威胁吗?提前感谢您的回复。

4

1 回答 1

5

您在这里描述的是已知的明文攻击。攻击者学习明文和相应的密文,他的目标是找到密钥。现代密码旨在防止此类攻击。

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

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

我还应该补充一点,上述所有攻击都假设攻击者知道所使用密码的所有细节。他唯一不知道的是使用的钥匙。这就是众所周知的克尔霍夫原理。

于 2009-05-14T08:25:32.773 回答