GPG -強力な暗号化とデジタル署名を簡単に

最近、政府によるスパイ活動が明らかになったことで、20年前のPGPソフトウェアが再び脚光を浴びました。今でも非常に堅牢で安全な通信メカニズムだからです。しかし、IT業界が進歩したため、鍵ペアへの攻撃を困難にするには、以前より長い鍵を使う必要があります。そのため、今回は長さが4,096ビット以上の新しいRSA鍵ペアを作成するために必要な情報を紹介します。データの存続期間が長ければ長いほど、鍵も長くしなければなりません。とはいえ、何事にも代償はつきものです。鍵の長さを倍にするごとに、復号化にかかる時間が6~7倍になってしまうのです。そこで、本記事では鍵の長さを8,192ビットに設定することにしました。 今のところ、既定でこの鍵サイズをサポートするツールはあまりないので、新しい鍵を作成するために、最新のGnuPGバージョン(現在は1.4.15)をダウンロードして変更します。この例ではUbuntu Linuxを使用します。Ubuntuは最近とても人気の高いディストリビューションであり、ここで紹介する手順をごく簡単に実行できるからです。代わりにCygwinを使うのもいいでしょう。基本的なLinux風の環境をWindows OSでうまく再現することができます。 以下の手順に沿って作成した鍵は、ツールを使って管理しましょう。各OS向けにさまざまな管理ツールが提供されています。たとえばMac OS X向けにはGPG Suiteがあり、WindowsユーザーはGPg4Winを利用できます。いずれのツールでも、鍵の生成や管理のほか、PGPで日常的に実行するすべての基本操作が可能となっています。 Windows向けのGpg4win(GNU Privacy Guard for Windows)は、GnuPGの開発者が管理しています。ファイルやメールに暗号化と電子署名を施すソフトウェアを利用して、重要な情報や通信を保護することができます。Gpg4winは無料のソフトウェアであり、すべてのWindowsユーザーに強くお勧めします。 一方、Mac OS X向けのGPG Suiteは、OS Xとうまく連携するように設計されています。Appleの「メール」アプリ向けのオープンソースのプラグインを利用でき、メッセージの暗号化や署名も簡単です。キーチェーンを管理するためのアプリケーションも用意されているほか、GPGのコマンドラインバージョンもあり、このツールが提供するあらゆる機能をさらに探すことができます。   さて、まずはGnuPGのソースを入手して、ハードディスク内のフォルダーに解凍します。最初にこのファイルのSHA1署名をチェックして、何か問題がないか、検証済みバーションのソフトウェアをダウンロードしたかを確認しましょう。確認には、インストール済みのユーティリティ「sha1sum」を使うことができます。計算されたハッシュがGnuPGのWebサイトのものと一致したら準備完了です。 この手順ではいくつかソースファイルを変更しますが、そんなに複雑ではありません。お約束します。作業しただけの効果は十分に得られるでしょう。 gzipで圧縮されたGnuPG 1.4.15ソースファイルをダウンロードし、「tar xvzf [ファイル名]」コマンドで解凍して、このファイルのオリジナルのコンテンツが含まれるフォルダーを取り出します。コマンドの[ファイル名]の部分は、ダウンロードしたアーカイブの実際の名称に置き換えてください。   次に、先ほど抽出したディレクトリを「cd [gnupg-folder]」で探し出す必要があります。そこにGnuPGバイナリの作成に必要なコンテンツがあります。最初のステップは「g10 directory」にある「keygen.c」ファイルを変更することです。 「keygen.c」ファイルは「gedit」などを使用して編集することができます。コンテンツが表示されると、文字列「4096」を検索できます。この数字は鍵の現在の最大サイズで、GnuPGが既定で設定したものです。今回の目的のために、この数値を1572行目で「8192」に変更します。忘れずに変更を保存してください。他の部分は絶対に変更しないように!

pgp

最近、政府によるスパイ活動が明らかになったことで、20年前のPGPソフトウェアが再び脚光を浴びました。今でも非常に堅牢で安全な通信メカニズムだからです。しかし、IT業界が進歩したため、鍵ペアへの攻撃を困難にするには、以前より長い鍵を使う必要があります。そのため、今回は長さが4,096ビット以上の新しいRSA鍵ペアを作成するために必要な情報を紹介します。データの存続期間が長ければ長いほど、鍵も長くしなければなりません。とはいえ、何事にも代償はつきものです。鍵の長さを倍にするごとに、復号化にかかる時間が6~7倍になってしまうのです。そこで、本記事では鍵の長さを8,192ビットに設定することにしました。

今のところ、既定でこの鍵サイズをサポートするツールはあまりないので、新しい鍵を作成するために、最新のGnuPGバージョン(現在は1.4.15)をダウンロードして変更します。この例ではUbuntu Linuxを使用します。Ubuntuは最近とても人気の高いディストリビューションであり、ここで紹介する手順をごく簡単に実行できるからです。代わりにCygwinを使うのもいいでしょう。基本的なLinux風の環境をWindows OSでうまく再現することができます。

pgp-screenshot-01

以下の手順に沿って作成した鍵は、ツールを使って管理しましょう。各OS向けにさまざまな管理ツールが提供されています。たとえばMac OS X向けにはGPG Suiteがあり、WindowsユーザーはGPg4Winを利用できます。いずれのツールでも、鍵の生成や管理のほか、PGPで日常的に実行するすべての基本操作が可能となっています。

Windows向けのGpg4win(GNU Privacy Guard for Windows)は、GnuPGの開発者が管理しています。ファイルやメールに暗号化と電子署名を施すソフトウェアを利用して、重要な情報や通信を保護することができます。Gpg4winは無料のソフトウェアであり、すべてのWindowsユーザーに強くお勧めします。

一方、Mac OS X向けのGPG Suiteは、OS Xとうまく連携するように設計されています。Appleの「メール」アプリ向けのオープンソースのプラグインを利用でき、メッセージの暗号化や署名も簡単です。キーチェーンを管理するためのアプリケーションも用意されているほか、GPGのコマンドラインバージョンもあり、このツールが提供するあらゆる機能をさらに探すことができます。

pgp-screenshot-02

 

さて、まずはGnuPGのソースを入手して、ハードディスク内のフォルダーに解凍します。最初にこのファイルのSHA1署名をチェックして、何か問題がないか、検証済みバーションのソフトウェアをダウンロードしたかを確認しましょう。確認には、インストール済みのユーティリティ「sha1sum」を使うことができます。計算されたハッシュがGnuPGのWebサイトのものと一致したら準備完了です。

pgp-screenshot-03

この手順ではいくつかソースファイルを変更しますが、そんなに複雑ではありません。お約束します。作業しただけの効果は十分に得られるでしょう。

gzipで圧縮されたGnuPG 1.4.15ソースファイルをダウンロードし、「tar xvzf [ファイル名]」コマンドで解凍して、このファイルのオリジナルのコンテンツが含まれるフォルダーを取り出します。コマンドの[ファイル名]の部分は、ダウンロードしたアーカイブの実際の名称に置き換えてください。

pgp-screenshot-04

 

次に、先ほど抽出したディレクトリを「cd [gnupg-folder]」で探し出す必要があります。そこにGnuPGバイナリの作成に必要なコンテンツがあります。最初のステップは「g10 directory」にある「keygen.c」ファイルを変更することです。

pgp-screenshot-05

「keygen.c」ファイルは「gedit」などを使用して編集することができます。コンテンツが表示されると、文字列「4096」を検索できます。この数字は鍵の現在の最大サイズで、GnuPGが既定で設定したものです。今回の目的のために、この数値を1572行目で「8192」に変更します。忘れずに変更を保存してください。他の部分は絶対に変更しないように!

pgp-screenshot-06

この簡単な変更が終わったら、カスタムバージョンのGnuPGをコンパイルする準備が整います。これは通常の「./configure」コマンドと「make」コマンドで十分でしょう。また、Ubuntuに既定で付属するGPGバージョンを置き換える場合は、「udo make install」を実行します。RSA 8192ビット鍵ペアをセットアップするために、当面は新たに作成したバイナリをローカルで使用することにします。

pgp-screenshot-07

「gpg」を実行する前に、Homeディレクトリにあるgpg.confファイルを変更します(この場合は「/home/Giuliani/.gnupg/gpg.conf」です)。既定では何もコンテンツがありませんが、暗号、ダイジェスト、圧縮アルゴリズム、そしてハッシュメカニズムのユーザー設定を追加します。

今回はファイルの最後に以下のコンテンツを追加します(もちろんこれはユーザーの好みやニーズに応じて変更可能です)。

personal-cipher-preferences AES256 TWOFISH AES192 AES

personal-digest-preferences SHA512 SHA384 SHA256

personal-compress-preferences ZLIB ZIP

pgp-screenshot-08

こうした大変な作業を経て、ようやく鍵を作成する準備ができました。「g10」ディレクトリ(「keygen.c」ファイルを変更した場所)から「./gpg –gen-key」コマンドを実行し、画面の指示に従います。このプロセスはとてもシンプルです。署名と暗号化に使用される鍵ペアを作成するために、1つ目のオプションを選択してください。鍵のサイズは8,192ビットを選択します。

pgp-screenshot-09

この例にもう少し現実味を持たせるため、この鍵に有効期限の日付も設定しましょう。「5y」を使用して、「gpg」にこの鍵が5年で期限が切れることを認識させます。

pgp-screenshot-10

次に、このIDに名称、メールアドレス、コメント(任意)を追加します。IDは後で追加することもできるので、この鍵ペアに複数のメールアドレスを含めたい場合も心配はいりません。

pgp-screenshot-11

 

その後、パスワードとパスフレーズを入力するように求められます(個人設定に応じてここで1つを選択する必要があります)。鍵の安全を守り、かつ簡単に覚えられる優れたパスフレーズを選ぶためのガイドラインがいくつかあります。詳しく知りたい方は、オンラインで公開されているFAQをご覧ください。

なお、パスワードやパスフレーズを後で変更する場合も、鍵を再作成したり、公開鍵を連絡先に再度配布したりする必要はありません。

すべての情報を入力し終えると、鍵ペアを作成するプロセスが始まり、GPGは乱数生成のプロセスを改善するためにランダムバイトの収集を開始します。このプロセスが終了するまでPCを使用し続けてください(使っているコンピューターによっては、しばらく時間がかかることがあります。8GBのRAMを搭載した私のI5 PCでは、完了までに15分かかりました)。

pgp-screenshot-12

ついに鍵の生成プロセスが完了しました。鍵のフィンガープリントや有効期限など、これまでに入力したすべての情報が表示されます。連絡先に公開鍵を配布する前に、すべての情報が正しいことを確認しましょう。

pgp-screenshot-13

GPG「list」コマンド(–list-keys)を使用すると、システム内で利用できるすべての鍵をチェックして、必要なものをエクスポートすることができます。ここでは先ほど作成したID「Joe Doe」の公開鍵をエクスポートします。この鍵は、利用可能なPGP鍵サーバーの1つに後から手作業でアップロードするか、連絡先に直接配布することができます。一番簡単な方法は、「gpg –export –a [username] > [public-key-filename]」とタイプすることです。

pgp-screenshot-14

公開鍵をコマンドラインからアップロードする場合は、「gpg –keyserver [serverurl] –send-keys [keyID]」コマンドを使用します。

pgp-screenshot-15

また、代わりに「—recv-keys」スイッチを使用すると、公開鍵をインポートできます。この作業はコマンドラインインターフェイスだけで完結します。

最後に、秘密鍵のバックアップを作成しましょう。バックアップは非常に慎重に実行する必要があります。このファイルは他の人と共有しないでください。鍵をバックアップするプロセスは、これまでに見てきたものとよく似ており、「gpg export-secret-key –a [username] > [private-key-filename]」を使用します。

pgp-screenshot-16

これで新しいPGP鍵ペアの完成です。通信とデータのプライバシーが守られるまったく新しい世界をお楽しみください。ようこそ!

「千里の道も一歩から」 ― 老子

私たちはPGPの第一歩を踏み出しました。このトピックに関する記事は今後も掲載していく予定ですので、またご覧いただければと思います。それまでの間、数多く提供されているGPGのコマンド集をどれか試してみてください。暗号化と復号化の機能、ファイルとメッセージの署名など、さまざまなものを調整することができます。

pgp

PGP – 誰もが安心して使えるプライバシー/セキュリティ/認証機能

最近ニュースを見ていると、プライバシー、情報漏えい、スパイ活動などに関する話題を多く目にします。現在ほとんどのコミュニケーションはオンライン、または少なくとも電子デバイス上で行われており、私たちは大切な情報を自ら守る方法について知っている必要があります。これは大企業だけでなく、日常的にコンピューターを使用するすべての人に当てはまることです。どんな人にもプライベートで守るべき情報があり、オンライン上でのコミュニケーションも避けられません。そんなとき、PGPは非常に強力でありながら簡単に使えて、オンラインコミュニケーションにセキュリティを追加してくれます。 フィル・ジマーマン(Phil Zimmermann)氏が開発したPretty Good Privacy(PGP)は、プライバシーを保護し、コミュニケーションに安全性を追加して、電子メッセージの真正性を保証してくれるコンピュータープログラムです。メール、ファイル、ハードディスクドライブ全体など、形式を問わず個人情報またはプライベートな情報を暗号化し、第三者によるオリジナルデータの盗聴や傍受を非常に困難にします。さらに「デジタル署名」という機能もあり、メッセージが送信中に改ざんされておらず、送信元があなた以外に存在しないということを受信側で確認できることから、安心感を与えてくれます。誰もがメッセージに署名を入れる世界になれば(実際、署名するのは簡単です)、フィッシング詐欺行為はとてもやりにくくなり、毎日大量に届くいたずらメールや偽メールも、苦労のわりには投資効果が得られなくなるため、あっさりとなくなるでしょう。 「PGPは、みんなが自分たちの手でプライバシーを守れるようにします。社会的にも、そうしたニーズが高まっています。だから開発したのです」- フィル・ジマーマン 20年以上も前に開発されたPGPのおかげで、私たちは大きく前進することができました。当時、ジマーマン氏は「免許なしに軍需品を輸出した」として米国政府から調査を受けました。40ビット以上の暗号化製品は軍需品とされていたからです(PGPは128ビット)。本件は不起訴となり、同氏は刑事罰に問われることはありませんでしたが、一部の主要な利害関係者が大きな関心を寄せ、厳しい監視下に置きたいと思うほど暗号化製品は強力なツールだということが浮き彫りになったわけです。 最終的に、強力な暗号化機能を備えたフル機能版のPGPは世界中の誰もが手に入れられる製品となりました。フリーソフトウェア財団では、GNU Privacy Guard(GnuPGまたはGPG)という独自のOpenPGP対応プログラムを開発、無償配布し、暗号化や復号化、署名機能で使用するライブラリを提供しています。誰もがPGPを簡単に使えるようにとOSにも幅広く対応しており、多くのグラフィカルユーザーインターフェイス(GUI)で使うことができます。 PGPのソースコードはダウンロードできるので、検証したり、バグを探したり、バックドアがないか確認したり、または純粋に学ぶこともできます。こうした検証を個人的に実行できないとしても、政府や特定の企業と関係のないセキュリティ意識の高いコミュニティが、PGPに対して第三者機関の干渉がないかを継続的に検証しているので、安心してください。こうした検証は、アルファベット3文字の某機関が現在の通信プロトコルの暗号化技術を迂回しようとしたことが発覚して以来、ますます重要となっています。 PGP/GPGを少なからず試してみて機能を確認したい、そう思い始めた方もいるのではないでしょうか。非対称暗号では、2種類の鍵を使用します。1つは秘密鍵で(復号化または電子署名に使用)、もう1つは公開鍵です(平文の暗号化または電子署名の検証に使用)。今すぐすべてを理解する必要はありませんが、より深く理解するには毎日使って経験を重ねることが重要です。とはいうものの、使用するOSで利用可能な全機能に手をつけるとき、少しでも楽な気分で始めたいものですね。そこで、公開鍵の基本的なコンセプトをいくつかご紹介しましょう。 PGP/GPGは主要なOSすべてに対応しているので、試さない手はありません ここで言う鍵とは、アルファベットと数字で構成されたブロックまたは文字列のことです。この鍵はファイルにエクスポートする以外にも、(公開鍵については)世界中の人が利用できるよう鍵サーバーにアップロードすることができます。PGPで生成される鍵は、多様な暗号化アルゴリズムを使って暗号化されます。秘密鍵と公開鍵の両方は、このアルゴリズムで数学的に結びつけられています。システムのセキュリティを侵害することなく公開鍵を共有できるのは、こうした理由からです。 PGP/GPGは主要なOSすべてに対応しているので、試さない手はありません。前述したとおり、GNU PGPも使えますが、最適に動作できるようOSに特化して作られたツールもあります。Mac OS Xであれば、GPG Suiteがあります。これは、Apple Mail用プラグイン、すべての鍵を管理するためのキーチェーン、テキストやファイルの暗号化/復号化/署名/検証を行うGPGサービスなどが含まれています。このほか、GnuPGに相当するMacGPGというコマンドライン版もあります。Windowsを使っているのであれば、似たようなツールでGPG4Winがあります。これは、GnuPGのポート、キーチェーン、主要メールクライアント用のプラグインのほか、始めるのに必要な機能すべてが入っています。 必ず覚えておいていただきたいのは、鍵の安全性は作成時に使ったパスフレーズだけでなく、秘密鍵自体の機密性にも依存するということです。誰かが鍵ファイルやパスフレーズにアクセスできてしまうと(たとえばコンピューターにキーロガーを仕込まれているなど)、セキュリティ対策全体が深刻な影響を受けます。秘密鍵は決して配布せず、パスフレーズも自分だけが覚えられるもの(かつ、簡単にできないようなもの)にしてください。 PGPで新しいペアの鍵を生成するとき、鍵とパスフレーズの長さを選ぶことができます。これは、秘密鍵の保護につながります。長ければ長いほど、鍵の生成に時間がかかってしまいますが、生成自体は一度きりなので、私としては4,096ビット以上にすることをお勧めします。長期的に最大限の安全性を確保するのであれば、8,192ビットがベストですが、生成が完了するまで忍耐力を試されるでしょう。PGP/GPGの鍵生成の手順は、別の記事で紹介しています。 PGPは、公開鍵と秘密鍵の2種類を使います。後者は秘密に保管し、前者は誰にでも自由に配布できます 鍵とパスフレーズを最適な長さに設定することが重要なのは、どうしてでしょうか。たとえば、誰かがあなたのキーチェーンにアクセスし、秘密鍵ファイルのコピーを入手したとします。その人物はパスフレーズを知らなかったとしても、推奨される鍵の長さ(4,096ビットまたは8,192ビット)を使って暗号化システムを直接攻撃し、鍵を解読するという手段に出ることができます。ただし、現在のコンピューティング技術では解読に時間がかかりすぎ、ほぼ不可能ですが。もう1つの手段として、辞書攻撃またはブルートフォース攻撃で鍵の保護に使用したパスフレーズを探し出す方法があります。これは最もよく使われている方法で、暗号化データにアクセスするための、より直接的な手段と言えます。こうした攻撃も、秘密鍵を十分長く設定していれば阻止できる可能性があります。 自分だけのPGP鍵のペアが生成できたら、早速使ってみましょう。まず公開鍵をみんなに公開します。メール署名に含めて、最もメールし合う友達へ送りましょう。友達がその公開鍵でメッセージを暗号化するには、同じバージョンのPGP/GPGを使う必要があります。公開鍵では復号できないので、第三者にメールを復号化されることは絶対にありません。秘密鍵を持つあなただけが、友達からのメッセージを復号化できます。暗号化して返信するときは、友達の公開鍵で暗号化します。一方で、デジタル署名はこれとまったく逆を行います。メッセージを送信するときは、秘密鍵で「署名」をします。メッセージの検証は公開鍵を持っている人であれば誰もができ、あなた自身が署名したことや改ざんされていないことを確認できます。少し複雑に聞こえますが、メールクライアントを正しく設定していれば、署名/暗号化は2回クリックするだけでできてしまいます。 今回の記事では、PGPが難題を抱えてスタートしたこと、開発の歴史的背景の概要、PGPの基本的なセキュリティのコンセプト、留意したい推奨事項をご紹介しました。PGPを試してみて、ファイルや情報の暗号化/署名で活用するきっかけになれば幸いです。プライバシーは、常時オンラインに接続される現代において、私たち自身がそれぞれで守っていく必要があります。こうしたツールを利用すれば、簡単に身を守ることができます。そして、こうした対策へ一歩踏み出したことに遅かれ早かれ良かったと思う日が来るでしょう。 政府や情報機関は秘匿性を基本としており、犯罪者も同様です。では、一般の人たちはどうでしょうか。PGPが登場するまで、軍事レベルの暗号化機能は非常に高額でした。一般ユーザーは自分の通信や情報を他人から見られないようにすることができず、一部機関はそうしたことを望みませんでした。ニーズは存在し、実現される必要があった中で、PGPは20年をかけて私たちが自由とプライバシーの固有の権利を十二分に守れることを示してくれたのです。

pgp
ヒント