【情報処理安全確保支援士試験 令和2年度 秋期 午後1 問1 No.1】
情報処理安全確保支援士試験 令和2年度 秋期 午後1 問1
【出典:情報処理安全確保支援士試験 令和2年度 秋期 午後1 問1(一部、加工あり)】
問1 スマートフォンを用いた決済に関する次の記述を読んで、設問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に示す。
どのような手段でなりすまして決済ができるのか。想定される手段を30字以内で具体的に述べよ。他者のバーコードを会員番号から推測して表示する。/他者の会員番号を窃取してバーコードを生成し、決済する。
決済処理の内容は表4(決済処理(抜粋))にあります。
決済の流れを確認すると、利用者が決済アプリにログインしてバーコードを表示し、店員が店舗アプリで読み取ることで決済されるという、すごく簡単なものです。
バーコードについては、表1(決済アプリの機能の概要(抜粋))に16桁の会員番号を表示するもので、会員番号は会員登録すると自動で発番されます。
したがって、会員番号を推測したり、何らかの方法で窃取することで、他者の会員番号を表示するバーコードを表示することができてしまいます。
このバーコードを決済時に表示すれば、他者になりすまして決済ができてしまうことになります。
また、その攻撃が成功してしまう決済アプリにおける問題を25字以内で、具体的に述べよ。:バーコードの内容が会員番号であること/バーコードが永続的に利用できること
他者になりすまして攻撃されるのは、他者の会員番号を何らかの手段で把握しさえすれば、簡単になりすましできてしまうということが根本的な問題と考えられます。
決済アプリの問題としては、会員番号をバーコードとして表示していることと、そのバーコードは会員番号が変わらない限り永続的に利用できることがあるでしょう。
a:HMAC値αとHMAC値βの一致を検証する。
他者になりすまして決済できてしまう問題については、決済機能利用時に決済アプリに表示する情報が会員番号を表すバーコードとして固定的であったことです。
この問題への対策としてメッセージ認証を用いて、決済機能利用時には毎回、WebサーバNで生成されるQRコードを表示させることで可変の情報を基に決済させる対策を採用しました。
図3(QRコード生成及びQRコード検証の手順)のQRコード生成時に算出されるHMAC値αと、QRコード検証時に算出されるHMAC値βは、どちらも秘密鍵K、会員番号、乱数、時刻を基に同じハッシュ関数で計算するため、それぞれのパラーメータが同一、つまり、データが改ざんされていない限り、HMAC値は同一になります。
したがって、QRコード検証の手順で、HMAC値αとHMAC値βの一致を検証することになります。