1. 概要

このチュートリアルでは、Linuxでディレクトリとその内容を暗号化および復号化するために使用できるさまざまなツールを見ていきます。

2. gpgtar

gpgtar は、Linuxでディレクトリの暗号化と復号化を提供するツールです。 最初にディレクトリをアーカイブすることにより、ディレクトリを暗号化します。 次に、を使用してアーカイブを暗号化します gpgコマンド

2.1. インストール

gpgtar バイナリを取得するには、apt-getを使用してUbuntuなどのDebianベースのLinuxにgnupg-utilsをインストールします。

$ apt-get install -y gnupg-utils

次に、gpgtarコマンドが正常にインストールされたことを確認できます。

$ gpgtar --version
gpgtar (GnuPG) 2.2.19

2.2. 一般的な構文

gpgtarコマンドの一般的な構文を見てみましょう。

gpgtar [options] directory

オプションはフラグのリストであり、gpgtarコマンドの動作を変更するために指定できます。 次に、コマンドは暗号化のために1つ以上のディレクトリパスを受け入れます。

2.3. 対称鍵を使用したディレクトリの暗号化

デモンストレーションを簡単にするために、ディレクトリtop-secretを作成しましょう。

$ mkdir top-secret

そのディレクトリに、テキストファイルsecret.txtを作成します。

$ echo "this is a secret" > top-secret/secret.txt

次に、対称鍵を使用して、ディレクトリtop-secretgpgtarで暗号化します。

$ gpgtar --encrypt --symmetric --output top-secret.gpg --gpg-args="--passphrase=top-secret-passphrase --batch" top-secret

コマンドを分解して、各フラグの機能を見てみましょう。

まず、フラグ –encrypt は、ディレクトリtop-secretを暗号化するようにgpgtarに指示します。 次に、フラグ –symmetric は、対称鍵アルゴリズムを使用して暗号化を実行する必要があることを指定します。

デフォルトでは、基になる gpg コマンドは、対称鍵暗号化のパスフレーズの入力を求めます。 パスフレーズをインラインで指定するには、フラグ –passphraseを使用してパスフレーズを渡します。 さらに、プロンプトを抑制するには、フラグ –batchが必要です。 –passphraseフラグと–batchフラグはどちらも実際にはgpg オプションであるため、フラグ –gpg-args[X141Xに入れる必要があります。 ]。

最後に、暗号化されたアーカイブを top-secret.gpg として、フラグ –outputを付けて保存します。

2.4. 暗号化されたディレクトリの一覧表示

暗号化されたディレクトリを一覧表示するには、 gpgtarとフラグ–list-archiveを使用できます。

$ gpgtar --list-archive --gpg-args "--passphrase=top-secret --batch" top-secret.gpg
gpgtar: gpg: AES256 encrypted data
gpgtar: gpg: encrypted with 1 passphrase
drwxrwxr-x 0 1000/1000            0 2021-01-16 07:11:55 top-secret
-rw-rw-r-- 0 1000/1000            9 2021-01-16 07:11:55 top-secret/secret.txt

出力からわかるように、コマンドは暗号化されたアーカイブのディレクトリ構造をリストするだけです。 これは、アーカイブを明示的に復号化せずにアーカイブを確認する場合に便利な機能です。

同様に、インタラクティブなプロンプトを防ぐために、フラグ –gpg-argsを使用して同じgpgオプションのセットを提供しました。

2.5. 暗号化されたディレクトリの復号化

同じツールを使用して、アーカイブを復号化できます。

$ mkdir decrypted
$ gpgtar --decrypt --directory decrypted top-secret.gpg
gpgtar: gpg: AES256 encrypted data
gpgtar: gpg: encrypted with 1 passphrase

まず、復号化されたコンテンツを配置するためのディレクトリを作成する必要があります。 次に、フラグ –decryptを指定してgpgtar コマンドを呼び出し、アーカイブを復号化します。

3. encfs

encfs は、暗号化された仮想ファイルシステムを介してファイルシステムレベルでディレクトリ暗号化を提供するツールです。 暗号化されていないディレクトリと暗号化されたディレクトリのペアのディレクトリを使用して、暗号化されたファイルシステムを作成します。 暗号化されていないディレクトリは、暗号化されたディレクトリへの仮想マウントとして機能します。

舞台裏では、encfsは暗号化されていないディレクトリ内のすべてのファイルを暗号化します。 次に、暗号化されたファイルを暗号化されたディレクトリに保存します 。 このプロセスは、ディレクトリがアンマウントされるまで継続的に行われます。

3.1. インストール

apt-getを使用してencfsをインストールできます。

$ apt-get install -y encfs

同様に、yumを使用して同じインストールを実行できます。

$ yum install -y encfs

3.2. 一般的な構文

encfsの一般的な構文を見てみましょう。

encfs [options] rootdir mountPoint [-- [Fuse Mount Options]]

rootdir引数は、暗号化されたファイルを含むディレクトリを参照します。 一方、mountPointは、暗号化されていないファイルを含むディレクトリです。 。 用語に従って、 rootdir は暗号化されたディレクトリを指し、mountPointは暗号化されていないディレクトリを指します。

さらに、 encfs は、ヒューズマウントオプションのリストも受け入れます。これらは、マウントの作成中に基になるFUSEコマンドに渡されるオプションです。

3.3. 暗号化された仮想ファイルシステムの作成

まず、unencryptedencryptedの2つのディレクトリを作成します。

$ mkdir -p ~/<em>unencrypted</em>
$ mkdir -p ~/encrypted

次に、encfsを使用して暗号化された仮想ファイルシステムを作成できます。

$ echo "password" | encfs --standard --stdinpass ~/encrypted ~/<em>unencrypted</em>

上記のコマンドは、暗号化されたディレクトリと暗号化されていないディレクトリのペアを使用して仮想暗号化ファイルシステムを作成します。 さらに、標準構成を選択するためにフラグ –標準が指定されています。 パスワードの対話型プロンプトを防ぐために、フラグ –stdinpass が適用され、この暗号化されたファイルシステムへのパスフレーズとしてパイプされた文字列「password」を受け入れます。

コマンドを実行すると、暗号化された仮想ファイルシステムが作成され、パス〜/unencryptedにマウントされます。

encfs の機能を示すために、unencryptedフォルダーにファイルtop-secret.txtを作成しましょう。

$ cd <em>unencrypted</em>
$ echo "this is a top secret" > top-secret.txt

次に、暗号化されたディレクトリで確認できます。 これで、スクランブルされた名前の新しいファイルができました。

$ cd ../encrypted
$ ls
P2DASe2BjMlRWzPBc-XrtKoQ
$ cat P2DASe2BjMlRWzPBc-XrtKoQ
O?+?3?

予想どおり、unencryptedフォルダー内のtop-secret.txtのファイル名とコンテンツは暗号化されています。

ご覧のとおり、 encfsはファイルを自動的に暗号化し、他のディレクトリに保存します。 これは、アクティブな更新があるディレクトリを処理するときに便利な機能です。  マウントされると、それ以降の書き込みでは、新しいコンテンツを暗号化するために別のコマンドを呼び出す必要はありません。

3.4. アンマウント

対話が完了したら、マウントを解除する必要があります。 この手順は、パスワードを持たないユーザーが暗号化されていないファイルにアクセスできないようにするために重要です

暗号化されたディレクトリをfusermountでアンマウントしましょう。

$ fusermount -u ~/<em>unencrypted</em>

コマンドを実行した後、フォルダーunencryptedが空になったことを確認できます。

$ ls -l ~/<em>unencrypted</em>
total 0

暗号化されたフォルダーにはまだ暗号化されたファイルが含まれていますが、

$ ls -l encrypted
total 4
-rw-r--r-- 1 root root 29 Jan 16 13:17 P2DASe2BjMlRWzPBc-XrtKoQ

3.5. 再取り付け

暗号化されたフォルダー内のファイルを復号化するには、encfsを使用してencryptedディレクトリを再マウントする必要があります。

$ echo "password" | encfs --stdinpass ~/encrypted ~/<em>unencrypted</em>

暗号化されたディレクトリを再マウントすると、デフォルトでパスワードの入力を求められます。 このパスワードは、暗号化ファイルシステムを作成するときに入力したものです。 フラグ–stdinpass、を使用して、 encfs を作成し、標準の入力ストリームからパスワードを読み取ることができます。

ディレクトリを再マウントすると、unencryptedフォルダに暗号化されていないファイルが表示されます。

$ ls -l <em>unencrypted</em>
total 4
-rw-r--r-- 1 root root 21 Jan 16 13:17 top-secret.txt

4. 結論

この記事では、Linuxでディレクトリを暗号化および復号化するためのさまざまなコマンドラインツールについて説明しました。

gpgtarから始めました。 これは、最初にディレクトリをアーカイブし、次にそれを暗号化するツールです。

最後に、仮想暗号化ファイルシステムを作成するencfsについても説明しました。 gpgtar とは異なり、encfsは暗号化されたフォルダーの上に仮想ファイルシステムをマウントします。 次に、暗号化を透過的に実行します。