最近、私たちの読者の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'