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 に答える