最近、政府によるスパイ活動が明らかになったことで、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」に変更します。忘れずに変更を保存してください。他の部分は絶対に変更しないように!
この簡単な変更が終わったら、カスタムバージョンのGnuPGをコンパイルする準備が整います。これは通常の「./configure」コマンドと「make」コマンドで十分でしょう。また、Ubuntuに既定で付属するGPGバージョンを置き換える場合は、「udo make install」を実行します。RSA 8192ビット鍵ペアをセットアップするために、当面は新たに作成したバイナリをローカルで使用することにします。
「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
こうした大変な作業を経て、ようやく鍵を作成する準備ができました。「g10」ディレクトリ(「keygen.c」ファイルを変更した場所)から「./gpg –gen-key」コマンドを実行し、画面の指示に従います。このプロセスはとてもシンプルです。署名と暗号化に使用される鍵ペアを作成するために、1つ目のオプションを選択してください。鍵のサイズは8,192ビットを選択します。
この例にもう少し現実味を持たせるため、この鍵に有効期限の日付も設定しましょう。「5y」を使用して、「gpg」にこの鍵が5年で期限が切れることを認識させます。
次に、このIDに名称、メールアドレス、コメント(任意)を追加します。IDは後で追加することもできるので、この鍵ペアに複数のメールアドレスを含めたい場合も心配はいりません。
その後、パスワードとパスフレーズを入力するように求められます(個人設定に応じてここで1つを選択する必要があります)。鍵の安全を守り、かつ簡単に覚えられる優れたパスフレーズを選ぶためのガイドラインがいくつかあります。詳しく知りたい方は、オンラインで公開されているFAQをご覧ください。
なお、パスワードやパスフレーズを後で変更する場合も、鍵を再作成したり、公開鍵を連絡先に再度配布したりする必要はありません。
すべての情報を入力し終えると、鍵ペアを作成するプロセスが始まり、GPGは乱数生成のプロセスを改善するためにランダムバイトの収集を開始します。このプロセスが終了するまでPCを使用し続けてください(使っているコンピューターによっては、しばらく時間がかかることがあります。8GBのRAMを搭載した私のI5 PCでは、完了までに15分かかりました)。
ついに鍵の生成プロセスが完了しました。鍵のフィンガープリントや有効期限など、これまでに入力したすべての情報が表示されます。連絡先に公開鍵を配布する前に、すべての情報が正しいことを確認しましょう。
GPG「list」コマンド(–list-keys)を使用すると、システム内で利用できるすべての鍵をチェックして、必要なものをエクスポートすることができます。ここでは先ほど作成したID「Joe Doe」の公開鍵をエクスポートします。この鍵は、利用可能なPGP鍵サーバーの1つに後から手作業でアップロードするか、連絡先に直接配布することができます。一番簡単な方法は、「gpg –export –a [username] > [public-key-filename]」とタイプすることです。
公開鍵をコマンドラインからアップロードする場合は、「gpg –keyserver [serverurl] –send-keys [keyID]」コマンドを使用します。
また、代わりに「—recv-keys」スイッチを使用すると、公開鍵をインポートできます。この作業はコマンドラインインターフェイスだけで完結します。
最後に、秘密鍵のバックアップを作成しましょう。バックアップは非常に慎重に実行する必要があります。このファイルは他の人と共有しないでください。鍵をバックアップするプロセスは、これまでに見てきたものとよく似ており、「gpg export-secret-key –a [username] > [private-key-filename]」を使用します。
これで新しいPGP鍵ペアの完成です。通信とデータのプライバシーが守られるまったく新しい世界をお楽しみください。ようこそ!
私たちはPGPの第一歩を踏み出しました。このトピックに関する記事は今後も掲載していく予定ですので、またご覧いただければと思います。それまでの間、数多く提供されているGPGのコマンド集をどれか試してみてください。暗号化と復号化の機能、ファイルとメッセージの署名など、さまざまなものを調整することができます。