スゴ技

【解説】平成29年度 秋 基本情報技術者試験 【問1】(その1)

Blog:IT・情報処理BLOG |

【解説】平成29年度 秋 基本情報技術者試験 【問1】(その1)

こんにちは、IT分野教員の佐藤です。

IT分野では、私たちの生活の身近なところで日々使われているコンピュータシステムやWebアプリケーションを設計し、開発する勉強を日々行っています。
卒業生はシステムエンジニアやWebエンジニアなどとして就職をしています。もちろん国家資格の取得にも力を入れているので、資格を取りたい人には最適な分野です。


過去の基本情報技術者試験の解説はこちら


平成29年度秋期午後問1の解説

10月15日に実施された基本情報技術者試験の問題が公開されたので、起き抜けにコーヒーを飲みながら確認していました。

事実上リモートメンテナンスの基本ツールではあるsshですが、試験問題に出てくるようなメジャーなものなのかという微妙なラインをついてきてくれて…うれしいです。

と思ったらいくぶん昔にあったという話を他の先生から聞いています。

授業ではsshについてはさくっと扱うものの、それぞれの部分の目的・役割についてはきちんと解説してない感がありました。

ということで、後期の授業や次年度の授業で使わせてもらうことになりそうです。

とはいえ、背景とか無しに解いてしまうと非常にアドホック(その場しのぎという感じ)になってしまいますから、sshの接続周りについて少し確認をしてから問題へ進みましょう。

お手元に問題冊子もしくは過去問(PDF)をご用意ください。


# sshそのものと暗号について

まずはsshそのものについて。かなり昔はtelnetいうプロトコル(23/tcp)を使った、リモートアクセス用のプロトコルがありました。

今でも使えることは使えますが、基本的にインストールしない・基本的に有効にしない、というものになっております。なぜかというと、平文で全部流れてしまうという、現代社会においては脆弱性とも言える仕様になっているからです。

この問題に対応するために考案されたのが、暗号化通信を用いたリモートアクセス用プロトコルとしてのssh(22/tcp)です。

sshは公開鍵暗号と共通鍵暗号を併用する形でのハイブリッド型になっていますが、ネットワーク的に接続できたら最初に確認を行い、早期に暗号化通信を開始します。

暗号化通信を行う時は、負荷対策の意味合いから共通鍵暗号系を使ってます。

それぐらい現状では公開鍵暗号系は(少なくともストリーミング的に)常用するには負荷が高いということですかね。

# 暗号の仕組み(共通鍵・公開鍵)

で、公開鍵暗号系と共通鍵暗号系ですが、共通鍵の方は想像しやすいもので、私達が普段使っている鍵(自宅や車の)そのものと考えて下さい。

特殊なものでなければ複製も可能なもので、複製でも解錠できてしまう良くも悪くも機能する特色があります。

その一方で公開鍵暗号系は、鍵を2つに分割する方法で、一方を「公開鍵」もう一方を「秘密鍵」として扱います。

この鍵には面白い特性があり、一方で暗号化をすると、自分自身では復号(元に戻す)ができません。復号は他方の鍵でしか行えなくなるのです。

  • 公開鍵で暗号化すると、秘密鍵でしか復号できない
  • 秘密鍵で暗号化すると、公開鍵でしか復号できない

つまり、公開鍵は外部に漏らせます(だからこそ公開なわけですが)。でも公開鍵で暗号化しても、周囲で手に入る公開鍵では復号できないためとりあえず安全であり、秘密鍵(名前の通り秘密にします、公開できません)を持つ自分自身でしか復号できません。

逆に自分の秘密鍵で暗号化すると、外部に公開している公開鍵でしか復号できません。復号できない情報(暗号)を生成できるということは、秘密鍵の所有者である特定の人しかできないので、この部分を利用してデジタル署名としても機能できるようになります。

# 公開鍵ペアの使われているところは?

## サーバーから送られるサーバー鍵

sshでは、サーバー側では設定時に公開鍵のペア(サーバー鍵とかホスト鍵とか適当に言ってます)を作っています。これはサーバーごとに個別のものが設定され、クライアント間との整合性確認のために行っています。

  • 初めて接続するクライアントは、サーバーからサーバー鍵を送ってもらい、利用します
    • 利用者に対して「このサーバー鍵、信用する?」と確認することにつかったりします、事前に鍵情報をもらっている場合、正しいサーバーからの接続応答なのかを判断できることでしょう
    • ユーザーの判断(もしくはデフォルト設定)により、サーバー鍵をキャッシュします(しなくてもよかったりする)
  • 2回目以降となるクライアントであっても、その都度、同様にサーバー鍵を送ってもらっています
    • キャッシュしていた鍵と比較して、同じであれば目的のサーバーと判断しています
    • もし違っていたら… なんで? ということになる

ということですね。これが図1における「安全な通信経路の確立」の一部です。この前後で一時的な暗号鍵を作ったり、認証に使う鍵の種類を決定したりとやることはいくつかあるのですが、試験に関わる範囲ではここまでです。

## 認証で使う公開鍵ペア

続いて認証まわりですが、よく使われるのは以下の2つ。

  • パスワードを用いた認証(PasswordAuthentication): よくある「ユーザー名とパスワード」です
  • 公開鍵(ペア)を用いた認証(RSAAuthentication,PubkeyAuthentication): サーバー側に事前に個人の公開鍵を送っておき、手持ちの秘密鍵で暗号化できているかを見て判断するものです

初期状態ではパスワード認証を用いることが多いですが、あくまで初回のみとし、公開鍵を転送したら公開鍵認証にするのが管理者の嗜みです。

クラウド上に構築するVPSなんかでは、初期状態で公開鍵ペアが用意されており、VPS構築処理完了後に秘密鍵をダウンロードして初回から公開鍵認証になっている場合もあります。それぐらいパスワードを(暗号化されてるとしても)送りたくないということです。

この場合、サーバーから登録済み公開鍵で暗号化された「チャレンジコード」を秘密鍵を用いて復号化して結果を送ることで鍵ペアの正当所有者(対となる秘密鍵で取り出せたんだからいいでしょ?)という形で認証を行うことになります。


今回の問題は以上の特性を確認する問題になってますね。

「その2」では実際にこれらの知識をベースに問題にあたってみましょう。上記の知識を確認した上で解き直すと、驚くほどサクサク解けてしまうことでしょう。

お楽しみに。

2017年(平成29年度)秋期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動