← コラム一覧

共通鍵暗号と公開鍵暗号の違い|鍵配送問題とハイブリッド暗号方式

共通鍵暗号と公開鍵暗号の違いを、鍵の数・速さ・配り方から整理。鍵配送問題がなぜ起きるのか、TLS がハイブリッド方式を採る理由、暗号の危殆化と方式の選び方、情報処理安全確保支援士試験での問われ方まで解説します。

暗号が守るのは機密性です。完全性は署名やハッシュ、可用性は冗長化や負荷対策が受け持ちます。まずこの対応を押さえておくと、対策を並べる設問で取り違えません。そのうえで、暗号方式は大きく二つに分かれます。暗号化と復号に同じ鍵を使う共通鍵暗号と、対になる二つの鍵を使う公開鍵暗号です。どちらが優れているという話ではなく、向き不向きが違います。

共通鍵暗号 — 速いが、鍵を配る問題が残る

共通鍵暗号は処理が速く、大量のデータを扱えます。ただし、通信する二者が同じ鍵を持っていなければ始まりません。その鍵をどうやって相手へ安全に届けるか——これが鍵配送問題です。暗号化して送ろうにも、そのための鍵がまだ共有されていない、という循環に陥ります。

もう一つの弱点は鍵の数です。n 人が互いに通信するには、2 人の組み合わせの数だけ鍵が要ります。6 拠点なら 15 本、10 拠点なら 45 本。参加者が増えるほど急に増え、そのすべてを安全に配って保管し、失効させる手間がかかります。

共通鍵暗号公開鍵暗号
鍵の数(n 者)n(n-1)/2 本2n 個(各自の公開鍵と秘密鍵)
処理の速さ速い遅い
鍵の配り方事前に安全な経路が要る公開鍵は公開してよい
主な用途通信本体の暗号化鍵の共有、ディジタル署名

公開鍵暗号 — どちらの鍵で処理するかで意味が変わる

公開鍵暗号では、公開してよい鍵と、本人だけが持つ秘密鍵が対になります。ここで最も間違えやすいのが、どちらの鍵を使うかです。相手だけが読める形にして送りたいなら、受信者の公開鍵で暗号化します。対になる受信者の秘密鍵を持っているのは相手だけなので、他の誰も復号できません。逆に、自分の秘密鍵で処理するのはディジタル署名で、目的がまったく違います。

ただし、公開鍵暗号だけでは中間者攻撃を防げません。公開鍵は誰でも配れるので、攻撃者が自分の鍵を「相手の鍵です」と渡してしまえば成立します。その鍵が本当に本人のものかを保証する仕組みが、電子証明書と PKI です。「公開鍵暗号を使っているから安全」という誤りを正す設問が、繰り返し出題されます。

ハイブリッド暗号方式 — 重い処理を鍵の共有だけに閉じ込める

実際の通信では、二つを組み合わせます。まず公開鍵暗号(または鍵交換)で共通鍵を安全に共有し、そのあとの本体は共通鍵暗号で暗号化する。こうすると、重い処理は短い鍵のやり取りだけに収まり、大量のデータは速い方式で扱えます。TLS がこの形です。

① 鍵の共有(重いが、短いものだけ) 公開鍵暗号/鍵交換 相手の公開鍵で包む 共通鍵を共有できた 両者だけが同じ鍵を持つ ② 本体の暗号化(軽い。大量に流せる) 共通鍵暗号 共有した鍵で暗号化 通信の本体 大きなデータでも実用的な速さで扱える 重い処理を「鍵の共有」だけに閉じ込めるのが、この組み合わせの狙い。
鍵の共有だけを公開鍵側で行い、本体は共通鍵暗号で扱う。

鍵交換には、鍵そのものを送らずに両者が同じ値へ辿り着く方式(DH 法とその楕円曲線版)が使われます。TLS 1.3 では、通信の途中で使った鍵が後から漏れても過去の通信を復号できない性質(前方秘匿性)が前提になりました。

アルゴリズムは隠さない — ケルクホフスの原理

暗号方式は公開し、鍵だけを秘密にするのが原則です。理由は二つあります。第一に、公開されたアルゴリズムは世界中の研究者に検証され、弱点が早く見つかります。誰も検証できない独自の方式は、破られていることに気づけません。第二に、秘密にしていたものが漏れたとき、鍵なら差し替えるだけで済みますが、アルゴリズムだと作り直しになります。「隠蔽による安全」に頼らない、という考え方です。

危殆化 — 同じ方式が、いつまでも安全とは限らない

計算能力や解読手法が進歩すると、それまで安全とされていた方式が使えなくなります。これを危殆化といいます。SHA-1 は衝突が現実的に作れるようになって署名から外れ、TLS 1.0 と 1.1 も利用が非推奨になりました。運用では「いま安全か」ではなく「使い続けられるか」で選び、定期的に見直します。国内では CRYPTREC が推奨する暗号のリストが更新されるので、それを目安にします。

# 設定に残りやすいもの。次回の更新で外す対象として印を付けておく
cipher = AES-256-GCM       # 現役
hash   = SHA-256           # 現役
hash   = SHA-1             # 衝突が見つかっている。署名には使わない
min_protocol = TLSv1.2     # 1.0 / 1.1 は受け付けない

情報処理安全確保支援士 試験での問われ方

午前Ⅱでは、鍵の数(n(n-1)/2)、暗号化と署名で使う鍵の向き、共通鍵と公開鍵の使い分けが繰り返し問われます。特に「相手だけが読める形にするにはどちらの鍵か」は、取り違えが最も多い論点です。午後では、通信の構成図を示して「どの区間が守られるか」「なぜハイブリッド方式なのか」を書かせる形や、設定の抜粋から使うべきでない方式を見つけさせる形が出ます。方式名の暗記より、何を守る仕組みで、どこに限界があるかを説明できるようにしておくことが効きます。

IPA 公式 PDF:令和5年度 秋期 午前Ⅱ問題 ↗本文はこの公式 PDF でご覧ください(アプリ内には転載していません)。

確認しておきたいこと

演習(支援士日誌)で手を動かす →