「Fscrypt」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(一部翻訳)
 
 
(3人の利用者による、間の10版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:ディスク暗号化]]
+
[[Category:保存ータ暗号化]]
 
[[en:Fscrypt]]
 
[[en:Fscrypt]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|ディスク暗号化}}
+
{{Related|保存ータ暗号化}}
 
{{Related|Ext4}}
 
{{Related|Ext4}}
 
{{Related|F2FS}}
 
{{Related|F2FS}}
 
{{Related articles end}}
 
{{Related articles end}}
   
  +
'''fscrypt''' は [[ext4]]、[[F2FS]]、[[Wikipedia:UBIFS|UBIFS]] [[ファイルシステム]] のネイティブファイル暗号化サポートを管理するツールです。
[[ext4]], [[F2FS]], [[Wikipedia:ja:UBIFS|UBIFS]] [[ファイルシステム]]は '''fscrypt''' (旧名 "ext4 encryption") と呼ばれる共通 API によるファイル暗号化にネイティブで対応しています。fscrypt ではディレクトリ単位で暗号化を適用できます。ディレクトリごとに別々の暗号鍵を使用することが可能です。ディレクトリを暗号化するとファイルの中身、ファイル名、シンボリックリンク全てが暗号化されます。サブディレクトリも全て暗号化されます。ファイル名以外のメタデータ、タイムスタンプや容量、ファイルの数、拡張属性などは暗号化されません。
 
   
  +
上記のファイルシステムに統合されている [https://docs.kernel.org/filesystems/fscrypt.html カーネル内の基本的な暗号化メカニズム] は、''fscrypt'' と呼ばれることもあります。曖昧さを避けるため、この記事ではカーネルの機能を ''Linux ネイティブファイル暗号化'' と呼びます。Linux ネイティブファイル暗号化では、異なるディレクトリで異なる暗号化キーを使用することができます。暗号化されたディレクトリでは、すべてのファイルの内容、ファイル名、シンボリックリンクが暗号化され。すべてのサブディレクトリも暗号化されます。タイムスタンプ、ファイルのサイズや数、拡張属性など、ファイル名以外のメタデータは暗号化されません。
'''fscrypt''' はカーネルの機能を使うための同名のユーザースペースツールの名前でもあります。この記事では [https://github.com/google/fscrypt fscrypt ツール] を使ってホームディレクトリなどを暗号化する方法を説明します。
 
   
  +
この記事は ''fscrypt'' ツール (およびオプションで ''fscrypt'' に付随する ''pam_fscrypt'') の使用を前提としているため、Linux ネイティブのファイル暗号化を設定できる他のユーザ空間ツール、例えば [[systemd-homed]] には適用できない部分がほとんどです。
== 他のディスク暗号化 ==
 
  +
  +
== 検討すべき代替案 ==
   
 
ファイルシステム全体をひとつのパスワードで保護したい場合、[[dm-crypt]] でブロックデバイス暗号化するほうが良いでしょう。その場合、ファイルシステムのメタデータも全て暗号化されます。特定のディレクトリだけを暗号化したい場合や、それぞれのディレクトリのロックを別個に解除したい場合 (ユーザーごとにホームディレクトリを暗号化するなど) は fscrypt が相応しいと思われます。
 
ファイルシステム全体をひとつのパスワードで保護したい場合、[[dm-crypt]] でブロックデバイス暗号化するほうが良いでしょう。その場合、ファイルシステムのメタデータも全て暗号化されます。特定のディレクトリだけを暗号化したい場合や、それぞれのディレクトリのロックを別個に解除したい場合 (ユーザーごとにホームディレクトリを暗号化するなど) は fscrypt が相応しいと思われます。
20行目: 22行目:
 
他の暗号化手段に関する詳細については[[ディスク暗号化]]を参照してください。
 
他の暗号化手段に関する詳細については[[ディスク暗号化]]を参照してください。
   
  +
{{Note|
{{Note|{{Pkg|e2fsprogs}} の {{ic|e4crypt}} ツールを {{ic|fscrypt}} ツールの代わりとして使うことができます。ただし、{{ic|e4crypt}} には基本的な機能が存在せず既に開発されていないため使用は推奨されません。}}
 
  +
* ''fscrypt'' を [[dm-crypt]] と組み合わせて使用​​することが可能で、各暗号化層が異なる目的を果たします。たとえば、ファイルシステム自体は、''セキュア ブート'' に関連付けられた TPM やシステムのすべてのユーザーに知られているパスワードなど、安全性の低い方法を使用して dm-crypt によって保護できますが、各ユーザーのホームディレクトリもそのユーザーのみが知っているパスワードを使用して ''fscrypt'' を実行します。
  +
* {{Pkg|e2fsprogs}} の ''e4crypt'' ツールは、''fscrypt'' ツールの代わりに使用できます。ただし、''e4crypt'' には多くの基本機能が欠けており、現在は積極的に開発されていないため、これはお勧めできません。
  +
* {{Pkg|f2fs-tools}} の ''f2fscrypt'' は ''e4crypt'' の単なるコピーであり、同様に推奨されません。
  +
}}
   
 
== 準備 ==
 
== 準備 ==
34行目: 40行目:
 
==== ext4 ====
 
==== ext4 ====
   
[[ext4]] の場合、暗号化したいファイルシステムについて {{ic|encrypt}} フラグ有効にる必要があります。そのためにはまずファイルシステムがページサイズのブロック使っていることを確認てください:
+
[[ext4]] の場合、暗号化が使用されるファイルシステムでは、{{ic|encrypt}} 機能フラグ有効になっている必要があります。有効にするには、実行ます。
 
{{hc|# tune2fs -l ''/dev/device'' {{!}} grep 'Block size'|
 
Block size: 4096
 
}}
 
 
{{hc|# getconf PAGE_SIZE|
 
4096
 
}}
 
 
上記の値が異なっている場合、ファイルシステムを暗号化することはできません。
 
 
ファイルシステムの {{ic|encrypt}} 機能を有効化するには、以下のコマンドを実行します:
 
   
 
# tune2fs -O encrypt ''/dev/device''
 
# tune2fs -O encrypt ''/dev/device''
   
  +
{{Tip|新しいファイルシステムを作成する際に {{ic|mkfs.ext4 -O encrypt}} とすることで {{ic|encrypt}} 機能をすぐに有効化できます。}}
{{Warning|{{ic|encrypt}} 機能が一度有効になると、4.1 以前の Linux はそのファイルシステムをマウントできなくなります。}}
 
 
{{Tip|
 
* 機能の有効化は {{ic|debugfs -w -R "feature -encrypt" ''/dev/device''}} で解除できます。[[fsck]] を実行してファイルシステムの整合性を確認してください。
 
* 新しいファイルシステムを作成する際に {{ic|mkfs.ext4 -O encrypt -b 4096}} とすることで {{ic|encrypt}} 機能を即座に有効化できます。
 
}}
 
   
 
==== F2FS ====
 
==== F2FS ====
63行目: 52行目:
 
=== ユーザースペースツール ===
 
=== ユーザースペースツール ===
   
{{AUR|fscrypt-git}} を[[インストール]]してください。または、以前インストールしていた場合は最新版にアップグレードしてください。それから以下のコマンドを実行:
+
{{Pkg|fscrypt}} を[[インストール]]してください。または、以前インストールしていた場合は最新版にアップグレードしてください。それから以下のコマンドを実行:
   
 
# fscrypt setup
 
# fscrypt setup
77行目: 66行目:
 
上記のコマンドで fscrypt のポリシーとプロテクターを保存するための {{ic|''mountpoint''/.fscrypt}} ディレクトリが作成されます。
 
上記のコマンドで fscrypt のポリシーとプロテクターを保存するための {{ic|''mountpoint''/.fscrypt}} ディレクトリが作成されます。
   
  +
{{Warning|{{ic|.fscrypt}} ディレクトリを削除してはいけません。そうすると暗号化されたファイルにアクセスできなくなります。}}
{{Warning|Never delete the {{ic|.fscrypt}} directory; otherwise you will lose access to your encrypted files.}}
 
   
  +
=== PAM モジュール ===
=== ディレクトリの自動アンロック ===
 
   
  +
ログイン時にログインパスフレーズで保護されたディレクトリのロックを自動的に解除し、ログインパスフレーズで保護されたディレクトリをログインパスフレーズの変更と同期させておくには、システム [[PAM]] 構成を調整して ''pam_fscrypt'' を有効にします。
If you want any encrypted directories to be protected by your login passphrase and be automatically unlocked when you log in, edit your [[PAM]] configuration to enable {{ic|pam_fscrypt}}:
 
   
In {{ic|/etc/pam.d/system-login}}, append the following line to the "auth" section:
+
{{ic|/etc/pam.d/system-login}} ''auth'' セクションに次の行を [[ヘルプ:読み方#追加, 追記, 作成, 編集|追加]] します。
   
  +
{{hc|/etc/pam.d/system-login|
auth optional pam_fscrypt.so
 
  +
auth optional pam_fscrypt.so
  +
}}
   
  +
''session'' セクションの {{ic|session include system-auth}} の '''前''' に次の行を挿入します。
Also in {{ic|/etc/pam.d/system-login}}, append the following line to the "session" section:
 
   
  +
{{hc|/etc/pam.d/system-login|2=
session optional pam_fscrypt.so drop_caches lock_policies
 
  +
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
  +
session optional pam_fscrypt.so
  +
}}
   
  +
{{Note|[https://github.com/google/fscrypt/issues/95#issuecomment-377389231 https://github.com/google/fscrypt/issues/95] から取得した最初の行は、{{ ic|systemd --user}} セッションのバイパスであり [https://github.com/systemd/systemd/issues/8598 は PAM セッションを適切に閉じず] ログアウト時のロックがブロックされます。}}
Finally, append the following line to {{ic|/etc/pam.d/passwd}}:
 
   
  +
最後に、次の行を {{ic|/etc/pam.d/passwd}} に [[ヘルプ:読み方#追加, 追記, 作成, 編集|追加]] します。
password optional pam_fscrypt.so
 
  +
  +
{{hc|/etc/pam.d/passwd|
  +
password optional pam_fscrypt.so
  +
}}
   
 
== ディレクトリの暗号化 ==
 
== ディレクトリの暗号化 ==
   
  +
空のディレクトリを暗号化したい場合、以下のコマンドを実行:
To encrypt an empty directory, run:
 
   
 
$ fscrypt encrypt ''dir''
 
$ fscrypt encrypt ''dir''
   
  +
プロンプトに従って「プロテクター」を作成あるいは選択してください。プロテクターはディレクトリの暗号鍵を保護する秘密鍵です。プロテクターの種類:
Follow the prompts to create or choose a "protector". A protector is the secret or information that protects the directory's encryption key. The types of protectors include:
 
   
* "custom_passphrase". This is exactly what it sounds like—just a passphrase that you specify.
+
* "custom_passphrase" - 名前の通り、あなたが設定するパスフレーズです。
  +
* "pam_passphrase" - 特定のユーザーのログインパスフレーズです。このタイプのプロテクターを使用するディレクトリはユーザーのログイン時に自動的に {{ic|pam_fscrypt}} によって解錠されます (有効化されている場合)。
* "pam_passphrase". This is the login passphrase for a particular user. Directories using this type of protector will be automatically unlocked by {{ic|pam_fscrypt}} (if enabled) when that user logs in.
 
   
  +
どちらの場合でも、パスフレーズは後から変更が可能で、他の方法でディレクトリを再保護することもできます。
In both cases, the passphrase can be changed later, or the directory can be re-protected with another method.
 
   
  +
カスタムパスフレーズの例:
Example for custom passphrase:
 
   
 
{{hc|$ fscrypt encrypt private/|
 
{{hc|$ fscrypt encrypt private/|
123行目: 121行目:
 
}}
 
}}
   
  +
PAM パスフレーズの例:
Example for PAM passphrase:
 
   
 
{{hc|$ fscrypt encrypt private/|
 
{{hc|$ fscrypt encrypt private/|
136行目: 134行目:
 
}}
 
}}
   
  +
{{Note|1=暗号化は空のディレクトリでのみ有効化できます。既存のディレクトリを暗号化したい場合、ファイルをコピーしてから元のファイルを削除してください。例:
{{Note|1=Encryption can only be enabled on an empty directory. If you want to encrypt an existing directory, you will need to copy and then delete the original files, e.g.:
 
   
 
$ mkdir ''new_dir''
 
$ mkdir ''new_dir''
144行目: 142行目:
 
$ rm -rf ''old_dir''
 
$ rm -rf ''old_dir''
   
  +
元のファイルを削除してもディスクからフォレンジックによって復元できる可能性があります (特に SSD を使用している場合)。データは最初から暗号化された状態にすることを推奨します。}}
Beware that the original unencrypted files may still be forensically recoverable from disk even after being shredded and deleted, especially if you are using an SSD. It is much better to keep your data encrypted from the start.
 
}}
 
   
== ディレクトリの手動アンロック ==
+
== ディレクトリのロック/ロック解除 ==
   
  +
暗号化されたディレクトリのロックを解除するには、次を実行します。
To manually unlock an encrypted directory, run:
 
   
 
$ fscrypt unlock ''dir''
 
$ fscrypt unlock ''dir''
   
  +
''fscrypt'' はパスフレーズの入力を求めます。
{{ic|fscrypt}} will prompt you for the passphrase.
 
  +
  +
暗号化されたディレクトリをロックするには、次を実行します。
  +
  +
$ fscrypt lock ''dir''
   
 
== ホームディレクトリの暗号化 ==
 
== ホームディレクトリの暗号化 ==
   
  +
{{Warning|
{{Warning|If a user's home directory is encrypted, ssh'ing to that user will not work until their home directory has been unlocked.}}
 
  +
* ログインプロテクターは、{{ic|/etc/shadow}} でのシステムのパスフレーズハッシュと同等の安全性しかありません。ログインプロテクターを使用する前に、必ず [https://github.com/google/fscrypt#securing-your-login-passphrase セキュリティに関する推奨事項] に従ってください。
  +
* ユーザーのホームディレクトリが暗号化されている場合、ホームディレクトリの暗号化が解除されるまでそのユーザーに ssh でログインできなくなります。}}
   
  +
ユーザーのホームディレクトリを暗号化するには、最初に {{ic|pam_fscrypt}} の有効化などの[[#準備|準備]]を行ってください。
To encrypt a user's home directory, first ensure you have completed all [[#Preparations|preparations]], including enabling {{ic|pam_fscrypt}}.
 
   
  +
それから、新しい暗号化ディレクトリを作成:
Then, create a new encrypted directory for the user:
 
   
 
# mkdir /home/newhome
 
# mkdir /home/newhome
167行目: 170行目:
 
# fscrypt encrypt /home/newhome --user=''user''
 
# fscrypt encrypt /home/newhome --user=''user''
   
  +
ユーザーのログインパスフレーズを使ってディレクトリを保護するオプションを選択してください。
Select the option to protect the directory with the user's login passphrase.
 
   
  +
それからユーザーのホームディレクトリの中身を暗号化ディレクトリにコピーしてください:
Then copy the contents of the user's old home directory into the encrypted directory:
 
   
 
# cp -a -T /home/''user'' /home/newhome
 
# cp -a -T /home/''user'' /home/newhome
   
  +
{{Tip|ホームディレクトリのコピーのための容量がディスクに存在しない場合、{{ic|mv -T /home/''user'' /home/newhome}} とすることもできます。ただし、これは危険です。先にバックアップを作成することを強く推奨します。}}
{{Tip|If you do not have enough disk space for a second copy of the home directory, you can use {{ic|mv -T /home/''user'' /home/newhome}} instead. However, this is unsafe. If you do this, making a backup first is strongly recommended.}}
 
   
  +
{{ic|cp}} を使用した場合、実用前にログインでディレクトリが自動的に解除されるか確認できます。一番簡単な方法は再起動してそのユーザーでログインすることです。その後、以下のコマンドを実行:
If you used the {{ic|cp}} method, you can check whether the directory is being automatically unlocked on login before you actually switch to using it. The simplest way to do this is to reboot and log in as that user. Afterwards, run:
 
   
 
{{hc|$ fscrypt status /home/newhome|2=
 
{{hc|$ fscrypt status /home/newhome|2=
189行目: 192行目:
 
}}
 
}}
   
  +
{{ic|Unlocked: No}} と表示される場合、PAM の設定に問題があるか、あるいは適切なタイプのプロテクターを選択していなかったことになります。
If it says {{ic|Unlocked: No}} instead, then something is wrong with your PAM configuration, or you did not choose the correct type of protector.
 
   
  +
そうでない場合、ホームディレクトリを置き換えてください:
Otherwise, replace the home directory:
 
   
 
# mv /home/''user'' /home/oldhome
 
# mv /home/''user'' /home/oldhome
197行目: 200行目:
 
# reboot
 
# reboot
   
  +
問題なく動いたら、古いホームディレクトリを削除できます:
If everything is working as expected, you can delete the old home directory:
 
   
 
# find /home/oldhome -type f -print0 | xargs -0 shred -n1 --remove=unlink
 
# find /home/oldhome -type f -print0 | xargs -0 shred -n1 --remove=unlink
 
# rm -rf /home/oldhome
 
# rm -rf /home/oldhome
   
{{Tip|Running [[shred]] is optional, but strongly recommended.}}
+
{{Tip|[[shred]] の実行は任意ですが、強く推奨します。}}
  +
  +
== Linux コンテナ内の暗号化 (lxc) ==
  +
  +
[[Linux Containers]](lxc)内、またはより一般的にはファイルシステムのルートディレクトリが表示されない {{man|7|mount_namespaces}} での fscrypt の使用のサポートが v0.2.8 で追加されました。
  +
  +
=== コンテナ停止時にディレクトリをロック ===
  +
  +
コンテナ内の [[systemd/ユーザー]] ユニットは、コンテナの停止時に暗号化されたディレクトリをロックすることができます。
  +
  +
{{hc|~/.config/systemd/user/lock-directory.service|2=
  +
[Unit]
  +
Description=lock encrypted directory on shutdown
  +
DefaultDependencies=no
  +
Before=shutdown.target
  +
  +
[Service]
  +
Type=oneshot
  +
ExecStart=/bin/sh -c "/usr/bin/fscrypt lock /home/facade/target"
  +
TimeoutStartSec=0
  +
  +
[Install]
  +
WantedBy=shutdown.target
  +
}}
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
See https://github.com/google/fscrypt/blob/master/README.md#troubleshooting for solutions to some common problems and also the [https://github.com/google/fscrypt/issues open issues on Github].
+
基本的な問題に対する解決方法は https://github.com/google/fscrypt/blob/master/README.md#troubleshooting [https://github.com/google/fscrypt/issues open issues on Github] を見てください。
   
 
== 参照 ==
 
== 参照 ==

2024年7月26日 (金) 19:04時点における最新版

関連記事

fscryptext4F2FSUBIFS ファイルシステム のネイティブファイル暗号化サポートを管理するツールです。

上記のファイルシステムに統合されている カーネル内の基本的な暗号化メカニズム は、fscrypt と呼ばれることもあります。曖昧さを避けるため、この記事ではカーネルの機能を Linux ネイティブファイル暗号化 と呼びます。Linux ネイティブファイル暗号化では、異なるディレクトリで異なる暗号化キーを使用することができます。暗号化されたディレクトリでは、すべてのファイルの内容、ファイル名、シンボリックリンクが暗号化され。すべてのサブディレクトリも暗号化されます。タイムスタンプ、ファイルのサイズや数、拡張属性など、ファイル名以外のメタデータは暗号化されません。

この記事は fscrypt ツール (およびオプションで fscrypt に付随する pam_fscrypt) の使用を前提としているため、Linux ネイティブのファイル暗号化を設定できる他のユーザ空間ツール、例えば systemd-homed には適用できない部分がほとんどです。

検討すべき代替案

ファイルシステム全体をひとつのパスワードで保護したい場合、dm-crypt でブロックデバイス暗号化するほうが良いでしょう。その場合、ファイルシステムのメタデータも全て暗号化されます。特定のディレクトリだけを暗号化したい場合や、それぞれのディレクトリのロックを別個に解除したい場合 (ユーザーごとにホームディレクトリを暗号化するなど) は fscrypt が相応しいと思われます。

eCryptfs とは異なり、fscrypt はスタックファイルシステムではありません。ファイルシステムによってネイティブでサポートされています。そのため fscrypt はメモリの使用量が低くなっています。また、fscrypt は最新の暗号技術を使用し、setuid バイナリを必要としません。さらに、eCryptfs は開発が止まっているため、主要なユーザーは dm-crypt (Ubuntu) や fscrypt (Android と Chrome OS) に移っています。

他の暗号化手段に関する詳細についてはディスク暗号化を参照してください。

ノート:
  • fscryptdm-crypt と組み合わせて使用​​することが可能で、各暗号化層が異なる目的を果たします。たとえば、ファイルシステム自体は、セキュア ブート に関連付けられた TPM やシステムのすべてのユーザーに知られているパスワードなど、安全性の低い方法を使用して dm-crypt によって保護できますが、各ユーザーのホームディレクトリもそのユーザーのみが知っているパスワードを使用して fscrypt を実行します。
  • e2fsprogse4crypt ツールは、fscrypt ツールの代わりに使用できます。ただし、e4crypt には多くの基本機能が欠けており、現在は積極的に開発されていないため、これはお勧めできません。
  • f2fs-toolsf2fscrypte4crypt の単なるコピーであり、同様に推奨されません。

準備

カーネル

公式サポートされているカーネルでは ext4, F2FS, UBIFS で fscrypt に対応しています。

カスタムカーネルのバージョン 5.1 以上を使っている場合、CONFIG_FS_ENCRYPTION=y を設定してください。古いカーネルの場合は ドキュメント を見てください。

ファイルシステム

ext4

ext4 の場合、暗号化が使用されるファイルシステムでは、encrypt 機能フラグが有効になっている必要があります。有効にするには、次を実行します。

# tune2fs -O encrypt /dev/device
ヒント: 新しいファイルシステムを作成する際に mkfs.ext4 -O encrypt とすることで encrypt 機能をすぐに有効化できます。

F2FS

F2FS の場合、fsck.f2fs -O encrypt または mkfs.f2fs -O encrypt を使ってください。

ユーザースペースツール

fscryptインストールしてください。または、以前インストールしていた場合は最新版にアップグレードしてください。それから以下のコマンドを実行:

# fscrypt setup

上記のコマンドで /etc/fscrypt.conf ファイルと /.fscrypt ディレクトリが作成されます。

そして、暗号化したいファイルシステムがルートファイルシステムではない場合、以下のコマンドを実行してください:

# fscrypt setup mountpoint

mountpoint はファイルシステムがマウントされているディレクトリに置き換えてください (例: /home)。

上記のコマンドで fscrypt のポリシーとプロテクターを保存するための mountpoint/.fscrypt ディレクトリが作成されます。

警告: .fscrypt ディレクトリを削除してはいけません。そうすると暗号化されたファイルにアクセスできなくなります。

PAM モジュール

ログイン時にログインパスフレーズで保護されたディレクトリのロックを自動的に解除し、ログインパスフレーズで保護されたディレクトリをログインパスフレーズの変更と同期させておくには、システム PAM 構成を調整して pam_fscrypt を有効にします。

/etc/pam.d/system-loginauth セクションに次の行を 追加 します。

/etc/pam.d/system-login
auth       optional   pam_fscrypt.so

session セクションの session include system-auth に次の行を挿入します。

/etc/pam.d/system-login
session    [success=1 default=ignore]  pam_succeed_if.so  service = systemd-user quiet 
session    optional                    pam_fscrypt.so
ノート: https://github.com/google/fscrypt/issues/95 から取得した最初の行は、systemd --user セッションのバイパスであり は PAM セッションを適切に閉じず ログアウト時のロックがブロックされます。

最後に、次の行を /etc/pam.d/passwd追加 します。

/etc/pam.d/passwd
password    optional    pam_fscrypt.so

ディレクトリの暗号化

空のディレクトリを暗号化したい場合、以下のコマンドを実行:

$ fscrypt encrypt dir

プロンプトに従って「プロテクター」を作成あるいは選択してください。プロテクターはディレクトリの暗号鍵を保護する秘密鍵です。プロテクターの種類:

  • "custom_passphrase" - 名前の通り、あなたが設定するパスフレーズです。
  • "pam_passphrase" - 特定のユーザーのログインパスフレーズです。このタイプのプロテクターを使用するディレクトリはユーザーのログイン時に自動的に pam_fscrypt によって解錠されます (有効化されている場合)。

どちらの場合でも、パスフレーズは後から変更が可能で、他の方法でディレクトリを再保護することもできます。

カスタムパスフレーズの例:

$ fscrypt encrypt private/
Should we create a new protector? [y/N] y
Your data can be protected with one of the following sources:
1 - Your login passphrase (pam_passphrase)
2 - A custom passphrase (custom_passphrase)
3 - A raw 256-bit key (raw_key)
Enter the source number for the new protector [2 - custom_passphrase]: 2
Enter a name for the new protector: Super Secret
Enter custom passphrase for protector "Super Secret":
Confirm passphrase:
"private/" is now encrypted, unlocked, and ready for use.

PAM パスフレーズの例:

$ fscrypt encrypt private/
Should we create a new protector? [y/N] y
Your data can be protected with one of the following sources:
1 - Your login passphrase (pam_passphrase)
2 - A custom passphrase (custom_passphrase)
3 - A raw 256-bit key (raw_key)
Enter the source number for the new protector [2 - custom_passphrase]: 1
Enter login passphrase for testuser:
"private/" is now encrypted, unlocked, and ready for use.
ノート: 暗号化は空のディレクトリでのみ有効化できます。既存のディレクトリを暗号化したい場合、ファイルをコピーしてから元のファイルを削除してください。例:
$ mkdir new_dir
$ fscrypt encrypt new_dir
$ cp -a -T old_dir new_dir
$ find old_dir -type f -print0 | xargs -0 shred -n1 --remove=unlink
$ rm -rf old_dir
元のファイルを削除してもディスクからフォレンジックによって復元できる可能性があります (特に SSD を使用している場合)。データは最初から暗号化された状態にすることを推奨します。

ディレクトリのロック/ロック解除

暗号化されたディレクトリのロックを解除するには、次を実行します。

$ fscrypt unlock dir

fscrypt はパスフレーズの入力を求めます。

暗号化されたディレクトリをロックするには、次を実行します。

$ fscrypt lock dir

ホームディレクトリの暗号化

警告:
  • ログインプロテクターは、/etc/shadow でのシステムのパスフレーズハッシュと同等の安全性しかありません。ログインプロテクターを使用する前に、必ず セキュリティに関する推奨事項 に従ってください。
  • ユーザーのホームディレクトリが暗号化されている場合、ホームディレクトリの暗号化が解除されるまでそのユーザーに ssh でログインできなくなります。

ユーザーのホームディレクトリを暗号化するには、最初に pam_fscrypt の有効化などの準備を行ってください。

それから、新しい暗号化ディレクトリを作成:

# mkdir /home/newhome
# chown user:user /home/newhome 
# fscrypt encrypt /home/newhome --user=user

ユーザーのログインパスフレーズを使ってディレクトリを保護するオプションを選択してください。

それからユーザーのホームディレクトリの中身を暗号化ディレクトリにコピーしてください:

# cp -a -T /home/user /home/newhome
ヒント: ホームディレクトリのコピーのための容量がディスクに存在しない場合、mv -T /home/user /home/newhome とすることもできます。ただし、これは危険です。先にバックアップを作成することを強く推奨します。

cp を使用した場合、実用前にログインでディレクトリが自動的に解除されるか確認できます。一番簡単な方法は再起動してそのユーザーでログインすることです。その後、以下のコマンドを実行:

$ fscrypt status /home/newhome
"/home/newhome" is encrypted with fscrypt.

Policy:   d80f252996aae181
Options:  padding:32 contents:AES_256_XTS filenames:AES_256_CTS
Unlocked: Yes

Protected with 1 protector:
PROTECTOR         LINKED  DESCRIPTION
5952c84ebaf0f98d  No      login protector for testuser

Unlocked: No と表示される場合、PAM の設定に問題があるか、あるいは適切なタイプのプロテクターを選択していなかったことになります。

そうでない場合、ホームディレクトリを置き換えてください:

# mv /home/user /home/oldhome
# mv /home/newhome /home/user
# reboot

問題なく動いたら、古いホームディレクトリを削除できます:

# find /home/oldhome -type f -print0 | xargs -0 shred -n1 --remove=unlink
# rm -rf /home/oldhome
ヒント: shred の実行は任意ですが、強く推奨します。

Linux コンテナ内の暗号化 (lxc)

Linux Containers(lxc)内、またはより一般的にはファイルシステムのルートディレクトリが表示されない mount_namespaces(7) での fscrypt の使用のサポートが v0.2.8 で追加されました。

コンテナ停止時にディレクトリをロック

コンテナ内の systemd/ユーザー ユニットは、コンテナの停止時に暗号化されたディレクトリをロックすることができます。

~/.config/systemd/user/lock-directory.service
[Unit]
Description=lock encrypted directory on shutdown
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/usr/bin/fscrypt lock /home/facade/target"
TimeoutStartSec=0

[Install]
WantedBy=shutdown.target

トラブルシューティング

基本的な問題に対する解決方法は https://github.com/google/fscrypt/blob/master/README.md#troubleshootingopen issues on Github を見てください。

参照