(57)【特許請求の範囲】
【請求項１】
アプリケーションから、該アプリケーションが実行したい暗号プロトコル仕様を受信する実行・管理モジュールと、
暗号プロトコルの仕様が記述された定義ファイルの中から、前記実行・管理モジュールが受信した、前記アプリケーションが実行したい暗号プロトコル仕様に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成するコンパイラ言語変換モジュールと、
該コンパイラ記述言語をコンパイルして実行ファイルを生成するコンパイラモジュールと、を備え、
前記実行・管理モジュールが、前記暗号プロトコルの仕様が記述されたファイルを送信した者であるＩｎｉｔｉａｔｏｒと、前記Ｉｎｉｔｉａｔｏｒから送信されたファイルを受信する者であるＲｅｓｐｏｎｄｅｒとの区分を取得し、前記生成した実行ファイルにより、前記Ｉｎｉｔｉａｔｏｒ又は前記Ｒｅｓｐｏｎｄｅｒとして、前記暗号プロトコル仕様を実行することを特徴とする暗号プロトコル実行装置。
【請求項２】
前記定義ファイルが、少なくとも関数、データ、エンティティ、フローで構成されていることを特徴とする請求項１に記載の暗号プロトコル実行装置。
【請求項３】
前記定義ファイルに電子署名が付加されていることを特徴とする請求項１に記載の暗号プロトコル実行装置。
【請求項４】
前記定義ファイルが、前記暗号プロトコル仕様を実行する双方のエンティティの記述を含むことを特徴とする請求項１に記載の暗号プロトコル実行装置。
【請求項５】
前記定義ファイルが、ＸＭＬで記述されていることを特徴とする請求項１に記載の暗号プロトコル実行装置。
【請求項６】
前記コンパイラ言語変換モジュールが前記ＸＭＬで記述された定義ファイルの構造解析、意味解析を行って、ソースコードを生成することを特徴とする請求項５に記載の暗号プロトコル実行装置。
【請求項７】
前記定義ファイルが、同種の関数定義をまとめて記述していることを特徴とする請求項１に記載の暗号プロトコル実行装置。
【請求項８】
請求項１に記載の暗号プロトコル実行装置が実行する暗号プロトコル実行方法であって、
前記実行・管理モジュールが、アプリケーションから、該アプリケーションが実行したい暗号プロトコル仕様を受信する第１のステップと、
前記コンパイラ言語変換モジュールが、暗号プロトコルの仕様が記述された定義ファイルの中から、前記実行・管理モジュールが受信した前記アプリケーションが実行したい暗号プロトコル仕様に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成する第２のステップと、
前記コンパイラモジュールが、該コンパイラ記述言語をコンパイルして実行ファイルを生成する第３のステップと、
前記実行・管理モジュールが、前記暗号プロトコルの仕様が記述されたファイルを送信した者であるＩｎｉｔｉａｔｏｒと、前記Ｉｎｉｔｉａｔｏｒから送信されたファイルを受信する者であるＲｅｓｐｏｎｄｅｒとの区分を取得し、前記生成した実行ファイルにより、前記Ｉｎｉｔｉａｔｏｒ又は前記Ｒｅｓｐｏｎｄｅｒとして、前記暗号プロトコル仕様を実行する第４のステップと、
を備えたことを特徴とする暗号プロトコル実行方法。
【請求項９】
コンピュータに、請求項８に記載の暗号プロトコル実行方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンティティ間で、暗号プロトコルを実行する暗号プロトコル実行装置、暗号プロトコル実行方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスでは、利用者を認証する認証プロトコルや、暗号化するための鍵を交換する鍵交換プロトコルが使用されている。
【０００３】
従来は、このような認証プロトコルや鍵交換プロトコルを使用するシステムにおいては、１つのプロトコルを実装することがほとんどであった。また、機器ごとにプロトコルを変更する場合は、その分個別にプロトコルを実装せざるを得なかった（例えば、特許文献１参照。）。また、更新する場合には、プログラムをすべて入れ替えなければならなかった。ＩＰＳＥＣなどは、複数のプロトコルを利用可能であるが、最適なプロトコルを導出しているとは言えず、また実行できるプロトコルも２種類程度と非常に限られていた。
【特許文献１】特開２００４−１１２０３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
つまり、上記のような従来の技術では、プロトコルに問題が発生した場合、実行プログラムをすべて交換しなければならず、非常にコストがかかってしまうという問題点があった。また、暗号プロトコルが使用する暗号アルゴリズムに欠陥が見つかった場合も、同様にプロトコルごと交換しなければならなかった。さらに、こうしたプログラムの入れ替えなしに、動的にプロトコルを変更することは不可能であった。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、通信相手によって、暗号プロトコルを任意に更新あるいは変更することが可能な暗号プロトコル実行装置、暗号プロトコル実行方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【０００７】
（１）本発明は、アプリケーション（例えば、図１のアプリケーション６に相当）から、該アプリケーションが実行したい暗号プロトコル機能を受信する実行・管理モジュール（例えば、図１の実行・管理モジュール５に相当）と、定義ファイルの中から、前記実行・管理モジュールが受信した前記アプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成するコンパイラ言語変換モジュール（例えば、図１のコンパイラ言語変換モジュール３に相当）と、該コンパイラ記述言語をコンパイルして実行ファイルを生成するコンパイラモジュール（例えば、図１のコンパイラモジュール４に相当）と、を備え、前記実行・管理モジュールが前記生成した実行ファイルにより、前記暗号プロトコル機能を実行することを特徴とする暗号プロトコル実行装置を提案している。
【０００８】
この発明によれば、実行・管理モジュールが、アプリケーションから、そのアプリケーションが実行したい暗号プロトコル機能を受信し、コンパイラ言語変換モジュールが、定義ファイルの中から、実行・管理モジュールが受信したアプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成する。そして、コンパイラモジュールが、コンパイラ記述言語をコンパイルして実行ファイルを生成し、実行・管理モジュールが生成した実行ファイルにより、暗号プロトコル機能を実行する。したがって、アプリケーションからの要求に応じて、暗号プロトコルを任意に更新、変更することができる。
【０００９】
（２）本発明は、（１）の暗号プロトコル実行装置について、前記定義ファイルが、少なくとも関数、データ、エンティティ、フローで構成されていることを特徴とする暗号プロトコル実行装置を提案している。
【００１０】
この発明によれば、定義ファイルが、少なくとも関数、データ、エンティティ、フローで構成されている。したがって、あらゆるプロトコルを簡単に記述することができる。
【００１１】
（３）本発明は、（１）の暗号プロトコル実行装置について、前記定義ファイルに電子署名が付加されていることを特徴とする暗号プロトコル実行装置を提案している。
【００１２】
この発明によれば、定義ファイルに電子署名が付加されている。したがって、この電子署名を検証することによって、定義ファイルの正当性を確認することができる。
【００１３】
（４）本発明は、（１）の暗号プロトコル実行装置について、前記定義ファイルが、前記暗号プロトコルを実行する双方のエンティティの記述を含むことを特徴とする暗号プロトコル実行装置を提案している。
【００１４】
この発明によれば、定義ファイルが、暗号プロトコルを実行する双方のエンティティの記述を含む。したがって、１つの定義ファイルから複数の異なる実行モジュールが生成される。
【００１５】
（５）本発明は、（１）の暗号プロトコル実行装置について、前記定義ファイルが、ＸＭＬで記述されていることを特徴とする暗号プロトコル実行装置を提案している。
【００１６】
この発明によれば、定義ファイルが、ＸＭＬで記述されている。そのため、ユーザにとって可読性があり、しかも、編集が容易で汎用性に優れている。
【００１７】
（６）本発明は、（５）の暗号プロトコル実行装置について、前記コンパイラ言語変換モジュールが前記ＸＭＬで記述された定義ファイルの構造解析、意味解析を行って、ソースコードを生成することを特徴とする暗号プロトコル実行装置を提案している。
【００１８】
この発明によれば、コンパイラ言語変換モジュールがＸＭＬで記述された定義ファイルの構造解析、意味解析を行って、ソースコードを生成する。つまり、構造解析では、ＸＭＬデータで記述された定義ファイルをいくつかのブロックに分解し、意味解析では、構造解析により分解されたブロック内の共通要素に基づいて、各ブロックの紐付けを行い、エンティティで必要となるデータやフローを収集し、格納し直してソースコードを生成する。
【００１９】
（７）本発明は、（１）の暗号プロトコル実行装置について、前記定義ファイルが、同種の関数定義をまとめて記述していることを特徴とする暗号プロトコル実行装置を提案している。
【００２０】
この発明によれば、定義ファイルが、同種の関数定義をまとめて記述している。したがって、これにより、コードサイズが小さくなることから、冗長性を抑制することができる。
【００２１】
（８）本発明は、アプリケーションが実行したい暗号プロトコル機能を実行・管理モジュールに送信する第１のステップ（例えば、図６のステップＳ１０１に相当）と、定義ファイル内の電子署名を検証し、正当性が確認できたときに、該定義ファイルを格納する第２のステップ（例えば、図６のステップＳ１０２に相当）と、前記定義ファイルの中から、前記実行・管理モジュールが受信した前記アプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成する第３のステップ（例えば、図６のステップＳ１０３に相当）と、該コンパイラ記述言語をコンパイルして実行ファイルを生成する第４のステップ（例えば、図６のステップＳ１０４に相当）と、前記実行・管理モジュールが前記生成した実行ファイルにより、前記暗号プロトコル機能を実行する第５のステップ（例えば、図６のステップＳ１０５に相当）と、を備えたことを特徴とする暗号プロトコル実行方法を提案している。
【００２２】
この発明によれば、アプリケーションが実行したい暗号プロトコル機能を実行・管理モジュールに送信し、定義ファイル内の電子署名を検証し、正当性が確認できたときに、定義ファイルを格納する。そして、定義ファイルの中から、実行・管理モジュールが受信したアプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成し、コンパイラ記述言語をコンパイルして実行ファイルを生成する。実行・管理モジュールは、生成した実行ファイルにより、暗号プロトコル機能を実行する。したがって、アプリケーションからの要求に応じて、暗号プロトコルを任意に更新、変更することができる。
【００２３】
（９）本発明は、コンピュータに、アプリケーションが実行したい暗号プロトコル機能を実行・管理モジュールに送信する第１のステップ（例えば、図６のステップＳ１０１に相当）と、定義ファイル内の電子署名を検証し、正当性が確認できたときに、該定義ファイルを格納する第２のステップ（例えば、図６のステップＳ１０２に相当）と、前記定義ファイルの中から、前記実行・管理モジュールが受信した前記アプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成する第３のステップ（例えば、図６のステップＳ１０３に相当）と、該コンパイラ記述言語をコンパイルして実行ファイルを生成する第４のステップ（例えば、図６のステップＳ１０４に相当）と、前記実行・管理モジュールが前記生成した実行ファイルにより、前記暗号プロトコル機能を実行する第５のステップ（例えば、図６のステップＳ１０５に相当）と、を実行させるためのプログラムを提案している。
【００２４】
この発明によれば、アプリケーションが実行したい暗号プロトコル機能を実行・管理モジュールに送信し、定義ファイル内の電子署名を検証し、正当性が確認できたときに、定義ファイルを格納する。そして、定義ファイルの中から、実行・管理モジュールが受信したアプリケーションが実行したい暗号プロトコル機能に対応する定義ファイルを読み込み、解釈してコンパイラ記述言語を生成し、コンパイラ記述言語をコンパイルして実行ファイルを生成する。実行・管理モジュールは、生成した実行ファイルにより、暗号プロトコル機能を実行する。したがって、アプリケーションからの要求に応じて、暗号プロトコルを任意に更新、変更することができる。
【発明の効果】
【００２５】
本発明によれば、認証・鍵共有プロトコルを動的に更新することが可能となるという効果がある。したがって、相手ごとにプロトコルを変更したり、セキュリティフローが見つかった場合に直ちにプロトコル仕様を更新したりできるようになる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２７】
＜暗号プロトコル実行装置の構成＞
本実施形態に係る暗号プロトコル実行装置は、図１に示すように、プロトコル定義ファイル１と、環境パラメータ取得モジュール２と、コンパイラ言語変換モジュール３と、コンパイラモジュール４と、実行・管理モジュール５と、アプリケーション６とから構成されている。
【００２８】
プロトコル定義ファイル１は、暗号プロトコルの仕様が記述されたファイルであり、暗号プロトコルの仕様に従った処理の実行に係る各種の定義や実行ステップを記述するための特殊な記述言語で記述されている。つまり、あらゆるプロトコルを簡単に記述できるように暗号プロトコル記述言語を関数、データ、エンティティ、及びフローから構成している。
【００２９】
さらに、詳細には、プロトコル目的記述、エンティティ定義記述、データ定義記述、およびプロトコル定義記述から構成される。なお、データ定義記述には、関数定義記述が含まれる。また、プロトコル定義記述は、ＸＭＬ記述に基づいて分類されている。これにより、ユーザにとって、可読性があり、編集容易で汎用性をもたせることができる。また、プロトコル定義ファイル１には、電子署名が付加されている。したがって、この電子署名を検証することによって、定義ファイルの正当性を確認することができる。
【００３０】
環境パラメータ取得モジュール２は、コンパイラ言語変換モジュール３が必要とする各種パラメータを取得しコンパイラ言語変換モジュール３に入力する。また、プロトコル定義ファイルの送受信を仲介する。コンパイラ言語変換モジュール３は、プロトコル記述言語形式で記述されたプロトコル定義ファイル１を読み込み、実行ファイルを出力する。
【００３１】
実行・管理モジュール５は、生成された実行モジュールを実際に動作させてプロトコルを実行する。また、コンパイル及びプロトコル実行後に、ＯＫ／ＮＧの結果をアプリケーション６に返信する。アプリケーション６は、実行したいプロトコル機能（認証や鍵共有）をコンパイラに与える。また、アプリケーション６は、機能ごと（認証プロトコル、鍵共有プロトコル）に共通化されたインターフェースで暗号アルゴリズムを呼び出すことができる。あるいは、アプリケーション６からプロトコル定義ファイル１名を与えて実行することもできる。
【００３２】
暗号アルゴリズムなどは、外部ライブラリを呼ぶことで、プロトコルを実行することとする。従って、コンパイラモジュール４は、コンパイル処理時に外部ライブラリのヘッダファイルを読み込み、コンパイルを行う。また、あらゆる環境で同一のプロトコル定義ファイルをコンパイル可能とするため、ヘッダファイルのフォーマットは共通化する。具体的には、以下の機能のヘッダファイルを共通化する。
１）共通鍵暗号アルゴリズム
２）公開鍵暗号アルゴリズム
３）電子署名アルゴリズム
４）ハッシュ関数アルゴリズム
５）メッセージ認証子生成アルゴリズム
６）鍵共有アルゴリズム
７）乱数生成アルゴリズム
【００３３】
また、暗号アルゴリズムに対して、共通ＩＤを付与し、ヘッダファイルがどのアルゴリズムのヘッダファイルなのかを、コンパイラモジュールが識別可能とする。環境パラメータ取得モジュールは、実行管理モジュールによってコールされる。環境パラメータ取得機能は、以下のパラメータを取得し、取得したパラメータを実行管理モジュールに返す。
１）各暗号アルゴリズム、関数のＡＰＩ（ヘッダファイル）
２）鍵等事前に所有しているデータを格納したファイル
３）プロトコル定義ファイル
４）ＩｎｉｔｉａｔｅｒとＲｅｓｐｏｎｄｅｒの区分
【００３４】
２つのエンティティのどちらか一方がプロトコル定義ファイルを送信し、他方が受信した場合、送信した方がＩｎｉｔｉａｔｏｒ、受信した方がＲｅｓｐｏｎｄｅｒとなる。通常、一方のエンティティが、最初にプロトコル定義ファイル１の要求を行い、他方のモジュールがプロトコル定義ファイル１を送信する。クライアント−サーバモデルの場合、クライアントがプロトコル定義ファイル１を受信するＲｅｓｐｏｎｄｅｒ、サーバがプロトコル定義ファイル１を送信するＩｎｉｔｉａｔｏｒとなる。なお、どちらが、Ｉｎｉｔｉａｔｏｒになるかは、別途、エンティティ間で動的に決定してもよい。
【００３５】
＜コンパイラ言語変換モジュールの機能＞
コンパイラ言語変換モジュールの処理構成は、図２に示すようになっており、コンパイラ言語変換モジュールは、構造解析機能、意味解析機能、各種テーブル生成機能を有する。
【００３６】
構造解析機能では、プロトコル定義ファイルのＸＭＬを解析し、データテーブルおよび解析テーブルを生成する。具体的には、１）ノード取り出し、２）データテーブルレコード追加、３）解析テーブルレコード追加、４）データ格納、５）ｄａｔａ−ｌｉｓｔ生成を実行する。
【００３７】
また、構造解析機能では、データテーブルの構造解析を行う。具体的には、１）構文チェック、２）ｆｕｎｃｔｉｏｎ実行結果格納用ｄａｔａをｄａｔａ  ｔａｂｌｅに追加する。なお、この処理はｄａｔａを最初に行う。構造解析終了後のイメージを図２右上に示す。
【００３８】
意味解析機能では、データテーブル上で意味解析を行い、データテーブルおよび解析テーブルに反映する。具体的には、１）ｄａｔａ−ｌｉｓｔのリンク生成、２）リレーションチェック、３）解析テーブルのｅｎｔｉｔｙ項目データ生成を行う。なお、この処理はｆｌｏｗ  ｔａｂｌｅの各レコードについて行う。意味解析終了後のイメージを図２右下に示す。
【００３９】
＜解析テーブル、データテーブル、ソース生成テーブルの関係＞
解析テーブル、データテーブル、ソース生成テーブルの関係を図３に示す。
データテーブルには、プロトコル定義ファイルを記述するＸＭＬを実際に解析した内容（データ）を格納する。データテーブルは、リレーションの関係を持っており、各テーブルは他テーブルのデータを参照するためにｉｄ項目のデータを持っている。
【００４０】
ソース生成テーブルは、実際にソースを生成する際に利用するテーブルである。内容はデータテーブルへのインデックスとし、データの参照を容易にするためデータを直接参照するポインタを用意する。なお、ソース生成時にはこのテーブルとデータテーブルを合わせて利用する。
【００４１】
解析テーブルの内容は、データテーブルへのインデックスとし、データの参照を容易にするためデータを直接参照するポインタを用意する。また、ソース生成テーブルの構築を容易にするためｅｎｔｉｔｙごとの使用をチェックする。
【００４２】
データテーブルは、他テーブルの項目をｉｄで持つが、解析テーブル／ソース生成テーブルはｉｄに対応したデータテーブル上のポインタを直接持つ。
【００４３】
＜ソース生成テーブルの構成＞
ソース生成テーブルは、図４に示すように、アルゴリズムテーブル、Ｄａｔａ、Ｆｕｎｃｔｉｏｎ、Ｆｌｏｗ、Ｓｃｒｉｐｔからなり、アルゴリズムテーブルがヘッダファイルを提供し、Ｄａｔａが変数の宣言と初期化、Ｆｕｎｃｔｉｏｎが関数の定義、Ｆｌｏｗがフロー、Ｓｃｒｉｐｔがボディを与えて、ソースコードを生成する。具体的には、エンティティで必要になるデータやフロー、関数をそれぞれ、Ｄａｔａ、Ｆｕｎｃｔｉｏｎ、Ｆｌｏｗに格納して、ソースコードを生成する。なお、図示しなかったが、必要に応じてエラー処理を付加してもよい。
【００４４】
＜プロトコル定義ファイルと各テーブルの関係＞
プロトコル定義ファイルと各テーブルの関係を図５に示す。図５によれば、プロトコル定義ファイルからデータテーブル群が生成され、プロトコル定義ファイルとデータテーブル群から解析テーブルが生成される。
【００４５】
さらに、解析テーブルとデータテーブル群からソースコード生成用テーブル群が生成され、ソースコード生成用テーブル群からソースコードが得られる。このソースコードをコンパイルすることにより、実行プログラムが生成される。
【００４６】
＜暗号プロトコル実行装置の処理＞
次に、図６を用いて、暗号プロトコル実行装置の処理について説明する。
まず、アプリケーション６が実行したい暗号プロトコル機能（認証プロトコル、鍵共有プロトコル）を実行・管理モジュール５に送信する（ステップＳ１０１）。コンパイラ言語変換モジュール３は、プロトコル定義ファイル１内の電子署名を検証し、正当性が確認できたときに、このプロトコル定義ファイル１を格納する（ステップＳ１０２）。
【００４７】
プロトコル定義ファイル１の中から、実行・管理モジュール５が受信したアプリケーション６が実行したい暗号プロトコル機能に対応するプロトコル定義ファイルを読み込み、解釈してコンパイラ記述言語を生成する（ステップ１０３）。
【００４８】
そして、コンパイラモジュール４が、コンパイラ記述言語をコンパイルして実行ファイルを生成し（ステップＳ１０４）、実行・管理モジュール５が生成した実行ファイルにより、暗号プロトコル機能を実行する（ステップＳ１０５）。
【００４９】
したがって、本実施形態によれば、認証・鍵共有プロトコルを動的に更新することが可能となることから、相手ごとにプロトコルを変更したり、セキュリティフローが見つかった場合に直ちにプロトコル仕様を更新したりできるようになる。
【００５０】
＜実施例１＞
以下、実施例１として、図７を用いて、ｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅの生成を具体例により示す。
まず、図７のｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ−ｌｉｓｔの１レコードにつき１関数を記述する。そして、図７のｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ−ｌｉｓｔよりｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ  ｔａｂｌｅの対象レコードを取得し、対応するｆｕｎｃｔｉｏｎを呼び出すソースコードを生成する。
【００５１】
このとき、ソースコードは以下の要素で構成する。
１行目：関数宣言
２行目：関数呼び出し
【００５２】
関数名は、ｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ  ｔａｂｌｅより取得する。呼び出す関数の関数名はｆｕｎｃｔｉｏｎ  ｔａｂｌｅ対象レコードのデータより生成する。引数はｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ  ｔａｂｌｅの対象レコードにあるｄａｔａ−ｌｉｓｔより取得し、先頭から順に第１引数、第２引数・・・となる。引数名は、ｄａｔａ−ｌｉｓｔ対象レコードよりｄａｔａ  ｔａｂｌｅ対象レコードを取得しｌａｂｅｌ項目の内容をこれに充てる。なお、ｆｕｎｃｔｉｏｎ  ｔａｂｌｅのａｌｇｏｒｉｔｈｍ項目とプロトコル定義ファイル上のａｌｇｏｒｉｔｈｍの記述は一致しない。この対応については定義ファイルを参照する必要がある。
【００５３】
上記の処理の結果、下記のようなソースコードが得られる。
ｆｕｎｃ＿ａ（）：：＝
ａａａ＿ｆｒｏｍ（ｄ１、ｆｕｎｃ＿ｂ＿ｒｅｔ、ｆｕｎｃ＿ａ＿ｒｅｔ）
【００５４】
＜実施例２＞
以下、実施例２として、図８を用いて、ｆｌｏｗの生成を具体例により示す。
まず、図８のｆｌｏｗ−ｌｉｓｔの１レコードにつき１関数を記述する。そして、図８のｆｌｏｗ−ｌｉｓｔよりｆｌｏｗ  ｔａｂｌｅの対象レコードを取得し、対応するｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅおよびｓｅｎｄもしくはｒｅｃｖ関数を呼び出すソースコードを生成する。
【００５５】
ソースコードは、以下の要素で構成する。
１）ｆｒｏｍの場合：
１行目：関数宣言
２行目以降：ｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ関数呼び出し
最終行：ｓｅｎｄ関数呼び出し
２）ｔｏの場合：
１行目：関数宣言
２行目：ｒｅｃｖ関数呼び出し
３行目移行：ｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ関数呼び出し
【００５６】
呼び出す関数は、ｆｌｏｗ  ｔａｂｌｅ対象レコードのｄａｔａ−ｌｉｓｔにｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ−ｉｄの記述がされたもの全てと、それらのｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅが持つｄａｔａ−ｌｉｓｔにｆｕｎｃｔｉｏｎＩｎｓｔａｎｃｅ−ｉｄの記述がされたもの、と再帰的に取得する。
【００５７】
関数呼び出し順はネストの深い側からとする。ただし、互いに関連のない関数同士はネストを考慮する必要はない。
【００５８】
引数は、ｄａｔａ−ｌｉｓｔより取得し、先頭から順に第１引数、第２引数・・・となる。引数名はｄａｔａ−ｌｉｓｔ対象レコードよりdata  table対象レコードを取得しｌａｂｅｌ項目の内容をこれに充てる。
【００５９】
上記の処理の結果、下記のようなソースコードが得られる。
ｆｌｏｗ＿１（）：：＝
ｆｕｎｃ＿ｂ（）
ｆｕｎｃ＿ａ（）
ｓｅｎｄ（ｄ１、ｆｕｎｃ＿ａ＿ｒｅｔ）
【００６０】
なお、暗号プロトコル実行装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを暗号プロトコル実行装置に読み込ませ、実行することによって本発明の暗号プロトコル実行装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００６１】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６２】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６３】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００６４】
【図１】本実施形態に係る暗号プロトコル実行装置の構成図である。
【図２】本実施形態に係るコンパイラ言語変換モジュールの機能を示す図である。
【図３】本実施形態に係る解析テーブル、データテーブル、ソース生成テーブルの関係を示す図である。
【図４】本実施形態に係るソース生成テーブルの構成を示す図である。
【図５】本実施形態に係るプロトコル定義ファイルと各テーブルの関係を示す図である。
【図６】本実施形態に係る暗号プロトコル実行装置の処理フローである。
【図７】実施例１に係る処理の概要を示す図である。
【図８】実施例２に係る処理の概要を示す図である。
【符号の説明】
【００６５】
１・・・プロトコル定義ファイル、２・・・環境パラメータ取得モジュール、３・・・コンパイラ言語変換モジュール、４・・・コンパイラモジュール、５・・・実行・管理モジュール、６・・・アプリケーション
【図１】
0005281774.tif 000002
【図２】
0005281774.tif 000003
【図３】
0005281774.tif 000004
【図４】
0005281774.tif 000005
【図５】
0005281774.tif 000006
【図６】
0005281774.tif 000007
【図７】
0005281774.tif 000008
【図８】
0005281774.tif 000009