周波数分析などの攻撃を防ぐための暗号化では、固有のIVが重要であることを理解しています。質問: AES CBC暗号化の場合、IVの重要性は何ですか? IVの重要性を説明するかなり明確な答えがあります。
IVをクリアテキストで送信する際にセキュリティホールはありますか?または、対称鍵の送信に使用されたものと同じ公開鍵/秘密鍵で暗号化する必要がありますか?
IVを暗号化して送信する必要がある場合は、毎回新しい対称鍵を生成し、IVを鍵の一部と見なしてみませんか?対称鍵の生成にはコストがかかりすぎるということですか?それとも、転送されるデータの量を最小限に抑えるためですか?
シークレットvs.非シークレット初期化ベクトル に対するトップアンサーは次のように述べています。
典型的なキー確立プロトコルでは、両方の当事者がデータの一部を計算することになりますが、両方が知っているのは彼らだけです。 Diffie-Hellman(またはその楕円曲線バリアント)を使用すると、前述の共有データは固定長であり、その値を制御できません(どちらも同じように見えるランダムなビットシーケンスを取得します)。
2つのエンティティが、情報を共有せずに「同じように見えるランダムなビットシーケンス」をどのように導き出すのでしょうか。共有情報が暗号化されて送信されたという前提はありますか?また、共有情報が暗号化されて送信される場合は、IVを暗号化して送信してみませんか?
アプリケーションは対称鍵を安全に転送する必要があるため、IVを鍵自体から分離することは本質的に最適化であるように思われます。それとも私は何かが足りないのですか?
IVをクリアテキストで送信することによるセキュリティホールはありません-これは、ハッシュのソルトをプレーンテキストで保存することに似ています:攻撃者がIV /ソルトを制御できない限り、ランダムである限り、問題。
主な違い初期化ベクトルとキーの違いは、キーは秘密にしておく必要があるのに対し、IVは秘密にしておく必要があるということです。攻撃者は、セキュリティを危険にさらすことなく読み取ることができます。問題の暗号化スキーム。
アイデアは、複数のメッセージに同じキーを使用でき、それぞれに異なる(ランダムな)初期化ベクトルを使用するだけなので、プレーンテキスト間の関係は対応する暗号文に表示されないということです。
とはいえ、Diffie-Hellmanのような、セッションごとに新しい共有シークレットを提供する鍵共有スキームを使用している場合は、それを使用して最初の初期化ベクトルを生成することもできます。これは、初期化ベクトルを直接選択してメッセージとともに送信する場合と比較して、セキュリティ上の利点はあまりありませんが、ランダムなソースから帯域幅を少し節約し、エントロピーを少し節約します。また、パートナーの1つに悪いランダム性ソースがある場合に備えて、IVが少しランダムになります(ただし、この場合、DHは実際には安全ではありません)。
2つのエンティティが、情報を共有せずに「同じように見えるランダムなビットシーケンス」をどのように導き出すのでしょうか。共有情報が暗号化されて送信されたという前提はありますか?また、共有情報が暗号化されて送信される場合は、IVを暗号化して送信してみませんか?
Diffie-Hellmanは、群論的問題に基づいています。イブは、ジェネレーターG
を持つ(巡回)グループg
を知っており、2つの値g^a
(アリスからボブに送信)を確認します。 )およびg^b
(ボブからアリスに送信)。ここで、a
およびb
は、アリスとボブによって選択されたランダムな大きな整数であり、イブや他のパートナーにも知られていません)。その場合、共有秘密は(g^a)^b = g^(a·b) = (g^b)^a
です。明らかに、ボブ(b
を知っている)は秘密を(g^a)^b
として計算できますが、アリス(a
を知っている)は(g^b)^a
を計算できます。イブはどういうわけか、プロトコルを解読するためにこの秘密を導き出す必要があります。
一部のグループでは、これ(計算Diffie-Hellman問題として知られています)は難しい問題のようであり、暗号化でこれらのグループを使用しています。 (元のDHでは、いくつかの大きな有限体の乗法群の素数の部分群を使用します。楕円曲線DHでは、有限体上で楕円曲線群を使用します。他の群も機能します(ただし、一部の群は弱い、例えば、体の加法群では、解くことは簡単です)。
次に、アリスとボブの両方が鍵導出関数を使用して、実際の鍵情報を導出します(つまり、両方向の暗号化鍵、MAC鍵、および開始IV)。