こうすりゃ解ける! 平成30年度春期 基本情報技術者試験の午後問題を徹底解説


2020-03-09 更新

fiber_new 最新の 令和元年度 (2019) 秋期試験 の解説はこちら

皆さん、こんにちは。矢沢久雄です。

4 月 16 日(日)に実施された 平成 30 年 春期 基本情報技術者試験の中から、必須問題である問 1 を徹底解説します。こうすりゃ解ける! というコツをつかんで頂けたら幸いです。

出題分野は「問 1 情報セキュリティ」で、テーマは「 Web サービスを利用するためのパスワードを安全に保存する方法」です。

info本記事ではわかりやすいよう、問題文を抜粋・引用しています

午前問題の知識が十分なら午後問題も解ける

午後問題の問 1 ~ 問 5 (令和 2 年度 春期試験以降から) は、俗に「午前知識の応用問題」と呼ばれます。

試験の出題範囲を示すシラバスの内容は、午前問題と午後問題に分けられていません。同じ出題範囲で、午前問題は用語や概念などの基礎知識を問い、午後問題は知識を応用する能力を問います。

そのため、午後問題は、「 A 社では・・・」や「 B 社のシステムでは・・・」という事例(架空の事例)になっています。

この問題も「 A 社が提供する Web サービスを利用するには・・・」という書き出しになっています。

 

午後問題は、説明が長くて、図も多用されているので、見かけは難しそうなのですが、設問で問われる知識は、午前問題と同様なので心配する必要はありません(これは、問 1 ~ 問 5 のことです。問 6 以降は、大いに心配してください)。

 

以下は、この問題の設問に示された選択肢に示された主な用語です。

午前問題には、これらの用語の意味を単独で問う問題が出題されます。

午後問題では、事例の中に複数の用語を登場させた問題が出題されます。知らない用語がないかどうか、チェックしてみてください。

□  AES
□  Diffie-Helman
□  RSA
□  TLS
□  ハッシュ値
□  SHA-256
□  パスワードファイル
□  ハッシュ化
□  秘密鍵
□  ソルト

用語の意味が 80% 以上わからないと午後問題は解けない

チェック結果は、いかがでしたか。

もしも、知らない用語が多いなら、午前問題の学習が不十分です。午前問題の過去問題を数多く解いてから、午後問題の学習に進むようにしましょう。

先ほど示した用語の意味を以下に示します。

試験の合格圏は、100 点満点中 60 点以上ですが、用語の知識が 60% ギリギリでは応用できないでしょう。80% 以上を目指してください。

つまり、午前問題で 80 点以上を取れるようでなければ、午後問題で 60 点以上を取るのは難しいのです。

【用語】AES( Advanced Encryption Standard )

代表的な共通鍵暗号方式

【用語】Diffie-Helman(2人の考案者の人名)

他者に知られないように共通鍵を交換する方式

【用語】RSA(3 人の考案者 Rivest、Shamir 、Adelman の頭文字)

代表的な公開鍵暗号方式

【用語】TLS( Transport Layer Security )

インターネットで利用されているセキュアなプロトコルで、認証、改ざんの検出、暗号化の機能がある。

【用語】ハッシュ値

何らかのデータから得られた固有の数値のこと。データが異なればハッシュ値も異なり(同じになる可能性は極めて低い)、ハッシュ値から元のデータに逆変換できないという特徴がある。データをハッシュ値に変換する計算方法をハッシュ関数と呼ぶ。

【用語】SHA-256( Secure Hash Algorithm 256 bit )

代表的なハッシュ関数

【用語】パスワードファイル

パスワードを保存したファイル。たとえば i*ejEf/3as というパスワードをそのまま保存すると情報が漏洩してしまうので、ハッシュ関数を使って a4bde8ac02f7 ・・・のようなハッシュ値に変換して保存するのが一般的である。

【用語】ハッシュ化

何らかのデータ(この問題ではパスワード)をハッシュ値に変換すること。

【用語】秘密鍵

公開鍵暗号方式で使われる 2 つの鍵のうち、公開せずに秘密に保持される鍵

【用語】ソルト

悪人が、様々なパスワードをハッシュ値に変化したもの(辞書と呼ばれる)を用意すれば、ハッシュ値からもとのパスワードを知ることができる場合がある。これを防ぐために、パスワードにランダムなデータ(これをソルトと呼ぶ)を付加してからハッシュ化する方法がある。ソルト( salt )とは、セキュリティを強化するために振りかけられた「塩」という意味である。

PR

設問 1 空欄 a 「 SHA-256 」

それでは、設問ごとに問題の解法を説明しましょう。

C さんは,パスワードのハッシュ化には,ハッシュ関数の一つである       を用いることにした。ハッシュ化に用いるハッシュ関数は,一般的に次のような特徴…
a に関する解答群

ア AES  
イ Diffie-Hellman  
ウ RSA
エ SHA-256  
オ TLS

設問 1 の空欄 a は、SHA-256 が代表的なハッシュ関数であることを知っていれば、瞬時に解けます。用語の意味を知ることの重要性をしみじみと感じますね。

 

もしも、SHA-256 という用語を知らないなら、ハッシュ関数でないと判断できる選択肢を消して、残った選択肢の中から、それっぽいものを選びましょう。

たとえば、AES 、Diffie-Hellman 、RSA を知っていれば、答えをエとオに絞れます。

SHA-256 と TLS のどっちがハッシュ関数っぽいでしょう。「ハッシュ(hush)の H があるから SHA-256 かなあ」
はい、それで正解です!

設問 1 空欄 b 「ハッシュ関数の特徴」

〔ハッシュ化に用いるハッシュ関数の特徴〕

(1)
パスワードの長さに関係なく、ハッシュ値は固定長になる。
(2)
  b  
(3)
ハッシュ値からパスワードを推測することが非常に困難である。
(4)
パスワードが 1 文字でも異なれば、ハッシュ値は大きく異なる。
b に関する解答

異なるパスワードをハッシュ化したとき,同じハッシュになる可能性が高い。
同一のパスワードをハッシュ化すると,同じハッシュ値になる。
パスワードをハッシュ化した結果のハッシュ値を再度ハッシュ化すると,元のパスワードになる。
秘密鍵を使用してハッシュから元のパスワードを復元できる。

ハッシュ関数の特徴に関する問題です。

選択肢を見ると、用語ではなく文書になっています。この手の選択肢は、一気に正解を選ぶことが難しいものです。

それなら、消去法でやってみましょう。「選べなかったら、消去法」これを、標語のように覚えて実践してください。

 

消去法は、panorama_fish_eyeclose だけでなく、誤りがないなら panorama_fish_eye 、微妙なら change_history 、間違いなら close 、判断できないなら help_outline を付けてください。

基本情報技術者試験には、滅多に ひっかけ問題 は出題されないので、最も無難な選択肢を選べばOKです。

たとえば、 change_historyclosehelp_outlineclose なら、 change_history を付けた選択肢が正解です。

help_outlineclosecloseclose なら、help_outlineを付けた選択肢が正解です。help_outline は、正解かどうか判断できませんが、他が明らかに close だからです。

b に関する解答

異なるパスワードをハッシュ化したとき,同じハッシュになる可能性が高い。
同一のパスワードをハッシュ化すると,同じハッシュ値になる。
パスワードをハッシュ化した結果のハッシュ値を再度ハッシュ化すると,元のパスワードになる。
秘密鍵を使用してハッシュから元のパスワードを復元できる。
パスワードが異なれば同じハッシュ値になる可能性は極めて低いので、これは close です。
同一のパスワードは同じハッシュ値になるので、これは panorama_fish_eye です。
ハッシュ値から元のパスワードに逆変換できないので、これは close です。
ハッシュ化に秘密鍵は関係ないので、これは close です。

筆者は、講師のはしくれですから、closepanorama_fish_eyecloseclose という消去法で、確実にイが正解だとわかりました。

もしも、他の印を付けた場合も、最も無難な選択肢を選んでください。たぶん、それで正解できたはずです。

 

label関連タグ 消去法のやり方

設問 2 空欄 c 「ソルト」

この方式におけるパスワードの保存では,まず,サーバは新しいパスワードの保存の都度,新しいソルトを生成し,ソルトとパスワードを連結した文字列をハッシュ化する。このとき得られるハッシュ値は,パスワードだけをハッシユ化した場合のハッシュ値   c  。次に,ハッシュ化に使用したソルトと得られたハッシュ値をパスワードファイルに保存する。
c に関する解答群

ア と同じ値になる  
イ とは異なる値になる
ウ よりも長さが長い  
エ よりも長さが短い

長い説明文と、複雑そうな図に戸惑うかもしれませんが、ソルトの役割を問うだけの問題です。

パスワードにソルトを付加してからハッシュ化するのですから、パスワードだけをハッシュ化したときとは異なるハッシュ値が得られます。したがって、正解はイです。

 

もしも、事前にソルトという用語を知らず、問題の説明を読んでもソルトの役割がわからなかったらどうなるでしょう。

選択肢のア、ウ、エは、長さに関することで、選択肢イだけが仲間外れの内容です。したがって、選択肢のア、ウ、エの中からイチかバチかで選んで不正解になってしまうでしょう。それは、仕方のないことです。

合格圏は、100 点満点中 60 点なのですから、少しぐらい不正解があっても気にしないことです。 それが、楽しく学習を続けるコツです。

設問 2 空欄 d 「ソルト」

ソルトを用いる方式が,事前計算による辞書攻撃の対策として効果があるのは,  d  からである。
d に関する解答群

攻撃者が,ハッシュ値からではなくソルトから元のパスワードを検索するための一覧表を事前に作成しておく必要がある
攻撃者がパスワードファイルからソルトを入手できない
攻撃者がパスワードファイルを入手するのが困難になる
攻撃者が一つのパスワードに対して事前に求めるハッシュの数が膨大になる

この設問もソルトの役割がわかっていれば、簡単に正解できると思いますが、念のため消去法を使ってみましょう。

基本情報技術者試験の問題は、午前問題も午後問題も、すべて選択問題です。消去法を使えば、うっかりミスを防ぐことができます。

攻撃者はソルトの値を知らないので、一覧表を作れません。したがって、close です。
パスワードファイルからソルトを入手できないので、これは panorama_fish_eye でしょうか。
いやいや、早合点してはいけません。選択肢だけでなく、問題文もよく見てください。ソルトが「事前計算による辞書攻撃の対策として効果がある」理由を選ぶのですから、ちょっと違うでしょう。
change_history にしておきましょう。
パスワードファイルの入手が困難になるかどうかは、ソルトと無関係なので、これは close です。
ソルトが使われると、攻撃者は、様々なパスワードと様々なソルトで事前に辞書を作る必要があります。これは、あまりにも膨大な数になるので、現実的に不可能です。したがって、これは panorama_fish_eye でしょう。

消去法の結果は、closechange_historyclosepanorama_fish_eye になったので、最も無難な panorama_fish_eye を付けたエを選んでください。それで正解です!

設問 3 「シラバスに示されていない用語が出題されたら・・・」

午後問題には、複数の設問がありますが、ちょっと変わった問題が 1 問程度は出題されます。おそらく、設問ごとの難易度を変えるためでしょう。

設問 3 は、ちょっと変わった問題です。以下は、問題文の一部です。

C さんは,オフライン総当たり攻撃を難しくする方式として,ストレッチングという方式があることを知った。

「ストレッチング」とは、聞いたことがない用語です。

現時点で 最新のシラバス Ver 4.0 には、「ソルト」はあっても「ストレッチング」という用語はありません。以下は、シラバスの抜粋です。

(5) アプリケーションセキュリティ

 イントラネットやインターネットで使用される電子メールなどに対する攻撃を抑制するアブリケーションセキュリティの対策のあらましを理解する。

用語例

Web システムのセキュリティ対策,セキュアプログラミング,脆弱性低減技術(ソースコード静的検査,プログラムの動的検査,ファジングほか),パスワードクラック対策 (ソルトほか),バッファオーバフロー対策,クロスサイトスクリプティング対策,SQL インジェクション対策 (エスケープ処理ほか)

この手の問題が出たときは、説明文を読めば答えが選べるようになっています。シラバスに示されていない用語を説明なしで取り上げるわけにはいかないからです。

 この方式では,まず,ソルトとパスワードを連結した文字列をハッシュ化してハッシュ値を得る。次に,得られたハッシュの後にソルトとパスワードを連結し,その連結結果をハッシュ化する。この操作を指定した回数だけ繰り返すことによって,パスワードの照合に用いるハッシュ値を得る。パスワードファイルには,ソルト及びパスワードの照合に用いるハッシュ値に加えて,繰返し回数も保存する。この方式では,ハッシュ化の操作を 1 回だけ行う方式と比べると,攻撃者が,オフライン総当たり攻撃を行う際,     

ソルトとパスワードを連結してハッシュ化し、それによって得られたハッシュ値の後にソルトとパスワードを連結してハッシュ化することを繰り返し、その繰り返し回数を保存するという説明です。これが、きっとストレッチングなのでしょう。

空欄は、ストレッチングの効果を問うものです。選択肢を見てみましょう。ここでも、消去法を使います。

解答群

生成すべきパスワードの候補の最大文字列長が長くなる
一つのパスワードの候補から求めたハッシュ値の長さが長くなる
一つのパスワードの候補から求めたハッシュ値を,パスワードファイルのハッシュと比較する回数が増える
一つのパスワードの候補からハッシュ値を求める時間が増加する
パスワード自体は長くならないので、これは close でしょう。
ストレッチとは、「伸ばす」という意味ですから、これは panorama_fish_eye のような気がします。
ハッシュ化の回数は増えても、比較の回数は増えないような気がします。これは、change_history にしておきましょう。
何度もハッシュ値を求めるのですから、これは panorama_fish_eye でしょう。

panorama_fish_eye が 2 つになりました。四択ならウかエが正解である確率が高いような気がしますが、最近の試験ではアやイが正解の場合もよくあります。

え~い、それならイを選ぶことにしましょう。ブッ、ブッー! 正解は、エです。

 

もしも、消去法で、panorama_fish_eye が複数(ここでは 2 つ)になったら、それぞれをよく比べて決選投票をしてください。

ハッシュ値というものは、ハッシュ化するデータの長さに関わらず同じなんじゃないでしょうか(事実、同じです)。

したがって、選択肢イは、間違いかもしれません。それに対して、選択肢イの時間が増加することは、否定のしようがありません。このような判断をすれば、正解のエを選べます。

最後に

午後問題を解説するのは、とても難しいことです。人によって様々な解法があるからです。

したがって、解説された解法が自分に合っていないと「問題より解説の方が難しいじゃないか!」なんてことになってしまいます。

こうして解説記事を書いておきながら、無責任なことを言わせていただきますが、午後問題は、自分流のやり方で解くものです。

そのために、自分用の解説ノートを作ることをお勧めします。このような解説記事は、解説ノートを作るための参考としてください。

解説記事の内容に十分に理解できない部分があっても、参考になる部分があるはずです。そう願っております。

 

label 午後問題の過去 10 回分の出題傾向はこちらから

午後問題の歩き方 | 過去問 10 回分から分析した午後問題の出題傾向
(2019 秋期試験 更新)

※平成30年度春期基本情報技術者試験の問題と解答例は、以下から入手できます。

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30.html#30haru

※基本情報技術者試験のシラバスは、以下から入手できます。

https://www.jitec.ipa.go.jp/1_13download/syllabus_fe_ver4_0.pdf

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 85% の方が、
午前分野を免除しています。
2020年 6月 12日 12時
締め切り間近!!
alarm2020年 6月 12日 12時締切!

詳しく見てみるplay_circle_filled
label これまでの『午後問題の歩き方』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数