暗号化用のランダム キーとランダム IV をより効率的に生成したいと考えています。しかし、IV としてランダム キーを使用することは実行可能で安全ですか?
2 に答える
できますが、安全ではありません。
通常、iv には暗号的に安全なランダム バイト シーケンスを使用し、暗号化されたデータの前に iv を追加します。これにより、復号化関数は同じ iv を持つことができます。
同じメッセージが同じキーで暗号化されている場合、ランダム iv を使用すると、暗号文が異なります。キーを使用すると、同じ暗号文が許可されます。同じ暗号文を使用すると、重要な情報が得られる場合があります。
セキュリティのために効率を犠牲にするのは得策ではありません。ベンチマーク テストで追加の効率が必要であることが証明されていない場合、それは時期尚早の最適化です。
ドナルド・クヌース:
本当の問題は、プログラマーが効率性を気にするのに、間違った場所とタイミングであまりにも多くの時間を費やしてきたことです。時期尚早の最適化は、プログラミングにおけるすべての悪 (または少なくともその大部分) の根源です。
セキュリティの問題が倍増しています。通常の IV は、通常は暗号文メッセージの先頭に追加して、そのまま送信できます。IV がキーと同じ場合、IV をキーと同じように安全に保つ必要があります。つまり、通常のプリペンディングを行うことはできません。「鍵交換」プロセスに「IV 交換」プロセスを追加する必要があります。
それはすべて余分な作業です。標準の CSPRNG を使用して IV を生成し、それを追加する方が簡単です。