GNU/Linux >> Linux の 問題 >  >> Linux

GnuPGを使用してLinuxでファイル/フォルダーを暗号化および復号化する方法

最近、私たちの読者の1人が、「Linuxでいくつかのファイル/フォルダーを暗号化および復号化する方法、できればCLIベースにする方法」という質問をしました。

解決策は次のとおりです: ファイルを暗号化および復号化するには、 GnuPG(GNU Privacy Guard)を使用します。 これは、暗号化と署名のためのGNUのツールです。 GnuPGは、RFC 4880で定義されているOpenPGP(Pretty Good Privacy)標準のGPLライセンス実装です。GnuPG自体は、グラフィカルなものを含まないコマンドラインツールです。これは、コマンドプロンプト、シェルスクリプト、または他のプログラムから直接使用できる実際の暗号化エンジンです。したがって、他のアプリケーションのバックエンドと見なすことができます。

GnuPGの利点:

  • PGPよりも優れた機能とPGP2よりも優れたセキュリティ強化。
  • PGP 5、6、および7のメッセージを復号化して検証します。
  • ElGamal、DSA、RSA、AES、3DES、Blowfish、Twofish、CAST5、MD5、SHA-1、RIPE-MD-160、およびTIGERをサポートします。
  • 拡張モジュールを使用した新しいアルゴリズムの簡単な実装。
  • キーと署名の有効期限をサポートします。
  • 英語、デンマーク語、オランダ語、エスペラント語、エストニア語、フランス語、ドイツ語、日本語、イタリア語、ポーランド語、ポルトガル語(ブラジル)、ポルトガル語(ポルトガル語)、ロシア語、スペイン語、スウェーデン語、トルコ語のサポート。

この記事では、GnuPGのインストール、パスワードとキーペアを使用したファイルの暗号化と復号化について説明します。

GnuPGのインストール方法

GnuPGは、ほとんどのLinuxディストリビューションにインストールされます。確認するには、次のコマンドを実行します。

[root@catest]# yum info gnupg

すでにインストールが見つかっている場合は、インストールする必要はありません。それ以外の場合は、yumを使用してインストールします(Yumの構成方法を理解してください)。

[root@catest]#yum install gnupg

パスワードを使用してLinuxでファイルを暗号化する方法– GnuPG

パスフレーズを使用してファイルを暗号化するには、次のコマンドに従います。

[root@catest]# gpg -c <filename>

上記のコマンドを初めて実行すると、 .gnupgが作成されます ホームディレクトリのディレクトリ。 .gnupgの下 ディレクトリ2つのファイルが作成されます: gpg.conf、pubring.gpg&secring.gpg gpg.conf gpgがファイルの暗号化と復号化で考慮するデフォルトの構成ファイルpubring.gpg は公開キーリングであり、 secring.gpg 秘密のキーリングです。

ここで-cオプションを指定すると、gpgは、パスフレーズを使用して対称暗号でファイルを暗号化します。使用されるデフォルトの対称暗号はCAST5ですが、–cipher-algoオプションを使用して他の暗号を選択することもできます。

sample.txtというファイルを暗号化するには、次のコマンドを実行します:

[root@catest]# gpg -c sample.txt
Enter passphrase:<YOUR-SECRET-PASSWORD>
Repeat passphrase:<YOUR-SECRET-PASSWORD>

上記のコマンドは、確認のためにパスフレーズを2回要求し、成功すると、元のsample.txtファイルも保持するsample.txt.gpgを作成します。元のファイルsample.txtを削除し、暗号化されたファイルのみを使用することをお勧めします。

注:パスフレーズを忘れた場合、ファイルを復号化することはできません!

パスワードを使用してLinuxでファイルを復号化する方法– GnuPG

すでに暗号化されているファイルを復号化するには、次のコマンドを使用します:

[root@catest ~]# gpg sample.txt.gpg
gpg: CAST5 encrypted data
Enter passphrase:

上記のコマンドを実行すると、ファイルを復号化するためのパスフレーズの入力を求められます。成功すると、暗号化されたファイルは復号化されます。

公開鍵と秘密鍵のペアを生成する方法– GnuPG

キーペアを使用して暗号化を開始する前に、まず、以下のコマンドを使用してGPG秘密/公開キーペアを作成する必要があります。

[root@catest ~]# gpg --gen-key

指示に従ってください。最初のテストにはデフォルトで十分です。以下のようなものが表示されます:

gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: directory `/home/ramyasanthosh/.gnupg' created
gpg: new configuration file `/home/ramyasanthosh/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/ramyasanthosh/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/ramyasanthosh/.gnupg/secring.gpg' created
gpg: keyring `/home/ramyasanthosh/.gnupg/pubring.gpg' created
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 7
Key expires at Mon 30 Dec 2013 04:46:14 PM IST
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"

Real name: ramyasanthosh
Email address: [email protected]
Comment: Testing
You selected this USER-ID:
"ramyasanthosh (Testing) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

Enter passphrase:
Repeat passphrase:

キーのパスフレーズを求められます。強力なものを使用することを強くお勧めします。とにかくファイルの暗号化には必要ありませんが、ファイルの復号化中に必要になります。

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.++++++++++....++++++++++.++++++++++++++++++++..+++++.+++++++++++++++++++++++++++++++++++..+++++.++++++++++++++++++++..+++++++++++++++..++++++++++>+++++.+++++......>+++++..+++++

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)

十分なランダムバイトが利用可能になると、キーが生成されます。しかし、十分なランダムバイトを利用できるようにすることは、非常に簡単な作業ではありません。したがって、解決策は次のとおりです。

「利用可能なランダムバイトが足りません–GnuPG」の解決策

GPGキーを作成するために手動でエントロピーを作成するのは非常に面倒です。したがって、rngdを使用して、以下に示すように、ハードウェアデバイスからカーネルランダムデバイスにランダムデータをフィードします。

[root@catest .gnupg]# ls -l /dev/urandom
cr--r--r-- 1 root root 1, 9 Oct 11 11:14 /dev/urandom
[root@catest .gnupg]# which rngd
/sbin/rngd
[root@catest .gnupg]# rngd -r /dev/random

次に、GPGキーを作成すると、以下に示すようにキーが生成されます。

++++++++++.++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++.+++++++++++++++.+++++..+++++.+++++++++++++++.+++++++++++++++>+++++..+++++.+++++^^^^
gpg: /home/ramyasanthosh/.gnupg/trustdb.gpg: trustdb created
gpg: key 296A5510 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
pub   1024D/453697B4 2013-12-23
      Key fingerprint = 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

公開鍵をエクスポートする方法– GnuPG

キーペアが生成されたので、暗号化のために別のサーバーで使用する公開キーをエクスポートしてから、暗号化されたファイルを元のサーバーに転送して、秘密キーを使用して復号化します。公開鍵をエクスポートするには、次のコマンドを実行します。

[root@catest .gnupg]# gpg --armor --output public-key.txt --export 'ramyasanthosh'

ここで、「ramyasanthosh」はキーペアの生成中に使用されるuidです。

公開鍵ペアを使用してファイルを暗号化する方法– GnuPG

次に、この公開鍵を使用して別のサーバー上のファイルを暗号化します。次のコマンドに示すように、最初にそのシステムに公開鍵をインポートする必要があります。

Mon Dec 23>$ gpg --import file-enc-pubkey.txt

次に、以下のコマンドでインポートされたpulicキーを確認して、使用可能なすべての公開キーを一覧表示できます。

Mon Dec 23>$ gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/453697B4 2013-12-23
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

この公開鍵を使用して、ファイルを暗号化します。

Mon Dec 23>$ gpg --encrypt --recipient 'ramyasanthosh' sample.txt
pub  2048g/D4EAC9A3 2013-12-23 ramyasanthosh (Testing) <[email protected]>
 Primary key fingerprint: 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
      Subkey fingerprint: 25C1 48E1 073A 7F61 BFFD  9D14 3F7E 939F D4EA C9A3

完了すると、ファイル名が sample.txt.gpgになります。 –暗号化されたファイル。キーペアを生成した元のサーバーにファイルを転送します。

秘密鍵を使用してファイルを復号化する方法– GnuPG

次に、以下のコマンドで秘密鍵を使用して暗号化されたファイルを復号化します。キーペアの生成に使用したパスフレーズを入力するように求められます。

[root@catest ~]# gpg --output sample.txt --decrypt sample.txt.gpg

You need a passphrase to unlock the secret key for
user: "ramyasanthosh (Testing) <[email protected]>"
2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23 (main key ID 453697B4)

Enter passphrase:

gpg: encrypted with 2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23
      "ramyasanthosh (Testing) <[email protected]>"

これは復号化で行われ、元のファイルsample.txtが見つかります。

秘密鍵をバックアップする方法– GnuPG

秘密鍵をバックアップし、パスフレーズを決して忘れないことを常にお勧めします。次のコマンドに従って、秘密鍵をバックアップします。

[root@catest ~]# gpg --armor --output privatekey.asc --export-secret-keys 'ramyasanthosh'

Linux
  1. TarとOpenSSLを使用してファイルとディレクトリを暗号化および復号化する方法

  2. LinuxでのGPGを使用したファイルの暗号化と復号化[初心者向けハンズオン]

  3. Linux で GnuPG を使用してファイルを暗号化および復号化する方法

  1. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  2. wget vs curl:wget と curl を使用してファイルをダウンロードする方法

  3. bzip2 コマンドを使用して Linux で .bz2 ファイルを圧縮および解凍する方法

  1. Linuxでファイルとディレクトリをコピーする方法

  2. Linuxでファイルとディレクトリを移動する方法(mvコマンド)

  3. Linuxでテキストファイルを比較してマージする方法