(57)【要約】  鍵生成源特定装置（１０）は、マルウェアに暗号処理を実行させ、暗号処理の実行状況を表す実行トレースを取得し、実行トレースに基づいて、暗号処理で用いられた暗号鍵を解析鍵として特定する鍵特定部（１１）と、実行トレースから、解析鍵が依存する命令のリストを命令リストとして抽出する抽出部（３１）とを備える。また、鍵生成源特定装置（１０）は、命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定し、動的取得関数である場合に、命令リストを、暗号処理において解析鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する取得部（３２）を備える。
2017216924.tif 000002
【特許請求の範囲】
【請求項１】
マルウェアに暗号処理を実行させ、前記暗号処理の実行状況を表す実行トレースを取得し、前記実行トレースに基づいて、前記暗号処理で用いられた暗号鍵を解析鍵として特定する鍵特定部と、
前記実行トレースから、前記解析鍵が依存する命令のリストを命令リストとして抽出する抽出部と、
前記命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定し、前記呼出命令により呼び出された関数が前記動的取得関数である場合に、前記命令リストを、前記暗号処理において前記解析鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する取得部と
を備えた鍵生成源特定装置。
【請求項２】
前記鍵生成源特定装置は、
前記動的取得関数を格納した関数データベースを備え、
前記取得部は、
前記呼出命令により呼び出された関数が前記関数データベースに含まれるか否かを判定し、前記呼出命令により呼び出された関数が前記関数データベースに含まれる場合に、前記命令リストを前記鍵生成源の候補として取得する請求項１に記載の鍵生成源特定装置。
【請求項３】
前記鍵生成源特定装置は、
プログラムのテンプレートを格納するプログラムデータベースと、
前記鍵生成源の候補と前記テンプレートとの類似度を算出し、前記類似度に基づいて、前記鍵生成源の候補が前記テンプレートに類似するか否かを判定し、前記鍵生成源の候補が前記テンプレートに類似する場合に前記鍵生成源の候補を前記鍵生成源として決定する決定部と
を備えた請求項１または２に記載の鍵生成源特定装置。
【請求項４】
前記取得部は、
前記鍵生成源の候補を前記鍵生成源として決定する請求項１または２に記載の鍵生成源特定装置。
【請求項５】
前記動的取得関数は、前記暗号処理の実行環境に応じて動的に変化する情報を前記動的情報として取得する請求項１から４のいずれか１項に記載の鍵生成源特定装置。
【請求項６】
前記鍵生成源特定装置は、
前記鍵生成源に基づいて、前記実行環境において実行される前記暗号処理で用いられる暗号鍵を生成する鍵生成プログラムを生成するプログラム生成部を備えた請求項５に記載の鍵生成源特定装置。
【請求項７】
前記鍵生成源特定装置は、
前記鍵生成源と前記動的取得関数が呼び出す前記動的情報と前記実行環境とに基づいて、前記暗号処理が実行された際の暗号鍵を被害鍵として取得する被害鍵取得部を備えた請求項５または６に記載の鍵生成源特定装置。
【請求項８】
鍵特定部が、マルウェアに暗号処理を実行させ、前記暗号処理の実行状況を表す実行トレースを取得し、前記実行トレースに基づいて、前記暗号処理で用いられた暗号鍵を解析鍵として特定し、
抽出部が、前記実行トレースから、前記解析鍵が依存する命令のリストを命令リストとして抽出し、
取得部が、前記命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定し、前記呼出命令により呼び出された関数が前記動的取得関数である場合に、前記命令リストを、前記暗号処理において前記解析鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する鍵生成源特定方法。
【請求項９】
マルウェアに暗号処理を実行させ、前記暗号処理の実行状況を表す実行トレースを取得し、前記実行トレースに基づいて、前記暗号処理で用いられた暗号鍵を解析鍵として特定する鍵特定処理と、
前記実行トレースから、前記解析鍵が依存する命令のリストを命令リストとして抽出する抽出処理と、
前記命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定し、前記呼出命令により呼び出された関数が前記動的取得関数である場合に、前記命令リストを、前記暗号処理において前記解析鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する取得処理と
をコンピュータに実行させる鍵生成源特定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラムに関する。
【背景技術】
【０００２】
近年、機密情報の窃取を目的とする、企業や官公庁に対して行われる標的型攻撃が多発し、セキュリティ上の重大な脅威となっている。一般的な標的型攻撃は、巧妙に文面を細工したメールを攻撃対象に送信するところから開始される。このメールにはマルウェアを含んだ文書ファイルが添付されており、メール受信者が端末において同文書を開いた瞬間、その端末はマルウェアに感染してしまう。攻撃者はこのマルウェアをインターネット上の指令サーバ（Ｃ＆Ｃサーバ：Ｃｏｍｍａｎｄ  ａｎｄ  Ｃｏｎｔｒｏｌサーバ）から制御し、標的組織内部のネットワークから機密情報を探索し、Ｃ＆Ｃサーバへアップロードすることで目的を達成する。このような機密情報の漏洩被害の深刻化を背景に、マルウェアに感染したパソコンやサーバ等が生成したログを解析することで、マルウェアの感染端末内での挙動を明らかにするネットワークフォレンジック技術が注目されている。【０００３】
しかし昨今のマルウェアの中には、通信データを共通鍵暗号により暗号化することで、通信データを秘匿するものがある。このようなマルウェアの通信データは、暗号化された状態で記録されるため、そのままでは解析することができない。そのため、マルウェア解析者は、マルウェアが通信データの暗号化で用いている暗号アルゴリズムと、暗号化に用いる暗号鍵とを特定して、暗号化された通信を復号する作業が必要となる。この作業はマルウェアのリバースエンジニアリングが必要となるため、一般に膨大な手間と時間が必要となる。そこで、自動的にマルウェアの暗号アルゴリズムの特定を行う手法や、暗号鍵を特定する手法が研究されている。【０００４】
特許文献１には、暗号化関数を内部に持ち、情報を暗号化してアップロードするマルウェアの暗号鍵を特定するために、マルウェアの実行する命令の実行トレースを記録し、演算のデータを含めて解析することによって鍵を特定する技術が開示されている。
非特許文献１には、既知暗号アルゴリズムのテンプレートを用意し、そのテンプレートと、評価対象のアルゴリズムに同一の入力を与えた際に、出力が同一であればテンプレートのアルゴリズムと同一であると判断する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１１４６３７号公報
【非特許文献】
【０００６】
【非特許文献１】Ｊｏａｎ  Ｃａｌｖｅｔ，  Ｊｏｓｅ  Ｍ．  Ｆｅｒｎａｎｄｅｚ，  Ｊｅａｎ−Ｙｖｅｓ  Ｍａｒｉｏｎ，  Ａｌｉｇｏｔ：  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｆｕｎｃｔｉｏｎ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｉｎ  Ｏｂｆｕｓｃａｔｅｄ  Ｂｉｎａｒｙ  Ｐｒｏｇｒａｍｓ，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９ｔｈ  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｅｃｕｒｉｔｙ，  ＣＣＳ  ２０１２．
【非特許文献２】川古谷裕平，塩治榮太朗，岩村誠，針生剛男，テイント伝搬に基づく解析対象コードの追跡方法，コンピュータセキュリティシンポジウム２０１２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の技術では、マルウェアが利用している暗号アルゴリズムが特定できても、動的に鍵を生成するマルウェアにおいては、復号対象の通信ログに対応する鍵を特定する事ができないという課題があった。ここで動的な鍵生成とは、暗号に利用する鍵がマルウェアにハードコードされずに、マルウェアが活動する環境内の情報等を元に作成し、利用することと定義する。
動的に鍵を生成するマルウェアは、例えば、感染端末上のＩＰアドレスを、暗号鍵を生成するシードとして用いて、暗号に利用する鍵を生成し、盗み出す機密ファイルの暗号化を行う。この場合、異なる端末では異なる鍵が生成され、暗号に利用される。そのため、被害が発生した端末の鍵（以降、被害鍵と呼ぶ）と、マルウェア解析環境での鍵（以降、解析鍵と呼ぶ）とが異なる。ここで、漏えい情報は被害環境で発生しているため、被害鍵により暗号化されている。そのため、解析環境で手に入る解析鍵では、暗号化された通信ログを復号することができない。
このように、従来の技術では、解析鍵の特定は可能であったが、被害鍵の特定はできないという課題があった。【０００８】
本発明は、被害鍵を特定するために、被害鍵を生成するために必要な情報である鍵生成源の特定を目的としている。
【課題を解決するための手段】
【０００９】
本発明に係る鍵生成源特定装置は、
マルウェアに暗号処理を実行させ、前記暗号処理の実行状況を表す実行トレースを取得し、前記実行トレースに基づいて、前記暗号処理で用いられた暗号鍵を解析鍵として特定する鍵特定部と、
前記実行トレースから、前記解析鍵が依存する命令のリストを命令リストとして抽出する抽出部と、
前記命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定し、前記呼出命令により呼び出された関数が前記動的取得関数である場合に、前記命令リストを、前記暗号処理において前記解析鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する取得部と
を備えた。
【発明の効果】
【００１０】
本発明に係る鍵生成源特定装置は、抽出部が、マルウェアの暗号処理の実行トレースと、暗号処理で用いられる暗号鍵とに基づいて、暗号鍵が依存する命令の命令リストを抽出する。また、取得部が、命令リストに含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数であるか否かを判定する。そして、取得部は、呼出命令により呼び出された関数が動的取得関数である場合に、命令リストを、暗号処理において暗号鍵を生成したプログラムの少なくとも一部である鍵生成源の候補として取得する。よって、本発明に係る鍵生成源特定装置によれば、マルウェアの暗号処理で用いられた暗号鍵の鍵生成源を得ることができ、マルウェアにより暗号化された暗号化ファイルを復号する手間を大きく削減することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】マルウェアが動的に鍵を生成する例を示す図。
【図２】異なる鍵がそれぞれの端末で生成される様子を示す図。
【図３】マルウェアによる暗号通信の復号を依頼されたＳＯＣ／ＣＳＩＲＴエンジニアが解析鍵では暗号通信を復号できない様子を示す図。
【図４】実施の形態１に係る鍵生成源特定装置１０の構成図。
【図５】実施の形態１に係る実行トレース１１１の具体例。
【図６】実施の形態１に係る鍵生成源特定装置１０の鍵生成源特定方法５１０及び鍵生成源特定プログラム５２０の鍵生成源特定処理Ｓ１００を示すフロー図。
【図７】実施の形態１に係る鍵生成源取得部１３０による鍵生成源取得処理Ｓ１３０を示すフロー図。
【図８】解析鍵特定部１２０からの情報を元に、実行トレース１１１上でどのメモリが解析鍵１２１であるかを特定している様子を示す図。
【図９】解析鍵１２１と依存関係のある情報をテイント解析により求めていく様子を示す図。
【図１０】テイント解析による解析を行った結果の命令リスト３１１を示す図。
【図１１】実施の形態１に係る関数データベース１４１に格納される動的取得関数４１１の例を示す図。
【図１２】複数のアセンブルリストから鍵生成源３２１であるアセンブルリストを特定する例を示す図。
【図１３】実施の形態１の変形例に係る鍵生成源特定装置１０の構成図。
【図１４】実施の形態２に係る鍵生成源特定装置１０ａの構成図。
【図１５】鍵生成源候補３２２の絞り込みが必要となる理由である、テイントの誤伝搬について説明する図。
【図１６】実施の形態２に係る鍵生成源特定装置１０ａの鍵生成源特定処理Ｓ１００ａを示すフロー図。
【図１７】実施の形態２におけるレーベンシュタイン距離の測定を例示する図。
【図１８】実施の形態３に係る鍵生成源特定装置１０ｂの構成図。
【図１９】実施の形態３に係る鍵生成源特定装置１０ｂの鍵生成源特定処理Ｓ１００ｂを示すフロー図。
【図２０】実施の形態３に係る鍵生成プログラム１５１を生成する様子を示す図。
【図２１】実施の形態４に係る鍵生成源特定装置１０ｃの構成図。
【図２２】実施の形態４に係る鍵生成源特定装置１０ｃの鍵生成源特定処理Ｓ１００ｃを示すフロー図。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１３】
実施の形態１．
まず、動的な鍵生成について図１から図３を用いて説明する。
図１は、マルウェアが動的に鍵を生成する例を示す図である。
この例で示すマルウェアは、感染端末上のＩＰアドレスを、暗号鍵を生成するシードとして用いて、暗号に利用する鍵を生成し、盗み出す機密ファイルの暗号化を行う。この場合、異なる端末では異なる鍵が生成され、暗号処理に利用される。
図２は、異なる鍵がそれぞれの被害端末で生成される様子を示す図である。被害端末Ａと被害端末Ｂとは、同一のマルウェアに感染しているが、マルウェアの暗号処理で用いられる鍵は異なる。
図３は、マルウェアにより暗号化された暗号化ファイルの復号を依頼されたＳＯＣ（Ｓｅｃｕｒｉｔｙ  Ｏｐｅｒａｔｉｏｎ  Ｃｅｎｔｅｒ）／ＣＳＩＲＴ（Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ｉｎｃｉｄｅｎｔ  Ｒｅｓｐｏｎｓｅ  Ｔｅａｍ）エンジニアが、解析鍵では復号できない様子を示している。図３に示すように、マルウェアを解析する場合、被害が発生した被害環境における被害鍵と、マルウェアの解析環境での解析鍵とは異なる。漏えい情報は被害環境で発生しているため、被害鍵により暗号化されている。そのため、解析環境で手に入る解析鍵では、暗号化された通信ログといった機密ファイルを復号することができない。
マルウェアにより暗号化された暗号化ファイルを復号するために、マルウェアが利用する暗号アルゴリズムと暗号鍵とを特定する必要がある。しかし、マルウェアが感染した端末の環境情報を利用して鍵を生成する場合、解析環境で得られる鍵では被害環境で発生した暗号化ファイルを復号することができない。そこで、本実施の形態では、解析環境において特定できた鍵の情報を元に、どの環境情報を鍵生成源として利用しているかを特定し、暗号通信の復号にかかる手間を削減することができる鍵生成源特定装置１０について説明する。
【００１４】
＊＊＊構成の説明＊＊＊
図４を用いて、本実施の形態に係る鍵生成源特定装置１０の構成について説明する。
本実施の形態において、鍵生成源特定装置１０は、コンピュータである。鍵生成源特定装置１０は、プロセッサ９１０を備えると共に、記憶装置９２０、入力インタフェース９３０、出力インタフェース９４０といった他のハードウェアを備える。記憶装置９２０は、メモリと補助記憶装置とを有する。
【００１５】
図１に示すように、鍵生成源特定装置１０は、機能構成として、鍵特定部１１と、鍵生成源取得部１３０と、記憶部１４０とを備える。鍵特定部１１は、実行トレース抽出部１１０と、解析鍵特定部１２０とを備える。鍵生成源取得部１３０は、抽出部３１と、取得部３２とを備える。記憶部１４０には、関数データベース１４１が記憶されている。
以下の説明では、鍵生成源特定装置１０における鍵特定部１１（実行トレース抽出部１１０、解析鍵特定部１２０）と、鍵生成源取得部１３０（抽出部３１、取得部３２）との機能を、鍵生成源特定装置１０の「部」の機能という。
【００１６】
鍵生成源特定装置１０の「部」の機能は、ソフトウェアで実現される。
また、記憶部１４０は、記憶装置９２０で実現される。
【００１７】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ９１０は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。
【００１８】
入力インタフェース９３０は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイといった表示装置のケーブルが接続されるポートである。出力インタフェース９４０は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００１９】
補助記憶装置は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリは、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。記憶部１４０は、補助記憶装置により実現されてもよいし、メモリにより実現されてもよいし、メモリと補助記憶装置とにより実現されていてもよい。記憶部１４０の実現方法は任意である。
【００２０】
補助記憶装置には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリにロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。補助記憶装置には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリにロードされ、プロセッサ９１０はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００２１】
鍵生成源特定装置１０は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これらの複数のプロセッサは、「部」の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、プロセッシングを行うＩＣである。
【００２２】
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ、補助記憶装置、又は、プロセッサ９１０内のレジスタ又はキャッシュメモリに記憶される。なお、図４において、各部と記憶部とを結ぶ矢印は、各部が処理の結果を記憶部に記憶すること、或いは、各部が記憶部から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
【００２３】
鍵生成源特定装置１０の「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）といった可搬記録媒体に記憶されてもよい。
なお、鍵生成源特定装置１０の「部」の機能を実現するプログラムを鍵生成源特定プログラム５２０ともいう。また、鍵生成源特定プログラムプロダクトと称されるものは、鍵生成源特定プログラム５２０が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００２４】
＊＊＊機能構成の説明＊＊＊
実行トレース抽出部１１０は、マルウェアを実際に動作させ、その際の動作記録である実行トレース１１１を取得する。この時、マルウェアには暗号処理を実行させることで、暗号処理を実行した実行トレース１１１を取得する。実行トレース１１１の取得には、例えば、ＩｎｔｅｌのＰｉｎや、ＱＥＭＵといった技術を利用する。
【００２５】
図５は、本実施の形態に係る実行トレース１１１の具体例である。
実行トレース１１１とはプログラムの動作記録のことである。実際には、プログラムを実行した際に実行された命令のアドレス、命令（オペコード）、命令対象（オペランド）、メモリあるいはレジスタへのアクセス情報、呼び出した関数名といった情報によって構成される。
【００２６】
解析鍵特定部１２０は、実行トレース抽出部１１０より得られた実行トレース１１１を解析し、暗号処理で利用される暗号鍵を特定する。この時、解析鍵特定部１２０により特定される鍵は、解析環境における暗号鍵であるため、特定される暗号鍵は解析鍵１２１である。
【００２７】
鍵生成源取得部１３０は、解析鍵特定部１２０で特定した解析鍵１２１を起点として、実行トレース１１１上の命令で、解析鍵１２１と依存関係のある命令を遡っていく。鍵生成源取得部１３０は、実行トレース１１１に記録された全ての命令を遡り、命令列、すなわち命令リスト３１１を得る。鍵生成源取得部１３０は、得られた命令リスト３１１に含まれる呼出命令が、関数データベース１４１に含まれる関数を呼び出す呼出命令であった場合、その呼出命令を含む命令リスト３１１を鍵生成源３２１として、あるいは鍵生成源候補３２２として取得する。
【００２８】
＊＊＊動作の説明＊＊＊
図６を用いて、本実施の形態に係る鍵生成源特定装置１０の鍵生成源特定方法５１０及び鍵生成源特定プログラム５２０の鍵生成源特定処理Ｓ１００について説明する。また、図７を用いて、本実施の形態に係る鍵生成源取得部１３０による鍵生成源取得処理Ｓ１３０について説明する。
図６及び図７に示すように、鍵生成源特定処理Ｓ１００は、鍵特定処理Ｓ１０（実行トレース抽出処理Ｓ１１０及び解析鍵特定処理Ｓ１２０）と、鍵生成源取得処理Ｓ１３０（抽出処理Ｓ２０及び取得処理Ｓ３０）とを有する。
【００２９】
＜鍵特定処理Ｓ１０＞
鍵特定処理Ｓ１０において、鍵特定部１１は、マルウェアに暗号処理を実行させ、暗号処理の実行状況を表す実行トレース１１１を取得する実行トレース抽出処理Ｓ１１０を実行する。ここでは、鍵特定部１１は、解析環境において暗号処理を実行する。また、鍵特定部１１は、実行トレース１１１に基づいて、解析環境において実行された暗号処理で用いられた暗号鍵を解析鍵１２１として特定する解析鍵特定処理Ｓ１２０を実行する。
【００３０】
鍵特定処理Ｓ１０について、さらに詳しく説明する。
実行トレース抽出処理Ｓ１１０において、実行トレース抽出部１１０は、解析対象であるマルウェアを取得し、暗号処理を実行させ、実行トレース１１１を取得する。具体的には、実行トレース抽出部１１０には、ユーザにより入力インタフェース９３０を介して解析対象であるマルウェアが入力される。実行トレース抽出部１１０は、入力されたマルウェアに暗号処理を実行させることで実行トレース１１１を得る。
解析鍵特定処理Ｓ１２０において、解析鍵特定部１２０は、実行トレース抽出部１１０により得られた実行トレース１１１を取得する。解析鍵特定部１２０は、実行トレース１１１を解析することにより、解析鍵１２１を取得する。
【００３１】
＜鍵生成源取得処理Ｓ１３０＞
鍵生成源取得処理Ｓ１３０において、鍵生成源取得部１３０の抽出部３１は、実行トレース１１１から、解析鍵１２１が依存する命令のリストを命令リスト３１１として抽出する抽出処理Ｓ１０を実行する。また、鍵生成源取得部１３０の取得部３２は、命令リスト３１１に含まれる呼出命令により呼び出された関数が、動的に変化する動的情報を取得する動的取得関数４１１であるか否かを判定する。取得部３２は、呼出命令により呼び出された関数が動的取得関数４１１である場合に、命令リスト３１１を、暗号処理において解析鍵１２１を生成したプログラムの少なくとも一部である鍵生成源３２１の候補として取得する取得処理Ｓ２０を実行する。以下、鍵生成源３２１の候補を鍵生成源候補３２２として説明する。
【００３２】
鍵生成源取得処理Ｓ１３０について、さらに詳しく説明する。
ステップＳ１３１において、抽出部３１は、実行トレース１１１における解析鍵１２１の位置を取得する。具体的には、抽出部３１は、解析鍵特定部１２０が特定した解析鍵１２１の情報として、解析鍵１２１が実行トレース１１１上でどこに存在しているかの情報を受け取る。
図８は、解析鍵特定部１２０からの情報を元に、実行トレース１１１上でどのメモリが解析鍵１２１であるかを特定している様子を示している。ここでは、解析鍵１２１が１６進数で「ＡＡＡＡＡ」でありｍｅｍ２に格納されていた場合を考える。ここで、ｍｅｍ１、ｍｅｍ２とはメモリの領域を指している。
【００３３】
ここで、解析鍵１２１が依存する命令とは、解析鍵１２１と依存関係のある命令である。また、解析鍵１２１が依存する命令の命令リスト３１１とは、解析鍵１２１と依存関係のある命令を遡って得られた、一連の命令列である。
ステップＳ１３２において、抽出部３１は、特定した解析鍵１２１の位置ｍｅｍ２から、解析鍵１２１が依存する命令、すなわち解析鍵１２１と依存関係にある命令を追跡する。具体的には、抽出部３１は、テイント解析手法を用いて、解析鍵１２１の位置ｍｅｍ２から解析鍵１２１と依存関係のある命令を追跡していく。テイント解析については、非特許文献２のような手法を用いることで対応する。
【００３４】
図９に、解析鍵と依存関係のある情報をテイント解析により求めていく様子を示す。
まず、ｍｅｍ２はｅｃｘの値が格納されているため、ｅｃｘの値に依存している。次に、その前段でｅｃｘはｅａｘの値と加算した結果を格納している。更に、その前段でｅａｘはｍｅｍ１の値を格納している。このように依存関係を辿っていくと、最終的にｍｅｍ２の値はｍｅｍ１の値に依存していることが分かる。
図１０は、テイント解析による解析を行った結果の命令リスト３１１を示す図である。命令リスト３１１は、アセンブルリストである。
図１０のアセンブルリストは、実行トレース１１１全体に渡ってテイント解析による解析を行った結果である。図１０に示すように、アセンブルリストは複数取得される場合がある。
【００３５】
次に、ステップＳ１３３において、取得部３２は、呼出命令であるｃａｌｌ命令により呼び出された関数が関数データベース１４１に含まれるか否かを判定する。具体的には、取得部３２は、この命令リスト３１１、すなわちアセンブルリストにおいて、呼出命令、すなわちｃａｌｌ命令の行を抽出し、ｃａｌｌ命令が呼び出している関数と同一のものが関数データベース１４１にあるか問い合わせる。
【００３６】
図１１は、関数データベース１４１に格納される動的取得関数４１１の例を示す図である。関数データベース１４１は、動的取得関数４１１を格納する。
動的取得関数４１１は、暗号処理の実行環境に応じて動的に変化する情報を動的情報（外部情報）として取得する関数である。
関数データベース１４１とは、Ｗｉｎｓｏｃｋｅｔのような通信ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）や、ファイル読み込みを行うＡＰＩといった、外部情報を取得するようなＡＰＩが動的取得関数４１１として登録されているものである。関数データベース１４１は、外部情報参照関数データベースともいう。
外部情報は、動的情報とも称され、プログラム内のテーブルといったハードコードされた情報ではないものを指し、ＩＰアドレスやＭＡＣアドレス、時間といった環境毎に変化する情報のことを指す。
【００３７】
次に、ステップＳ１３４において、取得部３２は、ｃａｌｌ命令により呼び出された関数が関数データベース１４１に含まれる場合に、命令リストであるアセンブルリストを鍵生成源候補３２２として取得する。つまり、取得部３２は、問い合わせた関数が関数データベース１４１に含まれていた場合、問い合わせた関数を呼び出しているアセンブルリストを鍵生成源候補３２２として取得する。なお、本実施の形態では、取得部３２は、鍵生成源候補３２２を鍵生成源３２１と決定する。
【００３８】
図１２は、複数のアセンブルリストから鍵生成源３２１であるアセンブルリストを特定する例を示す図である。
まず、取得部３２は、複数のアセンブルリストから、判定を行う判定対象のアセンブルリストを取り出す。次に、鍵生成源取得部１３０は、取り出したアセンブルリストから、ｃａｌｌ命令により呼び出した関数を抽出する。この場合、ｇｅｔｈｏｓｔｎａｍｅがその関数である。次に、取得部３２は、ｇｅｔｈｏｓｔｎａｍｅが関数データベース１４１に存在しているかを確認するために、ｇｅｔｈｏｓｔｎａｍｅのクエリを、関数データベース１４１に送信する。関数データベース１４１では、このクエリが存在しているかを検索する。図１１の関数データベース１４１の例であれば、ｇｅｔｈｏｓｔｎａｍｅは存在するため、レスポンスとしてＴｒｕｅを返す。ここで、関数データベース１４１に存在しないクエリを送信した場合、レスポンスとしてＦａｌｓｅを返す。取得部３２は、Ｔｒｕｅを受け取った時、判定対象のアセンブルリストが鍵生成源候補３２２であると判定する。そして、取得部３２は、鍵生成源候補３２２であると判定したアセンブルリストを鍵生成源３２１として決定する。
【００３９】
＊＊＊他の構成＊＊＊
鍵生成源特定装置１０は、他のネットワークと通信する通信インタフェースを有していてもよい。通信インタフェースは、レシーバとトランスミッタとを備える。具体的には、通信インタフェースは通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信インタフェースはデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
【００４０】
また、本実施の形態では、鍵生成源特定装置１０の機能がソフトウェアで実現されるが、変形例として、鍵生成源特定装置１０の機能がハードウェアで実現されてもよい。
図１３は、本実施の形態の変形例に係る鍵生成源特定装置１０の構成を示す図である。
図１３に示すように、鍵生成源特定装置１０は、処理回路９０９、入力インタフェース９３０、出力インタフェース９４０といったハードウェアを備える。
【００４１】
処理回路９０９は、上述した「部」の機能及び記憶部を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
【００４２】
鍵生成源特定装置１０は、処理回路９０９を代替する複数の処理回路を備えていてもよい。これら複数の処理回路により、全体として「部」の機能が実現される。それぞれの処理回路は、処理回路９０９と同じように、専用の電子回路である。
【００４３】
別の変形例として、鍵生成源特定装置１０の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。すなわち、鍵生成源特定装置１０において一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【００４４】
プロセッサ９１０、記憶装置９２０、及び、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、鍵生成源特定装置１０の構成が図１及び図７のいずれに示した構成であっても、「部」の機能及び記憶部は、プロセッシングサーキットリにより実現される。
【００４５】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【００４６】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係る鍵生成源特定装置１０によれば、マルウェアから、被害鍵を特定するために重要な情報である鍵生成源を自動で得ることができる。よって、本実施の形態に係る鍵生成源特定装置１０によれば、マルウェアによる暗号通信を復号する手間を大きく削減することができる。
【００４７】
実施の形態２．
本実施の形態では、主に、実施の形態１との差異について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成には同一の符号を付し、その説明を省略する。
【００４８】
＊＊＊構成の説明＊＊＊
図１４を用いて、本実施の形態に係る鍵生成源特定装置１０ａの構成について説明する。
鍵生成源特定装置１０ａは、実施の形態１の構成に加えて、鍵生成源取得部１３０に決定部３３を備える。また、鍵生成源特定装置１０ａは、さらに、記憶部１４０にプログラムデータベース１４２を備える。その他の機能構成とハードウェア構成については、実施の形態１と同様である。よって、鍵生成源特定装置１０ａの機能構成は、鍵生成源特定装置１０の機能構成に決定部３３とプログラムデータベース１４２とが加わっている。また、鍵生成源特定装置１０ａの「部」の機能は、鍵生成源特定装置１０の「部」の機能に決定部３３の機能が加わっている。
なお、本実施の形態では、取得部３２から鍵生成源候補３２２を受け取るものとする。
【００４９】
プログラムデータベース１４２は、プログラムのテンプレートを格納する。プログラムデータベース１４２は、マルウェアの暗号処理で用いられる可能性がある鍵生成プログラムのテンプレートである鍵生成プログラムテンプレートを予め格納する。
決定部３３は、鍵生成源候補３２２と鍵生成プログラムテンプレートとの類似度４１２を算出し、この類似度４１２に基づいて、鍵生成源候補３２２が鍵生成プログラムテンプレートに類似するか否かを判定する。決定部３３は、鍵生成源候補３２２が鍵生成プログラムテンプレートに類似する場合に鍵生成源候補３２２を鍵生成源３２１として決定する。言い換えると、決定部３３は、取得部３２により取得された鍵生成源候補３２２から、鍵生成源３２１を決定する。決定部３３は、鍵生成源候補３２２に対して、どの鍵生成源候補３２２が実際に鍵生成源３２１であるかの絞り込みを行う。
【００５０】
図１５を用いて、鍵生成源候補３２２の絞り込みが必要となる理由である、テイントの誤伝搬について説明する。
テイントの誤伝搬とは、本来依存関係がなく、追跡しないデータに対して誤ってテイントが伝搬してしまうことをいう。図１５は、テイントが誤伝搬するような場合を示している。
図１５のアセンブルリストにおいてテイント解析を行うと、図９と同様にｍｅｍ２がｍｅｍ１に依存している結果が得られる。しかし、「ｘｏｒ  ｅａｘ，ｅａｘ」はｅａｘの値によらずｅａｘに０を代入する処理である。そのため、実際にはｍｅｍ１とｍｅｍ２の間には依存関係がない。このように、実際には依存関係がないにも関わらず、依存関係があるようにデータがテイントされることをテイントの誤伝搬という。
テイントの誤伝搬が生じることを踏まえると、正確に鍵生成源３２１を特定するためには、誤伝搬により誤った結果を含む鍵生成源候補３２２から、正しい鍵生成源３２１に絞り込む必要がある。
【００５１】
＊＊＊動作の説明＊＊＊
図１６を用いて、本実施の形態に係る鍵生成源特定装置１０ａの鍵生成源特定処理Ｓ１００ａについて説明する。
鍵生成源特定処理Ｓ１００ａは、実行トレース抽出処理Ｓ１１０と、解析鍵特定処理Ｓ１２０と、鍵生成源取得処理Ｓ１３０と、判定処理Ｓ１４０を有する。実行トレース抽出処理Ｓ１１０と解析鍵特定処理Ｓ１２０と鍵生成源取得処理Ｓ１３０とは、実施の形態１で説明した処理と同様である。
【００５２】
判定処理Ｓ１４０において、決定部３３は、鍵生成源候補３２２の各々を、プログラムデータベース１４２に登録された鍵生成プログラムテンプレートと比較し、類似している鍵生成源候補３２２を鍵生成源３２１として決定する。
ここで、プログラムデータベース１４２には、予め鍵を生成するプログラムのアセンブルリストを鍵生成プログラムテンプレートとして登録してある。決定部３３は、鍵生成源候補３２２の各々が含まれるアセンブルリストを、プログラムデータベース１４２に登録されたアセンブルリストと比較し、類似しているかどうかを判定する。
【００５３】
ここで、アセンブルリスト同士の比較には、アセンブルリストにおけるオペコード列のレーベンシュタイン距離を類似度４１２として計算し、距離が閾値以下である場合に類似していると判定する。
レーベンシュタイン距離とは編集距離とも呼ばれる、二つの文字列の距離を測定する際に用いられる尺度である。同一の文字列とするために、文字の追加及び削除が何回必要か、その回数を距離として用いる。ここで、変更は、文字を削除した後に追加するため、２回分の操作が必要である。
【００５４】
図１７に、本実施の形態におけるレーベンシュタイン距離の測定を例示する。
まず、比較対象であるアセンブルリスト、すなわち鍵生成源候補３２２のアセンブルリストと、プログラムデータベース１４２に登録されたアセンブルリストとの各々において、オペコードだけのリストに編集する。レーベンシュタイン距離の比較は、このオペコードリストに対して行う。
次に、比較対象であるオペコードリストが、プログラムデータベース１４２に登録されたアセンブルリストから得られたオペコードリストと全く同じになるには、何回の追加及び削除が必要であるかを測定する。ここで、追加及び削除はオペコード単位で行われる。この回数が、二つのオペコードリスト間の距離であり、距離が閾値より低い場合、比較対象であったアセンブルリストが鍵生成源３２１である、または鍵生成源３２１を含むと判定する。
図１７の例では、４行目のオペコードが異なっている点と、６行目にオペコードが存在していない。そのため、この二つのオペコードリストの距離は「３」である。この値が閾値より低ければ、比較対象であったアセンブルリストが鍵生成源３２１を含むと判定する。
類似度の比較には、他にもファジーハッシュの一致を確認する方法や、機械学習により鍵生成プログラムの特徴を抽出し利用するといった方法がある。
【００５５】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る鍵生成源特定装置１０ａによれば、マルウェアから、被害鍵を特定するために重要な情報である鍵生成源を、精度が高い状態で、自動で得る事ができるようになり、マルウェアによる暗号通信を復号する手間を大きく削減することが可能となる。
【００５６】
実施の形態３．
本実施の形態では、主に、実施の形態１との差異について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成には同一の符号を付し、その説明を省略する。
【００５７】
＊＊＊構成の説明＊＊＊
図１８を用いて、本実施の形態に係る鍵生成源特定装置１０ｂの構成について説明する。
鍵生成源特定装置１０ｂは、実施の形態１の構成に加えて、プログラム生成部１５０を備える。その他の機能構成とハードウェア構成については、実施の形態１と同様である。よって、鍵生成源特定装置１０ｂの機能構成は、鍵生成源特定装置１０の機能構成にプログラム生成部１５０が加わっている。また、鍵生成源特定装置１０ｂの「部」の機能は、鍵生成源特定装置１０の「部」の機能にプログラム生成部１５０の機能が加わっている。なお、ここでは、実施の形態１に本実施の形態が加わった形態を示すが、本実施の形態は実施の形態２に対して追加しても同様に成立する。
【００５８】
プログラム生成部１５０は、鍵生成源３２１に基づいて、実行環境において実行される暗号処理で用いられる暗号鍵を生成する鍵生成プログラム１５１を生成する。鍵生成プログラム１５１は、被害環境における暗号鍵である被害鍵を生成するためのプログラムである。
【００５９】
＊＊＊動作の説明＊＊＊
図１９を用いて、本実施の形態に係る鍵生成源特定装置１０ｂの鍵生成源特定処理Ｓ１００ｂについて説明する。
生成源特定処理Ｓ１００ｂは、実行トレース抽出処理Ｓ１１０と、解析鍵特定処理Ｓ１２０と、鍵生成源取得処理Ｓ１３０と、プログラム生成処理Ｓ１５０を有する。実行トレース抽出処理Ｓ１１０と解析鍵特定処理Ｓ１２０と鍵生成源取得処理Ｓ１３０とは、実施の形態１で説明した処理と同様である。
【００６０】
プログラム生成処理Ｓ１５０において、プログラム生成部１５０は、得られた鍵生成源３２１から解析鍵１２１へと続くアセンブルリストを元に、鍵生成プログラム１５１を生成する。
プログラム生成処理Ｓ１５０は、実行トレース１１１に記録されたアセンブルリストをそのまま辿れば、必ず鍵生成プログラム１５１となることを利用している処理である。
【００６１】
図２０は、本実施の形態に係る鍵生成プログラム１５１の生成を示す図である。
図２０に示すように、鍵生成プログラム１５１は、鍵生成源３２１として決定されたアセンブルリストに、プロローグ処理のアセンブルリストが付加されて生成される。
まず、プログラム生成部１５０は、鍵生成源３２１として決定されたアセンブルリストを取得する。鍵生成源３２１として決定されたアセンブルリストによれは、実行された順にアセンブラを読むことにより鍵生成のアルゴリズムを得ることができる。
更に、プログラム生成部１５０は、実行トレース１１１からプログラム開始時点でのメモリ状態を抽出することで、プログラムの静的変数も設定することが可能となる。プログラム生成部１５０は、鍵生成源が呼び出すメモリに対応した静的変数を設定するプロローグ処理を行うアセンブルリストを生成する。プログラム生成部１５０は、鍵生成源３２１として決定されたアセンブルリストの前に、プロローグ処理を行うようにプログラムを作成することで、アセンブラで書かれた鍵生成プログラム１５１を作成することができる。
【００６２】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る鍵生成源特定装置１０ｂによれば、マルウェアから、鍵生成源と鍵生成プログラムを自動で得る事ができる。本実施の形態に係る鍵生成源特定装置１０ｂによれば、被害環境での環境情報を利用して鍵生成プログラムから被害鍵を生成することが可能となり、マルウェアによる暗号通信を復号する手間を大きく削減することが可能となる。
【００６３】
実施の形態４．
本実施の形態では、主に、実施の形態１との差異について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成には同一の符号を付し、その説明を省略する。
【００６４】
＊＊＊構成の説明＊＊＊
図２１を用いて、本実施の形態に係る鍵生成源特定装置１０ｃの構成について説明する。
鍵生成源特定装置１０ｃは、実施の形態１の構成に加えて、被害鍵取得部１６０を備える。その他の機能構成とハードウェア構成については、実施の形態１と同様である。よって、鍵生成源特定装置１０ｃの機能構成は、鍵生成源特定装置１０の機能構成に被害鍵取得部１６０が加わっている。また、鍵生成源特定装置１０ｃの「部」の機能は、鍵生成源特定装置１０の「部」の機能に被害鍵取得部１６０の機能が加わっている。なお、ここでは、実施の形態１に本実施の形態が加わった形態を示すが、本実施の形態は実施の形態２あるいは実施の形態３に対して追加しても同様に成立する。
【００６５】
被害鍵取得部１６０は、鍵生成源３２１と、動的取得関数４１１が呼び出す動的情報と、実行環境とに基づいて、暗号処理が実行された際の暗号鍵を被害鍵１６１として取得する。つまり、被害鍵取得部１６０は、動的取得関数４１１が呼び出す動的情報を、マルウェアに感染した被害端末の実行環境に合わせた情報としてマルウェアを実際に動作させることで、被害端末で暗号処理が実行された際の暗号鍵を被害鍵１６１として取得する。
なお、本実施の形態では、被害鍵取得部１６０は、取得部３２から鍵生成源３２１を受け取るものとする。
【００６６】
＊＊＊動作の説明＊＊＊
図２２を用いて、本実施の形態に係る鍵生成源特定装置１０ｃの生成源特定処理Ｓ１００ｃについて説明する。
生成源特定処理Ｓ１００ｃは、実行トレース抽出処理Ｓ１１０と、解析鍵特定処理Ｓ１２０と、鍵生成源取得処理Ｓ１３０と、被害鍵取得処理Ｓ１６０を有する。実行トレース抽出処理Ｓ１１０と解析鍵特定処理Ｓ１２０と鍵生成源取得処理Ｓ１３０とは、実施の形態１で説明した処理と同様である。
【００６７】
被害鍵取得処理Ｓ１６０において、被害鍵取得部１６０は、特定した鍵生成源３２１を元に、被害端末の実行環境を示す環境情報を設定し、マルウェアを実行させることで被害鍵１６１を抽出する。
【００６８】
具体例として、鍵生成源３２１が呼び出す動的取得関数４１１が取得する動的情報が、ＩＰアドレスである場合について説明する。被害鍵取得部１６０は、復号対象である暗号通信、すなわち暗号化ファイルが取得された被害環境のＩＰアドレスをログ等の情報から抽出しておく。次に、被害鍵取得部１６０は、マルウェアを実行する仮想環境上のＩＰアドレスを、先ほど入手した被害環境のＩＰアドレスに変更する。被害鍵取得部１６０は、この状態でマルウェアを動作させ、暗号処理の鍵を抽出すると、被害環境における被害鍵１６１を入手することができる。
【００６９】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る鍵生成源特定装置１０ｃによれば、マルウェアから、被害鍵を自動で得る事ができる。本実施の形態に係る鍵生成源特定装置１０ｃによれば、被害環境での情報を利用して被害鍵を自動で生成することが可能となり、マルウェアによる暗号通信を復号する手間を大きく削減することが可能となる。
【００７０】
以上、本発明の実施の形態１から４について説明したが、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、鍵生成源特定装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。鍵生成源特定装置は、これらの機能ブロックをどのように組合せて構成してもよいし、任意の機能ブロックで構成してもよい。また、鍵生成源特定装置は、１つの装置でなく、複数の装置から構成されていてもよい。
【００７１】
また、実施の形態１から４について説明したが、これらの実施の形態のうち、複数の実施の形態を組み合わせて実施してもよい。また、これらの実施の形態のうち、複数の部分を組み合わせて実施してもよい。或いは、これらの実施の形態のうち、１つの部分を実施しても構わない。その他、これらの実施の形態の内容を、全体として或いは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であり、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。上記の実施の形態は、本手法の理解を助けるためのものであって、発明を限定するためのものではない。
【符号の説明】
【００７２】
１０，１０ａ，１０ｂ，１０ｃ  鍵生成源特定装置、１１  鍵特定部、１１０  実行トレース抽出部、１１１  実行トレース、１２０  解析鍵特定部、１２１  解析鍵、１３０  鍵生成源取得部、３１  抽出部、３１１  命令リスト、３２  取得部、３３  決定部、３２１  鍵生成源、３２２  鍵生成源候補、１４０  記憶部、１４１  関数データベース、４１１  動的取得関数、４１２  類似度、１４２  プログラムデータベース、１５０  プログラム生成部、１５１  鍵生成プログラム、１６０  被害鍵取得部、１６１  被害鍵、５１０  鍵生成源特定方法、５２０  鍵生成源特定プログラム、９０９  処理回路、９１０  プロセッサ、９２０  記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、Ｓ１０  鍵特定処理、Ｓ２０  抽出処理、Ｓ３０  取得処理、Ｓ１００，Ｓ１００ａ，Ｓ１００ｂ，Ｓ１００ｃ  鍵生成源特定処理、Ｓ１１０  実行トレース抽出処理、Ｓ１２０  解析鍵特定処理、Ｓ１３０  鍵生成源取得処理。
【図１】
2017216924.tif 000003
【図２】
2017216924.tif 000004
【図３】
2017216924.tif 000005
【図４】
2017216924.tif 000006
【図５】
2017216924.tif 000007
【図６】
2017216924.tif 000008
【図７】
2017216924.tif 000009
【図８】
2017216924.tif 000010
【図９】
2017216924.tif 000011
【図１０】
2017216924.tif 000012
【図１１】
2017216924.tif 000013
【図１２】
2017216924.tif 000014
【図１３】
2017216924.tif 000015
【図１４】
2017216924.tif 000016
【図１５】
2017216924.tif 000017
【図１６】
2017216924.tif 000018
【図１７】
2017216924.tif 000019
【図１８】
2017216924.tif 000020
【図１９】
2017216924.tif 000021
【図２０】
2017216924.tif 000022
【図２１】
2017216924.tif 000023
【図２２】
2017216924.tif 000024
【国際調査報告】
2017216924.tif 000025
2017216924.tif 000026