ストリーム暗号が繰り返されるキー攻撃に対して安全であるためには、IVが繰り返されるべきではありません。しかし、SecureRandomには、その点で単純な非セキュアRandomよりも利点がありますか(または、予測できないシーケンスを生成するためだけですか)?
AES CBCモードで固定サイズのメッセージを使用していて、IVごとに新しいランダムを生成すると仮定すると(現在のナノ時間をシードとして使用)、これにより、SecureRandomと比較してIVが繰り返される可能性が高くなりますか?
ストリーム暗号が繰り返されるキー攻撃に対して安全であるためには、IVが繰り返されるべきではありません。しかし、SecureRandomには、その点で単純な非セキュアRandomよりも利点がありますか(または、予測できないシーケンスを生成するためだけですか)?
AES CBCモードで固定サイズのメッセージを使用していて、IVごとに新しいランダムを生成すると仮定すると(現在のナノ時間をシードとして使用)、これにより、SecureRandomと比較してIVが繰り返される可能性が高くなりますか?
IVを生成するために使用する際の最大の問題Random
は、それが繰り返される可能性が高いということではなく、攻撃者が将来のIVを予測でき、これを使用してCBCを攻撃できることです。
ランダムは48ビットキーを使用するため、約2^48値ごとに繰り返されます。これは、すべての可能性long
が生成されるわけではないことを意味します。それはあなたにとって十分にランダムかもしれないし、そうでないかもしれません。SecureRandomの使用が疑わしい場合は、後でいつでも変更できます。
はい、IVは完全にランダムである必要があります。フルランダムを使用しないと、プレーンテキストに関する情報が漏洩する可能性があります。ランダムはプレーンテキストとXORされることを忘れないでください。したがって、IVの構造が予測可能な場合は、暗号化テキストが繰り返され、ECBと同じ方法で情報が漏洩する可能性があります。攻撃者が暗号化されるプレーンテキストに影響を与える可能性がある場合、これはさらに顕著になります。
IV iは通常、予測不可能である必要はありませんが、一度だけ使用する必要があります。これが意味するのは、弱いシードを使用する、または周期が短い単純な乱数ジェネレーターを使用してIVを生成するべきではないということです。
使用されている最強の乱数ジェネレーターは、1秒あたり数十ビットのエントロピーしか生成しません。ほとんどのアルゴリズムは、IVをキーのセカンダリとして扱います。したがって、低速で強力なRNGは、キーと、IV用の高速で長期間のRNGのシードに予約する必要があります。