次に、本発明を実施する形態について図面を参照して詳細に説明する。
尚、各実施形態において説明する解析システムは、当該システムの1以上の構成要素が複数の物理的、または、論理的に離間した装置(物理的な情報処理装置や、仮想的な情報処理装置等)を用いて実現されたシステムとして構成されてもよい。この場合に、係る複数の装置の間は、有線、または、無線、または、それらを組み合わせた任意の通信ネットワークを介して通信可能に接続されてもよい。また、係る複数の装置が仮想的な情報処理装置等により構成される場合に、該通信ネットワークは、仮想的な通信ネットワークであってもよい。
また、各実施形態において説明する解析システムは、当該システムの全ての構成要素が1つの装置(物理的な情報処理装置や、仮想的な情報処理装置等)を用いて実現されたシステムとして構成されてもよい。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。まず、図1乃至図3を参照しながら、本実施形態に係る解析システムについて説明する。図1は、本実施形態に係る解析システム100の機能的な構成を例示するブロック図である。図2、及び、図3は、本発明の第1の実施形態に係る解析対象装置101、及び、データ取得部102を実現可能な構成例を例示する図である。
まず、解析対象装置101について説明する。解析対象装置101は、本実施形態に係る解析システム100により解析される解析対象を表す装置である。
図1に例示されているように、本実施形態に係る解析対象装置101は、少なくとも、演算部101a、及び、メモリ101bを有し、通信路106を介して通信ネットワーク105と通信可能に接続された、任意の情報通信装置である。
解析対象装置101は、たとえば、物理的なハードウェアにより構成されたコンピュータ等の情報通信装置であってもよい。また、解析対象装置101は、情報処理装置等の各種ハードウェアを仮想化可能な所定の仮想化基盤において提供される、仮想的なコンピュータ(VM:Virtual Machine、仮想マシン、仮想計算機)等であってもよい。
係る仮想化基盤は、たとえば、通信ネットワークを介して相互に接続された複数の情報処理装置により構築された環境(クラウドコンピューティング環境等)において提供されてもよく、1台の情報処理装置により構築された環境において提供されてもよい。
係る仮想化基盤は、たとえば、特定のホストOS(Operating System)において実行されるソフトウェア・プログラムとして提供されてもよく、情報処理装置のハードウェアと、OSとの間に介在するソフトウェア・プログラムとして提供されてもよい。
また、係る仮想化基盤は、物理的なハードウェアデバイスの機能を用いて提供されてもよく、ハードウェアデバイスの機能(たとえば、CPU(Central Processing Unit)における各種仮想化支援機能等)と、ソフトウェア・プログラムとの組合せを用いて提供されてもよい。
たとえば、係る仮想化基盤としてMicrosoft(登録商標)社製のHyper−Vを採用することが可能であるが、係る仮想化基盤は、上述した例に限定されない。
尚、解析対象装置101は、各種コンピュータ等に限定されず、たとえば、携帯電話(スマートフォンを含む)、PDA(Personal Digital Assistant)、ゲーム機器、タブレット型情報機器、プリンタ、デジタル複合機、各種ネットワーク機器(スイッチ、ルータ、アクセスポイント)等、通信ネットワークに接続可能な任意の機器であってもよい。
演算部101aは、たとえば、メモリ101bに記憶された各種データ、及び、プログラム(コンピュータ・プログラム)を読み取り、当該プログラムに実装された各種演算処理を実行するCPU(Central Processing Unit)や、MPU(Microprocessing Unit)等の演算装置である。演算部101aは、特定のハードウェア(集積回路)を用いて構成される、物理的な演算装置であってもよい。演算部101aは、また、図3に例示されているように、当該ハードウェアを仮想化した仮想化基盤における、仮想的な演算装置(仮想CPU)であってもよい。
メモリ101bは、たとえば、解析対象装置101におけるメインメモリとして機能し、演算部101aにおいて処理される各種プログラム、及び、データ等を保持する。係るメモリ101bは、特定のハードウェア(集積回路等)により構成された物理的なメモリ装置(たとえば、DIMM(Dual Inline Memory Module)により構成されたDRAM(Dynamic Random Access Memory))であってもよい。また、メモリ101bは、該所定の仮想化基盤において提供される、仮想的なメモリ装置であってもよい。
本実施形態に係るメモリ101bについては、当該メモリ101bに保持(記憶)される記憶データ(以下、「メモリ領域データ」と称する場合がある)を、メモリ101bの外部から取得(ダンプ)することができる。メモリをダンプする具体的な方法は、周知の技術を適宜選択してもよい。たとえば、係る方法として、OS(Operating System)の休止状態(ハイバネーション)機能を用いて不揮発性記憶装置に保存されたメモリ領域データを取得する方法や、OSが提供する仮想記憶においてページアウトされたメモリ領域データを取得する方法が採用されてもよい。
メモリ領域データは、メモリに格納されている全てのデータ、または、メモリに格納されているデータのうち、図7を参照しながら後述するような、鍵候補判定基準等に従って特定される記憶領域に格納されているデータを含む一部のデータ等を表す。
メモリ領域データは、たとえば、メモリ101bを物理的なハードウェアにより構成した場合に、メモリ領域データは、演算部101aと、メモリ101bとを接続する通信バス等において通信されるデータを取得することにより取得されてもよい。また、メモリ領域データは、特定のタイミングにおいて、メモリ101bの記憶領域を全て出力(メモリダンプ)することにより取得されてもよい。この場合に、たとえば、メモリ101bに対するデータの読み取り、書き込み、アクセス等を制御するメモリコントローラ(不図示)の機能を用いて、メモリ領域データを取得することが可能である。
メモリ101bを仮想的なメモリ装置として構成した場合に、仮想化基盤が提供する機能(たとえば、特定のAPI(Application Programming Interface)等)や、仮想化基盤が提供するデータ(たとえば、仮想的なメモリに記憶されたデータの保存領域を特定可能な情報等)を介して、当該メモリ101bに記憶されるデータを取得可能である。係る処理の具体的な実現方法は、仮想化基盤の具体的な構成に応じて周知の技術を適宜採用してもよいので、詳細な説明は省略する。
本実施形態に係る解析対象装置101は、通信路106を介して、通信ネットワーク105との間で、暗号通信を実行する。より具体的に説明すると、解析対象装置101は、通信ネットワーク105を介して通信可能に接続された他の情報通信装置107との間で、暗号通信を実行する。
この場合に、解析対象装置101において実行されるプログラムが、他の情報通信装置107との間で暗号通信を実現してもよい。係るプログラムは、解析対象装置101において実行される正規のプログラムに限定されない。係るプログラムには、マルウェアが含まれてもよい。
解析対象装置101と、通信ネットワーク105(他の情報通信装置107)との間の通信路を暗号化する暗号通信プロトコルとしては、たとえば、SSL、SSH、または、IPSec等の暗号通信プロトコル等が採用可能である。本実施形態を含め、以下に説明する各実施形態においては、係る暗号通信プロトコルとしてSSLが用いられる場合の具体例を説明する。尚、本実施形態に係る解析システム100は、SSLに限定されず、他の暗号通信プロトコルにも適用可能である。
SSLは、Secure_Sockets_Layerの略称を表す。SSHは、Secure_Shellの略称を表す。IPSecは、Security_Architecture_for_Internet_Protocolの略称を表す。
通信ネットワーク105は、有線、無線、または、これらの任意の組合せにより構成され、任意の通信プロトコルを用いて通信路を確立可能な通信ネットワークである。係る通信ネットワーク105は、たとえば、Internet等の広域通信網であってもよく、LAN(Local Area Network)等の構内通信網であってもよく、これらの組合せであってもよい。
また、通信ネットワーク105において用いられる通信プロトコルは、たとえば、TCP/IP(Transmission Control Protocol/Internet Protocol)等の周知の通信プロトコルであってもよい。また、当該通信ネットワーク105は、たとえば、各種暗号通信プロトコルにより暗号化された通信路を、解析対象装置101に対して提供可能である。このような通信ネットワーク105は、周知の技術、または、その組合せにより構成可能であるので、詳細な説明は省略する。
他の情報通信装置107は、通信ネットワーク105を介して、解析対象装置101に通信可能に接続される。他の情報通信装置107は、たとえば、物理的なハードウェアにより構成されたコンピュータ等の情報通信装置であってもよい。また、他の情報通信装置107は、所定の仮想化基盤において提供される、仮想的なコンピュータ等であってもよい。
他の情報通信装置107は、たとえば、各種コンピュータ等に限定されず、携帯電話(スマートフォンを含む)、PDA、ゲーム機器、タブレット型情報機器、プリンタ、デジタル複合機、各種ネットワーク機器、通信ネットワークに接続可能な任意の機器であってもよい。
他の情報通信装置107は、たとえば、上述した説明において例示されているような暗号通信プロトコルを用いて、解析対象装置101との間で暗号通信を実行する。このような他の情報通信装置107は、周知の技術、または、その組合せにより構成可能であるので、詳細な説明は省略する。
(解析システム100の構成)
次に、本実施形態に係る解析システム100の構成要素について説明する。
本実施形態に係る解析システム100は、データ取得部102、暗号解析部104、及び、通信処理部103を主たる構成要素として備える(以下、データ取得部102、暗号解析部104、通信処理部103、及び、それらを構成する構成要素を、単に「解析システム100の構成要素」と称する場合がある)。
本実施形態に係る解析システム100は、これらの構成要素を用いて、解析対象装置101と、通信ネットワーク105を介して接続された他の情報通信装置107との間で実行される暗号通信を解析する。解析システム100は、当該解析結果に基づき、特定の処理を実行する。
解析システム100の各構成要素は、それぞれ、物理的なコンピュータ等の情報処理装置を用いて実現されてもよく、または、仮想化基盤において提供されるVMを用いて実現されてもよい。解析システム100の各構成要素の間は、無線、有線、または、それらを組み合わせた任意の通信回線により、通信可能に接続されている。係る通信回線は、周知の技術を採用してもよいので、詳細な説明は省略する。以下、解析システム100の各構成要素について説明する。
尚、以下において説明する、データ取得部102、及び、通信処理部103が、本実施形態を具体例として説明した場合の、本発明に関する主要な構成要素である。
(データ取得部102の構成)
まず、本実施形態に係るデータ取得部102について説明する。本実施形態に係るデータ取得部102は、解析対象装置101と通信可能に接続される。データ取得部102は、解析対象装置101のメモリ101bに保持されているメモリ領域データを取得する。データ取得部102は、取得したメモリ領域データを保持するメモリダンプ保持部102aを有する。
解析対象装置101を物理的なコンピュータ等の情報通信装置により実現する場合に、データ取得部102は、たとえば、図2に例示されているように、メモリ101bに各種通信バス等を介して接続される拡張ハードウェア装置として実現されてもよい。また、データ取得部102は、メモリ101bに対するデータの読み取り、書き込み、アクセス等を制御するメモリコントローラ(不図示)に接続されてもよい。この場合に、データ取得部102は、たとえば、メモリ101bに対するデータの読み書きを制御するメモリコントローラ(不図示)を介して、メモリ101bに保持されているデータを取得してもよい。尚、PCI(Peripheral Components Interconnect)バスに接続した拡張ハードウェアにより、コンピュータに実装されたメモリ装置(SDRAM:Synchronous Dynamic Random Access Memory)の内容を取得する技術が、下記参考文献1に開示されている。
(参考文献1)
Brian D. Carrier、Joe Grand、「A_hardware−based_memory_acquisition_procedure_for_digital_investigations」、Digital Investigation Volume 1、 Issue 1、 February 2004、p.p.50−60。
解析対象装置101が仮想化基盤により提供されるVM等を用いて実現される場合を想定する。この場合に、データ取得部102は、たとえば、図3に例示されているように、仮想化基盤において提供される、VMの動作を制御可能なソフトウェアであるVMM(Virtual Machine Monitor)300の機能を用いて実現されてもよい。より具体的に、データ取得部102は、VMM300の機能を利用したソフトウェア(ソフトウェア・プログラム)、または、仮想的なデバイスにより実現されてもよい。
この場合に、データ取得部102は、上述したように、VMMが提供する機能(たとえば、特定のAPI等)や、データ(たとえば、仮想的なメモリ101bに記憶されたデータの保存領域を特定可能な情報等)を介して、当該メモリ101bに記憶されるデータを取得(ダンプ)可能である。尚、メモリ領域データを取得する具体的な方法は、メモリ101bの構成等に応じて周知の技術を適宜採用してもよい。
また、図2、及び、図3に限らず、データ取得部102は、たとえば、解析対象装置101自体にハードウェア、ソフトウェア、または、ハードウェアとソフトウェアの組合せによるメモリをダンプするダンプ機能を組み込むことにより、実現されてもよい。この場合に、データ取得部102は、たとえば、解析対象装置において実行される任意のソフトウェアとして実現されてもよい。尚、データ取得部102自体はマルウェア、または、マルウェアによる通信の解析処理を実行しないので、マルウェアにより検知される危険性は比較的低い。
データ取得部102は、たとえば、後述する通信処理部103(たとえば、暗号通信検査部103b)から、メモリ101bに保持されているメモリ領域データ(データ)の取得を指示するダンプ指示を受け付ける。データ取得部102は、当該ダンプ指示を受け付けたタイミングにおいて、メモリ101bに保持されているメモリ領域データをダンプする。
データ取得部102は、メモリ101bに保持されている全てのメモリ領域データ(すなわち、メモリ101bの全メモリ領域に保持されているデータ)をダンプしてもよい。また、データ取得部102は、メモリ101bに保持されているデータの内、少なくとも一部のメモリ領域データをダンプしてもよい。
データ取得部102は、ダンプしたメモリ領域データを、後述するメモリダンプ保持部102aに保存(登録)する。
データ取得部102は、メモリ101bからメモリ領域データをダンプする処理が完了した際、後述する通信処理部103(たとえば、暗号通信検査部103b)に、当該処理の完了を通知してもよい。
メモリダンプ保持部102aは、データ取得部102が取得したメモリ領域データを保持する。尚、メモリダンプ保持部102aは、メモリ101bから取得したメモリ領域データと、当該メモリ領域データを取得したタイミングを表す情報とを、関連付けて保持してもよい。
(通信処理部103の構成)
次に、本実施形態に係る通信処理部103について説明する。まず、本実施形態に係る通信処理部103の概要について説明する。
通信処理部103は、解析対象装置101と、通信ネットワーク105との間に介在し、通信路106を介してそれぞれと通信可能に接続される。通信処理部103は、解析対象装置101と、通信ネットワーク105との間で通信される通信データを解析した結果に基づき、解析対象装置101と、通信ネットワーク105との間で通信データを中継する。特に、本実施形態に係る通信処理部103は、解析対象装置101と、通信ネットワーク105との間で実行される所定の暗号通信プロトコルを用いた暗号通信に関する通信データを中継可能である。
また、通信処理部103は、該通信データを解析した結果に基づき、データ取得部102に対して、解析対象装置101のメモリ101bに保存されたメモリ領域データの取得(データ)を指示する。この際、通信処理部103は、解析対象装置101と、通信ネットワーク105との間の通信の一時的な停止、及び、再開を制御してもよい。
また、通信処理部103は、該通信データを解析した結果に基づき、当該通信データを保存する。
通信処理部103は、たとえば、複数の通信路106に接続された通信インターフェースを有するルータ、スイッチ、または、アクセスポイント等のネットワーク機器であってもよい。また、通信処理部103は、それらの機能を実現可能なコンピュータ等の情報処理装置であってもよい。尚、係る通信処理部103は、物理的な装置としてのネットワーク機器や情報処理装置として実現されてもよい。また、係る通信処理部103は、特定の仮想化基盤においてネットワーク機器や情報処理装置を仮想化した仮想デバイスとして実現されてもよい。
通信処理部103の具体的な構成について説明する。
通信処理部103は、図1に例示されているように、通信制御部103aと、暗号通信検査部103bとを有する。通信処理部103は、通信データ記録部103dを有してもよい。尚、通信制御部103aと、暗号通信検査部103bと、通信データ記録部103dとの間は、それぞれ通信可能に接続されている。
通信処理部103の各構成要素について説明する。
通信制御部103aは、上述したように、解析対象装置101と、通信ネットワーク105との間の通信を中継する。より具体的に、通信制御部103aは、解析対象装置101と、通信ネットワーク105を介して接続された他の情報通信装置107との間の通信を中継する。以下、解析対象装置101と、通信ネットワーク105との間の通信は、解析対象装置101と、通信ネットワーク105を介して接続された他の情報通信装置107との間の通信を含むことを想定する。解析対象装置101と、通信ネットワーク105との間の通信は、特定の暗号通信プロトコル(たとえば、SSL等)により暗号化されていてもよい。
通信制御部103aは、解析対象装置101から送信される通信データをキャプチャし、その通信データが表す通信内容(宛先情報、または、通信プロトコルに関する情報等)を解析する。また、通信制御部103aは、通信ネットワーク105から受信した通信データをキャプチャし、キャプチャした内容(宛先情報、または、通信プロトコルに関する情報等)を解析する。通信制御部103aは、それらを解析した結果に基づき、各通信データを、通信ネットワーク105と、解析対象装置101との間で転送する。
たとえば、通信ネットワーク105がインターネット等のIP(Internet Protocol)プロトコルを採用した通信ネットワーク(IPネットワーク)である場合を想定する。この場合に、通信制御部103aは、通信データを構成するIPパケットを解析することにより、当該通信データを、通信ネットワーク105と、解析対象装置101との間で転送可能である。尚、係る通信データの転送制御は、たとえば、ルータやスイッチ等の周知のネットワーク機器と同様の技術を採用してもよいので、詳細な説明は省略する。
通信制御部103aは、解析対象装置101と、通信ネットワーク105との間の通信を一時停止し、また、停止した当該通信を再開可能である。より具体的に説明すると、通信制御部103aは、解析対象装置101と、通信ネットワーク105を介して接続された他の情報通信装置107との間の通信の停止、及び、再開を制御可能である。
通信制御部103aは、たとえば、通信ネットワーク105、または、解析対象装置101との間の通信路106が接続された図示しないネットワークインタフェースに対する通信データの書き込み(または、読み取り)の停止、または、再開を制御する。これにより、通信制御部103aは、解析対象装置101と、通信ネットワーク105との間の通信を制御可能である。ネットワークインタフェースに対する通信データの書き込み(または、読み取り)の制御は、当該ネットワークインタフェース、または、通信処理部103の具体的構成に応じて周知の技術を適宜採用してもよいので、詳細な説明を省略する。
通信制御部103aは、後述する暗号通信検査部103bからの要求に基づき、解析対象装置101と、通信ネットワーク105との間の通信を一時停止してもよい。同様に、通信制御部103aは、後述する暗号通信検査部103bからの要求に基づき、当該停止した通信を再開してもよい。
通信制御部103aは、キャプチャした該通信データを、後述する暗号通信検査部103bに伝達(受け渡し)する。同様に、通信制御部103aは、キャプチャした該通信データを、後述する通信データ記録部103dに伝達(受け渡し)してもよい。
次に、暗号通信検査部103bについて説明する。
暗号通信検査部103bは、通信制御部103aから受け付けた通信データを解析する。暗号通信検査部103bは、当該解析結果と、後述する鍵データ取得ポリシ103cとに基づき、該暗号通信プロトコルにおける通信路の暗号化に用いられる秘密情報を含むデータが、解析対象装置101におけるメモリ101bに存在するタイミングを判定する。
係る秘密情報を含むデータは、一般的に、通信路の暗号化に用いられる鍵(以下、「暗号鍵」と称する場合がある)を含むデータ(以下「鍵データ」と称する場合がある)である。係る暗号鍵は、暗号化された通信路において通信される通信データを暗号化、または、復号(解読)可能な鍵である。
換言すると、暗号通信検査部103bは、特定の暗号通信プロトコルに基づき通信される通信データを解析することにより、暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するか否かを判定する。より具体的に、暗号通信検査部103bは、該通信データを解析することにより、該鍵データが、解析対象装置101におけるメモリ101bに存在するタイミングを判定してもよい。
たとえば、SSL/TLS等の暗号通信プロトコルにおいて、通信路の暗号化に用いる暗号鍵を交換する処理手順の進行状況は、通信データを解析することにより確認可能である。尚、TLSは、Transport_Layer_Securityの略称を表す。
具体的に、SSL/TLS等の暗号通信プロトコルにおいて、2以上の通信端末において交換される暗号鍵自体(または、暗号鍵を導出可能な情報自体)は、PKI(public key infrastructure)等の技術を用いて保護(暗号化)される。このため、第三者が、暗号鍵自体(または、暗号鍵を導出可能な情報自体)を、通信路を介して取得することは困難である。
しかし、暗号通信検査部103bは、通信データにおいて暗号化されていない部分を解析することにより、当該暗号通信プロトコルにおける暗号鍵の交換手順の進行状況を表す情報を確認可能である。たとえば、暗号通信プロトコルがSSLであることを想定すると、通信データにおいて、Recordプロトコルのヘッダ(Recordヘッダ)、及び、handshakeプロトコルにおける一部のメッセージは暗号化されていない。このため、暗号通信検査部103bは、たとえば、通信データにおける当該部分を解析することにより、SSLプロトコルにおける暗号鍵を交換する処理手順の進行状況を確認可能である。
たとえば、SSLプロトコルにおいては、所定の手順が実行された際(具体的に、ChangeCipherSpecメッセージが通信された際)、通信路を暗号化する暗号鍵が、2つの通信端末において共有される。すなわち、係る暗号鍵が共有されたタイミングにおいて、当該通信端末(たとえば、解析対象装置101)のメモリには、係る暗号鍵を含む鍵データが保持されている可能性が高い。以上より、暗号通信検査部103bは、特定の暗号通信プロトコルに基づき通信される通信データを解析することにより、暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定可能である。
また、暗号通信検査部103bは、通信ネットワークを介した通信接続を確立するハンドシェーク処理にて通信される通信メッセージから、該通信にて用いられる暗号化処理に関する情報(以下「暗号スイート」と称する場合がある)を抽出してもよい。たとえば、通信メッセージは、通信接続を確立した場合に通信される対象情報を暗号化する暗号アルゴリズム、暗号鍵の鍵長、暗号利用モード(後述)、通信データに対するメッセージ認証方式等を表す情報を含む。暗号通信プロトコルがSSLプロトコルである場合に、暗号通信検査部103bは、たとえば、ハンドシェーク処理にて通信されたClientHelloメッセージ、及び、ServerHelloメッセージ等の通信メッセージから、対象情報を暗号化する暗号アルゴリズム等を抽出する。
暗号通信検査部103bは、通信データを解析することにより、該暗号通信プロトコルにおける通信路の暗号化処理に用いられる各種情報(以下「暗号スイート」と称する場合がある)を取得してもよい。係る暗号スイートには、たとえば、暗号アルゴリズム、暗号鍵の鍵長、暗号利用モード(後述)、通信データに対するメッセージ認証方式等を表す情報が含まれる。たとえば、該暗号通信プロトコルがSSLプロトコルである場合に、暗号通信検査部103bは、ClientHelloメッセージ、及び、ServerHelloメッセージを解析することにより、通信路の暗号化に用いられる暗号アルゴリズム等を特定可能である。
尚、SSLプロトコルにおいて用いられるRecordプロトコル、handshakeプロトコル、及び、各種メッセージ等は、周知の技術であるので、詳細な説明は省略する。
暗号通信検査部103bは、上述したように、解析対象装置101と、他の情報通信装置107との間で暗号鍵を交換する処理手順の進行状況を確認する。これにより、暗号通信検査部103bは、当該暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定する。より具体的に、暗号通信検査部103bは、鍵データ取得ポリシ103cに設定された情報を用いて、暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定する。
鍵データ取得ポリシ103cには、図4に例示されているように、特定の暗号通信プロトコル(図4における401)の種別と、鍵データ取得基準(図4における402)とが含まれる。尚、鍵データ取得ポリシ103cにおいては、暗号通信プロトコル401に対して、鍵データ取得基準402が関連付けされる。鍵データ取得基準402は、少なくとも、該鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定可能な基準を表す情報である。
また、鍵データ取得ポリシ103cには、さらに、暗号通信検査部103bが実行する処理の内容(図4における403)が、含まれてもよい。鍵データ取得ポリシ103cにおいては、処理内容403と、暗号通信プロトコル401とが関連付けされる。処理内容403は、鍵データ取得基準402に基づき該鍵データが解析対象装置101のメモリ101bに存在すると判定された場合に、暗号通信検査部103bが実行する処理の内容を表す情報である。
暗号通信プロトコル401には、たとえば、具体的な暗号通信プロトコルごとに、当該暗号通信プロトコルを識別可能な識別符号(ID:Identifier)が設定されてもよい。
鍵データ取得基準402には、たとえば、情報処理装置(コンピュータ)等による機械解釈が可能な任意の形式(書式)に基づき表現された、該特定のタイミングを判定可能な情報が登録されてもよい。尚、機械解釈可能な任意の形式は、たとえば、特定の符号の組合せや、構造化言語による表現等であってもよい。機械解釈可能な任意の形式は、上述した例に限定されない。
処理内容403には、たとえば、機械解釈が可能な任意の形式(書式)に基づき表現された、暗号通信検査部103bが実行する処理の内容を表す情報が登録されてもよい。
たとえば、図4に例示されているように、暗号通信プロトコルが「SSL/TLS」である場合には、鍵データ取得基準402に、「(SSL/TLSサーバからChangeCipherSpecが送信された後)」というタイミングに関する情報が設定される。暗号通信検査部103bは、通信データを解析した結果、鍵データ取得基準402を満たすと判定した場合には、処理内容403に登録された処理を実行する。
「ChangeCipherSpec」は、暗号化方式(暗号通信プロトコル401)に従った暗号通信を開始することを表すメッセージである。「SSH2_MSG_NEWKEY」は、たとえば、鍵データに関する通信が終了したことを表すメッセージである。また、暗号通信プロトコルが「SSL/TLS」である場合に、上述した鍵データ取得基準402は、(SSL/TLSサーバからChangeCipherSpecが送信された後)乃至(Application Dataの通信が開始する前)の期間内であればよく上述した例に限定されない。
鍵データ取得基準402には、たとえば、暗号通信プロトコルにおいて、暗号鍵に関する特定の条件が成立するタイミングに関する情報が設定されてもよい。より具体的に説明すると、鍵データ取得基準402には、特定の暗号通信プロトコル401において、解析対象装置101と、他の情報通信装置107との間で暗号鍵が共有されるタイミングに関する情報が設定されてもよい。また、鍵データ取得基準402には、特定の暗号通信プロトコルにおいて、解析対象装置101と、他の情報通信装置107との間で、暗号鍵の共有に関する特定の手順が実行されたタイミングに関する情報が設定されてもよい。
鍵データ取得ポリシ103cは、任意の手法により暗号通信検査部103bに予め設定されていてもよい。
暗号通信検査部103bは、鍵データ取得ポリシ103c(たとえば、鍵データ取得基準402)に基づき、解析対象装置101のメモリ101bに暗号鍵を含む鍵データが存在するか否かを判定する。暗号通信検査部103bは、メモリ101bに暗号鍵を含む鍵データが存在すると判定した場合には、データ取得部102に対して、メモリ領域データの取得を指示することができる。
すなわち、暗号通信検査部103bは、通信データを解析し、鍵データ取得ポリシ103cに基づき、解析対象装置101のメモリ101bに暗号鍵を含む鍵データが存在するタイミングを判定する。当該タイミングは、暗号鍵がメモリ101bに存在する可能性が高いタイミングを表す。このため、暗号通信検査部103bは、当該タイミングにおいて、データ取得部102に対してメモリ領域データの取得を指示する。この場合に、データ取得部102が取得したメモリ領域データには、当該暗号鍵が含まれる可能性が高い。
また、暗号通信検査部103bは、解析対象装置101のメモリ101bに該鍵データが存在すると判定した場合には、通信制御部103aに対して、解析対象装置101と、通信ネットワーク105との間の通信を(少なくとも一時的に)停止するよう指示することが可能である。
仮に、解析対象装置101と、通信ネットワーク105との間の通信が停止されずに続行された場合を想定する。この場合に、該鍵データが解析対象装置101のメモリ101bから失われてしまう可能性がある。また、当該通信が停止されずに続行された場合に、通信プロトコルによっては、通信路の暗号化に用いられる暗号鍵が変更されてしまう可能性がある。
このため、暗号通信検査部103bは、メモリ101bに該鍵データが存在すると判定したタイミングにおいて、解析対象装置101と、通信ネットワーク105との間の通信の一時停止を通信制御部103aに指示する。該通信が停止されている間、メモリ101bに該暗号鍵が保持されていることが期待される。よって、データ取得部102がこの間に取得したメモリ領域データには、該鍵データが含まれることが期待される。
換言すると、暗号通信検査部103bは、該暗号鍵がメモリ101bに保持されている期間(時間)を延長する目的のために、係る通信を一時停止してもよい。メモリ101bに該鍵データが存在するタイミングにおいて、解析対象装置101と、通信ネットワーク105との間の通信を一時停止してからメモリ領域データを取得することにより、該鍵データが含まれる可能性が高いメモリ領域データを取得することが可能である。
暗号通信検査部103bは、データ取得部102からメモリ領域データを取得する処理の完了を通知された際、解析対象装置101と、通信ネットワーク105との間の通信が停止している場合には、当該通信を再開するよう通信制御部103aに指示してもよい。
尚、暗号通信検査部103bは、解析対象装置101と、通信ネットワーク105との間の通信を再開するタイミングを適宜選択してもよい。すなわち、暗号通信検査部103bは、データ取得部102から、メモリ領域データの取得完了を通知された際、該通信を再開してもよい。また、暗号通信検査部103bは、たとえば、通信データの解読完了を暗号解析部104(後述)から通知された際に、該通信を再開してもよい。暗号通信検査部103bは、上述したように、通信の再開タイミングを制御することにより、該通信が停止される時間(期間)を必要最小限度に留めることが可能である。
たとえば、該通信が停止される期間が長引いた場合には、解析対象装置において通信処理を実行するプログラムにおいて通信エラー等として扱われ、係るプログラムによる処理が異常終了してしまう可能性がある。特に、係るプログラムがマルウェアである場合には、当該マルウェアによる処理が終了してしまうと、その挙動を解析することが困難になる。これに対して、該通信が停止される時間(期間)を必要最小限度に留めることにより、たとえば、マルウェアによる処理を続行させつつ、その挙動を解析することが可能である。
暗号通信検査部103bは、通信制御部103aに対して解析対象装置101と、通信ネットワーク105との間の通信の停止を指示してから特定の時間(たとえば、30秒等)が経過した際に、解析対象装置101と、通信ネットワーク105との間の通信の再開を指示してもよい。暗号通信検査部103bは、該特定の時間として適切な値を適宜選択してもよい。たとえば、データ取得部102がメモリ101bからメモリ領域データを取得するのに必要な時間を、事前実験や模擬実験を通じて予め算出することにより、暗号通信検査部103bは、該特定の時間として必要最小限の値を選択可能である。
さらに、暗号通信検査部103bは、データ取得部102からメモリ領域データを取得する処理の完了を通知された際、後述する暗号解析部104に対して、後述する通信データ記録部103dにより保存された通信データの解読を指示してもよい。また、その際、暗号通信検査部103bは、該暗号通信プロトコルにおいて用いられる暗号アルゴリズムに関する情報を暗号解析部104に通知してもよい。通信データの解読に関する詳細な処理については、後述する。
暗号通信検査部103bは、後述する暗号解析部104(たとえば、暗号解読部104d)から、通信データの解読処理が完了したことを表す通知を受け付けてもよい。その際に、暗号通信検査部103bは、解析対象装置101と、通信ネットワーク105との間の通信が停止している場合には、当該通信を再開するよう通信制御部103aに指示してもよい。
暗号通信検査部103bは、暗号解析部104により解読された通信データを検査(解析)し、当該解析の結果に基づき、特定の処理を実行する。暗号通信検査部103bは、係る特定の処理を適宜選択してもよい。
暗号通信検査部103bは、たとえば、係る特定の処理として、解析対象装置101と通信ネットワーク105との間の通信の停止を通信制御部103aに指示してもよい。また、暗号通信検査部103bは、たとえば、係る特定の処理として、解析対象装置101と通信ネットワーク105との間で通信されるデータを改変してもよい。また、暗号通信検査部103bは、たとえば、マルウェア等に感知されないように、解析対象装置101と通信ネットワーク105との間の通信をそのまま続行させてもよい。尚、係る特定の処理は、解読された通信データに応じて、予め定められていてもよい。
次に、通信データ記録部103dについて説明する。
通信データ記録部103dは、通信制御部103aにおいてキャプチャされた該通信データを、通信データ記録ポリシ103eに基づき、通信データ保持部103fに保存(登録)する。
通信データ記録ポリシ103eは、通信制御部103aにおいてキャプチャされた通信データを保存する必要があるのか否かを判定するのに用いられる情報である。
より具体的に、通信データ記録ポリシ103eには、図5に例示されているように、特定の暗号通信プロトコル(図5における501)の種別と、通信データ記録基準(図5における502)とが含まれている。通信データ記録ポリシ103eにおいては、暗号通信プロトコル501と、通信データ記録基準502とが関連付けされている。通信データ記録基準502は、暗号通信プロトコル501を用いて通信される通信データの保存(記録)の要否を判定可能な基準(情報)を表す。
また、通信データ記録ポリシ103eには、さらに、通信データ記録部103dが実行する処理の内容(図5における503)が含まれてもよい。通信データ記録ポリシ103eにおいては、処理内容503と、暗号通信プロトコル501とが関連付けされている。処理内容503は、通信データ記録基準502を満たすと判定された場合に、通信データ記録部103dが実行する処理の内容を表す情報である。
暗号通信プロトコル501には、たとえば、具体的な暗号通信プロトコルごとに、当該暗号通信プロトコルを識別可能な識別符号(ID)が設定されてもよい。
通信データ記録基準502には、たとえば、機械解釈が可能な任意の形式(書式)に基づき表現された、通信データの保存(記録)の要否を判定可能な情報が登録されてもよい。より具体的に説明すると、通信データ記録基準502には、たとえば、通信データを保存する条件の成否、または、通信データを保存するタイミングを判定可能な情報が登録されてもよい。
処理内容503には、たとえば、機械解釈が可能な任意の形式(書式)に基づき表現された、通信データ記録部103dが実行する処理の内容を表す情報が登録されてもよい。
たとえば、図5に例示されているように、暗号通信プロトコルが「SSL/TLS」である場合に、通信データ記録基準502には「(Application Dataの通信が開始された後)」という情報が設定される。通信データ記録部103dは、通信データを解析した結果、通信データ記録基準502を満たすと判定した場合には、処理内容503に登録された処理を実行する。
尚、通信データ記録基準502には、たとえば、暗号通信プロトコル501によって暗号化された通信路において最初の(暗号化された)通信データが通信されるタイミング以降のデータを記録することを表す条件が設定されてもよい。
上述したように、暗号通信プロトコルによっては、通信路における暗号化に用いる該暗号鍵が所定のタイミングで変更される可能性がある。すなわち、暗号化された通信路において最初の通信データと、2回目以降の通信データとでは、通信路を暗号化する暗号鍵が異なる可能性がある。また、暗号通信プロトコルによっては、通信路が暗号化された後、最初の通信データにおいて機密度が高い情報(重要度が高い情報)が通信される可能性がある。このため、後述する暗号解析部104が全ての暗号通信のデータを解読できるように、通信路が暗号化された際、最初の通信データが通信されるタイミングで当該通信データを保存することが有効である。
尚、通信データ記録基準502には、上述した例に限定されず、任意のタイミングを判断可能な情報が設定されてもよい。
通信データ記録ポリシ103eは、任意の手法により通信データ記録部103dに予め設定されていてもよい。
通信データ記録部103dは、通信データ記録基準502を満たすと判定した通信データを、通信データ保持部103fに登録する。
通信データ保持部103fは、たとえば、図6に例示されているように、各通信データについて、当該通信データの発信元に関する情報(図6の601)、暗号通信プロトコルを表す識別情報(図6の602)、及び、記録される通信データを表す記録データ(図6の603)を関連付けて保持する。尚、記録データ603には、当該通信データをキャプチャした時刻等のタイミングを表す情報と、当該通信データの内容とが登録されてもよい。
(暗号解析部104の構成)
次に、本実施形態に係る暗号解析部104について説明する。まず、本実施形態に係る暗号解析部104の概要について説明する。
暗号解析部104は、データ取得部102が取得したメモリ領域データを解析し、鍵データの特徴を表す情報(後述)に基づき、当該メモリ領域データに含まれる該暗号鍵の候補を抽出する。
暗号解析部104は、通信データ記録部103dにより保存された暗号化された通信データを、抽出した該暗号鍵の候補を用いて復号した結果に基づき、当該暗号鍵の候補の中から、正しい暗号鍵を抽出する。この場合に、正しい暗号鍵は、暗号化された通信データを正しく復号可能な鍵である。尚、この際、暗号解析部104は、該暗号通信プロトコルにおいて用いられる暗号化方式(暗号アルゴリズム)を特定してもよい。
暗号解析部104の具体的な構成について説明する。
暗号解析部104は、鍵候補抽出部104a、及び、暗号解読部104dを有する。暗号解析部104を構成している構成要素の間は、それぞれ通信可能に接続されている。
まず、本実施形態に係る鍵候補抽出部104aについて説明する。鍵候補抽出部104aは、鍵候補判定情報104bと、鍵候補保持部104cとを有する。
鍵候補抽出部104aは、メモリダンプ保持部102aに登録されたメモリ領域データを参照し、鍵候補判定情報104bに基づき、当該メモリ領域データから該暗号鍵の候補を抽出する。すなわち、鍵候補抽出部104aは、鍵候補判定情報104bに基づき、メモリ領域データから、解析対象装置101と、通信ネットワーク105との間の暗号通信に用いられる暗号鍵の候補を含む鍵データの候補を抽出する。以降、係る鍵データの候補を、「鍵データ候補」と称する場合がある。尚、鍵候補抽出部104aは、鍵データ候補を抽出した際、当該処理の完了を、後述する暗号解読部104dに通知してもよい。
まず、鍵候補抽出部104aによる、該メモリ領域データにおける該暗号鍵の探索について説明する。
上述したように、メモリ領域データは、特定のタイミングにおいて解析対象装置101のメモリ101bに保持されているデータである。すなわち、データ取得部102がメモリ101bから該メモリ領域データを取得するタイミングにより、メモリ領域データの内容は変わる。このため、当該メモリ領域データの中で該暗号鍵を含む鍵データを予め特定することは困難である。
また、解析対象装置101におけるメモリ101bの記憶容量(メモリ空間のサイズ)が大きい場合に、メモリ領域データは大きい。すなわち、鍵候補抽出部104aは、大きなサイズのデータの中から、暗号鍵を探索する必要がある。仮に、1GB(単位:GigaBytes)のメモリ領域データから、128ビット(単位:bit)の暗号鍵を全探索する場合に、その候補の数が膨大になるので、鍵データ候補を抽出する効率的な手法が必要とされる。
該暗号鍵を含む鍵データは、該メモリ領域データに含まれるデータの中で、特有の特徴を示すことが多い。係る鍵データの特徴は、たとえば、鍵データ自体の属性(たとえば、データ自体のランダム性等)、または、係る鍵データの該メモリ領域データにおける配置パターン(配置される位置や、配置されるデータの並び)等を表す。
該鍵データの特徴は、暗号通信の実行に関する各種条件に応じて異なる。係る条件には、たとえば、該暗号通信プロトコルにおいて用いられる暗号化方式(暗号アルゴリズム)、当該暗号化方式に用いられる暗号パラメータ(後述)、または、解析対象装置101における当該暗号化方式に関する処理の実行環境(後述)等が含まれる。具体例として、特定の暗号アルゴリズムにおいて用いられる暗号鍵の鍵長が異なる場合には、該鍵データの特徴が異なるときがある。また、たとえば、各暗号アルゴリズムにおいて用いられる暗号利用モードによって、該暗号鍵を含む暗号化処理に必要な情報が異なるので、該鍵データの特徴は異なる場合がある。尚、暗号利用モードは、暗号アルゴリズムとしてブロック暗号を採用した場合に、ブロック長よりも長い平文を暗号化する際の処理方法である。
鍵候補抽出部104aは、該メモリ領域データから、特定の鍵データの特徴に合致するデータを鍵データ候補として抽出する。これにより、鍵候補抽出部104aは、該暗号鍵の候補を抽出可能である。
たとえば、暗号アルゴリズムに関する事前知識、または、事前実験等に基づき、各種条件の組合せごとに、予め該鍵データの特徴を表す情報(データ)を収集することが可能である。また、当該収集した該鍵データの特徴を表すデータをパターン化することにより、メモリ領域データの中から該鍵データ候補を抽出可能な判定情報を設けることが可能である。
該鍵データの特徴を表すデータを収集する具体的な方法は、適宜選択可能である。たとえば、解析システムのユーザ、開発者、または、管理者等(以下、「ユーザ等」と称する)が、解析対象装置101において、暗号鍵を出力可能な実験用の暗号通信プログラムを実行する。次に、当該ユーザ等は、たとえば、データ取得部102を用いて、当該実験用の通信プログラムが実行されている特定のタイミングにおいて、解析対象装置101のメモリ領域データを取得する。当該ユーザ等は、当該取得したメモリ領域データにおいて、実験プログラムから出力された(正しい)暗号鍵を探索する。このような実験を繰り返すことにより、暗号鍵が配置された領域に共通する特徴を抽出することが可能である。また、当該ユーザ等は、たとえば、暗号化方式に関する一般的な事前知識(たとえば、暗号鍵の鍵長や、暗号鍵のランダム性等)に基づき、記鍵データに特有の特徴を抽出することが可能である。
また、たとえば、当該ユーザ等は、解析対象装置101において該実験プログラムを実行した際に、解析対象装置101における暗号通信に用いられるAPIをフックしてもよい。当該ユーザ等は、フックしたAPIに対する入力(すなわち、引数)を解析することにより、暗号鍵を入手し、当該暗号鍵を表す鍵データの特徴を解析する。また、当該暗号鍵を表すデータが、解析対象装置におけるメモリ101bのどこに配置されているかを調査する。当該ユーザ等は、このような処理によって得られた調査結果を、該鍵データの特徴を表すデータとして収集する。尚、APIをフックする方法は、周知の技術であるので、詳細な説明を省略する。
尚、該鍵データの特徴を表すデータを収集する方法は、上述したような具体例に限定されず、任意の方法を採用してもよい。
上述したように、各種条件に応じて、鍵データの特徴を表すデータを予め収集してパターン化することにより、メモリ領域データの中から該鍵データ候補を抽出可能な判定情報を設けることが可能である。係る判定情報には、たとえば、メモリ領域データにおいて鍵データ候補を探索(抽出)する位置(場所)や、特定のデータが鍵データか否かを判定可能な判定基準等が設定されてもよい。
本実施形態に係る鍵候補抽出部104aは、係る判定情報を用いてメモリ領域データから該暗号鍵を含む鍵データ候補を抽出する。より具体的に、鍵候補抽出部104aは、該暗号鍵を含む鍵データ候補を抽出可能な判定情報を有する鍵候補判定情報104bを用いて、鍵データ候補を抽出する。
鍵候補判定情報104bは、図7に例示されているように、暗号化方式(暗号アルゴリズム)の種別を表す情報(図7における701)と、鍵候補判定基準(図7における704)とを有する。鍵候補判定基準704は、暗号アルゴリズム701に関連付けられる。係る鍵候補判定基準704は、メモリ領域データに含まれる特定のデータが、該暗号鍵を含む鍵データに該当するか否かを判定可能な基準を表す情報である。換言すると、鍵候補判定基準704は、鍵データの特徴を表すデータに基づき、メモリ領域データに含まれる特定のデータが、該暗号鍵を含む鍵データに該当するか否かを判定可能な基準である。
また、鍵候補判定情報104bは、さらに、暗号アルゴリズム701に関連付けされた、当該暗号アルゴリズムに関する暗号パラメータ(図7の702)と、解析対象装置101において暗号アルゴリズム701に関する暗号化処理の実行環境を表す情報(図7の703)とを含んでもよい。
暗号アルゴリズム701には、たとえば、具体的な暗号アルゴリズムを識別可能な識別符号(ID)が設定されてもよい。
鍵候補判定基準704には、たとえば、機械解釈が可能な任意の形式(書式)に基づき表現された情報が登録されてもよい。
暗号パラメータ702は、図7に例示されているように、暗号アルゴリズム701において用いられる鍵の長さ(鍵長)と、暗号利用モードに関する情報とを含んでもよい。暗号利用モードは、上述したように、暗号アルゴリズム701としてブロック暗号を採用した場合に、ブロック長よりも長い平文を暗号化する際の処理方法である。係る暗号利用モードとして、たとえば、CBC(Cipher Block Chaining)モードや、GCM(Galois/Counter Mode)等が知られている。
実行環境情報703は、たとえば、解析対象装置101において、暗号アルゴリズム701に関する処理が実装されたライブラリに関する情報、及び、解析対象装置101の実行環境に関する情報等が設定される。より具体的に、実行環境情報703は、たとえば、解析対象装置101のOS(たとえば、Windows(登録商標)、Linux(登録商標)等)、及び、暗号処理実装(CGN(Cryptography Next Generation)API、OpenSSL等)を特定可能な情報であってもよい。
鍵候補判定情報104bは、任意の手法により鍵候補抽出部104aに予め設定されていてもよい。
鍵候補判定情報104b(たとえば、鍵候補判定基準704)に基づき、鍵候補抽出部104aは、メモリ領域データに含まれる特定のデータ領域を、鍵データ候補として抽出するか否かを判定する。
鍵候補抽出部104aによって、該鍵データ候補が抽出される抽出処理について、図7に示す具体例を参照しながら説明する。
たとえば、図7に例示されているように、暗号アルゴリズム701が「AES」、暗号パラメータ702の鍵長が「128ビット」、または、「256ビット」、暗号利用モードが「CBC」であると仮定する。尚、AESは、Advanced_Encryption_Standardの略称を表す。
この場合に、鍵候補抽出部104aは、該暗号アルゴリズム701、及び、暗号パラメータ702に関連付けされた鍵候補判定基準704を参照する。鍵候補判定基準704に基づき、鍵候補抽出部104aは、メモリダンプ保持部102aに保持されているメモリ領域データから、情報エントロピーが特定の基準値以上である連続した16バイト、または、32バイトのデータ領域を抽出する。以降、説明の便宜上、情報エントロピーを、単に、エントロピーと表す。
一般的に、あるデータ領域に含まれるデータが表す値のエントロピー(以下、「データのエントロピー」と称する場合がある)が大きいほど、そのデータ領域に含まれるデータが表す値のばらつきは大きい。また、暗号鍵は(規則性を見いだせない)乱数値であることが多いので、暗号鍵を含む鍵データの値は、ばらつきが大きいと想定される。このため、図7に例示されているような判定基準に基づき、鍵候補抽出部104aは、ばらつきが大きい値を有するデータを含むデータ領域を、鍵データ候補として抽出可能である。
尚、係るばらつきの大きさは、既知の種々の計算方法を用いて算出可能である。具体的な一例として、鍵候補抽出部104aは、たとえば、鍵データ候補の標準偏差(または、分散)を係るばらつきの大きさとして算出してもよい。標準偏差(または、分散)の算出方法は、周知の技術であるので、詳細な説明を省略する。
たとえば、図7に例示されているように、暗号アルゴリズム701が「AES」、暗号パラメータ702の鍵長が「128ビット(単位:bit)」であり、暗号利用モードが「GCM」である場合を仮定する。この場合に、鍵候補抽出部104aは、該暗号アルゴリズム701、及び、暗号パラメータ702に関連付けされた鍵候補判定基準704を参照し、メモリ領域データから、「0x30、0x02、0x00、0x00、0x4b、0x53、0x53、0x4Dから開始する連続した560バイト(単位:byte)のデータ」に該当すると判定したデータを抽出する。たとえば、解析対象装置101における特定の実行環境において、暗号鍵を含む鍵データは、特定の配置パターンを有する場合がある。図7に例示されているように、このような配置パターンを鍵候補判定基準704として登録することにより、鍵候補抽出部104aは、係る配置パターンに合致するデータを、鍵データ候補として抽出可能である。
言い換えると、「0x30、0x02、0x00、0x00、0x4b、0x53、0x53、0x4D」は、鍵データ候補が格納されている記憶領域が特定さえる手がかりであるタグである。したがって、この場合に、鍵候補抽出部104aは、該タグを表すタグ情報に基づき、たとえば、タグ情報が表すタグ以降の560バイトに格納されているデータを鍵データ候補として抽出する。
鍵候補抽出部104aは、たとえば、メモリ領域データの特定の位置(たとえば、先頭)から、順次特定のサイズ(たとえば、1バイト)ずつシフトしながら、特定のサイズのデータを抽出し、鍵候補判定基準704に基づき、当該データが鍵データ候補に該当しているのか否かを判定してもよい。
暗号通信検査部103bが、ある暗号通信に関する通信データを解析した結果から、暗号スイートに関する情報を取得可能である場合を想定する。この場合には、当該暗号通信に関する暗号アルゴリズム701、及び、暗号パラメータ702に関する情報を、通信データから判明する既知の情報として扱うことができる。また、解析対象装置101に関する実行環境情報703は、暗号解析部104に予め設定する等の方法により、既知の情報として扱うことができる。
尚、暗号アルゴリズム701、及び、暗号パラメータ702が不明である場合に、鍵候補抽出部104aは、鍵候補判定情報104bに登録された全ての鍵候補判定基準704を用いて、それぞれの基準に適合する鍵データ候補を抽出してもよい。この場合には、後述する暗号解読部104dが、暗号化された通信データを、抽出した該鍵データ候補を用いて解読した結果に基づき、当該通信データの暗号化に用いられる暗号鍵を含む鍵データ、暗号アルゴリズム、及び、暗号パラメータを特定することが可能である。
また、鍵候補抽出部104aは、鍵データ候補を抽出すると共に、特定の暗号通信プロトコルにおいて通信データを暗号化、または、復号する処理に用いられるその他の必要な情報(以下、「暗号処理データ」と称する場合がある)を取得してもよい。
係る暗号処理データには、たとえば、以下のようなデータが含まれてもよい。すなわち、係る暗号処理データには、暗号アルゴリズムとしてブロック暗号が用いられる場合の初期化ベクタ(IV:Initialization Vector)が含まれてもよい。また、係る暗号処理データには、特定の暗号利用モードにおいて用いられる各種パラメータ(たとえば、カウンタモードにおけるカウンタ、nonce(number used once:一度のみ使用される使い捨ての値)等)が含まれてもよい。また、係る暗号処理データには、暗号化された通信データに付与される認証情報等が含まれてもよい。尚、係る暗号処理データには、暗号アルゴリズムや暗号パラメータ802等に応じて必要となる任意のデータが含まれてもよい。
鍵候補抽出部104aは、たとえば、暗号通信検査部103b、または、通信制御部103aから通信データを取得し、当該通信データを解析することにより、係る暗号処理データを取得してもよい。また、鍵候補抽出部104aは、たとえば、該鍵データ候補と同様に、特定の判断基準に基づき、メモリダンプ保持部102aに保持されているメモリ領域データの中から、暗号処理データを取得してもよい。
鍵候補抽出部104aは、メモリ領域データから抽出した鍵データ候補を、鍵候補保持部104cに保存(登録)する。また、鍵候補抽出部104aは、当該鍵データ候補に関連する暗号処理データを、鍵候補保持部104cに保存(登録)してもよい。
鍵候補保持部104cは、図8に例示されているように、暗号アルゴリズム801ごとに、抽出した鍵データ候補803を関連付けて保持する。尚、鍵候補保持部104cは、暗号アルゴリズム801ごとに、当該暗号アルゴリズムにおいて用いられる暗号パラメータ802を関連付けて保持してもよい。また、鍵候補保持部104cは、鍵データ候補803の一部に、該暗号処理データを併せて保持してもよい。尚、鍵候補保持部104cは、鍵データ候補803とは別の、図示しない領域に、該暗号処理データを保持してもよい。
鍵候補保持部104cは、図8に例示されているように、特定の暗号アルゴリズム(たとえば「AES」)に関する鍵データ候補を、複数保持してもよい。尚、図8に例示された構成は1つの具体例であり、本実施形態に係る鍵候補保持部104cは、この構成には限定されない。
次に、本実施形態に係る暗号解読部104dについて説明する。
暗号解読部104dは、図1に例示されているように、解析結果判定情報104e、及び、解析結果保持部104fを有する。
暗号解読部104dは、鍵候補抽出部104aにおいて鍵データ候補が抽出された際、当該鍵データ候補を用いて、通信データ保持部103fに保存された(暗号化された)通信データを解読(復号)する。
暗号解読部104dは、通信データ保持部103fに保存された(暗号化された)通信データを参照し、鍵候補保持部104cに保存された鍵データ候補を用いて、当該暗号化された通信データを解読(復号)する。すなわち、暗号解読部104dは、鍵候補保持部104cに保存された鍵データ候補を用いて、解析対象装置101と、通信ネットワーク105との間の暗号通信において通信される通信データを解読(復号)する。尚、暗号解読部104dは、必要に応じて、鍵データ候補と、鍵候補抽出部104aが取得した暗号処理データとを用いて、通信データを解読(復号)してもよい。以下においては、解読(復号)された通信データを、「解読済み通信データ」と称する場合がある。
暗号解読部104dは、解読済み通信データの特徴を表すデータに基づき、当該解読済み通信データが正しく解読(復号)されたか否かを判定する。係る解読済み通信データの特徴を表すデータは、たとえば、当該解読済み通信データ自体の属性(たとえば、データ自体のランダム性)、または、当該解読済み通信データのデータフォーマット等を表す。
具体的に説明すると、暗号解読部104dは、解析結果判定情報104eに基づき、特定の鍵データ候補による通信データの解読結果の成否を判定する。暗号解読部104dは、通信データの解読に成功した場合に、当該解読に用いた鍵データを、解析結果保持部104fに保存(登録)する。また、暗号解読部104dは、当該鍵データと共に、解読に使用した暗号処理データを解析結果保持部104fに保存(登録)してもよい。
尚、以下においては、解析結果判定情報104eに基づき、通信データの解読に成功したと判定された鍵データを、「正しい鍵データ」と称する場合がある。
解析結果判定情報104eは、図9に示すように、解析結果判定基準901と、判定結果902とを含む。
解析結果判定基準901には、解読済み通信データの特徴を表すデータに基づき、当該解読済み通信データが正しく解読(復号)されたか否かを判定可能な基準を表す情報が設定される。この場合に、解析結果判定基準901に設定される情報は、たとえば、機械解釈が可能な任意の形式(書式)に基づき表現されてもよい。
判定結果902には、暗号解読部104dが特定の通信データを解読した結果が、解析結果判定基準901を満たした場合の判定結果(解読を成功したか否か)が設定される。この場合に、判定結果902には、係る判定結果を表す符号等が登録されてもよい。
解析結果判定基準901に基づき、暗号解読部104dは、通信データの復号が成功したか否かを判定する。
暗号解読部104dによる通信データの解読成否の判定について、図9に示す具体例を参照しながら説明する。
図9に示す具体例においては、暗号解読部104dは、たとえば、解読済み通信データのエントロピーが特定の基準値以下である場合に、当該解読済み通信データが正しく復号されたと判定する。
たとえば、解読済み通信データのエントロピーが特定の基準値より大きい場合に、暗号解読部104dは、当該通信データの解読に失敗したと判定する。
一般的に、データのエントロピーが大きいほど、データ領域に含まれるデータが表す値のばらつきは大きい。すなわち、解読済み通信データのエントロピーが特定の基準値以下の場合には、解読済み通信データに含まれるデータが表す値のばらつきがある程度小さいので、解読に成功した可能性が高い。これに対して、解読済み通信データのエントロピーが特定の基準値より大きい場合には、解読済み通信データに含まれるデータが表す値のばらつきが大きい(すなわち、ランダム性が高い)ので、解読に失敗した可能性が高い。この理由は、暗号化されたデータ(通信データ)は、(規則性を見いだせない)乱数値であることが多く、そのようなデータが表す値は、ばらつきが大きいからである。
尚、データのばらつき程度(エントロピー)の大小を判定する特定の基準値は、通信データ自体の一般的な特性(ランダム性)に関する知識、または、事前実験等により適宜選択してもよい。
たとえば、係るデータのばらつき度合いを表す基準としては、標準偏差σ(ただし、σは正の実数を表す)を用いることが可能である。データのばらつきが正規分布に従うと仮定すると、データの平均値を「m」(ただし、mは実数を表す)として「m±σ」の範囲に全体の約68.2%、「m±2σ」の範囲に、全体の約95.4%のデータが含まれる。すなわち、このσの値が大きい場合に、解読済み通信データは、極めてばらつきが大きい(ランダム性が高い)。この場合に、暗号解読部104dは、解読済み通信データのばらつきがある程度小さい場合に解読が成功したと判定するよう、係るσの値を適宜選択してもよい。
たとえば、図9に例示されているように、解読済み通信データが特定のデータを含むか否かを、当該解読済み通信データの解読の成否を判定する基準としてもよい。この理由は、解読済み通信データが既知のデータや、特定のパターンを含む場合に、当該解読済み通信データは正しく解読されている可能性が高いからである。
たとえば、解読済み通信データが特定のデータフォーマット(各種データを表現可能な表現形式)に適合するか否かを、当該解読済み通信データの解読の成否を判定する基準としてもよい。係るデータフォーマットは、たとえば、各種の音声、静止画像、動画、ドキュメント(文書)等を表すデータフォーマットであってもよい。また、係るデータフォーマットは、たとえば、特定のファイルシステムにおけるファイルフォーマットであってもよい。尚、図9に示す具体例は一つの例示であり、本実施形態は、これに限定されない。
解析結果判定情報104eは、任意の手法により暗号解読部104dに予め設定されていてもよい。
暗号解読部104dは、たとえば、鍵候補保持部104cに保存された全ての鍵データ候補を用いて通信データの解読処理を行い、その結果を解析結果判定情報104eに基づき判定する。これにより、暗号解読部104dは、正しい鍵データを抽出可能である。暗号解読部104dは、通信データ保持部103fに保存されている全ての通信データに対して、上述したような暗号を解読する処理を実行してもよい。
暗号解読部104dは、解析結果判定情報104eに基づき通信データを解読した結果から、正しい鍵データと、当該正しい鍵データにより解読された解読済み通信データとを、解析結果保持部104fに保存(登録)する。尚、暗号解読部104dは、暗号通信検査部103bに、上述したように、通信データを解読する処理の完了を通知してもよい。
解析結果保持部104fは、図10に例示されているように、暗号アルゴリズムを特定可能な情報(図10の暗号アルゴリズム1001)と、正しい鍵データ(図10の鍵データ1002)と、解読済み通信データ(図10の解読結果1003)とを関連付けて保持する。尚、図10に例示された構成は1つの具体例であり、本実施形態に係る解析結果保持部104fは、これには限定されない。たとえば、解析結果保持部104fは、正しい鍵データのみ、または、解読済み通信データのみを保持してもよく、これらを別々に保持してもよい。また、解析結果保持部104fは、鍵データ1002の一部として、該正しい鍵データと共に通信データの解読に用いた暗号処理データを保持してもよい。尚、解析結果保持部104fは、鍵データ1002とは別の図示しない領域に、当該暗号処理データを保持してもよい。
(解析システム100の動作)
次に、解析システム100の動作について説明する。尚、以下の説明においては、具体例として、解析対象装置101と、通信ネットワーク105との間の暗号通信プロトコルが、SSLであることを想定する。
図11を参照しながら、解析システム100の動作の概要について説明する。
まず、通信処理部103は、解析対象装置101と、通信ネットワーク105との間で通信される通信データをキャプチャする(ステップS1101)。
次に、通信処理部103が、キャプチャした該通信データを解析し、鍵データが解析対象装置101におけるメモリ101bに存在するタイミングを判定する(ステップS1102)。
ステップS1102において、当該タイミングが到来したと判定された場合(ステップS1103にてYES)、データ取得部102は、解析対象装置101におけるメモリ101bが保持するメモリ領域データを取得する(ステップS1104)。尚、ステップS1103における判定結果がNOの場合に、ステップS1101にて、通信処理部103が処理を続行する。
次に、暗号解析部104が、ステップS1104において取得されたメモリ領域データを特定の基準に基づき解析し、鍵データ候補を抽出する(ステップS1105)。
次に、暗号解析部104が、ステップS1105において抽出した鍵データ候補を用いて通信データを解読した結果に基づき、正しい鍵データ、及び、解読された通信データを得る(ステップS1106)。
次に、通信処理部103(たとえば、暗号通信検査部103b)は、ステップS1106にておいて得られた、解読済み通信データの内容を解析し、特定の処理を実行する(ステップS1107)。通信処理部103(たとえば、暗号通信検査部103b)は、上述したように、係る特定の処理を適宜選択してもよい。
尚、ステップS1101において通信データをキャプチャした通信処理部103は、当該通信データを保存する必要があるのか否かを判定し、当該判定結果に基づき通信データを保存する(ステップS1108)。ステップS1108における処理は、ステップS1102乃至ステップS1105における処理と並行(または、擬似的に並行)して実行されてもよい。
次に、解析システム100における動作の詳細について説明する。
まず、図12A、及び、図12Bに例示されているフローチャートを参照しながら、データ取得部102、及び、通信処理部103の動作について説明する。以下、図12Aに例示されているフローチャートについて説明する。図12Bは、後述するステップS1209B、及び、ステップS1210Bを除いて、図12Aと同様のフローチャートであるため、相違点のみ説明する。尚、以下のステップS1201乃至S1208に例示されている処理は、図11に例示されているステップS1101乃至S1105と同様の処理である。
まず、通信制御部103aは、解析対象装置101と、通信ネットワーク105との間で通信される通信データをキャプチャする(ステップS1201)。
この場合に、上述したように、通信制御部103aは、解析対象装置101から通信ネットワーク105宛てに送信される通信データ、及び、通信ネットワーク105から解析対象装置101宛てに送信された通信データの両方をキャプチャ可能である。
次に、暗号通信検査部103bが、ステップS1201においてキャプチャした通信データを解析し、鍵データ取得ポリシ103cに基づき、メモリ101bに記憶されているメモリ領域データを取得するか否かを判定する(ステップS1202)。
より具体的に説明すると、暗号通信検査部103bは、鍵データ取得ポリシ103cに基づき、解析対象装置101のメモリ101bに鍵データが存在するタイミングを判定する。
暗号通信プロトコルとしてSSLが採用されている場合に、暗号通信検査部103bは、たとえば、図13に示すSSLプロトコルの処理シーケンスにおいて、解析対象装置101が、SSLサーバ側(他の情報通信装置107側)からChangeCipherSpecメッセージを受信した際(図13に例示されている「停止タイミングT1」)、係るタイミングが到来したと判定してもよい。
尚、暗号通信検査部103bは、解析対象装置101が、SSLサーバ側(他の情報通信装置107側)からFinishedメッセージを受信した際(図13に例示されている「停止タイミングT2」)、係るタイミングが到来したと判定してもよい。
ステップS1202において、暗号通信検査部103bが、当該タイミングが到来したと判定した場合(ステップS1203にてYES)、暗号通信検査部103bは、通信制御部103aに対して、解析対象装置101と、通信ネットワーク105との間の通信を停止するよう指示する(ステップS1204)。
この場合に、当該指示を受け付けた通信制御部103aは、解析対象装置101と、通信ネットワーク105との間の通信を一時停止する。係る通信を停止する具体的な方法は、適宜選択してもよい。
尚、ステップS1203にてNOの場合に、ステップS1201に戻って、通信制御部103aが処理を続行する。
次に、暗号通信検査部103bは、データ取得部102に対して、解析対象装置101のメモリ101bに記憶(保持)されたメモリ領域データの取得を指示する(ステップS1205)。
係る指示を受け付けたデータ取得部102は、解析対象装置101のメモリ101bに記憶(保持)されたメモリ領域データをダンプする(ステップS1206)。メモリ101bに保持されているデータの具体的なダンプ方法は、上述したように、解析対象装置101の構成に応じて適宜選択してもよい。
次に、データ取得部102は、取得した該メモリ領域データを、メモリダンプ保持部102aに保存(登録)する(ステップS1207)。
次に、データ取得部102は、暗号通信検査部103bに対して、メモリ領域データの取得が完了したことを通知する(ステップS1208)。
次に、ステップS1208にて送信された通知を受け付けた暗号通信検査部103bは、通信制御部103aに対して、一時停止している通信の再開を指示する。該指示に応じて、通信制御部103aは、当該通信を再開する(ステップS1209)。
尚、ステップS1208が実行されない場合に、暗号通信検査部103bは、ステップS1204において通信の停止を指示してから特定の時間が経過した際に、通信制御部103aに対して、一時停止している通信の再開を指示してもよい。
ステップS1209における処理の後、暗号通信検査部103bは、暗号解析部104に対して、通信データ記録部103dにより保存された通信データの解読と、暗号鍵の抽出とを指示してもよい(ステップS1210)。この際、通信データを解析した結果から、暗号通信プロトコルにおいて用いられる暗号アルゴリズム等が判明している場合に、暗号通信検査部103bは、暗号解析部104に対して、当該暗号アルゴリズムに関する情報を提供してもよい。
尚、図12AにおけるステップS1209、及び、ステップS1210の処理順序は逆であってもよい。すなわち、図12Bに例示されているように、ステップS1208にて送信された通知を受け付けた暗号通信検査部103bは、暗号解析部104に対して、通信データ記録部103dにより保存された通信データの解読と、暗号鍵の抽出とを指示してもよい(ステップS1209B)。暗号通信検査部103bは、暗号解析部104から、通信データの解読処理の完了を通知された際に、通信制御部103aに対して、一時停止している通信の再開を指示してもよい(ステップS1210B)。
次に、通信処理部103(たとえば、通信データ記録部103d)の処理について、図14に例示されているフローチャートを参照して説明する。尚、以下のステップS1401乃至ステップS1404は、図11に例示したステップS1108に相当する。
まず、図14に示すステップS1201において、通信制御部103aが、通信データをキャプチャする。係る処理は、図12A、及び、図12Bに例示されているステップS1201と同様としてもよい。
次に、通信制御部103aは、キャプチャした通信データを、通信データ記録部103dに伝達(通知)する(ステップS1401)。
通信データ記録部103dは、通信データ記録ポリシ103eに基づき、ステップS1201においてキャプチャされた通信データを保存するか否かを判定する(ステップS1402)。
通信プロトコルとしてSSLが採用された場合に、通信データ記録ポリシ103e(たとえば、通信データ記録基準502)には、たとえば、図13に例示されている最初のApplicationDataメッセージが送信されるタイミングである「T3」以降の通信データを保存(記録)することを表す条件が設定されてもよい。尚、通信データ記録ポリシ103e(たとえば、通信データ記録基準502)には、たとえば、図13に例示されている「停止タイミングT1」、または、「停止タイミングT2」以降の通信データを保存(記録)することを表す条件が設定されてもよい。
ステップS1402における判定の結果、通信データを保存する場合(ステップS1403にてYES)、通信データ記録部103dは、当該通信データを通信データ保持部103fに登録(保存)する(ステップS1404)。
尚、ステップS1403にてNOの場合に、通信データ記録部103dは、当該通信データを保存しなくともよい。
ステップS1401乃至S1404の処理に従い、通信データが必要に応じて通信データ保持部103fに保存される。
次に、暗号解析部104の処理について、図15、及び、図16に例示されているフローチャートを参照しながら説明する。尚、図15、及び、図16に例示されているフローチャートは、図11におけるステップS1105乃至S1106に相当する。
まず、図15に例示されているフローチャートを参照しながら、鍵候補抽出部104aの動作について説明する。
上述したように、たとえば、暗号通信検査部103bからの指示(図12AにおけるステップS1210)に応じて、暗号解析部104は、暗号化された通信データの解読処理を開始する。
まず、鍵候補抽出部104aは、メモリダンプ保持部102aに登録(保存)されたメモリ領域データを参照する(ステップS1501)。この場合に、鍵候補抽出部104aは、メモリダンプ保持部102aから、当該メモリ領域データを取得してもよい。
次に、鍵候補抽出部104aは、鍵候補判定情報104bに基づき、ステップS1501において参照(取得)したメモリ領域データから暗号鍵の候補を抽出する(ステップS1502)。
上述したように、暗号通信検査部103bから、暗号アルゴリズムに関する情報が提供された場合に、鍵候補抽出部104aは、当該暗号アルゴリズムに関連付けされた鍵候補判定基準704を用いて、メモリ領域データから鍵データ候補を抽出する。
鍵候補抽出部104aは、暗号アルゴリズムが不明である場合に、鍵候補判定情報104bに登録された全ての暗号アルゴリズム701について、鍵候補判定基準704に基づき鍵データ候補を抽出する。
また、この際、鍵候補抽出部104aは、鍵データ候補に関連付けされた暗号アルゴリズムに関する情報(たとえば、図7における暗号アルゴリズム701、及び、暗号パラメータ702)を抽出してもよい。
次に、鍵候補抽出部104aは、ステップS1502において抽出した鍵データ候補、及び、暗号アルゴリズムに関する情報を、鍵候補保持部104cに登録(保存)する(ステップS1503)。
ステップS1503の後、鍵候補抽出部104aは、暗号解読部104dに対して鍵データ候補に関する抽出処理が完了したことを通知してもよい(ステップS1504)。
次に、暗号解読部104dは、ステップS1501乃至S1503において抽出された鍵データ候補を用いて、暗号化された通信データを解読する処理を実行する(ステップS1505)。
ステップS1505における処理の詳細について、図16に例示されているフローチャートを参照しながら説明する。
まず、暗号解読部104dは、鍵候補保持部104cに登録された鍵データ候補(図8の803)を取得する(ステップS1601)。尚、この際、暗号解読部104dは、当該鍵データ候補と関連付けされた暗号アルゴリズムに関する情報(図8の801、及び、802)を取得してもよい。また、暗号解読部104dは、当該鍵データ候補に関連付けされた暗号処理データを取得してもよい。
次に暗号解読部104dは、通信データ保持部103fに登録(保存)された、暗号化された通信データを参照する。この場合に、暗号解読部104dは、当該通信データを、通信データ保持部103fから取得してもよい。
次に、暗号解読部104dは、ステップS1601において参照(取得)した鍵データ候補、及び、暗号アルゴリズムに関する情報を用いて、当該取得した通信データを解読(復号)する(ステップS1602)。
次に、暗号解読部104dは、ステップS1602において通信データを解読(復号)した結果を表す解読済み通信データが、正しく解読(復号)されたか否かを、解析結果判定情報104eに基づき判定する(ステップS1603)。
上述したように、暗号解読部104dは、たとえば、解読済み通信データのエントロピーの値、または、解読済み通信データが特定のデータフォーマットに合致するか否か、等に基づき、解読済み通信データが、正しく解読されたか否かを判定してもよい。
解読済み通信データが正しく解読されたと判定した場合(ステップS1604にてYES)、暗号解読部104dは、正しい鍵データと、解読済み通信データとを、解析結果保持部104fに登録する(ステップS1606)。
解読済み通信データが正しく解読されなかったと判定した場合(ステップS1604にてNO)、暗号解読部104dは、鍵候補保持部104cに他の鍵データ候補が登録されているかを確認する(ステップS1605)。
他の鍵データ候補が登録されている場合(ステップS1607にてYES)、暗号解読部104dは、ステップS1601から処理を続行し、当該他の鍵データ候補を鍵候補保持部104cから取り出す。
ステップS1601乃至S1607の処理により、通信データを解読可能な暗号鍵を含む鍵データと、解読された通信データとが得られる。
尚、暗号解読部104dは、上述したような通信データの解読処理の完了を、暗号通信検査部103bに通知してもよい(ステップS1608)。
ステップS1608にて送信された通知を受け付けた暗号通信検査部103bは、図11を参照しながら説明したステップS1107から処理を続行する。この場合に、暗号通信検査部103bは、解読された通信データを解析した結果に基づき、特定の処理を実行可能である。
以上のように構成された本実施形態に係る解析システム100においては、まず、通信処理部103が、解析対象装置101と、通信ネットワーク105との間で特定の暗号通信プロトコルに基づき通信される通信データを解析する。通信処理部103は、係る解析の結果に基づき、解析対象装置101と、通信ネットワーク105との間の通信路を暗号化する暗号鍵が、解析対象装置101のメモリ101bに存在するタイミングを特定する。
通信処理部103は、当該タイミングにおいて、メモリ101bに記憶されたメモリ領域データの取得を、データ取得部102に対して指示する。
以上より、本実施形態に係る解析システム100によれば、データ取得部102は、解析対象装置101と、通信ネットワーク105との間の通信路を暗号化する暗号鍵を含むメモリ領域データを、解析対象装置101のメモリ101bから取得可能である。
また、通信処理部103(たとえば、暗号通信検査部103b)は、該特定のタイミングにおいて、通信制御部103aに対して、解析対象装置101と、通信ネットワーク105との間の通信を一時的に停止するよう指示可能である。これにより、本実施形態に係る通信処理部103は、該暗号鍵がメモリ101bに保持されている期間を延長することが可能である。この理由は、解析対象装置101と、通信ネットワーク105との間の通信が一時停止されることにより、通信処理の進行に伴う暗号鍵の消失や変更等が発生せず、メモリ101bに該暗号鍵が保持されていることが期待されるからである。このため、本実施形態に係る解析システム100によれば、当該暗号鍵を含む可能性が高いメモリ領域データを取得することが可能である。
以上より、本実施形態によれば、解析対象装置101と通信ネットワーク105との間で暗号通信プロトコルに基づき通信される通信データを解析した結果に基づき、当該暗号通信プロトコルにおける暗号化処理に用いられる暗号鍵を含むデータを、情報通信装置のメモリ空間から取得可能である。
より具体的に、本実施形態によれば、該暗号通信により通信される通信データを解析することにより、該暗号通信において用いられる暗号鍵が解析対象装置101のメモリ101bに存在するか否かを判定し、当該判定結果に基づき、メモリ101bに保持されているデータを取得可能である。
また、本実施形態に係る解析システム100は、さらに、以下のような効果を奏する。
本実施形態に係る解析システム100においては、暗号解析部104が、取得した該メモリ領域データの中から、暗号鍵を含む鍵データの特徴を表すデータ(鍵候補判定情報104b)に基づき、暗号鍵の候補(鍵データ候補)を抽出する。暗号解析部104は、解析結果判定情報104eに基づき、抽出した該鍵データ候補を用いて通信データを解読(復号)した結果の成否を判定する。暗号解析部104は、係る判定結果に基づき、正しい暗号鍵を含む鍵データと、解読された通信データを取得可能である。
以上より、本実施形態に係る解析システム100は、メモリ領域データの中から、効率よく鍵データ候補を抽出可能である。この理由は、暗号解析部104が、メモリ領域データの中から鍵データの特徴を表すデータ(鍵候補判定情報104b)に基づき鍵データ候補を抽出するので、鍵データの特徴に合致しないデータを、鍵データ候補から排除可能であるからである。また、複数の鍵データ候補の中に含まれる正しい鍵データを判定可能であるので、本実施形態に係る解析システム100は、メモリ領域データから、正しい鍵データを、効率的に探索可能である。
また、本実施形態に係る解析システム100においては、抽出した該正しい鍵データを用いて、暗号解析部104が、暗号化された通信データを解読可能である。
また、本実施形態に係る解析システム100によれば、通信処理部103は、暗号解析部104により解読された通信データを用いて、解析対象装置101と、通信ネットワーク105との間で通信される通信データの内容を解析可能である。通信処理部103は、当該解析結果に応じて、たとえば、上述したような特定の処理を実行することが可能である。
以上より、本実施形態に係る解析システム100は、解析対象装置101と、通信ネットワーク105との間で通信される暗号化された通信データの少なくとも一部を解析可能である。また、本実施形態に係る解析システム100は、該解析の結果に応じて、特定の処理を実行することが可能である。具体的に、本実施形態に係る解析システム100は、たとえば、解析対象装置101において実行されるマルウェア等の任意のソフトウェア・プログラムによる暗号通信の内容を解析可能である。特に、本実施形態に係る解析システム100は、当該ソフトウェア・プログラムや、解析対象装置101に対して非侵襲的な手法により、暗号通信の内容を解析可能であり、当該解析結果に基づき、任意の処理を実行可能である。
<第1の実施形態の変形例>
以下、第1の実施形態の変形例について説明する。
第1の実施形態においては、鍵候補抽出部104aは、データ取得部102において取得されたメモリ領域データから、鍵候補判定情報104bに基づき、鍵データ候補を抽出する。
本変形例における鍵候補抽出部104aは、上述したような暗号処理データの候補と、該暗号鍵を生成する基になるデータである鍵素材データの候補との少なくとも一方を、メモリ領域データから抽出するよう、第1の実施形態に係る鍵候補抽出部104aを拡張する。係る鍵素材データの候補は、たとえば、SSLにおけるpre_master_secretや、master_secret等であってもよい。
係る暗号処理データ、及び、鍵素材データは、上述したような鍵データと同様に、該メモリ領域データに含まれるデータの中で、特有の特徴を示す場合がある。これらのデータの特徴は、たとえば、係るデータ自体の属性(たとえば、データ自体のランダム性等)、または、係るデータの該メモリ領域データにおける配置パターン(配置される位置や、配置されるデータの並び)等を表す。
また、暗号処理データ、及び、鍵素材データの特徴は、該鍵データの特徴と同様に、暗号通信の実行に関する各種条件に応じて異なる場合がある。たとえば、該暗号通信プロトコルにおいて用いられる暗号アルゴリズム、または、解析対象装置101における当該暗号化方式に関する処理の実行環境等に応じて、係るデータの特徴が異なる場合がある。
たとえば、特定の暗号アルゴリズムが暗号利用モードとしてGCMが採用された場合と、CBCモードが採用された場合とでは、暗号処理データとして必要となるデータの種類が異なり、そのデータ自体の特性も異なる。たとえば、ランダム性が高いデータもあれば、所定の値に設定されるデータもある。また、解析対象装置101における、暗号処理の実行環境に応じて、メモリ領域データにおける暗号処理データの配置位置が異なる場合がある。
該鍵データの特徴と同様に、これらのデータの特徴を表すデータを予め収集してパターン化することにより、メモリ領域データの中からこれらのデータの候補を抽出可能な判定基準を設けることが可能である。本変形例における鍵候補抽出部104aは、当該判定基準に基づき、メモリ領域データからこれらのデータ候補を抽出する。当該判定基準には、たとえば、これらのデータの候補を探索(抽出)する位置(場所)が設定されていてもよい。または、当該判定基準には、たとえば、特定のデータがこれらのデータに該当するか否かを判定する判定方法等が設定されていてもよい。
尚、係る判定基準は、第1の実施形態に係る鍵候補判定情報104bに追加されてもよい。また、係る判定基準は、新たな構成要素(不図示)として、鍵候補抽出部104aに追加されてもよい。
本変形例における暗号解読部104dは、該鍵素材データの候補を抽出した場合には、当該鍵素材データの候補から、該鍵データ候補を生成してもよい。一般的に、鍵素材データから、暗号鍵を生成する方法は、暗号通信プロトコル(または、当該暗号通信プロトコルにおいて用いられる暗号アルゴリズム)ごとに規定されている。たとえば、SSLプロトコルの場合に、pre_master_secretから、master_secretを生成する方法、及び、master_secretから暗号通信に用いる鍵等を生成する方法は、SSLプロトコルの仕様として規定されている。
本変形例における暗号解読部104dは、第1の実施形態と同様に、鍵データ候補と、暗号処理データの候補とを用いて通信データを解読する。本変形例における暗号解読部104dは、第1の実施形態と同様に、解析結果判定情報104eに基づき当該解読結果の成否を判定する。
本変形例における暗号解読部104dは、通信データの解読が成功した場合に、正しい鍵データと、解読済み通信データと、暗号処理データとを、解析結果保持部104fに保存(登録)してもよい。
本変形例における解析システム100は、所定の判定基準に基づき、暗号処理データの候補、及び、鍵素材データの候補の少なくとも何れかを抽出可能である。また、本変形例における解析システム100は、第1の実施形態と同様に、それらのデータを用いて通信データを解読した結果に基づき、正しい鍵データと、解読済み通信データとを取得可能である。
また、本実施形態に係る解析システム100は、第1の実施形態に係る解析システム100と同様の構成を含むので、第1の実施形態と同様の効果を奏する。
<第2の実施形態>
次に、本発明における第2の実施形態について、図17を参照して説明する。図17は、本実施形態に係る解析システム1700の機能的な構成を例示するブロック図である。
本実施形態に係る解析システム1700は、情報通信装置1701と、通信ネットワーク1705との間で実行される暗号通信を解析する。本実施形態に係る解析システム1700は、当該解析結果に基づき、特定の処理を実行する。
情報通信装置1701は、少なくとも、演算部1701a、及び、メモリ1701bを有し、通信ネットワーク1705に対して通信可能に接続された、任意の情報通信装置である。
係る情報通信装置1701は、たとえば、物理的なハードウェアにより構成されたコンピュータ等の情報通信装置であってもよい。また、情報通信装置1701は、情報処理装置等の各種ハードウェアを仮想化可能な所定の仮想化基盤において提供される、仮想的なコンピュータ(VM)であってもよい。
情報通信装置1701における演算部1701aは、本発明の各実施形態に係る演算部101aと同様に、メモリ1701bに記憶された各種データ、及び、プログラムを読み取り、当該プログラムに実装された各種演算処理を実行するCPUや、MPU等の演算装置である。
情報通信装置1701におけるメモリ1701bは、本発明の各実施形態に係るメモリ101bと同様に、情報通信装置1701におけるメインメモリとして機能し、演算部1701aにおいて処理される各種プログラムやデータを保持する。また、メモリ1701bに保持(記憶)されたデータは、外部から取得(ダンプ)可能である。
情報通信装置1701は、各実施形態に係る解析対象装置101と同様としてもよい。
通信ネットワーク1705は、有線、無線、または、これらの任意の組合せにより構成され、任意の通信プロトコルを用いて通信路を確立可能な通信ネットワークである。また、通信ネットワーク1705は、たとえば、本発明の各実施形態において説明した各種暗号通信プロトコルにより暗号化された通信路を、情報通信装置1701に対して提供可能である。係る通信ネットワーク1705は、本発明の各実施形態に係る通信ネットワーク105と同様としてよいので、詳細な説明は省略する。
次に、解析システム1700が有する構成について説明する。
本実施形態に係る解析システム1700は、データ取得部1702と、通信処理部1703とを備える。
尚、解析システム1700の各構成要素は、それぞれ、物理的なコンピュータ等の情報処理装置を用いて実現されてもよく、または、仮想化基盤において提供されるVMを用いて実現されてもよい。また、解析システム1700の各構成要素の間は、無線、有線、または、それらを組み合わせた任意の通信回線により、通信可能に接続されている。係る通信回線は、周知の技術を採用してもよいので、詳細な説明は省略する。以下、解析システム1700の各構成要素について説明する。
データ取得部1702は、情報通信装置1701から、メモリ1701bに保持されているデータの少なくとも一部を取得可能である。メモリ1701bに保持(記憶)されたデータを取得する具体的な方法は、情報通信装置1701の具体的な構成に応じて適宜選択可能である。係るデータ取得部1702は、たとえば、本発明の各実施形態に係るデータ取得部102と同様としてもよい。
通信処理部1703は、情報通信装置1701と、通信ネットワーク1705との間で特定の暗号通信プロトコルに従って通信される通信データに基づき、当該暗号通信プロトコルにおける暗号化処理に用いられる暗号鍵を含む鍵データがメモリ1701bに保持されているか否かを判定する。通信処理部1703は、当該判定した結果に基づき、データ取得部に対して該メモリに保持されているデータの取得を指示する。係る通信処理部1703は、たとえば、本発明の各実施形態に係る通信処理部103と同様としてもよい。
通信処理部1703は、たとえば、通信データを解析することにより、特定の暗号通信プロトコルにおいて該暗号鍵に関する特定の条件が成立したタイミング(たとえば、暗号鍵の交換が成立したタイミング等)を判定してもよい。通信処理部1703は、当該タイミングにおいて、データ取得部1702に対して、メモリ1701bに保持されているデータの取得を指示してもよい。
以上のように構成された解析システム1700(たとえば、データ取得部1702)は、情報通信装置1701と、通信ネットワーク1705との間の通信路を暗号化する暗号鍵を含むメモリ領域データを、情報通信装置1701のメモリ1701bから取得可能である。この理由は、通信処理部1703が、当該暗号鍵を含む鍵データがメモリ1701bに保持されていると判定した場合に、データ取得部1702に対してメモリ1701bに保持されているデータの取得を指示するからである。
以上より、本実施形態に係る解析システム1700によれば、情報通信装置1701と、通信ネットワーク1705との間で実行される暗号通信において用いられる暗号鍵を含むデータを、情報通信装置1701のメモリ1701bから取得可能である。
より具体的に、本実施形態によれば、解析システム1700は、該暗号通信データを解析することにより、該暗号通信において用いられる暗号鍵が当該情報通信装置1701のメモリ1701bに存在するか否かを判定する。解析システム1700は、当該判定結果に基づき、当該メモリ1701bに保持されているデータを取得可能である。
<第3の実施形態>
図18を参照しながら、本発明の第3の実施形態に係る処理制御装置2001が有する構成について詳細に説明する。図18は、本発明の第3の実施形態に係る処理制御装置2001が有する構成を示すブロック図である。
第3の実施形態に係る処理制御装置2001は、リスク算出部2002と、処理制御部2003とを有する。
処理制御装置2001は、通信ネットワーク2050を介して情報処理装置2051に通信接続することができる。処理制御装置2001は、命令リスク情報記憶部2004に格納されている命令リスク情報(図20を参照しながら後述する)、及び、情報処理装置2051にて実行された処理を表す処理情報(図21を参照しながら後述する)に基づき、図19に例示されたような処理を実行する。
情報処理装置2051は、ある期間に、図21に例示されたような処理を実行するとする。図21は、情報処理装置2051によって実行された処理を含む処理情報の一例を概念的に表す図である。
図21を参照すると、処理情報は、情報処理装置2051によって実行された命令と、該命令に対する入力を表す項目とが関連付けされた処理を、少なくとも1つ含む。該処理においては、該命令に、さらに、該命令に関する処理を選択するオプションが関連付けされていてもよい。
図21に例示された処理情報は、命令「ping」と、項目「A.B.C.D」とが関連付けされた処理を含む。この処理は、項目「A.B.C.D」を入力として命令「ping」が実行された処理であることを表す。図21に例示された処理情報は、情報処理装置2051が、命令「sudo」に関する処理、命令「ping」に関する処理、命令「wget」に関する処理、及び、命令「ssh」に関する処理を実行したことを表す。
命令「ping」は、たとえば、通信ネットワークが通信接続しているか否かを調べる命令を表す。命令「sudo」は、たとえば、管理者の権限を有しながら、所定の処理を実行する命令を表す。命令「wget」は、たとえば、複数のファイルを取得する命令を表す。命令「ssh」は、たとえば、通信接続されている情報処理装置2051にログインする命令であって、該通信接続されている期間に通信される通信データが暗号化されている命令を表す。
尚、処理情報は、図21に示された例に限定されない。処理情報は、各実施形態に係る暗号解析部によって読み取られた暗号鍵情報を用いて、暗号化された処理情報が復号された情報であってもよい。
処理制御装置2001は、命令リスク情報記憶部2004に格納されている命令リスク情報(図20に例示)に基づき、ある期間に情報処理装置2051にて実行された処理を含む処理情報に関するリスクを判定し、リスクが所定の制限条件を満たした場合には、情報処理装置2051に対する通信処理等の処理を制限する。図21は、命令リスク情報記憶部2004に格納されている命令リスク情報の一例を概念的に表す図である。
以降の各実施形態においては、説明の便宜上、リスクは、0以上であって、大きな数値であるほどリスクが高いことを表し、0に近いほどリスクが低いことを表すとする。
図20に例示された命令リスク情報においては、情報処理装置2051が実行可能な命令と、該命令が表す処理に関するリスクとが関連付けされている。たとえば、図20に例示された命令リスク情報においては、命令「reboot」と、リスク「15」とが関連付けされている。これは、命令「reboot」に関するリスク(たとえば、サイバーセキュリティに関するリスク)が15であることを表す。図20に例示された命令リスク情報においては、命令「ping」と、リスク「25」とが関連付けされている。これは、命令「ping」に関するリスクが25であることを表す。図20に例示された命令リスク情報においては、命令「ssh」と、リスク「100」とが関連付けされている。これは、命令「ping」に関するリスクが100であることを表す。
命令「reboot」は、たとえば、情報処理装置2051を再起動する命令を表す。命令「gcc」は、たとえば、C言語を用いて記述されているプログラムを、コンパイルする命令を表す。
命令、リスク、及び、命令リスク情報は、図20を参照しながら上述した例に限定されない。
以降、説明の便宜上、命令リスク情報に含まれていない命令に関しては、リスクが0であるとする。
次に、図19を参照しながら、本発明の第3の実施形態に係る処理制御装置2001における処理について詳細に説明する。図19は、第3の実施形態に係る処理制御装置2001における処理の流れを示すフローチャートである。
処理制御装置2001は、情報処理装置2051にて実行された処理を表す処理情報(図21に例示)を入力する。処理制御装置2001は、情報処理装置2051が通信ネットワーク2050を介して送信した処理情報を受信してもよいし、処理情報が格納されている記憶装置(図18にて不図示)から、該処理情報を読み取ってもよい。情報処理装置2051が仮想マシンである場合に、処理制御装置2001は、該仮想マシンに関する処理が物理的に実行されている情報処理装置におけるメモリを読み取ってもよい。処理制御装置2001が処理情報(図21に例示)を入力する手順は、上述した例に限定されない。
処理制御装置2001において、リスク算出部2002は、命令リスク情報に基づき、入力した処理情報に含まれている処理に関するリスクを表す数値を累積する(ステップS2001)。たとえば、リスク算出部2002は、処理情報に含まれている処理に関して、該処理を構成している命令を読み取り、命令リスク情報(図20に例示)に基づき、該命令に関連付けされたリスクを特定する。リスク算出部2002は、処理情報に含まれている処理に関してリスクを特定し、特定したリスクを足し算することにより、処理情報(すなわち、ある期間に情報処理装置2051にて実行された処理)に関するリスクを算出する。
次に、処理制御部2003は、リスク算出部2002が算出したリスクを表す数値が所定の制限条件を満たしているか否かを判定する(ステップS2002)。所定の制限条件は、たとえば、「リスクが所定の閾値以上である」である。この場合に、処理制御部2003は、リスク算出部2002が算出したリスクが所定の閾値以上であるか否かを判定する。
処理制御部2003は、処理情報に関するリスクを表す数値が所定の制限条件を満たしている場合に(ステップS2002にてYES)、情報処理装置2051に対する通信処理等の処理を制限する(ステップS2003)。処理情報に関するリスクを表す数値が所定の制限条件を満たしていない場合に(ステップS2002にてNO)、ステップS2003に示された処理は実行されない。
情報処理装置2051に対する処理を制限する場合に、処理制御部2003は、たとえば、通信ネットワーク2050において情報処理装置2051に割り当てられている通信帯域を制限する。または、情報処理装置2051に対する通信等の処理を制限する場合に、処理制御部2003は、たとえば、通信ネットワーク2050において情報処理装置2051に対する通信を遮断する。情報処理装置2051に対する処理を制限する処理は、たとえば、図24を参照しながら後述するような制御情報に含まれている処理であってもよく、上述した例に限定されない。
次に、本発明の第3の実施形態に係る処理制御装置2001に関する効果について説明する。
第3の実施形態に係る処理制御装置2001によれば、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。この理由は、ある期間に情報処理装置2051にて実行された1つ以上の処理を含む処理情報に対して、該処理情報に含まれている処理に対するリスクを累積することにより、該処理情報に関するリスクを算出し、該処理情報に関するリスクが高い場合に、該情報処理装置2051に対する通信等の処理を制限するからである。したがって、情報処理装置2051が、ある期間に実行した処理に関するリスクが大きな値である場合に、該情報処理装置2051に対する通信は、処理制御装置2001によって制限される。したがって、第3の実施形態に係る処理制御装置2001によれば、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。
<第4の実施形態>
次に、上述した第3の実施形態を基本とする本発明の第4の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第3の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図22を参照しながら、本発明の第4の実施形態に係る処理制御装置2011が有する構成について詳細に説明する。図22は、本発明の第4の実施形態に係る処理制御装置2011が有する構成を示すブロック図である。
第4の実施形態に係る処理制御装置2011は、リスク算出部2002と、処理制御部2012とを有する。
処理制御装置2011は、通信ネットワーク2050を介して情報処理装置2051に通信接続することができる。処理制御装置2011は、命令リスク情報記憶部2004に格納されている命令リスク情報(図20に例示)、制限情報記憶部2005に格納されている制限情報(図24を参照しながら後述する)、及び、情報処理装置2051にて実行された処理を表す処理情報(図21に例示)に基づき、図23に例示されたような処理を実行する。
本実施形態において、情報処理装置2051は、仮想マシンであるとする
図24を参照しながら、制限情報について説明する。図24は、制限情報記憶部2005に格納されている制限情報の一例を概念的に表す図である。
図24を参照すると、制限情報は、情報処理装置2051が実行した処理を表す処理情報(図21に例示)に対して算出されたリスクと、該リスクが該範囲である場合に、該情報処理装置2051に関して実行される処理を表す処理内容とが関連付けされている。図24に例示されているように、処理内容は、たとえば、情報処理装置2051に対する通信等の処理を制限する処理、または、情報処理装置2051を停止する処理を表す。
図24に例示された制限情報においては、範囲「50以上75未満」と、処理内容「通信帯域を制限する」とが関連付けされている。これは、情報処理装置2051にて実行された処理を表す処理情報(図21に例示)に関するリスクが50以上75未満の値である場合に、処理制御装置2011が、情報処理装置2051に対して、通信帯域を制限する処理を実行することを表す。また、図24に例示された制限情報においては、範囲「0以上50未満」と、処理内容「」とが関連付けされている。これは、情報処理装置2051にて実行された処理を表す処理情報(図21に例示)に関するリスクが0以上50未満の値である場合に、処理制御装置2011が、情報処理装置2051に対して、図24に例示された処理を実行しないことを表す。図24を参照しながら上述したように、制限情報においては、リスクが高いほど、情報処理装置2051に関する処理を制限する程度が厳しいとする。
制限情報は、上述した例に限定されない。
次に、図23を参照しながら、本発明の第4の実施形態に係る処理制御装置2011における処理について詳細に説明する。図23は、第4の実施形態に係る処理制御装置2011における処理の流れを示すフローチャートである。
処理制御装置2011において、リスク算出部2002は、命令リスク情報(図20に例示)に基づき、入力した処理情報(図21に例示)に含まれている処理に関するリスクを表す数値を累積する(ステップS2001)。
次に、処理制御部2012は、制限情報(図24に例示)において、リスク算出部2002が算出したリスクが含まれている範囲を特定し、特定した範囲に関する処理内容を選択する(ステップS2012)。たとえば、リスク算出部2002が算出したリスクが124であれば、リスク「124」は、範囲「100以上200未満」に含まれている。この場合に、処理制御部2012は、制限情報(図24に例示)において、範囲「100以上200未満」に関連付けされた処理内容「通信を遮断する」を選択する。
処理制御部2012は、選択した処理内容に従い、情報処理装置2051に関する処理を実行する(ステップS2013)。たとえば、処理制御部2012は、処理内容「通信を遮断する」を選択した場合に、情報処理装置2051に対する通信を遮断する。
図24に例示された制限情報に関して、処理制御部2012は、後述のように処理を実行する。すなわち、
○リスクが50以上、かつ、75未満であれば、情報処理装置2051に対する通信に関して、通信帯域を制限する、
○リスクが75以上、かつ、100未満であれば、情報処理装置2051にて実行される処理に割り当てる計算機リソースを制限する(たとえば、情報処理装置2051にて実行される処理に対して割り当てる計算機リソースの期間を短くする)、
○リスクが100以上、かつ、200未満であれば、情報処理装置2051に対する通信を遮断する、
○リスクが200以上であれば、情報処理装置2051をシャットダウン(停止)する、
○リスクが0以上、かつ、50未満であれば、情報処理装置2051に関して、上述した4つの処理を実行しない。
言い換えれば、処理制御部2012は、リスク算出部2002が算出したリスクの大きさに応じて、制限情報(図24に例示)に基づき、情報処理装置2051に関する処理を制限する程度を決定し、決定した程度に従い、情報処理装置2051に関する処理を制限する。
尚、本実施形態において、情報処理装置2051が仮想マシンであるとしたが、物理的な情報処理装置であってもよく、この場合に、制限情報(図24に例示)は、仮想マシンに固有な処理(たとえば、仮想マシンに対する計算機リソースを制限する)を含んでいなくてもよい。
次に、本発明の第4の実施形態に係る処理制御装置2011に関する効果について説明する。
第4の実施形態に係る処理制御装置2011によれば、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。この理由は、第4の実施形態に係る処理制御装置2011が有する構成は、第3の実施形態に係る処理制御装置2001が有する構成を含むからである。
さらに、第4の実施形態に係る処理制御装置2011によれば、情報処理システムに対するリスクに対して、より柔軟に対応することができる。この理由は、情報処理装置2051において実行された処理を表す処理情報(図21に例示)に関するリスクの大小に応じて、処理制御装置2011が、該情報処理装置2051に関する処理を制限するからである。
<第5の実施形態>
次に、上述した第3の実施形態を基本とする本発明の第5の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第3の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図25を参照しながら、本発明の第5の実施形態に係る処理制御装置2021を含む情報処理装置2020が有する構成について詳細に説明する。図25は、本発明の第5の実施形態に係る処理制御装置2021を含む情報処理装置2020が有する構成を示すブロック図である。
情報処理装置2020は、処理制御装置2021と、仮想マシン2028と、命令リスク情報記憶部2004と、メモリ2029とを有する。処理制御装置2021は、リスク算出部2002と、処理制御部2003と、暗号解析部2024と、処理復号部2025と、データ取得部2026とを有する。処理制御装置2021は、さらに、処理情報記憶部2027を有していてもよい。
情報処理装置2020は、通信ネットワーク2050に通信接続されており、外部の情報処理装置2020と通信することができる。
仮想マシン2028は、解析対象であるプログラムに従い処理を実行してもよい。また、仮想マシン2028は、デバッガ、逆アセンブラ、逆コンパイラ等の、プログラムを解析する機能を有していなくてもよい。
暗号解析部2024は、図1に示された暗号解析部104が有する機能と同様の機能を有する。データ取得部2026は、図1に示されたデータ取得部102、または、図17に示されたデータ取得部1702が有する機能と同様の機能を有する。仮想マシン2028は、たとえば、図1に示された演算部101a、または、図17に示された演算部1701aが有する機能と同様の機能を有する。メモリ2029は、たとえば、仮想マシン2028に関する処理を、実際に処理する場合にアクセスされるデータを格納することができる。情報処理装置2020が、仮想マシン2028に関する処理を実行する場合には、該メモリ2029に格納されているデータにアクセスする。
説明の便宜上、仮想マシン2028に対する通信は、暗号化方式に従い暗号化されているとする。また、処理情報記憶部2027には、該暗号化方式に従い暗号化された処理情報(以降、「暗号化処理情報」と表す)が格納されているとする。この場合に、通信処理部103(図1乃至図3、または、図17に例示)は、暗号化された通信データを監視し、該通信データに基づき、処理情報(図21に例示)が暗号化されている暗号化処理情報を作成する。
次に、図26を参照しながら、本発明の第5の実施形態に係る情報処理装置2020における処理について詳細に説明する。図26は、第5の実施形態に係る情報処理装置2020における処理の流れを示すフローチャートである。
暗号解析部2024は、図11におけるステップS1101乃至ステップS1105、図12A、図12BにおけるステップS1201乃至ステップS1208、及び、図12AにおけるステップS1210(または、図12BにおけるステップS1209B)、図14、または、図15を参照しながら説明したような処理を実行する。この処理によって、暗号解析部2024は、暗号鍵を表す暗号情報を読み取る(ステップS2021)。
処理復号部2025は、処理情報記憶部2027から暗号化処理情報を読み取り、暗号解析部2024が読み取った暗号情報を用いて、該暗号化処理情報を復号する(ステップS2022)。処理復号部2025は、たとえば、図11に示されたステップS1106、図12Aに示されたステップS1210、図12Bに示されたステップS1209B、図15に示されたステップS1505、または、図16を参照しながら説明した処理等を実行する。これによって、処理復号部2025は、暗号化処理情報が復号された処理情報を(図21に例示)を作成する。
その後、復号された処理情報に対して、図19に示された処理と同様の処理が実行される。
次に、本発明の第5の実施形態に係る処理制御装置2021に関する効果について説明する。
第5の実施形態に係る処理制御装置2021によれば、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。この理由は、第5の実施形態に係る処理制御装置2021が有する構成は、第3の実施形態に係る処理制御装置2001が有する構成を含むからである。
さらに、第5の実施形態に係る処理制御装置2021によれば、暗号化された通信が実行された場合であっても、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。この理由は、第5の実施形態に係る処理制御装置2021が、第1の実施形態、乃至、第3の実施形態に示された解析システムと同様の処理を実行することにより、暗号化された通信を復号し、復号した通信に関する処理を表す処理情報(図21に例示)に関するリスクに基づき、通信を制御するからである。
また、解析対象である対象プログラムに従い処理が実行される仮想マシン2028が、プログラムを解析する機能を有しているか否かに応じて、該対象プログラムに関する処理が異なる場合がある。たとえば、マルウェアは、仮想マシン2028がプログラムを解析する機能を有している場合に処理を停止し、該仮想マシン2028がプログラムを解析する機能を有していない場合に、悪意を有した処理を実行する。したがって、仮想マシン2028がプログラムを解析する機能を有していない場合には、本実施形態に係る処理制御装置2021によれば、プログラムを解析する機能を有しているか否かに応じて異なる処理を実行するプログラムであっても、サイバーセキュリティに関して、情報処理システムの健全性をより確実に保つことができる。
(ハードウェア構成例)
上述した本発明の第1の実施形態に係る解析システム、第2の実施形態に係る解析システム、または、第3の実施形態乃至第5の実施形態に係る処理制御装置を、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、係る解析システム、または、係る処理制御装置は、物理的、または、機能的に少なくとも2つの計算処理装置を用いて実現してもよい。また、係る解析システム、または、係る処理制御装置は、専用の装置として実現してもよい。
図27は、第1の実施形態に係る解析システム、第2の実施形態に係る解析システム、または、第3の実施形態乃至第5の実施形態に係る処理制御装置を実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。計算処理装置20は、中央処理演算装置(Central_Processing_Unit、以降「CPU」と表す)21、メモリ22、ディスク23、不揮発性記録媒体24、及び、通信インターフェース(以降、「通信IF」と表す)27を有する。計算処理装置20は、入力装置25、出力装置26に接続可能であってもよい。計算処理装置20は、通信IF27を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
不揮発性記録媒体24は、コンピュータが読み取り可能な、たとえば、コンパクトディスク(Compact_Disc)、デジタルバーサタイルディスク(Digital_Versatile_Disc)である。また、不揮発性記録媒体24は、ユニバーサルシリアルバスメモリ(USBメモリ)、ソリッドステートドライブ(Solid_State_Drive)等であってもよい。不揮発性記録媒体24は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体24は、上述した媒体に限定されない。また、不揮発性記録媒体24の代わりに、通信IF27、及び、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
すなわち、CPU21は、ディスク23に格納されているソフトウェア・プログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際にメモリ22にコピーし、演算処理を実行する。CPU21は、プログラム実行に必要なデータをメモリ22から読み取る。外部への出力が必要な場合には、CPU21は、出力装置26に出力結果を出力する。外部からプログラムを入力する場合に、CPU21は、入力装置25からプログラムを読み取る。CPU21は、上述した図1乃至図3、図17、図18、図22、または、図25に示す各部が表す機能(処理)に対応するところのメモリ22に格納されたプログラム(図11、図12A、図12B、または、図14乃至図16)、または、処理制御プログラム(図19、図23、または、図26)を解釈し実行する。CPU21は、上述した本発明の各実施形態において説明した処理を順次実行する。
すなわち、このような場合に、本発明は、係る解析プログラム、または、係る処理制御プログラムによっても成し得ると捉えることができる。さらに、係る解析プログラム、または、係る処理制御プログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、本発明は成し得ると捉えることができる。
以上、上述した実施形態を模範的な例として本発明を説明した。しかし、本発明は、上述した実施形態には限定されない。すなわち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。