A.2. 公開鍵暗号

公開鍵暗号は、多くの暗号アルゴリズムと暗号化システムで採用されている暗号化のアプローチです。その際立った特徴は、対称鍵アルゴリズムの代わりか、または対称鍵と共に非対称鍵アルゴリズムを使用する点にあります。公開鍵/秘密鍵の暗号化技術を使用することで、以前には知られていなかった通信を保護し、メッセージを認証する数多くの方法を実用化できるようになりました。また、対称鍵アルゴリズムを使用する際に必要とされていた1つまたは複数の秘密鍵のセキュアな初期交換が不要になりました。さらに、公開鍵暗号を使って電子署名を作成することもできるようになりました。[10]
公開鍵暗号は、基本的な技術であり世界中で幅広く使用されています。また、トランスポート層セキュリティ (TLS) (SSL の後継)、PGP および GPG などのインターネット標準の土台となるアプローチです。[11] 
公開鍵暗号で使用される特徴的な技術は、非対称の鍵アルゴリズムの使用です。このアルゴリズムでは、メッセージを暗号化するために使われる鍵がメッセージを復号するために使用される鍵と同じではありません。各ユーザーは、暗号鍵と秘密鍵のペアを持ちます。公開鍵が広く配布される可能性があるのに対して、秘密鍵は秘密の状態にされます。メッセージは受信者の公開鍵で暗号化され、対応する秘密鍵でのみ暗号化解除することができます。これらの鍵は数学的に関連付けることができますが、(現在または将来において) 秘密鍵を公開鍵から導き出すことはできません。このアルゴリズムの発見は、1970 年代中盤に始まった暗号の使用に変革をもたらすものとなりました。[12]
これとは対照的に、数千年間にわたって使用されてきた各種の対称鍵暗号のアルゴリズムでは、暗号化と復号のために単一の秘密鍵が使用され、この鍵は送信者と受信者によって共有されます (この秘密鍵は共有されるものの、秘密の状態にしておく必要があります)。対称的な暗号化スキームを使用するには、送信者と受信者の両方が前もって鍵を安全に共有しておく必要があります。[13] 
対称鍵アルゴリズムの方の計算集約度が低くなることがほぼ通例であるため、鍵交換アルゴリズムを用いて鍵を交換してから、その鍵と対称鍵アルゴリズムを用いてデータを転送することが一般に行われています。例えば、PGP および各種スキームの SSL/TLS ファミリーがこれを実行するため、それらはハイブリッド暗号システムと呼ばれています。[14] 

A.2.1. Diffie-Hellman

Diffie–Hellman 鍵交換 (D–H) は、相互を認識していない 2 当事者間で、保護されていない通信チャネルを通して共有秘密鍵を共同で確立できるようにする暗号化プロトコルです。確立される鍵は、対称鍵暗号を用いて後続の通信を暗号化するために使用されます。[15]

A.2.1.1. Diffie-Hellman の歴史

このスキーマは 1976 年に Whitfield Diffie と Martin Hellman によって初めて公開されました。しかしながら後に、GCHQ の British signals intelligence agency 内の Malcolm J. Williamson が数年早くこれを単独で発明しており、かつ機密扱いにされていたことが明らかになりました。2002 年に Hellman は、Ralph Merkle の公開鍵暗号の発明に対する貢献を認めてこのアルゴリズムを Diffie–Hellman–Merkle 鍵交換と呼ぶことを提案しました(Hellman, 2002)。[16]
Diffie–Hellman 鍵合意はそれ自体が匿名の (認証されない) 鍵合意プロトコルであるにも関わらず、さまざまな認証されたプロトコルに対する基礎を提供し、トランスポート層セキュリティの超短期モード (暗号スイートに応じて EDH または DHE と呼ばれる) において PFS (Perfect Forward Secrecy) を提供するために使用されます。[17]
U.S. Patent 4,200,770 (現在は期間が満了している) は、アルゴリズムを説明しており、発明者は Hellman、Diffie および Merkle であるとしています。[18]


[10] "Public-key Encryption" Wikipedia 2009年11月14日 http://en.wikipedia.org/wiki/Public-key_cryptography
[11] "Public-key Encryption." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Public-key_cryptography
[12] "Public-key Encryption." Wikipedia. 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Public-key_cryptography
[13] "Public-key Encryption." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Public-key_cryptography
[14] "Public-key Encryption." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Public-key_cryptography
[15] "Diffie-Hellman." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[16] "Diffie-Hellman." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[17] "Diffie-Hellman." Wikipedia2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[18] "Diffie-Hellman." Wikipedia. 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman