ウェブサイト検索

LUKSとは何か、そしてそれがどのようにあなたのLinuxファイルシステムを保護するのか?


重要なポイント

  • Linux統一鍵設定(LUKS)は、Linux用のディスク暗号化仕様です。
  • LUKSはデータを暗号化するためにマスターキーを使用し、パスフレーズがそのキーをアンロックします。
  • LUKSは、ラップトップや外付けドライブを含むブロックデバイス上のユーザーデータを盗難から保護します。

"LUKS"という用語に出くわしましたが、何をするものか、Linuxとの関係がわかりませんか?データの保護に関心があるなら、LUKSを設定することは必須です。このガイドでは、LUKSの仕組みと、どのようにして重要なデータを保護するのに役立つかを説明します。

LinuxのLUKSとは何ですか?

Linux Unified Key Setup(略してLUKS)は、Linuxシステムで広く使用されているディスク暗号化仕様です。2004年にクレメンス・フリューヴィルトによって作成され、標準化された安全でユーザーフレンドリーな暗号化メカニズムを提供するように設計されています。これは、物理的および論理的なディスクパーティション内でデータを暗号化することによってデータを保護し、認可されたユーザーだけがその暗号化されたパーティションの内容にアクセスできるようにします。WindowsのBitLockerに似ていると考えることができます。

LUKSはブロックレベルで動作します。個々のファイルではなく、全体のパーティションやディスクを暗号化します。AES(高度な暗号化標準)などの強力な暗号化アルゴリズムを使用します。暗号化アルゴリズムやキーサイズなどの必要な設定情報を格納するために、パーティションヘッダーを使用します。このヘッダーがLUKSをdm-cryptと区別するポイントです。ヘッダーが破損すると、デバイスを復号化することができなくなります。

LUKSの仕組み

LUKS暗号化は、ディスクパーティション上にLUKSボリュームと呼ばれる暗号化コンテナを作成します。これは、AESのような対称アルゴリズムを使用してボリュームを暗号化し、パスフレーズを使用してのみアクセスできるようになっています。LUKSボリュームのロックを解除すると、通常のブロックデバイスのようにアクセスできるようになります。そのため、読み書きが可能です。

LUKSは、暗号化されたパーティションの先頭にある特別なセクションであるLUKSヘッダーにその暗号化メタデータを保存します。このヘッダーには、暗号化方式やモード、ハッシュ関数、キー・スロットなどの重要な情報が含まれています。パーティションの実際の暗号化はマスターキーを使用して行われます。このマスターキーは、LUKSのセットアップが初期化される際にランダムに生成されます。このマスターキーがパーティション上のデータを直接暗号化および復号化します。パスフレーズはデータを暗号化しません。代わりに、キー・スロットに格納されているマスターキーを暗号化します。

暗号化されたデータにアクセスするには、LUKSがパスフレーズの入力を要求します。このパスフレーズは、キー スロットの 1 つに保存されたマスターキーの復号化に使用されます。マスターキーが復号化されると、そのキーはパーティション上のデータを復号化するために使用されます。

なぜLUKSを使用すべきか

LUKSを使用する主な理由は、ユーザーデータを保護することです。LUKSは、全体のブロックデバイスを暗号化できるため、ノートパソコンのディスクドライブやリムーバブルメディアなどのモバイルデバイス内のデータを保護するのに適しています。暗号化されたブロックデバイスの内容は任意であるため、スワップデバイスを暗号化するのにも適しています。

LUKSはフルディスク暗号化に一般的に使用されます。インストール中にLinuxシステムのルートパーティションを暗号化することで、権限のない者がシステムファイルにアクセスできないようにすることができます。また、Linuxカーネルの改ざんを防ぐために、Linuxシステムのブートパーティションも暗号化することができます。systemdを使用している場合は、個々のホームディレクトリを暗号化することも可能です。

LUKSは複数のキー スロットをサポートしており、同じ暗号化されたパーティションに異なるパスフレーズを割り当てる機会を提供します。そのため、複数のユーザーを持つセットアップでは、各ユーザーが共通のパスフレーズを共有することなく、個別の復号キーを持つことができます。さらに、1つのパスフレーズを忘れた場合でも、他のパスフレーズを使用してデータにアクセスすることができます。

それはあなたのデバイスを物理的な盗難から守ります。たとえノートパソコンや外付けハードドライブ、または他のストレージデバイスが盗まれたとしても、正しい暗号解除キーがなければ内部のデータにはアクセスできません。

いくつかの落とし穴があります

フルディスク暗号化の最大の欠点の一つは、パフォーマンスの問題にあります。データをオンザフライで復号化するには処理能力が必要であり、その結果、読み書き速度が遅くなります。最新のハードウェアを持っていれば、その違いは時々無視できるかもしれませんが、完全に無視できるわけではありません。また、オペレーティングシステムが完全にロードされる前にシステムがドライブ全体を復号化する必要があるため、起動時間が長くなります。これに関する詳細は、このRedditスレッドやこのベンチマークテストで読むことができます。

もう一つ重要な点は、LUKSディスク暗号化はシステムがオフのときのみデータを保護するということです。ノートパソコンが電源オンの状態で盗まれ、ドライブがすでに復号されている場合、泥棒は暗号をバイパスすることなくデータにアクセスできる可能性があります。復号された状態では、誰でもそのドライブ上のファイルにアクセスできます。

LUKS暗号化の設定は、プリインストールされたLinuxシステムでは簡単なプロセスではありません。重要なデータを失った場合に復元できるように、完全なバックアップが必要です。バックアップについて言えば、暗号化されたバックアップは慎重に取り扱う必要があります。復号鍵を失うと、データを決して回復できないかもしれません。

LUKS暗号化の設定方法

LUKSフルディスク暗号化を設定する最も簡単な方法は、最初にLinuxをインストールする時です。Ubuntu 24.04での方法をお見せします。

Linuxを新規インストールすることに問題がない場合でも、事前にインストールされたシステムを暗号化したい場合(後で説明しますが)、Linuxデバイスの重要なファイルを慎重にバックアップするべきです。

インストール中に、ディスク設定のプロンプトが表示されるはずです。「詳細機能」を押してください。

リストから「LVMと暗号化を使用」を選択します。「OK」を押してください。

「次へ」ボタンを押して進んでください。次の画面で、パスフレーズを作成するように求められます。両方のフィールドに安全なパスフレーズを入力し、「次へ」を押してください。

その後、インストールの残りを続けてください。

Linuxを再インストールしたくない場合、暗号化されたファイルシステムをセットアップするためのユーティリティであるcryptsetupがあります。一部のコマンドを実行するには、root権限が必要になる場合があります。まず、これをインストールする必要があります。Debian/Ubuntuでは、次のコマンドを実行します:

sudo apt install cryptsetup

次のコマンドを使用して、利用可能なパーティションを一覧表示してください:

sudo fdisk -l

blkid

リストから暗号化したいパーティションを見つけてください。



次に、cryptsetupユーティリティを使用して、選択したパーティションを次のように暗号化します:

cryptsetup -y -v luksFormat /path/to/partition

cryptsetup -y -v luksFormat /dev/xvdc # 例えば

パーティションを上書きするか確認するよう求められ、その後にパスフレーズを入力する必要があります。パスフレーズは回復不可能なので、必ず保存して覚えておいてください。

上記のコマンドはパーティション内のすべてのデータを消去します。重要なデータは必ずバックアップしてください。

その後、次のコマンドを実行して論理マッピングを作成します。

cryptsetup luksOpen /path/to/partition partition_name

cryptsetup luksOpen /dev/xvdc backup_partition # 例えば

プロンプトが表示されたら、パスフレーズを入力してください。これによりボリュームが初期化されます。マッピングの詳細を確認するには、次のコマンドを実行してください:

ls -l /dev/mapper/backup_partition

マッピングのステータスを見るには、次を使用します:

cryptsetup -v status backup_partition

次に、cryptsetupを使用して、デバイスが暗号化のために正しくフォーマットされているかどうかを確認します。

cryptsetup luksDump /path/to/partition

cryptsetup luksDump /dev/xvdc # 例えば

ddコマンドを使用して、LUKS暗号化パーティションにゼロでブロックデータを割り当てます。

dd if=/dev/zero of=/dev/mapper/backup_partition

完了したら、次のコマンドで新しいパーティションをフォーマットします:

mkfs.ext4 /dev/mapper/backup_partition

ここではext4ファイルシステムを使用しました。お好みのものを使用してください。最後に、新しいファイルシステムをマウントします。

mkdir /backup2
mount /dev/mapper/backup_partition /backup_partition
df -H
cd /backup_partition
ls -l

暗号化されたパーティションのパスフレーズを変更したい場合は、以下のコマンドを実行してください。

cryptsetup luksDump /dev/xvdc # Using /dev/xvdc as an example

cryptsetup luksAddKey /dev/xvdc # /dev/xvdcを例として使用しています

新しいパスフレーズを入力するように求められ、それを確認する必要があります。


LUKSを実装することで、機密データのセキュリティを向上させることができます。また、複数のユーザーが使用するデバイスにも適しています。他にも、Linuxデバイスのセキュリティを向上させるためのさまざまな対策を講じることができます。

関連記事: