秘密鍵から初期化ベクトルを生成しないでください。初期化ベクトルは、特定のメッセージに対して予測できないものにする必要があります。キー (またはキーの生成に使用されるパスワード) から生成した場合、IV は常に同じになり、その目的が無効になります。
ただし、IV は秘密である必要はありません。保護されていない暗号文で送信することは非常に一般的です。URL に IV を組み込むことは、特定のサーバー側の状態で特定のリンクの IV を追跡しようとするよりもはるかに簡単です。
ソルトと IV には異なる用途がありますが、同様の方法で作用します。
暗号化された「ソルト」は、パスワードベースの鍵導出アルゴリズムで使用されます。認証のためにハッシュされたパスワードを保存することは、この関数の特殊なケースです。ソルトは、同じパスワードで異なるハッシュを生成し、ハッカーが一般的なパスワードのハッシュ値を事前に計算し、「逆引き」インデックスを構築して、特定のパスワードをすばやく発見できるようにする「辞書攻撃」を阻止します。ハッシュ。IVのように、使用される塩は秘密ではありません.
初期化ベクトルは、CBC のようなフィードバック モードで、DES や AES のようなブロック暗号で使用されます。各ブロックは、暗号化されると次のブロックと結合されます。たとえば、CBC では、暗号化の前に、前のブロック暗号文が現在のブロックの平文と XOR 演算されます。IV はランダムに生成され、プロセスをブートストラップするためのダミーの初期ブロックとして機能します。
メッセージごとに異なる IV が選択される (または、少なくとも選択されるべきである) ため、同じメッセージが同じキーで暗号化された場合、結果の暗号文は異なります。その意味で、IV は塩に非常に似ています。暗号ランダム ジェネレーターは、通常、salt または IV の最も簡単で最も安全なソースであるため、それらにも類似点があります。
暗号化は非常に簡単に台無しになります。自分が行っていることに確信が持てない場合は、保護している情報の価値を考慮し、必要なトレーニングや相談を受けるために適切な予算を立てる必要があります。