はじめに
SSH の公開鍵認証や、ランサムウェアの暗号化の話には、「対称鍵」「公開鍵」「秘密鍵」といった言葉が必ず出てきます。これらは似た言葉が多く、最初はどれが何を指すのか混乱しがちです。しかし、この数語の関係さえ押さえれば、「公開鍵認証はなぜ安全なのか」も「暗号化されると、なぜ自力で戻せないのか」も、すっきり理解できるようになります。
本記事は、暗号の基礎である対称鍵暗号と公開鍵暗号の違いと仕組みを、身近な比喩を使って平易に整理します。前提知識がなくても読めるようにしつつ、SSH やランサムウェアといった実務の話につながる形でまとめます。
- 対称鍵(共通鍵)暗号と公開鍵暗号の違いと仕組み
- 紛らわしい用語の対応関係(対称=共通、公開鍵暗号=非対称)
- 公開鍵認証がなぜ安全なのか(SSH の例)
- 実際には両方を組み合わせるハイブリッド暗号の考え方
結論を先に述べると、対称鍵暗号は「1 本の同じ鍵で施錠と解錠を行う、速い方式」、公開鍵暗号は「ペアになる 2 本の鍵を使い、鍵の受け渡しの問題を解決する方式」です。それぞれに長所と短所があり、実際の通信(SSH や TLS)やランサムウェアでは、両者を組み合わせて使います。
用語を整理する: 対称鍵・公開鍵・秘密鍵
つまずきの多くは、言葉の対応が曖昧なまま読み進めることから生まれます。最初に、用語の対応を固定しておきます。
対称鍵(共通鍵)暗号とは
暗号化と復号に、同じ 1 本の鍵を使う方式です。「対称鍵」と「共通鍵」は、同じものを指す別の呼び名です。代表的なアルゴリズムに AES や ChaCha20 があります。
公開鍵暗号(公開鍵・秘密鍵のペア)とは
ペアになる 2 本の鍵(公開鍵と秘密鍵)を使う方式です。「非対称鍵暗号」とも呼ばれます。公開鍵は他人に配ってよい鍵、秘密鍵は自分だけが厳重に持つ鍵です。代表的なアルゴリズムに RSA や楕円曲線暗号(ed25519 など)があります。
紛らわしい用語の対応(対称=共通、公開鍵暗号=非対称)
呼び名の対応を表にまとめます。ここを押さえると、以降が読みやすくなります。
| 方式 | 別名 | 使う鍵 | 特徴 |
|---|---|---|---|
| 対称鍵暗号 | 共通鍵暗号 | 1 本の同じ鍵 | 高速。鍵の受け渡しが課題 |
| 公開鍵暗号 | 非対称鍵暗号 | 公開鍵・秘密鍵のペア | 鍵の受け渡しを解決。処理は重い |
「公開鍵」と「秘密鍵」は、公開鍵暗号で使うペアの鍵のことです。対称鍵(共通鍵)とは別物である、という点をまず固定しておきます。
対称鍵暗号の仕組みと課題
まず、シンプルな対称鍵暗号から見ていきます。
1 つの鍵で暗号化・復号(高速)
対称鍵暗号は、同じ鍵で施錠(暗号化)と解錠(復号)を行います。アルゴリズムが比較的軽く高速なため、大量のデータを暗号化する用途に向いています。実際、日常の通信や保存データの暗号化でも、データ本体を暗号化しているのは多くの場合この対称鍵暗号です。
鍵をどう安全に渡すか(鍵配送問題)
対称鍵暗号には、ひとつ根本的な課題があります。送信者と受信者が、同じ鍵をあらかじめ共有していなければならない点です。ところが、その鍵そのものをどうやって相手に安全に渡すのか、という問題が残ります。通信路に乗せて渡せば、盗聴されたときに鍵ごと漏れてしまいます。これを鍵配送問題と呼びます。対称鍵だけでは、まだ安全な経路を持たない相手と、安全に鍵を共有するのが難しいのです。この課題を解決するのが、次に見る公開鍵暗号です。

公開鍵暗号の仕組み
対称鍵暗号の「鍵をどう安全に渡すか」という課題を解決するのが、公開鍵暗号です。発想を、身近な比喩で見ていきます。
公開鍵で暗号化し、秘密鍵で復号する(南京錠の比喩)
公開鍵暗号では、ペアになる 2 本の鍵を使います。ここでは、公開鍵を「南京錠」、秘密鍵を「その南京錠を開けられる唯一の物理鍵」と考えると分かりやすいです。
自分の南京錠(公開鍵)は、いくつでも複製して他人に配って構いません。誰かが自分に秘密のデータを送りたいときは、配っておいた南京錠でデータを施錠(暗号化)して送ってもらいます。施錠された箱は、対になる物理鍵(秘密鍵)でしか開けられません。公開鍵で施錠したものは、対になる秘密鍵でしか復号できない、という非対称性が要点です。
鍵配送問題をどう解決するか
この仕組みのうれしい点は、配るのが「南京錠(公開鍵)」だけで済むことです。公開鍵は、途中で誰かに見られても問題ありません。施錠はできても、開けるための秘密鍵がなければ意味がないからです。そして秘密鍵は、一度もネットワークに流す必要がありません。これによって、対称鍵暗号で問題になった「安全な経路がないと鍵を渡せない」という鍵配送問題が解消されます。

認証への応用(チャレンジ&レスポンス)
公開鍵暗号は、データの暗号化だけでなく、本人確認(認証)にも使えます。仕組みはこうです。サーバーが毎回異なるランダムな問い(チャレンジ)を出し、クライアントは手元の秘密鍵を使って、その問いに対する答え(署名)を返します。サーバーは、登録済みの公開鍵でその答えを検証します。秘密鍵を持つ本人だけが正しく応答でき、しかも秘密鍵そのものは送らずに「持っていること」を証明できる、という点が肝心です。これが、次に見る公開鍵認証の中身です。
公開鍵認証はなぜ安全か(SSH の例)
SSH のログインを例に、パスワード認証と公開鍵認証を比べると、安全性の差が分かりやすくなります。
秘密鍵はネットワークを流れない
パスワード認証では、入力したパスワードそのものが通信を通じてサーバーへ送られます。もし通信が盗聴されていれば、パスワードが漏れるおそれがあります。一方、公開鍵認証では、前述のチャレンジ&レスポンスによって「秘密鍵を持っていること」を証明するだけで、秘密鍵そのものは一切ネットワークを流れません。盗聴されても、鍵本体を盗まれるリスクが極めて低くなります。
総当たりに強い理由
パスワードは、人間が覚えられる程度の短い文字列であることが多く、機械的に試し続けるブルートフォース攻撃(総当たり攻撃)の標的になります。これに対し、公開鍵認証で使う鍵は、非常に長い暗号データです。これを偶然に言い当てることは、現代のコンピューターでは事実上不可能です。だからこそ、公開鍵認証はパスワード認証よりも総当たりに強いといえます。
実際に SSH へ公開鍵認証を設定する手順(サーバー側に公開鍵を置き、秘密鍵を持つ端末だけが接続できるようにする方法)は、関連記事『Windows で SSH 公開鍵認証を設定|パスワードなし接続の手順』で解説しています。SSH サーバー自体の構築は、関連記事『Windows で OpenSSH Server を構築|PowerShell での導入と初期設定』を参照してください。
実際は両方使う: ハイブリッド暗号
ここまでで、対称鍵暗号と公開鍵暗号には、それぞれ長所と短所があることが分かりました。対称鍵は高速ですが鍵の受け渡しが課題で、公開鍵暗号は鍵の受け渡しを解決できますが処理が重く、大量のデータには不向きです。実用では、この両者を組み合わせて、互いの短所を補います。これがハイブリッド暗号です。
なぜ組み合わせるのか(速度と鍵配送の両立)
考え方はシンプルです。データ本体は高速な対称鍵で暗号化し、その対称鍵(セッション鍵)の受け渡しだけを公開鍵暗号で安全に行う、という役割分担です。こうすると、大量データを速く暗号化しつつ、鍵配送問題も解消できます。対称鍵の「速さ」と、公開鍵暗号の「鍵を安全に渡せる」という長所を、同時に得られるわけです。
SSH・TLS での使われ方
SSH や TLS(HTTPS)の通信も、この方式です。接続の最初に公開鍵暗号を使って鍵交換を行い、その通信専用の対称鍵(セッション鍵)を双方で確立します。以降の実際のデータのやり取りは、その対称鍵で高速に暗号化されます。だからこそ、安全さと速さを両立できています。
ランサムウェアでの使われ方(対称鍵を公開鍵で保護)
同じ仕組みは、残念ながら攻撃にも使われます。ランサムウェアの多くは、各ファイルを高速な対称鍵で暗号化し、その対称鍵を攻撃者の公開鍵でさらに暗号化して保護します。元に戻すには、対になる攻撃者の秘密鍵が必要になり、それは攻撃者しか持たないため、被害者は自力で復号できません。詳しくは、関連記事『ランサムウェアの攻撃対象と暗号化の仕組み』で解説しています。
同じ暗号技術が、守り(SSH や TLS の安全な通信)にも、攻め(ランサムウェアの暗号化)にも使われます。仕組みを理解しておくと、両方の話が同じ土台の上で腑に落ちます。

まとめ
対称鍵暗号と公開鍵暗号は、対立する選択肢ではなく、役割の異なる道具です。対称鍵はデータを速く暗号化し、公開鍵暗号は鍵を安全に受け渡しする。両者を組み合わせるハイブリッド暗号が、SSH や TLS、そして(悪用例として)ランサムウェアでも使われています。
- 対称鍵(共通鍵)は同じ 1 本の鍵で施錠・解錠する高速な方式
- 対称鍵には鍵をどう渡すかという鍵配送問題がある
- 公開鍵暗号はペアの鍵で鍵配送問題を解決する
- 公開鍵認証は秘密鍵を送らずに本人確認でき安全
- 鍵は非常に長く、総当たり攻撃に強い
- 実用ではデータを対称鍵、鍵の受け渡しを公開鍵で担う
- SSH・TLS もランサムウェアも同じ仕組みを使う
以上、最後までお読みいただきありがとうございました。
