LUKS 暗号化した DVD-R に GPG マスターキーを入れた方法
背景
かなり変態的なことをしているのでまたやるとき (ほんまか?) に忘れないように.
注意
これはあんまりおすすめしなくて理由としてはとてもだるいということ, 資料がほとんどないこと, DVD-R でやっていることなど色々あります.
あと, この文章が正確かどうか一切保証しません.
必要なもの
未使用の DVD-R (必須)
ここでいう未使用はフォーマットなど一切してないものです.
一度でも使用してたらアウトです諦めてください (マジです)
今回ははっきり言って RW の方が楽だとは思います.
光学ディスク (必須)
DVD 保存用の不織布など
Linux 環境
自分は Arch Linux でやりました
事前準備
Arch Linux の説明ですが
sudo pacman -Syu gnupg pcsclite ccid hopenpgp-tools yubikey-personalization で GPG に関する必要なもののパッケージをインストール
sudo pacman -Syu dvd+rw-tools で DVD-R に書き込みするツールのインストール
やり方
<mount_name> -> LUKS の一時的マウント名
<loopN> -> ループバックデバイスの名前, N は自然数 e.g.) /dev/loop1
0. GPG で鍵を作るまでは参考 1 の Revocation certificate まで一緒なのでそこまでやる
1. truncate -s <任意のサイズ> image.iso で ISO ファイルを作成
自分は 3400M ほどにしたけど書き込みに時間かかるのと鍵自体がそこまで大きくないので 100M ぐらいで十分だと思います
2. sudo losetup -f image.iso で ISO ファイルをループバックデバイスに設定する
設定したループバックデバイスは losetup -l で見ることが可能
3. sudo cryptsetup luksFormat <loopN> でループバックデバイスを LUKS フォーマット
4. sudo cryptsetup luksOpen <loopN> <mount_name> で LUKS フォーマットしたデバイスを開く (/dev に登録されます)
/dev/mapper/<mount_name> にデバイスとして登録されています.
5. sudo mkudffs --label='<ラベル名>' /dev/mapper/<mount_name> でデバイスを UDF ファイルシステムでフォーマット
もしエラーはいたら reboot してください (特にカーネルアップデートとかあったとき)
理由は確か UDF に関するモジュールがおかしくなる感じです (正確には忘れました, ごめんなさい)
6. sudo mkdir <マウント先> でマウント用ディレクトリの作成
7. sudo mount -t udf /dev/mapper/<mount_name> <マウント先> で LUKS デバイスを UDF でマウント
8. sudo cp -avi <マスターキー作成元> <マウント先> で マスターキーのディレクトリをマウント先にコピー
参考 1 では $GNUPGHOME(=(mktemp -p)) が作成元になっています (安全性重視しているため)
9. sudo umount <マウント先> でアンマウント
10. sudo cryptsetup luksClose <mount_name> で LUKS デバイスを閉じる
11. sudo losetup -d /dev/<loopN> でループバックデバイスの削除
12. growisofs -dvd-compat -Z /dev/sr0=image.iso でDVD-R にマスターキーが入った ISO を焼く
13. これで, DVD-R に GPG マスターキーを LUKS 暗号化して入れることができました.
取り出す際は,
sudo losetup -f /dev/sr0
sudo cryptsetup -r luksOpen /dev/<loopN> <mount_name>
sudo mount -t udf -o ro /dev/mapper/<mount_name> <マウント先>
終わった後は
sudo umount /dev/mapper/<mount_name>
sudo cryptsetup luksClose <mount_name>
sudo losetup -d /dev/<loopN>
みたいな感じでやってください (もう疲れました)
参考