冬期講習 2026-2027、募集中。総復習は売りません。90分×完全1対1で、穴だけを塞ぎます 詳しく →
電話 0422-27-7828チャットで質問無料相談を予約

武蔵野個別指導塾の特徴

高校情報I 共通鍵暗号と公開鍵暗号—鍵の持ち主と渡す相手を通信の目的から整理する|武蔵野個別指導塾

学習のイメージ写真 武蔵野個別指導塾
X LINE Facebook

受信者の公開鍵と秘密鍵を保管表に置き、共通鍵を暗号化して渡す手順と復号の順序を組み立てます。

よくあるのは、高校生が相手に秘密の文章を送る準備をしていて、復号用の秘密鍵まで相手へ渡そうとする場面です。鍵には渡してよいものと、持ち主が守るものがあります。誰が読む文章かを決め、受信者の公開鍵で暗号化すれば、対応する秘密鍵を送る必要はありません。出方には、鍵の保管表を埋める型、送受信の手順を並べる型、鍵を取り違えた案を修正する型があります。名前だけを覚えるより、鍵がどこからどこへ動くかを追いましょう。

鍵の種類と持ち主を分ける

暗号化は、元の内容をそのまま読めない形に変える操作です。元に戻す操作を復号と呼びます。通信路で内容を見られても、正しい鍵を持たない人には内容を読み取りにくくすることが、ここでの目的です。暗号化された文章を暗号文、元の文章を平文と呼びます。暗号文を送ることと、復号用の鍵を送ることは別の操作です。

共通鍵暗号では、暗号化と復号に同じ共通鍵を使います。送信者と受信者が同じ鍵をあらかじめ安全に共有できれば、送信者がその鍵で暗号化し、受信者が同じ鍵で復号できます。しかし、その鍵を第三者にも知られれば、その第三者も復号できてしまいます。したがって、共通鍵をどう共有し、誰が持っているかが重要です。本文の概念図では鍵を安全に扱えるという条件を明示し、実際の鍵の配送方法の細部は決めません。

公開鍵暗号では、対応する公開鍵と秘密鍵を組にします。受信者の公開鍵で暗号化した内容を、対応する受信者の秘密鍵で復号します。公開鍵は相手に渡せますが、秘密鍵は持ち主が保管し、送信者に渡しません。鍵の名前を覚える際は「誰の鍵か」まで付けます。AからBに送るなら、読む人はBなので、暗号化に使うのはBの公開鍵、復号に使うのはBの秘密鍵です。

図1のように、共通鍵は双方が同じものを持ち、公開鍵暗号では受信者が秘密鍵を保管します。鍵の対応が変われば復号できないため、公開鍵を見ただけで持ち主を決めつけず、信頼できる方法で相手の鍵であることを確認する必要があります。

図1 共通鍵と受信者の鍵の持ち方の違い

図1の矢印は鍵の扱いの概念を表し、鍵そのものや通信方式の細かな手順を表すものではありません。公開鍵を公開できることは、どの公開鍵でも同じ結果になるという意味ではありません。公開鍵と秘密鍵の対応を表に残すと、鍵の取り違えを発見しやすくなります。

両方式を併用するときは、受信者の公開鍵で共通鍵を暗号化して送り、受信者は自分の秘密鍵でその共通鍵を復号します。その後、双方が共通鍵で本文をやり取りします。公開鍵を相手のものと確認できること、秘密鍵と共通鍵が守られることが前提です。暗号化は内容を隠すための操作で、送信者の本人確認や文章の真偽、改変の有無をそれだけで保証するものではありません。署名や証明書には別の役割があります。

基本例題:Bが読む連絡を送る

AがBへ内容を読まれたくない連絡を送ります。Bの公開鍵は、Bのものであると確認済みです。Bは対応する秘密鍵を安全に保管しています。公開鍵暗号を使い、Aが使う鍵、送るもの、Bが使う鍵を順に答えてください。鍵の持ち主も書きます。

まず目的を「Bが読む」と定めます。送り手Aの名前ではなく、読み手Bの名前を鍵に付けます。

  1. Aは確認済みのBの公開鍵を入手します。
  2. Aは連絡をBの公開鍵で暗号化します。
  3. Aはできた暗号文をBへ送ります。
  4. Bは手元のBの秘密鍵で暗号文を復号します。
  5. 復号された連絡が、Aの送った内容に対応することを確かめます。

図2のように、Bの秘密鍵はBの手元に残ります。Aが受け取るのはBの公開鍵であり、Bの秘密鍵ではありません。暗号文は通信路を通りますが、復号用の秘密鍵はその経路を通さない設計です。

図2 Bの公開鍵で暗号化し秘密鍵で戻す手順

図2を逆向きにたどって答えを条件へ戻しましょう。Bの秘密鍵に対応する公開鍵はBの公開鍵なので、Bが読む目的と一致します。Aの公開鍵を使ったなら、対応するAの秘密鍵で戻す関係になり、Bが自分の秘密鍵で読むという条件には合いません。

もしBの公開鍵を取得できなければ、この条件では暗号化に進めません。別人の鍵を推測して代用せず、鍵の確認をやり直します。また、Bの秘密鍵が使えない場合も、同じ暗号文をそのまま平文として扱うことはできません。鍵の確認や再送の手順を決め直し、復号できたと仮定して次へ進まないことが大切です。

標準例題:共通鍵を安全に共有する

CがDへ展示の配置案を送ります。CとDは共通鍵Kを安全に共有済みで、ほかの人はKを知らないものとします。CからDへの暗号化と復号の鍵を答え、暗号文と鍵を同じ公開の場所へ置く案が条件を満たすか説明してください。

  1. 読む人はD、送る人はCです。
  2. Cは共有済みのKで配置案を暗号化します。
  3. Cは暗号文をDへ送ります。
  4. Dは手元の同じKで暗号文を復号します。
  5. 鍵Kを公開の場所へ置けば第三者も入手できるので、案は条件を満たしません。

答えを保管表に戻すと、CとDの双方がKを持ち、それ以外の人は持たない状態です。暗号文だけを公開の場所に置く場合と、鍵もそこに置く場合では、第三者が復号に使う材料を持つかどうかが違います。暗号文の配送と鍵の共有を一つの矢印にまとめると、この違いが見えなくなります。

共有済みという条件がなければ、上の手順はそのまま成立しません。平文のKを誰でも読める経路で送れば、受信者以外にも渡る可能性があります。安全な共有方法を別途用意するか、次の例のように公開鍵を利用します。Kを紛失した場合は、暗号文が届いてもDはその鍵による復号を進められません。復号不能を成功として扱わず、鍵の共有からやり直す必要があります。

発展例題:2種類の鍵を組み合わせる

EがFへ長い記録を送ります。Fの公開鍵はFのものと確認済みで、Fの秘密鍵はFだけが安全に持ちます。Eは新しい共通鍵Lを用意し、Lと記録を別々に扱います。第三者に平文のLを渡さずFが記録を読めるよう、送るものと復号の順序を答えてください。鍵の持ち主も示します。

  1. Eは記録を共通鍵Lで暗号化し、記録の暗号文を作ります。
  2. EはLをFの公開鍵で暗号化し、鍵の暗号文を作ります。
  3. Eは2つの暗号文をFへ送ります。平文のLは送りません。
  4. Fは自分の秘密鍵で鍵の暗号文を復号し、Lを得ます。
  5. Fは得たLで記録の暗号文を復号します。

順序を戻して確かめます。最後に記録を読む鍵はLで、Eが記録の暗号化に使ったものと一致します。そのLはFの秘密鍵に対応するFの公開鍵で包まれていたので、条件を満たすFが取り出します。Fの秘密鍵をEへ送る矢印は必要ありません。EとFはLを持つことになり、Fの秘密鍵はFの保管場所に残ります。

鍵の暗号文が届かないとき、Fはこの手順でLを取り出せません。記録の暗号文だけ届いても、記録を読めたとは判定できません。逆に鍵の暗号文だけ届いた場合はLを得ても記録がありません。どちらが届いたかを区別して不足分の再送を求めます。届いたデータが壊れて復号に失敗した場合も、結果を推測して埋めず、失敗を記録して受信内容と鍵の対応を確認します。

Fの公開鍵だと思ったものが別人の鍵だった場合、対応する別人の秘密鍵でLを取り出されるおそれがあります。暗号化の操作ができたことと、正しい相手の鍵を使ったことは別の確認です。公開鍵の確認が済む前に、鍵の名前だけを見て通信を完了扱いにしてはいけません。

誤答を保管表へ戻して直す

GがHへ報告を送りたい場面で、「Hの秘密鍵をGに渡し、Gがそれで報告を暗号化する」と答えたとします。理由は、復号に必要な鍵を送信側も持つ必要があると思い込んだからです。しかし、Hの秘密鍵を渡すと秘密として保管する条件を失います。さらに、受信者の公開鍵で暗号化して対応する秘密鍵で復号する、という目的の手順にも合いません。

図3のように、渡す鍵をHの公開鍵に直し、Hの秘密鍵はHの手元に残します。GはHの公開鍵で報告を暗号化し、暗号文をHに送ります。Hは自分の秘密鍵で復号します。鍵の移動先と暗号文の移動先を別々に見れば、修正後の表には秘密鍵をGへ渡す行がありません。

図3 秘密鍵を渡す誤りと公開鍵を渡す修正

図3の修正は、Hの公開鍵が確かにHのものと確認できるという条件の下で成り立ちます。確認に失敗した場合は送信を保留し、確認済みの鍵を得てからやり直します。すでに秘密鍵が渡ってしまった場合は、単に表から矢印を消しても秘密が保たれたことにはなりません。その鍵を秘密に保てているという前提を置き直さず、鍵の管理手順を見直します。

もう一つの間違いは、Gの公開鍵を選んでしまうことです。公開鍵という種類だけは合っていますが、受信者Hの鍵ではありません。鍵の種類と持ち主を分けて表に書き、読み手の名前と照合すると、この間違いも見つけられます。

練習問題

次の設定は学習用です。各問では鍵の種類と持ち主、必要な操作を文章で答えてください。公開鍵は、確認済みと指定した場合に限り、その人のものとして使えます。

  1. JがKへ公開鍵暗号で通知を送ります。Kの公開鍵は確認済みで、Kの秘密鍵はKが保管しています。Jが暗号化に使う鍵とKが復号に使う鍵を順に答えてください。
  2. MとNは共通鍵Pを安全に共有済みです。NがMへ暗号文を送るとき、両者が使う鍵を答え、Pを第三者に公開した場合に条件がどう変わるか説明してください。
  3. QがRへ記録を送るため、共通鍵Sで記録を暗号化し、確認済みのRの公開鍵でSを暗号化しました。Rが受け取る2つの暗号文と、復号の順序を答えてください。
  4. Tへ送る予定の暗号文について、送信者が「Tの公開鍵が取得できなかったので、自分の公開鍵で代用した。Tは自分の秘密鍵で読める」と説明しました。誤りと、送る前に取るべき手順を答えてください。
  5. UがVへ、Vの確認済み公開鍵で暗号化した連絡を送ったところ、V側で秘密鍵が利用できず復号に失敗しました。成功と判断できるか、判断の理由と次に確認することを答えてください。

練習の答えと解き方

  1. JはKの公開鍵で暗号化し、KはKの秘密鍵で復号します。読み手はKなので、鍵の組もKのものです。逆にたどるとKの秘密鍵に対応する公開鍵をJが使っており、指定された保管状態に戻ります。JへKの秘密鍵を渡す必要はありません。

  2. NはPで暗号化し、MもPで復号します。同じ鍵を両者が持つという条件を満たすためです。Pを第三者に公開すると、第三者も復号に使えるため、第三者がPを知らないという元の条件が崩れます。暗号文の宛先がMであっても、鍵を公開した事実は消えません。

  3. Rは記録の暗号文とSの暗号文を受け取ります。まずRの秘密鍵でSを復号し、次に得たSで記録を復号します。記録の暗号化に用いたSへ戻ってから記録を読むため、元の条件と対応します。記録の暗号文だけでは、この設定のRはまだSを得られません。

  4. 送信者の公開鍵とTの秘密鍵は、指定された対応する組ではありません。Tが読むにはTの公開鍵で暗号化する必要があります。送信を保留し、Tの公開鍵を入手して持ち主を確認してから暗号化します。確認できないまま別の鍵を使っても、Tへ読める形で届ける条件に戻りません。

  5. 成功と判断できません。暗号文が届いても復号に失敗しており、Vが内容を読めたとはいえないからです。V側で対応する秘密鍵を利用できるか、受信した暗号文が対象の連絡かを確認し、必要な手順をやり直します。利用可能な鍵と暗号文の対応が取れ、復号できて初めて受信側の処理を確かめられます。

覚えておくこと

共通鍵暗号では、暗号化と復号に同じ鍵を使います。 公開鍵暗号では、受信者の公開鍵で暗号化し、その秘密鍵で復号します。 併用では、共通鍵を受信者の公開鍵で暗号化して渡せます。 鍵の持ち主の確認と、秘密鍵・共通鍵の保管が前提です。 暗号化だけでは送信者の確認や内容の真偽は保証されません。

どこで手順が止まるか

鍵の名前は言えても送る相手を間違えるときは、登場人物ごとに公開鍵と秘密鍵の欄を作り、読む人に丸を付けます。個別指導では、暗号文、共通鍵、秘密鍵を別のカードに見立て、誰の手元からどこへ移すかを一手ずつ説明してもらいます。届かなかった場合にも戻って、次の操作に必要な鍵が手元にあるかを確かめます。鍵の持ち主を追えば、通信の途中で失われた前提も見えてきます。

読んで終わりにするか、ここから変えるか。

武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。

まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。

本気になった日が、入塾の日。

お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。

電話は年中無休。365日、24時間、お電話可能。

チャットで質問チャット
無料相談を予約する 電話 0422-27-7828電話 LINE チャット
で質問