LPIC-303 新版ノート331.3 Encrypted FS / v67 Mobile Sheet Fix
LPIC-3 Security331.3Weight 3LUKS1 / eCryptfsは実践

331.3 Encrypted File Systems

「どこを暗号化しているか」を最初に分ける。dm-crypt/LUKSはBlock Device、eCryptfsはFilesystem Layer。LUKS1/eCryptfsは実際に扱い、plain dm-crypt/LUKS2はAwareness、Clevisは概念理解に止める。

最終到達点:LUKS1 Deviceを作成→open→Filesystem作成→mount→closeまで追い、/etc/crypttabでBoot時のUnlock位置を説明できる。eCryptfsの暗号化ViewとHome/PAM連携を理解し、ClevisのTPM2/Tang Pinを識別できる。
Block Device Encryptiondm-crypt / LUKS。Filesystemより下でBlock全体を暗号化する。
Filesystem EncryptioneCryptfs。既存Filesystem上に暗号化されたFileを置き、Mount時に復号Viewを作る。
01 全体像02 LUKS1実践03 LUKS運用04 eCryptfs05 Home/PAM06 Awareness/Clevis
安全:実習例は実Diskを直接初期化せず、Image File+Loop Deviceを使う。luksFormatは対象Deviceの既存Dataを利用不能にするため、実機Device名をコピーして実行しない。
331.3 · 01/0601 Encryption Model
🟡 UnderstandBlock vs Filesystem

暗号化の場所を先に分ける:dm-crypt/LUKSとeCryptfsは層が違う

このページの到達点:「Block Deviceを暗号化」なのか「Filesystem内のFileを暗号化」なのかを判断し、dm-crypt・LUKS・eCryptfsの関係を説明できる。
公式要求:Understand block device and file system encryption.
Block Device側
Physical / Virtual Block Device ↓ ciphertext dm-crypt ↑ key / mapping LUKS metadata + keyslots ↓ /dev/mapper/securedata ↓ Filesystem (ext4 等) ↓ mount
dm-crypt:Linux Device Mapperの暗号化Target。Blockを暗号化/復号する実処理側。
LUKS = Linux Unified Key Setup:dm-cryptを使いやすくするOn-disk Format。Header、暗号Parameter、Keyslot等を管理する。LUKSそのものが別の暗号Engineなのではない。

eCryptfsはFilesystem Layer

Underlying Directory 暗号化されたFileが保存 ↓ eCryptfs mount Decrypted View (mount point) ↓ Application / Userが通常Fileとして利用
dm-crypt + LUKSeCryptfs
暗号化単位Block DeviceFile / Filesystem Layer
暗号化Dataを見る場所Device上のBlockLower DirectoryのFile
復号後/dev/mapper/*というBlock DeviceMount Pointに復号View
EXAM DECISION

「Filesystemより下か、上か」で分ける

  • /dev/mapper/...を作る → dm-crypt/LUKS
  • Directoryを別DirectoryへeCryptfsとしてmount → eCryptfs
  • LUKS = Header/Keyslotを持つFormat、dm-crypt = Block暗号化処理
331.3 · 02/0602 LUKS1 Practical
🔴 Usedm-crypt + LUKS1

LUKS1:Format → Open → Mapper → Filesystem → Mountを実際の変化で追う

このページの到達点:現在のcryptsetupがLUKS2をDefaultにする点を踏まえ、--type luks1を明示してLUKS1を作成・Open・確認・Closeできる。
公式要求:Use dm-crypt with LUKS1 to encrypt block devices. Partial utility: cryptsetup including relevant subcommands.
破壊的操作:cryptsetup luksFormatは対象Deviceを暗号化Containerとして初期化する。以下はTraining用Image FileをLoop Deviceへ割り当てる例。

1. 安全なTraining Deviceを用意

truncate -s 256M luks1.img sudo losetup --find --show luks1.img # 例: /dev/loop7 を返す。以降は実際の返り値へ置換

2. LUKS1としてFormat

sudo cryptsetup luksFormat --type luks1 /dev/loop7 sudo cryptsetup isLuks /dev/loop7 sudo cryptsetup luksDump /dev/loop7
luksFormat
LUKS Headerを作成し、最初のPassphrase/Keyslotを設定する。
--type luks1
現行cryptsetupは通常LUKS2がDefaultなので、LPIC-303の実践対象LUKS1を明示。
isLuks
対象がLUKS Deviceか判定。
luksDump
Version、Cipher、UUID、Keyslot等のHeader情報を読む。

3. OpenするとMapper Deviceが生まれる

sudo cryptsetup open --type luks1 /dev/loop7 securedata sudo cryptsetup status securedata ls -l /dev/mapper/securedata
Before
/dev/loop7
ciphertext Device
After open
/dev/mapper/securedata
decrypted Block view

4. Mapper上にFilesystemを作ってMount

sudo mkfs.ext4 /dev/mapper/securedata sudo mkdir -p /mnt/securedata sudo mount /dev/mapper/securedata /mnt/securedata sudo sh -c 'echo LPIC303 > /mnt/securedata/test.txt' cat /mnt/securedata/test.txt
重要:Filesystemを作るのは暗号化元/dev/loop7ではなく、Open後の/dev/mapper/securedata
EXAM DECISION

LUKS1の操作順

  • luksFormat → Container/Header作成
  • open/dev/mapper Mapping作成
  • mkfs/mount → 復号Block DeviceをFilesystemとして利用
331.3 · 03/0602 LUKS1 Management
🔴 UseKeyslot / crypttab

LUKS1運用:Keyslot・Close・Boot時Unlockを同じLifecycleで理解する

このページの到達点:Keyslot管理、MappingのClose、/etc/crypttabの4 Field、cryptmountの位置を区別できる。

Keyslotは「Volume Keyを開くCredentialの入口」

sudo cryptsetup luksDump /dev/loop7 sudo cryptsetup luksAddKey /dev/loop7 sudo cryptsetup luksChangeKey /dev/loop7 # 不要Keyを削除する場合 sudo cryptsetup luksRemoveKey /dev/loop7
考え方:LUKSはDataをPassphraseそのもので直接暗号化するのではなく、Volume Keyを使い、そのVolume Keyへ到達するKeyslotをPassphrase等で保護する。複数Keyslotなら複数Credentialを登録できる。
最後の有効Keyを失わない:Keyslot削除はUnlock手段を失う操作。現在使えるCredentialを確認してから行う。

使い終わったらFilesystem → Mappingの順に閉じる

sudo umount /mnt/securedata sudo cryptsetup close securedata sudo losetup -d /dev/loop7
close/dev/mapper/securedata Mappingを削除する。暗号化元Device上のciphertextが消えるわけではない。

/etc/crypttabはMount設定ではなくUnlock設定

Boot ↓ /etc/crypttab ↓ encrypted Block DeviceをOpen /dev/mapper/securedata ↓ Filesystem mount(/etc/fstab等)
Field 1: volume-name
/dev/mapper/<name>になるMapping名。
Field 2: encrypted-device
暗号化元Device。UUID指定も可能。
Field 3: key-file
Key File Path。省略/none/-ではsystemdが既定Key Fileを探し、見つからなければBoot時のPassword入力へ進む。
Field 4: options
Device TypeやUnlock動作等のOption。
# 例(Device UUIDは環境に合わせる) securedata UUID=<LUKS-UUID> none luks
systemd環境:/etc/crypttabはBoot時にsystemd-cryptsetupのUnitへ展開され、暗号化DeviceをOpenする。Filesystem mountとは別段階。

cryptmount

cryptmountは設定済み暗号化Filesystemのmount/unmountを補助し、管理者が初期設定した後は一般UserがPasswordを与えて扱えるようにするTool。LPIのPartial listなので、ここでは役割と代表操作を識別する。

cryptmount TARGET cryptmount --unmount TARGET cryptmount --change-password TARGET
EXAM DECISION

設定場所を混ぜない

  • crypttab → encrypted DeviceをOpen
  • fstab等 → Open後のFilesystemをMount
  • cryptmount → 設定済み暗号化Filesystem操作を補助
331.3 · 04/0603 eCryptfs Manual
🔴 UseeCryptfs

eCryptfs:Lower DirectoryのciphertextとMount Pointのplaintext Viewを分ける

このページの到達点:eCryptfsを手動mountし、Lower Directoryと復号Viewの関係、mount/umount helper、ecryptfs系Utilityの役割を説明できる。
公式要求:Use eCryptfs to encrypt file systems. Partial list: ecryptfsd, ecryptfs-* commands, mount.ecryptfs, umount.ecryptfs.
同じFileを2つのViewで見る
/srv/ecrypt-lower encrypted file names/data ↓ mount -t ecryptfs /mnt/ecrypt-view decrypted filename/content ↓ Application

Manual Mount

sudo mkdir -p /srv/ecrypt-lower /mnt/ecrypt-view sudo mount -t ecryptfs /srv/ecrypt-lower /mnt/ecrypt-view
mount.ecryptfs:mount -t ecryptfsから呼ばれるMount Helper。Passphrase/Key Signature、Cipher、Key bytes、filename encryption等の設定を補助する。
Viewの違い
echo secret | sudo tee /mnt/ecrypt-view/note.txt sudo cat /mnt/ecrypt-view/note.txt sudo ls /srv/ecrypt-lower

Mount Point側では通常Fileとして読める一方、Lower Directoryには暗号化されたDataが保存される。

Unmount

sudo umount /mnt/ecrypt-view # umount.ecryptfs helperはUnmount時にKeyringのKey unlinkも補助する

ecryptfs-*は用途別に見る

Utility例主な役割
ecryptfs-add-passphrasePassphrase由来KeyをKernel Keyringへ追加
ecryptfs-managereCryptfs Key管理Interface
ecryptfs-recover-private暗号化Private DirectoryのRecovery支援
ecryptfs-setup-privateUser Private Directory/Home連携用の初期設定
ecryptfsd:Userspace daemon。eCryptfs Kernel ModuleからのPublic-key requestを処理するためのDaemonで、Public Key Moduleを使うMount時に必要になる。単純なPassphrase Mountで常に必要という意味ではない。
EXAM DECISION

eCryptfsはDirectory View

  • Lower Directory = encrypted representation
  • Mount Point = decrypted view
  • Block Device Mapperを作るLUKSとは層が違う
331.3 · 05/0603 eCryptfs Home / PAM
🔴 UseHome + PAM

eCryptfs Home / PAM:Login PasswordでMount Passphraseをunwrapし、自動Mountする

このページの到達点:User loginとeCryptfs Private Directoryの自動Mountが、wrapped passphrase・Kernel Keyring・PAMでどうつながるか説明できる。
公式要求:Use eCryptfs including home directories and PAM integration. Partial utility: pam_ecryptfs.
LoginからMountまで
User Login Password ↓ pam_ecryptfs.so unwrap ~/.ecryptfs/wrapped-passphrase ↓ mount passphraseをunwrap Kernel KeyringへKey ↓ ~/.Private (encrypted) ↓ eCryptfs mount ~/Private (decrypted view)
2つのPassphrase:Login PasswordそのものをData Encryption Keyとして使うのではない。Login Passwordで、保存されているwrapped mount passphraseをunwrapし、そのKeyをMountへ使う構成。

Private Directoryの代表構成

Path役割
~/.Private暗号化Dataが保存されるLower Directory
~/PrivateMount中に見える復号View
~/.ecryptfs/Private.sigMount Passphrase Signature情報
~/.ecryptfs/wrapped-passphraseLogin Passwordで保護されたMount Passphrase

Home Directory自体を対象にするUtility

Utility位置付け
ecryptfs-setup-privatePrivate Directoryを初期化。実装/Versionによっては新規UserのHome全体を暗号化するbootstrap/all-home系Optionも持つ。
ecryptfs-migrate-home -u USER既存User HomeをeCryptfs暗号化Homeへ移行するUtility。Backup・Logout・十分な空き容量が必要な高Risk操作。
Home migrationは実習で安易に実行しない:ecryptfs-migrate-homeは既存Homeを移行するため、失敗時にData LossやLogin不能のRiskがある。ここでは「Home Directory暗号化を実現するUtility」として流れを理解する。

PAM integration

# Debian/Ubuntu系の代表例。PAM File名はDistribution依存 # /etc/pam.d/common-auth auth required pam_ecryptfs.so unwrap # /etc/pam.d/common-session session optional pam_ecryptfs.so unwrap
auth:Login Credentialでwrapped passphraseをunwrapする。
session:Session開始時にPrivate Directoryの自動Mountへつなぐ。
Distribution差:PAM StackのFile名や配置はDistributionにより異なる。試験ではpam_ecryptfsがLoginとeCryptfs Home/Private Mountを結ぶ役割を理解する。
EXAM DECISION

Home暗号化の流れ

  • encrypted storage → ~/.Private
  • decrypted view → ~/Private
  • Login連携 → pam_ecryptfs.so
  • Login Password → wrapped mount passphraseのunwrapに使用
331.3 · 06/0604 Awareness / Clevis
⚪ Awareness🟡 Conceptual

plain dm-crypt / LUKS2 / Clevis:要求深度を上げすぎず違いを固定する

このページの到達点:plain dm-cryptとLUKSを区別し、LUKS2の代表Featureを識別し、ClevisがTPM2またはTang/NBDEを使ってLUKS Unlockを自動化する構造を説明できる。
公式要求:Awareness of plain dm-crypt / LUKS2 features. Conceptual understanding of Clevis for LUKS devices and Clevis PINs for “TMP2” and NBDE/Tang. ※LPI英語ページは現在TMP2と表記しているが、技術としてはTPM2(Trusted Platform Module 2.0)を指す。

plain dm-crypt

LUKSHeader / UUID / Keyslot等のMetadataを持ち、cryptsetupが必要Parameterを読める。
plain dm-cryptLUKS Headerを持たない。Cipher/Key/Offset等のParameterを外部で一致させる必要がある。
# Awareness用の代表形 cryptsetup open --type plain DEVICE NAME
深掘りしない:plain modeの全Cipher Parameterを暗記するのではなく、「LUKS Metadata/Keyslotなし」を識別する。

LUKS2 Awareness

LUKS2の代表Feature意味
拡張しやすいJSON MetadataLUKS1よりMetadata構造を拡張しやすい。
Argon2 PBKDFPassphraseからKeyを導出する処理でMemory-hardなArgon2を利用可能。
より多いKeyslotDefaultで最大32 Keyslot。
Header redundancyHeader Copyを持ち、Metadata破損への耐性を改善。
現行cryptsetupのDefault:luksFormatでVersionを指定しない場合、通常LUKS2。だから331.3のLUKS1実習では--type luks1を明示した。

Clevis / PIN / TPM2 / Tang

LUKS Device ↓ Clevisへbind Clevis Policy ├─ tpm2 PIN → TPM2の条件/Platform Stateを使う └─ tang PIN → Tang Serverへ到達できるNetwork条件を使う ↓ NBDE ↓ 条件成立 自動Unlock
Clevis
Policy-Based DecryptionのClient Framework。LUKS Volume等を指定条件にbindして自動Unlockへ利用。
PIN
ClevisのPlugin/Policy実装。tpm2tang等。
TPM2
Trusted Platform Module 2.0。Machine/Platform側のHardware Trustを利用してUnlock条件を作る。
Tang / NBDE
Network Bound Disk Encryption。選択したTang Serverへ到達できるNetwork環境をUnlock条件に利用。TangはClientのDisk Encryption Keyそのものを保管するKey Escrow Serverではない。
# 概念を確認する代表形。操作暗記が目的ではない clevis luks bind -d /dev/sdXn tang '{"url":"http://tang.example"}' clevis luks bind -d /dev/sdXn tpm2 '{}'
331.3 EXIT CHECK
Block EncryptionとFilesystem Encryptionを区別
LUKS1をluksFormat→open→mount→closeで扱う
crypttabとFilesystem mountを分ける
eCryptfs manual/Home/PAMを説明
plain dm-crypt/LUKS2はAwareness
Clevis tpm2/tang PINをConceptualに説明
331.3 COMPLETE

「どこを暗号化」「どこでUnlock」で判断する

  • Block Device → dm-crypt/LUKS
  • Directory/File Layer → eCryptfs
  • Boot Unlock → crypttab
  • LoginとPrivate Directory → pam_ecryptfs
  • Policy-Based auto unlock → Clevis + TPM2/Tang
331.3 Encrypted FS · CHECKPOINTObjective末尾
Weight 3客観判定50 → 75 → 100%

331.3 Encrypted FS:学習直後にここで解く

本文を読み終えた直後に、そのObjectiveだけを確認する。別ページへ移動して問題を探さない。誤答した問題から該当ノートへ戻り、再度ここへ戻る。

合格条件: 50%は基礎選択式7問中6問以上、75%は選択肢なし再現6問中5問以上。75%到達から72時間後、専用実戦Bankから9問中8問以上で100%。さらに各段階で全小テーマを最低1問正解する必要がある。毎回Question Bankからランダム出題する。
現在の到達度
選択式から開始
0%
問題プール 33問小テーマ 5 実戦Bank 12問直近重複を抑制未出題優先
小テーマ別履歴問題を解くと正答率を表示
全体到達度を見る

Objective Check

100%専用: 72時間後の再テストでは既存564問ではなく、このObjective専用の実戦相当12問から出題する。各問はObjectiveの要求深度に合わせて、状況判断・設定/出力読解・近い選択肢の比較を行い、必要な分野では穴埋め・複数選択も使用する。誤答時は選択肢の違いまで確認する。
出題方式:初回は小テーマをできるだけ横断し、未出題・出題回数の少ない問題を優先する。再挑戦では小テーマ網羅より直近問題の重複回避を優先し、必要な場合だけ再利用する。
この問題の役割:Objective理解の客観Checkpoint。50%/75%はObjective理解の確認、100%は専用実戦Bankで状況判断・設定/出力読解・近い選択肢まで確認する。