外付けハードドライブをdm-crypt + luksで暗号化したいのですが、LUKSヘッダーがプレーンテキストで提供しているすべての情報に満足していません。
したがって、LUKSヘッダーと暗号化されたデータを互いに分離したままにしておきたいと思います。
私はこれを手動で達成する方法をすでに知っています:
ドライブがマウントされるたびにluksヘッダーのセクターが上書きされ、それらのセクターが確実に悪くなるのではないかと心配しているため、これはあまり最適ではありません。
もう1つのアプローチは、ヘッダーファイルと暗号化されたluksパーティションを1つの仮想Linuxデバイスにマージし、通常どおりにマウントできるようにすることです。
「1つの仮想デバイスにマージする」とは、ヘッダーが実際にはluksパーティションに書き戻されないことを意味しますが、システムはそれをそのように認識しています。ヘッダーはまだ私のUSBスティックに残っています。
私の唯一の問題は、そのような仮想デバイスを作成する方法がわからないことです。
どんな助けでもいただければ幸いです。
LUKSは、デタッチヘッダーモードで簡単に使用できます。
cryptsetup luksFormat /dev/sda4 --header ~/lukshdr --align-payload 0 --cipher twofish
cryptsetup open /dev/sda4 --header ~/lukshdr mycrypt
cryptsetup luksSuspend mycrypt --header ~/lukshdr
cryptsetup luksResume mycrypt --header ~/lukshdr
ヘッダーファイルは、ブロックデバイスを含め、どこにでも配置できます。
luksFormat
が機能するには、~/lukshdr
のサイズが少なくとも1049600バイトである必要があります。
dd if=/dev/zero bs=1049600 count=1 > ~/lukshdr
lsblk -b
を実行すると、マップされたデバイスのサイズがLUKSデバイスのサイズと正確に等しいことがわかります。ヘッダーやメタデータが隠れている可能性のある場所はありません。
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80026361856 0 disk
├─sda1 8:1 0 254803968 0 part /boot
├─sda2 8:2 0 5999951872 0 part [SWAP]
├─sda3 8:3 0 19999490048 0 part /
└─sda4 8:4 0 53771067392 0 part
└─mycrypt 254:0 0 53771067392 0 crypt /tmp/mnt
実際、基盤となる暗号が壊れていない限り、LUKSデバイスはヘッダーファイルを持っていない人にとってはランダムデータのように見えます。