GnuPG の gpg コマンドを使用すると、公開鍵と秘密鍵を生成できます。このチュートリアルでは、gpg コマンドによって生成されたキーを使用して、暗号化されたファイルを送受信し、ファイルにデジタル署名します。
ファイルを暗号化して友達に送信
1.友達の公開鍵をインポート
シークレット ファイルを友人に送信する場合、最初に行うことは、友人の公開鍵をインポートすることです。友達が公開鍵を鍵サーバーにエクスポートしている場合、友達の公開鍵を「鍵サーバー」からインポートできます。
公開鍵を鍵サーバーにエクスポートする方法については、GnuPG の基本記事の「公開鍵のエクスポート」セクションを参照してください。
キー サーバーから公開キーをインポートするには、次の手順を実行します。上記のいずれかの方法でインポートできます。キーを正しくインポートするには、友人のキー ID または電子メール ID または実名を入力してください。
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'KEY-ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'E-Mail ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'Real Name'
ファイルから公開鍵をインポートするには、次の手順を実行します。友人が公開鍵を電子メールで送ってきた場合は、次のコマンドを使用してそれらの鍵をインポートできます
$ gpg --import myfriends_pub_key.gpg
2.インポートされた鍵サーバーを確認します
–list-keys オプションを使用して、友人の公開鍵が正常にインポートされたかどうかを確認できます
$ gpg --list-keys /home/lakshmanan/.gnupg/pubring.gpg ----------------------------------- pub 2048R/A7344E7D 2012-10-12 uid lakshmanan (My test GPG keys) sub 2048R/96F8EF9B 2012-10-12 pub 2048R/FB2744A8 2012-12-03 uid raman (Ram's test ID) sub 2048R/88EF55EE 2012-12-03
これで、友人のラマンの公開鍵がインポートされました。
3.友達の公開鍵を使って秘密のファイルを暗号化
友人の公開鍵を取得したので、「友人の公開鍵」を使用して暗号化されたファイルを彼に送信して、友人 (秘密鍵を持っている人) だけが復号化できるようにします。
$ gpg --encrypt --recipient raman a.txt gpg: 88EF55EE: There is no assurance this key belongs to the named user pub 2048R/88EF55EE 2012-12-03 raman (Ram's test ID) Primary key fingerprint: FF32 7764 A0AE 1E85 AC4B CF17 8AED B292 FB27 44A8 Subkey fingerprint: D6A5 7107 77C8 6845 2F86 765C EEED DD85 88EF 55EE It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/N) y
「公開鍵」があなたの友人のものであるという保証はないという警告があることに注意してください。時間が許せば、これを振り返ります。今のところ、私はフライドポテトを信頼しているので、鍵の使用に「はい」と答えています。
「a.txt.pgp」という名前のファイルが作成されます。エディターを使用して開くと、バイナリ データが含まれます。このファイルを友人に送信してください。
バイナリ コンテンツを送信したくない場合、またはバイナリの送信に問題がある場合は、以下に示すように ASCII ファイルを作成する –armor オプションを使用できます。
$ gpg --encrypt --armor --recipient raman a.txt
ファイルを復号化する
これで、友人は暗号化されたファイルを受信したことになります。ファイルの内容を表示するには、ファイルを復号化する必要があります。復号操作は友達の秘密鍵を使用して実行されるため、鍵の作成時に友達から提供されたパスフレーズを要求されます。
$ gpg --decrypt a.txt.gpg > secret.txt
これで、ファイル secret.txt に実際に書き込まれたテキストが含まれます。
暗号化されたファイルを複数の受信者に送信
–recipient または -r を使用して、複数の受信者にファイルを送信することもできます
$ gpg -r raman -r steve -r gopi --encrypt a.txt
上記のコマンドが与えられると、gpg はすべての受信者の公開鍵を使用してデータを暗号化し、その秘密鍵のいずれかがデータを復号化できるようにします。
このシリーズの次の記事では、データとタイムスタンプを使用してメッセージに署名する方法について説明します。