新しい4.1カーネルでUbuntu 15.04にext4暗号化パーティションを作成する方法


回答:


9

まず免責事項:私はこれを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暗号化を使用するには、スーパーブロックで「encrypt」フラグを設定する必要があります。これは、ext4ファイルシステムが作成されたときのデフォルトではありません。e2fsprogs 1.43以降の「tune2fs」ユーティリティを使用して、「暗号化」オプションを設定します。

    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.
    

Arch wikiの記事は、次のブログ投稿を読むことをお勧めします。このブログの投稿者は、いくつかの手順を簡略化するプログラムを作成しました。オプションセット、e2fsprogsはまだバージョン1.42です。
LiveWireBT 2016

うーん...私はこれらの命令を試してみましたが、私のフォルダがブロックされている...上のcp .. /secret/home/$USER/.I取得:«CP: 『/secret/home/alexis/test-top-secret-image.svg』通常のファイルを作成することはできません。必要なキーではありません利用できる»。私はあなたの指示に従っただけなので、何か変わったと思います。
Alexis Wilke

/usr/bin/e4crypt」の2番目のインスタンスの「/ [s] bin」に「s」がありません。
Alexis Wilke

3

Linux 4.1には、ファイルシステムのディレクトリを暗号化する新しいExt4機能が付属しています。暗号化キーはキーリングに保存されます。はじめに、カーネルオプションを有効にしCONFIG_KEYSCONFIG_EXT4_FS_ENCRYPTIONカーネル4.1以降を使用していることを確認してください。

まず、e2fsprogsを少なくともバージョン1.43に更新する必要があります。これは、執筆時点ではまだWIPなので、gitリポジトリからフェッチする必要があります

$ 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を実行する場合は注意してください。暗号化されたファイル名は無効として扱われます。


この回答には、深刻なフォーマットの問題がありました。私はできる限り改善しようとしましたが、なぜマークダウンフォーマットを使用し、複雑なコマンドを処理し、同時にArch wikiで同様の編集をしようとするのかは理解できませんが、プレビューでレンダリングされたガベージで、そのままにすることにします。なぜ行を削除する必要があるのか​​については、満足のいく説明や参考文献はありません。さらに、意図しない方法でdebuildを使用することをお勧めします(非debian化されたパッケージでは、Debianには実験的なパッケージがあります)が機能しません。-1
LiveWireBT 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.