安全な通信のためのGPGキーを生成する方法

暗号化は、部外者が解読できないようにプレーンテキストデータを埋め込むプロセスです。 誤用を防ぐためにデータを暗号化する必要があります。 GNU Privacy Guard(GPG)アプリケーションを使用すると、情報を暗号化および復号化できますこれは、1つの公開鍵と1つの秘密鍵(または秘密鍵)のペアの使用に基づいています。 一方のキーで暗号化されたデータは、もう一方のキーでのみ復号化できます。 あなたへのメッセージを暗号化するために、誰かがあなたの公開鍵を使用して、あなたの秘密鍵でのみロックを解除できるメッセージを作成します。 情報に署名するには、秘密鍵で情報をロックし、公開鍵でロックを解除することで、誰もが情報があなたからのものであることを確認できるようにします。

最新のLinuxディストリビューションには、すでにgpgがインストールされています。 存在しない場合は、インストールします。

Centosで

 #yum install gnupg

Ubuntuで

 #apt-get install gnupg

1)gpgキーを作成します

gnupgパッケージをインストールするときは、gpgを使用するための概念も理解する必要があります。

新しいキーペアの生成

通信を暗号化するために最初に行うことは、新しいキーペアを作成することです。 GPGはいくつかのタイプのキーペアを作成できますが、主キーは署名を作成できる必要があります。

# gpg --gen-key
Please select what kind of key you want:
   Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Please specify how long the key should be valid.
Key is valid for? (0) 0
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: my_name
Email address: [email protected]
Comment: my-key-pair
You selected this USER-ID:
    "my_name (my-key-pair) <[email protected]>"

You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes.
.......+++++

pub   4096R/BAC361F1 2017-03-30
      Key fingerprint = 0397 AD65 6EE6 074A 2B95  EEF1 D2A7 4997 BAC3 61F1
uid   my_name (my-key-pair) <[email protected]>
sub   4096R/9742DE56 2017-03-30
  • uid: についてメモしてください ユーザーID 結果に記載されています。 その値を使用していくつかの操作を行います。
  • pub: 公開鍵を表します。 The キーID BAC361F1ですあなたのものは異なります
  • sub: これはサブキーを表し、主キーと一緒に使用されます。 通常、暗号化に使用されます。

以下のメッセージが表示された場合、プロンプトは終了せずに非常に長い間処理できます

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

この問題は、エントロピーの欠如(またはランダムなシステムノイズ)が原因で発生します。 したがって、プロセスをキャンセルして、利用可能なエントロピーを確認してください

$ cat /proc/sys/kernel/random/entropy_avail
14

あなたはそれが十分ではないことがわかります。 エントロピーの欠如を解決するためのパッケージをインストールできます rngd これは、利用可能なエントロピーをすぐにチェックするために使用される乱数ジェネレータユーティリティです。

# apt-get install rng-tools
# cat /proc/sys/kernel/random/entropy_avail
3075

今、再び始めることができます gpg --gen-key コマンドとプロセスはうまくいきます。 何もせずにインストールしただけです。 特定のディストリビューションでは、gpgプロセスの前にrngdを使用する必要があります。

# rngd -f -r /dev/urandom

3)失効証明書の生成

キーペアが作成されたら、秘密キーが何らかの形で侵害された場合、または秘密キーを紛失した場合に、公開キーを取り消すための失効証明書をすぐに生成する必要があります。 キーを作成するときに作成します。 このプロセスには、秘密鍵であるパスフレーズが必要です。

$ gpg --output revoke_key.asc --gen-revoke BAC361F1

sec  4096R/BAC361F1 2017-03-30 my_name (my-key-pair) <[email protected]>

Create a revocation certificate for this key? (y/N) y
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
> revocation if key compromised
> 
Reason for revocation: No reason specified
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: "my_name (my-key-pair) <[email protected]>"
4096-bit RSA key, ID BAC361F1, created 2017-03-30

Revocation certificate created.

引数BAC361F1はキーIDですこれは、キー指定子である必要があります。プライマリキーペアのキーIDか、my_name @ linoxide.comのようにキーペアを識別するユーザーIDの一部です。 生成された証明書はに保存されます revoke_key.asc ファイル。 他の人がアクセスできない場所に保管してください。アクセスできる人は誰でもキーを取り消すことができ、キーが役に立たなくなる可能性があります。 の場合 --output オプションを省略すると、結果は標準出力に配置されます。

4)公開鍵のASCII装甲バージョンを作成する

一部のキーサーバーでは、公開鍵のASCII装甲バージョンを貼り付けて、直接アップロードすることができます。 キーは、キーが正常にアップロードされたことを確認できるユーザーから直接取得されるため、この方法が最も推奨されます。

$ gpg --output armored_key.asc --export -a BAC361F1

5)キーの交換

他の人と通信するには、公開鍵を交換する必要があります。 それを行うには、キーをリストできる必要があります。 公開キーリングを一覧表示するコマンドがいくつかあります

  • gpg --list-keys: 公開キーリングのすべてのキー、またはコマンドラインで指定されたキーのみを一覧表示します。
  • gpg --list-secret-keys: シークレットキーリングのすべてのキー、またはコマンドラインで指定されたキーのみを一覧表示します
  • gpg --list-sigs: –list-keysと同じですが、署名もリストされます。
$ gpg --list-keys

/home/ubuntu/.gnupg/pubring.gpg ------------------------------- 
pub   4096R/BAC361F1 2017-03-30 
uid   my_name (my-key-pair) <[email protected]> 
sub   4096R/9742DE56 2017-03-30

公開鍵をエクスポートする

キーペアを生成したので、次のステップは、公開キーをインターネット(Keyservers)に公開して、他の人がそれを使用してメッセージを送信できるようにすることです。 キーIDを使用することも、ユーザーIDの任意の部分を使用してエクスポートするキーを識別することもできます。 2つのコマンドがありますが、最初のコマンドでは、キーがバイナリ形式でエクスポートされるため、電子メールで送信したり、Webページに公開したりするときに不便になる可能性があります。 したがって、ASCII装甲法には2番目のコマンドを使用します。

$ gpg --output to-bob.gpg --export BAC361F1
$ gpg --armor --export BAC361F1 > my_pubkey.gpg

出力は、通信を提供するための公開鍵の内容を含むmy_pubkey.gpgファイルにリダイレクトされます。

公開鍵をキーサーバーに送信します

このASCII装甲公開鍵を入手したら、pgp.mit.eduなどの公開鍵サーバーのフォームに手動で貼り付けることができます。

$ gpg --keyserver pgp.mit.edu --send-keys BAC361F1
gpg: sending key BAC361F1 to hkp server pgp.mit.edu

誰かがあなたに公開鍵を送ったように見えるので、あなたがそれを検証しない限り、それがその人からのものであると信頼する理由はありません。

公開鍵をインポートする

他の人があなたの公開鍵を使用してあなたにメッセージを送信できるので、あなたは信頼できる人から公開をインポートして彼らと通信することができます。

gpg --import bob_public_key.gpg

結論

これで、公開鍵を使用および生成するための原則についての概念ができました。 GnuPGがどのように機能しているかを知っており、安全な通信に使用できます。 GPG暗号化は、両方の当事者が適切なセキュリティ慣行を使用し、警戒している場合にのみ役立ちます。

また読む:

  • LinuxでGPGを使用してファイルを暗号化/復号化する方法