2011-01-22 44 views
2

.NET FrameworkがSHA1などのアルゴリズムを使用してViewStateを暗号化すると聞きました。 SHA1の暗号化アルゴリズムと解読アルゴリズムがViewStateを改ざんすることができますか?
悪意のあるユーザーがSHA1暗号アルゴリズムを研究していれば、そのアルゴリズムを理解し、解読アルゴリズムを開発すればviewstate改ざんの道が開けますか?またはSHA1または他のアルゴリズムは、暗号化と復号化に任意のランダムなトリックを使用しますか?ASP.net ViewStateの暗号化と復号化

+0

SHA1はハッシュアルゴリズムです。非常に多くの場合、ビューステートが改ざんされていないことを確認するために使用できます(さらに、ハッシュにいくつかの秘密のサーバー側文字列が含まれている場合のみ)。 – cHao

答えて

1

暗号化は鍵を意味します。この鍵はサーバー上に保持され、クライアントがそれを見たことがない(他の大きなセキュリティ上の問題がない限り)。そのキーが分からなければ、暗号化されたビューステートを表示することさえできず、ほとんど変更しません。

暗号化がなくても、サーバーはビューステートのハッシュとサーバーだけが知っているキーを生成するように指示できます。そのキーを知らなければ、あなたはまだviewstateを読むことができますが、あなたはそれほど多くの努力なしには編集することができません。

フレームワークが使用する暗号化アルゴリズムやハッシングアルゴリズムが何であれ、改ざんを容易にするためには、十分に壊れている可能性があります。しかし、そうであれば、同じアルゴリズムが数十の場所で使用されるため、かなり早くそのことを知ることができます(よく知られた、よくテストされたアルゴリズムがあります)。

ショートバージョン:改ざんを防ぎたい場合は、正しく設定されていれば、ASP.netに組み込まれているものがうまく動作します。

+0

暗号化と暗号化の違いは何ですか? – ishagoel

+0

@ishagoel:エンコーディングにはキーは含まれておらず、簡単に元に戻せるように設計されています(Base64はエンコーディングの例であり、誰でもデコードして表示できます)。暗号化ではなく、正しい鍵を持っていれば元に戻すことができます。暗号化ハッシュはまったく別物です。それは可逆的ではないように設計されています*。ハッシュでできることのほとんどは、作成したデータを元に戻し、元のハッシュと比較することです。塩では、それは改ざんから守るためにかなりうまく機能します。 – cHao

+0

@well説明!ありがとうございます。私はあなたの答えを受け入れました。 – ishagoel