次に、本発明を実施する形態について図面を参照して詳細に説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
なお、各実施形態において説明する解析システムは、当該システムの1以上の構成要素が複数の物理的あるいは論理的に離間した装置(物理的な情報処理装置や、仮想的な情報処理装置等)を用いて実現されたシステムとして構成されてもよい。この場合、係る複数の装置の間は、有線又は無線又はそれらを組み合わせた任意の通信ネットワークを用いて通信可能に接続されてもよい。また、係る複数の装置が仮想的な情報処理装置等により構成される場合、上記通信ネットワークは、仮想的な通信ネットワークであってもよい。
また、各実施形態において説明する解析システムは、当該システムの全ての構成要素が1つの装置(物理的な情報処理装置や、仮想的な情報処理装置等)を用いて実現されたシステムとして構成されてもよい。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。まず、図1乃至図3を参照して、本実施形態における解析システムについて説明する。図1は、本実施形態における解析システム100の機能的な構成を例示するブロック図である。図2及び図3は、本実施形態における解析対象装置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に限定されず、他の暗号通信プロトコルにも適用可能である。
通信ネットワーク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等の暗号通信プロトコルにおいて、通信路の暗号化に用いる暗号鍵を交換する処理手順の進行状況は、通信データを解析することにより確認可能である。
具体的には、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メッセージ等の通信メッセージから、対象情報を暗号化する暗号アルゴリズム等を抽出する。
通信データを解析することにより、上記暗号通信プロトコルにおける通信路の暗号化処理に用いられる各種情報(以下「暗号スイート」と称する場合がある)を取得してもよい。係る暗号スイートには、例えば、暗号アルゴリズム、暗号鍵の鍵長、暗号利用モード(後述)、通信データに対するメッセージ認証方式等を表す情報が含まれる。例えば、上記暗号通信プロトコルがSSLプロトコルである場合に、暗号通信検査部103bは、ClientHelloメッセージ及びServerHelloメッセージを解析することにより、通信路の暗号化に用いられる暗号アルゴリズム等を特定可能である。
なお、SSLプロトコルにおいて用いられるRecordプロトコル、handshakeプロトコル、及び、各種メッセージ等は、周知の技術であることから、詳細な説明は省略する。
暗号通信検査部103bは、上記したように、解析対象装置101と、他の情報通信装置107との間で暗号鍵を交換する処理手順の進行状況を確認する。これにより、暗号通信検査部103bは、当該暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定する。より具体的には、暗号通信検査部103bは、鍵データ取得ポリシ103cに設定された情報を用いて、暗号鍵を含む鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定する。
鍵データ取得ポリシ103cには、図4に例示するように、特定の暗号通信プロトコル(図4における401)の種別と、鍵データ取得基準(図4における402)とが含まれる。なお、暗号通信プロトコル401に対して、鍵データ取得基準402が関連付けられる。上記鍵データ取得基準402は、少なくとも上記鍵データが解析対象装置101のメモリ101bに存在するタイミングを判定可能な基準を表す情報である。
また、鍵データ取得ポリシ103cには、更に、暗号通信検査部103bが実行する処理の内容(図4における403)が、含まれてもよい。処理内容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には、特定の暗号通信プロトコル401において、解析対象装置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)とが含まれる。なお、暗号通信プロトコル501に対して、通信データ記録基準502が関連付けられる。通信データ記録基準502は、暗号通信プロトコル501を用いて送受信される通信データの保存(記録)の要否を判定可能な基準(情報)である。
また、通信データ記録ポリシ103eには、更に、通信データ記録部103dが実行する処理の内容(図5における503)が含まれてもよい。係る処理内容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」の場合を仮定する。
この場合、鍵候補抽出部104aは、上記暗号アルゴリズム701及び暗号パラメータ702に関連付けされた鍵候補判定基準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は、係る配置パターンに合致するデータを、鍵データ候補として抽出可能である。
鍵候補抽出部104aは、例えば、メモリ領域データの特定の位置(例えば先頭)から、順次特定のサイズ(例えば1バイト)ずつシフトしながら、特定のサイズのデータを抽出し、鍵候補判定基準704に基づいて、当該データが鍵候補に該当するか否かを判定してもよい。
暗号通信検査部103bが、ある暗号通信に関する通信データを解析した結果から、暗号スイートに関する情報を取得可能である場合を想定する。この場合、当該暗号通信に関する暗号アルゴリズム701及び暗号パラメータ702の情報は、通信データから判明する既知の情報として扱うことができる。また、解析対象装置101に関する実行環境情報703は、暗号解析部104に予め設定する等の方法により、既知の情報として扱うことができる。
なお、暗号アルゴリズム701及び暗号パラメータ702が不明である場合、鍵候補抽出部104aは、鍵候補判定情報104bに登録された全ての鍵候補判定基準704を用いて、それぞれの基準に適合する鍵データ候補を抽出してもよい。この場合、後述する暗号解読部104dが、暗号化された通信データを、上記抽出した鍵データ候補を用いて解読した結果に基づいて、当該通信データの暗号化に用いられる暗号鍵を含む鍵データ、暗号アルゴリズム、及び、暗号パラメータを特定することが可能である。
また、鍵候補抽出部104aは、鍵データ候補を抽出すると共に、特定の暗号通信プロトコルにおいて通信データを暗号化あるいは復号する処理に用いられるその他の必要な情報(以下、「暗号処理データ」と称する場合がある)を取得してもよい。
係る暗号処理データには、例えば、以下のようなデータが含まれてもよい。即ち、係る暗号処理データには、暗号アルゴリズムとしてブロック暗号が用いられる場合の初期化ベクタ(IV:Initialization Vector)が含まれてもよい。また、係る暗号処理データには、特定の暗号利用モードにおいて用いられる各種パラメータ(例えば、カウンタモードにおけるカウンタ、nonce(number used once:一度のみ使用される使い捨ての値)等)が含まれてもよい。また、係る暗号処理データには、暗号化された通信データに付与される認証情報等が含まれてもよい。なお、係る暗号処理データには、上記に限定されず、暗号アルゴリズムや暗号パラメータ等に応じて必要となる任意のデータが含まれてもよい。
鍵候補抽出部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からの指示(ステップS1210)に応じて、暗号解析部104は、暗号化された通信データの解読処理を開始する。
まず、鍵候補抽出部104aは、メモリダンプ保持部102aに登録(保存)されたメモリ領域データを参照する(ステップS1501)。この場合、鍵候補抽出部104aは、メモリダンプ保持部102aから、当該メモリ領域データを取得してもよい。
次に、鍵候補抽出部104aは、鍵候補判定情報104bに基づいて、ステップS1501において参照(取得)したメモリ領域データから暗号鍵の候補を抽出する(ステップS1502)。
上記説明したように、暗号通信検査部103bから、暗号アルゴリズムに関する情報が提供された場合、鍵候補抽出部104aは、当該暗号アルゴリズムに関連付けされた鍵候補判定基準704を用いて、メモリ領域データから鍵データ候補を抽出する。
暗号アルゴリズムが不明である場合には、鍵候補判定情報104bに登録された全ての暗号アルゴリズム701について、鍵候補判定基準704に基づいて鍵データ候補を抽出する。
また、この際、鍵候補抽出部104aは、鍵データ候補に関連付けされた暗号アルゴリズムに関する情報(例えば、暗号アルゴリズム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は、上記説明したステップ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の実施形態>
次に、暗号鍵(たとえば、各実施形態に示されている解析システム等によって取得される暗号鍵)を用いて、通信装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを判定可能なマルウェア判定装置について説明する。図19を参照しながら、本発明の第3の実施形態に係るマルウェア判定装置431が有する構成について説明する。図19は、本発明の第3の実施形態に係るマルウェア判定装置431が有する構成を示すブロック図である。
本発明の第3の実施形態に係るマルウェア判定装置431は、暗号化方式特定部432と、結果情報作成部433と、判定部434とを有する。
マルウェア判定装置431は、通信方式情報435(図21に例示)、及び、暗号情報436(図22に例示)を送受信することができる。
図21を参照しながら、通信方式情報435について説明する。図21は、通信方式情報435の一例を概念的に表す図である。
通信方式情報435は、通信方式と、該通信方式に従い通信する場合に用いられる符号を表す符号情報とが関連付けされた情報である。たとえば、図21に例示された符号情報においては、通信方式「https」と、符号情報「GET,POST,・・・」とが関連付けされている。これは、通信方式「https」に従い通信する場合に、符号情報「GET,POST,・・・」に含まれている「GET」、「POST」等の符号を用いて該該通信方式に従った通信処理を実現可能であることを表す。尚、通信方式情報435は、通信方式と、符号情報とを含んでいればよく、上述した例に限定されない。
次に、図22を参照しながら、暗号情報436について説明する。図22は、暗号情報436の一例を概念的に表す図である。
暗号情報436は、暗号化方式を一意に識別可能な名称と、該暗号化方式に従った処理手順(暗号化処理手順、復号処理手順)とが関連付けされた情報である。たとえば、図22に例示された暗号情報436においては、名称「AES」と、処理手順「処理手順1」とが関連付けされている。これは、名称「AES」が表す暗号化方式に従い処理を実行する場合に、処理手順「処理手順1」に従って暗号化処理(または、復号処理)を実行可能であることを表す。尚、暗号化方式情報は、暗号化方式を識別可能な名称と、該暗号化方式に従った処理手順とを含んでいればよく、上述した例に限定されない。
次に、図20を参照しながら、第3の実施形態に係るマルウェア判定装置431における処理について説明する。図20は、第3の実施形態に係るマルウェア判定装置431における処理の流れを示すフローチャートである。
マルウェア判定装置431は、たとえば、本発明の各実施形態に示した解析システムがメモリから取得する対象であるデータを入力する。各実施形態に示したように、解析システムは、たとえば、通信の際に用いられる暗号鍵に関する鍵データをメモリが格納していると判定した場合に、該メモリが格納しているデータを取得することができる。該データは、たとえば、暗号鍵を表す鍵データである。
暗号化方式特定部432は、通信方式(通信プロトコル)に従った通信接続を確立する場合に送受信される第1通信メッセージから、該通信方式において用いる暗号化方式を識別可能な暗号化方式情報を抽出する(ステップS431)。図13を参照しながら上述したように、たとえば、通信プロトコルがSSLプロトコルである場合に、暗号化方式に従った通信接続を確立する処理は、ハンドシェーク処理とも呼ばれる(図13における「Handshake:Client_Hello」乃至タイミング停止T2に至る処理)。ハンドシェーク処理にて送受信されたClientHelloメッセージ及びServerHelloメッセージ等の通信メッセージは、通信した際に用いられる暗号化処理に関する情報を表す暗号スイート(たとえば、図13における「ChangeCipherSpec」等)を含んでいる。暗号化方式特定部432は、たとえば、これらの通信メッセージから、該暗号スイートに含まれている暗号化方式を識別可能な暗号化方式情報(たとえば、暗号化方式の名称)を抽出する。
該ハンドシェーク処理の後に通信接続が確立され、確立された通信接続を介して、第2通信メッセージが装置間にて送受信される(図13に示された「T3」以降に示す処理)。
結果情報作成部433は、該通信接続を介して送受信される第2通信メッセージを読み取る。第2通信メッセージは、該通信接続を確立する際に送受信された暗号スイートに従い暗号化することができる。以降の説明においては、第2通信メッセージは、該暗号スイートに従い暗号化されているとする。
結果情報作成部433は、入力したデータ(すなわち、メモリに記憶されていたデータ、たとえば、鍵データ)を用いて、第2通信メッセージを復号する復号処理を実行する(ステップS432)。この処理によって、結果情報作成部433は、該復号処理の結果を表す結果情報を作成する。結果情報は、たとえば、入力したデータを用いて復号された第2通信メッセージである。
次に、判定部434は、図21に例示されているような通信方式情報435に基づき、該通信方式情報435に関連付けされた符号情報を特定する。判定部434は、特定した該符号情報を該結果情報が含んでいるか否かを判定する(ステップS433)。判定部434は、特定した該符号情報を該結果情報が含んでいると判定する場合に(ステップS433にてYES)、該第2通信メッセージを送信した装置(たとえば、図13に示すクライアント)がマルウェアである可能性が高いソフトウェアを含んでいないと判定する。これに対して、判定部434は、特定した該符号情報を該結果情報が含んでいないと判定する場合に(ステップS433にてNO)、該第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいないと判定する(ステップS435)。
たとえば、図21に例示された通信方式情報435の場合に、判定部434は、通信プロトコル「https」に関連付けされた符号情報「GET,POST」を特定する。該通信プロトコル「https」に従い送受信する通信メッセージは、符号情報「GET」、または、符号情報「POST」等を含んでいる。この例において、判定部434は、第2通信メッセージに符号情報「GET」、または、符号情報「POST」等が含まれているか否かを判定し、いずれの符号情報も第2通信メッセージに含まれていない場合に、第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいると判定する(ステップS434)。
図20に示された処理によって、マルウェアである可能性が高いソフトウェアを含んでいるか否かを判定することができる理由について説明する。ある通信方式に従って確立された通信接続において、該通信接続を介して送受信される第2通信メッセージは、ハンドシェーク処理にて決定された暗号化方式に従って暗号化されていることが多い。該第2通信メッセージを復号することによって作成される結果情報は、第2通信メッセージに関する符号情報(たとえば、命令)を含んでいる。該結果情報が該符号情報を含んでいない場合、該結果情報の基である第2通信メッセージは、該通信方式に従っていない通信メッセージである。本願発明者は、このような場合に、該第2通信メッセージを送受信する情報処理装置(たとえば、図13に示すクライアント)がマルウェアである可能性が高いソフトウェアを含んでいる可能性が高い規則性を見出した。言い換えれば、該マルウェア判定装置431は、該規則性に従い処理を実行するので、装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを判定することができる。
したがって、本実施形態に係るマルウェア判定装置431によれば、通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを、正確に判定することができる。
さらに、マルウェア判定装置431は、ソフトウェアを解析するツール、または、サンドボックス等を有していない。したがって、特許文献11、または、特許文献12に開示されているような技術を用いた場合に検知できないようなマルウェア(たとえば、サンドボックス、または、該ツールを検知することで処理が変わるマルウェア)に対しても、本実施形態に係るマルウェア判定装置431によれば検知することができる。
説明の便宜上、第3の実施形態において、マルウェア判定装置431は、通信メッセージ(第1通信メッセージ、または、第2通信メッセージ)を受信した場合に、図20に示されたような処理を実行するとした。しかし、マルウェア判定装置431は、図6に例示されているような通信データ保持部103fに格納されている通信データから通信メッセージ(たとえば、列「記録データ603」に示すデータ)を読み取ることによって、図20に示された処理を実行してもよい。以降に示す本発明の各実施形態においても同様に、記録データ603等に格納されている通信メッセージに対して処理が実行されてもよい。
<第4の実施形態>
次に、上述した第3の実施形態を基本とする本発明の第4の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第3の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図23を参照しながら、本発明の第4の実施形態に係るマルウェア判定装置441が有する構成について詳細に説明する。図23は、本発明の第4の実施形態に係るマルウェア判定装置441が有する構成を示すブロック図である。
本発明の第4の実施形態に係るマルウェア判定装置441は、暗号化方式特定部432と、結果情報作成部433と、判定部444とを有する。
マルウェア判定装置441は、通信方式情報435(図21に例示)、及び、暗号情報436(図22に例示)を送受信することができる。
次に、図24を参照しながら、第4の実施形態に係るマルウェア判定装置441における処理について説明する。図24は、第4の実施形態に係るマルウェア判定装置441における処理の流れを示すフローチャートである。
暗号化方式特定部432は、図20のステップS431に示した処理と同様の処理を実行することによって、暗号化方式を抽出する。結果情報作成部433は、図20のステップS432に示した処理と同様の処理を実行することによって、結果情報を作成する。
判定部444は、結果情報に含まれているデータがばらついている度合いを表すばらつき度合いを算出する(ステップS443)。ばらつき度合いは、たとえば、ある文字が結果情報に出現する頻度を算出し、算出した頻度の分散を算出することによって算出することができる。あるいは、ばらつき度合いは、ある文字が結果情報に出現する頻度を算出し、算出した頻度のエントロピーを算出することによって算出することができる。尚、ばらつき度合いは、上述した例に限定されない。
次に、判定部444は、算出したばらつき度合いが所定の基準を満たしているか否かを判定する(ステップS444)。判定部444は、たとえば、ばらつき度合いが、所定の閾値以上であるか否かを判定することによって、所定の基準を満たしているか否かを判定する。判定部444は、ばらつき度合いが所定の閾値よりも大きな値である(すなわち、ばらつき度合いが基準を満たす)場合に(ステップS444にてYES)、第2通信メッセージを送信した装置が、マルウェアである可能性が高いソフトウェアを含んでいると判定する(ステップS434)。判定部444は、ばらつき度合いが所定の閾値未満である(すなわち、ばらつき度合いが基準を満たさない)場合に(ステップS444にてNO)、第2通信メッセージを送信した装置が、マルウェアである可能性が高いソフトウェアを含んでいないと判定する(ステップS435)。
図24に示された処理によって、マルウェアである可能性が高いソフトウェアを含んでいるか否かを判定することができる理由について説明する。ある通信方式に従って確立された通信接続において、該通信接続を介して送受信される第2通信メッセージは、ハンドシェーク処理にて決定された暗号化方式に従って暗号化されていることが多い。該第2通信メッセージに対して復号処理することによって作成される結果情報は、図21に示したような符号情報が含まれていることが多い。この場合には、結果情報が特定の符号情報を含んでいるので、該結果情報のばらつき度合いが小さくなることが多い。しかし、本願発明者は、該結果情報に関するばらつき度合いが大きい場合には、たとえば、結果情報が暗号化されている(すなわち、2重に暗号化されている)可能性が高く、さらに、このときには、該結果情報の基である第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいる可能性が高い規則性を見出した。言い換えれば、該マルウェア判定装置441は、該規則性に従い処理を実行するので、装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを判定することができる。
したがって、本実施形態に係るマルウェア判定装置441によれば、通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを、正確に判定することができる。
<第5の実施形態>
次に、上述した第3の実施形態を基本とする本発明の第5の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第4の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図25を参照しながら、本発明の第5の実施形態に係るマルウェア判定装置451が有する構成について詳細に説明する。図25は、本発明の第5の実施形態に係るマルウェア判定装置451が有する構成を示すブロック図である。
本発明の第5の実施形態に係るマルウェア判定装置451は、暗号化方式特定部432と、結果情報作成部433と、判定部454とを有する。
マルウェア判定装置451は、通信方式情報435(図21に例示)、及び、暗号情報436(図22に例示)を送受信することができる。
次に、図26を参照しながら、第5の実施形態に係るマルウェア判定装置451における処理について説明する。図26は、第5の実施形態に係るマルウェア判定装置451における処理の流れを示すフローチャートである。
暗号化方式特定部432は、図20のステップS431に示した処理と同様の処理を実行することによって、暗号化方式を抽出する。結果情報作成部433は、図20のステップS431に示した処理と同様の処理を実行することによって、結果情報を作成する。
判定部454は、結果情報に含まれているデータがばらついている度合いを表すばらつき度合いを算出する(ステップS443)。判定部454は、算出したばらつき度合いが所定の基準を満たしているか否かを判定する(ステップS444)。判定部454は、ばらつき度合いが基準を満たしている場合に(ステップS444にてYES)、第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいると判定する(ステップS434)。判定部454は、ばらつき度合いが基準を満たしていない場合に(ステップS444にてNO)、図21に例示されているような通信方式情報435に基づき、該通信接続の通信方式に関連付けされた符号情報を特定する。
判定部454は、ステップS432にて算出した結果情報が該符号情報を含んでいるか否かを判定する(ステップS455)。ステップS455に関する具体的な処理は、図20におけるステップS433に関する処理と同様の処理であるので、ここでは詳細な説明を省略する。
判定部454は、該結果情報が該符号情報を含んでいると判定する場合に(ステップS455にてYES)、該第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいないと判定する(ステップS435)。これに対して、判定部454は、特定した該符号情報を該結果情報が含んでいないと判定する場合に(ステップS455にてNO)、該第2通信メッセージである可能性が高いソフトウェアを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいないと判定する(ステップS434)。
次に、第5の実施形態に係るマルウェア判定装置451に関する効果について説明する。
第5の実施形態に係るマルウェア判定装置451によれば、第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを、正確に判定することができる。この理由は、第5の実施形態に係るマルウェア判定装置451が、第4の実施形態に係るマルウェア判定装置441を含んでいるからである。
第5の実施形態に係るマルウェア判定装置451によれば、通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを、より一層、正確に判定することができる。この理由は、判定部454が、ばらつき度合いに関する判定結果、及び、符号情報に関する判定結果なる2つの判定結果に基づいて、第2通信メッセージを送信した装置がマルウェアである可能性が高いソフトウェアを含んでいるか否かを判定しているからである。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
以下の説明において、上記各実施形態において説明した解析システム(符号100、符号1700)をまとめて、単に「解析システム」と称する場合がある。また、当該解析システムの各構成要素(例えば、データ取得部(符号102、符号1702)、通信処理部(符号103、符号1703)、暗号解析部(符号104)をまとめて、単に「解析システムの構成要素」と称する場合がある。
上記したように、上記各実施形態において説明した解析システム、または、マルウェア判定装置は、単体の装置(例えば、物理的な情報処理装置や、仮想的な情報処理装置等)により実現されてもよい。また、上記各実施形態において説明した解析システム、または、マルウェア判定装置は、物理的あるいは論理的に離間した複数の装置(物理的な情報処理装置や、仮想的な情報処理装置)等を組み合わせることにより実現されてもよい。
より具体的には、上記各実施形態において説明した解析システム、または、マルウェア判定装置は、専用のハードウェア装置を用いて構成されてもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現されてもよい。
例えば、各構成要素をハードウェアにより実現する場合、各構成要素は、それぞれの機能を提供可能な集積回路をSoC(System−on−a−chip)等により実装されてもよい。この場合、例えば、各構成要素が保持するデータは、SoCとして統合されたRAM領域やフラッシュメモリ領域に記憶されてもよい。
また、この場合、各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。
また、上述した解析システム、あるいは、当解析システムの構成要素は、図18に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。
図18における演算装置1801は、汎用のCPUやマイクロプロセッサ等の演算処理装置である。演算装置1801は、例えば後述する不揮発性記憶装置1803に記憶された各種ソフトウェア・プログラムを記憶装置1802に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
記憶装置1802は、演算装置1801から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置1802は、揮発性のメモリ装置であってもよい。
不揮発性記憶装置1803は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置1803は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
ネットワークインタフェース1806は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。
例えば、上記各実施形態における解析システム、解析システムの構成要素、または、マルウェア判定装置は、解析対象装置101、情報通信装置1701、及び、通信ネットワーク(105、1705)と、当該ネットワークインタフェース1806を用いて、通信可能に接続されている。
なお、上記各実施形態における解析システムあるいは解析システムの構成要素(特に、通信処理部(103、1703))は、ネットワークインタフェース1806を複数備えてもよい。この場合、例えば、特定のネットワークインタフェース1806が解析対象装置101、あるいは情報通信装置1701と接続され、他のネットワークインタフェース1806が通信ネットワーク(105、1705)と接続されてもよい。
ドライブ装置1804は、例えば、後述する記録媒体1805に対するデータの読み込みや書き込みを処理する装置である。
記録媒体1805は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
入出力インタフェース1807は、外部装置との間の入出力を制御する装置である。例えば、解析システムのユーザあるいは管理者は、当該入出力インタフェースを介して接続された各種入出力装置(例えば、キーボード、マウス、ディスプレイ装置、プリンタ等)を用いて、解析システムに対して各種操作の指示等を入力してもよい。
上述した各実施形態を例に説明した本発明においては、例えば、図18に例示したハードウェア装置により解析システム又はその構成要素が構成されてもよい。そして、本発明においては、係るハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムが供給されてもよい。この場合、係る装置に対して供給したソフトウェア・プログラムを、演算装置1801が実行することによって、本願発明が実現されてもよい。
上述した各実施形態において、上記各図(例えば、図1、図17、図19、図23、図25等)に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。但し、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、図1、及び、図17に例示した各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールを不揮発性記憶装置1803に記憶しておき、演算装置1801がそれぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置1802に読み出すよう構成してもよい。
また、これらのソフトウェアモジュール間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェアモジュール間は、相互に通信可能に接続可能である。
更に、上記各ソフトウェア・プログラムは記録媒体1805に記録されてもよい。この場合、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置1804を通じて当該ソフトウェア・プログラムが不揮発性記憶装置1803に格納されるよう構成されてもよい。
また、上記解析システムの構成要素をソフトウェア・プログラムとして実現する場合、上記各実施形態において説明した、以下の各構成要素に関する各種データは、適切なファイルシステムや、データベース等を用いて、不揮発性記憶装置1803に記憶されてもよい。係る構成要素には、メモリダンプ保持部102a、鍵データ取得ポリシ103c、通信データ記録ポリシ103e、通信データ保持部103f、鍵候補判定情報104b、鍵候補保持部104c、解析結果判定情報104e、解析結果保持部104f等が含まれる。
なお、上記の場合において、上記解析システムへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。
また、上述した解析システム、当解析システム、または、マルウェア判定装置の構成要素は、図18に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図18に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図18に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかし、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。また、係る実施形態の組み合わせも、本発明の技術的範囲に含まれる。そしてこのことは、請求の範囲に記載した事項から明らかである。
本発明は、例えば、情報通信装置の開発及び運用段階における通信処理の解析や、情報通信装置において実行される各種プログラムの通信処理の解析等に適用可能である。より具体的には、本発明は、例えば、情報通信装置において各種プログラムが実行する不正な通信処理を検査し、通信処理の内容に応じて適切な処理を実行する、検査システム等に適用可能である。