応用情報技術者 2013年 秋期 午後 問08
Webサイトのセキュリティ強化策に関する次の記述を読んで、設問1~4に答えよ。
A社は、家庭向けのソフトウェアを製造販売する会社である。A社のWebサイトは、自社の会社情報や製品情報などを掲載しており、アクセスしてきた全ての人に同じ情報を提供する静的なページで構成されている。このたび、ユーザサポートの向上を目的としてWebサイトを更改し、Webサイト内に会員専用のサイトを設けることにした。会員専用サイトでは、ユーザIDとパスワードでユーザを認証し、ユーザが購入した製品や興味のある製品に関する詳細な技術情報を含むページを動的に生成するWebアプリケーションを用いる。
〔セキュリティの強化〕
A社のセキュリティ担当課長は、今回の更改に併せて、Webサイトのセキュリティを強化したいと考えている。想定する脅威としては、SQLインジェクション、Webサイトの改ざん、クロスサイトスクリプティング、認証情報の盗聴の四つを懸念している。これらの脅威に対応するセキュリティ強化策を検討した結果、セキュアプログラミングを意識してWebアプリケーションを開発することとし、さらに(1)~(3)の3点を実施することにした。
(1) 更改前は全てHTTPでアクセスさせるようになっていたWebサイトを、①暗号化されていないデータがそのままインターネット上に流れては問題がある部分では、HTTPSでアクセスさせるようにする。HTTPSでアクセスされるべきページにHTTPでアクセスされた場合は、クライアントにHTTPSのURLをリダイレクトで返し、自動的にHTTPSで再アクセスさせるようにする。
(2) 更改前はDMZに配置し、インターネットから直接アクセスさせていたWebサーバを、インターネットから直接アクセスできない内部のLANに移設する。DMZにはロードバランサと2台のリバースプロキシサーバを配置する。ロードバランサは、ユーザからのHTTP/HTTPSリクエストを、Cookieの情報を基にWebアプリケーションのセッションを維持するようにリバースプロキシサーバに振り分ける。各リバースプロキシサーバは、受け取ったリクエストを、対応するWebサーバに転送する。
(3) リバースプロキシサーバには、WAF(WebApplication Firewall)の機能をもたせ、ブラックリストによる検査によって外部からの攻撃を防御する。ブラックリストには、Webアプリケーションの脆弱性を悪用した攻撃の特徴的なパターンを登録しておく。
更改後のA社Webサイトのシステム構成を図1に示す。
〔WebサイトでHTTPSを使用するための準備〕
HTTPSを使って通信するためには、aを取得する必要がある。aの申請には、識別名(Distinguished Name)が必要になる。識別名は、国コード、都道府県名、市区町村名、組織名、部署名、コモンネーム(SSL接続するサイトのFQDN)から構成される。A社では、SSL通信を行うWebサイトのURLを“https://www.a.co.jp/member/”とし、識別名を表1のように決定した。
A社のWebサイト管理者は、識別名を決定し、コモンネームの重複がないことを確認した後、証明書署名要求(CSR:Certificate Signing Request)を生成し、認証局に申請することでaを取得した。証明書署名要求には、識別名とcが含まれており、認証局から取得したaを機器に導入する際には、cとペアを成すdが必要になる。aとdを機器に導入し、HTTPSでのアクセスが可能になるよう設定した。
〔セキュリティの警告〕
Webサイトの更改から1年ほど経過したころ、会員からサポート窓口に、「WebブラウザからA社のWebサイトにアクセスした際に、“セキュリティの警告”ダイアログボックスが表示された。どうすればいいのか。」との問合せが寄せられた。“セキュリティの警告”ダイアログボックスに含まれていたメッセージを図2に示す。

サポート窓口担当者はセキュリティ担当課長に問合せに対する処置を依頼し、セキュリティ担当課長は、Webサイト管理者に対して、適切な対応をとるよう指示した。
設問1:
本文中の下線①で、暗号化せずにインターネット上に流れては問題があるデー夕を二つ、本文中の字句を用いて答えよ。
模範解答
①:ユーザID
②:パスワード
解説
解答の論理構成
- 下線部の文章は、
「(1) 更改前は全てHTTPでアクセスさせるようになっていたWebサイトを、①暗号化されていないデータがそのままインターネット上に流れては問題がある部分では、HTTPSでアクセスさせるようにする。」
と記述されています。ここで「暗号化されていないデータがそのままインターネット上に流れては問題がある部分」とは、漏えいすると利用者に直接被害が及ぶ機密データを指すと読み取れます。 - 直前の段落には、
「会員専用サイトでは、ユーザIDとパスワードでユーザを認証し」
とあり、認証に利用する情報が具体的に示されています。 - 認証に用いる情報は盗聴されると「なりすまし」につながるため、HTTP(平文)ではなくHTTPS(暗号化)で守る必要があります。
- 以上より、暗号化されずに流れては問題となるデータは「ユーザID」「パスワード」であると論理的に導けます。
誤りやすいポイント
- 「会員専用サイト=機密ページ」と短絡し、ページ全体を答えてしまう。設問は“データ”を二つと指定しているため不正解になります。
- 「製品情報」や「技術情報」も重要そうに見えますが、漏えいしてもユーザ個人を特定したり不正ログインを許すものではないため、下線①の文脈では対象外です。
- 「Cookie」「セッションID」なども暗号化すべきですが、問題文に明示されていない語句を書くと、指定された“本文中の字句”の条件に抵触します。
FAQ
Q: 「ユーザID」と「パスワード」はセットで覚えるべきですか?
A: はい。認証に用いる資格情報として常にセットで扱われるため、暗号化や保管方法も同レベルで管理する必要があります。
A: はい。認証に用いる資格情報として常にセットで扱われるため、暗号化や保管方法も同レベルで管理する必要があります。
Q: パスワードだけ暗号化しても良いのでは?
A: いいえ。ユーザIDが分かれば総当たり攻撃や辞書攻撃の効率が高まるため、両方とも暗号化して伝送するのが基本です。
A: いいえ。ユーザIDが分かれば総当たり攻撃や辞書攻撃の効率が高まるため、両方とも暗号化して伝送するのが基本です。
Q: HTTPSにすれば他の脅威(SQLインジェクションなど)も解決しますか?
A: いいえ。HTTPSは通信経路を保護する仕組みであり、アプリケーション内部の入力検証やDBクエリ対策は別途必要です。
A: いいえ。HTTPSは通信経路を保護する仕組みであり、アプリケーション内部の入力検証やDBクエリ対策は別途必要です。
関連キーワード: HTTPS, TLS, 認証、暗号化、機密情報
設問2:
〔セキュリティの強化〕で示した(1)〜(3)のセキュリティ強化策は、セキュリティ担当課長が懸念している四つの脅威のうち、どの脅威に向けた強化策であるか。
解答群の中から最も適切なものを選び、記号で答えよ。
解答群
ア:SQLインジェクション
イ:Webサイトの改ざん
ウ:クロスサイトスクリプティング
エ:認証情報の盗聴
オ:SQLインジェクション及びクロスサイトスクリプティング
カ:SQLインジェクション及び認証情報の盗聴
キ:クロスサイトスクリプティング及び認証情報の盗聴
模範解答
エ
イ
オ
解説
解答の論理構成
-
(1) の目的
- 【問題文】には「①暗号化されていないデータがそのままインターネット上に流れては問題がある部分では、HTTPSでアクセスさせる」とあります。
- HTTPS は通信内容を暗号化して盗聴を防止する技術です。
- セキュリティ担当課長が挙げた四つの脅威のうち、暗号化で直接対策できるのは「認証情報の盗聴」です。
- よって (1) に対応する脅威は「認証情報の盗聴」→ 解答群「エ」。
-
(2) の目的
- 【問題文】「更改前はDMZに配置し、インターネットから直接アクセスさせていたWebサーバを、インターネットから直接アクセスできない内部のLANに移設する」。
- 直接攻撃されにくい内部LANへ移し、DMZ にはロードバランサとリバースプロキシのみを置く構成は、Webサーバに対する改ざん行為を防ぐ典型的な手段です。
- よって (2) に対応する脅威は「Webサイトの改ざん」→ 解答群「イ」。
-
(3) の目的
- 【問題文】「リバースプロキシサーバには、WAF(WebApplication Firewall)の機能をもたせ、ブラックリスト…」とあります。
- WAF のブラックリストは、【問題文】「Webアプリケーションの脆弱性を悪用した攻撃の特徴的なパターン」を検査します。代表的な攻撃が「SQLインジェクション」「クロスサイトスクリプティング」です。
- よって (3) に対応する脅威は両方を含む「SQLインジェクション及びクロスサイトスクリプティング」→ 解答群「オ」。
-
以上をまとめると
- (1) → エ
- (2) → イ
- (3) → オ
誤りやすいポイント
- 「HTTPS=盗聴防止」だけでなく、SQLインジェクションの対策と混同する受験者が多いです。暗号化は入力内容の妥当性チェックには無関係です。
- DMZ に置く機器=安全、内部LAN=危険と逆に覚えてしまい、「改ざん対策」を (3) と誤答するケースがあります。
- WAF が万能と思い込み「認証情報の盗聴」まで防げると考え、(3) を「キ」とする誤答も散見されます。
FAQ
Q: HTTPS 化すれば SQLインジェクションも防げますか?
A: いいえ。HTTPS は通信路の暗号化であり、サーバ側での入力検証やパラメータ化クエリがなければ SQLインジェクションは防げません。
A: いいえ。HTTPS は通信路の暗号化であり、サーバ側での入力検証やパラメータ化クエリがなければ SQLインジェクションは防げません。
Q: DMZ から内部LAN へ Webサーバを移すと性能は落ちませんか?
A: 直接的な性能低下はほとんどありません。ロードバランサとリバースプロキシの追加遅延はわずかであり、セキュリティ向上の効果が勝ります。
A: 直接的な性能低下はほとんどありません。ロードバランサとリバースプロキシの追加遅延はわずかであり、セキュリティ向上の効果が勝ります。
Q: WAF のブラックリスト方式だけで十分ですか?
A: 攻撃パターンの更新が必須です。ゼロデイ攻撃や新種のペイロードにはホワイトリスト方式やシグネチャ更新が必要となる場合があります。
A: 攻撃パターンの更新が必須です。ゼロデイ攻撃や新種のペイロードにはホワイトリスト方式やシグネチャ更新が必要となる場合があります。
関連キーワード: HTTPS, DMZ, リバースプロキシ、WAF, SQLインジェクション
設問3:本文及び表1中のa~dについて、(1)〜(3)に答えよ。
(1)a、c、dに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:SSLクライアント証明書
イ:SSLサーバ証明書
ウ:SSLルート証明書
エ:共通鍵
オ:公開鍵
カ:秘密鍵
模範解答
a:イ
c:オ
d:カ
解説
解答の論理構成
-
【問題文】には「HTTPSを使って通信するためには、aを取得する必要がある。」とあります。HTTPS で Web サーバを公開する際に必要なのは、サーバ証明書です。したがって
→ a は「イ:SSLサーバ証明書」。 -
続いて【問題文】「証明書署名要求には、識別名とcが含まれており、認証局から取得したaを機器に導入する際には、cとペアを成すdが必要になる。」
• CSR(Certificate Signing Request)には公開鍵が含まれます。
• 公開鍵とペアになるのは秘密鍵です。
よって
→ c は「オ:公開鍵」、d は「カ:秘密鍵」。 -
公開鍵暗号方式では、 公開鍵(誰でも取得可)+秘密鍵(サーバ内で厳重保管)
でペアを構成し、証明書はその公開鍵に認証局の電子署名を付与したものです。問題文の説明と一致します。
誤りやすいポイント
- 「SSLルート証明書」と混同する
ルート証明書はクライアント側にあらかじめインポートされており、サーバが取得するものではありません。 - 公開鍵と秘密鍵の役割逆転
CSR 生成時に秘密鍵は装置内に残り、公開鍵だけが申請される点を忘れがちです。 - 「SSLクライアント証明書」を選択する誤答
クライアント証明書はユーザ認証用であり、サーバ公開用ではないため HTTPS 必要条件とは異なります。
FAQ
Q: CSR を作成する段階で秘密鍵も認証局に送るのですか?
A: いいえ、送るのは公開鍵だけです。秘密鍵はサーバ内に安全に保管し、絶対に外部へ渡してはいけません。
A: いいえ、送るのは公開鍵だけです。秘密鍵はサーバ内に安全に保管し、絶対に外部へ渡してはいけません。
Q: ルート証明書が失効するとサーバ証明書は無効になりますか?
A: ルート証明書チェーンが信頼されなくなるため、ブラウザは警告を出し、結果としてサーバ証明書も信頼されなくなります。
A: ルート証明書チェーンが信頼されなくなるため、ブラウザは警告を出し、結果としてサーバ証明書も信頼されなくなります。
Q: サーバ証明書の有効期限が切れるとどうなるのですか?
A: ブラウザは「有効期間に問題があります」と警告を表示し、HTTPS 接続時にユーザ操作を求めるか接続を拒否します。
A: ブラウザは「有効期間に問題があります」と警告を表示し、HTTPS 接続時にユーザ操作を求めるか接続を拒否します。
関連キーワード: SSLサーバ証明書、公開鍵暗号方式、CSR, 認証局、HTTPS
設問3:本文及び表1中のa~dについて、(1)〜(3)に答えよ。
(2)bに入れる適切な字句を答えよ。
模範解答
解説
解答の論理構成
- 【問題文】では、識別名を構成する6項目の一つとして
「コモンネーム(SSL接続するサイトのFQDN)」が示されています。 - さらに同じ段落で
「SSL通信を行うWebサイトのURLを“https://www.a.co.jp/member/”とし、識別名を表1のように決定した。」
と明記されています。 - FQDN(Fully Qualified Domain Name)は URL のホスト名部分のみを指すため、 “https://” や “/member/” といったプロトコル・パス情報は除外します。
- 以上より、コモンネームには URL のホスト名である「www.a.co.jp」を設定するのが適切です。
誤りやすいポイント
- URL 全体 “https://www.a.co.jp/member/” をそのままコモンネームに入れてしまう
- “https://” や “/member/” を削り忘れ、証明書検証エラーの原因を作る
- 企業名 “A Japan K.K.” と混同して組織名をコモンネームに誤入力する
FAQ
Q: コモンネームにサブドメイン(www)が必要ですか?
A: はい。FQDN としてブラウザが接続するホスト名全体を記載する必要があります。サブドメインを省くと証明書名不一致となります。
A: はい。FQDN としてブラウザが接続するホスト名全体を記載する必要があります。サブドメインを省くと証明書名不一致となります。
Q: コモンネームの代わりに SAN(Subject Alternative Name)を使えば良いのでは?
A: 現行ブラウザは SAN を優先して検証しますが、本設問は従来形式の識別名設定を問うものです。コモンネームも正しく設定してください。
A: 現行ブラウザは SAN を優先して検証しますが、本設問は従来形式の識別名設定を問うものです。コモンネームも正しく設定してください。
Q: ワイルドカード証明書(*.a.co.jp)でもよいですか?
A: 可能ですが、【問題文】で指定しているのは単一 FQDN です。設問の正解は「www.a.co.jp」となります。
A: 可能ですが、【問題文】で指定しているのは単一 FQDN です。設問の正解は「www.a.co.jp」となります。
関連キーワード: SSL/TLS, FQDN, コモンネーム、HTTPS, デジタル証明書
設問3:本文及び表1中のa~dについて、(1)〜(3)に答えよ。
(3)A社のシステム構成のどの機器にaを導入する必要があるか。図1中のDMZ内の機器の名称で答えよ。また、その機器でなければならない理由を30字以内で述べよ。
模範解答
機器:ロードバランサ
理由:Cookieの情報を参照する必要があるから
解説
解答の論理構成
- 【問題文】には「ロードバランサは、ユーザからのHTTP/HTTPSリクエストを、Cookieの情報を基にWebアプリケーションのセッションを維持するようにリバースプロキシサーバに振り分ける。」とある。
- Cookie は HTTP ヘッダ部に含まれ、HTTPS で到着した場合は暗号化されている。ロードバランサが Cookie を読めるようにするには、HTTPS をいったん復号する必要がある。
- 復号にはサーバ証明書(〔 a 〕)と秘密鍵のペアが必須である。【問題文】後段でも「aとdを機器に導入し、HTTPSでのアクセスが可能になるよう設定した。」と述べている。
- したがって、〔 a 〕を導入すべき DMZ 内機器は「ロードバランサ」となり、理由は「Cookie の情報を参照する必要があるから」である。
誤りやすいポイント
- リバースプロキシが WAF 機能を持つため「証明書もここに置く」と早合点しやすい。だが Cookie を使ったセッション維持はロードバランサで実施する。
- 「HTTPS を終端する=DMZ 最前段」と思い込み、ファイアウォールを選ぶミス。ファイアウォールは L4 が主で Cookie を扱わない。
- 「ロードバランサは L4 だから秘密鍵を置かない」と決め付けるケース。実際には L7 対応ロードバランサも多く、問題文はその前提。
FAQ
Q: ロードバランサで復号した後、内部への通信は暗号化しなくて良いのですか?
A: 問題文では後段の経路について触れていません。運用方針として再暗号化する構成もありますが、本設問は「Cookie を読むために終端が必要」という点だけを問うています。
A: 問題文では後段の経路について触れていません。運用方針として再暗号化する構成もありますが、本設問は「Cookie を読むために終端が必要」という点だけを問うています。
Q: WAF 機能はリバースプロキシにあるのに証明書を置かなくても大丈夫?
A: WAF は復号後の平文を検査できれば十分です。ロードバランサで復号し、平文 HTTP をリバースプロキシへ渡す構成でも検査は可能です。
A: WAF は復号後の平文を検査できれば十分です。ロードバランサで復号し、平文 HTTP をリバースプロキシへ渡す構成でも検査は可能です。
Q: Cookie 以外のスティッキー方式(IPアドレスやURL ハッシュなど)なら証明書は不要?
A: その場合でも HTTPS パケット内容を見ない方式を選択すれば証明書が不要になる場合があります。ただし問題文では明示的に「Cookieの情報を基に」と指定しているため証明書が必要です。
A: その場合でも HTTPS パケット内容を見ない方式を選択すれば証明書が不要になる場合があります。ただし問題文では明示的に「Cookieの情報を基に」と指定しているため証明書が必要です。
関連キーワード: HTTPS終端、サーバ証明書、TLSオフロード、セッション固定、Cookie解析
設問4:
図2の“セキュリティの警告”ダイアログボックスが表示されたことに対するWebサイト管理者の適切な対応を、20字以内で述べよ。
模範解答
SSLサーバ証明書を更新する。
解説
解答の論理構成
-
事象の確認
図2のダイアログには
・「“セキュリティの警告”ダイアログボックス」
・「このサイトのセキュリティ証明書は、有効期間に問題があります。」
が表示されています。警告の原因は証明書の有効期限切れなど、期限に関する不備であると読み取れます。 -
証明書の役割
【問題文】では、HTTPS利用のために「aを取得する必要がある。」と説明され、さらに「認証局から取得したaを機器に導入」して運用を開始したと述べています。ここでのaは公開鍵証明書(SSLサーバ証明書)です。 -
有効期間に起因するエラー
証明書には開始日と終了日が含まれ、期限が切れるとブラウザは「不正なセキュリティ証明書」とみなし、引用部のような警告を出します。 -
管理者の対応
有効期限の問題を解決する唯一の根本策は、認証局から新しい証明書を再取得し、サーバに再配置することです。したがって適切な対応は「SSLサーバ証明書を更新する。」となります。
誤りやすいポイント
- ブラウザやPC側の設定変更で回避しようと考える
→ 根本原因はサーバ証明書の期限切れなのでクライアント設定では解決しません。 - 中間証明書の再配置やチェーン設定ミスと混同する
→ 今回は「有効期間に問題」が明示されておりチェーン不備ではありません。 - 証明書の再発行と秘密鍵生成を忘れる
→ 新証明書は旧秘密鍵とペアになるか、必要に応じ再生成・再設定が必要です。
FAQ
Q: 証明書の有効期限はどこで確認できますか?
A: ブラウザの証明書表示機能や openssl s_client などで、NotBefore/NotAfterの日付を確認できます。
A: ブラウザの証明書表示機能や openssl s_client などで、NotBefore/NotAfterの日付を確認できます。
Q: 自己署名証明書でも更新すれば警告は消えますか?
A: 自己署名では「信頼のおける認証機関が発行しています。」の条件を満たさず、別の警告が出続けます。公開認証局の証明書へ更新してください。
A: 自己署名では「信頼のおける認証機関が発行しています。」の条件を満たさず、別の警告が出続けます。公開認証局の証明書へ更新してください。
Q: 更新時に古い証明書はどう扱いますか?
A: 新証明書適用後、旧証明書は失効手続きを行い、秘密鍵を安全に廃棄することが推奨されます。
A: 新証明書適用後、旧証明書は失効手続きを行い、秘密鍵を安全に廃棄することが推奨されます。
関連キーワード: HTTPS, TLS, 公開鍵証明書、有効期限、認証局


