(57)【要約】【課題】識別対象のプログラムに含まれる暗号アルゴリズムを識別する。【解決手段】暗号アルゴリズム識別装置１００が、学習する暗号アルゴリズムを実装したプログラム２００を用いて暗号アルゴリズムについて学習し、暗号アルゴリズムに含まれるオペコードの出現回数をオペコードごとに示す暗号アルゴリズムモデル３００を生成し、識別対象プログラム４００に含まれるオペコードごとにオペコード出現回数を計数し、オペコードごとのオペコード出現回数に基づいて、暗号アルゴリズムモデル３００に対する識別対象プログラム４００の適合度を算出し、適合度が閾値より大きければ、識別対象プログラム４００に当該暗号アルゴリズムが含まれていると識別する。【選択図】図１
2008299361.tif 000002
【特許請求の範囲】
【請求項１】
特定の演算アルゴリズムに用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す演算アルゴリズムモデルを取得する演算アルゴリズムモデル取得部と、
識別対象プログラムに含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数するオペコード抽出部と、
前記演算アルゴリズムモデル取得部により取得された前記演算アルゴリズムモデルに示されるオペコードごとのオペコード出現回数と、前記オペコード抽出部により計数されたオペコードごとのオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出する近似度算出部と、
前記近似度算出部により算出された近似度に基づき、前記識別対象プログラムに前記特定の演算アルゴリズムが用いられているか否かを判定する演算アルゴリズム判定部とを有することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、更に、
前記演算アルゴリズムモデル取得部により取得された前記演算アルゴリズムモデルに示されるオペコードと異なる新規オペコードが前記オペコード抽出部により前記識別対象プログラムから抽出された場合に、前記演算アルゴリズムモデルに前記新規オペコードを登録し、前記新規オペコードのオペコード出現回数として微少回数を設定する演算アルゴリズムモデル修正部を有し、
前記近似度算出部は、
前記演算アルゴリズムモデル修正部により前記新規オペコードが登録され、出現回数が設定された後の演算アルゴリズムモデルに示されるオペコードごとのオペコード出現回数と、前記オペコード抽出部により計数されたオペコードごとのオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算アルゴリズムモデル取得部は、
複数の演算アルゴリズムの演算アルゴリズムモデルを取得し、
前記近似度算出部は、
前記演算アルゴリズムモデル取得部により取得された複数の演算アルゴリズムモデルの各々に示されるオペコードごとのオペコード出現回数と、前記オペコード抽出部により計数されたオペコードごとのオペコード出現回数とを用いて、演算アルゴリズムモデルごとに、前記識別対象プログラムの近似度を算出し、
前記演算アルゴリズム判定部は、
前記近似度算出部により算出された近似度に基づき、演算アルゴリズムごとに、前記識別対象プログラムに当該演算アルゴリズムが用いられているか否かを判定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
特定の演算アルゴリズムに用いられる関数に含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数して、前記特定の演算アルゴリズムの演算アルゴリズムモデルを生成する演算アルゴリズムモデル生成部を有し、
前記演算アルゴリズムモデル取得部は、
前記演算アルゴリズムモデル生成部により生成された前記演算アルゴリズムモデルを取得することを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
外部より、前記演算アルゴリズムモデルを入力する演算アルゴリズムモデル入力部を有し、
前記演算アルゴリズムモデル取得部は、
前記演算アルゴリズムモデル入力部により入力された前記演算アルゴリズムモデルを取得することを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項６】
前記近似度算出部は、
前記演算アルゴリズムモデル及び前記オペコード抽出部の計数結果の両者に共通して登場するオペコードについての前記演算アルゴリズムモデルにおけるオペコード出現回数と前記オペコード抽出部によるオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出することを特徴とする請求項１、３〜５のいずれかに記載の情報処理装置。
【請求項７】
前記演算アルゴリズムモデル取得部は、
特定の暗号アルゴリズムに用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す演算アルゴリズムモデルを取得し、
前記演算アルゴリズム判定部は、
前記近似度算出部により算出された近似度に基づき、前記識別対象プログラムに前記特定の暗号アルゴリズムが用いられているか否かを判定することを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
コンピュータが、特定の演算アルゴリズムに用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す演算アルゴリズムモデルを取得する演算アルゴリズムモデル取得ステップと、
コンピュータが、識別対象プログラムに含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数するオペコード抽出ステップと、
コンピュータが、前記演算アルゴリズムモデル取得ステップにより取得された前記演算アルゴリズムモデルに示されるオペコードごとのオペコード出現回数と、前記オペコード抽出ステップにより計数されたオペコードごとのオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出する近似度算出ステップと、
コンピュータが、前記近似度算出ステップにより算出された近似度に基づき、前記識別対象プログラムに前記特定の演算アルゴリズムが用いられているか否かを判定する演算アルゴリズム判定ステップとを有することを特徴とする情報処理方法。
【請求項９】
特定の演算アルゴリズムに用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す演算アルゴリズムモデルを取得する演算アルゴリズムモデル取得処理と、
識別対象プログラムに含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数するオペコード抽出処理と、
前記演算アルゴリズムモデル取得処理により取得された前記演算アルゴリズムモデルに示されるオペコードごとのオペコード出現回数と、前記オペコード抽出処理により計数されたオペコードごとのオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出する近似度算出処理と、
前記近似度算出処理により算出された近似度に基づき、前記識別対象プログラムに前記特定の演算アルゴリズムが用いられているか否かを判定する演算アルゴリズム判定処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに暗号アルゴリズムが含まれているかどうか識別するシステムに関するものである。
【背景技術】
【０００２】
近年、Ｐ２Ｐ通信を利用したファイル共有のように、技術的な善悪はともかく、社会的に問題となる通信が増加している。
ここで、正常な通信と問題となる通信を区別するためには、その通信内容を監視する必要がある。
しかしながら、通信メッセージに暗号化が施されることが多くなり、通信内容の監視が困難となっている。
【０００３】
暗号化が施されたメッセージを用いた通信を監視するには、暗号文から平文を得る必要がある。
また、暗号文から平文を得るためには、プログラムでどのような暗号アルゴリズムをどのように利用しているかを知る必要がある。
プログラムのソースコードがあれば、直接プログラムの動作を調査することが可能だが、プログラムのソースコードは非公開であることが多く、配布される実行ファイルを解析してプログラムの動作を調査しなくてはならない。
しかしながら、実行ファイルはオブジェクトコードで構成されており、逆アセンブルを実行することでアセンブリデータに変換することができるが、完全に元のソースコードが再現されるわけではなく、そこからさらに時間をかけてプログラムの動作を調査しなくてはならない。
ここで、ソースコードとは、プログラムの動作を人間に解釈しやすいプログラミング言語を用いて記述したプログラムを指す。
オブジェクトコードとは、コンピュータに理解できる言語で記述されたプログラムを指し、そのままでは人間が解釈するのは難しい。
逆アセンブルとは、オブジェクトコードをアセンブリ言語で記述されたソースコードに変換することを指す。ただし、元のソースコードを完全に再現することはできない。
【０００４】
暗号化通信で用いられる暗号化プロトコルを推定する技術として、例えば、特許文献１に記載のものがある。
特許文献１では、各通信アプリケーションにより生成された暗号文の特徴を抽出してデータベース化し、ネットワーク上の暗号文の特徴と比較する技術が記載されている。
【特許文献１】特開２００６−１４６０３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
また、実行ファイル内に存在する暗号アルゴリズムを識別する従来手法の例としては、シグネチャ方式がある。
シグネチャ方式とは、Ｓ−ＢＯＸや置換表や初期値といった、暗号アルゴリズムに固有に現れる固定のバイナリパターンを実行ファイルのバイナリデータと比較することで、実行ファイルに暗号アルゴリズムが含まれるかを識別する手法である。
しかしながら、動的にＳ−ＢＯＸを生成するＲＣ４や、数学的手法で鍵を生成するＲＳＡ（登録商標）のような暗号アルゴリズムについては、特定のライブラリを利用するといった条件を満たした場合を除いて、識別することができないという課題がある。
【０００６】
本発明は、上記のような課題を解決することを主な目的とし、識別対象のプログラムに含まれる、暗号アルゴリズムをはじめとする演算アルゴリズムを識別することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、
特定の演算アルゴリズムに用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す演算アルゴリズムモデルを取得する演算アルゴリズムモデル取得部と、
識別対象プログラムに含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数するオペコード抽出部と、
前記演算アルゴリズムモデル取得部により取得された前記演算アルゴリズムモデルに示されるオペコードごとのオペコード出現回数と、前記オペコード抽出部により計数されたオペコードごとのオペコード出現回数とを用いて、前記識別対象プログラムの前記演算アルゴリズムモデルに対する近似度を算出する近似度算出部と、
前記近似度算出部により算出された近似度に基づき、前記識別対象プログラムに前記特定の演算アルゴリズムが用いられているか否かを判定する演算アルゴリズム判定部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、演算アルゴリズムにおけるオペコード出現回数と識別対象プログラムにおけるオペコード出現回数とを用いて演算アルゴリズムと識別対象プログラムとの近似度を算出するので、特定のライブラリ等を用いることなく、識別対象プログラムに特定の演算アルゴリズムが用いられているか否かを判断することができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
本実施の形態では、同じ暗号アルゴリズムであれば処理内容が類似していることを考慮し、暗号アルゴリズムに対する適合度を利用して識別対象プログラムに暗号アルゴリズムが含まれているか識別する暗号アルゴリズム識別システムについて説明する。
本実施の形態に係る暗号アルゴリズム識別システムでは、まず、暗号アルゴリズムについて学習し、暗号アルゴリズムモデルを生成する。
次に、暗号アルゴリズム識別システムでは、暗号アルゴリズムモデルに対する適合度を算出し、適合度が閾値より大きければ、識別対象プログラムに暗号アルゴリズムが含まれていると識別する。
ここで、適合度の算出には適合度判定を利用し、適合度判定に必要な標本として、プログラムの関数内に出現するオペコードを利用する。
また、オペコードとは、コンピュータが実行する命令の第一語目の命令コードを指す。
また、暗号アルゴリズムモデルとは、特定の暗号アルゴリズム（演算アルゴリズム）に用いられる関数に含まれるオペコードの出現回数をオペコードごとに示す情報である。
【００１０】
次に、図１〜図３を用いて実施の形態１に係る暗号アルゴリズム識別システムを説明する。
実施の形態１は、プログラムに暗号アルゴリズムが含まれているか識別するシステムに関するものである。
【００１１】
図１は、実施の形態１の暗号アルゴリズム識別システム１０００の構成例を表す図である。
暗号アルゴリズム識別システム１０００は、暗号アルゴリズム識別装置１００（情報処理装置）を備える。
暗号アルゴリズム識別装置１００は、学習する暗号アルゴリズムを実装したプログラム２００内の関数に出現するオペコードの数を学習し、暗号アルゴリズムモデル３００を生成する。
次に、暗号アルゴリズム識別装置１００は、暗号アルゴリズムモデル３００に対する識別対象プログラム４００内の関数の適合度を算出する。
最後に、暗号アルゴリズム識別装置１００は、適合度から識別対象プログラム４００に暗号アルゴリズムが含まれているか識別する。
【００１２】
図２は、暗号アルゴリズム識別装置１００の内部構成例を示している。
暗号アルゴリズム識別装置１００は、暗号アルゴリズムモデル生成部１１０と、暗号アルゴリズム識別部１２０と、暗号アルゴリズム識別結果出力部１３０とを備える。
暗号アルゴリズムモデル生成部１１０は、オペコード抽出部１１１と、学習結果集計部１１２と、暗号アルゴリズムモデル記録部１１３とを備える。
暗号アルゴリズム識別部１２０は、関数抽出部１２１と、オペコード抽出部１２２と、適合度算出部１２３と、暗号アルゴリズム判定部１２４とを備える。
【００１３】
ここで、暗号アルゴリズムモデル生成部１１０は、特定の暗号アルゴリズム（演算アルゴリズム）に用いられる関数に含まれるオペコードを抽出し、オペコードごとにオペコード出現回数を計数して、特定の暗号アルゴリズムの暗号アルゴリズムモデルを生成する手段であり、演算アルゴリズムモデル生成部の例となる。
暗号アルゴリズムモデル生成部１１０において、オペコード抽出部１１１は、学習する暗号アルゴリズムを実装したプログラム２００の関数に含まれるオペコードごとにオペコードの出現回数を計数する。
学習結果集計部１１２は、オペコード抽出部１１１により計数されたオペコードごとの出現回数に基づいて、暗号アルゴリズムモデル３００を生成する。
暗号アルゴリズムモデル記録部１１３は、学習結果集計部１１２により生成された暗号アルゴリズムモデル３００を記録する。
【００１４】
暗号アルゴリズム識別部１２０において、関数抽出部１２１は、識別対象プログラム４００に含まれる関数を抽出する。
オペコード抽出部１２２は、関数抽出部１２１により抽出された関数に含まれるオペコードごとにオペコード出現回数を計数する。
適合度算出部１２３は、暗号アルゴリズムモデル生成部１１０で生成された暗号アルゴリズムモデル３００を取得し、取得した暗号アルゴリズムモデル３００に示されるオペコードごとのオペコード出現回数と、オペコード抽出部１２２により計数されたオペコードごとのオペコード出現回数とを用いて、識別対象プログラム４００の暗号アルゴリズムモデル３００に対する適合度（近似度）を算出する。適合度算出部１２３は、演算アルゴリズムモデル取得部及び近似度算出部の例となる。
暗号アルゴリズム判定部１２４は、適合度算出部１２３により算出された適合度（近似度）に基づき、識別対象プログラム４００に特定の暗号アルゴリズムが用いられているか否かを判定する。暗号アルゴリズム判定部１２４は、演算アルゴリズム判定部の例となる。
【００１５】
暗号アルゴリズム識別結果出力部１３０は、暗号アルゴリズム判定部１２４による判定結果を出力する。
【００１６】
以下に、図３及び図４を用いて、本実施の形態に係る暗号アルゴリズム識別システム１０００の動作を説明する。
図３及び図４は、暗号アルゴリズム識別システム１０００の動作を表すフローチャートである。
図３及び図４において、Ｕから始まる通し番号に付いている長丸はユーザが実施する処理を表している。
Ｓから始まる通し番号がついている四角は暗号アルゴリズム識別システム１０００が実施する処理を表しており、Ｓから始まる通し番号がついている菱形は分岐処理を表す。
以下、各処理について説明する。
【００１７】
（図３：Ｕ１０１）はじめに、ユーザは学習する暗号アルゴリズムを実装したプログラム２００から暗号アルゴリズムを実装した関数を抽出し、暗号アルゴリズム識別装置１００に入力する。入力された関数はオペコード抽出部１１１に送られる。
（図３：Ｓ１０２）オペコード抽出部１１１は、入力された関数内に出現する全てのオペコードを抽出し、オペコードごとの出現回数を計数し、計数したオペコード出現回数を学習結果集計部１１２に入力する。
（図３：Ｓ１０３）学習結果集計部１１２は、オペコード抽出部１１１から入力されたオペコードごとの出現回数をこれまでの学習結果に加える。
（図３：Ｓ１０４）学習する暗号アルゴリズムのプログラム２００を追加入力する場合は、Ｕ１０１に戻る。これまでの学習結果で暗号アルゴリズムモデルを生成する場合は、Ｓ１０５に進む。
（図３：Ｓ１０５）暗号アルゴリズムモデル記録部１１３は、現在までに入力した暗号アルゴリズムを実装したプログラム２００に関して学習結果集計部１１２が集計した学習結果を暗号アルゴリズムモデル３００として記録する。
【００１８】
（図４：Ｕ１０６）ユーザは、識別対象プログラム４００を暗号アルゴリズム識別装置１００に入力する。入力された識別対象プログラム４００は、関数抽出部１２１に送られる。
（図４：Ｓ１０７）関数抽出部１２１は、入力された識別対象プログラム４００から関数を抽出する。
（図４：Ｓ１０８）関数抽出部１２１は、識別対象プログラム４００から関数が抽出できたかどうかを判断し、識別対象プログラム４００から関数が抽出できた場合は、関数抽出部１２１は、抽出した関数をオペコード抽出部１２２に入力し、Ｓ１０９に進む。関数が抽出できなかった場合は、関数抽出部１２１は、識別対象プログラム４００には学習した暗号アルゴリズムは含まれていないと判定し、暗号アルゴリズム識別結果出力部１３０に判定結果を入力し、Ｓ１１５に進む。
（図４：Ｓ１０９）オペコード抽出部１２２は、入力された識別対象プログラム４００から抽出した関数（以下、識別対象関数と呼ぶ）に出現する全てのオペコードを抽出し、オペコードごとの出現回数を計数し、計数したオペコード出現回数を適合度算出部１２３に入力する（オペコード抽出ステップ）。
（図４：Ｓ１１０）適合度算出部１２３は、暗号アルゴリズムモデル記録部１１３に暗号アルゴリズムモデル３００を要求する。
（図４：Ｓ１１１）暗号アルゴリズムモデル記録部１１３は、適合度算出部１２３に暗号アルゴリズムモデル３００を入力し、適合度算出部１２３が暗号アルゴリズムモデル３００を取得する（演算アルゴリズムモデル取得ステップ）。
（図４：Ｓ１１２）適合度算出部１２３は、暗号アルゴリズムモデル記録部１１３から入力された暗号アルゴリズムモデル３００と、オペコード抽出部１２２から入力された識別対象関数のオペコードごとの出現回数から、暗号アルゴリズムモデル３００に対する識別対象関数の適合度（近似度）を算出する（近似度算出ステップ）。ここで、適合度判定に用いる標本として暗号アルゴリズムモデル３００に出現するオペコードのみを利用し、識別対象関数のみに出現するオペコードは利用しない。つまり、適合度算出部１２３は、暗号アルゴリズムモデル３００及びオペコード抽出部１２２の計数結果の両者に共通して登場するオペコードについての暗号アルゴリズムモデルにおけるオペコード出現回数とオペコード抽出部１２２によるオペコード出現回数とを用いて、識別対象プログラムの暗号アルゴリズムモデルに対する適合度（近似度）を算出する。
そして、結果として得られた適合度を暗号アルゴリズム判定部１２４に入力する。
【００１９】
ここで、適合度判定について説明する。
適合度判定とは、あるモデルに対して、判定対象がどれほど適合しているかをΧ２（カイ二乗）とＸ２分布を利用して判定する手法である。まず、Ｘ２を以下の式を用いて算出する。
【００２０】
【数１】
2008299361.tif 000003
【００２１】
なお、本明細書では、式１のＥｉとＯｉを次のように定義する。
【００２２】
【数２】
2008299361.tif 000004
【００２３】
ここで、暗号アルゴリズムモデルに出現するｎ種類のオペコードの出現回数をＡ１〜Ａｎ、その和をΣＡと表し、識別対象関数について、暗号アルゴリズムモデルに出現するオペコードに対応する各オペコードの出現回数をＢ１〜Ｂｎ、その和をΣＢと表すと、式１は以下のように表せる。
【００２４】
【数３】
2008299361.tif 000005
【００２５】
次に、式２で算出したＸ２をＸ２分布に適用し、暗号アルゴリズムモデルに対する適合度を算出する。適合度Ｐ（ｘ，ｋ）は式３で表されるＸ２分布の確率密度関数ｆ（ｘ，ｋ）においてｘ以上の値となる確率を表し、以下の式４で表される。
【００２６】
【数４】
2008299361.tif 000006
【００２７】
ここで、ｋはＸ２分布の自由度を表し、適合度判定に用いる標本の数から１を引いた数が用いられる。
つまり、本実施の形態では適合度判定に用いたオペコードの種類ｎから１を引いたｎ−１を自由度として用いる。
また、適合度Ｐ（ｘ，ｋ）は０〜１の範囲で表され、ｘにＸ２を代入することで得られる。
適合度が大きいほど識別対象となる暗号アルゴリズムモデルに適合していることを示しており、適合度が設定した有意水準より高ければ識別対象関数は暗号アルゴリズムモデルに適合していると判定され、逆に有意水準より低ければ識別対象関数は暗号アルゴリズムモデルに適合していないと判定される。一般に有意水準には０．０１か０．０５を用いられることが多いが、本実施の形態では、有意水準を自由に設定可能である。
【００２８】
（図４：Ｓ１１３）暗号アルゴリズム判定部１２４は、適合度算出部１２３から入力された適合度から、識別対象関数が暗号アルゴリズムモデルに適合するかどうかを判定する。ここで、判定に利用する有意水準は自由に設定可能である。適合度が有意水準以上であれば、暗号アルゴリズム判定部１２４は、識別対象関数が暗号アルゴリズムモデルに適合すると判定し、適合度が有意水準より小さければ、暗号アルゴリズム判定部１２４は、識別対象関数は暗号アルゴリズムモデルに適合しないと判定する（演算アルゴリズム判定ステップ）。
（図４：Ｓ１１４）ここで、識別対象関数が暗号アルゴリズムモデルに適合すると判定された場合、暗号アルゴリズム識別結果出力部１３０に判定結果を入力する。また、識別対象関数が暗号アルゴリズムモデルに適合しないと判定された場合、Ｓ１０７に戻る。
（図４：Ｓ１１５）暗号アルゴリズム識別結果出力部１３０は、識別対象プログラム４００に対して識別を行った結果を出力する。
【００２９】
このように、本実施の形態では、暗号アルゴリズムと識別対象プログラムの特徴を比較解析して、識別対象プログラムの内に学習した暗号アルゴリズムが含まれているかどうかを識別することができる。
【００３０】
以上、本実施の形態では、データに対して暗号化処理を行うプログラムについて、以下のものを備える暗号アルゴリズムの識別装置について説明した。
（ａ）入力したプログラム内に存在する関数を抽出する関数抽出装置。
（ｂ）抽出した関数からオペコードを抽出、集計するオペコード集計装置。ここで、オペコードとは、コンピュータが実行する命令の第一語目の命令コードを指す。
（ｃ）暗号アルゴリズムを実装した関数から、暗号アルゴリズムのモデル（以下、暗号アルゴリズムモデル）を生成する暗号アルゴリズムモデル生成装置。
（ｄ）暗号アルゴリズムモデルに対する識別対象の適合度を算出する適合度算出装置。ここで、適合度を算出する際に利用する標本は暗号アルゴリズムモデルに出現する標本のみとする。
（ｅ）暗号アルゴリズムモデルに対する識別対象となる関数の適合度と任意に設定可能な閾値から識別対象となる関数が暗号アルゴリズムに適合するかを判定する、暗号アルゴリズム判定装置。
【００３１】
実施の形態２．
図５〜図７を用いて実施の形態２を説明する。
実施の形態２は、暗号アルゴリズム識別システムに関する。
【００３２】
図５は、実施の形態２の暗号アルゴリズム識別システム１００１の構成例を表す図である。
実施の形態１の暗号アルゴリズム識別装置１００の内部に機能を追加した暗号アルゴリズム識別装置１０１（情報処理装置）を備える。その他の環境については実施の形態１と同じである。
【００３３】
図６は、暗号アルゴリズム識別装置１０１の構成例を示している。
暗号アルゴリズム識別装置１０１は、実施の形態１の暗号アルゴリズム識別装置１００の暗号アルゴリズム識別部１２０の内部に暗号アルゴリズムモデル修正部１２５を追加したものである。
暗号アルゴリズムモデル修正部１２５は、暗号アルゴリズムモデル記録部１１３から暗号アルゴリズムモデル３００を取得するとともに、取得した暗号アルゴリズムモデル３００に示されるオペコードと異なる新規オペコードがオペコード抽出部１２２により識別対象プログラムから抽出された場合に、暗号アルゴリズムモデル３００に新規オペコードを追加し、追加した新規オペコードのオペコード出現回数として微少回数を設定する。暗号アルゴリズムモデル修正部１２５は、演算アルゴリズムモデル取得部及び演算アルゴリズムモデル修正部の例となる。
また、本実施の形態では、適合度算出部１２３は、暗号アルゴリズムモデル修正部１２５により取得され、暗号アルゴリズムモデル修正部１２５により新規オペコードが追加され、出現回数として微少回数が設定された暗号アルゴリズムモデル３００に示されるオペコードごとのオペコード出現回数と、オペコード抽出部１２２により計数されたオペコードごとのオペコード出現回数とを用いて、識別対象プログラムの暗号アルゴリズムモデル３００に対する適合度（近似度）を算出する。
【００３４】
以下に、図７を用いて暗号アルゴリズム識別システム１００１の動作を説明する。
図７は暗号アルゴリズム識別システム１００１の動作を表すフローチャートである。
図７は、図３に示すＳ１０１〜Ｓ１０５の処理が終了した後の処理を示している。
また、Ｕ１０６〜Ｓ１０８、Ｓ１１０、Ｓ１１３〜Ｓ１１５に関しては実施の形態１の暗号アルゴリズム識別システム１０００の動作と同様である。
以下では、Ｕ１０６〜Ｓ１０８、Ｓ１１０、Ｓ１１３〜Ｓ１１５とともに、Ｓ１０９を修正したＳ１１６、Ｓ１１１を修正したＳ１１７、追加した暗号アルゴリズムモデル修正部１２５の動作Ｓ１１８、Ｓ１１２を修正したＳ１１９について説明する。
【００３５】
（図７：Ｕ１０６）ユーザは、識別対象プログラム４００を暗号アルゴリズム識別装置１００に入力する。入力された識別対象プログラム４００は、関数抽出部１２１に送られる。
（図７：Ｓ１０７）関数抽出部１２１は、入力された識別対象プログラム４００から関数を抽出する。
（図７：Ｓ１０８）関数抽出部１２１は、識別対象プログラム４００から関数が抽出できたかどうかを判断し、識別対象プログラム４００から関数が抽出できた場合は、関数抽出部１２１は、抽出した関数をオペコード抽出部１２２に入力し、Ｓ１０９に進む。関数が抽出できなかった場合は、関数抽出部１２１は、識別対象プログラム４００には学習した暗号アルゴリズムは含まれていないと判定し、暗号アルゴリズム識別結果出力部１３０に判定結果を入力し、Ｓ１１５に進む。
（図７：Ｓ１１６）オペコード抽出部１２２は、入力された識別対象プログラムから抽出した識別対象関数に出現する全てのオペコードを抽出し、オペコードごとの出現回数を計数し、計数したオペコード出現回数を適合度算出部１２３に入力する。また、関数内に出現するオペコードの種類を暗号アルゴリズムモデル修正部１２５に入力する。
（図７：Ｓ１１０）適合度算出部１２３は、暗号アルゴリズムモデル記録部１１３に暗号アルゴリズムモデル３００を要求する。
（図７：Ｓ１１７）暗号アルゴリズムモデル記録部１１３は、暗号アルゴリズムモデル修正部１２５に暗号アルゴリズムモデル３００を入力し、暗号アルゴリズムモデル修正部１２５が暗号アルゴリズムモデル３００を取得する（演算アルゴリズムモデル取得ステップ）。
（図７：Ｓ１１８）暗号アルゴリズムモデル修正部１２５は、オペコード抽出部１２２から識別対象関数に出現するオペコードの種類を取得し、暗号アルゴリズムモデル記録部１１３から入力された暗号アルゴリズムモデル３００に出現するオペコードの種類と比較する。もし、暗号アルゴリズムモデル３００に出現しない新規オペコードが識別対象関数に含まれていた場合、新規オペコードを暗号アルゴリズムモデル３００に登録する。ここで、暗号アルゴリズムモデル３００に登録する新規オペコードの出現回数は、例えば、１０のマイナス１０乗といった任意のごく小さい値を代入する。暗号アルゴリズムモデルの修正が完了したら、適合度算出部１２３に修正した暗号アルゴリズムモデルを入力する。
（図７：Ｓ１１９）適合度算出部１２３は、暗号アルゴリズムモデル修正部から入力された修正した暗号アルゴリズムモデルと、オペコード抽出部１２２から入力された識別対象関数のオペコードごとの出現回数から、修正した暗号アルゴリズムモデルに対する識別対象関数の適合度を算出する（近似度算出ステップ）。上述したように、修正した暗号アルゴリズムモデルは、暗号アルゴリズムモデル生成部１１０で生成された暗号アルゴリズムモデル３００に暗号アルゴリズムモデル修正部１２５により設定された新規オペコードとその出現回数（微少回数）が付加されたモデルである。また、適合度判定に用いる標本として、修正した暗号アルゴリズムモデルに出現するオペコードと識別対象関数に出現するオペコードを統合したものを利用する。そして、結果として得られた適合度を暗号アルゴリズム判定部１２４に入力する。
（図７：Ｓ１１３）暗号アルゴリズム判定部１２４は、適合度算出部１２３から入力された適合度から、識別対象関数が暗号アルゴリズムモデルに適合するかどうかを判定する。ここで、判定に利用する有意水準は自由に設定可能である。適合度が有意水準以上であれば、暗号アルゴリズム判定部１２４は、識別対象関数が暗号アルゴリズムモデルに適合すると判定し、適合度が有意水準より小さければ、暗号アルゴリズム判定部１２４は、識別対象関数は暗号アルゴリズムモデルに適合しないと判定する。
（図７：Ｓ１１４）ここで、識別対象関数が暗号アルゴリズムモデルに適合すると判定された場合、暗号アルゴリズム識別結果出力部１３０に判定結果を入力する。また、識別対象関数が暗号アルゴリズムモデルに適合しないと判定された場合、Ｓ１０７に戻る。
（図７：Ｓ１１５）暗号アルゴリズム識別結果出力部１３０は、識別対象プログラム４００に対して識別を行った結果を出力する。
【００３６】
実施の形態１における適合度判定では、識別対象関数に暗号アルゴリズムモデルに含まれないオペコードが含まれていた場合、算出される適合度が大きくなることから誤判定が発生する可能性がある。
そこで、実施の形態２において、暗号アルゴリズムモデル修正部１２５を追加することで、暗号アルゴリズムモデル３００に出現しないオペコードも適合度判定の標本として利用可能となり、暗号アルゴリズムモデル３００に出現しないオペコードを持つ識別対象関数の適合度を大幅に下げることができる。その結果、実施の形態１では誤判定してしまう識別対象関数に対しても正しい判定ができる。
【００３７】
以上、本実施の形態では、実施の形態１の暗号アルゴリズムの識別装置に以下の機能を備えた暗号アルゴリズムの識別装置について説明した。
（ａ）実施の形態１における適合度算出装置について、適合度を算出する際に利用する標本は暗号アルゴリズムモデルに出現する標本と、識別対象に出現する標本を統合したものとする。また、暗号アルゴリズムモデルに含まれない標本に関しては、その値を任意の小さい値に設定して適合度判定を実施する。
【００３８】
実施の形態３．
図８〜図１２を用いて実施の形態３を説明する。
実施の形態３は、暗号アルゴリズム識別システムに関する。
【００３９】
図８は、実施の形態３の暗号アルゴリズム識別システム１００２の構成例を表す図である。
実施の形態２の暗号アルゴリズム識別装置１０１の内部に機能を追加した暗号アルゴリズム識別装置１０２（情報処理装置）を備える。
暗号アルゴリズム識別装置１０２は、複数の暗号アルゴリズム１〜Ｎについて学習することができ、学習する暗号アルゴリズムを実装したプログラム２０１内の関数に出現するオペコードの数を学習し、複数の暗号アルゴリズムモデル１〜Ｎ（３０１）を生成する。
次に、暗号アルゴリズム識別装置１０２は、複数の暗号アルゴリズムモデル１〜Ｎ（３０１）それぞれに対する識別対象プログラム４００内の関数の適合度を算出し、識別対象プログラムに学習した暗号アルゴリズムが含まれているか識別する。ここで、Ｎは学習させる暗号アルゴリズムの数を表す。
【００４０】
図９は暗号アルゴリズム識別装置１０２の構成例を示している。
暗号アルゴリズム識別装置１０２の構成は、実施の形態２の暗号アルゴリズム識別装置１０１の暗号アルゴリズム識別部１２０に暗号アルゴリズム判定結果記録部１２６を追加したものである。
他の構成は、実施の形態１及び実施の形態２で説明したものと同様であるが、以下の構成要素における処理が異なる。
暗号アルゴリズムモデル修正部１２５は、複数の暗号アルゴリズムの暗号アルゴリズムモデルを取得する。
また、適合度算出部１２３は、複数の暗号アルゴリズムモデルの各々に示されるオペコードごとのオペコード出現回数と、オペコード抽出部１２２により計数されたオペコードごとのオペコード出現回数とを用いて、暗号アルゴリズムモデルごとに、識別対象プログラムの近似度を算出する。
また、暗号アルゴリズム判定部１２４は、適合度算出部１２３により算出された適合度に基づき、暗号アルゴリズムごとに、識別対象プログラムに当該暗号アルゴリズムが用いられているか否かを判定する。
【００４１】
また、図９に示す構成に代えて、図１０に示す構成であってもよい。
つまり、図９は、実施の形態２において説明した暗号アルゴリズムモデル修正部１２５を含むものであるが、実施の形態１のように暗号アルゴリズムモデル修正部１２５を含まない構成であってもよい。
【００４２】
以下に、図１１及び図１２を用いて暗号アルゴリズム識別システム１００２の動作を説明する。
図１１及び図１２は、暗号アルゴリズム識別システム１００２の動作を表すフローチャートである。
図１１及び図１２は、図９に示す構成における動作例を示している。
ここで、通し番号が１１９よりも小さい処理に関しては実施の形態２の暗号アルゴリズム識別システム１００１の動作と同様である。
実施の形態３にて修正・追加したＳ１２０〜Ｓ１３５を含めて説明する。
【００４３】
（図１１：Ｓ１２０）Ｎ＝０に初期化する。
（図１１：Ｓ１２１）Ｎの値を１増加させ、学習結果として記録しているオペコードごとの出現回数を０に初期化する。
（図１１：Ｕ１２２）ユーザは学習する暗号アルゴリズムＮを実装したプログラムから暗号アルゴリズムを実装した関数を抽出し、暗号アルゴリズム識別装置１０２に入力する。入力された関数はオペコード抽出部１１１に送られる。
（図１１：Ｓ１０２）オペコード抽出部１１１は、入力された関数内に出現する全てのオペコードを抽出し、オペコードごとの出現回数出現回数を計数し、計数したオペコード出現回数を学習結果集計部１１２に入力する。
（図１１：Ｓ１０３）学習結果集計部１１２は、オペコード抽出部１１１から入力されたオペコードごとの出現回数をこれまでの学習結果に加える。
（図１１：Ｓ１２３）学習する暗号アルゴリズムＮのプログラムを追加入力する場合は、Ｕ１２２に戻る。これまでの学習結果で暗号アルゴリズムＮのモデルを生成する場合は、Ｓ１２４に進む。
（図１１：Ｓ１２４）暗号アルゴリズムモデル記録部１１３は、現在までに入力した暗号アルゴリズムＮを実装したプログラムに関して学習結果集計部１１２が集計した学習結果を暗号アルゴリズムモデルＮとして記録する。
（図１１：Ｓ１２５）さらに別の暗号アルゴリズムの学習を行う場合はＳ１２１へ戻り、これ以上暗号アルゴリズムの学習を行わない場合はＵ１０６へ進む。
【００４４】
（図１２：Ｕ１０６）ユーザは、識別対象プログラム４００を暗号アルゴリズム識別装置１０２に入力する。入力された識別対象プログラム４００は、関数抽出部１２１に送られる。
（図１２：Ｓ１０７）関数抽出部１２１は、入力された識別対象プログラム４００から関数を抽出する。
（図１２：Ｓ１２６）識別対象プログラム４００から関数が抽出できた場合は、抽出した関数をオペコード抽出部１２２に入力し、Ｓ１２７に進む。関数が抽出できなかった場合は、識別対象プログラム４００には学習した暗号アルゴリズムは含まれていないと判定し、Ｓ１３５に進む。
（図１２：Ｓ１２７）Ｍ＝０に初期化する。
（図１２：Ｓ１２８）Ｍの値を１増加させる。
（図１２：Ｓ１１６）オペコード抽出部１２２は、入力された識別対象プログラムから抽出した識別対象関数に出現する全てのオペコードを抽出し、オペコードごとの出現回数を計数し、計数したオペコード出現回数を適合度算出部１２３に入力する。また、関数内に出現するオペコードの種類を暗号アルゴリズムモデル修正部１２５に入力する。
（図１２：Ｓ１２９）適合度算出部１２３は、暗号アルゴリズムモデル記録部１１３に暗号アルゴリズムモデルＭを要求する。
（図１２：Ｓ１３０）暗号アルゴリズムモデル記録部１１３は、暗号アルゴリズムモデル修正部１２５に暗号アルゴリズムモデルＭを入力し、暗号アルゴリズムモデル修正部１２５は暗号アルゴリズムモデルＭを取得する（演算アルゴリズムモデル取得ステップ）。
（図１２：Ｓ１３１）暗号アルゴリズムモデル修正部１２５は、オペコード抽出部１２２から識別対象関数に出現するオペコードの種類を取得し、暗号アルゴリズムモデル記録部１１３から入力された暗号アルゴリズムモデルＭに出現するオペコードの種類と比較する。もし、暗号アルゴリズムモデルＭに出現しないオペコードが識別対象関数に含まれていた場合、暗号アルゴリズムモデルＭに登録する。ここで、登録するオペコードの出現回数は、例えば、１０のマイナス１０乗といった任意のごく小さい値を代入する。暗号アルゴリズムモデルＭの修正が完了したら、適合度算出部１２３に修正した暗号アルゴリズムモデルＭを入力する。
（図１２：Ｓ１３２）適合度算出部１２３は、暗号アルゴリズムモデル修正部から入力された修正した暗号アルゴリズムモデルＭと、オペコード抽出部１２２から入力された識別対象関数のオペコードごとの出現回数から、修正した暗号アルゴリズムモデルＭに対する識別対象関数の適合度を算出する（近似度算出ステップ）。ここで、適合度判定に用いる標本として、修正した暗号アルゴリズムモデルＭに出現するオペコードと識別対象関数に出現するオペコードを統合したものを利用する。そして、結果として得られた適合度を暗号アルゴリズム判定部１２４に入力する。
（図１２：Ｓ１３３）暗号アルゴリズム判定部１２４は、適合度算出部１２３から入力された適合度から、識別対象関数が暗号アルゴリズムモデルＭに適合するかどうかを判定する（演算アルゴリズム判定ステップ）。ここで、判定に利用する有意水準は自由に設定可能である。適合度が有意水準以上であれば、暗号アルゴリズム判定部１２４は、識別対象関数が暗号アルゴリズムモデルＭに適合すると判定し、暗号アルゴリズム判定結果記録部１２６に判定結果を記録し、Ｍ＝Ｎとする。適合度が有意水準より小さければ、暗号アルゴリズム判定部１２４は、識別対象関数は暗号アルゴリズムモデルＭに適合しないと判定する。
（図１２：Ｓ１３４）Ｍ＝Ｎである場合、Ｓ１０７へ戻る。そうでない場合、Ｓ１２８へ戻る。
（図１２：Ｓ１３５）暗号アルゴリズム識別結果出力部１３０は、暗号アルゴリズム判定結果記録部１２６から暗号アルゴリズム１〜Ｎに対する識別対象プログラムの判定結果である、識別対象プログラムに含まれる暗号アルゴリズムを取得し、出力する。
【００４５】
実施の形態１〜２では、一度の識別につき一つの暗号アルゴリズムに対する判定結果しか得られなかった。
しかしながら、実施の形態３では、Ｎ種類の暗号アルゴリズムについて学習を可能とし、それぞれに適合度判定を実施することで、一度の識別につき、Ｎ種類の暗号アルゴリズムに対する判定結果を得ることが可能となり、利便性が向上する。
【００４６】
このように、本実施の形態では、実施の形態１又は実施の形態２の暗号アルゴリズムの識別装置に以下の機能を備えた暗号アルゴリズムの識別装置について説明した。
（ａ）実施の形態１又は実施の形態２における暗号アルゴリズム識別装置について、複数の暗号アルゴリズムが学習でき、識別可能な暗号アルゴリズム識別装置。
【００４７】
実施の形態４．
図１３〜図１７を用いて実施の形態４を説明する。
実施の形態４は、暗号アルゴリズム識別システムに関する。
【００４８】
図１３は、実施の形態４の暗号アルゴリズム識別システム１００３の構成例を表す図である。
実施の形態３の暗号アルゴリズム識別装置１０２の内部に機能を追加した暗号アルゴリズム識別装置１０３を備える。
暗号アルゴリズム識別装置１０３は、暗号アルゴリズム識別システム１００３を利用した際に利用する暗号アルゴリズムモデルを表すオペコードごとの出現回数（以下、暗号アルゴリズムモデル情報５００と呼ぶ）を入力、および出力することができる。
その他の構成については暗号アルゴリズム識別システム１００２と同じである。
なお、暗号アルゴリズムモデル情報５００に示されている暗号アルゴリズムモデルは、演算アルゴリズムモデルの例である。
【００４９】
図１４は、暗号アルゴリズム識別装置１０３の構成例を示している。
暗号アルゴリズム識別装置１０３の構成は、実施の形態３の暗号アルゴリズム識別装置１０２（図９）の暗号アルゴリズムモデル生成部１１０に暗号アルゴリズムモデル情報入力部１１４と、暗号アルゴリズムモデル情報出力部１１５とを追加したものである。
暗号アルゴリズムモデル情報入力部１１４は、外部より、暗号アルゴリズムモデル情報５００を入力する。暗号アルゴリズムモデル情報入力部１１４は、演算アルゴリズムモデル入力部の例となる。
また、暗号アルゴリズムモデル情報出力部１１５は、暗号アルゴリズムモデル情報入力部１１４により入力され、暗号アルゴリズムモデル記録部１１３に記録されている暗号アルゴリズムモデル情報５００を出力装置に出力する。
【００５０】
また、図１４に示す構成に代えて、図１５に示す構成であってもよい。
つまり、図１４は、実施の形態２において説明した暗号アルゴリズムモデル修正部１２５を含むものであるが、実施の形態１のように暗号アルゴリズムモデル修正部１２５を含まない構成であってもよい。
【００５１】
また、図１４及び図１５には、オペコード抽出部１１１及び学習結果集計部１１２が含まれるが、これらオペコード抽出部１１１及び学習結果集計部１１２を省略し、暗号アルゴリズム識別装置１０３では暗号アルゴリズムモデルは生成せずに、外部で生成された暗号アルゴリズムモデルを入力するのみとしてもよい。
また、図１４及び図１５には、暗号アルゴリズム判定結果記録部１２６が含まれるが、この暗号アルゴリズム判定結果記録部１２６を省略してもよい。
【００５２】
以下に、図１６及び図１７を用いて暗号アルゴリズム識別システム１００３の動作を説明する。
図１６及び図１７は、暗号アルゴリズム識別システム１００３の動作を表すフローチャートである。
ここで、１３５以下の通し番号の処理に関しては実施の形態３の暗号アルゴリズム識別システム１００２の動作と同様である。
実施の形態４にて追加したＳ１３６〜Ｓ１４０に関して説明する。
【００５３】
（図１２：Ｓ１３６）次に学習する暗号アルゴリズムについて、暗号アルゴリズムモデル情報５００を利用する場合はＵ１３７へ進む。そうでない場合、すなわち直接プログラムを入力する場合はＵ１２２へ進む。
（図１２：Ｓ１３７）ユーザは暗号アルゴリズムモデル情報５００を暗号アルゴリズム識別装置１０３に入力する。入力された暗号アルゴリズムモデル情報５００は、暗号アルゴリズムモデル情報入力部１１４に送られる。
（図１２：Ｓ１３８）暗号アルゴリズムモデル情報入力部１１４は入力された暗号アルゴリズムモデル情報５００のデータ形式等が正しければ暗号アルゴリズムモデル記録部１１３へ暗号アルゴリズムモデル情報５００を入力しＳ１３９へ進む。また、入力された暗号アルゴリズムモデル情報５００が間違っていれば、Ｎの値を１減らして、Ｓ１２５へ進む。
（図１２：Ｓ１３９）暗号アルゴリズムモデル記録部１１３は、暗号アルゴリズムモデル情報入力部１１４から入力された暗号アルゴリズムモデル情報５００を暗号アルゴリズムＮとして登録する。
（図１２：Ｓ１４０）暗号アルゴリズムモデル情報出力部１１５は、暗号アルゴリズムモデル記録部１１３から暗号アルゴリズムモデル１〜Ｎを取得し、出力する。
【００５４】
実施の形態１〜３では、暗号アルゴリズムを一通り識別するたびに暗号アルゴリズムモデルを生成しなくてはならない。
実施の形態４において、暗号アルゴリズムモデル情報入力部１１４と暗号アルゴリズムモデル情報出力部１１５を追加し、生成した暗号アルゴリズムモデル情報の読み込み、出力を行うことで、暗号アルゴリズムモデルの再利用が可能となり、利便性が向上する。
【００５５】
以上、本実施の形態では、実施の形態１〜３の暗号アルゴリズムの識別装置に以下の機能を備えた暗号アルゴリズムの識別装置について説明した。
（ａ）実施の形態１〜３における暗号アルゴリズム識別装置について、暗号アルゴリズムモデルの情報を入出力可能な暗号アルゴリズムモデル生成装置。
【００５６】
なお、以上の説明では、識別対象プログラムに用いられている暗号アルゴリズムを識別する処理を説明したが、識別するアルゴリズムは、暗号アルゴリズムに限らず、同様の手順にて他の種類の演算プログラムの識別にも利用することができる。
また、以上の説明では、暗号アルゴリズムモデルを生成又は入力した後に、識別対象プログラムのオペコードごとのオペコード出現回数を計数して、識別対象プログラムと暗号アルゴリズムとの適合度を算出したが、順序を逆にして、識別対象プログラムのオペコードごとのオペコード出現回数を計数した後に、暗号アルゴリズムモデルを生成又は入力してもよい。
【００５７】
最後に実施の形態１〜４に示した暗号アルゴリズム識別装置１００〜１０３のハードウェア構成例について説明する。
図１８は、実施の形態１〜４に示す暗号アルゴリズム識別装置１００〜１０３のハードウェア資源の一例を示す図である。なお、図１８の構成は、あくまでも暗号アルゴリズム識別装置１００〜１０３のハードウェア構成の一例を示すものであり、暗号アルゴリズム識別装置１００〜１０３のハードウェア構成は図１８に記載の構成に限らず、他の構成であってもよい。
【００５８】
図１８において、暗号アルゴリズム識別装置１００〜１０３は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。更に、ＣＰＵ９１１は、通信ボード９１５、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００５９】
通信ボード９１５は、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００６０】
上記プログラム群９２３には、実施の形態１〜４の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、実施の形態１〜４の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の比較」、「〜の抽出」、「〜の計数」、「〜の算出」、「〜の記録」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜４で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６１】
また、実施の形態１〜４の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１〜４の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜４の「〜部」の手順や方法をコンピュータに実行させるものである。
【００６２】
このように、実施の形態１〜４に示す暗号アルゴリズム識別装置１００〜１０３は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【００６３】
【図１】実施の形態１における暗号アルゴリズム識別システム１０００の構成例を示す図。
【図２】実施の形態１における暗号アルゴリズム識別装置１００の構成例を示す図。
【図３】実施の形態１における暗号アルゴリズム識別システム１０００の動作例を説明するフローチャート。
【図４】実施の形態１における暗号アルゴリズム識別システム１０００の動作例を説明するフローチャート。
【図５】実施の形態２における暗号アルゴリズム識別システム１００１の構成例を示す図。
【図６】実施の形態２における暗号アルゴリズム識別装置１０１の構成例を示す図。
【図７】実施の形態２における暗号アルゴリズム識別システム１００１の動作例を説明するフローチャート。
【図８】実施の形態３における暗号アルゴリズム識別システム１００２の構成例を示す図。
【図９】実施の形態３における暗号アルゴリズム識別装置１０２の構成例を示す図。
【図１０】実施の形態３における暗号アルゴリズム識別装置１０２の構成例を示す図。
【図１１】実施の形態３における暗号アルゴリズム識別システム１００２の動作例を説明するフローチャート。
【図１２】実施の形態３における暗号アルゴリズム識別システム１００２の動作例を説明するフローチャート。
【図１３】実施の形態４における暗号アルゴリズム識別システム１００３の構成例を示す図。
【図１４】実施の形態４における暗号アルゴリズム識別装置１０３の構成例を示す図。
【図１５】実施の形態４における暗号アルゴリズム識別装置１０３の構成例を示す図。
【図１６】実施の形態４における暗号アルゴリズム識別システム１００３の動作例を説明するフローチャート。
【図１７】実施の形態４における暗号アルゴリズム識別システム１００３の動作例を説明するフローチャート。
【図１８】実施の形態１〜４における暗号アルゴリズム識別装置１００〜１０３のハードウェア構成例を示す図。
【符号の説明】
【００６４】
１００  暗号アルゴリズム識別装置、１０１  暗号アルゴリズム識別装置、１０２  暗号アルゴリズム識別装置、１０３  暗号アルゴリズム識別装置、１１０  暗号アルゴリズムモデル生成部、１１１  オペコード抽出部、１１２  学習結果集計部、１１３  暗号アルゴリズムモデル記録部、１１４  暗号アルゴリズムモデル情報入力部、１１５  暗号アルゴリズムモデル情報出力部、１２０  暗号アルゴリズム識別部、１２１  関数抽出部、１２２  オペコード抽出部、１２３  適合度算出部、１２４  暗号アルゴリズム判定部、１２５  暗号アルゴリズムモデル修正部、１２６  暗号アルゴリズム判定結果記録部、１３０  暗号アルゴリズム識別結果出力部、２００  学習する暗号アルゴリズムを実装したプログラム、２０１  学習する暗号アルゴリズムを実装したプログラム、３００  暗号アルゴリズムモデル、３０１  暗号アルゴリズムモデル、４００  識別対象プログラム、５００  暗号アルゴリズムモデル情報、１０００  暗号アルゴリズム識別システム、１００１  暗号アルゴリズム識別システム、１００２  暗号アルゴリズム識別システム、１００３  暗号アルゴリズム識別システム。
【図１】
2008299361.tif 000007
【図２】
2008299361.tif 000008
【図３】
2008299361.tif 000009
【図４】
2008299361.tif 000010
【図５】
2008299361.tif 000011
【図６】
2008299361.tif 000012
【図７】
2008299361.tif 000013
【図８】
2008299361.tif 000014
【図９】
2008299361.tif 000015
【図１０】
2008299361.tif 000016
【図１１】
2008299361.tif 000017
【図１２】
2008299361.tif 000018
【図１３】
2008299361.tif 000019
【図１４】
2008299361.tif 000020
【図１５】
2008299361.tif 000021
【図１６】
2008299361.tif 000022
【図１７】
2008299361.tif 000023
【図１８】
2008299361.tif 000024