Linux Unified Key Setup ( LUKS )は、2004 年に Clemens Fruhwirth によって作成されたディスク暗号化仕様であり、もともとLinuxを対象としていました。
LUKSは、さまざまなツールで使用するために、プラットフォームに依存しない標準的なディスク上のフォーマットを実装しています。これにより、さまざまなプログラムやオペレーティングシステム間の互換性と相互運用性が向上し、すべてが安全で文書化された方法でパスワード管理を実装することが保証されます。 [1]
説明
LUKSはブロックデバイスを暗号化するために使用されます。暗号化されたデバイスの内容は任意であるため、スワップパーティションを含む任意のファイルシステムを暗号化できます。[2]暗号化されたボリュームの先頭には暗号化されていないヘッダーがあり、暗号タイプやキーサイズなどの暗号化パラメータとともに最大8個(LUKS1)または32個(LUKS2)の暗号化キーを保存できます。 [3] [4]
このヘッダーの存在は、LUKSとdm-cryptの大きな違いです。ヘッダーにより、複数の異なるパスフレーズを使用でき、それらを変更したり削除したりできるためです。ヘッダーが失われたり破損したりすると、デバイスは復号できなくなります。[5]
暗号化は多層アプローチで行われます。まず、ブロックデバイスはマスターキーを使用して暗号化されます。このマスターキーは、アクティブな各ユーザーキーで暗号化されます。[6]ユーザーキーは、パスフレーズ、FIDO2セキュリティキー、TPM 、またはスマートカードから派生します。[7] [8]多層アプローチにより、ユーザーはブロックデバイス全体を再暗号化することなくパスフレーズを変更できます。キースロットには、ユーザーのパスフレーズや他の種類のキーを検証するための情報を含めることができます。
LUKSには2つのバージョンがあり、LUKS2はヘッダー破損に対する耐性があり、デフォルトでArgon2 キー導出関数を使用するのに対し、LUKS1はPBKDF2を使用します。[9] LUKSの両バージョン間の変換は特定の状況では可能ですが、Argon2などの一部の機能はLUKS1では利用できない場合があります。[3] LUKS2はメタデータ形式としてJSONを使用します。 [3] [10]
利用可能な暗号化アルゴリズムは、ホストの個々のカーネルサポートによって異なります。Libgcryptはハッシュのバックエンドとして使用でき、すべてのアルゴリズムをサポートしています。[11]デフォルトのアルゴリズムを選択するのはオペレーティングシステムベンダー次第です。[12] LUKS1はAFsplitterと呼ばれるフォレンジック対策技術を使用して、安全なデータ消去と保護を可能にします。[13]
LUKSとLVM
論理ボリューム管理はLUKSと併用することができます。[14]
- LUKS 上の LVM
- ロック解除されたLUKSコンテナでLVMを使用すると、すべての基礎パーティション(LVM論理ボリューム)を1つのキーで暗号化できます。これは、LUKSコンテナを複数のパーティションに分割するのと似ています。LVM構造は、ディスクが復号化されるまで表示されません。[15]
- LVM 上の LUKS
- LUKSを使用してLVM論理ボリュームを暗号化すると、暗号化されたボリュームは複数のデバイスにまたがることができます。暗号化されたボリュームを復号化せずに、基礎となるLVMボリュームグループを表示できます。[16]
フルディスク暗号化

LUKSの一般的な用途は、ディスク全体の暗号化を提供することです。これには、オペレーティングシステムのインストールのルートパーティションの暗号化が含まれ、オペレーティングシステムのファイルが不正な改ざんや不正な第三者による読み取りから保護されます。[14]
Linuxシステムでは、ブートローダ自体がLUKS(例:GRUB )をサポートしている場合、ブートパーティション(/boot)を暗号化することができます。これは、 Linuxカーネルの改ざんを防ぐために行われます。ただし、第1ステージブートローダまたはEFIシステムパーティションは暗号化できません(フルディスク暗号化#ブートキーの問題を参照)。[14]
モバイル Linux システムでは、postmarketOS は、タッチ スクリーンを使用してディスク全体暗号化システムのロックを解除できるようにする osk-sdl を開発しました。
systemdを実行しているシステムでは、このsystemd-homedコンポーネントを使用して個々のホームディレクトリを暗号化することができます。[17]
オペレーティングシステムのサポート
LUKSのリファレンス実装はLinux上で動作し、 cryptsetupの拡張バージョンに基づいており、ディスク暗号化バックエンドとしてdm-cryptを使用しています。Microsoft Windowsでは、LUKSで暗号化されたディスクはWindows Subsystem for Linuxを介して使用できます。[18] (以前は、これはLibreCrypt [19]で可能でしたが、現在は根本的なセキュリティホールがあり、[20] [21] FreeOTFE (旧DoxBox)の後継であるLibreCryptで可能でした。)
DragonFly BSDはLUKSをサポートしています。[22]
インストーラーのサポート
いくつかのLinuxディストリビューションでは、OSのインストール時にルートデバイスを暗号化することができます。これらのインストーラーには、Calamares、[23] Ubiquity、[24] Debian-Installer、[25]などがあります。
ディスク上のフォーマット
LUKSヘッダーは下位互換性があり、新しいバージョンのLUKSは以前のバージョンのヘッダーを読み取ることができます。[26]
LUKS1
LUKS2
LUKS2デバイスは、 blkidによる認識と高速検出を可能にするためのバイナリヘッダーで始まり、チェックサムなどの情報も含まれています。LUKS2ヘッダーで使用されるすべての文字列は、ヌル終端文字列です。バイナリヘッダーの直後にJSON領域が続き、オブジェクトconfig(構成)keyslots、、、(ディスク上の暗号化された領域を記述する)、および追加digestsのメタデータが含まれています。[10]segmentstokens
通常のキースロットのバイナリ形式は、luks2キースロットごとに異なるアルゴリズムが追加されている点を除けば、以前のものとほぼ同じです。再暗号化プロセスが中断された場合に冗長性を確保するために、別のタイプのキーが存在します。[10]
例
Cryptsetup は、LUKS フロントエンドのリファレンス実装です。
パスを使用してデバイスを暗号化するには/dev/sda1:
# cryptsetup luksFormat /dev/sda1
暗号化されたデバイスのロックを解除するには、マップされたnameデバイス名は次のとおりです。
# cryptsetup open /dev/sda1 名前
再暗号化
LUKSコンテナの再暗号化は、cryptsetupツール自体、またはと呼ばれるレガシーツールのいずれかを使用して行うことcryptsetup-reencryptができます。これらのツールは、既存の暗号化されていないファイルシステムに暗号化を追加したり、ブロックデバイスから暗号化を削除したりするためにも使用できます。[11] [27]
どちらの方法も構文は似ています。
# cryptsetup /dev/sda1
を再暗号化する # cryptsetup-reencrypt /dev/sda1
参照
参考文献
- ^ Fruhwirth, Clemens (2018-01-20). 「LUKS オンディスクフォーマット仕様 バージョン 1.2.3」(PDF) 。2021-09-23閲覧。
- ^ 「LUKS を使用したドライブの暗号化」 。Fedora Docs。2022年5 月 6 日閲覧。
- ^ abc 「第12章 LUKSを使用したブロックデバイスの暗号化」。Red Hat カスタマーポータル。
- ^ 「Linux で LUKS を使用してハードディスク (パーティション) を暗号化する方法」。2019 年 2 月 27 日。
- ^ 「dm-crypt でデータを暗号化する方法」。Linode 2022 年 11 月 22日。
- ^ Bossi, Simone; Visconti, Andrea (2015). 「LUKS に基づくフルディスク暗号化についてユーザーが知っておくべきこと」(PDF)。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ 「systemd-cryptenroll - ArchWiki」. wiki.archlinux.org . 2023年11月22日閲覧。
- ^ 「スマートカードまたはトークンを使用して LUKS コンテナを暗号化する方法」。2014 年 4 月 20 日。
- ^ 「Linux のフルディスク暗号化で LUKS がどのように機能するか」。2021 年 9 月 25 日。
- ^ abc "on-disk-format-luks2.pdf" (PDF) . 2024年3月7日。
- ^ ab – Linux管理および特権コマンドマニュアル
- ^ 「LUKS暗号化の破り」eForensics 2020年8月21日。
- ^ 「AFスプリッター」.
- ^ abc 「dm-crypt/システム全体の暗号化」。2022年5月6日閲覧。
- ^ 「LUKS 上の LVM を使用した Arch」。
- ^ 「LVM 上の LUKS: 暗号化された論理ボリュームと安全なバックアップ」。2014 年 9 月 12 日。
- ^ 「ホームディレクトリ」. systemd .
- ^ 「Windows Subsystem for Linux (WSL) 2 Linux カーネルのサービス」。Microsoft開発者ブログ。2021 年 4 月 16 日。
- ^ 「リブレクリプト」。GitHub。 2022 年 7 月 27 日。
- ^ 「ドライバーの欠陥により権限昇格が可能に。フィードバック募集 · 問題番号 38 · tdk/LibreCrypt」。GitHub。2015年9 月 30 日。
- ^ 「ドライバーは任意のデバイスへの書き込みを許可します · 問題 #39 · tdk/LibreCrypt」。GitHub。2015年10 月 7 日。
- ^ 「DragonFly の主な機能リスト」 。2022年5 月 6 日閲覧。
- ^ Michael Larabel (2016 年 5 月 8 日). 「Calamares インストーラーが LUKS 暗号化サポートを追加」. Phoronix .
- ^ 「Ubuntu でハードディスクを暗号化する方法」。Make Tech Easier。2017年 1 月 13 日。
- ^ 「PartmanCrypto」。Debian Wiki 。 2022年5月6日閲覧。
- ^ ab 「LUKS オンディスクフォーマット仕様」(PDF)。
- ^ 「CRYPTSETUP-REENCRYPT(8) マニュアルページ」man7.org .
外部リンク
- 公式サイト
- よくある質問(FAQ)
- LibreCrypt: Windows 向けの実装
- LUKS1仕様
- LUKS2仕様
