「Fscrypt」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(一部翻訳)
 
(翻訳)
77行目: 77行目:
 
上記のコマンドで 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]] の設定を編集して {{ic|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" セクションに以下の行を追加:
   
 
auth optional pam_fscrypt.so
 
auth optional pam_fscrypt.so
   
Also in {{ic|/etc/pam.d/system-login}}, append the following line to the "session" section:
+
また、{{ic|/etc/pam.d/system-login}} "session" セクションに以下の行を追加:
   
 
session optional pam_fscrypt.so drop_caches lock_policies
 
session optional pam_fscrypt.so drop_caches lock_policies
   
Finally, append the following line to {{ic|/etc/pam.d/passwd}}:
+
最後に、{{ic|/etc/pam.d/passwd}} に以下の行を追加:
   
 
password optional pam_fscrypt.so
 
password optional pam_fscrypt.so
97行目: 97行目:
 
== ディレクトリの暗号化 ==
 
== ディレクトリの暗号化 ==
   
  +
空のディレクトリを暗号化したい場合、以下のコマンドを実行:
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行目: 123行目:
 
}}
 
}}
   
  +
PAM パスフレーズの例:
Example for PAM passphrase:
 
   
 
{{hc|$ fscrypt encrypt private/|
 
{{hc|$ fscrypt encrypt private/|
136行目: 136行目:
 
}}
 
}}
   
  +
{{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行目: 144行目:
 
$ 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''
   
{{ic|fscrypt}} will prompt you for the passphrase.
+
{{ic|fscrypt}} はパスフレーズの入力を要求します。
   
 
== ホームディレクトリの暗号化 ==
 
== ホームディレクトリの暗号化 ==
   
  +
{{Warning|ユーザーのホームディレクトリが暗号化されている場合、ホームディレクトリの暗号化が解除されるまでそのユーザーに ssh でログインできなくなります。}}
{{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|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行目: 166行目:
 
# 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行目: 188行目:
 
}}
 
}}
   
  +
{{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行目: 196行目:
 
# 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]] の実行は任意ですが、強く推奨します。}}
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
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] を見てください。
   
 
== 参照 ==
 
== 参照 ==

2019年12月19日 (木) 22:01時点における版

関連記事

ext4, F2FS, UBIFS ファイルシステムfscrypt (旧名 "ext4 encryption") と呼ばれる共通 API によるファイル暗号化にネイティブで対応しています。fscrypt ではディレクトリ単位で暗号化を適用できます。ディレクトリごとに別々の暗号鍵を使用することが可能です。ディレクトリを暗号化するとファイルの中身、ファイル名、シンボリックリンク全てが暗号化されます。サブディレクトリも全て暗号化されます。ファイル名以外のメタデータ、タイムスタンプや容量、ファイルの数、拡張属性などは暗号化されません。

fscrypt はカーネルの機能を使うための同名のユーザースペースツールの名前でもあります。この記事では fscrypt ツール を使ってホームディレクトリなどを暗号化する方法を説明します。

他のディスク暗号化

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

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

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

ノート: e2fsprogse4crypt ツールを fscrypt ツールの代わりとして使うことができます。ただし、e4crypt には基本的な機能が存在せず既に開発されていないため使用は推奨されません。

準備

カーネル

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

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

ファイルシステム

ext4

ext4 の場合、暗号化したいファイルシステムについて encrypt フラグを有効にする必要があります。そのためにはまず、ファイルシステムがページサイズのブロックを使っていることを確認してください:

# tune2fs -l /dev/device | grep 'Block size'
Block size:               4096
# getconf PAGE_SIZE
4096

上記の値が異なっている場合、ファイルシステムを暗号化することはできません。

ファイルシステムの encrypt 機能を有効化するには、以下のコマンドを実行します:

# tune2fs -O encrypt /dev/device
警告: encrypt 機能が一度有効になると、4.1 以前の Linux はそのファイルシステムをマウントできなくなります。
ヒント:
  • 機能の有効化は debugfs -w -R "feature -encrypt" /dev/device で解除できます。fsck を実行してファイルシステムの整合性を確認してください。
  • 新しいファイルシステムを作成する際に mkfs.ext4 -O encrypt -b 4096 とすることで encrypt 機能を即座に有効化できます。

F2FS

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

ユーザースペースツール

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

# fscrypt setup

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

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

# fscrypt setup mountpoint

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

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

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

ディレクトリの自動アンロック

ログイン用のパスフレーズで暗号化ディレクトリを保護して、ログイン時に自動的にロックを解除したい場合、PAM の設定を編集して pam_fscrypt を有効化してください:

/etc/pam.d/system-login の "auth" セクションに以下の行を追加:

auth            optional   pam_fscrypt.so

また、/etc/pam.d/system-login の "session" セクションに以下の行を追加:

session         optional   pam_fscrypt.so       drop_caches lock_policies

最後に、/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 はパスフレーズの入力を要求します。

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

警告: ユーザーのホームディレクトリが暗号化されている場合、ホームディレクトリの暗号化が解除されるまでそのユーザーに 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 の実行は任意ですが、強く推奨します。

トラブルシューティング

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

参照