「SSL/TLS」に関する問題への対策
はじめに
前回の冒頭で、「できれば早い時期で午後試験の過去問題にもチャレンジしてみてください」と解説しましたが、今回も午後試験の過去問題から頻出のテーマである「SSL/TLS」を取り上げて解説します。
午後問題のSSL/TLSに関する出題
それでは、さっそく午後Ⅰ問題にチャレンジしてみましょう。今回は、平成28年度春期 午後Ⅰ問題の問3「スマートフォンアプリケーションの試験」を例に解説していきます。この問題のタイトルから「アプリケーション開発の問題か」と思われる方も多いかもしれませんが、実際は「PKI」や「SSL/TLS」に関する問題です。
この問題はS社が開発したスマートフォンアプリ(Sアプリ)とショッピングサイト(Sサイト)で構成されるSシステム(図1)の検証試験の話で、SアプリとSサイトの中にあるSサーバがHTTP over TLSで通信を行っています。
まず、ここで押さえておきたいのは「問題文を読むときのコツ」です。問題文を読むときは、必ず解答に関係がありそうなキーワードを意識してください。例えば、サーバと通信できなかった場合にエラー画面が表示されることはある程度想像できますが、図2では最後の文章でエラー画面について「通信エラー画面」と「サーバ認証エラー画面」の2通りのエラー画面が表示されると記載されています。あえて2通りのエラー内容を記載するということは、設問で「どちらのエラー画面が表示されるかを問う問題が出てくるのでは?」と想定できます。このように、問題文を読むときから「この問題固有の情報」が出てくる部分を押さえておけば、後で設問を解く際にも早く解答をイメージできてよいと思います。
●設問1
設問1(1)(2)は、「サーバ証明書の検証試験環境」(図3)において、正しく動作するためには試験用のDNSサーバでどのような設定が必要かを問う問題です。(1)(2)どちらもあてはまる字句を「図1中又は図3中の構成要素」から選びなさいとしているので、必ず図の言葉を使用するようにしてください。
検証試験環境でもSアプリが正しく動作するためには、「試験用Webサーバ」と通信できなければなりません。ただし、図2にも記載されているように、Sアプリには接続先として本番環境の「SサーバのFQDN」が組み込まれています。よって、検証試験環境で通信先にSサーバのFQDNを指定した場合は、試験用Webサーバへつながるように設定する必要があります。名前解決の話なので、解答は「「Sサーバ」のFQDNから「試験用Webサーバ」のIPアドレスに名前解決するためのAレコードを設定する」となります。
設問1(3)(4)は、不正なサーバ証明書を検出する際の試験項目に関する問題です。図4は今回の検証試験環境図です。
エラーが発生しない場合は、図4記載の試験項目において、以下の条件が必要となります。
- 「Sサーバの証明書のサブジェクトが「SサーバのFQDN」であること」
- 「Sサーバの証明書が有効期間内であること」
- 「プライベート認証局のルート証明書が登録されていること」
(「プライベート認証局のルート証明書」が必要な理由は、試験に使うサーバ証明書がプライベート認証局で発行したものであり、サーバ証明書を検証するには、このプライベート認証局自身の証明書が必要となるため)
このうち1つでも不備があると証明書の認証エラーとなります。問題文中表2の試験項目は、まさしく3つのうちの1つに不備を設定し、エラーが検出されるかを確認しています。よって、有効期間の開始がSサイト用サーバ証明書と同一の値なので、設問1(3)の解答は「試験の実施日よりも前の日」となります。試験日を有効期間内から外す点がポイントです。
設問1(4)は、どのようなエラー(結果)が期待されるかを解答するため、図2に記載されていた2種類のエラーのうち、Sサーバを認証できなかった場合なので「Sアプリがサーバ認証エラー画面を表示する」となります。
●設問2
設問2は「中間者攻撃」に関する問題です。問題文中で「Sアプリでのサーバ証明書の検証に不備がある場合、中間者攻撃を受ける可能性がある」と指摘を受けますが、そもそも中間者攻撃とは何でしょうか。
中間者攻撃は英語で「man-in-the-middle attack」(MITM攻撃)と呼ばれ、相手と自分の通信に攻撃者が割り込み、相手になりすましてアクセスしたり、通信データを窃取、改ざんしたりする攻撃です(図5)。ネットワーク通信は、誰と通信しているかが目に見えてわかるわけではないので、通信途中に第三者に入られても気づくのが難しいです。第三者からの盗聴を防ぐために相手と暗号化通信を行っても、その相手が自分の思っている相手ではなく、実は間に入り込んでいる相手かもしれません。その場合、暗号化しても意味がなく、間に入り込んでいる相手に情報をすべて奪われてしまうことになります。
設問2(1)は、攻撃者が準備するサーバ証明書(図6)と証明書の検証状況(図7)から、中間者攻撃が成功するサーバ証明書を特定する問題です。
図7より、もしサーバ証明書に対して「発行者の検証不備」がある場合、発行者が「スマートフォンに対応している商用認証局」でも「攻撃者が準備するプライベート認証局」でも全ての証明書を受け入れてしまいます。検証不備がない場合は、「攻撃者が準備するプライベート認証局」から発行された証明書はエラーとして処理できます。
また、サーバ証明書に対して「サブジェクトのコモンネームの検証不備」がある場合は、どのようなコモンネームでも受け入れてしまいます。検証不備がない場合は、コモンネームが「SサーバのFQDN」以外の証明書をエラーとして処理できます。よって、検証不備により受け入れてしまうサーバ証明書の証明書番号を図7に埋めると、表1のようになります。
(※表中の青数字は検証不備により受け入れてしまうサーバ証明書の証明書番号を表す。図6の証明書番号を使用)
設問2(2)は、公衆無線LANを使用した中間者攻撃について問われています。問題文に中間者攻撃に用いられる環境の例(図8)があります。
図8より、攻撃者はユーザのスマートフォンが攻撃者の用意するW-AP(無線LANのアクセスポイント)にアクセスするように仕向ければよいことになります。ただし、攻撃対象の条件は「公衆無線LANの利用者」でW-APへ「自動的」に接続することです。よって、攻撃者の用意するW-APが公衆無線LANのAPになりすませばよいことがわかります。
また、設問には「W-APの設定上の細工を具体的に述べよ」とあるので、無線LANの設定について触れる必要があります。自動的に攻撃者のW-APにアクセスするということは、攻撃者はユーザに設定されている公衆無線LANのSSID(Service Set Identifier)と同じ名前のW-APを用意する必要があります。そうすれば、ユーザのスマートフォンが公衆無線LANのアクセスポイントと間違えて攻撃者のW-APにアクセスしてきます。ただし、公衆無線LANは暗号化設定されていることが多いため、攻撃者のW-APの暗号化設定が公衆無線LANと異なると攻撃者のW-APと通信できません。攻撃者のW-APにも公衆無線LANと同一の暗号化方式を設定し、また暗号に必要な既知共有鍵(Pre-Shared Key)も同じ文字列に設定しておけば、ユーザのスマートフォンは自動的に攻撃者のW-APに接続されることになります。よって、解答は「SSID、暗号化方式と事前共有鍵に、公衆無線LANで使用されているものを設定する」となります。
SSL/TLSは暗号通信が要求されるところで使用しますが、暗号通信を行う前に必ず通信相手を認証する必要があります。認証に不備があれば中間者攻撃のような第三者の介入を許してしまい、盗聴や改ざん、なりすましによる不正アクセス等、様々な攻撃が可能となります。SSL/TLSは公開鍵証明書により認証を行いますが、この証明書が信頼できるかチェックするためには、その証明書を発行した認証局の証明書も持っておく必要があります。
午前問題のSSL/TLSに関連した出題
午前問題でもSSL/TLS関連、特に証明書失効リスト(CRL:Certificate Revocation List)に関連してよく出題されています。例えば、平成27年度秋期午前Ⅱの問2では、以下のような問題が出題されました。
問2 特定の認証局が発行したCRLに関する記述のうち,適切なものはどれか。
ア.CRLには,失効したディジタル証明書に対応する秘密鍵が登録される。
イ.CRLには,有効期限内のディジタル証明書のうち失効したディジタル証明書と破棄された日時の対応が提示される。
ウ.CRLは,鍵の漏えい,破棄申請の状況をリアルタイムに反映するプロトコルである。
エ.有効期限切れで失効したディジタル証明書は,所有者が新たなディジタル証明書を取得するまでの間,CRLに登録される。
正解は(イ)です。CRLには有効期限内に失効した証明書の情報が登録されます。有効期限が切れた証明書はCRLに登録されていなくても無効と分かるため、CRLには登録されません。失効という言葉に惑わされないようにしましょう。
なお、出題されることはあまりないかもしれませんが、SSL/TLSには改ざん検知の機能もあります。例えば、FirefoxでURLに「about:config」と入力し、検索バーに「security:ssl3」と入力すると、SSL/TLSで使用されている暗号アルゴリズムが表示されます(図9)。sha256等のハッシュ関数が表示されていますよね(about:configで設定等を変更して不具合が生じても動作保証対象外になります。確認する際は十分注意してください)。
試験の合格発表で合格者番号一覧をWeb表示するとき、合格者番号一覧は公開情報なので暗号化する必要はありませんが、番号そのものが改ざんされていても気づかないと問題になります。そのような要件においてもSSL/TLSは有効です。
ちなみに、情報処理技術者試験の合格者番号一覧ページにはSSL/TLSが使われていますので安心してください(と言うより、情報処理技術者試験のサイト自体がSSL/TLS通信でアクセスすることになっています)。
次回は最終回です。次回も試験で頻出するセキュリティ技術問題について解説します。