Linuxでdm-cryptを使ってパーティションを暗号化する方法

Disk Encryption Linux Dm Crypt Featured

ハードドライブやSSDは、ノートパソコンやコンピュータから簡単に取り外すことができます。このような場合、オペレーティングシステムによって実施されたセキュリティ対策は意味をなくします。データを保護したい場合、暗号化されたコンテナを作成することができます。そこに機密ファイルを保存し、通常のパーティションには機密性のないファイルを保存します。

Linuxディストリビューションをインストールする際に暗号化パーティションを設定することが最も簡単です。インストーラーがその手順を案内してくれます。しかし、その機会を逃した場合は、このガイドの手順に従って秘密の金庫を作成してください。

また読む: LinuxでGPG、Ccrypt、Bcrypt、7-Zipを使用してファイルを暗号化する方法

前提条件

このプロセスには空のパーティションが必要です。つまり、フォーマットされていない(ファイルシステムが存在しない)パーティションです。

現在、フォーマットされたパーティションがストレージデバイスのすべての空きスペースを占有している場合は、GPartedを使用してそのうちの1つを縮小する必要があります。

警告: データのバックアップを取ることが賢明です。パーティションとそのファイルシステムを縮小する際には、少しのリスクが伴います。プロセスの間にコンピュータがクラッシュするか、電源が失われる可能性があります。これにより、ファイルシステムが不整合な状態になる可能性があり、復旧が難しくなることがあります。

このガイドの最初の手順に従って、GPartedでパーティションのサイズを変更してください。あるいは、もはや必要のないパーティションを削除することもできます。(スペースを解放し、「未割り当て」と表示されるようになったら、ガイドの残りの手順をスキップしてください。)具体的には、ext4としてフォーマットされたパーティションは作成しないでください。代わりに、未割り当てのスペースを右クリックし、ガイドに示されているようにします。開いたダイアログウィンドウには「ファイルシステム」というフィールドが表示されます。通常、ここでext4がデフォルトとして選択されているはずです。それをクリックして「クリア」に変更します。

cryptsetup-gparted-new-partition-cleared

「追加」を選択した後、緑のチェックマークをクリックして変更を適用してください。

cryptsetupのインストール

GPartedを使用してパーティションを編集するためにライブオペレーティングシステムを起動した場合は、メインのLinuxディストリビューションに再起動してください。

ターミナルエミュレーターを開きます。Debianベースのシステム(UbuntuやLinux Mintなど)では、次のコマンドを入力します。

sudo apt update && sudo apt install cryptsetup

cryptsetup-installing-package

FedoraやCentOSなど、DEBではなくRPMパッケージを使用するディストリビューションでは、cryptsetupがすでにインストールされている場合があります。もしそうでなければ、次のコマンドでインストールできます。

sudo yum install cryptsetup

OpenSUSEでは、cryptsetupがプリインストールされていない場合、次のコマンドでインストールできます。

sudo zypper refresh && sudo zypper install cryptsetup

Archベースのディストリビューションでは、次のコマンドを使用します。

sudo pacman -S cryptsetup

パーティションのブロックデバイス名を見つける

次のコマンドを入力します。

lsblk

cryptsetup-lsblk

画像に示された例では、ストレージデバイスは「vda」です。「vda1」から「vda3」はパーティションです。

準備したパーティションを見つけるには、それに予約したサイズを覚えておいてください。マウントポイントがないパーティションの中に見つかるはずです。あなたの場合、「/dev/sda2」のような名前かもしれません。

パーティションを暗号化すると、それに存在するデータが上書きされるため(データが存在する場合)、デバイス名を間違えると有用なデータを破壊する可能性があります。デバイス名を正確に確認するためにGPartedをインストールし、パーティションレイアウトを確認することができます。デバイス名はグラフィカルユーザーインターフェースにリスト表示されます。ライブシステムから起動したときにGPartedで見た名前を使用しないでください(そうした場合)。ライブシステムで表示されるレイアウトは、インストールされているディストリビューションから起動したときに見るレイアウトとは異なります。

別の方法として、間違ったブロックデバイスに書き込まないように確認することもできます。マウントを試みてみてください。通常、フォーマットされていないため、マウントを拒否するはずです。

重要: 常に「vda3」をデバイス名で置き換えることを忘れないでください:

sudo mount /dev/vda3 /mnt

あなたの場合、このコマンドは sudo mount /dev/sda2 /mnt かもしれません。

これが表示されるメッセージです。

cryptsetup-test-mount

LUKSヘッダーのセットアップ

正しいデバイス名を確信したら、パーティションにLUKSヘッダーを追加します。

sudo cryptsetup luksFormat /dev/vda3

「YES」と入力し、暗号化パーティションのための強力なパスワードを選択します。パスフレーズの確認を求められたら、同じパスワードを入力してください。

パーティションにファイルシステムを作成

この物理デバイスを仮想デバイスにマッピングする必要があります。仮想デバイスに書き込まれるものは、物理デバイスに保存される前に暗号化されます。

sudo cryptsetup luksOpen /dev/vda3 encrypted-partition

パーティションを使用可能にするためにはファイルシステムが必要です。次のコマンドでext4ファイルシステムを作成します。

sudo mkfs.ext4 /dev/mapper/encrypted-partition

cryptsetup-make-ext4-filesystem

暗号化パーティションをマウント

パーティションからファイルシステムをマウントするためのディレクトリを作成します。

mkdir ~/encrypted-storage

ファイルシステムをマウントします。

sudo mount /dev/mapper/encrypted-partition ~/encrypted-storage

そのディレクトリに移動します。

cd ~/encrypted-storage

この時点では、rootユーザーのみがここに書き込むことができます。このファイルシステムに書き込み権限を与えるため、上位レベルのディレクトリの所有者にする必要があります。最後のドットを含む全体のコマンドをコピー&ペーストしてください。

sudo chown $USER:$USER .

他のユーザーがこのディレクトリを読み書きできないように制限します。

chmod 700 .

この時点で、ほとんどのファイルマネージャは、インターフェースに新しい暗号化デバイスを表示するはずです。これは、XFCEデスクトップ環境で使用されるデフォルトのThunarファイルマネージャーにおける表示例です。

cryptsetup-encrypted-partition-in-thunar

ボリュームがマウントされていない場合、それをクリックするとボリュームパスワードとsudoパスワードを求められます。ボリュームは自動的にマウントされ、その中を探索できるようになります。マウントポイントは「~/encrypted-storage」とは異なる場合があります。例えば、「/media/user/f42f3025-755d-4a71-95e0-37eaeb761730/」のような名前になることがあります。

それは重要ではありません。以前設定したパーミッションは依然として適用されます。重要なのは、作業が終わったら右クリックしてアンマウントすることです。仮想デバイスをアンマウントして閉じることで、誰も暗号化パーティションからデータを読めないことが保証されます。たとえあなたのオペレーティングシステムでさえも。

何らかの理由でファイルマネージャがこの機能をサポートしていない場合、ターミナルからマウントすることもできます。

sudo cryptsetup luksOpen /dev/vda3 encrypted-partition  
sudo mount /dev/mapper/encrypted-partition ~/encrypted-storage

今、ファイルマネージャで「/home/username/encrypted-storage」に行くことでボリュームにアクセスできるようになりました。作業が終わったら、ファイルシステムをアンマウントし、仮想デバイスを閉じます:

cd && sudo umount /dev/mapper/encrypted-partition  
sudo cryptsetup luksClose /dev/mapper/encrypted-partition

結論

重要なファイルのための安全な場所ができました。誰もそこに保存するものを見られないと知っていることで、少し安心できるはずです。