ウェブサイト検索

Ubuntu 12.04 VPSでメッセージを暗号化し署名するためのGPGの使い方


ステータス: 廃止された

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

  • Ubuntu 14.04にアップグレードします。
  • Ubuntu 14.04からUbuntu 16.04へのアップグレード
  • サーバーデータをサポートされているバージョンに移行する

理由: Ubuntu 12.04は2017年4月28日にサポートが終了(EOL)し、もはやセキュリティパッチやアップデートを受けることはありません。このガイドはもはや維持されていません。

代わりに見る: このガイドは参考としてまだ役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。もし可能であれば、使用しているUbuntuのバージョンに対して書かれたガイドを使用することを強くお勧めします。ページの上部にある検索機能を使って、より新しいバージョンを見つけることができます。

紹介

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

このガイドでは、GPGの仕組みとその実装方法について説明します。このデモンストレーションでは、Ubuntu 12.04のVPSを使用しますが、ツールは任意の現代的なLinuxディストリビューションで利用可能です。

公開鍵暗号がどのように機能するか

多くのユーザーが直面している問題は、安全にコミュニケーションを取り、自分が話している相手の身元を確認する方法です。この質問に対処しようとする多くの仕組みは、少なくともある時点では、安全でない媒体を通じてパスワードやその他の識別情報を転送する必要があります。

意図した当事者のみが読むことができるようにしてください。

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

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

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

送信者の本人確認を行う

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

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

GPGキーを設定する

GPGはUbuntu 12.04にデフォルトでインストールされているはずです。もしインストールされていない場合は、次のようにしてインストールできます:

sudo apt-get install gnupg

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

gpg --gen-key

これは、あなたのキーを設定するためのいくつかの質問を通過させます。

  • どの種類のキーを選択しますか: (1) RSA および RSA (デフォルト)

  • どのキーサイズが欲しいですか?4096

  • キーは有効ですか? 0

  • これは正しいですか? y

  • 本名: ここにあなたの本名を記入

  • メールアドレス: your_email@address.com

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

  • 変更する(N)ame、©omment、(E)メールまたは(O)k/(Q)uit? O

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

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

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

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

取り消し証明書を作成する

セキュリティ侵害が発生した場合や秘密鍵を紛失した場合に、キー・ペアを無効化する方法を用意しておく必要があります。GPGソフトウェアを使えば、これを簡単に行うことができます。

これをキー ペアを作成する際にすぐに行うべきであり、必要になったときではありません。この取り消しキーは事前に作成し、コンピューターが侵害されたり動作しなくなった場合に備えて、安全で別の場所に保管しておく必要があります。タイプ:

 gpg --gen-revoke your_email@address.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 公開鍵ファイルの名前 

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

さまざまな他のサーバーと情報を同期する人気の鍵サーバーは、MIT公開鍵サーバーです。ここにウェブブラウザでアクセスすることで、名前やメールアドレスで人を検索できます:

http://pgp.mit.edu/

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

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

鍵を確認して署名する方法

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

相手の身元を確認してください

公開鍵を渡している人が本当にその人であることをどうやって確認しますか? いくつかのケースでは、これは簡単かもしれません。 あなたはその人のすぐ隣に座っており、二人ともラップトップを開いて鍵を交換しているかもしれません。 これは、正しい、正当な鍵を受け取っていることを確認するためのかなり安全な方法であるはずです。

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

幸いなことに、両当事者の公開鍵全体を検証する代わりに、これらの鍵から導出された「フィンガープリント」を単純に比較することができます。これにより、両者が同じ公開鍵情報を使用しているという合理的な保証が得られます。

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

 gpg --fingerprint あなたの_email@address.com 

 pub   4096R/311B1F84 2013-10-04 キーフィンガープリント=CB9E C70F 2421 AF06 7D72  F980 8287 6A15 311B 1F84 uid                  テストユーザー  sub   4096R/8822A56A 2013-10-04 

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

彼らの鍵にサインする

鍵に署名することは、ソフトウェアに提供された鍵を信頼していること、そしてその鍵が該当する人物に関連付けられていることを確認したことを示します。

インポートしたキーに署名するには、単に次のように入力してください:

 gpg --sign-key email@example.com 

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

あなたは、署名している人にあなたの信頼関係の利点を許可するために、署名した鍵を返送するべきです。これを行うには、次のように入力してください:

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

再度パスフレーズを入力する必要があります。その後、あなたによって署名された彼らの公開鍵が画面に表示されます。これを送信して、他の人とやり取りする際にあなたの「承認の印」を得ることができるようにしてください。

新しく署名された鍵を受け取ったとき、生成した署名情報を追加して、それを彼らのGPGデータベースにインポートできます。これは、次のように入力することで行えます:

gpg --import file_name

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

知らない人があなたの公開鍵を持っても、実際には悪意のあることは何も起こりません。

このため、公開鍵を簡単に入手できるようにすることが有益かもしれません。すると、人々はあなたの情報を簡単に見つけて、最初のコミュニケーションから安全なメッセージを送ることができます。

GPGシステムからリクエストすることで、誰にでもあなたの公開鍵を送信できます。

 gpg --armor --export your_email@address.com 

-----BEGIN PGP PUBLIC KEY BLOCK----- バージョン: GnuPG v1.4.11 (GNU/Linux)

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

その後、これをコピーして貼り付けるか、適切な手段で送信することができます。

キーサーバーに自分のキーを公開したい場合は、ほとんどのサーバーサイトにあるフォームを通じて手動で行うことができます。

別の選択肢は、GPGインターフェースを通じてこれを行うことです。

次のように入力してキーIDを調べてください:

 gpg --list-keys your_email@address.com 

ハイライトされた部分はあなたのキーIDです。これは、内部ソフトウェアへのキーを参照するための短い方法です。

 pub   4096R/311B1F84 2013-10-04 uid                  テストユーザー <test.user@address.com> sub   4096R/8822A56A 2013-10-04 

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

 gpg --send-keys --keyserver pgp.mit.edu キーID 

GPGを使ってメッセージを暗号化および復号化する

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

メッセージを暗号化する

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

gpg --encrypt --sign --armor -r person@email.com name_of_file

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

もしメッセージを後で読むことができるようにしたいのであれば、あなた自身のメールアドレスを持つ二番目の「-r」受取人を含めるべきです。これは、メッセージが各人の公開鍵で暗号化され、関連する秘密鍵でしか復号できないためです。

したがって、相手の公開鍵だけで暗号化されていた場合、相手の秘密鍵を何らかの方法で取得しない限り、メッセージを再度見ることはできません。自分自身を第二の受取人として追加すると、メッセージはそれぞれの受取人のために二回別々に暗号化されます。

メッセージを解読する

メッセージを受け取ったら、メッセージファイルに対してGPGを呼び出すだけです:

 gpg ファイル名 

ソフトウェアは必要に応じてあなたに促します。

もし生のテキストストリームとしてメッセージがある場合は、引数なしで gpg と入力した後にコピーして貼り付けることができます。メッセージの終わりを示すために「CTRL-D」を押すと、GPGがそれを復号してくれます。

キー保守

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

他の人から取得した利用可能なGPGキーを一覧表示するには、次のコマンドを実行できます。

gpg --list-keys

公開鍵サーバーから取得した情報に依存していると、重要な情報が古くなる可能性があります。取り消された鍵に依存したくはありません。なぜなら、それは潜在的に侵害された鍵を信頼することになるからです。

次のコマンドを入力することで、キー情報を更新できます。

gpg --refresh-keys

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

特定のキーサーバーから情報を取得するには、以下を使用できます:

 gpg --keyserver key_server --refresh-keys 

結論

GPGを正しく使用することで、さまざまな人との通信を安全に保つことができます。これは非常に役立つことで、特に機密情報を扱う場合や、日常的なメッセージのやり取りを行う際にも役立ちます。

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

GPG暗号化は、両者が良好なセキュリティ慣行を使用し、他のセキュリティ慣行に対して警戒している場合にのみ有効です。暗号的に安全なコミュニケーションを可能にしたい場合は、定期的にコミュニケーションを取る相手にこれらの慣行の重要性を教育してください。

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

関連記事: