情報処理安全確保支援士 2020年 秋期 午後1 問01
スマートフォンを用いた決済に関する次の記述を読んで、設問1〜3に答えよ。
N社は、従業員数10,000名の飲食業者で、全国に500店舗を展開している。
N社では、会員番号をバーコードとして表示するスマートフォン用ポイントアプリケーションプログラム(以下、ポイントアプリという)を使って、ポイントサービスを提供している。店員がバーコードをパーコードリーダで読み取ることによってポイントが付与される仕組みである。
利用者の利便性向上のために、スマートフォンで決済を行う、N社独自のシステム(以下、Nシステムという)を開発することになった。
〔Nシステムの概要〕
Nシステムは、図1に示す構成であり、店舗で店員が利用するタブレット端末用店舗アプリケーションプログラム(以下、店舗アプリという)、利用者が利用するスマートフォン用決済アプリケーションプログラム(以下、決済アプリという)、及び決済、ログ取得、アラート運知などの機能をもつWebサーバNを用いて決済を実現する。

決済アプリの機能の概要を表1に、WebサーバNの機能の概要を表2に、会員登録処理を表3に、決済処理を表4に示す。




各店舗では、決済時に利用者のスマートフォンが確実に通信できるように、Nシステム導入に合わせて、各店舗に導入済みの無線LANルータをインターネットに接続し、利用者に無線LANサービスを提供する予定である。無線LANルータは全て同一の機種である。各店舗で管理者を決めて、管理者が手動で初期設定をしている。表5に無線LANルータの管理者機能の設定項目を示す。

Nシステムの開発チームに所属するXさんが検討したNシステムの仕様並びに店舗アプリ及び決済アプリの設計を、セキュリティの観点から情報処理安全確保支援士(登録セキスペ)のYさんがレビューした。レビューでのYさんの指摘を表6に示す。

Xさんは、指摘について対策を検討した。
〔項番1への対策〕
Xさんは、表6中の項番1への対策として、メッセージ認証を用いることにした。具体的には、決済機能利用時に決済アプリに表示する情報として、会員番号、WebサーバNで生成した乱数、時刻、及びそれら三つの情報を基に生成されるHMAC(Hash-based Message Authentication Code)値を含めることにした。バーコードで扱える桁数を超えてしまうので、代わりにQRコードを表示することにした。HMAC値を含むQRコードを用いた決済フローを図2に示す。QRコード生成及びQRコード検証の手順を図3に示す。


〔項番2~4への対策〕
表6中の項番2~4の指摘を解決せずに無線LANサービスを提供し、①攻撃者が無線LANルータの設定を変更すると、攻撃者が用意したサーバに利用者が接続しても気付かないおそれがある。
Xさんは、項番2については、インターネットから管理者機能のログイン画面にアクセスされないようにするために、無線LANルータのファームウェアを脆弱性が対策された最新のバージョンにアップデートしてもらうことにした。項番3については、管理者機能のパスワードを工場出荷時のパスワードから変更するように運用ルールを変更し、まだ変更していない場合は変更してもらうことにした。項番4については、サーバ証明書が図4に示す条件を満たしているかどうかを検証するように決済アプリ及び店舗アプリを改修した。

〔項番5への対策〕
攻撃者が、②事前にスクリーニングを実行したパスワードリストを用いて、パスワードリスト攻撃を行うと、WebサーバNのアラート通知機能では検知されないおそれがある。そこで、Xさんは、③表3の会員登録処理を修正することにし、さらに、パスワードリスト攻撃への追加対策として2段階認証を施し、アラート通知機能も見直すことにした。
N社は、Nシステムの試行を幾つかの店舗で実施し、問題がないことを確認した。
その後、Nシステムを全店舗に展開した。
設問1:〔項番1への対策〕について、(1)、(2)に答えよ。
(1)どのような手段でなりすまして決済ができるのか。想定される手段を30字以内で具体的に述べよ。また、その攻撃が成立してしまう決済アプリにおける問題を25字以内で、具体的に述べよ。
模範解答
手段:・他者のバーコードを会員番号から推測して表示する。
・他者の会員番号を窃取してバーコードを生成し、決済する。
問題:・バーコードの内容が会員番号であること
・バーコードが永続的に利用できること
解説
解答の論理構成
- 決済アプリが表示するバーコードの中身
- 表1には「決済…『16桁の会員番号をバーコードとして表示する』」と明記されています。
- これによりバーコード=会員番号であることが分かります。
- バーコードの有効期限や一時性についての記述がない
- 表4の決済処理では「3 利用者は,決済アプリにバーコードを表示する。」→「5…バーコードが示す会員番号に対して決済する。」のみで,バーコードが再利用不可能である旨の説明はありません。
- 以上から導かれるリスク
- 他人の「16桁の会員番号」を入手・推測すれば,同じ形式でバーコードを作成し店舗アプリに読み込ませるだけで決済が成立します。
- これは「他者になりすまして決済できる」という表6 項番1の指摘に合致します。
- よって模範解答は
- 手段:会員番号を推測・窃取してバーコード(同等データ)を生成・提示
- 問題:バーコードが単なる会員番号であり,かつ使い捨てでない
誤りやすいポイント
- 「ポイントサービスでは被害なし」だから安全と誤解し,金銭決済へのリスク増大を見落とす。
- 16桁だから総当たりは非現実的と考えがちだが,実際は「窃取」(肩越し撮影やスクリーンショット共有)でも成立する点を失念しやすい。
- バーコード自体が署名付きデータと誤認し,改ざん不可と思ってしまう。実際は単なる数値列で偽造容易。
FAQ
Q: 会員番号はランダム発番とあるが推測は本当に可能ですか?
A: 連番・規則性がなくても,友人やSNSから画像を集めれば有効番号が得られ,そのコピー利用で攻撃は成立します。
A: 連番・規則性がなくても,友人やSNSから画像を集めれば有効番号が得られ,そのコピー利用で攻撃は成立します。
Q: 店舗アプリ側でログインしている店員が決済を承認しているのでは?
A: 店舗アプリはバーコード読み取り後,自動でWebサーバNに決済要求を送るだけで,会員本人確認は行っていません。
A: 店舗アプリはバーコード読み取り後,自動でWebサーバNに決済要求を送るだけで,会員本人確認は行っていません。
Q: HTTPS通信ならバーコードを盗み見できないのでは?
A: バーコードはスマートフォン画面上に表示されます。攻撃者は画面撮影やスクリーンショット共有など物理的手段で取得できます。
A: バーコードはスマートフォン画面上に表示されます。攻撃者は画面撮影やスクリーンショット共有など物理的手段で取得できます。
関連キーワード: バーコード複製、なりすまし決済、使い回しトークン、情報窃取、認証欠如
設問1:〔項番1への対策〕について、(1)、(2)に答えよ。
(2)図3中のaに入れる適切な字句を、30字以内で述べよ。
模範解答
a:HMAC値αとHMAC値βの一致を検証する。
解説
解答の論理構成
- 〔項番1への対策〕では、「会員番号、WebサーバNで生成した乱数、時刻、及びそれら三つの情報を基に生成されるHMAC(Hash-based Message Authentication Code)値」をQRコードに含めると記載されています。
- 図3はQRコード生成・検証手順を示しており、検証側では①秘密鍵Kで再計算したHMAC値βを得る → ②オリジナルのHMAC値αと照合する → ③時刻・ワンタイム性を確認する、という流れになっています。
- 一致確認こそがメッセージ認証の核心であり、HMAC値α ≡ HMAC値βなら改ざん・なりすましがないと判断できます。
- したがってaには「HMAC値αとHMAC値βの一致を検証する」が入ります。
誤りやすいポイント
- 再計算したHMAC値βをそのまま採用すると思い込み、照合プロセスを書き忘れる。
- “比較”ではなく“再計算”を記述し、生成フェーズと検証フェーズを取り違える。
- ワンタイム性確認(時刻・乱数)とHMAC値照合をセットで書いて冗長になる。
FAQ
Q: 乱数や時刻のチェックも必要では?
A: 必要ですが、それは手順③で行います。aは手順②に対応し、HMAC一致の検証だけを書きます。
A: 必要ですが、それは手順③で行います。aは手順②に対応し、HMAC一致の検証だけを書きます。
Q: HMACが一致すれば必ず安全ですか?
A: 秘密鍵Kが漏えいしていないこと、QRコードが再利用されないこと(リプレイ攻撃対策)が前提です。そのために時刻と乱数を組み込み、5分以内・未使用であることを確認しています。
A: 秘密鍵Kが漏えいしていないこと、QRコードが再利用されないこと(リプレイ攻撃対策)が前提です。そのために時刻と乱数を組み込み、5分以内・未使用であることを確認しています。
Q: 他のメッセージ認証コードでも同じ対策が取れますか?
A: 可能ですが、HMACは既存ライブラリが豊富で鍵共有だけで実装でき、追加設備が不要なため選択されています。
A: 可能ですが、HMACは既存ライブラリが豊富で鍵共有だけで実装でき、追加設備が不要なため選択されています。
関連キーワード: HMAC, QRコード、メッセージ認証、リプレイ攻撃
設問2:〔項番2〜4への対策〕について(1)、(2)に答えよ。
(1)本文中の下線①について、攻撃者はどの設定項目の内容をどのように変更するか。変更する設定項目を表5の中から選び、記号で答えよ。また、変更後の設定内容を25字以内で述べよ。
模範解答
変更する設定項目:い
変更する設定内容:攻撃者のDNSサーバのIPアドレス
解説
解答の論理構成
- 【問題文】には「①攻撃者が無線LANルータの設定を変更する と、攻撃者が用意したサーバに利用者が接続しても気付かない」とあります。
- 利用者を攻撃者サーバへ誘導する最も簡単な方法は名前解決を乗っ取ることです。
- 表5で名前解決に関与する設定は「い DNS プロキシ 無線 LAN ルータが参照する DNS サーバの IP アドレス」だけです。
- 攻撃者がここを自分の DNS サーバへ書き換えれば、正規ドメイン名を不正 IP にひも付けられ、「攻撃者が用意したサーバに利用者が接続」する状況が実現します。
- 以上から「変更する設定項目:い」「変更後の設定内容:攻撃者のDNSサーバのIPアドレス」となります。
誤りやすいポイント
- 「え パケットフィルタリング」を選ぶと、フィルタで通信を遮断できても別宛先へ“誘導”は困難である点を見落としやすいです。
- 「う DHCP サーバ」を選ぶ場合も、DNS サーバ情報を含めるには DHCP 経由で設定を流す追加作業が必要で、本問の“設定を一か所変えるだけ”という意図から外れます。
- DNS 変更の影響範囲(ドメイン全体が乗っ取られる可能性)を軽視し、危険度を過小評価しやすいです。
FAQ
Q: DHCP サーバ設定を変えても同じ効果があるのでは?
A: DHCP に DNS サーバ情報を含めれば誘導は可能ですが、本問は「い DNS プロキシ」の説明で「無線 LAN ルータが参照する DNS サーバの IP アドレス」と明示しているため、こちらが直接的かつ確実です。
A: DHCP に DNS サーバ情報を含めれば誘導は可能ですが、本問は「い DNS プロキシ」の説明で「無線 LAN ルータが参照する DNS サーバの IP アドレス」と明示しているため、こちらが直接的かつ確実です。
Q: ルータの DNS を書き換えるだけで HTTPS 通信は守られないの?
A: 書き換え先の攻撃者サーバが不正証明書を提示すると通常は警告が出ます。しかし表6「項番4」の指摘にあるように「決済アプリ及び店舗アプリでのサーバ証明書の検証に不備」があれば、警告を無視して接続が成立するリスクがあります。
A: 書き換え先の攻撃者サーバが不正証明書を提示すると通常は警告が出ます。しかし表6「項番4」の指摘にあるように「決済アプリ及び店舗アプリでのサーバ証明書の検証に不備」があれば、警告を無視して接続が成立するリスクがあります。
Q: ファームウェアを最新にしても DNS 設定の改ざんは防げない?
A: 脆弱性が残っていれば再度改ざんされる可能性があります。加えて、管理者パスワードが工場出荷時のまま(表6 項番3)では物理/無線側からログインされて再設定される恐れがあります。
A: 脆弱性が残っていれば再度改ざんされる可能性があります。加えて、管理者パスワードが工場出荷時のまま(表6 項番3)では物理/無線側からログインされて再設定される恐れがあります。
関連キーワード: DNSリダイレクト、フィッシング、無線LAN, HMAC, TLS
設問2:〔項番2〜4への対策〕について(1)、(2)に答えよ。
(2)図4中のb〜dに入れる適切な字句を、b、dについては解答群の中から選び記号で、cについては5字以内で、それぞれ答えよ。
解答群
ア:authorityKeyIdentifier
イ:commonName
ウ:issuer
エ:serialNumber
オ:subjectAltName
カ:subjectPublicKeyInfo
模範解答
b:オ
c:FQDN
d:イ
解説
解答の論理構成
- 図4の検証条件は
「サーバ証明書に b の dNSName があれば、アクセス先の Web サーバ N の c と合致し、サーバ証明書に b の dNSName がなければ、アクセス先の Web サーバ N の c が subject の d と合致すること」
と記載されています。 - TLS/HTTPS では、まず拡張領域の “subjectAltName”(SAN) に含まれる “dNSName” と接続先 FQDN を照合し、SAN が無い場合だけ “subject” の “commonName” を参照するのが業界標準です。
- 解答群を確認すると
- “subjectAltName” は オ
- “commonName” は イ
が該当します。
- “アクセス先の Web サーバ N の c” は DNS 名を指し、5字以内なので “FQDN” が適切です。
- 以上より
- b:オ(subjectAltName)
- c:FQDN
- d:イ(commonName)
が導かれます。
誤りやすいポイント
- SAN と CN の優先順位を逆に覚えてしまう。最新ブラウザは SAN が無い証明書を警告なしで受け入れないため要注意です。
- FQDN を「ホスト名」や「ドメイン名」と書き換える誤答。設問は 5 字以内を指定しているので正式に “FQDN” と書く必要があります。
- 解答群の ア〜カ を見落とし、存在しない語句を記入してしまうミス。
FAQ
Q: SAN と CN の両方に同じ名前が入っている場合はどちらで検証されますか?
A: まず SAN を使用して照合し、一致すれば合格です。CN は参照されませんが、整合性が保たれていれば問題ありません。
A: まず SAN を使用して照合し、一致すれば合格です。CN は参照されませんが、整合性が保たれていれば問題ありません。
Q: IP アドレスでアクセスする場合も FQDN で検証するのですか?
A: IP 直打ち接続では SAN に “iPAddress” 型が入っている証明書を用意し、その IP と照合します。FQDN 検証ではありません。
A: IP 直打ち接続では SAN に “iPAddress” 型が入っている証明書を用意し、その IP と照合します。FQDN 検証ではありません。
Q: オレオレ証明書でも SAN を設定すれば安全ですか?
A: いいえ。SAN は名前の一致確認に過ぎず、信頼性は CA 署名の有無で決まります。自己署名証明書は依然として信頼されません。
A: いいえ。SAN は名前の一致確認に過ぎず、信頼性は CA 署名の有無で決まります。自己署名証明書は依然として信頼されません。
関連キーワード: TLS, subjectAltName, commonName, FQDN, サーバ証明書検証
設問3:〔項番5への対策〕について、(1)、(2)に答えよ。
(1)本文中の下線②について、Nシステムのどのような挙動を利用してスクリーニングを実行したと考えられるか。利用したと考えられる挙動を40字以内で具体的に述べよ。
模範解答
メールアドレスが会員登録されているかどうかで表示が異なるという挙動
解説
解答の論理構成
- 【問題文】の表3「会員登録処理」に
・2-a では “電子メールを送信しました。”
・2-b では “既に使用されているメールアドレスです。”
と表示内容が分岐すると明記されています。 - 表6の項番5では、「決済アプリの会員登録機能は、攻撃者が悪用すると、当該機能の挙動からスクリーングができてしまう。」と指摘しています。
- つまり攻撃者はメールアドレスを入力するだけで、上記2種類のメッセージのどちらが返るかを観測できます。
- 返却メッセージの違いにより
・入力アドレスが既に会員登録済みか
・未登録か
を判別できるため、パスワードリストから「存在するアカウントだけ」を抽出する“スクリーニング”が可能です。 - 以上から、利用された挙動は
「メールアドレスが会員登録済みか否かで UI メッセージが異なる」
ことになります。
誤りやすいポイント
- 表3の2-a/2-bの違いに気付かず、会員登録処理が単にメール送信の可否を示しているだけと思い込む。
- スクリーニング=総当たり攻撃と混同し、「表示の遅延」や「CAPTCHA」などを答えてしまう。
- 「挙動」を聞かれているのに「対策策」を述べてしまう。
FAQ
Q: スクリーニングとブルートフォース攻撃は何が違うのですか?
A: スクリーニングは「存在するアカウントかどうか」を判別する前処理であり、パスワード照合は実施しません。ブルートフォース攻撃はパスワードを総当たりで試行します。
A: スクリーニングは「存在するアカウントかどうか」を判別する前処理であり、パスワード照合は実施しません。ブルートフォース攻撃はパスワードを総当たりで試行します。
Q: 同じメッセージを返すだけで本当に対策になるのですか?
A: はい。登録済み/未登録で応答を統一すれば、攻撃者は外部からアカウントの有無を判定できず、スクリーニングが困難になります。
A: はい。登録済み/未登録で応答を統一すれば、攻撃者は外部からアカウントの有無を判定できず、スクリーニングが困難になります。
Q: メールアドレスを入力させるサービスは全て危険ですか?
A: いいえ。応答内容やタイミングを工夫し、登録有無が推測できない設計にすればリスクを抑えられます。
A: いいえ。応答内容やタイミングを工夫し、登録有無が推測できない設計にすればリスクを抑えられます。
関連キーワード: アカウント枚挙、情報漏えい、メッセージ分岐、パスワードリスト攻撃
設問3:〔項番5への対策〕について、(1)、(2)に答えよ。
(2)本文中の下線③について、表3中の修正すべき処理を記号で答えよ。また、どのように修正すべきか。修正後の処理を、25字以内で述べよ。
模範解答
修正すべき処理:2-b
修正後の処理:2-aと同じメッセージを表示する。
解説
解答の論理構成
- 表6の指摘5には「決済アプリの会員登録機能は、攻撃者が悪用すると、当該機能の挙動からスクリーングができてしまう。」とあります。
「スクリーング」とは登録有無を判別し、無効な候補を除外できることを意味します。 - 表3の会員登録処理を見ると
・「2-a【入力されたメールアドレスが会員登録されていない場合】…“電子メールを送信しました.”と表示」
・「2-b【入力されたメールアドレスが会員登録されている場合】…“既に使用されているメールアドレスです.”とエラー表示」
とあり、メッセージが異なります。 - 攻撃者は入力結果から登録有無を容易に判定でき、パスワードリスト攻撃の準備(スクリーング)が可能になります。したがって異なるメッセージを統一して判別を困難にする必要があります。
- 修正すべき箇所は、登録済みメールアドレス時の処理「2-b」。修正内容は未登録時と同じメッセージを返すことです。よって
修正すべき処理:2-b
修正後の処理:2-aと同じメッセージを表示する。
誤りやすいポイント
- 「メールアドレス重複チェック自体をなくす」と誤解しがちですが、重複チェックは必要であり“結果の通知方法”だけを統一します。
- 「2-aを変更する」と勘違いしがちですが、スクリーングを生むのは登録済み時の差分応答なので2-bが対象です。
- 「メール送信有無で判別される」と考え、送信処理を抑制しようとするミス。実際は画面メッセージの違いが問題です。
FAQ
Q: そもそもメールアドレスの重複確認をやめれば良いのでは?
A: 重複確認を行わないと同一メールアドレスで複数登録され、決済アプリ利用時の本人確認が困難になります。確認は残しつつ、応答を統一してスクリーングを防ぎます。
A: 重複確認を行わないと同一メールアドレスで複数登録され、決済アプリ利用時の本人確認が困難になります。確認は残しつつ、応答を統一してスクリーングを防ぎます。
Q: メール送信で登録済みアドレスに URL を送ると情報漏えいになりませんか?
A: 登録済みの場合も同じ文面で送れば外部からの判別は困難ですが、今回は画面メッセージを統一することで十分と判断しています。
A: 登録済みの場合も同じ文面で送れば外部からの判別は困難ですが、今回は画面メッセージを統一することで十分と判断しています。
Q: CAPTCHA やレートリミットと比べてどちらが効果的?
A: CAPTCHA は手動攻撃抑止、レートリミットは速度制限に有効です。本設問は“登録有無の推測”を断つことが主眼なので応答統一が第一歩です。必要に応じて二段階認証やレートリミットを併用します。
A: CAPTCHA は手動攻撃抑止、レートリミットは速度制限に有効です。本設問は“登録有無の推測”を断つことが主眼なので応答統一が第一歩です。必要に応じて二段階認証やレートリミットを併用します。
関連キーワード: ユーザ名列挙、ブルートフォース、メッセージ認証、レスポンス統一、資格情報詰め込み


