ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


GPG(GNU Privacy Guard)は、公開鍵暗号化の実装です。 これにより、当事者間での情報の安全な送信が可能になり、メッセージの発信元が本物であることを確認するために使用できます。

このガイドでは、GPGの仕組みと実装方法について説明します。 このデモではUbuntu12.04VPSを使用しますが、ツールは最新のLinuxディストリビューションで利用できます。

公開鍵暗号化のしくみ


多くのユーザーが直面する問題は、安全に通信し、話している相手の身元を検証する方法です。 この質問に答えようとする多くのスキームでは、少なくともある時点で、安全でない媒体を介したパスワードまたはその他の識別資格情報の転送が必要です。

意図した当事者だけが読むことができることを確認してください


この問題を回避するために、GPGは公開鍵暗号化と呼ばれるセキュリティの概念に依存しています。 アイデアは、送信の暗号化と復号化の段階を2つの別々の部分に分割できるということです。 そうすれば、復号化部分を保護する限り、暗号化部分を自由に配布できます。

これにより、誰でも作成および暗号化できる一方向のメッセージ転送が可能になりますが、指定されたユーザー(秘密の復号化キーを持つユーザー)のみが復号化できます。 両方の当事者が公開鍵と秘密鍵のペアを作成し、お互いに公開暗号化キーを与える場合、両者はお互いにメッセージを暗号化できます。

したがって、このシナリオでは、各当事者が独自の秘密鍵と他のユーザーの公開鍵を持っています。

送信者の身元を確認する


このシステムのもう1つの利点は、メッセージの送信者が秘密鍵を使用してメッセージに「署名」できることです。 受信者が持っている公開鍵を使用して、指定されたユーザーが署名を実際に送信していることを確認できます。

これにより、第三者が誰かの身元を「なりすまし」するのを防ぐことができます。 また、損傷やファイルの破損なしに、メッセージが完全に送信されたことを確認するのにも役立ちます。

GPGキーを設定する


GPGはデフォルトでUbuntu12.04にインストールされているはずです。 そうでない場合は、次のコマンドでインストールできます。

sudo apt-get install gnupg

GPGを使用して通信を暗号化するには、キーペアを作成する必要があります。 これを行うには、次のコマンドを発行します。

gpg --gen-key

これにより、キーを構成するいくつかの質問に答えることができます。

  • 必要なキーの種類を選択してください:(1)RSAおよびRSA(デフォルト)

  • どのキーサイズが必要ですか? 4096

  • キーは有効ですか? 0

  • これは正しいです? y

  • 本名:本名はこちら

  • メールアドレス: [email protected]

  • コメント:署名に表示されるオプションのコメント

  • (N)ame、©omment、(E)mail、または(O)kay /(Q)uitを変更しますか? O

  • パスフレーズを入力してください: ここに安全なパスフレーズを入力します(大文字と小文字、数字、記号)

この時点で、エントロピーを使用してキーを生成する必要があります。 これは基本的に、システムに存在する予測不可能性の量を表す用語です。 GPGはこのエントロピーを使用して、ランダムなキーのセットを生成します。

これが実行されている間、新しいターミナルを開いてVPSにSSH接続するのが最善です。 いくつかのソフトウェアをインストールし、いくつかの作業を行い、マシンを可能な限り使用して、必要なエントロピーを生成させます。

システムをどれだけアクティブにできるかによっては、このプロセスに時間がかかる場合があります。 ここに、havegedを使用して追加のエントロピーを生成する方法に関する記事があります。これは役立つ場合があります。

失効証明書を作成する


セキュリティ違反が発生した場合、または秘密鍵を紛失した場合に備えて、鍵ペアを無効にする方法が必要です。 GPGソフトウェアでこれを行う簡単な方法があります。

これは、必要なときではなく、キーペアを作成したらすぐに実行する必要があります。 この失効キーは、事前に生成し、コンピューターが危険にさらされたり操作できなくなったりした場合に備えて、安全な別の場所に保管する必要があります。 タイプ:

 gpg--gen- your_emailを取り消す @住所 .com

取り消されている理由を尋ねられます。 利用可能なオプションのいずれかを選択できますが、これは事前に行われているため、詳細はわかりません。

次に、コメントを入力し、最後に選択を確認するように求められます。

その後、失効証明書が画面に生成されます。 これをコピーして安全な場所に貼り付けるか、後で使用するために印刷します。

Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: A revocation certificate should follow

iQIfBCABAgAJBQJSTxNSAh0AAAoJEIKHahUxGx+E15EP/1BL2pCTqSG9IYbz4CMN
bCW9HgeNpb24BK9u6fAuyH8aieLVD7It80LnSg/+PgG9t4KlzUky5sOoo54Qc3rD
H+JClu4oaRpq25vWd7+Vb2oOwwd/27Y1KRt6TODwK61z20XkGPU2NJ/ATPn9yIR9
4B10QxqqQSpQeB7rr2+Ahsyl5jefswwXmduDziZlZqf+g4lv8lZlJ8C3+GKv06fB
FJwE6XO4Y69LNAeL+tzSE9y5lARKVMfqor/wS7lNBdFzo3BE0w68HN6iD+nDbo8r
xCdQ9E2ui9os/5yf9Y3Uzky1GTLmBhTqPnl8AOyHHLTqqOT47arpwRXXDeNd4B7C
DiE0p1yevG6uZGfhVAkisNfi4VrprTx73NGwyahCc3gO/5e2GnKokCde/NhOknci
Wl4oSL/7a3Wx8h/XKeNvkiurInuZugFnZVKbW5kvIbHDWJOanEQnLJp3Q2tvebrr
BBHyiVeQiEwOpFRvBuZW3znifoGrIc7KMmuEUPvA243xFcRTO3G1D1X9B3TTSlc/
o8jOlv6y2pcdBfp4aUkFtunE4GfXmIfCF5Vn3TkCyBV/Y2aW/fpA3Y+nUy5hPhSt
tprTYmxyjzSvaIw5tjsgylMZ48+qp/Awe34UWL9AWk3DvmydAerAxLdiK/80KJp0
88qdrRRgEuw3qfBJbNZ7oM/o
=isbs
-----END PGP PUBLIC KEY BLOCK-----

他のユーザーの公開鍵をインポートする方法


通信したい人から他の公開鍵を受け入れることができなければ、GPGはかなり役に立たないでしょう。

誰かの公開鍵をさまざまな方法でインポートできます。 テキストファイルで誰かから公開鍵を取得した場合、GPGは次のコマンドで公開鍵をインポートできます。

gpg --import name_of_pub_key_file

また、通信したい相手が自分の鍵を公開鍵サーバーにアップロードしている可能性もあります。 これらのキーサーバーは、世界中の人々の公開キーを収容するために使用されます。

情報を他のさまざまなサーバーと同期する一般的なキーサーバーは、MIT公開キーサーバーです。 Webブラウザでここにアクセスすると、名前または電子メールアドレスで人を検索できます。

http://pgp.mit.edu/

次のように入力して、GPG内からキーサーバーを検索することもできます。

 gpg --keyserver  pgp.mit.edu  --search-keys search_parameters

キーを確認して署名する方法


生成された公開鍵ファイルを自由に配布でき、人々はこれを使用して暗号化された方法であなたに連絡できますが、最初の公開鍵送信には依然として信頼の問題があります。

他の人の身元を確認する


あなたに公開鍵を与える人が彼らが彼らが言っている人であることをどうやって知っていますか? 場合によっては、これは単純なこともあります。 ラップトップを開いてキーを交換している人のすぐ隣に座っている可能性があります。 これは、正しい正当なキーを受け取っていることを識別するための非常に安全な方法です。

しかし、そのような個人的な接触が不可能な他の多くの状況があります。 あなたは相手を個人的に知らないかもしれません、あるいはあなたは物理的な距離によって隔てられているかもしれません。 安全でないチャネルを介して通信したくない場合は、公開鍵の検証が問題になる可能性があります。

幸いなことに、両方の当事者の公開キー全体を検証する代わりに、これらのキーから派生した「指紋」を単純に比較できます。 これにより、両方が同じ公開鍵情報を使用していることが合理的に保証されます。

次のように入力すると、公開鍵のフィンガープリントを取得できます。

 gpg --fingerprint your_email  @住所 .com

 pub 4096R /311B1F842013-10-04キーフィンガープリント= CB9EC70F 2421 AF06 7D72 F980 8287 6A15 311B1F84uidテストユーザー  @住所 .com> sub 4096R / 8822A56A 2013-10-04

これにより、比較するためのはるかに管理しやすい数値の文字列が生成されます。 この文字列を、その人自身、またはその人にアクセスできる他の人と比較できます。

彼らの鍵に署名する


キーに署名すると、提供されたキーを信頼し、問題の人物に関連付けられていることを確認したことがソフトウェアに通知されます。

インポートしたキーに署名するには、次のように入力します。

 gpg --sign-key email  @例 .com

キーに署名した後、それはあなたがその人が彼/彼女が主張する人であるとあなたが信頼していることを確認することを意味します。 これは、他の人もその人を信頼するかどうかを決定するのに役立ちます。 誰かがあなたを信頼していて、あなたがこの人の鍵に署名したことを彼らが見た場合、彼らも彼らの身元を信頼する可能性が高くなります。

あなたはあなたがあなたの信頼できる関係の利点に署名している鍵を持っている人に署名された鍵を送り返すことによって彼らを許可するべきです。 これを行うには、次のように入力します。

 gpg --export --armor email  @例 .com

パスフレーズをもう一度入力する必要があります。 その後、あなたが署名した公開鍵が画面に吐き出されます。 彼らにこれを送ってください。そうすれば、彼らは他の人と交流するときにあなたの「承認のスタンプ」を得ることができます。

この新しい署名付きキーを受け取ったら、それをインポートして、生成した署名情報をGPGデータベースに追加できます。 次のように入力してこれを行うことができます。

gpg --import file_name

公開鍵を高可用性にする方法


未知の人があなたの公開鍵を持っている場合に発生する可能性のある悪意のあるものは実際にはありません。

このため、公開鍵を簡単に利用できるようにすることが有益な場合があります。 そうすれば、最初の通信から、人々はあなたの情報を簡単に見つけて安全なメッセージを送信できます。

GPGシステムから公開鍵を要求することにより、誰にでも公開鍵を送信できます。

 gpg --armor --export your_email  @住所 .com

----- BEGIN PGP公開鍵ブロック-----バージョン:GnuPG v1.4.11(GNU / Linux)

mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse 9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4 EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6 5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3 . . .

次に、これをコピーして貼り付けるか、適切なメディアに送信します。

キーをキーサーバーに公開する場合は、ほとんどのサーバーサイトで利用可能なフォームを使用して手動で公開できます。

もう1つのオプションは、GPGインターフェイスを介してこれを行うことです。

次のように入力して、キーIDを検索します。

 gpg --list-keys your_email  @住所 .com

強調表示されている部分はキーIDです。 これは、キーを内部ソフトウェアに参照するための簡単な方法です。

 pub 4096R / 311B1F842013-10-04uidテストユーザー  @住所 .com> sub 4096R / 8822A56A 2013-10-04

キーを特定のキーサーバーにアップロードするには、次の構文を使用できます。

 gpg --send-keys --keyserver  pgp.mit.edu  key_id

GPGを使用したメッセージの暗号化と復号化


相手とキーを設定した後は、メッセージを簡単に暗号化および復号化できます。

メッセージを暗号化する


GPGの「–encrypt」フラグを使用してメッセージを暗号化できます。 基本的な構文は次のとおりです。

 gpg --encrypt --sign --armor -r person  @Eメール .com name_of_file

パラメータは基本的に電子メールを暗号化し、それがあなたからのものであることを保証するために秘密鍵で署名し、生のバイトではなくテキスト形式でメッセージを生成します。

メッセージを読みやすくしたい場合は、自分の電子メールアドレスを持つ2番目の「-r」受信者も含める必要があります。 これは、メッセージが各人の公開鍵で暗号化され、関連付けられた秘密鍵でのみ復号化できるためです。

したがって、相手の公開鍵のみで暗号化されている場合は、何らかの方法で相手の秘密鍵を取得しない限り、メッセージを再度表示することはできません。 2番目の受信者として自分を追加すると、受信者ごとに1つずつ、2回に分けてメッセージが暗号化されます。

メッセージの復号化


メッセージを受信したら、メッセージファイルでGPGを呼び出すだけです。

gpg file_name

ソフトウェアは必要に応じてプロンプトを表示します。

メッセージを生のテキストストリームとして使用している場合は、引数なしでgpgと入力するだけで、メッセージをコピーして貼り付けることができます。 「CTRL-D」を押してメッセージの終わりを示すことができ、GPGがメッセージを復号化します。

キーメンテナンス


キーデータベースを管理するために定期的に使用する必要のある手順がいくつかあります。

他の人から持っている利用可能なGPGキーを一覧表示するには、次のコマンドを発行できます。

gpg --list-keys

公開鍵サーバーから取得した情報に依存している場合、鍵情報が古くなる可能性があります。 取り消されたキーに依存することは望ましくありません。これは、侵害された可能性のあるキーを信頼していることを意味するためです。

次のコマンドを発行して、キー情報を更新できます。

gpg --refresh-keys

これにより、キーサーバーから新しい情報が取得されます。

以下を使用して、特定のキーサーバーから情報を取得できます。

gpg --keyserver key_server --refresh-keys

結論


GPGを正しく使用すると、さまざまな人との通信を保護するのに役立ちます。 これは、特に機密情報を扱う場合だけでなく、定期的な毎日のメッセージングを扱う場合にも非常に役立ちます。

監視プログラムによって特定の暗号化された通信にフラグを立てることができる方法のため、「秘密の」データだけでなく、すべてに暗号化を使用することをお勧めします。 これにより、重要なデータを送信しているのか、友好的な挨拶を送信しているのかを人々が知るのが難しくなります。

GPG暗号化は、両方の当事者が優れたセキュリティ慣行を使用し、他のセキュリティ慣行に注意を払っている場合にのみ役立ちます。 暗号で安全な通信の可能性を持たせたい場合は、これらの慣行の重要性について定期的に通信する人を教育してください。

ジャスティン・エリングウッド