システム暗号化の解除
dm-crypt と LUKSを使用してシステム暗号化を解除します。
目次
LUKS暗号化のインプレース解除
概要
データをバックアップして、再フォーマットされたデバイスに復元するほど安全ではありませんが、cryptsetup はデバイスから LUKS 暗号化をインプレースで永久に解除することを可能にします。例えば、LUKS 暗号化されたパーティションの中に ext4 ファイルシステムが存在する場合、インプレース復号化を行うと LUKS シグネチャが削除され、パーティション上に直接 ext4 ファイルシステムが配置され、直接マウントできるようになります。何も問題が発生しなければ、ファイルシステム内のファイルはそのまま維持されます。cryptsetup のドキュメントで使用されている用語は「復号化」とされています。
cryptsetup-reencrypt(8) マニュアルを参照して、--decrypt
オプションについて確認してください。
LUKS1 デバイスの非破壊オフライン復号化は、2012年にリリースされた cryptsetup
バージョン 1.5.0 から利用可能になりました。LUKS1の復号化はオフラインモードでのみサポートされています。
LUKS2 デバイスの場合、オフラインおよびオンライン(アンマウント不要)の復号化がサポートされています。
LUKS1 デバイスのインプレース復号化
LUKS1 デバイスの復号化はオフラインモードで行われます。つまり、開いてマウントしてはいけません。システムドライブを復号化したい場合は、USB ライブ環境で再起動してください。それ以外の場合は、unmount
に続いて cryptsetup close dm-name
を使用してください。
まず、blkid
または lsblk
を使用して device_path を特定します。
次に、以下のコマンドで復号化を実行します:
# cryptsetup reencrypt --decrypt device_path Enter any existing passphrase: Finished, time 02m05s, 19 GiB written, speed 162.6 MiB/s
自動的に LUKS1 ヘッダーバージョンを識別し、開いているデバイスの場合は進行しません。プロセスには時間がかかることがありますが、進行状況のメーターが表示されます。問題が発生しなければ、デバイス上のファイルシステムを直接マウントできます。
LUKS2 デバイスのインプレース復号化
復号化は、cryptsetup
コマンドを使用して、オフラインまたはオンラインモードのいずれかで行うことができます。cryptsetup
バージョン 2.5.0 (2022) から、LUKS2 は LUKS2 ヘッダーを別のファイルに移行することによって復号化をサポートしています。
復号化の初期段階で、LUKS2 ヘッダーが移行される new_file
は存在してはいけません。
# cryptsetup reencrypt --decrypt --header new_file device_path
LUKS2 のインプレース復号化が中断された場合は、次のコマンドを発行するだけです:
# cryptsetup reencrypt --decrypt --resume-only --header migrated_header_file device_path
オンライン復号化が成功し、アクティブデバイス上で完了した場合、マップされたデバイスは遅延で非アクティブ化され、使用しなくなったときに自動的に線形マッピングが解除されます。その後、元の device_path
をデバイスマッパーマッピングなしで使用できます。
システムファイルのクリーニング
復号化によりデバイス名や UUID が変更される可能性があり、関連する設定ファイルを更新する必要があります。更新が必要なファイルとしては、/etc/crypttab
, /etc/fstab
, および、最近復号化されたデバイスがカーネルコマンドライン上に表示された場合は、ブートローダーの設定(例:/etc/default/grub
)があります。後者を編集する場合は、GRUBに記載されている通りに grub 設定を再生成することを忘れないでください。
バックアップ-フォーマット-復元による LUKS の削除
必要条件
- 復号化したい暗号化されたルートファイルシステム。
- バックアップを保存するための十分なドライブスペース。
- Arch Linux(またはその他の)ライブCD/USB。
- 数時間。
ライブ環境にブート
最新の Arch ISO を CD または USB にダウンロードして焼き、システムを再起動し、cd からブートします。
パーティションのアクティブ化
異なるセットアップに関する注記
ここに示される例のセットアップは以下のとおりです:
NTFS | myvg(lvm) | NTFS | |
Other OS | cryptswap(lv) | cryptroot(lv) | Shared |
luks | luks | ||
swap | root(xfs) |
グレーのパーティションは参照枠として無視できます。 黄色のパーティションはストレージスペースとして使用され、必要に応じて変更可能です。 緑のパーティションは変更されます。太字のテキストはシステムの設定に合わせてください。
例のシステムでは:
myvg には cryptroot と cryptswap と呼ばれる lvs が含まれています。これらは /dev/myvg/cryptroot
と /dev/myvg/cryptswap
に位置しています。起動時に、LUKS といくつかの crypttab エントリを使用して /dev/mapper/root
と /dev/mapper/swap
を作成します。
このガイドの一環として、スワップの暗号化は解除されません。スワップの暗号化を解除するには複雑なバックアップや復元は必要ありません。
例のシステムはすべてのシステムを示すものではありません。異なるファイルシステムはデータを効果的にバックアップおよび復元するために異なるツールを必要とします。LVM は使用されていない場合は無視できます。
パーティションが特定されたら
必要なモジュールをロードします。デバイスマッパー/LVM の場合:
# modprobe dm-mod
LUKS の場合:
# modprobe dm-crypt
物理ボリューム、ボリュームグループ、および論理ボリュームをスキャンします:
# pvscan; vgscan; lvscan
LVM ボリュームグループをアクティブにします:
# lvchange -ay myvg/cryptroot
暗号化されたファイルシステムを LUKS で開き、読み取り可能にします:
# cryptsetup luksOpen /dev/myvg/cryptroot root
パスワードを入力します。
バックアップスペースのマウント
バックアップに NTFS を使用する場合のみ、ntfs-3g をインストールします。
バックアップストレージの次のステップが重要です。
# mount -t ntfs-3g -o rw /dev/sdXY /mount/point/
または、バックアップをリモートシステムに保存するために netcat を使用します。
データのバックアップ
xfs_copy を使用して:
# xfs_copy -db /dev/mapper/root /mount/point/backup_root.img
dd を使用して:
# dd if=/dev/mapper/root of=/mount/point/backup_root.img
暗号化の解除
これは戻ることのできないポイントです。このステップに進む準備ができていることを確認してください。後でこれを元に戻す計画がある場合、ほぼ一から始めなければなりません。
# cryptsetup luksClose root # lvm lvremove myvg/cryptroot
データの復元
新しい論理ボリュームを作成してルートファイルシステムを収容し、その後ファイルシステムを復元します。
# lvm lvcreate -l 100%FREE -n root myvg # xfs_copy -db /mount/point/backup_root.img /dev/myvg/root
第二のドライブ名が変更されます。
設定の調整
システムにブートして、/etc/crypttab
, /etc/mkinitcpio.conf
, /etc/fstab
, および場合によっては /boot/grub/menu.lst
を編集する必要があります。