cryptoptsとcrypttabの違い

cryptoptsとcrypttabの違い

暗号化されたルートファイルシステムを設定しています。以前はこれを行いましたが、今回はプロセスに慣れるために対称パスワードを含むPGP暗号化キーファイルを使用しています。

暗号化ルート設定が発生しているように見える2つの場所があります。以下のカーネル初期化オプションとcryptoptsinitramfsに何かを書き込む/etc/crypttabために使用されるようです。mkinitramfs

両方の場所を更新するのは少し面倒です。結局、1つの場所で十分であれば、2つの場所に置くことはどういう意味ですか?/etc/crypttabLUKSボリュームがある場合は、異なるフックとスクリプトを使用してinitramfsを異なる方法で作成できるため、物を入れる価値を見てください。

この問題に対して以前に修正された例では、次のパスワードタブがあります。

picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg

おそらくこれはinitramfsに/dev/mmcblk0p2nameを使用するために復号化する必要があることを知らせ、ファイルを使用することを指定し、picryptそれをスクリプトに渡してボリュームのパスワードを生成するようにします。luks/boot/diskkey.gpg/lib/cryptsetup/scripts/decrypt_gnupg

次に、カーネル初期化ラインの暗号化オプションは次のとおりです。

cryptopts=target=picrypt,source=/dev/mmcblk0p2,lvm=pi

/dev/mmcblk0p2もう一度createを再指定してください。この場合、カーネルパラメータで指定されたルートファイルシステムをマウントする前に待たなければならないpicryptcallというLVMボリュームが内部的に存在することを知らせます。piroot=/dev/mapper/pi-root

奇妙なことに、この設定はcrypttabのキーファイルとキースクリプトの引数を無視し、GPG対称キーパスワードの入力を求めずにキーを直接入力するため、機能しません。含めるようにスクリプトを変更しますkeyscriptが、keyfilecryptoptsなぜ必ずこのことをしなければなりませんか?

/etc/crypttabカーネル初期化ラインのすべてを複製せずに、カーネル初期化ラインにこれ​​らすべて(または少なくともほとんど)を含めることができる方法はありますか?すべてを2回変更する必要があるのは少し面白いです。これらのさまざまなソースは、フックの形のcrypttab、cryptsetupの実際の引数の形のcryptoptsなどのさまざまな機能を提供しますか?

答え1

うわー。これらすべてがDebian / stretchでどのように機能するかを理解するのにほぼ2日かかりました(以前はこれをやったことにもかかわらず)。質問を誤って見つけたので、回答を見つけるために回答を開いておきます。

ええ、crypttab(5)オプションはinitramfsまさにあなたが要求したものです:

ファイルシステムの初期化

initramfsフックは、ルートデバイス、リカバリデバイス、および「initramfs」オプションが設定されているすべてのデバイスを処理します。これらのデバイスは、開始のinitramfsステップで処理されます。たとえば、dropbear を使用してリモートのロック解除を許可します。

(信じたり、話したり、記事を読んだり、偶然にこのオプションを見つけました。TODOファイルcryptsetup ソースから。 )

したがって、crypttab行は次のようになります。

picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg,initramfs

もう1つ:cryptsetupモジュールは、「initramfsフェーズでロックを解除する必要があるデバイス(ルートまたはリカバリデバイスなど)がある場合」initramfsイメージにのみ追加されます(参照:cryptroot-conf最近;名前変更ただconf-hook)。ただし、現在この方法は、ルートデバイスがLVMにない場合にのみ(安定して)機能します。 cryptsetupモジュールをinitramfsイメージCRYPTSETUP=yに強制するには/etc/cryptsetup-initramfs/conf-hook

update-initramfs -k all -uそれにもかかわらず、言及されたファイルを変更したら、それを実行する必要があります。

関連情報