0

重要な情報を Cookie に保存してはならないという事実以外に、Cookie の内容を暗号化するためにどのような暗号化方法を使用することをお勧めしますか?

重要なことの 1 つは、Cookie が保持できるデータは非常に多く (4k だと思いますか?)、暗号化アルゴリズムがコンテンツのサイズを問題になるほど大きくしてはならないということです。

現在、Cookie には以下が保存されています。

WebsiteId (integer value
Name      varchar(50)
Country   varchar(50)
4

1 に答える 1

6

データを暗号化するのではなく、データが改ざんされるのを実際に防ぎたいようです。簡単な方法の 1 つは、HMACを使用することです。基本的に、サーバー シークレットがあり、サーバー シークレットを使用してデータをハッシュし、ハッシュされた出力を Cookie に入れます。それを検証するには、Cookie からハッシュを削除し、サーバー シークレットを使用して残りのデータのハッシュを計算し、Cookie のハッシュと照合します。攻撃者はサーバーの秘密を知らないため、正しいハッシュを計算できないため、データを改ざんすることはできません。

したがって、たとえば、データが「foo=bar&baz=qux」の場合、「foo=bar&baz=qux」の安全なハッシュを計算し、「EN0RmBxNGyo」と言って、Cookie を「foo=bar&baz=qux&hash=EN0RmBxNGyo」に設定します。 "。次に、Cookie を取得したら、ハッシュを削除して "foo=bar&baz=qux" を取得し、そのハッシュを計算します。再び「EN0RmBxNGyo」を取得します。これは Cookie のハッシュと一致するため、Cookie を受け入れます。

攻撃者が「foo=bar&baz=qux」を変更すると、ハッシュが一致せず、Cookie が拒否されます。ハッシュの計算に使用されたサーバーの秘密を知らないため、変更されたデータに対応するハッシュを計算できません。

有能な暗号技術者に実装をレビューしてもらう必要があることに注意してください。実装が不十分な HMAC は、長さ拡張攻撃に対して脆弱である可能性があります.Flickr が困難な方法を発見したという事実.

于 2013-09-27T20:37:29.713 に答える