※解答はIPAのサイトを引用しておりますが、解説は独自ですので参考程度にご覧ください
(1) [a]に入れる適切な字句を答えよ
答: a) 同一生成元ポリシー
本文にもありますが、異なるリソースによってアクセスを制限することです。英名はSame-Origin Policyといいます。
試験では英名:Same-Origin Policyで出題されることもありますので覚えておきましょう。
(2) [b]~[d]に入る字句を記号から選び答えよ
答: b) イ.FQDN c) キ.スキーム d) ク.ポート番号
同一生成元ポリシーは異なるオリジン(Origin)のリソースへのアクセスに制約をかけるものです。
このオリジン(Origin)とは、スキーム(プロトコル)、ホスト、ドメイン、ポート番号をつなぎ合わせたものです。ホストとドメインを省略せずにつなげた記述形式のことをFQDNといいます。つまり解答は「FQDN、スキーム、ポート番号」になります。
例)https://www.dxnote.net:443/pre/index.htmlの場合、スキームはhttps、ホストはwww、ドメインはdxnote.net、ポート番号は443、パス名が/pre/index.htmlになり、FQDNはwww.dxnote.netになります。
(3) 会員情報が窃取されてしまうある特定の操作を述べよ
答: WebサイトBへのログイン
もし攻撃者がスクリプトZの内容を改ざんし、アクセス先を攻撃者のページに変更し、WebサイトBにログインしている会員の認証情報をリクエスト時に送るようにしておくことで、会員情報を窃取されてしまいます。
よって被害者にさせておく特定の動作は「WebサイトBへのログイン」になります。
答: e) (ⅴ).メインリクエスト
まず、(ⅲ)プリフライトリクエストについて説明します。プリフライトとは直訳すると”飛行前の”という意味です。
生成元をまたいだリクエストを行う前にそのリクエストが受け入れられるかどうかを事前にチェックするリクエストです。
この(ⅲ)プリフライトリクエストの”withCredentials”プロパティを”true”にすると、(v)メインリクエストでWebブラウザから”ユーザー認証情報に関わる情報”を送ることが可能になります。よって解答は(ⅴ).メインリクエストになります。
ちなみに、Cookieとはユーザーの認証情報が含まれるもので、WebサーバーからWebブラウザに送られ、Webブラウザに保存されます。
(1) [f]に入るURLを答えよ
答: f) https://site-a.m-sha.co.jp
・表1のNo3で、ブラウザはOriginヘッダフィールド*に”https://site-a.m-sha.co.jp”を設定したプリフライトリクエストをWebサイトBに送信
*呼び出しドメインsite-a.m-sha.co.jpにあるコンテンツからのアクセスであることを意味する
・No4では、No3で送られてきたリクエストにOriginヘッダフィールドが存在するかを確認し、設定されていることを確認
・WebサイトBのリソース所有者が事前にリソースへのアクセスを許可している”https://site-a.m-sha.co.jp”をレスポンスの”Access-Control-Allow-Origin” プロパティに設定し返答
よって解答は”https://site-a.m-sha.co.jp”になります。
ちなみに、すべてのドメインからアクセス可能にするには Access-Control-Allow-Origin: * とします。
(2) [g]に入る字句を答えよ
答: g) 売れ筋商品情報配信の申込ページのオリジン
Webブラウザがアクセスしようとしているページである「売れ筋商品情報配信の申込ページのオリジン」とAccess-Control-Allow-Origin ヘッダフィールドの値を照合することで、WebサイトBへのアクセスが許可されていることを確認できます。
(3) [h]、[i]、[j]に入れる適切な字句を答えよ
答: h) Originヘッダフィールドの値
i) 許可するオリジンのリスト j) 一致
複数のオリジンからアクセスが想定される場合は、あらかじめ「許可するオリジンのリスト」を用意しておき、リクエスト中の「Originヘッダフィールドの値」と「許可するオリジンのリスト」を突合し、リストの中で「一致」している値が存在したらAccess-Control-Allow-Originへ追加してあげればよいです。
(1) 攻撃者が用意した無線LANアクセスポイントには何が設定されていたと考えられるかを述べよ
答: ホテルWi-Fiと同じSSIDと事前共有鍵
ホテルWi-FiのSSIDと事前共有鍵はロビーなどの共有スペースに張り出されていたと文中にあります。
攻撃者はホテルと同じSSIDと事前共有鍵に設定した無線LANアクセスポイントを用意することで、ホテル客に気づかれずに接続を誘導しようとしています。
(2) [a]、[b]に入れる適切な字句を答えよ
答: a) メールサービスP
b) 攻撃者が用意したWEBサーバ
DNSのAレコードとは、FQDNとIPアドレスを定義するものです。
このAレコードに「メールサービスP」のFQDNに対して「攻撃者が用意したWEBサーバ」のIPアドレスが設定されている場合、Sさんが「メールサービスP」にアクセスしたつもりでも、実際は「攻撃者が用意したWebサーバ」に接続してしまいます。
(3) サーバ証明書が信頼できない旨のエラーを表示しなかったのはなぜか
答: HTTPで接続が開始したから
本文中にHTTPでアクセスした場合は、HTTPSのURLにリダイレクト(自動転送)しない仕様になっており、HSTS*が動作しないと記載してあります。
この場合だと証明書のエラーの表示はされません。
解答は「HTTPで接続が開始したから」になります。SさんはメールサービスPを利用するためにWebブラウザのアドレスバーを手入力した際にHTTPでアクセスしてしまった可能性があります。
*HSTS…HSTSが実装されたWebサイトに利用者がアクセスすると、そのWebサイトへ次回以降にアクセスした場合に利用者がhttpでアクセスしても、Webブラウザがhttpsのアクセスに自動変換する設定
(1) 偽サイトにおいてどのような処理が行われればメールサービスPへの不正アクセスが成立するか
答: OTPの入力を要求し、OTPを認証サーバXに中継する処理
攻撃者が用意した偽サイトでOTPの入力を要求する項目を用意すれば、利用者の入力した内容からOTPを知ることができます。
そのOTPを使用して攻撃者がブラウザから認証サーバXにOTPを中継すれば認証が通り、メールサービスPへの不正アクセスができてしまいます。
(2) [c]~[f]に入れる適切な字句を答えよ
答: c) ウ.秘密鍵A d) ア.公開鍵A
e) エ.秘密鍵K f) イ.公開鍵K
図5のオーセンティケータを認証サーバXに登録処理で、デジタル署名による仕組みを使用してオーセンティケータの真正性(なりすましされていないこと)を担保しています。
オーセンティケータは事前に鍵ペア(公開鍵A、秘密鍵A)が組み込まれており、IDcなどの情報を「(c)秘密鍵A」で暗号化し署名Lを生成します。
この署名Lと「(d)公開鍵A」は認証サーバX(受信者)に送付し、認証サーバX(受信者)は受け取った公開鍵Aで署名Lを復号して検証し真正性を確認ます。
一方図6で、オーセンティケータはIDcごとの「(e)秘密鍵K」を用いて署名Mを作成し、認証サーバXはオーセンティケータから渡されたIDcに対する「(f)公開鍵K」を選択して復号し署名Mを検証します。
よっては解答(c)秘密鍵A、(d)公開鍵A、(e)秘密鍵K、(f)公開鍵K になります。
(3) パスワード認証方式を利用すれば、要求2を満たすことができる理由を答えよ
答: 認証サーバXでオリジンbとオリジンsの一致を確認しているから
オリジンbはWebブラウザがアクセスしたWebサイトのオリジンであり、オリジンsは認証サーバXのWebサイトのオリジンです。
上記2つのオリジンが一致していれば、要求2にあるなりすましや改ざんなどの不正アクセスから防げることになります。
図5で、事前に署名Lを使用しオーセンティケータの真正性を保証できます。このオーセンティケータがオリジンbは正当なものであることを証明し、図6で、署名Mを使用し、「オリジンb」の利用者が正当であることを確認してたうえで、そのアクセスしたサイトが「オリジンs」であれば正当なサイトへのアクセスで間違いないと判断することができます。
よって、解答は「認証サーバXでオリジンbとオリジンsの一致を確認しているから」になります。
答: エ.HMAC
ア.CBC-MACは、ブロック暗号に基づくメッセージ認証符号アルゴリズムのこと。認証およびデータの機密の保証に用いられる。
イ.CMACは、ブロック暗号に基づくメッセージ認証符号アルゴリズムのこと。CBC-MACのセキュリティ上の欠陥を修正したものである。
ウ.CSRは、Certificate Signing Requestの略で、認証局に対しSSLサーバ証明書への署名を申請するリクエストのこと。
エ.HMACは、Hash-based Message Authentication Codeの略でハッシュ関数と暗号鍵を使用してメッセージ認証を行なう仕組み。
オ.MD5は、任意の長さの原文を元に128ビットの値を生成するハッシュ関数の一つ。
カ.RC4は、共通鍵暗号方式の一つ。SSLやWEPなどで広く使われている。2013年にCRYPTRECの推奨暗号リストから除外された。
答えはエ.HMACです。
(1) 対策として認証トークンに追加する必要がある情報を答えよ
答: ゲームプログラムID
認証トークンには、認証サーバのFQDN、利用者ID及びMACが格納されていますが、このトークンの情報だとアクセス可能なゲームがどれだか判別がつきませんので、ゲームプログラムA用の認証トークンがゲームプログラムBでも認証に成功してしまいます。
ですので対策として「ゲームプログラムID」を認証トークンに追加する必要があります。
(2) 認証トークンをゲームサーバ管理者が不正に生成できてしまう原因となるゲームサーバの仕様を述べよ
答: ゲームサーバに認証サーバと同じ共通鍵を保存する
ゲームサーバの仕様として共通鍵はシステムV全体で一つの鍵が使用され、ゲームサーバ管理者がゲームプログラムに設定する、と書かれています。
ゲームサーバ管理者は共通鍵と組み合わせればのMACの生成が可能になり、不正に認証トークンを生成することができてしまいます。
(3) 認証トークンをゲームサーバ管理者が不正に生成できてしまう認証トークンの仕様と不正に生成した認証トークンを利用できるゲームプログラムの範囲を述べよ
答: [仕様]MACの生成に共通鍵を使用する
[範囲]自身が管理する同じゲームサーバ上のプログラム
認証トークンの仕様として、MACは認証サーバのFQDNと利用者IDに対してハッシュ関数で共通鍵と組み合わせて使用し、生成する、と書かれています。
MACの生成に共通鍵を使用すると、認証トークンごとに別々の共通鍵を使用するようにゲームサーバの仕様を変更したとしても、ゲームサーバ管理者が管理するゲームプログラムの範囲であれば当然、共通鍵は知っているため、不正に認証トークンを利用できます。
(4) [a]~[c]に入る字句を答えよ
答:a)オ.認証サーバ b)エ.公開鍵 c)カ.秘密鍵
認証トークンを生成するのは認証サーバですので(a)には認証サーバが入ります。
(a)認証サーバは鍵ペアを作成し、(b)公開鍵をゲームサーバに配布しておきます。
(a)認証サーバが(c)秘密鍵を使って認証トークンに署名を付与し、ゲームサーバにあるゲームプログラムでは(b)公開鍵を使って認証トークンに付与された署名を検証します。
生成元(送信側)は秘密鍵を使って署名を付与し、受信側は公開鍵でその署名の検証というデジタル署名の流れを知っておくとよいでしょう。
(5) どのようにするとクライアント証明書と鍵CをPCなどから使用可能にしてしまうことができるか。
答: SSDを取り出してPCなどにつなげる
SSDとは補助記憶装置(ストレージ)の一つです。SSDはM.2など規格が決まっており、取り外し、別のPCに取り付けることも簡単にできますのでSSDにクライアント証明書や鍵Cなどの重要なデータを保存すると、悪意のある攻撃者がゲーム機Vを購入し、SSDを取り外して用意した独自OSの入ったPCなどにつなげて不正が行われる可能性があります。
(6) この性質を何というか
答: 耐タンパ性
機器の内部構造・データ処理メカニズムや、それらの対象物に記録されたデータなどが、外部から不当に解析、読み取り、改変がされにくいようになっているという性質を「耐タンパ性」といいます。
答:ハッシュ値リストをTPMに保存する
外部から不当に解析、読み取り、改変がされにくい「耐タンパ性」の性質を持つTPMに保存することでハッシュ値のリストを保護することが可能です。
よって解答は「ハッシュ値リストをTPMに保存する」になります。