Ubuntu 15.04のカーネル4.1で新しいext4
暗号化パーティションを作成できますか?
最初に免責事項:Ubuntuでこれを行ったことはありませんが、EXT4_FS_ENCRYPTION
を有効にしたカスタムLinux 4.2.3カーネルを使用してDebian "Stretch"がインストールされたマシンでこれを行いました。
kmeawで示される指示は、投稿されたとおりに機能しません。いくつかのことは省略されました(コマンドラインパラメーターと手順)。
e2fsprogs
を更新しますランダムソルトを生成します。以下を使用して「安全な場所」に保管しました。
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
ファイルシステムでext4暗号化を使用するには、スーパーブロックで「暗号化」フラグを設定する必要があります。 ext4ファイルシステムが作成されるとき、これはデフォルトではありません。 e2fsprogs 1.43以降の「tune2fs」ユーティリティを使用して、「encrypt」オプションを設定します。
Sudo tune2fs -O encrypt /dev/sda4
カーネルが変更を認識できるようにファイルシステムをマウントまたは再マウントします(自動である場合がありますが、別のパーティションでのみこれを行っているため、わかりません)。
暗号化を有効にしてマウントされているファイルシステムにディレクトリを作成します。
Sudo mkdir -p /secret/home/$USER
Sudo chown $USER:$USER /secret/home/$USER
キーリングにキーを作成し、それを使用して、暗号化するディレクトリのポリシーを設定します(ここでSudo
コマンドは不要です)。
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
$ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
再起動するたびに、add_key
コマンドを使用して、ディレクトリとその子孫の復号化のキーを設定できます。
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
前の手順で使用したのと同じパスワードを入力すると、記述子の16進文字列を覚えておく必要はありません。
add_key
を直接使用することもできます。これはファイルシステム固有のソルトを使用します(そのパーティションの下のすべてのフォルダーは同じソルトを持ちます)
$ /usr/sbin/e4crypt add_key /secret/home/$USER
Added key with descriptor [0132fed69f946c86]
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
Linux 4.1には、ファイルシステムのディレクトリを暗号化する新しいExt4機能が付属しています。暗号化キーはキーリングに保存されます。開始するには、CONFIG_KEYS
およびCONFIG_EXT4_FS_ENCRYPTION
カーネルオプションを有効にし、カーネル4.1以降を使用していることを確認してください。
まず、e2fsprogsを少なくともバージョン1.43に更新する必要がありますが、これは執筆時点ではまだWIPであるため、 git repository から取得する必要があります。
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
e4cryptソースは、ソースコード内の関連セクションを無効にしました。misc/ e4crypt.cを編集し、714行近くの次の2行を削除することで有効にします。
printf("arg %s\n", argv[optind]);
exit(0);
次に、新しいe2fsprogsをビルドしてインストールします。
$ Sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ Sudo dpkg -i e2fsprogs_1.43-WIP_AMD64.deb
今すぐバージョンを確認してください。1.43-WIPになっているはずです。
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
キーを使用するには、keyutils
パッケージをインストールする必要があります。
$ Sudo apt-get install keyutils
暗号化するディレクトリを作成しましょう。暗号化ポリシーは、空のディレクトリでのみ設定できます。
$ Sudo mkdir -p /encrypted/dir
最初にランダムなソルト値を生成し、安全な場所に保存します:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
新しいキーを生成してキーリングに追加します。キーチェーンをフラッシュするたびにこの手順を繰り返す必要があります(再起動)
$ Sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
これで、キーの記述子がわかりました。キーチェーンにキーを追加したことを確認してください。
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
ほぼ完了しました。次に、ディレクトリの暗号化ポリシーを設定します。
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
それで全部です。キーチェーンにキーを追加せずにディスクにアクセスしようとすると、ファイル名とその内容は暗号化された意味不明なものと見なされます。ファイルシステム上で古いバージョンのe2fsckを実行するよう注意してください-暗号化されたファイル名を無効として扱います。