web-dev-qa-db-ja.com

AES-256 CBCのIVのSHA256?

AES-256 CBCモードのIVを作成する場合、IVはランダムであり、推測できないようにする必要があります。

CでRand()関数を使用し、time(NULL)をシードしてsim乱数を生成すると、それがsha256に渡されます。これは安全なIVですか、それともまだです。種は時だったので脆弱ですか?

IVはそこにのみ存在するので、同じキーで2回暗号化された同じデータは、IVのために異なって出力されるように思えます。

1
dangee1705

Rand()は疑似ランダム関数にすぎないため、一種の予測可能であり、time()は実際には非常に予測可能(つまり、特定の時間枠内の数個の値のみ)であり、予測可能性はSHA-256の出力の割合は、その入力の予測可能性と同じです。攻撃者がシードがどのように構築されたかを知っていれば、結果は基本的に元のRand()とほぼ同じくらい予測可能であることは明らかです。

3
Steffen Ullrich