サーバー上のどこかにではなく、暗号化された Cookie にセッション データを保存するように切り替えることを考えています。これにより、各リクエストで使用される帯域幅が増えますが、データベース サーバーの負荷とストレージ スペースが余分に節約されます。
とにかく、RIJNDAEL 256 を使用して Cookie の内容を暗号化する予定です。
function encrypt($text, $key)
{
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$text,MCRYPT_MODE_ECB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND));
}
使用すると、次のようなものが生成されます(表示用にエンコードされたbase64)
print base64_encode(encrypt('text', 'key'));
7s6RyMaYd4yAibXZJ3C8EuBtB4F0qfJ31xu1tXm8Xvw=
1 人のユーザーの Cookie が危険にさらされることは心配していませんが、攻撃者は私がデータに署名するために何を使用しているかを知っているため、攻撃者が を発見し、任意のユーザーの任意のセッションkey
を構築できるのではないかと心配しています。
使用されたパラメータに関連して推定クラッキング時間を検証する方法はありますか? または、使用されるテキストまたはキーのサイズに関連する時間の標準的な尺度はありますか?
RIJNDAEL で安全に使用するには、キー自体が 256 ビットを超える必要があると誰かが言っているのを聞きました。キーを渡さないように、暗号化されたテキストの長さを特定の長さにする必要があるかどうかも疑問に思っています。
通常、データは約 200 文字になります。
a:3{s:7:"user_id";i:345;s:5:"token";s:32:"0c4a14547ad221a5d877c2509b887ee6";s:4:"lang";s:2:"en";}
それでこれは安全ですか?