LUKSとは
LUKS(Linux Unified Key Setup)は、Linuxにおける標準的なディスク暗号化仕様です。dm-cryptカーネルモジュールと連携し、ブロックデバイス(HDD、SSD、USBメモリなど)を透過的に暗号化します。
LUKSの主な特徴:
- 標準化された仕様:ヘッダーフォーマットが公開されており、互換性が高い
- 複数のパスフレーズ:最大8つのキースロットで異なるパスフレーズを設定可能
- 堅牢なKDF:LUKS2ではArgon2idを使用し、ブルートフォース攻撃に強い
- ヘッダーバックアップ:暗号化ヘッダーをバックアップ・復元可能
LUKSの基本操作
暗号化ボリュームの作成
# LUKS2でディスクを暗号化
sudo cryptsetup luksFormat --type luks2 /dev/sdb1
# デフォルト設定を確認
# - 暗号: AES-XTS
# - 鍵長: 512ビット(AES-256)
# - PBKDF: Argon2id
# カスタム設定で作成
sudo cryptsetup luksFormat --type luks2 \
--cipher aes-xts-plain64 \
--key-size 512 \
--hash sha512 \
--pbkdf argon2id \
--pbkdf-memory 1048576 \
/dev/sdb1
暗号化ボリュームのマウント
# ボリュームを開く(復号化)
sudo cryptsetup open /dev/sdb1 encrypted_volume
# ファイルシステムを作成(初回のみ)
sudo mkfs.ext4 /dev/mapper/encrypted_volume
# マウント
sudo mount /dev/mapper/encrypted_volume /mnt/secure
# アンマウントとクローズ
sudo umount /mnt/secure
sudo cryptsetup close encrypted_volume
AIエンジニアとしての実体験
機密性の高いAI学習データを保管するストレージサーバーで、LUKSによるフルディスク暗号化を導入しました。特に、個人情報を含む医療データや金融データの取り扱いでは、ディスク暗号化が規制要件となることがあります。
# 既存のLUKSボリュームの情報確認
sudo cryptsetup luksDump /dev/sdb1
# キースロットの追加(バックアップ用パスフレーズ)
sudo cryptsetup luksAddKey /dev/sdb1
# キースロットの削除
sudo cryptsetup luksRemoveKey /dev/sdb1
自動マウントの設定
# /etc/crypttab に追加
# encrypted_volume UUID=xxxx-xxxx-xxxx none luks
# /etc/fstab に追加
# /dev/mapper/encrypted_volume /mnt/secure ext4 defaults 0 2
# キーファイルを使用した自動マウント(セキュリティ注意)
dd if=/dev/urandom of=/root/keyfile bs=4096 count=1
chmod 600 /root/keyfile
sudo cryptsetup luksAddKey /dev/sdb1 /root/keyfile
# /etc/crypttab
# encrypted_volume UUID=xxxx-xxxx-xxxx /root/keyfile luks
自社サーバー運用への応用
ルートパーティションの暗号化
多くのLinuxディストリビューションは、インストール時にルートパーティションのLUKS暗号化をサポートしています。起動時にパスフレーズを入力する必要があります。
リモートサーバーでの暗号化
クラウドやデータセンターのサーバーでは、リブート時にパスフレーズを入力する仕組み(dropbear-initramfsなど)を設定することで、リモートでの復号化が可能です。
# dropbear-initramfsのインストール(Debian/Ubuntu)
sudo apt install dropbear-initramfs
# SSH鍵の設定
sudo vim /etc/dropbear-initramfs/authorized_keys
# initramfsの更新
sudo update-initramfs -u
関連ブログ記事
📝 関連記事
最新動向(2026年)
LUKS2の普及
LUKS2は2018年に導入され、現在では多くのディストリビューションでデフォルトとなっています。Argon2id KDFにより、LUKS1よりも強力なブルートフォース攻撃耐性を持ちます。
OPAL自己暗号化ドライブとの連携
SSD内蔵の暗号化機能(TCG Opal)とLUKSを組み合わせることで、パフォーマンスを犠牲にせずにセキュリティを強化できます。
トラブル事例と対策
⚠️ ヘッダー破損によるデータ損失
問題:LUKSヘッダーが破損するとすべてのデータにアクセス不能
対策:cryptsetup luksHeaderBackupでヘッダーをバックアップし、安全な場所に保管
# ヘッダーバックアップ
sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file luks_header_backup.img
# ヘッダー復元
sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file luks_header_backup.img
⚠️ パスフレーズ忘れ
問題:すべてのキースロットのパスフレーズを忘れるとデータ復旧不可能
対策:複数のキースロットに異なるパスフレーズを設定、セキュアな場所に記録
権威あるリソース
LUKSのメリット・デメリット
- メリット:Linux標準。多くのディストリビューションのインストーラーに組み込まれており、追加ソフトウェアなしで利用できる。
- メリット:オープンな仕様。ヘッダーフォーマットが公開されており、異なるツール・ディストリビューション間でも相互運用性が高い。
- メリット:複数パスフレーズ。最大8つのキースロットに異なるパスフレーズや鍵ファイルを登録でき、チーム運用や復旧用バックアップに便利。
- デメリット:起動時の入力が必要。ルートパーティションを暗号化した場合、リブートのたびにパスフレーズ入力が必要になり、無人サーバーではリモート復号の仕組み(dropbear-initramfs等)を別途構築する必要がある。
- デメリット:ヘッダー破損時のリスク。LUKSヘッダーが破損するとデータ全体にアクセスできなくなるため、ヘッダーバックアップが必須運用となる。
- デメリット:Linux以外との互換性。Windows・macOSではネイティブに読み書きできず、クロスプラットフォームでの共有には不向き。
主要なディスク暗号化方式との違い
| 項目 | LUKS(Linux) | BitLocker(Windows) | FileVault(macOS) |
|---|---|---|---|
| 暗号方式 | AES-XTS(デフォルト) | AES-XTS/AES-CBC | AES-XTS |
| 鍵導出関数 | Argon2id(LUKS2) | PBKDF2 | PBKDF2 |
| TPM連携 | systemd-cryptenroll等で対応可能 | 標準でTPM連携 | Apple Silicon等のSecure Enclaveと連携 |
| オープンソース | はい(cryptsetupプロジェクト) | いいえ(Microsoft独自) | いいえ(Apple独自) |
クロスプラットフォームでの互換性が必要な場合は、Windows・macOS・Linuxすべてに対応するVeraCryptのようなツールを検討する選択肢もあります。ただし、Linuxのシステムパーティション暗号化においてはLUKSがカーネル標準(dm-crypt)と密結合しており最も安定した選択です。
関連用語
よくある質問(FAQ)
Q. LUKS(Linux Unified Key Setup)とは何ですか?
LUKSはLinuxのディスク暗号化標準規格です。dm-crypt(Linux カーネルの暗号化レイヤー)の上に構築され、AES-XTS等でパーティション・ボリューム全体を暗号化します。Ubuntu・Fedora等のインストーラーでの「ディスク全体暗号化」オプションがLUKS2を使用しています。
Q. LUKSでディスクを暗号化するにはどうすればよいですか?
cryptsetup luksFormat /dev/sdX でパーティションをLUKS形式で初期化し、cryptsetup luksOpen /dev/sdX myvolume でマッピング、mkfs.ext4 /dev/mapper/myvolume でフォーマット、mount /dev/mapper/myvolume /mnt でマウントします。起動時の自動マウントには/etc/crypttabと/etc/fstabを設定します。
Q. LUKS1とLUKS2の違いは何ですか?
LUKS2(2018年以降)はLUKS1の後継で、新しい鍵導出関数Argon2をサポート(LUKS1はPBKDF2のみ)し、ヘッダーバックアップ機能が改善されています。またJSONベースのメタデータで拡張性が高く、Sectrue(完全性保護)もサポートします。Ubuntu 20.04以降はデフォルトでLUKS2を使用しています。
