A.2. 公開鍵暗号

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

A.2.1. Diffie-Hellman

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

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)。[14]
Diffie–Hellman 鍵合意はそれ自体が匿名の (認証されない) 鍵合意プロトコルであるにも関わらず、さまざまな認証されたプロトコルに対する基礎を提供し、トランスポート層セキュリティーの超短期モード (暗号スイートに応じて EDH または DHE と呼ばれる) において PFS (Perfect Forward Secrecy) を提供するために使用されます。[15]
米国特許 4,200,770 (現在は期限が失効) ではこのアルゴリズムを説明しており、発明者は Hellman、Diffie および Merkle であるとしています。[16]

A.2.2. RSA

暗号学において、RSA (初めて公に説明した Rivest、Shamir および Adleman の頭文字を表す) は公開鍵暗号のアルゴリズムです。これは、暗号と署名のどちらにも適しているとされる最初のアルゴリズムであり、当初の公開鍵暗号における主要な優位性の 1 つとなってきました。RSA は、電子商取引のプロトコルで広く使用されており、十分な長さの鍵と最新の実装が使用されていることからセキュアであると考えられています。

A.2.3. DSA

電子署名アルゴリズム (DSA: Digital Signature Algorithm) は電子署名の標準であり、電子署名における米連邦政府の標準です。DSA は署名のみに使用されるアルゴリズムであり、暗号アルゴリズムではありません。[17]

A.2.4. SSL/TLS

トランスポート層セキュリティー (TLS: Transport Layer Security) とその前身である Secure Socket Layer (SSL) は、インターネットなどのネットワーク上の通信に対してセキュリティーを提供する暗号プロトコルです。TLS と SSL は、エンドツーエンドでトランスポート層におけるネットワーク接続のセグメントを暗号化します。
このプロトコルのいくつかのバージョンは、ウェブ閲覧、電子メール、インターネット FAX、インスタントメッセージ、voice-over-IP (VoIP) などのアプリケーションで広く使われています。[18]

A.2.5. Cramer-Shoup 暗号システム

Cramer–Shoup システムは非対称暗号アルゴリズムであり、初の効率的なスキームとして、標準的な暗号推測に基づく適応的選択暗号文攻撃に対してセキュアであることが証明されました。そのセキュリティーは、決定の Diffie–Hellman 仮定の計算的な難解さに基づいています(これは一般的な想定ですが、実証されている訳ではありません)。これは 1998年に Ronald Cramer と Victor Shoup により開発された ElGamal 暗号の拡張です。極めて頑強性に欠ける ElGamal と比べて、Cramer–Shoup には高度な攻撃者に対してさえも頑強性を確保する追加の要素が加わります。この頑強性は、衝突耐性のあるハッシュ機能と追加の計算の使用によって実現され、これにより ElGamal の 2 倍のサイズの暗号文が生成されます。[19]

A.2.6. ElGamal 暗号

暗号学において、ElGamal 暗号システムは Diffie-Hellman 鍵合意に基づく公開鍵暗号の非対称鍵暗号アルゴリズムです。1985年に Taher ElGamal がこれを発表しました。ElGamal 暗号は、GNU Privacy Guard フリーソフトウェアや最近のバージョンの PGP および他の暗号システムで使用されています。[20]


[8] "Public-key Encryption" Wikipedia 2009年11月14日 http://en.wikipedia.org/wiki/Public-key_cryptography
[9] "Public-key Encryption." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Public-key_cryptography
[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] "Diffie-Hellman." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[14] "Diffie-Hellman." Wikipedia 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[15] "Diffie-Hellman." Wikipedia2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[16] "Diffie-Hellman." Wikipedia. 2009 年 11 月 14 日 http://en.wikipedia.org/wiki/Diffie-Hellman
[18] "TLS/SSL." Wikipedia 2010 年 2 月 24 日 http://en.wikipedia.org/wiki/Transport_Layer_Security
[19] "Cramer-Shoup cryptosystem." Wikipedia 2010 年 2 月 24 日 http://en.wikipedia.org/wiki/Cramer–Shoup_cryptosystem
[20] "ElGamal encryption" Wikipedia 2010 年 2 月 24 日 http://en.wikipedia.org/wiki/ElGamal_encryption