公開鍵暗号

 1対多の通信を念頭に置いた暗号化方式。1対1を想定した共通鍵と違い、暗号化と複号に別のキーを用いる。共通鍵では通信する相手の数分鍵が存在することとなるため、相手が増えれば管理負担が増え、不特定多数との通信は事実上不可能である。この方式はそういった多数との通信において用いられる。

 構造としてはまず暗号化・複合化それぞれに特化した鍵のペアを作る。暗号化用のものを公開鍵、複合化用のものを秘密鍵と呼び、文字通り公開鍵は公開し、秘密鍵は自身で管理する。送信者(多数の相手)は公開鍵で暗号化し、受信者(一人の自分)は秘密鍵で復号する。

 管理鍵数を数式で考えてみる。秘密鍵方式ではユーザー数nに対し、全てのペアごとに鍵が必要となる。つまりシステム全体で存在する鍵はnC2=n(n-1)/2 である。
 一方公開鍵方式は全てのユーザーが秘密鍵と公開鍵のペアしか持たないため鍵の総数は2nとなる。具体的な数を挿入すればその差は明白だろう。
 たとえばユーザー数5人なら、秘密鍵方式、公開鍵方式ともに10個で同数であるが、10人になれば秘密鍵は45個、公開鍵は20個と倍以上の開きが出る。ここまで来ると不特定多数で公開鍵方式が有用なのは明白であろう。

 しかし、公開鍵方式は共通鍵方式に比べ数倍の処理能力を要求するためパフォーマンスでは劣るため注意が必要。

実装技術

RSA
ハイブリッド方式

 共通鍵暗号の鍵を公開鍵で配布し、データ自体は共通鍵でやり取りする方式。
 共通鍵の管理問題を公開鍵で解決し、大容量データを送る際の公開鍵によるパフォーマンス低下を共通鍵を用いることで回避する折衷案。