最初にインタラクティブにパスワードを設定した暗号化ボリュームがあり、パーティションのパスワードが正常に復号化されました。 2つの方法でキーファイルを使用してより多くのキーを追加しました。
cryptsetup --keyfile=passphrase luksAddKey /dev/sdax
cryptsetup --luksAddKey /dev/sdax passphrase
ここで、passphraseはキーを含むファイル、/ dev / sdaxは暗号化されたボリュームです。
次に、次を使用してパスワードが有効であることを確認します。
cat passphrase | cryptsetup --test-passphrase luksOpen /dev/sdax
dd if=passphrase bs=1 count=256 | cryptsetup --test-passphrase luksOpen /dev/sdax
ただし、すべて失敗します。「このパスワードに使用できるキーはありません。」 --key-file オプションを使用する次のコマンドが機能します。
cryptsetup --test-passphrase --key-file passphrase luksOpen /dev/sdax
この時点で、パスワードの内容を送信する方法が固有の作業パスワード(対話型設定)で機能することを確認しようとしました。
echo "manually written working passphrase" > interactive_pass
cat interactive_pass | cryptsetup luksAddKey /dev/sdax
今回は見事に働きました。 2つの方法と2つのキーファイルの違いは何ですか?キーファイルで追加されたパスワードを使用できるように、ファイルの内容をパイプする最初の方法が必要です。これは、crypttabでスクリプトを使用するときに可能な唯一の方法のようです。可能ですか?
答え1
cryptsetup
これについてはマニュアルページで詳しく説明されていますNOTES ON PASSPHRASE PROCESSING FOR LUKS
。改行を含めるかどうか、さまざまなサイズ制限(たとえば、インタラクティブなパスワードフレーズの場合は512バイト、チェックcryptsetup --help
)など、いくつかの違いがあります。
この特別な面倒を避けるために、端末の対話型cryptsetupプロンプトに入力するときにも使用できるキーファイルを作成することをお勧めします。つまり、キーファイルはプレーンテキスト文字列でなければならず、最後に改行文字を含めないでください。 (echo -n
またはを使用してくださいprintf "%s"
。)
たとえば、これを使用してpwgen
64文字のパスワードを生成しkeyfile.txt
たり、緊急時に手動で入力したりできます。
$ echo -n $(pwgen 64 1) | tee keyfile.txt
Aish6shaejongi9yug3quij7aijop7SieTh7ierahngaem8iov5isho5dae0pisu
これらのキーファイルの場合に渡す方法は重要ではありませんcryptsetup
。無効なキーボードレイアウトで入力した場合は例外です。キーボードレイアウトに問題があると予想される場合、パスワードを2回追加できます。したがって、LUKSはそのうちのどれも受け入れるでしょう。
これはキーファイルを使用するときに特に重要です/dev/urandom
。間違った方法で使用すると、処理が早く中断される可能性があり(任意の改行が表示され)、パスワードが思ったよりもはるかに短くなる可能性があります。
答え2
標準入力にパスワードを渡すと、cryptsetupは入力行を読み取り、行末と後続のすべての行にある改行文字を削除します。
ファイルからパスワードを渡すと、--key-file
そのファイルの内容全体が使用されます。ファイルに改行文字が含まれている場合、パスワードは標準入力に渡されたパスワードと同じにすることはできません。
答え3
このオプションを使用する必要があります-h
。パスワードはキーファイルとして使用される前にハッシュされます。これにより、数文字から256ビットまたは512ビットに切り替えることができます。したがって、luksFormatで使用するオプションとロック解除方法に従って、-h plain
または他のパラメータを指定する必要があります。