ああ、暗号学。日常生活において非常に重要であるものの、様々な技術の中でも長い歴史を持った、非常に混乱が生じやすい技術です。
暗号化は、古代から、将軍、スパイ、反政府勢力、さらには政治家によっても使用されてきました。サイファー (cipher) は最も初期の暗号化方式と考えられており、古代ローマにおいても情報を秘密にするために使用されていました。メッセージの運び屋でさえ、正しく解読するための情報を持っていなければメッセージが何を意味するのかを知ることができません。つまり、遠隔地にいる2人の人間が、他者に内容を知られることなく通信できる手段がサイファーを利用することでした。
昨今、暗号化は、誰かに自分たちのやり取りを傍受されないことを確認し、機密データを盗まれたり破損させられたりするのを防ぐために必要です。けれども、今日でも暗号化の基本は、過去のサイファーと同じです。もちろん、高等数学やコンピュータを利用する今日の暗号化アルゴリズムは遥かに高度になっており、ブルートフォース攻撃をかけて暗号を破ろうとしても解読は極めて困難です。
このブログでは、PGP(Pretty Good Privacy)、OpenPGP、および GnuPG(Gnu Privacy Guard)と呼ばれる3つの一般的な暗号化規格について説明します。OpenPGP が PGP に代わるオープンな選択肢であり、GnuPG は OpenPGP スタンダードに基づいているという点において、類似点があります。3つの規格はすべて現在使用されていますが、用途は異なります。
Pretty Good Privacy は、その頭字語である PGP もよく使われますが、元々は盗聴されずにコミュニケーションをとるための手段として、Phil Zimmerman 氏によって、1991年に作成されたものです。今日では、テキストメッセージと電子メールの暗号化と復号化に使用されています。手短かに言うと、メッセージやファイルを暗号化して送りたい場合、ランダムな鍵で暗号化してから、その鍵を受信者の公開鍵で暗号化します。公開鍵は、指定された受信者だけが持っている秘密鍵でしか復号化できないようになっています。公開鍵がわかっていたとしても、メッセージやファイルを復号化できるのは、秘密鍵を持っている受信者だけということです。
PGPの問題は、それが公開特許ではなく、複雑な特許権問題が絡んでいるという点です。1990年代には、暗号を武器とみなしていた米国では暗号技術の米国外への輸出を制限する法律がありました。Phil Zimmerman 氏が作成した PGP が海外で使用されていることが判明し、長期にわたる調査が行われましたが、結局 Zimmerman 氏が訴えられることはありませんでした。Zimmerman 氏が出版物としてリリースした PGP のソースコードに基づいて、誰でも独自バージョンの暗号化ソフトウェアを作成することができます。ソースコードは表現や宗教の自由を保障する米憲法修正第1条で保護されているため、新バージョンに関しては米国政府が介入できることはほとんどありません。そして数年後に、OpenPGP が登場しました。
公開鍵暗号方式の RSA の特許失効後に、PGP は商用の有償ソフトウェアになっていますが、特に国際的な用途のためにはロイヤリティ問題が絡むことは避けたいものです。ライセンスを取得することなく(廃止されたものの米国のやっかいな法律問題も回避して)PGP を使えるよう、インターネット技術特別調査委員会 (Internet Engineering Task Force、IETF) の中に OpenPGP ワーキンググループが結成されました。
今日では、多くの電子メールクライアントが OpenPGP をサポートしています。OpenPGP に関しては、現在もいろいろと更新が行われています。
Ipswitch | Progress Community では、OpenPGP について次のように説明しています。
「OpenPGP は、ファイルを暗号化するために使用される鍵方式の暗号化で、意図した受信者だけがファイルを受信して復号化できます。OpenPGP は電子メール通信の保護に広く使用されていますが、その技術は FTP にも適用できます。
OpenPGP は2つの暗号化キーを使ってファイルを保護します。公開鍵を使ってファイルを暗号化し、対応する秘密鍵だけがファイルを復号化できます。
通信を暗号化するSSL や SSH とは異なり、OpenPGP はアップロードする前にファイルを暗号化する方法です。そのため OpenPGP モードは、標準の FTP、SSL、SSH 接続と組み合わせて使用できます。」
上述の PGP とよく似ているのがわかると思います。OpenPGP は、IETF の RFC に公開されている暗号化規格で、PGP コミュニティによってサポートおよび開発されています。OpenPGP から派生した他の規格も存在します。最も一般的なものは GnuPG (Gnu Privacy Guard、または略してGPG) と呼ばれるオープンソース暗号化規格です。
GnuPG は、OpenPGP から派生した、企業が使用できるもう1つの無料の暗号化規格であり、シマンテックの PGP の代わりとして機能します。主な違いはサポートされているアルゴリズムですが、デザイン上、GnuPG は PGP と遜色なく機能します。
GnuPG はオープンであるため、PGP に付随するシマンテックの技術サポートとユーザーインタフェースにメリットを見出す企業もあります。特定のアルゴリズム間の互換性がないなど、GnuPG と PGP との間には微妙な違いがあることは理解しておいた方がいいでしょう。ただし、電子メールなどのほとんどのアプリケーションでは回避策があります。GnuPG に含まれていないアルゴリズムの1つは、特許問題がある IDEA Module です。
このブログが、よく聞く暗号化規格の違いをうまく説明できているといいのですが。重要なのは、PGP、OpenPGP、GnuPG の3つとも関連があり、互いにうまく動作するはずだという点です。使用するアプリケーションによって、これらの暗号化規格のどれを使わないといけないかが決まる場合もあります。よろしければ、下のフォームを使ってコメントをお寄せください。
Greg is a technologist and data geek with over 10 years in tech. He has worked in a variety of industries as an IT manager and software tester. Greg is an avid writer on everything IT related, from cyber security to troubleshooting.
より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。