Ubuntuでフルディスク暗号化(homedir暗号化とは反対)を使用する場合、LUKSを使用したdm-cryptがボリュームの暗号化に使用されます。インストーラー(少なくとも12.04以降)では、パスフレーズまたはキーファイルを使用してセットアップすることを選択できます。この2つの組み合わせを使用したいと思います。どちらでもありませんが、両方が必要です。
どうして?これによりセキュリティが強化されるため(2要素)。 have何かをする必要があり、know何かをアンロックする必要があります。次に、キーファイルを小さなリムーバブルストレージデバイス(USBフラッシュドライブ)に配置し、ブート時にのみプラグインします。結果として、正しいフラッシュドライブに入れる必要がありますおよびルートパーティションのロックを解除するための正しいパスフレーズを提供します。
つまり、言い換えると、外部ドライブのキーファイルが暗号化されているパスフレーズをブート中に求められるようにしたいのです。
それを達成するのに役立つ/usr/share/initramfs-tools/hooks/cryptgnupg
ヘルパースクリプトがありますが、使用方法がわかりません。
混乱を避けるために:私はnotボリュームにロックを解除するために追加キーを追加する方法を求めています。
私は同じことをしますが、さまざまな理由で完全にカスタムInitramfsを使用したため、答えが満足のいくものではないことを恐れています。
Initramfs(およびGnuPG-2
の場合、かなり複雑なもの)に含まれる必要がある追加のバイナリであるGnuPG
の代わりに、私は単に既にあるものを使用しましたそこ。そして、それは明らかにdm-crypt/LUKS
です。
したがって、keyfile
があるとします。ランダムなデータを持つことが望ましい。
# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s
LUKSで暗号化を追加します(お好みの暗号設定を追加してください)。
# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks
WARNING!
========
This will overwrite data on keyfile.luks irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas
これで、キーファイル(512バイト)とkeyfile.luks(何らかの理由でcryptsetupが192k LUKSヘッダーを書き込む必要がある2MB)ができました。とにかくInitramfsは圧縮されるので、それほど悪くはありません(GnuPG
よりも小さいです)。
これで、キーファイルを復号化できます。
# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas
/dev/mapper/lukskey
には512バイトのランダムデータがあります。 (変更したい場合は、ファイルに書き込むことができます。そのため、以前にゼロでファイルを初期化できました。)
# blockdev --getsize64 /dev/mapper/lukskey
512
Initramfsinit
では、それを使用して実際のLUKSボリュームを開くことができます(最初にキーを追加した場合)。
cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up
このアプローチにより、GnuPGは完全に不要になり、さらに、キーの複数のパスフレーズ、選択した暗号など、LUKSのすべての利点が得られます。複数の再試行を伴うニース(ほとんどの場合は通常)パスワードプロンプトは言うまでもありません。