基本情報でわかる 公開鍵暗号方式とディジタル署名 「絵に書いてみればわかる」


2021-12-02 更新

error

この記事は基本情報技術者試験の旧制度( 2022 年以前)の記事ですが、試験対策ではなく、技術用語を理解する上では問題ないと考えています。
試験対策としてお読みになる場合は、現在の試験制度では出題されない午後問題を一部題材にしているので、ご注意ください。

この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。

午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸暗記では得られない明確さで、用語を理解できるようになります。

今回のテーマは、「公開鍵と秘密鍵を作る人と使う人」です。

公開鍵暗号方式とは? 午前問題で確認

公開鍵暗号方式では、暗号化と復号に異なる鍵を使います。これらの鍵は、あらかじめ決められたルールに従ってペアで作られ、どちらか一方で暗号化すれば、もう一方で復号できるようになっています。

たとえば、鍵のペアが 3 と 7 の場合(実際には、もっと桁数の多い鍵が使われます)、 3 で暗号化すれば 7 で復号でき、 7 で暗号化すれば 3 で復号できます。この性質を利用して、公開鍵暗号方式で、ディジタル署名が実現されています。

公開鍵暗号方式やディジタル署名に関する問題では、受信者と送信者の「どちらが鍵のペアを作るのか?」「どちらが何の鍵を使うのか?」に混乱してしまう受験者が多いようです。わかっているつもりでも、うっかり間違いをしてしまう受験者もいます。

混乱や、うっかり間違いを防ぐコツは、 「頭の中で考えるだけではなく絵に書いてみること」です。実際にやってみましょう。以下は、公開鍵暗号方式に関する午前問題です。

問 38 平成 27 年度 秋期 午前

X さんは, Y さんにインターネットを使って電子メールを送ろうとしている。電子メールの内容を秘密にする必要があるので,公開鍵暗号方式を使って暗号化して送信したい。そのときに使用する鍵はどれか。

ア X さんの公開鍵  
イ X さんの秘密鍵
ウ Y さんの公開鍵  
エ Y さんの秘密鍵

まず、送信者と受信者を絵に書いてみましょう。

「 X さんは、 Y さんにインターネットを使って電子メールを送ろうとしている」のですから、 X さんが送信者で、 Y さんが受信者です。 X さんが Y さんに、公開鍵暗号方式を使って暗号化した電子メールを送ります。

図 送信者と受信者を絵に書く

次に、 X さん、 Y さんが、行うことを、絵に書き加えてみましょう。

X さんは、公開鍵で電子メールを暗号化します。 Y さんは、自分しか知らない秘密鍵で電子メールを復号します。誰の公開鍵と秘密鍵なのかは、後で書き加えます。

図 送信者と受信者が行うことを絵に書き加える

さて、ここからがポイントです。

公開鍵暗号方式では、公開鍵と秘密鍵をペアで作ります。秘密鍵は、自分しか知らないものなので、公開鍵と秘密鍵のペアを作るのは、受信者の Y さんであり、それらは「 Y さんの公開鍵」と「 Y さんの秘密鍵」です。

これまでの絵の「公開鍵」と「秘密鍵」に、「 Y さんの」という言葉を書き加えてみましょう。

図 誰の公開鍵と秘密鍵なのかを絵に書き加える

ここまで絵を書けば、混乱も、うっかり間違いもなく、問題を解けるでしょう。暗号化で使う鍵を答える問題なので、答えは選択肢ウの「 Y さんの公開鍵」です。

解答 ウ

ディジタル署名とは? 午前問題で確認

今度は、ディジタル署名に関する午前問題です。「ディジタル署名の作成」と「ディジタル署名の検証」に用いる鍵を答える、という内容です。

問 39 平成 22 年度 秋期 午前

ディジタル署名に用いる鍵の種別に関する組合せのうち,適切なものはどれか。

ディジタル署名の作成に用いる鍵 ディジタル署名の検証に用いる鍵
共通鍵 秘密鍵
公開鍵 秘密鍵
秘密鍵 共通鍵
秘密鍵 公開鍵

この問題には、 X さんと Y さんが登場しませんが、署名の作成者を X さん、署名の検証者を Y さんとして、それぞれが行うことを絵にしてみましょう。

X さんは、自分しか知らない秘密鍵でデータのハッシュ値(データの内容から作られた固有の値)を暗号化します。これが、ディジタル署名の作成です。

Y さんは、公開鍵でディジタル署名を検証します。

この絵を書いた時点で、ディジタル署名の作成に用いる鍵が「秘密鍵」であり、検証に用いる鍵が「公開鍵」であることがわかるので、問題を解くことができます。問題の答えは、選択肢エです。

図 ディジタル署名を X さんが作成し Y さんが検証するとして絵を書く

せっかくですから、誰の公開鍵と秘密鍵なのかも、はっきりさせておきましょう。

公開鍵暗号方式では、公開鍵と秘密鍵をペアで作ります。秘密鍵は、自分しか知らないものなので、公開鍵と秘密鍵のペアを作るのは、ディジタル署名の作成者の X さんであり、それらは「 X さんの公開鍵」と「 X さんの秘密鍵」です。

これまでの絵の「公開鍵」と「秘密鍵」に、「 X さんの」という言葉を書き加えてみましょう。

この絵から、ディジタル署名の作成に用いる鍵は「 X さんの秘密鍵」であり、検証に用いる鍵は「 X さんの公開鍵」であることが、混乱も、うっかり間違いもなく、わかります。

図 誰の公開鍵と秘密鍵なのかを絵に書き加える

解答

公開鍵暗号方式とディジタル署名に関する午後問題

公開鍵暗号方式とディジタル署名は、 SSH( Secure Shell )で活用されています。

SSH は、クライアントからサーバにログインするプロトコルであり、公開鍵暗号方式で盗聴を防ぎ、ディジタル署名でなりすましを防いでいます。

以下は、 SSH に関する午後問題です。あれこれと SSH に関する難しそうな説明が示されていますが、設問のテーマになっているのは、

クライアントとサーバの「どちらが鍵のペアを作るのか?」「どちらが何の鍵を使うのか?」

です。それさえわかれば、設問に答えられます。

問 1 平成 29 年度 秋期 午後(一部抜粋)

SSH による通信に関する次の記述を読んで,設問 1 ~ 4 に答えよ。

 SSH は遠隔ログインのための通信プロトコル及びソフトウェアであり、通信データの盗聴対策や,通信相手のなりすましを防ぐ仕組みを備えている。SSH では,サーバにログインしてデータをやり取りする通信(以下,ログインセッションという)に先立って,安全な通信経路の確立と利用者認証を行う必要がある。安全な通信経路の確立,利用者認証及びログインセッションを合わせて SSH セッションと呼ぶ。その流れを,図 1 に示す。

図 1 SSH セッションの流れ

〔安全な通信経路の確立の概要〕

 安全な通信経路の確立は,次のようにして行う。

  1. クライアントがサーバにアクセスする。
  2. サーバとクライアントが, SSH セッションで使用する暗号アルゴリズムについて合意する。
  3. サーバとクライアントが,通信データの暗号化に使用するセッション鍵と,他の SSH セッションと区別するためのセッション識別子について合意する。
  4. (1)クライアントがサーバ認証を行う。サーバ認証では,クライアントがあらかじめ入手して正当性を確認しておいた。 aを用い,サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。
  5. 合意した暗号アルゴリズムとセッション鍵を用いて,(2)共通鍵暗号方式による通信データの暗号化を開始する。これ以降の通信は,全て暗号化される。

〔利用者認証の概要〕
 クライアントからサーバへのログインでは,サーバは利用者認証を行う。SSH の利用者認証の方式には,ディジタル署名を用いる “公開鍵認証” とパスワードを用いる “パスワード認証” がある。

 ”公開鍵認証” では,クライアントの公開鍵を事前にサーバに登録しておき,この登録されている公開鍵に対応する秘密鍵をクライアントがもっていることをサーバが確認する。この確認では,クライアントがセッション識別子などに対するディジタル署名をサーバに送信し,サーバがbを用いてディジタル署名を検証する。

 ”パスワード認証”では,クライアントが利用者 ID とパスワードを送信し,サーバは受け取ったパスワードが当該利用者のパスワードと一致していることを検証する。

 なお,(3) “パスワード認証” は, “公開鍵認証” に比べて,安全性が低いと考えられている

 

設問 1 本文中のに入れる適切な答えを,解答群の中から選べ。

a, b に関する解答群

安全な通信経路の確立時に合意したセッション鍵
クライアントの公開鍵
クライアントの秘密鍵
サーバの公開鍵
サーバの秘密鍵

まず、空欄 a です。

ここでは、クライアントがサーバを認証するのですから、ディジタル署名の作成者はサーバであり、認証者はクライアントです。これを、絵に書くと、以下のようになります。

図 ディジタル署名をサーバが作成しクライアントが検証することを絵に書く

ディジタル署名の作成者であるサーバが鍵のペアを作るので、それらは、サーバの公開鍵とサーバの秘密鍵です。空欄 a は、クライアントが検証に用いる鍵を答えるものなので、答えは「サーバの公開鍵(選択肢エ)」です。

 

次に、空欄 b です。

今度は、空欄 a とは逆に、サーバがクライアントを認証するのですから、ディジタル署名の作成者はクライアントであり、認証者はサーバです。これを、絵に書くと、以下のようになります。

ディジタル署名の作成者であるクライアントが鍵のペアを作るので、それらは、クライアントの公開鍵とクライアントの秘密鍵です。空欄bは、サーバが検証に用いる鍵を答えるものなので、答えは「クライアントの公開鍵(選択肢イ)」です。

図 ディジタル署名をクライアントが作成しサーバが検証することを絵に書く

解答設問 1 a ― エ, b ― イ

いかがでしたか?

「頭の中で考えるだけではなく絵に書いてみること」で、公開鍵暗号方式とディジタル署名で、公開鍵と秘密鍵を作る人と使う人を、すんなり区別できるようになったでしょう。

この連載では、今後も、多くの受験者が苦手としている用語を取り上げて行きます。それでは、またお会いしましょう!

label 関連タグ
科目A試験は、
免除できます。
独習ゼミで科目A試験を1年間免除して、科目B試験だけに集中しましょう。
免除試験を受けた 74.9% の方が、
科目A免除資格を得ています。
科目A免除試験 最大 2 回の
受験チャンス !
info_outline
科目A免除試験 最大 2 回の
受験チャンス !
詳しく見てみるplay_circle_filled
label これまでの『基本情報でわかるテクノロジー』の連載一覧 label 著者