情報処理安全確保支援士の令和2年度 10月試験 午後Ⅰ 問1問題の解説を行っていきます。
ネットワークスペシャリスト・情報処理安全確保支援士に最短・最速で合格する方法についてはこちら
通常は春季と秋季の年2回開催ですが、某ウイルスの影響で春季試験が10月に延期されての開催となりました。
ネットワークスペシャリストなど秋季試験は11月に開催予定でしたが、会場の確保の観点などから中止となり、令和3年度の春季試験にずれる形となりました。
このため、令和2年度は年1回しか開催されていませんので、春季・秋季という名称ではなく10月試験という名称が使用されています。
ちなみに私はこの回で情報処理安全確保支援士に合格しましたので、何かと思い入れのある回となっています。
私が受験した際に解答した内容についての記事も記載しています。
出題テーマ
出題テーマは『スマートフォン用決済アプリケーションプログラムの開発』となっています。
ですが、アプリ開発自体が問われているのではなく、開発をするにあたり必要となる認証や攻撃に対する仕組みなどが問われています。
メッセージ認証(HMAC)、サーバ証明書の検証、なりすまし対策、スクリーニング対策が出題されています。
出題内容の解説は各設問で詳しく行っていきます。
数問は知識が必要となりますが、それ以外の問題は文章中のヒントから論理的に考えてあげることで解答できる問題となっています。
その問題だけで合格点を狙えますので、ほぼ国語の問題と言えるかと思います。
設問1 (1)
なりすましが想定される手段と、なりすましが成立してしまう問題の2つを解答する必要があります。
決済に用いるのはバーコードで、バーコードをどのように生成しているかというと、表1に、『16桁の会員番号をバーコードとして表示する』と記載があります。
バーコード生成のために会員番号を使用すること自体は問題ありませんが、会員番号だけを使用してバーコードを生成することは問題です。
自分の会員番号から1ずらした数字など、他の会員の番号を推測することであったり、16桁の適当な数字からバーコードを生成できてしまうからです。
また、会員番号は不変なはずです。
会員番号が毎回変更になってはポイントの付与も決済も行うことはできません。
その不変の会員番号からバーコードが生成されますので、当然バーコードも不変となります。
バーコードの写真を盗撮などすれば、他人のバーコードを利用して決済を行うことも可能なはずです。
これらが、なりすましの手段の解答となります。
以上のことから手段としては2つ考えられ、『会員番号を推測し、バーコードを生成すること(21文字)』もしくは『他人のバーコードの画像を利用して、決済を行うこと(24文字)』と解答することができます。
問題としては『16桁の会員番号のみからバーコードを生成すること(24文字)』と解答することができます。
問題文だけ読むと難しく感じるかもしれませんが、身近なサービスを思い出して考えてみるとわかりやすくなるかと思います。
バーコード・QRコードで決済を行う『PayPay』や『LINEPay』などは起動時や5分おきに表示されているバーコードやQRコードが変更されますので、バーコードは更新されるべきものということがわかります。
短期間に複数の決済があった場合は、決済の前に確認メッセージが表示されたりします。
身近なサービスを思い出して、サービスの動作と比較して違うポイントを探すということも解答のヒントになるかと思います。
なりすましに関しては、一時期Twitterで話題になっていましたマクドナルドのモバイルオーダーで商品の横取りの可能性があるというツイートなどが近しい内容かと思います。
IT関連のニュースを読むこと、新しい技術・サービス触れることはもちろんですが、Twitterを見るだけでも勉強につながります。
設問1 (2)
図2および図3に決済のフローやQRコード検証の手順が記載されていますので確認していきます。
ユーザからQRコード生成リクエストが来るとWebサーバNで会員番号、乱数、時刻と秘密鍵Kを用いてHMAC値αを作成します。
会員番号、乱数、時刻、HMAC値αからQRコードを生成し、ユーザへ送ります。
決済などを行う際にQRコードを読み込み、QRコード内に含まれる会員番号、乱数、時刻からHMAC値βを生成します。
QRコードに含まれるHMAC値αと、生成したHMAC値βがどうであればよいかというと、『一致』しか答えはないかと思います。
HMAC値を生成する際に用いる秘密鍵KはWebサーバNしか持っていないものです。
HMAC値が一致することは秘密鍵Kを用いて作成されたことの証明であり、このQRコードはWebサーバNから発行されたものであることを証明しています。
ということで解答としては『HMAC値αとHMAC値βが一致することを確認する。(26文字)』となります。
設問2 (1)
DNSの仕組みについて知識が必要となる問題です。
選択肢の中で攻撃者が用意したサーバに利用者が接続しても気付かない、つまりサーバ(サイト)へ誘導することができるのは、『DNSプロキシ(い)』です。
パスワードやDHCPサーバの設定、パケットフィルタリングを行うこと・変更することができてもサーバへ誘導することはできません。
正規のDNSサーバであれば、YouTubeにアクセスしたい場合はyoutube.comに該当するIPアドレスを返答してくれます。
ですが、悪意のあるDNSサーバであれば設定しておくことで、YouTubeにアクセスしたいという要求に対し、本来のyoutube.comではないIPアドレスを返答することができます。
そのIPアドレスにアクセスをするとYouTubeそっくりなサイトで、ID・パスワードを要求され、ログインを試みますが、その際にID・パスワードを抜き取られ、攻撃者によって本物のサイトにアクセスを行われてしまいます。
これが、銀行やクレジットカードのサイトであれば金銭的な被害に発展してしまいます。
なので、『DNSプロキシ:無線LANルータが参照するDNSサーバのIPアドレス』と記載がありますので、こちらを攻撃者が用意したDNSサーバのIPアドレスに変更することで誘導することが可能となります。
よって解答としては、『攻撃者が用意したDNSサーバのIPアドレス(21文字)』となります。
DNSの仕組みについての知識がないと記述式の問題の解答は難しいですが、知識がなくても選択式の問題については解答できたかと思います。
設定2 (2)
サーバ証明書がどのように検証されているかについて知識が必要となる問題です。
クライアントがサーバにアクセスを要求し、サーバはサーバ証明書を送付します。
サーバ証明書を受け取ったクライアントはサーバ証明書の検証を行います。
このサイトを実例としてサーバ証明書の検証について確認していきます。
お使いのブラウザのURLの左に鍵マークが表示されていますので、こちらをクリックし、証明書をクリックすることで、現在閲覧しているサイトのサーバ証明書を確認することができます。
どのような検証を行っているかというと、まずはクライアントは受信したサーバ証明書のサブジェクト代替名、subjectAltName(SAN)のdNSNameを確認します。
そして、自身がアクセスするFQDNと一致しているかを確認を行います。
今アクセスしています『https://shanai-neet.com/hogehoge』というこのサイトのURLの場合、FQDNは『shanai-neet.com』となります。
今回はFQDNとsubjectAltNameのdNSNameが『shanai-neet.com』で一致しますので通信を継続します。
subjectAltNameは拡張フィールド(オプション)なので、そもそも項目がない場合があります。
この場合はCN(CommonName)を確認し同じようにFQDNと一致するか検証を行います。
なお、subjectAltNameとCN両方ある場合は、subjectAltNameのみを検証します。
FQDNと一致しない場合は、通信を切断します。
ということから、解答として、『b:subjectAltName(オ)』、『c:FQDN』、『d:commonName(イ)』となります。
設問3 (1)
パスワードリスト攻撃は、あるサイトで漏えいしたID・パスワードの一覧を利用して、他のサイトへログインを試みるという攻撃です。
パスワードリスト攻撃は情報処理安全確保支援士の令和3年度春季試験の午後Ⅱ問1問題で出題されていましたので、詳しくはこちらを参照ください。
『スクリーニング』とは、選別するという意味です。
つまり、パスワードリスト攻撃で攻撃できるIDやパスワードを選別するということです。
どのように選別するかは表3 2-bに『【入力されたメールアドレスが会員登録されている場合】決済アプリは,”既に使用されているメールアドレスです。”とエラー表示する。』とあります。
つまり、会員登録されているか、未登録のメールアドレスなのかを判断することができます。
この仕様を用いて、パスワードリストで攻撃できそうな登録されているメールアドレスをスクリーニング(選別)することができます。
ということで解答例としては、『会員登録されている場合に、”既に使用されているメールアドレスです”と表示されること(40文字)』と解答することができます。
設問3 (2)
なにが問題かは前問の設問3(1)で解答した通り、会員登録されている場合と会員登録されていない場合で表示されるメッセージが異なり、会員登録されているかを判断できることが問題でした。
なので、会員登録がされている場合でも、されていない場合でも同じメッセージを表示し、会員登録されているかを判断することができないようにすればよいです。
どちらに合わせるかは、未登録の場合に合わせますので、解答例としては、『2-b』の処理を『2-aと同じメッセージを表示させること(19文字)』と解答することができます。
公式解答との比較・予想配点
私の解答と公式解答を比較してみました。
満点ではないにせよ、少なくとも7割~8割程度は取れているかと思いますので合格ラインには達していると思います。
予想配点はあくまで予想ですので参考程度でお願いします。
知識がないと解答できない問題は『設問2 (1)』のDNSについて理解が必要な問題と『設問2 (2)』のサーバ証明書の検証に関する2問でした。
『設問2 (1) 5点』、『設問2 (2) 10点』の合計15点で、残りは35点もありますので、文章中のヒントから論理的に考えて解答することで35点、7割は取れますのでほぼ国語の問題であったかと思います。
配点 |
|||
設問1 (1) | 手段 会員番号を推測し、バーコードを生成すること(21文字) 他人のバーコードの画像を利用して、決済を行うこと(24文字) 問題 16桁の会員番号のみからバーコードを生成すること(24文字) |
手段 ・他者のバーコードを会員番号から推測して表示する。 ・他者の会員番号を窃取してバーコードを生成し,決済する。 問題 ・バーコードの内容が会員番号であること ・バーコードが永続的に利用できること |
各6点 |
設問1 (2) | HMAC値αとHMAC値βが一致することを確認する。(26文字) | HMAC 値αと HMAC 値βの一致を検証する。 | 6点 |
設問2 (1) | い 攻撃者が用意したDNSサーバのIPアドレス(21文字) |
い 攻撃者のDNSサーバのIPアドレス |
3点 5点 |
設問2 (2) | b:オ c:FQDN d:イ |
b:オ c:FQDN d:イ |
3点 4点 3点 |
設問3 (1) | 会員登録されている場合に、“既に使用されているメールアドレスです”と表示すること(40文字) | メールアドレスが会員登録されているかどうかで表示が異なるという挙動 | 6点 |
設問3 (2) | 2-b 2-aと同じメッセージを表示させること(19文字) |
2-b 2-a と同じメッセージを表示する。 |
3点 5点 |
引用元
問題および解答例に関しては、独立行政法人 情報処理推進機構(IPA)より引用しています。