SSHによる通信【平成29年度 秋期 基本情報技術者試験 午後 問1】

平成29年度 秋期 基本情報技術者試験 午後 問1

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

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

f:id:aolaniengineer:20200229053538p:plain

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

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

(1)クライアントがサーバにアクセスする。

(2)サーバとクライアントが、SSHセッションで使用する暗号アルゴリズムについて合意する。

(3)サーバとクライアントが、通信データの暗号化に使用するセッション鍵と、他のSSHセッションと区別するためのセッション識別子について合意する。

(4)①クライアントがサーバ認証を行う。サーバ認証では、クライアントがあらかじめ入手して正当性を確認しておいた(a:サーバの公開鍵)を用い、サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。

①によって防ぐことができる攻撃:中間者攻撃

クライアントによるサーバ認証では、記載の「クライアントがあらかじめ入手して正当性を確認しておいたサーバの公開鍵を用い、サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する」のとおり、サーバ側では公開鍵とペアとなる秘密鍵でディジタル署名を行う必要があり、偽のサーバが介在することはできません。

したがって、中間者攻撃のように、攻撃者がクライアントとサーバとの通信の間に割り込み、サーバになりすまして通信を中継するような攻撃を防止することができます。

a:サーバの公開鍵

ディジタル署名は、受信者側で送信元の確認と改ざん検知を行う仕組みです。具体的には、送信者が本文のハッシュ値であるメーセージダイジェストを自身の秘密鍵で暗号化したディジタル署名を本文と一緒に送信し、受信者側でそのディジタル署名を送信者の公開鍵で復号して検証します。

問題文の場合は、クライアントによるサーバのディジタル署名の検証であり、サーバの公開鍵で復号し検証します。

(5)合意した暗号アルゴリズムとセッション鍵を用いて、②共通鍵暗号方式による通信データの暗号化を開始する。これ以降の通信は、全て暗号化される。

②について、通信データの暗号化に公開鍵暗号方式ではなく共通鍵暗号方式を用いる理由は?:共通鍵暗号方式は、公開鍵暗号方式よりも暗号処理が高速である。

共通鍵暗号方式と公開鍵暗号方式の暗号処理の差は、10,000倍以上あるそうです。

ただし、問題文のように、SSHやTLSなど主要なプロトコルでは、認証と暗号化鍵の配送は公開鍵暗号方式で行い、通信データは共通鍵暗号方式で行うハイブリッド方式を採用しています。

〔利用者認証の概要〕

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

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

b:クライアントの公開鍵

サーバ認証と逆に、受信側のサーバでの利用者認証では、クライアントから受信したディジタル署名をクライアントの公開鍵で検証します。

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

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

【出典:基本情報技術者試験 平成29年度秋期午後問1(一部、加工あり)】

③のように考えられている理由は?:”パスワード認証”では、サーバが攻撃者に乗っ取られていた場合、送信したパスワードを攻撃者に取得されてしまう。

”パスワード認証”では、認証情報である利用者IDとパスワードがサーバ側に送信され、偽サーバにより取得されてしまいます。

一方、”公開鍵認証”では、サーバ側に送信されるのはディジタル署名であり、クライアントの公開鍵が窃取されても、クライアントの秘密鍵が漏えいしないかぎり、クライアントの認証情報として成立しません。

なお、利用者認証は、図1のとおり、SSHセッションの安全な通信経路の確立後に行われるため、”パスワード認証”のパスワードなども暗号化されており、通信経路上での漏えいはありません。