ウェブサイト検索

tarとgpgを使って圧縮された暗号化アーカイブを作成する方法


圧縮された暗号化ファイルアーカイブを作成したい理由は多くあります。個人ファイルの暗号化バックアップを作成したい場合もあるでしょう。また、友人や同僚とウェブやクラウドストレージを通じてコンテンツをプライベートに共有したい場面も考えられます。Tar.gzファイル、または圧縮されたtarballsは、tarコマンドを使用して作成されます。これらのtarballはGNU/Linuxでのアーカイブの標準的なフォーマットですが、暗号化されていません。上記のシナリオでは、データを保護するために暗号化が望ましいことがよくあります。ここでgpgの出番です。

gpgは、ファイルの暗号化、電子メールの暗号化、署名されたファイルの整合性を確認することができる非常に多用途な暗号化ツールです。

このチュートリアルではあなたが学ぶことになります:

  • tarを使用して圧縮アーカイブを作成するために
  • パイプライン内でgpgを使用してtarで暗号化された圧縮アーカイブを作成するために
  • ディレクトリの複数の個別の暗号化アーカイブを作成するために
  • ネットワークを介してこれらのアーカイブをコピーするためのクイックで簡単な方法として、パイプラインにnetcatを追加する

tarとgpgを使って圧縮された暗号化アーカイブを作成する方法

使用されるソフトウェア要件と規約

圧縮アーカイブを作成する

暗号化されたアーカイブの作成について議論する前に、まず圧縮tarアーカイブの作成方法を確認しましょう。アーカイブしたいフォルダー名がfolderであると仮定して、次のコマンドを入力します。

tar -cvzf folder.tar.gz folder

コマンドの -c フラグはアーカイブを作成するために使用され、-v は詳細出力のために使用され、これによりプロセスが進行中であることを視覚的に確認できます。-z はアーカイブを圧縮するために使用され、ファイルサイズを小さくします。

このアーカイブを解凍して抽出するために、次のコマンドを入力します。

tar -xvzf folder.tar.gz

-x フラグはアーカイブを抽出するために使用され、-v は冗長な抽出用で、-z はアーカイブを解凍するために使用されます。

暗号化されたアーカイブを作成する

アーカイブを作成する方法を tar を使って確認したので、今度は gpg を加えることで暗号化されたアーカイブを作成する方法を見ていきましょう。キーに基づく暗号化、パスワードに基づく暗号化、またはその両方の組み合わせを使用することができます。すでに「GPGで個別ファイルを暗号化および復号化する方法」という記事でキーに基づく暗号化について見ているので、ここではパスワードに基づく暗号化について見ていきます。フォルダーという名前のディレクトリの暗号化された圧縮アーカイブを作成するには、次のコマンドを入力します。

tar -cvzf - folder | gpg -c > folder.tar.gz.gpg

すべてのtarフラグは、前の例と同じです。唯一の違いは、tarコマンド内でアーカイブのファイル名を指定する代わりに、出力をgpgにパイプできるように-を指定することです。次に、実際にそれを行い、gpgの-cフラグは、上記のようにパスフレーズを使用して対称暗号でファイルを暗号化したいことを示しています。最後に、出力をfolder.tar.gz.gpgという名前のファイルにリダイレクトします>。このコマンドを入力すると、データを暗号化するために使用したいパスフレーズの入力を求められます。この動作が気に入らず、コマンド内でパスフレーズを指定したい場合は、以下のように-cの後に--passphraseフラグを追加できます。

警告
コマンドラインで –passphrase を使用してパスフレーズを指定するのは、複数の理由から安全ではありません。これは、あなたのbashヒストリー(または他のシェルヒストリーファイル)にパスワードを保存します。また、マルチユーザーシステムにいる場合、他のユーザーが実行中のプロセスを調べることであなたのパスワードを見る可能性があります。たとえあなたがシステムの唯一のユーザーであっても、現在実行中のプロセスを調べる能力のあるソフトウェアがあなたのパスフレーズをログに記録する可能性があります。

tar -cvzf - folder | gpg -c --passphrase yourpassword > folder.tar.gz.gpg

このアーカイブを後で復号化、解凍、抽出するためには、次のコマンドを入力します。

gpg -d folder.tar.gz.gpg | tar -xvzf -

-d フラグは gpg に対して folder.tar.gz.gpg ファイルの内容を復号化したいことを知らせます。次に、それを tar コマンドにパイプします。-x フラグは gpg からパイプされたアーカイブを抽出するために使用され、-v は詳細に抽出するためのもので、-z はアーカイブを解凍するために、-f - はアーカイブされているファイルがパイプで入力されていることを指定します。

ディレクトリの個別の暗号化されたアーカイブを複数作成する

上記の例は、単一のディレクトリに基づいて単一の暗号化アーカイブを作成したいと仮定しています。もし、複数のサブディレクトリが詰まったディレクトリがあり、各ディレクトリごとに別々の暗号化アーカイブを作成したい場合はどうでしょうか?その場合、bashのforループを使ってその作業を達成することができます。暗号化アーカイブを個別に作成したいサブディレクトリを含むディレクトリに移動して、次のコマンドを入力してください。

for i in * ; do tar -cvzf - "$i" | gpg -c --passphrase yourpassword > "$i".tar.gpg; done

ネットワーク上でのnetcatアーカイブ通信の暗号化。

Netcatコマンドに関する「ヒントとトリック」記事では、ネットワークを介して別のコンピュータにディレクトリを転送する方法を紹介しました。その記事では、このようなデータ転送方法は暗号化が欠如しているため安全でないと指摘しました。プロセスに暗号化のレイヤーを追加するために、Gpgを使用できます。転送元のコンピュータのホスト名をhost1、データを転送先のコンピュータのホスト名をhost2、転送したいディレクトリの名前をfolderと仮定しましょう。

host1に以下を入力してください

tar -cvzf - folder | gpg -c | nc -l 6666

このコマンドを入力すると、データを暗号化するために使用するパスフレーズの入力を求められます。

では、host2 で次のコマンドを入力します

nc host1 6666 | gpg -d | tar -xvzf -

このコマンドを入力した後、前のステップで選択したパスフレーズの入力を求められます。現在、host2の作業ディレクトリには、folderディレクトリが完全にあるはずです。

上記の例は、ネットワーク上で暗号化されたデータをコピーする必要がある場合に役立ちますが、OpenSSHスイートからscpを使用することは、システムにインストールされているか、インストールするための必要な権限がある場合は、はるかに良い選択肢です。そうでない場合に備えて、このトリックを覚えておいても構いません。

結論

この記事では、圧縮tarアーカイブの作成方法、暗号化方法、ディレクトリの複数の個別の暗号化アーカイブを作成する方法、そしてネットワーク経由で暗号化アーカイブをコピーするためにnetcatをパイプラインに追加して迅速かつ簡易的な方法を学びました。他に言うべきことがない場合、これらのGNU/Linuxツールを組み合わせることで、部分の合計以上の結果を得ることが明らかです。

関連記事: