web-dev-qa-db-ja.com

dm-crypt + luks:luks暗号化デバイスに保存せずに別のヘッダーを作成できますか?

外付けハードドライブをdm-crypt + luksで暗号化したいのですが、LUKSヘッダーがプレーンテキストで提供しているすべての情報に満足していません。

したがって、LUKSヘッダーと暗号化されたデータを互いに分離したままにしておきたいと思います。

  1. LUKS-Partition(CRYPT)をヘッダーなしで外付けドライブに保存します。
  2. 暗号化されたデータにアクセスしたいときはいつでも、ヘッダーとCRYPTをマージして、通常どおりluksパーティションをマウントします。

私はこれを手動で達成する方法をすでに知っています:

  1. Ddを使用してLUKSヘッダーをバックアップします。
  2. 外付けドライブのLUKSヘッダーを上書きします。
  3. LUKSパーティションをマウントする必要があるときはいつでも、それを書き戻して通常どおりにマウントしてください。
  4. 終了したら、ヘッダーをアンマウントして再度上書きします。

ドライブがマウントされるたびにluksヘッダーのセクターが上書きされ、それらのセクターが確実に悪くなるのではないかと心配しているため、これはあまり最適ではありません。


もう1つのアプローチは、ヘッダーファイルと暗号化されたluksパーティションを1つの仮想Linuxデバイスにマージし、通常どおりにマウントできるようにすることです。

「1つの仮想デバイスにマージする」とは、ヘッダーが実際にはluksパーティションに書き戻されないことを意味しますが、システムはそれをそのように認識しています。ヘッダーはまだ私のUSBスティックに残っています。

私の唯一の問題は、そのような仮想デバイスを作成する方法がわからないことです。

どんな助けでもいただければ幸いです。

3
user1861174

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デバイスはヘッダーファイルを持っていない人にとってはランダムデータのように見えます。

9
mic_e