「システム暗号化の解除」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
Kusanaginoturugi (トーク | 投稿記録) |
||
34行目: | 34行目: | ||
自動的に LUKS1 ヘッダーバージョンを識別し、開いているデバイスの場合は進行しません。プロセスには時間がかかることがありますが、進行状況のメーターが表示されます。問題が発生しなければ、デバイス上のファイルシステムを直接マウントできます。 |
自動的に LUKS1 ヘッダーバージョンを識別し、開いているデバイスの場合は進行しません。プロセスには時間がかかることがありますが、進行状況のメーターが表示されます。問題が発生しなければ、デバイス上のファイルシステムを直接マウントできます。 |
||
− | === |
+ | === LUKS2 デバイスのインプレース復号化 === |
+ | 復号化は、{{ic|cryptsetup}} コマンドを使用して、オフラインまたはオンラインモードのいずれかで行うことができます。{{ic|cryptsetup}} バージョン 2.5.0 (2022) から、LUKS2 は LUKS2 ヘッダーを別のファイルに移行することによって復号化をサポートしています。 |
||
− | Decryption can be done in either offline or online mode, using the {{ic|cryptsetup}} command. Since {{ic|cryptsetup}} version 2.5.0 (2022) LUKS2 supports decryption by migrating LUKS2 header in a separate file. |
||
+ | 復号化の初期段階で、LUKS2 ヘッダーが移行される {{ic|''new_file''}} は存在してはいけません。 |
||
− | The {{ic|''new_file''}} to which the LUKS2 header will be migrated must not exist in the initialization phase of the decryption. |
||
{{bc|# cryptsetup reencrypt --decrypt --header ''new_file'' ''device_path''}} |
{{bc|# cryptsetup reencrypt --decrypt --header ''new_file'' ''device_path''}} |
||
+ | {{Warning|エクスポートされたヘッダーは、インプレース復号化されるデバイスがホストするファイルシステムの外に配置する必要があります。そうでないとデッドロックが発生するか、復号化プロセスが中断された場合に再開することができません。}} |
||
− | {{Warning|The exported header must be placed outside the filesystem hosted on the device that will be in-place decrypted. Otherwise deadlock can occur or in case the decryption process is interrupted it will not be possible to resume it.}} |
||
+ | LUKS2 のインプレース復号化が中断された場合は、次のコマンドを発行するだけです: |
||
− | To resume interrupted LUKS2 in-place decryption just issue following command: |
||
# cryptsetup reencrypt --decrypt --resume-only --header ''migrated_header_file'' ''device_path'' |
# cryptsetup reencrypt --decrypt --resume-only --header ''migrated_header_file'' ''device_path'' |
||
+ | オンライン復号化が成功し、アクティブデバイス上で完了した場合、マップされたデバイスは遅延で非アクティブ化され、使用しなくなったときに自動的に線形マッピングが解除されます。その後、元の {{ic|''device_path''}} をデバイスマッパーマッピングなしで使用できます。 |
||
− | If the decryption was successfully finished on active device (online decryption), the mapped device will be lazy deactivated so that linear mapping is automatically removed when no longer used. Later the original {{ic|''device_path''}} can be used without device mapper mapping. |
||
+ | {{Note|移行されたヘッダーを使用して中断された LUKS2 復号化デバイスは、cryptsetup バージョン < 2.5.0 では再開できません}} |
||
− | {{Note|Device with interrupted LUKS2 decryption using migrated header to a file can not be resumed with cryptsetup version < 2.5.0}} |
||
=== Cleaning up system files === |
=== Cleaning up system files === |
2024年6月27日 (木) 23:06時点における版
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
をデバイスマッパーマッピングなしで使用できます。
Cleaning up system files
Device names and UUIDs may change due to decryption, and you will likely need to update relevant configuration files. The files most likely to need updating are /etc/crypttab
, /etc/fstab
and, if your recently decrypted device appeared on the kernel command line, your bootloader's configuration (e.g, /etc/default/grub
). If you edit the latter, remember to regenerate the grub configuration as described in GRUB.
Removing LUKS via Backup-Format-Restore
Prerequisites
- An encrypted root filesystem you wish to decrypt.
- Enough drive space to store a backup.
- An Arch Linux (or other) live CD/USB.
- A few hours.
Boot into a live environment
Download and burn the latest Arch ISO to a CD or USB, reboot the system, and boot to cd.
Activate partitions
Note about different setups
An example setup is shown here:
NTFS | myvg(lvm) | NTFS | |
Other OS | cryptswap(lv) | cryptroot(lv) | Shared |
luks | luks | ||
swap | root(xfs) |
The grey partition is a frame of reference and can be ignored. The yellow partition will be used as storage space and may be changed at will. The green partitions will be modified. Bold text must match your system's setup.
In the example system:
myvg contains lvs called cryptroot and cryptswap. They are located at /dev/myvg/cryptroot
and /dev/myvg/cryptswap
. Upon boot, LUKS is used along with a few crypttab entries to create /dev/mapper/root
and /dev/mapper/swap
.
Swap will not be unencrypted as part of this guide, as undoing the swap encryption does not require any complex backup or restoration.
The example system is not indicative of all systems. Different filesystems require different tools to effectively backup and restore their data. LVM can be ignored if not used.
Once partitions are located
Load necessary modules. For device mapper/LVM:
# modprobe dm-mod
For LUKS:
# modprobe dm-crypt
Scan for physical, volume and logical volumes:
# pvscan; vgscan; lvscan
Activate the LVM volume group:
# lvchange -ay myvg/cryptroot
Open the encrypted filesystem with LUKS so that it can be read:
# cryptsetup luksOpen /dev/myvg/cryptroot root
Enter password.
Mounting backup space
Only if using NTFS to store the backup, install ntfs-3g.
The next step is important for backup storage.
# mount -t ntfs-3g -o rw /dev/sdXY /mount/point/
or use netcat to store the backup on a remote system.
Backup data
Using xfs_copy:
# xfs_copy -db /dev/mapper/root /mount/point/backup_root.img
Using dd:
# dd if=/dev/mapper/root of=/mount/point/backup_root.img
Undo encryption
This is the point of no return. Make sure that you are ready for this step. If you plan to undo this later, you will have to start almost from scratch.
# cryptsetup luksClose root # lvm lvremove myvg/cryptroot
Restore data
We have to create a new logical volume to house our root filesystem, then we restore our filesystem.
# lvm lvcreate -l 100%FREE -n root myvg # xfs_copy -db /mount/point/backup_root.img /dev/myvg/root
The second drive name is changed now.
Adjust configurations
You need to boot into your system and edit /etc/crypttab
, /etc/mkinitcpio.conf
, /etc/fstab
, and possibly /boot/grub/menu.lst
.