次に、本発明を実施する形態について図面を参照して詳細に説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
なお、各実施形態において説明する解析システムは、当該システムの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が提供する仮想記憶においてページアウトされたメモリ領域データを取得する方法が採用されてもよい。
上記に限らず、例えば、メモリ部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の構成)
まず、本実施形態におけるメモリ取得部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プロトコルにおいて用いられる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が送信された後)、かつ、(Application Dataの送受信が開始する前)」というタイミングに関する情報が設定される。暗号通信検査部103bは、通信データを解析した結果、上記鍵データ取得基準402を満たすと判定した場合には、処理内容403に登録された処理を実行する。
鍵データ取得基準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±σ」の範囲に全体の約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によれば、当該暗号鍵を含む可能性が高いメモリ領域データを取得することが可能である。
また、本実施形態における解析システム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の実施形態>
次に、上述した第1の実施形態に係る解析システムを基本とする、本発明の第2の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成についての重複する説明は省略する。
図17に例示するように、本実施形態における解析システム1700は、通信データ改変部1701を有する点において、上記第1の実施形態における解析システム100と相違する。以下においては、係る相違点を中心に説明する。
まず、本実施形態における解析システム1700の概要について説明する。
解析システム1700は、通信データ改変部1701を除いて、上記第1の実施形態における解析システム100と同様の構成を有する。このため、解析システム1700は、第1の実施形態における解析システム100と同様、解析対象装置101と、通信ネットワーク105(具体的には、通信ネットワーク105を介して接続された他の情報通信装置107)との間の暗号通信を解析可能である。また、解析システム1700(特には、通信処理部103)は、当該暗号通信を解析した結果に基づいて、特定の処理を実行可能である(図11に例示するステップS1107)。
ここで、通信処理部103が当該暗号通信を解析した結果、解析対象装置101あるいは通信ネットワーク105に対して望ましくない事象が生じる危険性があると判定した場合を想定する。この場合、通信処理部103は、係る危険性を低減可能な、適切な処理を実行可能であることが望ましい。
これに対して、例えば、解析対象装置101と、通信ネットワーク105との間の暗号通信を遮断することにより、通信処理部103は、係る危険性を低減可能である。しかしながら、当該暗号通信が解析対象装置101において活動するマルウェアにより実行されている場合、当該暗号通信が遮断されることにより、当該マルウェアは、自身の攻撃が失敗したことを認識することが可能である。この場合、当該マルウェアは、マルウェアの本来の活動とは異なる別の行動(例えば、攻撃手段の選択、あるいは、消滅や活動停止等)を選択する可能性がある。例えば、マルウェアが活動を休止した場合、係るマルウェアの挙動を解析することが困難となる。
本実施形態における通信処理部103は、解析対象装置101と、通信ネットワーク105との間の暗号通信を遮断することなく、当該暗号通信による危険性を低減する。すなわち、本実施形態における通信処理部103は、通信データ改変部1701を用いて、解析対象装置101と、通信ネットワーク105との間で送受信される(暗号化された)通信データを改変することにより、当該暗号通信による危険性を低減する。
(通信データ改変部1701の構成)
以下、通信データ改変部1701の構成について説明する。
通信データ改変部1701は、通信処理部103、及び、暗号解析部104と、それぞれ通信可能に接続されている。通信データ改変部1701は、通信データ改変ポリシ1701aを有する。
通信データ改変部1701は、暗号解析部104により解読された通信データを解析する。係る解析の結果、当該通信データの改変が必要であると判定した場合には、通信データ改変部1701は、当該特定の通信データにおいて改変を要する箇所の内容を改変する。
より具体的には、通信データ改変部1701は、解析対象装置101と、通信ネットワーク105との間で暗号化された通信データを送受信する通信処理の種別を特定する。係る通信処理の種別(以下、「通信処理種別」と称する場合がある)は、特定の通信データを送受信する通信処理を、その目的に従って分類可能な情報であってもよい。
通信データ改変部1701は、例えば、特定した通信処理種別に基づいて、特定の通信データに対する改変が必要か否かを判定する。そして、通信データ改変部1701は、特定の通信データに対する改変が必要であると判定した場合には、当該特定の通信データにおいて改変を要する箇所の内容を改変する。
本実施形態において、通信データ改変部1701は、通信データ改変ポリシ1701aに基づいて、特定の通信データ対する通信処理種別を特定し、当該特定の通信データにおいて改変を要する箇所の内容を改変する。
通信データ改変ポリシ1701aは、図18に例示するように、通信処理種別1801と、判定基準1804と、改変情報1805と、を含む。通信処理種別1801に対して、判定基準1804と、改変情報1805とが関連付けられる。また、通信データ改変ポリシ1701aは、通信処理種別1801ごとに、通信元(通信データの送信元)1802と、通信先(通信データの送信先)1803とを更に含んでもよい。
通信処理種別1801には、上記したように、特定の通信データを送受信する通信処理を分類する情報が設定される。
判定基準1804には、特定の通信データを解析した結果に基づいて、当該通信データを送受信する通信処理が、通信処理種別1801に該当するか否かを判定可能な情報が設定される。
改変情報1805には、特定の通信データにおいて改変が必要な箇所を特定するとともに、当該部分の内容を変更可能な情報が設定される。
なお、通信処理種別1801、判定基準1804、及び、改変情報1805に設定される各情報は機械解釈が可能な任意の形式に基づいて表現される。
通信データ改変部1701の処理について、図18に示す具体例を用いて説明する。通信データ改変部1701は、特定の通信データを解析した結果、判定基準1804を満たすと判定した場合、当該通信データに関する通信処理種別1801を、「マルウェアXによる認証処理」であると判定する。図18に示す具体例においては、通信データ改変部1701は、例えば、当該通信データの送信先アドレスが”aaa.bbb.ccc.ddd”であり、当該通信データの先頭Nバイト(N:自然数)に文字列”GET /login.cgi”が含まれる場合、判定基準1804を満たすと判定する。
そして、通信データ改変部1701は、当該特定の通信データを改変情報1805に基づいて改変する。この場合、通信データ改変部1701は、通信データに含まれるユーザID部分を無害な文字列(例えば、”AAAA”)に改変する。また、通信データ改変部1701は、通信データに含まれる認証情報部分を無害な文字列(例えば、”BBBB”)に変更する。
なお、上記説明した具体例における判定基準1804には、通信データに含まれる値に基づいて、当該通信データを送受信する通信処理に関する通信処理種別1801を判定可能な情報が設定される。本実施形態はこれには限定されず、判定基準1804には、通信データの属性(例えば、データのサイズやデータフォーマット等)等の任意の情報に基づいて、通信処理種別1801を判定可能な情報が設定されてよい。
以上のように、通信データ改変部1701は、通信データ改変ポリシ1701aに基づいて通信データを改変することにより、暗号通信を遮断することなく、当該暗号通信による危険性を低減可能である。
(解析システム1700の動作)
以下、上記のように構成された解析システム1700の動作について、図19乃至図20に例示するフローチャートを参照して説明する。
まず、図19に例示するフローチャートに従って、解析システム1700の各構成要素(特には、通信処理部103及び、通信データ改変部1701)の動作について説明する。なお、図19に例示するステップS1201乃至ステップS1209Bは、上記図12A,図12Bに例示したフローチャートと同様としてよいので、説明を省略する。
図19に例示するステップS1209Bにおいて、暗号解読部104dから通信データの解読処理の完了を通知(上記図16におけるステップS1608)された際、暗号通信検査部103bは、通信データ改変部1701に対して、通信データの改変を指示する。そして、通信データ改変部1701が、必要に応じて、通信データを改変する(ステップS1901)。
以下、ステップS1901における処理の具体的な内容について、図20に例示するフローチャートを参照して説明する。
まず、暗号通信検査部103bは、通信データ改変部1701に対して、通信データの改変を指示する(ステップS2001)。
係る指示を受け付けた通信データ改変部1701は、解析結果保持部104fに保存(登録)された解読済み通信データを参照する(ステップS2002)。この際、通信データ改変部1701は、当該解読済み通信データを取得してもよい。
次に、通信データ改変部1701は、通信データ改変ポリシ1701aに基づいて、上記参照(取得)した解読済み通信データを送受信する通信処理に対する、通信処理種別1801を特定する(ステップS2003)。
より具体的には、通信データ改変部1701は、上記ステップS2002において取得した解読済み通信データが、特定の判定基準1804を満たすか否かを判定する。通信データ改変部1701は、通信データ改変ポリシ1701aに登録された全ての判定基準1804に対して上記判定を行ってもよい。
通信データ改変部1701は、上記解読済み通信データが特定の判定基準1804を満たす場合、当該特定の判定基準1804が関連付けされた通信処理種別1801を、上記解読済み通信データを送受信する通信処理に対する通信処理種別として特定する。
ステップS2003における処理の結果、通信処理種別1801が特定された場合(ステップS2004においてYES)、通信データ改変部1701は、通信データ改変ポリシ1701aに基づいて上記解読済み通信データを改変する。
より具体的には、通信データ改変部1701は、改変情報1805に基づいて、上記解読済み通信データにおいて改変を要する箇所を特定し、当該改変箇所のデータを編集する。この場合、通信データ改変部1701は、例えば、当該改変箇所のデータを他のデータを用いて置換してもよく、あるいは、削除してもよい。
次に、通信データ改変部1701は、上記ステップS2005において改変した解読済み通信データを、再度暗号化する(ステップS2006)。より具体的には、通信データ改変部1701は、解析結果保持部104fを参照し、正しい鍵データ1002を用いて、解読済み通信データを暗号化する。この際、通信データ改変部1701は、上記正しい鍵データと共に、解析結果保持部104fに登録されている暗号処理データを用いて、解読済み通信データを暗号化してもよい。
次に、通信データ改変部1701は、通信データの改変処理が完了したことを、暗号通信検査部103bに通知する(ステップS2007)。
なお、ステップS2004においてNOの場合(通信処理種別が特定されない場合)、通信データ改変部1701は、ステップS2007において、通信データが改変されなかったことを、暗号通信検査部103bに通知してもよい。
再び図19を参照して、暗号通信検査部103bは、ステップS1901における処理が完了した後、ステップS1204において一時停止した通信処理を再開する。そして、暗号通信検査部103bは、改変された通信データを、解析対象装置101、又は、通信ネットワーク105に宛てて送信する(ステップS1902)。
より具体的には、暗号通信検査部103bは、通信制御部103aに対して、解析対象装置101と、通信ネットワーク105との間の通信を再開するよう指示する。そして、暗号通信検査部103bは、通信制御部103aに対して、通信データ改変部により改変された(再暗号化済の)通信データを、解析対象装置101、又は、通信ネットワーク105に対して送信するよう指示する。
以上のような動作により、本実施形態における解析システム1700は、解析対象装置101と、通信ネットワーク105との間で送受信される(暗号化された)通信データを改変することにより、当該暗号通信による危険性を低減可能である。
なお、上記説明したフローチャートにおいては、通信データ改変部1701が、改変された通信データを暗号化しているが、本実施形態はこれには限定されない。例えば、暗号通信検査部103bが、通信データ改変部1701により改変された解読済み通信データを再度暗号化してもよい。
上記のように構成された本実施形態における解析システム1700においては、上記第1の実施形態における解析システムと同様、暗号解析部104が、解析対象装置101と、通信ネットワーク105との間で送受信される暗号化された通信データを解読する。これにより、通信処理部103は、解析対象装置101と、通信ネットワーク105との間で送受信される通信データの内容を解析可能である。
更に、上記のように構成された本実施形態における解析システム1700においては、通信処理部103の指示により、通信データ改変部1701が、通信データ改変ポリシ1701aに基づいて、(必要に応じて)通信データを改変する。そして、通信データ改変部1701は、当該改変したデータを再暗号化する。通信処理部103は、当該改変された通信データを、解析対象装置101、又は、通信ネットワーク105に宛てて送信する。これにより、通信処理部103は、解析対象装置101と、通信ネットワーク105との間で送受信される通信データの内容を改変可能である。
以上より、本実施形態における解析システム1700は、解析対象装置101と、通信ネットワーク105との間の暗号通信を遮断することなく、当該暗号通信による危険性を低減可能である。すなわち、本実施形態における通信処理部103は、通信データ改変部1701を用いて、解析対象装置101と、通信ネットワーク105との間で送受信される(暗号化された)通信データを改変することにより、当該暗号通信による危険性を低減可能である。
具体的には、本実施形態における解析システム1700は、例えば、解析対象装置101において実行されるマルウェア等の任意のソフトウェア・プログラムによる暗号通信を遮断することなく、その通信内容を解析することが可能である。また、本実施形態における解析システム1700は、その解析結果に基づいて通信データを改変することが可能である。
特に、本実施形態における解析システム1700は、解析対象装置101におけるソフトウェア・プログラムや、解析対象装置101自体に対して非侵襲的な手法により、暗号通信の内容を解析(検査)可能であり、当該解析結果に基づいて、当該暗号通信の内容を改変可能である。
<第3の実施形態>
次に、本発明における第3の実施形態について、図21を参照して説明する。図21は、本実施形態における解析システム2100の機能的な構成を例示するブロック図である。
本実施形態における解析システム2100は、情報通信装置2101と、通信ネットワーク2105との間で実行される暗号通信を解析する。そして、本実施形態における解析システム2100は、当該解析結果に基づいて、特定の処理を実行する。
情報通信装置2101は、少なくとも演算部2101a及びメモリ部2101bを有し、通信ネットワーク2105に対して通信可能に接続された、コンピュータ等の任意の情報通信装置である。
係る情報通信装置2101は、例えば、物理的なハードウェアにより構成されたコンピュータ等の情報通信装置であってもよい。また、情報通信装置2101は、情報処理装置等の各種ハードウェアを仮想化可能な所定の仮想化基盤において提供される、仮想的なコンピュータ(VM)であってもよい。
情報通信装置2101における演算部2101aは、上記各実施形態における演算部101aと同様、メモリ部2101bに記憶された各種データ及びプログラムを読み出して、当該プログラムに実装された各種演算処理を実行するCPUや、MPU等の演算装置である。
情報通信装置2101におけるメモリ部2101bは、上記各実施形態におけるメモリ部101bと同様、情報通信装置2101におけるメインメモリとして機能し、演算部2101aにおいて処理される各種プログラム及びデータ等を保持する。また、メモリ部2101bに保持(記憶)されたデータは、外部から取得(ダンプ)可能である。
このような情報通信装置2101は、上記説明した各実施形態における解析対象装置101と同様としてよい。
通信ネットワーク2105は、有線、無線、又はこれらの任意の組合せにより構成され、任意の通信プロトコルを用いて通信路を確立可能な通信ネットワークである。また、通信ネットワーク2105は、例えば、上記各実施形態において説明した各種暗号通信プロトコルにより暗号化された通信路を、情報通信装置2101に対して提供可能である。係る通信ネットワーク2105は、上記各実施形態における通信ネットワーク105と同様としてよいので、詳細な説明は省略する。
次に、解析システム2100の構成について説明する。
本実施形態における解析システム2100は、メモリ取得部2102と、通信処理部2103と、暗号解析部2104とを備える。
なお、解析システム2100の各構成要素は、それぞれ物理的なコンピュータ等の情報処理装置を用いて実現されてもよく、あるいは、仮想化基盤において提供されるVMを用いて実現されてもよい。また、解析システム2100の各構成要素の間は、無線、有線、あるいはそれらを組み合わせた任意の通信回線により、通信可能に接続されている。係る通信回線は、周知の技術を採用してよいので、詳細な説明は省略する。以下、解析システム2100の各構成要素について説明する。
メモリ取得部2102は、上記情報通信装置2101から、メモリ部2101bに保持されたデータの少なくとも一部を取得する。メモリ部2101bに保持(記憶)されたデータを取得する具体的な方法は、情報通信装置2101の具体的な構成に応じて適宜選択可能である。係るメモリ取得部2102は、例えば、上記各実施形態におけるメモリ取得部102と同様としてもよい。
通信処理部2103は、情報通信装置2101と、通信ネットワーク2105との間で特定の暗号通信プロトコルに従って送受信される通信データに基づいて、以下の処理を実行する。即ち、通信処理部2103は、上記通信データに基づいて、上記暗号通信プロトコルにおける暗号処理に用いられる暗号鍵を含む鍵データが、メモリ部2101bに保持されているか否かを判定する。通信処理部2103は、上記鍵データが、メモリ部2101bに保持されていると判定した場合、メモリ取得部2102に対して、メモリ部2101bに保持されたデータの取得を指示する。係る通信処理部2103は、例えば、上記各実施形態における通信処理部103と同様としてもよい。
通信処理部2103は、例えば、上記通信データを解析することにより、特定の暗号通信プロトコルにおいて上記暗号鍵に関する特定の条件が成立したタイミング(例えば、暗号鍵の交換が成立したタイミング等)を判定してもよい。そして、通信処理部2103は、当該タイミングにおいて、メモリ取得部2102に対して、メモリ部2101bに保持されたデータの取得を指示してもよい。
暗号解析部2104は、上記鍵データの特徴に基づいて、上記メモリ取得部2102が取得したメモリ部2101bに保持されたデータから、鍵データの候補である1以上の鍵データ候補を抽出する。暗号解析部2104は、情報通信装置2101と通信ネットワーク2105との間で送受信される暗号化された通信データを、当該抽出した鍵データ候補を用いて解読する。そして、暗号解析部2104は、当該解読した結果に基づいて、1以上の鍵データ候補の中から、暗号化された通信データを正しく解読可能な正しい鍵データを抽出する。係る暗号解析部2104は、例えば、上記各実施形態における暗号解析部104と同様としてもよい。
具体的には、暗号解析部2104は、例えば、特定の基準に基づいて、特定の鍵データ候補により、上記通信データを正しく解読できたと判定した場合、当該特定の鍵データを正しい鍵データとしてもよい。
上記のように構成された解析システム2100において、通信処理部2103は、暗号解析部2104により解読された通信データに基づいて、所定の処理を実行する。通信処理部2103は、例えば、当該解読された通信データを解析し、その内容の一部を改変してもよい。
以上のように構成された解析システム2100(特にはメモリ取得部2102)は、情報通信装置2101と、通信ネットワーク2105との間の通信路を暗号化する暗号鍵を含むメモリ領域データを、情報通信装置2101のメモリ部2101bから取得可能である。なぜならば、通信処理部2103が、当該暗号鍵を含む鍵データがメモリ部2101bに保持されていると判定した場合に、メモリ取得部2102に対してメモリ部2101bに保持されたデータの取得を指示するからである。
また、本実施形態における解析システム2100(特には、暗号解析部2104)は、メモリ領域データの中から、効率よく正しい鍵データを抽出可能である。なぜならば、暗号解析部2104が、鍵データの特徴に基づいて鍵データ候補を抽出可能であるからである。また、解析システム2100(特には、暗号解析部2104)は、当該抽出した鍵データ候補を用いて、通信データを解読した結果に基づいて、正しい鍵データを抽出可能であるからである。
また、本実施形態における解析システム2100においては、暗号解析部2104が、暗号化された通信データを、上記抽出した正しい鍵データを用いて解読することができる。これにより、通信処理部2103は、情報通信装置2101と、通信ネットワーク2105との間で送受信される通信データの内容を解析可能である。
以上より、本実施形態における解析システム2100は、情報通信装置2101と、通信ネットワーク2105との間で送受信される暗号化された通信データの少なくとも一部を解析可能である。また、これにより、本実施形態における解析システム2100によれば、当該解析の結果に応じて、特定の処理を実行することが可能である
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
以下の説明において、上記各実施形態において説明した解析システム(符号100、符号1700、符号2100)をまとめて、単に「解析システム」と称する場合がある。また、当該解析システムの各構成要素(例えば、メモリ取得部(符号102、符号2102)、通信処理部(符号103、符号2103)、暗号解析部(符号104、符号2104)、通信データ改変部(符号1701)等)をまとめて、単に「解析システムの構成要素」と称する場合がある。
上記したように、上記各実施形態において説明した解析システムは、単体の装置(例えば、物理的な情報処理装置や、仮想的な情報処理装置等)により実現されてもよい。また、上記各実施形態において説明した解析システムは、物理的あるいは論理的に離間した複数の装置(物理的な情報処理装置や、仮想的な情報処理装置)等を組み合わせることにより実現されてもよい。
より具体的には、上記各実施形態において説明した解析システムは、専用のハードウェア装置を用いて構成されてもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現されてもよい。
例えば、各構成要素をハードウェアにより実現する場合、各構成要素は、それぞれの機能を提供可能な集積回路をSoC(System−on−a−chip)等により実装されてもよい。この場合、例えば、各構成要素が保持するデータは、SoCとして統合されたRAM領域やフラッシュメモリ領域に記憶されてもよい。
また、この場合、各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。
また、上述した解析システム、あるいは、当解析システムの構成要素は、図22に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。
図22における演算装置2201は、汎用のCPU(Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置2201は、例えば後述する不揮発性記憶装置2203に記憶された各種ソフトウェア・プログラムを記憶装置2202に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
記憶装置2202は、演算装置2201から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置2202は、揮発性のメモリ装置であってもよい。
不揮発性記憶装置2203は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置2203は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
ネットワークインタフェース2206は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。
例えば、上記各実施形態における解析システムあるいは解析システムの構成要素は、解析対象装置101、情報通信装置2101、及び、通信ネットワーク(105、2105)と、当該ネットワークインタフェース2206を用いて、通信可能に接続されている。
なお、上記各実施形態における解析システムあるいは解析システムの構成要素(特に、通信処理部(103、2103))は、ネットワークインタフェース2206を複数備えてもよい。この場合、例えば、特定のネットワークインタフェース2206が解析対象装置101、あるいは、情報通信装置2101と接続され、他のネットワークインタフェース2206が通信ネットワーク(105、2105)と接続されてもよい。
ドライブ装置2204は、例えば、後述する記憶媒体2205に対するデータの読み込みや書き込みを処理する装置である。
記憶媒体2205は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
入出力インタフェース2207は、外部装置との間の入出力を制御する装置である。例えば、解析システムのユーザあるいは管理者は、当該入出力インタフェースを介して接続された各種入出力装置(例えば、キーボード、マウス、ディスプレイ装置、プリンタ等)を用いて、解析システムに対して各種操作の指示等を入力してもよい。
上述した各実施形態を例に説明した本発明においては、例えば、図22に例示したハードウェア装置により解析システム又はその構成要素が構成されてもよい。そして、本発明においては、係るハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムが供給されてもよい。この場合、係る装置に対して供給したソフトウェア・プログラムを、演算装置2201が実行することによって、本願発明が実現されてもよい。
上述した各実施形態において、上記各図(例えば、図1、図17、図21等)に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。但し、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、図1、図17、及び、図21に例示した各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールを不揮発性記憶装置2203に記憶しておき、演算装置2201がそれぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置2202に読み出すよう構成してもよい。
また、これらのソフトウェアモジュール間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェアモジュール間は、相互に通信可能に接続可能である。
更に、上記各ソフトウェア・プログラムは記憶媒体2205に記録されてもよい。この場合、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置2204を通じて当該ソフトウェア・プログラムが不揮発性記憶装置2203に格納されるよう構成されてもよい。
また、上記解析システムの構成要素をソフトウェア・プログラムとして実現する場合、上記各実施形態において説明した、以下の各構成要素に関する各種データは、適切なファイルシステムや、データベース等を用いて、不揮発性記憶装置2203に記憶されてもよい。係る構成要素には、メモリダンプ保持部102a、鍵データ取得ポリシ103c、通信データ記録ポリシ103e、通信データ保持部103f、鍵候補判定情報104b、鍵候補保持部104c、解析結果判定情報104e、解析結果保持部104f等が含まれる。
なお、上記の場合において、上記解析システムへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
また、上述した解析システム、あるいは、当解析システムの構成要素は、図22に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図22に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図22に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。また、係る実施形態の組み合わせも、本発明の技術的範囲に含まれる。そしてこのことは、請求の範囲に記載した事項から明らかである。
本発明は、例えば、情報通信装置の開発及び運用段階における通信処理の解析や、情報通信装置において実行される各種プログラムの通信処理の解析等に適用可能である。より具体的には、本発明は、例えば、情報通信装置において各種プログラムが実行する不正な通信処理を検査し、通信処理の内容に応じて適切な処理を実行する、検査システム等に適用可能である。
この出願は、2014年9月25日に出願された日本出願特願2014−195178を基礎とする優先権を主張し、その開示の全てをここに取り込む。