openssl
versionを使用すると、1.0.2m
テストファイルは次のように暗号化されました。
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc
パスワードを入力してください。それが私が望むものです。
今問題は、ファイルを復号化するときに将来このソルトが必要なのでしょうか、それとも別のものが必要なのでしょうか?それとも塩がどこに保存されているのか本当に理解できません。
答え1
ソルト(またはIV、初期化ベクトル)は暗号化をランダム化するためにのみ使用されます。 1つもないと、同じ入力が同じ出力を生成し、情報が漏洩します(つまり、メッセージが同じであるという事実)。パスワードハッシュに関しては「ソルト」と呼ぶことを主に見たようで、暗号ではIVと呼ぶ場合もよく見たようですが、アイデアは同じです。たとえば、参照してください。Salt_(暗号化)そして初期化ベクトルウィキペディアで。crypto.stackexchange.comそしてsecurity.stackexchange.com2つの詳細情報も提供されます。
ソルトは出力ファイルに保存されるため、明示的に保存する必要はありません。代わりにフラグを指定すると、出力ファイルが小さくなることを確認できます-nosalt
。
答え2
ilkkachuの答えは誤解を招く。 SaltとIVは2つの完全に異なる用途を持っています。
これらの目的はリンクされたウィキペディアページに記載されています。
キー派生にはソルトが使用されます。ハッシュは、ユーザーが提供したパスワードから固定長暗号化キーを生成するために使用されます。ソルティングの目的は、同じパスワードを使用せずに同じキーを生成してレインボーテーブル攻撃を防ぐことです。パスワードとソルト、ハッシュを接続します。
初期化ベクトルは様々な用途に使用される。 AESパスワードは、固定長キーと前のプレーンテキストブロックの内容を使用して、固定数のプレーンテキストビット(ブロック)を変換(暗号化)します。最初のブロックは前のブロックがないため、IVとキーを使用して暗号化されます。
ソルトは通常、暗号化されたファイルの先頭に保存されます。それは秘密ではありません。