はじめに
本記事では、ファイル暗号化についてサクッと理解して、特にLPIC試験で頻出の
LUKS(Linux Unified Key Setup) についての理解を座学と実践で深めます。
ファイル暗号化の種類
Linux環境では主に次のような暗号化方法があります。
1. ファイル単体の暗号化
ファイル単位で暗号化する方法です。
例として GPG(GNU Privacy Guard) を使う方法:
gpg -c secret.txt
復号は:
gpg secret.txt.gpg
これはファイル単位の暗号化として手軽で、外部に送信するファイルの保護などに向いています。
2. ファイルシステム単位の暗号化
ファイルやフォルダの集合体全体を保護したい場合は、ファイルシステム(ディスク領域)ごとの暗号化が適しています。代表例として LUKS(Linux Unified Key Setup) があります。
LUKSの特徴
- Linux 標準の ブロックデバイス暗号化仕様
- デバイス全体を暗号化
- パスフレーズやキーで保護
-
device-mapperを利用した仮想デバイスを生成
LUKS は、暗号化されたデバイスを作成し、そこにファイルシステムを作成してマウントする仕組みです。暗号化そのものはディスクブロックレベルで行われ、ファイルがその上に作成されます。
構成イメージ:
/dev/sdb1
↓ cryptsetup
/dev/mapper/secure_disk
↓ mkfs
/mnt/secure
LUKSを試してみる
実際に暗号化されたファイルシステムを作成・利用する手順を紹介します。
※ 以下の操作は 指定したデバイスのデータをすべて消去 します。
検証用デバイスで実行してください。
① 暗号化領域の初期化(luksFormat)
まず、暗号化対象となるブロックデバイスを LUKS形式で初期化します。
sudo cryptsetup luksFormat /dev/sdb1
- 指定したデバイスに LUKS ヘッダを作成
- パスフレーズを設定(復号時に必要)
- 既存データは完全に削除される
② 暗号化デバイスを開く(luksOpen)
次に、暗号化されたデバイスを開きます。
sudo cryptsetup luksOpen /dev/sdb1 luks1
- パスフレーズを入力すると解除される
-
/dev/mapper/luks1という 仮想ブロックデバイス が作成される
👉 以降の操作は /dev/mapper 配下 を対象に行います。
③ ファイルシステムを作成する
暗号化デバイスの上に、通常のファイルシステムを作成します。
sudo mkfs.ext4 /dev/mapper/luks1
※ ext4 の代わりに xfs なども使用可能です。
④ マウントする
作成したファイルシステムをマウントします。
sudo mount /dev/mapper/luks1 /mnt
これで /mnt 配下は 暗号化された領域 として利用できます。
通常のディレクトリと同じようにファイル操作が可能です。
⑤ アンマウントと暗号化デバイスのクローズ
利用が終わったら、マウント解除とデバイスクローズを行います。
sudo umount /mnt
sudo cryptsetup luksClose luks1
-
/dev/mapper/luks1が削除される - 再度利用する際は、再び
luksOpenが必要
補足:状態確認
暗号化デバイスの状態は以下で確認できます。
sudo cryptsetup status luks1
以上です!