0

ブロックストレージデバイスの LUKS ヘッダーの正確な開始バイトと正確な終了バイトをプログラムで特定するにはどうすればよいですか?

フル ディスク暗号化 (FDE) に Linux Unified Key Setup (LUKS) を使用しているため、ドライブ上のすべてのデータは、パスフレーズから派生したものではない強力なマスター キーを使用して暗号化されています。パニック/緊急シャットダウン状況でドライブをワイプします (つまり、誰かがあなたのラップトップを物理的に盗んでいます)。

1000T ドライブがあり、緊急シナリオで時間が短すぎて (~30 秒)、ドライブを実際にランダムなバイトで満たすことができないとします。代わりに、ヘッダー (マスター キーとソルトを含むキースロットを含む) が失われると、ドライブ上のすべてのデータが無価値になるため、ヘッダーを上書きしたいと思います。 .

LUKS ヘッダーの開始バイトと終了バイトをプログラムで安全に決定して、何を上書きすればよいかを知るにはどうすればよいですか?

注: 提供されるソリューションは、 LUKS1 (2014 年にリリース) とLUKS2 (2018 年にリリース)の両方で有効である必要があります。

LUKS1 では、開始が 0 であり、終了はpayload-offsetコンテナーのバイナリ ヘッダーのフィールドに 512 を掛けることで決定されることがわかりました。たとえば、

root@disp4117:~# hexdump -Cs 6 -n 2 luksVol1
00000006  00 01                                             |..|
00000008
root@disp4117:~# hexdump -Cs 104 -n 4 luksVol1
00000068  00 00 10 00                                       |....|
0000006c
root@disp4117:~# 

この場合、LUKS1 ヘッダーは byte 4096 * 512=で終了します2097152

LUKS2 では、LUKS ヘッダーの JSON メタデータ オブジェクトを解析する必要があるため、はるかに複雑です。

4

2 に答える 2