閉じる

Debianでディスクを暗号化する方法

ノートパソコンや外付けHDD・SSDを紛失したとき、ログインパスワードだけではディスクを取り外して読み取られる危険を防げません。Debianでは、LUKSとdm-cryptを使って保存データを暗号化できます。この記事では、Debianのインストール時にシステム領域を暗号化する方法と、既存の外付けディスクをLUKS2で暗号化する方法を、注意点や確認手順を含めて解説します。

対象:Debian 13.6(trixie)/Debian 12.15(bookworm) 最終確認:

最初に結論
  • これからDebianをインストールする場合は、インストーラーの「ディスク全体を使い暗号化LVMをセットアップする」が最も簡単です。
  • すでにDebianが入っているシステムディスクは、重要データをバックアップしてから暗号化構成で再インストールする方法が安全です。
  • 外付けHDD・SSDやデータ用パーティションは、cryptsetupでLUKS2形式にできます。
  • 暗号化を解除するパスフレーズを忘れ、ほかの有効なキーもない場合、データは原則として復旧できません。
  • 暗号化は盗難時の読み取り対策であり、故障・誤削除・ランサムウェアに備えるバックアップの代わりにはなりません。
作業前に必ずバックアップしてください

インストーラーの暗号化LVMは選択したディスクのデータを消去します。また、cryptsetup luksFormatは指定したパーティションを新しい暗号化領域として初期化します。デバイス名を1文字間違えるだけで別のディスクを失う可能性があります。必要なデータを別の物理媒体へコピーし、実際に開けることを確認してから進めてください。

目的に合う暗号化方法を選ぶ

「ディスクを暗号化する」といっても、Debianを入れる内蔵SSDと、すでにデータが入っている外付けHDDでは適した方法が異なります。最初に次の表で判断してください。

目的・現在の状態 適した方法 データの扱い 難易度
これからDebianを新規インストールする Debian Installerの暗号化LVM 選択したディスクを消去 低い
既存のDebianシステム全体を暗号化したい バックアップ後、暗号化LVMで再インストール バックアップと復元が必要 中程度
外付けHDD・SSD、USBメモリーを暗号化したい cryptsetupでLUKS2を作成 対象パーティションを消去 中程度
ディスク内の一部ファイルだけを保護したい 暗号化された専用ボリュームや別のファイル単位暗号化を検討 方式によって異なる 中~高
暗号化済みディスクのパスフレーズを変更したい cryptsetup luksAddKeyで新しいキーを追加してから古いキーを削除 通常はデータを再暗号化しない 中程度
初心者におすすめの選択

内蔵ディスク全体を保護するなら、Debianのインストール時に暗号化LVMを選びます。ルート領域、ホーム領域、スワップをまとめて暗号化し、起動に必要な設定もインストーラーが自動で行います。

LUKSによるディスク暗号化の仕組み

Debianで一般的に使われるのは、Linuxカーネルのdm-cryptと、暗号化ボリュームの標準形式であるLUKSです。LUKSには暗号化方式、暗号化されたボリュームキー、複数のキースロットなどを保存するヘッダーがあります。

  1. 電源が切れている間、LUKS領域の内容は暗号文として保存されています。
  2. 起動時または接続時に正しいパスフレーズを入力します。
  3. /dev/mapper/名前という、復号後の仮想デバイスが作られます。
  4. ファイルシステムは、その仮想デバイス上にマウントされます。
  5. 閉じると暗号鍵がメモリーから除かれ、元のディスクは再び読めない状態になります。
Debian Installerが作成する暗号化ディスク構成の概念図 EFIとbootは暗号化領域の外にあり、LUKS領域の内側にLVM、ルート、ホーム、スワップが配置される。 内蔵SSD / NVMe EFI /boot/efi 暗号化されない /boot カーネル 暗号化されない LUKS暗号化領域 LVM / /home swap 起動時にパスフレーズで解除
標準的な暗号化LVMでは、ルート・ホーム・スワップがLUKS領域内に入り、起動に必要な/bootとEFIシステムパーティションは外側に残ります。
「ディスク全体の暗号化」という表現について

Debian Installerの標準的な暗号化LVMでは、ユーザーデータやシステム本体は暗号化されますが、起動に必要な/bootと、UEFI環境のEFIシステムパーティションは通常暗号化されません。そのため、厳密にはディスク上の全セクターが暗号化される構成ではありません。

暗号化で守れるもの・守れないもの

状況 暗号化の効果 補足
電源を切ったPCや外付けSSDが盗まれた 効果が高い 強いパスフレーズを使い、暗号化領域が閉じていれば内容を読み取りにくくできる
ディスクを取り外して別のPCへ接続された 効果が高い Linuxのファイル権限を回避されてもLUKSの解除が必要
ログイン中・暗号化解除中のPCを操作された 限定的 開いているファイルは通常どおり読めるため、画面ロックや物理管理も必要
マルウェアや遠隔操作に侵入された 原則として防げない OSが暗号化領域を開いている間は、アプリもデータへアクセスできる
ファイルを誤削除した、SSDが故障した 防げない 別媒体へのバックアップが必要
弱いパスフレーズを総当たりされた 強度に依存 名前、生年月日、短い単語、使い回しを避ける
/bootを改ざんされた 標準構成だけでは完全に防げない Secure Boot、ファームウェアの保護、端末の物理管理は別の対策

暗号化する前の準備

必要なデータを別媒体へバックアップする

文書、写真、ブラウザーのデータ、SSH鍵、仮想マシン、メール、アプリの設定などを外付けHDD・SSDやNASへ保存します。コピー後は、別のPCまたはライブ環境から数個のファイルを実際に開き、バックアップが読めることを確認してください。

暗号化対象と同じディスク内のコピーはバックアップになりません

同じSSDの別パーティションへコピーしても、インストール時のディスク選択ミスや物理故障で一緒に失われます。暗号化対象から取り外せる別の物理媒体を使用してください。

接続中のディスクを記録する

現在のDebianを使える場合は、作業前に次のコマンドでディスクの名前、容量、型番、ファイルシステム、マウント先を確認します。

lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,MOUNTPOINTS,MODEL
sudo blkid

内蔵NVMe SSDは/dev/nvme0n1、SATAディスクやUSBディスクは/dev/sda、/dev/sdbなどと表示されることがあります。ただし順番は接続状態によって変わるため、名前だけで判断せず、必ず容量と型番を照合します。

不要な外付けディスクを取り外す

インストール中に選び間違えないよう、インストールUSB、バックアップに必要な媒体、キーボードなどを除き、暗号化対象ではない外付けHDD・SSDやUSBメモリーを取り外します。

パスフレーズを決める

LUKSのパスフレーズは、ログインパスワードとは別に設定できます。推測されにくく、十分に長いものを使用してください。複数の無関係な単語、数字、記号を組み合わせた長いパスフレーズにすると、短く複雑な文字列より覚えやすくできます。

  • 16文字以上を一つの目安にし、長さを優先する
  • 氏名、生年月日、電話番号、端末名、一般的な短い単語を使わない
  • ほかのサービスやDebianのログインパスワードと使い回さない
  • 起動前の入力環境でも確実に打てる7-bit ASCIIの英数字・記号を使う
  • 日本語入力を必要とする文字や、配列によって位置が大きく変わる記号だけに依存しない
キーボード配列を必ず確認してください

インストール時と起動時で日本語配列・英語配列の認識が違うと、同じつもりで入力しても別の文字列になります。Debianの公式インストールガイドも、暗号化パスフレーズを入力する前にキーボードが期待どおりの文字を生成するか確認するよう案内しています。

電源と時間を確保する

ノートパソコンはACアダプターへ接続します。Debian Installerの暗号化LVMでは、暗号化領域を作成する前にランダムデータを書き込む処理が行われるため、ディスク容量や速度によっては長時間かかります。処理中に電源を切らないでください。

  • 重要データを別の物理媒体へバックアップした
  • バックアップしたファイルを実際に開いて確認した
  • 暗号化対象のディスク容量と型番を記録した
  • 対象外の外付けディスクを取り外した
  • 長く推測されにくいパスフレーズを用意した
  • ノートパソコンをACアダプターへ接続した
  • DebianのインストールUSBを用意した

インストール時にシステムディスクを暗号化する

ここではDebian 13の標準インストーラーを例にします。Debian 12でも基本的な流れは同じです。画面の表記は、インストーラーの種類や翻訳の更新によって多少異なる場合があります。

1Debian Installerを起動する

インストールUSBからPCを起動し、最初のメニューで「Graphical install」または「Install」を選びます。言語、場所、キーボード、ネットワーク、ユーザーなどを設定し、「ディスクのパーティショニング」まで進めます。

2暗号化LVMを選ぶ

パーティショニング方法では、「ガイド-ディスク全体を使い暗号化LVMをセットアップする」を選びます。暗号化なしの「ディスク全体を使う」や、通常の「LVMをセットアップする」と間違えないようにしてください。

Debian Installerのパーティショニング方法選択画面 ガイド-ディスク全体を使い暗号化LVMをセットアップする、が選択されている。 ディスクのパーティショニング パーティショニングの方法: ガイド-ディスク全体を使う ガイド-ディスク全体を使いLVMをセットアップする ガイド-ディスク全体を使い暗号化LVMをセットアップする 手動 戻る 続ける
「暗号化LVM」と書かれた項目を選びます。選択したディスクの既存データは消去されます。

3暗号化するディスクを選ぶ

一覧に表示されたディスクの容量と型番を確認し、Debianをインストールする内蔵HDD・SSDを選択します。/dev/sdaや/dev/nvme0n1という名前だけで決めないでください。

ここで選んだディスクのデータは失われます

Windowsとのデュアルブート環境で「ディスク全体」を選ぶと、同じディスク上のWindows領域も削除されます。Windowsを残す場合は空き領域を使う手動構成が必要です。操作に自信がなければ、別のディスクへDebianをインストールしてください。

Debian Installerの暗号化対象ディスク選択画面 512.1GBのNVMe SSDが選択され、容量と型番を確認する箇所が示されている。 ディスクのパーティショニング パーティショニングするディスクを選択してください: SCSI1 (0,0,0) (nvme0n1) – 512.1 GB NVMe SSD SCSI2 (0,0,0) (sda) – 2.0 TB External HDD 容量・接続方式・型番を記録と照合する 外付けバックアップディスクを選ばない 戻る 続ける
ディスク名に加えて、容量と型番を照合します。バックアップ用ディスクは事前に取り外しておくと安全です。

4パーティション構成を選ぶ

初心者で特別な理由がなければ、「すべてのファイルを1つのパーティションに(初心者ユーザーには推奨)」を選びます。/homeを分ける構成を選んでも、通常はどちらも暗号化LVMの内側へ作られます。

構成 向いている使い方 注意点
すべてのファイルを1つのパーティションに 一般的なデスクトップ、初心者 容量配分で迷いにくい
/homeを分ける ユーザーデータとシステム領域を分けたい 各論理ボリュームの容量配分が必要
/home、/var、/tmpを分ける 役割が明確なサーバー、高度な管理 容量不足が特定領域だけで起きる可能性がある

5ディスクへの変更を確認する

暗号化LVMを構成するため、パーティションテーブルへ変更を書き込む確認が表示されます。対象ディスクが正しいことと、バックアップ済みであることを再確認してから「はい」を選びます。この段階以降、変更を簡単には元に戻せません。

6暗号化領域の消去処理を待つ

インストーラーは暗号化領域へランダムデータを書き込みます。これは使用中の場所を判別しにくくし、以前のデータの痕跡を消しやすくする処理です。大容量HDDでは長時間かかる場合があります。

進捗が遅くても電源を切らないでください

残り時間が増減したり、しばらく同じ割合に見えたりすることがあります。ディスクアクセスが続いている間は待ちます。明らかな入出力エラーが表示された場合は、ディスクの健康状態も確認してください。

7暗号化パスフレーズを2回入力する

用意したパスフレーズを入力し、確認欄にも同じ内容を入力します。入力文字は画面に表示されないか、黒丸で表示されます。Caps Lock、Num Lock、キーボード配列を確認してください。

Debian Installerの暗号化パスフレーズ入力画面 暗号化パスフレーズの入力欄と、キーボード配列を確認する注意が表示されている。 暗号化ボリュームの設定 暗号化パスフレーズ: ●●●●●●●●●●●●●●●●●● 確認のため、もう一度入力: ●●●●●●●●●●●●●●●●●● Caps Lockとキーボード配列を確認してください。 このパスフレーズを忘れると、暗号化領域を開けません。 戻る 続ける
同じパスフレーズを2回入力します。画面を撮影・共有するときも、パスフレーズは絶対に写さないでください。

8LVMの使用量を決める

ボリュームグループの使用量を尋ねられた場合、一般的なデスクトップでディスク全体を使うなら最大値を選べます。後で論理ボリュームを追加・拡張する予定がある場合は、意図的に未割り当て領域を残します。

9最終的なパーティション構成を確認する

「パーティショニングの終了とディスクへの変更の書き込み」を選ぶ前に、次の構成になっているか確認します。ディスク名やパーティション番号は環境によって異なります。

  • UEFI環境ではFAT32のEFIシステムパーティションがある
  • /boot用パーティションが暗号化領域の外側にある
  • 大きな暗号化ボリュームがある
  • 暗号化ボリューム内のLVMに/や/homeがある
  • スワップも暗号化領域内にある
  • 削除されて困る別OS・データ用パーティションが含まれていない

10インストールを完了して再起動する

通常どおりベースシステム、デスクトップ環境、GRUBをインストールします。完了したらインストールUSBを抜いて再起動します。

起動時に暗号化パスフレーズを入力する

Debianのカーネルが読み込まれた後、暗号化ボリュームを開くためのパスフレーズ入力画面が表示されます。ここで入力するのはLUKSのパスフレーズであり、通常のログイン画面で入力するユーザーパスワードとは役割が異なります。

Debian起動時の暗号化ボリューム解除画面 暗い起動画面に、暗号化ディスクのパスフレーズ入力を求める表示がある。 暗号化ディスクのロック解除 Please unlock disk nvme0n1p3_crypt: •••••••••••••••••• パスフレーズを入力して Enter
LUKSを解除するとDebianの起動が続き、その後に通常のログイン画面が表示されます。
起動のたびに入力するのが正常です

暗号化の目的は、電源を切った状態でディスクを読めないようにすることです。起動時のパスフレーズ入力を省略するために暗号鍵を同じディスクへ平文で保存すると、盗難対策としての効果が大きく下がります。

システムディスクが暗号化されたか確認する

Debianへログインしたら、端末を開いてディスク構成を確認します。次のコマンドは表示だけを行い、ディスクを変更しません。

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo dmsetup ls --target crypt

FSTYPEにcrypto_LUKSがあり、その下にLVM2_member、ルート領域、スワップなどが階層表示されれば、暗号化LVM構成を確認できます。

lsblkで暗号化LVMを確認した端末画面 NVMeの3番パーティションがcrypto_LUKSで、その内側にLVMのrootとswapが表示されている。 USER@Debian: ~ USER@Debian:~$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS NAME SIZE TYPE FSTYPE MOUNTPOINTS nvme0n1 476.9G disk ├─nvme0n1p1 512M part vfat /boot/efi ├─nvme0n1p2 954M part ext2 /boot └─nvme0n1p3 475.5G part crypto_LUKS └─nvme0n1p3_crypt 475.5G crypt LVM2_member ├─debian–vg-root 459.5G lvm ext4 / └─debian–vg-swap 16G lvm swap [SWAP] USER@Debian:~$ sudo dmsetup ls –target crypt nvme0n1p3_crypt (254:0) USER@Debian:~$
crypto_LUKSの内側にLVMとルート領域が表示されています。実際の名前や容量は環境によって異なります。

マッピング名がnvme0n1p3_cryptだった場合は、詳細を次のように確認できます。名前はdmsetupの結果へ置き換えてください。

sudo cryptsetup status nvme0n1p3_crypt

元のLUKSパーティションを確認できた場合は、ヘッダー情報も読み取り専用で確認できます。

sudo cryptsetup isLuks /dev/nvme0n1p3 \
  && echo "LUKSボリュームです"

sudo cryptsetup luksDump /dev/nvme0n1p3
デバイス名は例です

/dev/nvme0n1p3をそのまま実行対象にせず、lsblkで自分の環境にあるcrypto_LUKSパーティションを確認してください。luksDumpはパスフレーズ自体を表示しませんが、構成情報を公開場所へ貼る必要はありません。

外付けHDD・SSDをLUKS2で暗号化する

ここからは、データ用の外付けディスクまたはパーティションをコマンドで暗号化する方法です。例では対象を/dev/sdb1、解除後の名前をsecure_diskとします。

/dev/sdb1の中身はすべて失われます

実際の対象は/dev/sdc1や/dev/nvme1n1p1かもしれません。表示例をそのままコピーせず、容量、型番、接続方式、マウント先を照合してください。暗号化したいのが1番パーティションなら/dev/sdb1であり、ディスク全体の/dev/sdbとは異なります。

1cryptsetupをインストールする

sudo apt update
sudo apt install cryptsetup

2対象ディスクを特定する

外付けディスクを接続した状態で、次のコマンドを実行します。

lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,MOUNTPOINTS,MODEL,TRAN

TRANがusbであること、容量と型番が対象ディスクと一致することを確認します。重要なデータをバックアップした後、対象パーティションをアンマウントします。

パーティションがまだない場合

lsblkにディスク本体のsdbだけが表示され、子項目のsdb1がない場合は、先にGNOMEの「ディスク」などでGPTパーティションテーブルとパーティションを作成します。既存パーティションがある場合は作り直さず、対象が本当に暗号化してよい領域か確認してください。

sudo umount /dev/sdb1

「target is busy」と表示された場合は、そのディスク内のファイルを開いているアプリ、「ファイル」、端末を閉じてから再実行します。

3LUKS2形式で初期化する

対象をもう一度確認してから実行します。

sudo cryptsetup --type luks2 luksFormat /dev/sdb1

確認文を読み、対象が正しい場合だけ大文字でYESと入力します。その後、新しい暗号化パスフレーズを2回入力します。

確認を省略するオプションは使わないでください

--batch-modeや自動応答を組み合わせると、対象を間違えたときの最後の確認まで失われます。手作業では確認画面を残し、表示されたデバイス名を見直してください。

4暗号化領域を開く

sudo cryptsetup open /dev/sdb1 secure_disk

正しいパスフレーズを入力すると、復号後の仮想デバイス/dev/mapper/secure_diskが作成されます。

sudo cryptsetup status secure_disk
ls -l /dev/mapper/secure_disk

5復号後のデバイスをext4でフォーマットする

新規作成直後の空の暗号化領域に、Linux用のext4ファイルシステムを作ります。このコマンドは最初の1回だけ実行します。

sudo mkfs.ext4 -L SECURE_DISK /dev/mapper/secure_disk
次回以降はmkfs.ext4を実行しません

mkfsはファイルシステムを新しく作るコマンドです。データを保存した後で再実行すると、既存データを失う原因になります。普段の利用では「開く」と「マウント」だけを行います。

6マウントして所有者を設定する

sudo install -d -m 0755 /mnt/secure_disk
sudo mount /dev/mapper/secure_disk /mnt/secure_disk
sudo chown "$USER":"$(id -gn)" /mnt/secure_disk

現在のユーザーで書き込めるか確認します。

touch /mnt/secure_disk/write-test.txt
ls -l /mnt/secure_disk/write-test.txt
rm /mnt/secure_disk/write-test.txt

最後に構成を確認します。

lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,MOUNTPOINTS
findmnt /mnt/secure_disk

次のように、元のcrypto_LUKSパーティション、その内側のcryptデバイス、ext4のマウント先が階層表示されます。

sdb                   931.5G disk
└─sdb1                931.5G part  crypto_LUKS
  └─secure_disk       931.5G crypt ext4        /mnt/secure_disk

GNOMEの「ディスク」から作成する場合

GNOMEを使用している場合は「ディスク」アプリから対象パーティションを選び、歯車メニューのフォーマット操作でLUKSによるパスワード保護を選べることがあります。画面操作でも対象の中身は消えるため、左側で選んだディスクの容量と型番を必ず確認してください。詳細な選択肢はDebianやGNOME Disksのバージョンによって異なります。

暗号化ディスクを開く・閉じる

端末から開いてマウントする

sudo cryptsetup open /dev/sdb1 secure_disk
sudo mount /dev/mapper/secure_disk /mnt/secure_disk

利用中の状態は次のコマンドで確認できます。

sudo cryptsetup status secure_disk
findmnt /mnt/secure_disk

安全に閉じる

暗号化ディスク内をカレントディレクトリーにしている端末や、ファイルを開いているアプリを閉じます。その後、書き込みを完了し、ファイルシステムをアンマウントしてから暗号化マッピングを閉じます。

cd "$HOME"
sync
sudo umount /mnt/secure_disk
sudo cryptsetup close secure_disk

USB接続のディスクを物理的に取り外す場合は、必要に応じて電源を安全に切ります。

sudo udisksctl power-off -b /dev/sdb
  • ここではパーティションの/dev/sdb1ではなく、USBディスク本体の/dev/sdbを指定します。
  • 複数パーティションがある場合は、すべてアンマウントしてから実行します。
  • 「ファイル」の取り出しボタンを使った場合は、同じ操作を端末から重ねて行う必要はありません。

GNOMEの「ファイル」から開く

対応するデスクトップ環境では、暗号化済み外付けディスクを接続し、「ファイル」の左側にあるボリュームをクリックするとパスフレーズ入力画面が表示されます。共有PCや持ち運ぶPCでは、パスフレーズを永続的に保存せず、その都度入力する方法が安全です。

ケーブルを抜くだけでは閉じないでください

書き込み中に突然取り外すと、暗号化の有無に関係なくファイルシステムが破損する可能性があります。必ずアンマウントと暗号化マッピングの終了を確認してください。

起動時にパスフレーズを入力してマウントする

常時接続するデータ用ディスクは、/etc/crypttabと/etc/fstabへ登録できます。ここでは起動時にパスフレーズを尋ね、解除後に/mnt/secure_diskへマウントする構成にします。

Debian 13ではsystemd-cryptsetupを確認する

Debian 13では暗号化ファイルシステムの自動検出・マウント機能がsystemd-cryptsetupパッケージへ移されました。通常は推奨パッケージとして入りますが、自動マウントを設定する前に確認します。

# Debian 13で実行
sudo apt update
sudo apt install systemd-cryptsetup cryptsetup

1.LUKS UUIDを取得する

sudo cryptsetup luksUUID /dev/sdb1

表示されたUUIDを控えます。次の例にある11111111-2222-3333-4444-555555555555は、実際の値へ置き換えてください。

2./etc/crypttabへ登録する

設定前にバックアップを作成し、sudoeditで開きます。

if [ -f /etc/crypttab ]; then
  sudo cp -a /etc/crypttab "/etc/crypttab.backup-$(date +%F-%H%M%S)"
else
  sudo install -m 0600 /dev/null /etc/crypttab
fi

sudoedit /etc/crypttab

末尾へ次の1行を追加します。

secure_disk UUID=11111111-2222-3333-4444-555555555555 none luks,nofail
  • 1列目は/dev/mapper/secure_diskに使う名前です。
  • 2列目は暗号化前のパーティションをLUKS UUIDで指定します。
  • 3列目のnoneは、平文のキーファイルを使わず入力を求める設定です。
  • nofailは、外付けディスクがない場合も起動を続けやすくするための指定です。

3./etc/fstabへマウント先を登録する

sudo install -d -m 0755 /mnt/secure_disk
sudo cp -a /etc/fstab "/etc/fstab.backup-$(date +%F-%H%M%S)"
sudoedit /etc/fstab

末尾へ次の1行を追加します。

/dev/mapper/secure_disk /mnt/secure_disk ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2

4.再起動前に設定を確認する

sudo systemctl daemon-reload
sudo findmnt --verify --verbose

parse error、no such file or directory、UUIDの誤りなどが表示された場合は、再起動する前に修正します。現在マッピングを閉じている場合は、次のようにテストできます。

sudo systemctl start systemd-cryptsetup@secure_disk.service
sudo mount /mnt/secure_disk
findmnt /mnt/secure_disk

動作を確認できたらアンマウントして閉じ、再起動時のパスフレーズ入力も確認します。

sudo umount /mnt/secure_disk
sudo systemctl stop systemd-cryptsetup@secure_disk.service
キーファイルを同じディスクへ平文で置かないでください

盗難対策が目的なのに、暗号化を解除する鍵を同じPCの暗号化されていない領域へ置くと、攻撃者も鍵を入手できる可能性があります。自動解除にはTPMや外部キーなど別の設計が必要で、利便性と攻撃耐性の評価も必要です。

パスフレーズとLUKSヘッダーを管理する

現在のキースロットを確認する

sudo cryptsetup luksDump /dev/sdb1

Keyslots以下に有効なスロットが表示されます。LUKS2は複数のパスフレーズやキーを登録できるため、普段使うものとは別に、管理された復旧用パスフレーズを追加できます。

新しいパスフレーズを追加する

sudo cryptsetup luksAddKey /dev/sdb1

最初に既存の有効なパスフレーズを入力し、続いて追加する新しいパスフレーズを2回入力します。

新しいパスフレーズをテストする

古いパスフレーズを削除する前に、いったん安全にアンマウントして閉じ、新しいパスフレーズで再び開けることを確認します。

cd "$HOME"
sync
sudo umount /mnt/secure_disk
sudo cryptsetup close secure_disk

sudo cryptsetup open /dev/sdb1 secure_disk
sudo mount /dev/mapper/secure_disk /mnt/secure_disk

解除時には、追加した新しいパスフレーズを入力してください。ファイルを開けることまで確認してから次へ進みます。

古いパスフレーズを削除する

sudo cryptsetup luksRemoveKey /dev/sdb1

削除したい古いパスフレーズを入力します。入力したパスフレーズに対応するキースロットが削除されます。

最後の有効なキーを失わないでください

新しいパスフレーズで解除できることを確認する前に古いキーを削除しないでください。すべての有効なキーを失うと、LUKSヘッダーが残っていてもデータを開けません。

LUKSヘッダーをバックアップする

LUKSヘッダーが破損すると、暗号化されたデータ本体が無事でも復号できなくなる場合があります。ヘッダーを保存する場合は、暗号化対象とは別の安全な媒体を使います。

sudo cryptsetup luksHeaderBackup /dev/sdb1 \
  --header-backup-file /media/USER/ENCRYPTED_BACKUP/luks-header-sdb1.img

sudo chmod 600 /media/USER/ENCRYPTED_BACKUP/luks-header-sdb1.img
  • /media/USER/ENCRYPTED_BACKUPは、別の暗号化済みバックアップ媒体の実際のパスへ置き換えます。
  • ヘッダーバックアップだけでは、忘れたパスフレーズを復元できません。
  • ヘッダーにはキースロット情報が含まれるため、通常の設定ファイルのように公開・共有しません。
  • 古いヘッダーを復元すると、削除した古いキーが再び有効になる可能性があります。
  • 最も重要なのは、データ自体を別の暗号化媒体へ定期的にバックアップすることです。
ヘッダーの復元は緊急時だけ行います

luksHeaderRestoreは現在のLUKSヘッダーとキースロット領域を上書きします。対象や世代を間違えると状況を悪化させるため、ここでは通常手順として実行しません。障害時は元ディスクのイメージを保存し、対応するヘッダーバックアップであることを確認してから復旧作業を行います。

データのバックアップも暗号化する

元ディスクだけを暗号化しても、平文のバックアップが外付けHDDに残っていれば、そこから内容を読まれます。バックアップ先もLUKSなどで保護し、元ディスクと同時に紛失しない場所へ保管してください。

既存のDebianを後から暗号化できるか

cryptsetup reencryptには既存デバイスをインプレースで暗号化する機能があります。しかし、起動中のルートファイルシステムを単純に1コマンドで安全に暗号化できるわけではありません。

システムディスクを後から暗号化する作業では、少なくとも次の要素が関係します。

  • 暗号化処理前の完全なバックアップ
  • ライブUSBなど、対象ルート領域を使用しない起動環境
  • LUKSヘッダー用領域とパーティションサイズの調整
  • /etc/crypttabの作成
  • /etc/fstabのUUID・デバイス構成の修正
  • cryptsetup-initramfsを含むinitramfsの再構築
  • GRUBと/bootの構成確認
  • 暗号化中の停電、I/Oエラー、中断に備えた復旧計画
安全性を優先するなら再インストール
  1. ホームフォルダーと必要なシステム設定を別媒体へバックアップする
  2. バックアップの読み取りと必要ファイルを確認する
  3. Debian Installerの暗号化LVMを選んで再インストールする
  4. 暗号化構成をlsblkで確認する
  5. 必要なデータと設定を選んで戻す

インプレース暗号化は、同じ「Debian」でもBIOS・UEFI、LVMの有無、ファイルシステム、パーティションの空き、/bootの位置によって手順が変わります。一般向けの固定コマンドをそのまま実行するのは危険です。

うまくいかない場合の対処法

症状・表示 主な原因 対処
No key available with this passphrase パスフレーズ違い、配列違い、Caps Lock 英語・日本語配列、Caps Lock、Num Lockを確認し、登録済みの別パスフレーズがあれば試す
起動時に解除画面が出ない、起動が止まる initramfs、crypttab、対象UUID、画面表示の問題 古いカーネルやリカバリーモード、ライブUSBから構成を確認する。闇雲にヘッダーを再作成しない
Device ... already exists 同じ名前のマッピングがすでに開いている sudo cryptsetup status secure_diskとlsblkで状態を確認し、二重に開かない
Device ... is still in use マウント中、端末やアプリが使用中 findmntでマウント先を確認し、ファイルを閉じてからアンマウントする
mount: wrong fs type 元のcrypto_LUKSデバイスを直接マウントした、内部FSが破損 先にcryptsetup openし、/dev/mapper/secure_diskをマウントする。blkidで内部FSを確認する
/dev/sdb1 is not a valid LUKS device デバイス違い、LUKSではない、ヘッダー破損 lsblk -fとsudo cryptsetup isLuks /dev/sdb1で確認し、初期化を再実行しない
Debian 13で自動解除ユニットが見つからない systemd-cryptsetupが未導入 sudo apt install systemd-cryptsetup後、設定とUUIDを確認する
外付けディスクを外すと起動が長時間止まる crypttabやfstabで必須扱い、タイムアウトが長い nofailとデバイスタイムアウトを確認し、UUIDの誤りを修正する
パスフレーズを忘れた 解除に必要なキーがない 別の有効なキースロット、回復用キー、解除済み状態からのデータ退避を確認する。どれもなければ原則復旧できない
LUKSヘッダーが破損した 誤上書き、媒体故障、I/Oエラー 書き込みを止め、ディスクイメージを保存し、対応するヘッダーバックアップとデータバックアップから復旧を検討する

暗号化マッピングの状態を確認する

lsblk -f
sudo cryptsetup status secure_disk
findmnt /mnt/secure_disk

内部ファイルシステムを確認する

sudo blkid /dev/mapper/secure_disk

TYPE="ext4"などが表示されるか確認します。修復コマンドを実行する場合は、必ずアンマウントし、データバックアップを確保してからファイルシステムに合った手順を選びます。

自動解除サービスのログを確認する

sudo systemctl status systemd-cryptsetup@secure_disk.service --no-pager
sudo journalctl -b -u systemd-cryptsetup@secure_disk.service --no-pager

UUID、/etc/crypttabの列数、マッピング名、パッケージ不足などのエラーを確認します。ログを共有するときは、ホスト名、ユーザー名、外部ディスク名など必要のない個人情報を隠してください。パスフレーズやキーファイルは絶対に共有しません。

よくある質問

ログインパスワードを設定していれば、ディスク暗号化は不要ですか。

用途が異なります。ログインパスワードは通常のログインを制限しますが、ディスクを取り外して別環境から読む攻撃への対策にはなりません。持ち運ぶPCや機密データを保存する端末では、ディスク暗号化が有効です。

暗号化パスフレーズとユーザーパスワードは同じでよいですか。

別にすることをおすすめします。同じ文字列を使うと、一方が見られたり漏れたりしたときに両方の保護を失います。LUKS用には長く推測されにくい専用パスフレーズを設定します。

パスフレーズを忘れたらリセットできますか。

別の有効なパスフレーズ、キーファイル、登録済みトークンなどで解除できれば、新しいキーを追加できます。どの有効なキーでも解除できない場合、通常のログインパスワードのようなリセットはできません。LUKSヘッダーバックアップだけでも、パスフレーズ忘れは解決しません。

暗号化すると動作は遅くなりますか。

読み書きのたびに暗号化・復号が必要なため処理負荷は増えます。ただし体感差はCPU、ストレージ、処理内容によって異なります。実機ではcryptsetup benchmarkで暗号処理性能を確認できますが、実際のファイル操作性能とは同一ではありません。

SSDでもLUKSを使えますか。

使用できます。TRIM・discardを暗号化層へ通す設定は性能や空き領域管理に関係しますが、使用ブロックのパターンに関する情報が見えるというトレードオフがあります。目的を理解せずallow-discardsを追加せず、まずDebian Installerの標準設定を使用してください。

スワップも暗号化されますか。

Debian Installerの暗号化LVMを使い、スワップが暗号化LVMの内側に作られていれば保護されます。lsblkで階層を確認してください。スワップだけが暗号化領域の外側にある構成では、メモリー上の情報が残る可能性があります。

/bootも暗号化されますか。

Debian Installerの標準的な暗号化LVMでは、/bootは暗号化領域の外側です。UEFIのEFIシステムパーティションも暗号化されません。起動領域の改ざん対策は、Secure Bootや端末の物理管理などと組み合わせます。

Windowsとのデュアルブートでも使えますか。

可能ですが、「ディスク全体を使う」を選ぶとWindowsも消えます。Windowsを残すには、空き領域や別ディスクを使った手動構成が必要です。BitLockerとLUKSは別々に管理し、両方の回復情報を確保してください。

暗号化した外付けディスクをWindowsやmacOSで読めますか。

標準状態のWindowsやmacOSでは、LinuxのLUKSとext4をそのまま扱えないのが一般的です。複数OS間で共有する必要がある場合は、互換性、暗号化方式、信頼できるソフトウェアの有無を先に検討してください。

休止状態やスリープ中も安全ですか。

電源を完全に切った状態とは異なります。スリープ中は暗号鍵がメモリーに残り、端末も動作中です。長時間持ち運ぶ場合や紛失リスクが高い場合は、作業を保存して完全にシャットダウンする方が保護しやすくなります。

バックアップも暗号化した方がよいですか。

個人情報や認証情報を含むなら暗号化をおすすめします。元のPCだけを暗号化しても、同じデータの平文コピーが外付けディスクにあれば、そこが情報漏えい経路になります。

暗号化済みディスクを丸ごとクローンできますか。

セクター単位のクローンは可能ですが、LUKS UUIDやヘッダー、キースロットも複製されます。元と複製を同時接続すると識別しにくくなる場合があり、破損も複製されます。日常のバックアップは、別の暗号化ボリュームへファイル単位で保存する方法が管理しやすいことがあります。

TPMを使って自動解除できますか。

LUKS2はsystemdの仕組みなどを通じてTPM連携を構成できますが、ハードウェア、Secure Boot、PCRポリシー、回復キーの管理まで含めた設計が必要です。自動解除すると利便性は上がりますが、盗難時にどの条件で解除されるかを理解する必要があります。まずはパスフレーズ方式で正常に起動・復旧できる構成を作るのが安全です。

作業後のチェックリスト

  • lsblkで対象がcrypto_LUKSになっている
  • ルート、ホーム、スワップが意図した暗号化領域の内側にある
  • 再起動後にパスフレーズで正常に解除できる
  • 新しいパスフレーズを追加した場合、実際に解除テストを行った
  • 外付けディスクを閉じる前にアンマウントしている
  • LUKSヘッダーバックアップを作る場合、別の安全な媒体へ保管している
  • 暗号化されたデータ本体も別媒体へバックアップしている
  • パスフレーズや回復情報をPCと一緒に紛失しない方法で管理している
  • 不要な平文コピーがUSBメモリーや古いディスクに残っていないか確認した

まとめ

Debianのシステムディスクを暗号化する最も簡単な方法は、インストール時に「ディスク全体を使い暗号化LVMをセットアップする」を選ぶことです。ユーザーデータ、システム領域、スワップをまとめて保護でき、起動に必要なcrypttabやinitramfsの設定もインストーラーが行います。

外付けHDD・SSDは、対象を慎重に特定したうえでcryptsetupを使い、LUKS2領域を作成できます。作成後は、開く、マウントする、アンマウントする、閉じる、という順番を守ります。

暗号化の強さだけでなく、パスフレーズを失わないこと、LUKSヘッダーを破損させないこと、データ自体を別の暗号化媒体へバックアップすることが重要です。暗号化は紛失・盗難時の読み取り対策であり、バックアップやOSのセキュリティ対策と組み合わせて使用してください。

参考情報

記事内のコマンドと対象バージョンは、に再確認しています。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *