(57)【特許請求の範囲】
【請求項１】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、
予め定められた状態を含む集合を記憶する集合記憶部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、
前記秘匿共通集合計算プロトコルに従って受けとった暗号文に基づき前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを判定する判定部と
を有し、
前記クライアントは、前記クライアントの状態が前記集合に含まれるかの判定がされてから、更に状態が遷移し、
前記判定部は、前記クライアントの状態が前記集合に含まれるかの判定をしてから、前記クライアントの状態が少なくとも１回以上遷移した後において、前記秘匿共通集合計算プロトコルにより前記クライアントの状態が前記集合に含まれるかを再度判定する、
サーバ。
【請求項２】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、
予め定められた状態を含む集合を記憶する集合記憶部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、
前記秘匿共通集合計算プロトコルに従って受けとった暗号文に基づき前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを判定する判定部と
を有し、
前記クライアントは、発生するイベントに応じて状態を順次に遷移させ、
前記判定部は、前記クライアントの状態が前記サーバの前記集合記憶部が記憶する前記集合に含まれる場合、前記クライアントに異常が発生したと検知する、
サーバ。
【請求項３】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、
予め定められた状態を含む集合を記憶する集合記憶部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、を有し、
前記サーバ側通信部が、前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを前記クライアントの判定部に判定させるために、前記秘匿共通集合計算プロトコルに従って暗号文を送信し、
前記クライアントは、前記クライアントの状態が前記集合に含まれるかの判定がされてから、更に状態が遷移し、
前記判定部は、前記クライアントの状態が前記集合に含まれるかの判定をしてから、前記クライアントの状態が少なくとも１回以上遷移した後において、前記秘匿共通集合計算プロトコルにより前記クライアントの状態が前記集合に含まれるかを再度判定する、
サーバ。
【請求項４】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、
予め定められた状態を含む集合を記憶する集合記憶部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、を有し、
前記サーバ側通信部が、前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを前記クライアントの判定部に判定させるために、前記秘匿共通集合計算プロトコルに従って暗号文を送信し、
前記クライアントは、発生するイベントに応じて状態を順次に遷移させ、
前記判定部は、前記クライアントの状態が前記サーバの前記集合記憶部が記憶する前記集合に含まれる場合、前記クライアントに異常が発生したと検知する、
サーバ。
【請求項５】
受け取ったイベントに応じて状態が遷移するオートマトンを有するサーバ側検知部を有し、
前記クライアントが順次に遷移する当該クライアントの状態を管理する状態管理部を有し、前記状態管理部は、前記クライアントにおいて発生するイベントを入力し、入力したイベントを前記サーバに開示しないで、入力したイベントに応じて遷移した状態を表した値であって前記クライアントに対して秘匿された秘匿状態値を前記サーバ側検知部から取得し、
前記サーバ側検知部は、前記クライアントに対して前記オートマトンを開示しないで、前記入力したイベントに応じて状態を遷移させ、遷移した状態に対応した前記秘匿状態値を前記状態管理部に送信し、
前記状態管理部は、取得した前記秘匿状態値を前記クライアントの状態として管理し、
前記集合記憶部は、前記オートマトンにおける複数の状態のそれぞれに対応する複数の秘匿状態値のうちの一部を前記集合に含まれる状態として記憶する
請求項１または３に記載のサーバ。
【請求項６】
前記サーバ側通信部は、前記集合に含まれる複数の状態のそれぞれを表す値を解とする多項式の係数のそれぞれを、準同型性を有する暗号化方式で暗号化した送信暗号文を前記クライアントに送信し、
前記サーバ側通信部は、前記送信暗号文および前記クライアントの状態を表す値に基づき、前記多項式の変数に対して前記クライアントの状態を表す値を代入した結果を前記準同型性を有する暗号化方式で暗号化した応答暗号文を前記クライアントから受信し、
前記サーバ側通信部は、前記応答暗号文を復号し、
前記判定部は、前記応答暗号文の復号結果から、前記クライアントの状態が前記サーバの前記集合記憶部が記憶する前記集合に含まれるかを判定する
請求項１または２に記載のサーバ。
【請求項７】
前記サーバ側通信部は、前記クライアントの複数の状態のそれぞれを表す値を解とする多項式の係数のそれぞれを、準同型性を有する暗号化方式で暗号化した送信暗号文を前記クライアントから受信し、
前記サーバ側通信部は、前記クライアントに応答暗号文を復号させ、前記判定部に、前記応答暗号文の復号結果から前記クライアントの状態が前記サーバの前記集合記憶部が記憶する前記集合に含まれるかを判定させるために、前記送信暗号文および前記サーバの前記集合記憶部が記憶する前記集合に含まれる複数の状態のそれぞれを表す値に基づき、前記多項式の変数に対して前記集合に含まれる複数の状態のそれぞれを表す値を代入した結果を前記準同型性を有する暗号化方式で暗号化した前記応答暗号文を生成して、前記クライアントに送信する
請求項３または４に記載のサーバ。
【請求項８】
予め定められた状態を含む集合を記憶するサーバに接続可能であるクライアントであって、
順次に遷移する当該クライアントの状態を管理する状態管理部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記サーバと通信をするクライアント側通信部と、
前記秘匿共通集合計算プロトコルに従って前記サーバから受け取った暗号文に基づき、前記クライアントの状態が前記サーバが記憶する前記集合に含まれるかを判定する判定部と、
を有し、
前記クライアントは、前記クライアントの状態が前記集合に含まれるかの判定がされてから、更に状態が遷移し、
前記判定部は、前記クライアントの状態が前記集合に含まれるかの判定をしてから、前記クライアントの状態が少なくとも１回以上遷移した後において、前記秘匿共通集合計算プロトコルにより前記クライアントの状態が前記集合に含まれるかを再度判定する、
クライアント。
【請求項９】
予め定められた状態を含む集合を記憶するサーバに接続可能であるクライアントであって、
順次に遷移する当該クライアントの状態を管理する状態管理部と、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記サーバと通信をするクライアント側通信部と、
前記秘匿共通集合計算プロトコルに従って前記サーバから受け取った暗号文に基づき、前記クライアントの状態が前記サーバが記憶する前記集合に含まれるかを判定する判定部と、
を有し、
前記クライアントは、発生するイベントに応じて状態を順次に遷移させ、
前記判定部は、前記クライアントの状態が前記サーバが記憶する前記集合に含まれる場合、前記クライアントに異常が発生したと検知する、
クライアント。
【請求項１０】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバにおける情報処理の方法であって、
予め定められた状態を含む集合を記憶し、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信し、
前記秘匿共通集合計算プロトコルに従って受けとった暗号文に基づき前記クライアントの状態が記憶する前記集合に含まれるかを判定し、
前記クライアントの状態が前記集合に含まれるかの判定をしてから、前記クライアントの状態が少なくとも１回以上遷移した後において、前記秘匿共通集合計算プロトコルにより前記クライアントの状態が前記集合に含まれるかを再度判定する、
方法。
【請求項１１】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバにおける情報処理の方法であって、
予め定められた状態を含む集合を記憶し、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信し、
前記秘匿共通集合計算プロトコルに従って受けとった暗号文に基づき前記クライアントの状態が記憶する前記集合に含まれるかを判定し、
発生するイベントに応じて状態が遷移した後の前記クライアントの状態が前記サーバが記憶する前記集合に含まれる場合、前記クライアントに異常が発生したと検知する、
方法。
【請求項１２】
順次に遷移する状態を管理することができるクライアントに接続可能なサーバにおける情報処理の方法であって、
予め定められた状態を含む集合を記憶し、
互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信し、
前記クライアントの状態が記憶する前記集合に含まれるかを判定させるために、前記秘匿共通集合計算プロトコルに従って暗号文を送信し、
前記クライアントの状態が前記集合に含まれるかの判定がされてから、前記クライアントの状態が少なくとも１回以上遷移した後において、前記秘匿共通集合計算プロトコルにより前記クライアントの状態が前記集合に含まれるかを再度判定させるために、前記秘匿共通集合計算プロトコルに従って暗号文を再度送信する、
方法。
【請求項１３】
コンピュータを請求項１から４のいずれか１項に記載のサーバとして機能させるためのプログラム。
【請求項１４】
コンピュータを請求項８または９に記載のクライアントとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントの状態がサーバに記憶された予め定められた状態に一致するかを検出するシステム、サーバ、クライアント、方法及びプログラムに関する。
【背景技術】
【０００２】
例えばサーバがクライアントの状態を監視し、予め定められた状態となった場合に警告を発生するようなシステムがある。例えば、金融トランザクションを監視して、特定のアカウントへのアクセスが予め定められた回数以上連続した場合等に警告を発生するような場合がある。このような場合、サーバは、クライアントの状態を定期的に取得して、クライアントの状態が予め定められた状態であるかどうかを判断しなければならない。
［先行技術文献］
［特許文献］
特許文献１  特開２００４−３３４３６２号公報
［非特許文献］
非特許文献１  Michael J. Freedman, Kobbi Nissim and Benny Pinkas、 "Efficient Private Matching and Set Intersection"、 Advances in Cryptology EUROCRYPT 2004、Lecture Notes in Computer Science、２００４年
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、サーバがクライアントの状態を定期的に取得して監視した場合、クライアントがどのような状態に遷移しているのかがサーバ側に推測されてしまう可能性がある。
【０００４】
また、クライアントが保有する文字列が、サーバが保有するオートマトンに受理されるか否かを認証する方法として、秘匿状態検知と呼ばれる方法がある。この秘匿状態検知と呼ばれる方法では、クライアントが保有する文字列をサーバに開示せず且つサーバが保有するオートマトンをクライアントに開示せずに認証処理を実行する。このような認証方法を用いれば、クライアントの状態がサーバに対して秘匿されるので、クライアントの状態が推測されてしまうことはない。
【０００５】
しかしながら、秘匿状態検知は、毎回、オートマトンを初期状態に戻し、順次にオートマトンの状態を遷移させながら認証処理を実行しなければならない。従って、定期的にクライアントの状態を監視する場合には、時間が経過する毎に遷移量（処理量）が多くなってしまい、処理負担が大きくなってしまう。
【課題を解決するための手段】
【０００６】
本発明の第１の態様においては、順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、予め定められた状態を含む集合を記憶する集合記憶部と、互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、前記秘匿共通集合計算プロトコルに従って受けとった暗号文に基づき前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを判定する判定部とを有するサーバ、このようなサーバにおける情報処理の方法、および、プログラムを提供する。
【０００７】
本発明の第２の態様においては、順次に遷移する状態を管理することができるクライアントに接続可能なサーバであって、予め定められた状態を含む集合を記憶する集合記憶部と、互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記クライアントと通信するサーバ側通信部と、を有し、前記サーバ側通信部が、前記クライアントの状態が前記集合記憶部が記憶する前記集合に含まれるかを前記クライアントの判定部に判定させるために、前記秘匿共通集合計算プロトコルに従って暗号文を送信するサーバ、このようなサーバにおける情報処理の方法、および、プログラムを提供する。
【０００８】
本発明の第３の態様においては、予め定められた状態を含む集合を記憶するサーバに接続可能であるクライアントであって、順次に遷移する当該クライアントの状態を管理する状態管理部と、互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記サーバと通信をするクライアント側通信部と、前記秘匿共通集合計算プロトコルに従って前記サーバから受け取った暗号文に基づき、前記クライアントの状態が前記サーバが記憶する前記集合に含まれるかを判定する判定部と、を有するクライアントを提供する。
【０００９】
本発明の第４の態様においては、予め定められた状態を含む集合を記憶するサーバに接続可能であるクライアントであって、順次に遷移する当該クライアントの状態を管理する状態管理部と、互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより前記サーバと通信をするクライアント側通信部と、を有し、前記クライアント側通信部は、前記クライアントの状態が前記サーバが記憶する前記集合に含まれるかを判定するために、前記秘匿共通集合計算プロトコルに従って暗号文を送信するクライアントを提供する。
【００１０】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態に係る検出システム１０の機能ブロック図を示す。
【図２】図２は、クライアント２０の状態がサーバの３０が記憶する集合に含まれる複数の状態の何れかに一致するか否かを判断するタイミングを示す。
【図３】図３は、本実施形態に係る検出システム１０における、秘匿共通集合計算プロトコルによる通信処理の一例を示す。
【図４】図４は、第１変形例に係る検出システム１０の機能ブロック図を示す。
【図５】図５は、第１変形例に係る検出システム１０における、秘匿共通集合計算プロトコルによる通信処理の一例を示す。
【図６】図６は、本実施形態の第２変形例に係る検出システム１０の構成を示す。
【図７】図７は、本変形例に係る状態管理部４２およびサーバ側検知部５２を示す。
【図８】図８は、本変形例に係るクライアント２０の状態管理部４２およびサーバ３０のサーバ側検知部５２のそれぞれの機能ブロック構成を示す。
【図９】図９は、本変形例に係るクライアント２０の送信時の処理のフローチャートを示す。
【図１０】図１０は、第１暗号化方式により生成される暗号文の一例を示す。
【図１１】図１１は、本変形例に係るサーバ３０による処理のフローチャートを示す。
【図１２】図１２は、本変形例に係るサーバ３０が有するオートマトンの遷移表の一例を示す。
【図１３】図１３は、ある文字が入力された場合の複数の前状態のそれぞれに対応する前状態鍵の鍵表を示す。
【図１４】図１４は、ある文字が入力された場合の複数の後状態のそれぞれに対応する後状態鍵の鍵表を示す。
【図１５】図１５は、本変形例に係るサーバ３０における、交換データの生成処理のフローチャートを示す。
【図１６】図１６は、本変形例に係るクライアント２０における復号処理のフローチャートを示す。
【図１７】図１７は、本発明の実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、本実施形態に係る検出システム１０の機能ブロック図を示す。本実施形態に係る検出システム１０は、クライアント２０と、サーバ３０とを備える。
【００１４】
検出システム１０は、順次に遷移するクライアント２０の状態が、サーバ３０が記憶する予め定められた状態に一致するか否かを例えば定期的に検出する。この場合において、検出システム１０は、クライアント２０の状態をサーバ３０に特定させず且つサーバ３０が記憶する予め定められた状態をクライアント２０に特定させずに、検出処理を実行する。
【００１５】
クライアント２０は、状態管理部４２と、クライアント側通信部４４とを有する。サーバ３０は、集合記憶部４６と、サーバ側通信部４８と、判定部５０とを有する。
【００１６】
クライアント２０の状態管理部４２は、順次に遷移する当該クライアント２０の状態を管理する。状態管理部４２は、例えば、当該クライアント２０の状態を、イベントの発生に応じて遷移させる。状態管理部４２は、一例として、オートマトンを有し、当該クライアント２０において発生される様々なイベントに応じてオートマトンの状態を遷移させる。
【００１７】
例えばクライアント２０が金融トランザクションを管理する装置であれば、状態管理部４２は、出金処理、入金処理および振込処理等のイベントを取得し、取得したイベントに応じて当該クライアント２０の状態を遷移させる。また、状態管理部４２は、ユーザが入力した文字（例えばパスワード）をイベントとして取得し、取得した文字に応じてオートマトンの状態を遷移させ、入力された文字列がオートマトンにより受理できるか否か（パスワードが正しいか否か）を検知してもよい。
【００１８】
また、状態管理部４２は、他の機器（例えばサーバ３０）がオートマトンを保有しており、状態の遷移処理を他の機器に実行させて、他の機器から検出結果を取得してもよい。この場合において、状態管理部４２は、発生したイベントの内容（例えば文字列）を他の機器に対して秘匿し且つ他の機器の保有するオートマトンの内容を当該クライアント２０に対して秘匿したプロトコル（秘匿状態検知プロトコル）により、他の機器から当該クライアント２０の状態を取得してもよい。さらに、この場合において、状態管理部４２は、状態を表す値として、クライアント２０に対して秘匿された秘匿状態値（例えば、サーバ３０によって発生された乱数または暗号値）を取得してもよい。なお、状態管理部４２が、当該クライアント２０の状態として秘匿状態値を管理する例については詳細を後述する。
【００１９】
サーバ３０の集合記憶部４６は、予め定められた複数の状態を含む集合を記憶する。例えばクライアント２０が金融トランザクションを管理する装置であれば、状態管理部４２は、特定の口座（例えばブラックアカウント）への振込処理が一定期間内に予め定められた数以上実行された場合に遷移する状態、および、不正処理と推定されるような特定の挙動を示す振込処理等が実行された場合に遷移する状態等を含む集合を記憶する。また、状態管理部４２は、パスワードを一定回数以上連続して間違って入力した場合に遷移する状態を含む集合を記憶してもよい。
【００２０】
判定部５０は、クライアント側通信部４４およびサーバ側通信部４８に互いに通信をさせて、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれるかを判定する。判定部５０は、一例として、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれる場合、クライアント２０に異常が発生したと検知する。反対に、判定部５０は、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれていなかった場合に、クライアント２０に異常が発生したと検知してもよい。
【００２１】
クライアント２０のクライアント側通信部４４は、サーバ３０のサーバ側通信部４８とネットワークを介して通信をする。サーバ３０のサーバ側通信部４８は、クライアント２０のクライアント側通信部４４とネットワークを介して通信をする。
【００２２】
ここで、クライアント側通信部４４およびサーバ側通信部４８は、互いの集合の要素を秘匿しつつ互いの集合間に共通の要素を含むかを検出する秘匿共通集合計算プロトコルにより互いに通信をする。秘匿共通集合計算プロトコルについては、例えば、上述の非特許文献１に記載がある。なお、秘匿共通集合計算プロトコルによる通信処理の詳細については、図３を参照して説明する。
【００２３】
図２は、クライアント２０の状態がサーバの３０が記憶する集合に含まれる複数の状態の何れかに一致するか否かを判断するタイミングを示す。クライアント２０は、イベントが発生したことに応じて状態を遷移させる。例えば、図２に示されるように、クライアント２０は、ｑ０を初期状態とし、順次に、ｑ０→ｑ１→ｑ２→…ｑＮといったように状態が遷移する。
【００２４】
そして、サーバ３０の判定部５０は、例えば予め設定されたタイミングにおいて、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれるかを判定する。例えば、図２に示されるように、判定部５０は、予め設定されたタイミングにおいて、当該タイミングにおけるクライアント２０の状態"ｑＮ"が、予め定められた複数の状態"ｆ１，ｆ２，ｆ３，…，ｆｋ"の何れかに一致するかを判定する。
【００２５】
また、クライアント２０は、クライアント２０の状態が集合に含まれるかの判定がされてから、更に状態が遷移する。例えば図２に示されるように、クライアント２０は、ｑＮから順次に、ｑＮ＋１→ｑＮ＋２→ｑＮ＋３→…ｑＸといったように状態が遷移する。
【００２６】
そして、判定部５０は、クライアント２０の状態が集合に含まれるかの判定をしてから、クライアント２０の状態が少なくとも１回以上遷移した後において、秘匿共通集合計算プロトコルによりクライアント２０の状態が集合に含まれるかを再度判定する。例えば図２に示されるように、判定部５０は、前回判定がされてから一定時間経過後におけるクライアント２０の状態"ｑＸ"が、予め定められた複数の状態"ｆ１，ｆ２，ｆ３，…，ｆｋ"の何れかに一致するかを判定する。
【００２７】
以後、クライアント２０は、時間の経過に応じて更に状態が遷移する。そして、判定部５０は、例えば一定期間毎に繰り返して、秘匿共通集合計算プロトコルによりクライアント２０の状態がサーバ３０に記憶されている集合に含まれるかを判定する。
【００２８】
これにより、判定部５０は、クライアント２０の状態をサーバ３０に対して秘匿し且つサーバ３０が記憶する状態をクライアント２０に対して秘匿しながら、クライアント２０の状態がサーバ３０が記憶する集合に含まれる複数の状態の何れかに一致するかを判定することができる。さらに、判定部５０は、クライアント２０の状態の遷移が進んだ場合であっても、処理量を増加させずに、クライアント２０の状態がサーバ３０が記憶する集合に含まれる複数の状態の何れかに一致するかを判定することができる。
【００２９】
図３は、本実施形態に係る検出システム１０における、秘匿共通集合計算プロトコルによる通信処理の一例を示す。クライアント２０およびサーバ３０は、秘匿共通集合計算プロトコルによりクライアント２０の状態がサーバ３０が記憶する集合に含まれるかを判定する場合、下記のステップＳ１１からステップＳ１７の処理を実行する。
【００３０】
サーバ３０は、集合に含まれる複数の状態を表す値として、下記の数１のような値を予め記憶しているとする。
【００３１】
【数１】
0005846577.tif 000002
【００３２】
まず、ステップＳ１１において、サーバ３０は、多項式Ｐ（ｘ）を生成する。多項式Ｐ（ｘ）は、変数ｘに、サーバ３０が記憶する集合に含まれる複数の状態を表す値が代入されると、０となるような関数である。即ち、サーバ３０は、下記の数２に示されるような、集合に含まれる複数の状態を表す値を変数ｘの解とする多項式Ｐ（ｘ）を生成する。
【００３３】
【数２】
0005846577.tif 000003
【００３４】
続いて、ステップＳ１２において、サーバ３０は、下記の数３に示されるように、多項式Ｐ（ｘ）の全ての次数の係数のそれぞれを、準同型性（例えば加法準同型性）を有する暗号化方式により暗号化した複数の送信暗号文を生成する。サーバ３０は、一例として、拡張エルガマル暗号により各係数を暗号化する。
【００３５】
【数３】
0005846577.tif 000004
【００３６】
ここで、加法準同型性を有する暗号化方式により暗号化された暗号文は、下記の数４に示されるような特徴を有する。なお、ｍ１、ｍ２、ｍは、平文を表す。
【００３７】
【数４】
0005846577.tif 000005
【００３８】
即ち、加法準同型性を有する暗号化方式では、２つの暗号文Ｅ（ｍ１）、Ｅ（ｍ２）が与えられたときに、暗号文同士の加算結果（Ｅ（ｍ１）・Ｅ（ｍ２））が、平文同士を加算した後に暗号化した暗号文（Ｅ（ｍ１＋ｍ２））と同一となる。また、暗号文を任意の数値ｋで冪乗した結果（（Ｅ（ｍ））ｋ）が、平文を任意の数値ｋで乗算した後に暗号化した暗号文（Ｅ（ｋ・ｍ））と同一となる。
【００３９】
続いて、ステップＳ１３において、サーバ３０は、生成した複数の送信暗号文をクライアント２０に送信する。この場合において、サーバ３０は、何れの次数の係数に対応する暗号文なのかをクライアント２０が特定できるように、各送信暗号文を送信する。
【００４０】
一方、クライアント２０は、当該クライアント２０の状態を表す値（例えば、ｑ）を記憶している。また、クライアント２０は、複数の状態を並行に管理している場合には、下記の数５に示されるような、複数の状態のそれぞれを表す値を記憶していてもよい。
【００４１】
【数５】
0005846577.tif 000006
【００４２】
ステップＳ１４において、クライアント２０は、サーバ３０から受け取った複数の送信暗号文、および、当該クライアント２０の状態を表す値ｑから、数４に示した準同型性の暗号文の特性を利用して、応答暗号文Ｅ（ｒ・Ｐ（ｑ））を生成する。ここで、応答暗号文Ｅ（ｒ・Ｐ（ｑ））は、多項式Ｐ（ｘ）の変数ｘに当該クライアント２０の状態を表す値ｑを代入した結果を表す値Ｐ（ｑ）に対して乱数ｒ乗算した値を、準同型性を有する暗号化方式で暗号化した暗号文である。
【００４３】
即ち、クライアント２０は、当該クライアント２０の状態を表す値ｑに、多項式に含まれる変数の次数のそれぞれを冪乗する。そして、クライアント２０は、対応する次数を冪乗したクライアント２０の状態を表す値のそれぞれを、数３に示される、対応する次数の送信暗号文に対して冪乗する。そして、クライアント２０は、これらを加算合成し、加算合成した結果に乱数を冪乗することにより、応答暗号文Ｅ（ｒ・Ｐ（ｑ））を生成することができる。
【００４４】
また、この場合、クライアント２０が複数の状態を並行して管理している場合には、クライアント２０は、下記の数６に示すように、複数の状態を表す値ｑａ、ｑｂ、ｑｃ、…のそれぞれについて、応答暗号文を生成する。なお、数６において、ｒ１、ｒ２、ｒ３は、乱数を表す。
【００４５】
【数６】
0005846577.tif 000007
【００４６】
続いて、ステップＳ１５において、クライアント２０は、生成した各応答暗号文をサーバ３０へと送信する。続いて、ステップＳ１６において、サーバ３０は、各応答暗号文を復号する。この場合において、サーバ３０は、ステップＳ１２で用いた暗号鍵に応じた復号鍵で応答暗号文を復号する。
【００４７】
続いて、ステップＳ１７において、サーバ３０は、何れかの応答暗号文を復号した結果に"０"が含まれているか否かを判断する。ここで、多項式Ｐ（ｘ）の解は、サーバ３０が記憶している集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋである。従って、多項式Ｐ（ｘ）に代入したクライアント２０の状態を表す値ｑａ、ｑｂ、ｑｃ、…と、集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋの何れかが一致している場合、復号結果は０となる。反対に、多項式Ｐ（ｘ）に代入したクライアント２０の状態を表す値ｑａ、ｑｂ、ｑｃ、…が、集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋの何れとも一致していなければ、復号結果は０以外の値となる。
【００４８】
従って、サーバ３０は、応答暗号文を復号した結果に０が含まれていれば、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれると判定することができる。反対に、サーバ３０は、応答暗号文を復号した結果に０が含まれていなければ、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれていないと判定することができる。
【００４９】
以上のようにサーバ３０では、クライアント２０の状態をサーバ３０に対して秘匿し且つサーバ３０が記憶する集合の内容をクライアント２０に秘匿しながら、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれているか否かを判定することができる。
【００５０】
図４は、本実施形態の第１変形例に係る検出システム１０の構成を示す。本変形例に係る検出システム１０は、図１に示した本実施形態に係る検出システム１０と略同一の構成および機能を有する。従って、本変形例については、図１に示した部材と略同一の機能および構成を有する部材については、相違点を除き説明を省略する。
【００５１】
本変形例に係るクライアント２０は、判定部５０を更に有する。また、本変形例に係るサーバ３０は、判定部５０を有していない。即ち、本変形例において、判定部５０は、サーバ３０に代えて、クライアント２０に備えられている。
【００５２】
本変形例において、判定部５０は、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれるかの判定結果を、クライアント２０のユーザに対して出力する。
【００５３】
図５は、第１変形例における、秘匿共通集合計算プロトコルによる通信処理の一例を示す。本変形例において、サーバ３０およびクライアント２０は、秘匿共通集合計算プロトコルによりサーバ３０の状態がクライアント２０が記憶する集合に含まれるかを判定する場合、下記のステップＳ２１からステップＳ２７の処理を実行する。
【００５４】
クライアント２０は、複数の状態のそれぞれを表す値ｑａ、ｑｂ、ｑｃ、…を記憶している。まず、ステップＳ２１において、クライアント２０は、多項式Ｐ（ｘ）を生成する。多項式Ｐ（ｘ）は、変数ｘに、クライアント２０の状態を表す値ｑａ、ｑｂ、ｑｃが代入されると、０となるような関数である。
【００５５】
続いて、ステップＳ２２において、クライアント２０は、生成した多項式Ｐ（ｘ）の全ての次数の係数のそれぞれを、準同型性（例えば加法準同型性）を有する暗号化方式により暗号化した複数の送信暗号文を生成する。クライアント２０は、一例として、拡張エルガマル暗号により各係数を暗号化する。
【００５６】
続いて、ステップＳ２３において、クライアント２０は、生成した複数の送信暗号文をサーバ３０に送信する。この場合において、クライアント２０は、何れの次数の係数に対応する暗号文なのかをサーバ３０が特定できるように、各送信暗号文を送信する。
【００５７】
一方、サーバ３０は、集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋを記憶している。ステップＳ２４において、サーバ３０は、クライアント２０から受け取った複数の送信暗号文、および、集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋから、準同型性の暗号文の特性を利用して、応答暗号文Ｅ（ｒ・Ｐ（ｆ））を生成する。ここで、応答暗号文Ｅ（ｒ・Ｐ（ｆ））は、多項式Ｐ（ｘ）の変数ｘに、集合に含まれる複数の状態を表す値ｆ１、ｆ２、ｆ３、…、ｆｋを代入した結果を表す値Ｐ（ｆ１）、Ｐ（ｆ２）、…、Ｐ（ｆｋ）のそれぞれに乱数ｒを乗算した値を、準同型性を有する暗号化方式で暗号化した暗号文である。
【００５８】
続いて、ステップＳ２５において、サーバ３０は、生成した応答暗号文をクライアント２０へと送信する。続いて、ステップＳ２６において、クライアント２０は、応答暗号文を復号する。この場合において、クライアント２０は、ステップＳ２２で用いた暗号鍵に応じた復号鍵で応答暗号文を復号する。
【００５９】
続いて、ステップＳ２７において、クライアント２０は、何れかの応答暗号文を復号した結果に"０"が含まれているか否かを判断する。クライアント２０は、応答暗号文を復号した結果に０が含まれていれば、サーバ３０の状態がクライアント２０の集合記憶部４６が記憶する集合に含まれると判定することができる。反対に、サーバ３０は、応答暗号文を復号した結果に０が含まれていなければ、サーバ３０の状態がクライアント２０の集合記憶部４６が記憶する集合に含まれていないと判定することができる。
【００６０】
以上のように、本変形例において、クライアント２０では、サーバ３０に記憶された集合に含まれる複数の状態をクライアント２０に対して秘匿し且つクライアント２０の状態をサーバ３０に秘匿しながら、サーバ３０の状態がクライアント２０の集合記憶部４６が記憶する集合に含まれているか否かを判定することができる。
【００６１】
図６は、本実施形態の第２変形例に係る検出システム１０の構成を示す。本変形例に係る検出システム１０は、図１に示した本実施形態に係る検出システム１０と略同一の構成および機能を有する。従って、本変形例については、図１に示した部材と略同一の機能および構成を有する部材については、相違点を除き説明を省略する。なお、本変形例を図４に示す第１変形例に係る検出システム１０に適用してもよい。
【００６２】
本変形例に係るサーバ３０は、サーバ側検知部５２を更に有する。本変形例に係る状態管理部４２は、当該クライアント２０において発生する入力する。サーバ側検知部５２は、状態管理部４２が受け取ったイベントに応じて状態が遷移するオートマトンを保有する。
【００６３】
このような状態管理部４２およびサーバ側検知部５２は、発生したイベントの内容をサーバ３０に対して秘匿し且つサーバ３０が保有するオートマトンをクライアント２０に対して秘匿したプロトコル（秘匿状態検知プロトコル）により、クライアント２０の状態を状態管理部４２に取得させる。この場合において、入力したイベントに応じて遷移した状態を表す秘匿状態値をサーバ側検知部５２から取得する。この秘匿状態値は、当該クライアント２０に対して秘匿された値である。より具体的には、秘匿状態値は、サーバ３０によって生成された乱数である。従って、クライアント２０は、この乱数である秘匿状態値に対して、恣意的に何らかの変更を加えて他の状態であるように見せかけることはできない。
【００６４】
また、サーバ側検知部５２は、秘匿状態検知プロトコルにより状態管理部４２と通信をして、クライアント２０に対してオートマトンを開示しないで、状態管理部４２が入力したイベントに応じてオートマトンの状態を遷移させる。そして、サーバ側検知部５２は、秘匿状態検知プロトコルにより、遷移した状態に対応した秘匿状態値を状態管理部４２に送信する。
【００６５】
また、本変形例において、状態管理部４２は、取得した秘匿状態値をクライアントの状態として管理する。また、本変形例において、集合記憶部４６は、オートマトンにおける複数の状態のそれぞれに対応する複数の秘匿状態値のうちの、予め定められた一部の状態に対応する秘匿状態値を含む集合を記憶する。
【００６６】
そして、本変形例において、クライアント側通信部４４およびサーバ側通信部４８は、秘匿共通集合計算プロトコルにより、状態管理部４２が取得した秘匿状態値と、集合記憶部４６が記憶する複数の秘匿状態値を含む集合との一致を検出する。これにより、本変形例に係るサーバ３０では、クライアント２０の状態をサーバ３０に対して秘匿し且つサーバ３０が記憶する集合の内容をクライアント２０に秘匿しながら、クライアント２０の状態がサーバ３０の集合記憶部４６が記憶する集合に含まれているか否かを判定することができる。
【００６７】
以下、図７から図１６を参照して、秘匿状態検知プロトコルの一例を説明する。
【００６８】
図７は、本変形例に係る状態管理部４２およびサーバ側検知部５２を示す。本変形例に係る検出システム１０は、イベントとして文字列を入力する。検出システム１０は、クライアント２０の状態管理部４２に入力された文字列によって、サーバ３０のサーバ側検知部５２が保有するオートマトンを遷移させる。そして、検出システム１０は、オートマトンがいずれの状態に遷移したかを表す秘匿状態値を、クライアント２０の状態として出力する。
【００６９】
状態管理部４２は、外部から文字列を入力する。文字列に含まれる文字は、どのような文字であってもよい。例えば文字は、"０"、"１"の２値の文字であってもよいし、１バイトで表現される文字であってもよい。
【００７０】
サーバ側検知部５２は、受け取った文字に応じて状態が遷移するオートマトンを有する。オートマトンが受け取る文字は、状態管理部４２に入力される文字である。オートマトンは、予め登録された文字列の集合（文字列群）の正規表現を表す。オートマトンは、文字列に含まれる各文字を先頭から順次に受け取り、先頭の文字から１文字ずつ順次に状態を遷移させる。
【００７１】
状態管理部４２は、入力された文字列の文字毎に、入力された文字に対応する暗号配列を生成して、サーバ側検知部５２へと送信する。なお、暗号配列の詳細は後述する。
【００７２】
サーバ側検知部５２は、状態管理部４２から暗号配列を受信したことに応じて、暗号化された複数の交換データを生成して状態管理部４２に返信する。なお、交換データの詳細は後述する。状態管理部４２およびサーバ側検知部５２は、暗号配列および暗号化された複数の交換データのやり取りを、入力された文字列の文字数分繰り返す。
【００７３】
そして、状態管理部４２は、複数の文字のそれぞれに対応して受信した暗号化された複数の交換データを、先頭の文字から順次に復号する。状態管理部４２は、最後の文字に対応する交換データまで復号すると、オートマトンが何れの状態に遷移したかを表す後状態鍵を取得することができる。状態管理部４２は、取得した後状態鍵を、当該クライアント２０の状態を表す秘匿状態値として出力する。なお、後状態鍵の詳細は後述する。
【００７４】
図８は、本変形例に係るクライアント２０の状態管理部４２およびサーバ３０のサーバ側検知部５２のそれぞれの機能ブロック構成を示す。クライアント２０の状態管理部４２は、文字入力部１３２と、配列化部１３４と、第１暗号化部１３６と、クライアント側送信部１３８と、クライアント側受信部１４０と、クライアント側鍵記憶部１４２と、第２復号部１４４と、第１復号部１４６と、状態記憶部１４８とを有する。また、サーバ３０のサーバ側検知部５２は、サーバ側受信部１５２と、オートマトン記憶部１５４と、鍵発生部１５６と、サーバ側鍵記憶部１５８と、交換データ生成部１６０と、第２暗号化部１６２と、サーバ側送信部１６４とを有する。
【００７５】
文字入力部１３２は、文字列に含まれる各文字を先頭から１つずつ入力する。配列化部１３４は、文字入力部１３２が入力した文字に対応して、当該文字を特定する１つの要素が非単位元とされ、文字を特定する要素以外の要素が単位元とされた配列を生成する。なお、配列については詳細を図９等を参照して更に説明する。
【００７６】
第１暗号化部１３６は、配列化部１３４により生成された配列に含まれる複数の要素のそれぞれを、準同型性を有する第１暗号化方式により暗号化して暗号配列を生成する。なお、第１暗号化方式および暗号配列については詳細を図９等を参照して更に説明する。クライアント側送信部１３８は、それぞれの文字に対応付けて、第１暗号化部１３６により生成された暗号配列をサーバ側検知部５２に送信する。
【００７７】
このように、状態管理部４２は、文字に対応して、文字を特定する要素が準同型性を有する第１暗号化方式により非単位元を暗号化した値とされ、文字を特定する要素以外の要素が第１暗号化方式により単位元を暗号化した値とされた暗号配列を、サーバ側検知部５２に送信する。
【００７８】
サーバ側受信部１５２は、暗号配列を状態管理部４２から受信する。オートマトン記憶部１５４は、状態管理部４２に入力された文字列を受理するか否かを判定するためのオートマトンを記憶する。
【００７９】
鍵発生部１５６は、状態管理部４２に入力される文字列の各文字に対応して、オートマトンにおける複数の後状態のそれぞれに対応する後状態鍵を発生する。なお、後状態鍵については詳細を図１１等を参照して更に説明する。
【００８０】
サーバ側鍵記憶部１５８は、オートマトンにおける複数の後状態のそれぞれに対応付けられた後状態鍵を、次の文字が入力された場合の複数の前状態のそれぞれに対応する複数の前状態鍵として記憶する。なお、前状態鍵については詳細を図１１等を参照して更に説明する。
【００８１】
交換データ生成部１６０は、暗号配列を受信したことに応じて、オートマトンにおける複数の前状態のそれぞれに対応して、受信した暗号配列の各要素のそれぞれに、当該前状態から当該要素により特定される文字が入力されたことに応じて遷移する後状態に対応する後状態鍵を冪乗する。そして、交換データ生成部１６０は、後状態鍵を冪乗した複数の要素を第１暗号化方式に対応する演算により結合することにより、第１暗号化方式により後状態鍵を暗号化した交換データを生成する。なお、交換データの生成方法については詳細を図１５等を参照して更に説明する。
【００８２】
第２暗号化部１６２は、オートマトンにおける複数の前状態のそれぞれに対応して生成された複数の交換データのそれぞれを、対応する前状態鍵により暗号化する。なお、複数の交換データのそれぞれの暗号化処理については詳細を図１１等を参照して更に説明する。サーバ側送信部１６４は、暗号配列の受信に応じて、暗号化された複数の交換データを状態管理部４２に送信する。
【００８３】
このように、サーバ側検知部５２は、暗号配列を受信したことに応じて、オートマトンの複数の前状態のそれぞれに対応して、暗号配列に基づいて第１暗号化方式により後状態鍵を暗号化した交換データを生成し、対応する前状態鍵で交換データを暗号化して状態管理部４２に送信する。
【００８４】
クライアント側受信部１４０は、文字に対応する暗号配列を送信したことに応じて、サーバ側検知部５２から暗号化された複数の交換データを受信する。クライアント側鍵記憶部１４２は、文字列の各文字に対応して、１つの前状態鍵を記憶している。より詳しくは、クライアント側鍵記憶部１４２は、文字列の先頭の文字に対応して予め１つの前状態鍵を取得して記憶する。また、クライアント側鍵記憶部１４２は、文字列の先頭以外の各文字のそれぞれに対応して、第１復号部１４６により復号された前の文字に対応する後状態鍵を、前状態鍵として記憶する。
【００８５】
第２復号部１４４は、クライアント側受信部１４０により受信された暗号化された複数の交換データのそれぞれに対して、クライアント側鍵記憶部１４２に記憶された対応する文字の前状態鍵により復号処理を実行する。第２復号部１４４は、当該文字が正しい場合には、複数の交換データのうち１つの交換データを復号できる。
【００８６】
第１復号部１４６は、複数の交換データのうち第２復号部１４４が復号できた１つの交換データから、第１暗号化方式により後状態鍵を復号する。即ち、第１復号部１４６は、第２復号部１４４が復号できた１つの交換データから、第１暗号化部１３６によって当該文字に対応する配列の各要素を第１暗号化方式で暗号化する場合に用いた暗号鍵に対応する復号鍵を用いて、後状態鍵を復号する。
【００８７】
状態記憶部１４８は、第１復号部１４６が文字列に含まれる最後の文字に対応する復号処理を実行したことによって復号された後状態鍵を、秘匿状態値として記憶する。状態記憶部１４８は、秘匿共通集合計算プロトコルによる判断時において、記憶した秘匿状態値をクライアント側通信部４４に受け渡す。
【００８８】
このように、クライアント２０の状態管理部４２は、複数の文字のそれぞれに対応して受信した暗号化された複数の交換データを、先頭の文字から順次に復号する。そして、クライアント２０の状態管理部４２は、最後の文字に対応する交換データまで復号した後に、復号された後状態鍵を秘匿状態値として記憶する。
【００８９】
図９は、本変形例に係るクライアント２０の状態管理部４２の送信時の処理のフローチャートを示す。図１０は、第１暗号化方式により生成される暗号文の一例を示す。
【００９０】
クライアント２０は、文字列が入力されると、入力された文字列に含まれる文字を１つずつ順次に選択し、それぞれの文字についてステップＳ１１１からステップＳ１１４の処理を実行する。
【００９１】
まず、ステップＳ１１１において、クライアント２０は、文字を入力する。本変形例においては、入力可能な文字の集合Σのうちのσ番目（インデックスσ）で特定される文字Ｘσを入力する。例えば、クライアント２０は、１バイトで表現される文字であれば、０番目から２５５番目までの何れか１つの文字を入力する。
【００９２】
続いて、ステップＳ１１２において、クライアント２０は、入力した文字を配列Ｖ′に変換する。より具体的には、クライアント２０は、入力可能な文字の集合Σに含まれる複数の文字の数｜Σ｜の要素を含む配列を準備する。例えば、１バイトで表現される文字を入力する場合には、２５６個の要素を含む配列を準備する。
【００９３】
準備された配列は、複数の要素のそれぞれが、集合Σに含まれる複数の文字のそれぞれに一対一に対応する。例えば、１ビットで表現される文字（"０"または"１"が表現する文字）であれば、配列には、２つの要素が含まれ、一番目の要素が"０"に対応し、二番目の要素が"１"に対応する。
【００９４】
そして、クライアント２０は、準備した配列を用いて、文字入力部１３２が入力した文字に対応して、当該文字を特定する１つの要素が非単位元とされ、文字を特定する要素以外の要素が単位元とされた配列を生成する。ここで、単位元とは、後述する第１暗号化方式に対応する２項演算の単位元をいう。詳細は後述するが、第１暗号化方式が加法準同型性を有する暗号化方式であれば、この単位元は、加法演算の単位元である"０"となり、非単位元は"０"以外の予め定められた数値（例えば、"１"）となる。また、第１暗号化方式が乗法準同型性を有する暗号化方式であれば、この単位元は、乗法演算の単位元である"１"となり、非単位元は"１"以外の予め定められた数値となる。
【００９５】
本変形例においては、第１暗号化方式が加法準同型性を有する暗号化方式を採用する。そこで、クライアント２０は、下記の式（１１）に示されるように、文字Ｘσを特定する１つの要素（インデックスσの要素ｂσ）が"１"とされ、文字を特定する要素以外の要素（インデックスσ以外の要素）が"０"とされた配列Ｖ´を生成する。
【００９６】
【数７】
0005846577.tif 000008
【００９７】
なお、ｂｘは、配列に含まれるインデックスｘの要素の値を表す。ｘは、０≦ｘ≦（｜Σ｜−１）の範囲の整数である。また、σは、文字の集合Σにおける文字Ｘσを特定するインデックスであり、０≦σ≦（｜Σ｜−１）の範囲の整数である。
【００９８】
続いて、ステップＳ１１３において、クライアント２０は、配列化部１３４により生成された配列に含まれる複数の要素のそれぞれを第１暗号化方式により暗号化して暗号配列Ｖを生成する。これにより、クライアント２０は、文字に対応して、当該文字を特定する要素が第１暗号化方式により非単位元を暗号化した値とされ、文字を特定する要素以外の要素が第１暗号化方式により単位元を暗号化した値とされた暗号配列を生成することができる。
【００９９】
第１暗号化方式は、選択平文攻撃に対して識別困難性（ＩＮＤ−ＣＰＡ）を満たし、且つ、準同型性（加法準同型性または乗法準同型性）を有する公開鍵暗号方式である。例えば、加法準同型性を有する暗号化方式の暗号文は、上述した数４に示される特徴を有する。
【０１００】
また、更に、第１暗号化方式は、例えば、図１０に示されるように、同一の平文を暗号化した場合であっても暗号化処理毎に暗号文が異なる方式である。即ち、第１暗号化方式は、ある平文をある暗号鍵で１回目に暗号化した暗号文と、同一の平文を同一の暗号鍵で２回目に暗号化した暗号文とが異なるが、１回目と２回目の２つの暗号文のそれぞれから同一の平文を復号することができる。これにより、クライアント２０は、配列内の各要素が、単位元を暗号化した暗号文であるか、非単位元を暗号化した暗号文であるかを判別できなくすることができる。
【０１０１】
このような特徴を有する暗号化方式として、拡張エルガマル暗号方式が知られている。本変形例においては、クライアント２０は、第１暗号化方式として拡張エルガマル暗号方式を用いて、下記の式（１３）に示されるような暗号配列を生成する。
【０１０２】
【数８】
0005846577.tif 000009
【０１０３】
即ち、本変形例においては、クライアント２０は、文字Ｘσを特定する１つの要素（インデックスσの要素）が"１"を拡張エルガマル方式で暗号化した暗号文とされ、文字を特定する要素以外の要素（インデックスσ以外の要素）が"０"を拡張エルガマル方式で暗号化した暗号文とされた暗号配列Ｖを生成する。
【０１０４】
続いて、ステップＳ１１４において、クライアント２０は、生成した暗号配列をサーバ３０へと送信する。この場合において、クライアント２０は、文字列中における対応する文字の順番がわかるように、暗号配列を送信する。例えば、クライアント２０は、各暗号配列を文字順序に従って送信する。また、クライアント２０は、文字順序を示すインデックスとともに暗号配列を送信してもよい。
【０１０５】
図１１は、本変形例に係るサーバ３０による処理のフローチャートを示す。図１２は、本変形例に係るサーバ３０が有するオートマトンの遷移表の一例を示す。図１３は、ある文字が入力された場合の複数の前状態のそれぞれに対応する前状態鍵の鍵表を示す。図１４は、ある文字が入力された場合の複数の後状態のそれぞれに対応する後状態鍵の鍵表を示す。
【０１０６】
まず、ステップＳ１２１において、サーバ３０は、クライアント２０から複数の文字のそれぞれに対応した暗号配列を受信する。サーバ３０は、受信した１つの暗号配列に対して、ステップＳ１２２からステップＳ１３０の処理を実行する。この場合において、サーバ３０は、先頭の文字に対応する暗号配列から１文字ずつ順番に、ステップＳ１２２からステップＳ１３０の処理を実行する。
【０１０７】
例えば、サーバ３０は、複数の暗号配列が文字順序にクライアント２０から送信される場合には、受信順に、暗号配列に対するステップＳ１２２からＳ１３０の処理を実行する。また、サーバ３０は、文字順序を示すインデックスとともに暗号配列がクライアント２０から送信される場合には、インデックス順に暗号配列に対するステップＳ１２２からＳ１３０の処理を実行する。
【０１０８】
続いて、ステップＳ１２２において、サーバ３０は、オートマトンを読み出す。オートマトンには、状態の遷移を表す遷移表、状態群、初期状態および正しい最終状態を含む。オートマトンにおける状態の遷移は、例えば、図１２に示されるような遷移表により表させる。この遷移表を参照することにより、サーバ３０は、任意の文字が与えられた場合において、現在の状態（前状態）から遷移する次の状態（後状態）を特定することができる。
【０１０９】
本変形例において、オートマトンは、例えば、ｑ０〜ｑ｜Ｑ｜−１で表される（｜Ｑ｜）個の状態を有する。また、本変形例において、オートマトンは、ｘ０からｘ｜Σ｜−１までの（｜Σ｜）個の文字を受け取ることができる。そして、本変形例において、オートマトンは、ｉ番目の前状態ｑｉにおいて、σ番目の文字ｘσが与えられたことに応じて、ｊ番目の後状態ｑｊに遷移する。なお、ｉ、ｊは、０から状態数（｜Ｑ｜−１）までの間の整数である。
【０１１０】
続いて、ステップＳ１２３において、サーバ３０は、複数の前状態のそれぞれに対応する複数の前状態鍵を読み出す。本変形例においては、サーバ３０は、図１３に示されるように、複数の前状態ｑ０〜ｑ｜Ｑ｜−１のそれぞれに対応して前状態鍵Ｓ０〜Ｓ｜Ｑ｜−１を記憶しており、これらを読み出す。なお、これらの前状態鍵は、直前の文字に対応する後状態鍵と同一であり、文字を入力する毎に異なる値となる。また、最初の文字に対応する前状態鍵は、予め生成されている。本変形例においては、サーバ３０は、ある文字が入力された場合、ｉ番目の前状態ｑｉに対応して前状態鍵Ｓｊを読み出す。
【０１１１】
続いて、ステップＳ１２４において、サーバ３０は、複数の後状態のそれぞれに対応する複数の後状態鍵を発生する。ここで、後状態鍵は、オートマトンにおける複数の後状態のそれぞれに対応付けられた乱数である。本変形例においては、サーバ３０は、図１４に示されるように、複数の後状態ｑ０〜ｑ｜Ｑ｜−１のそれぞれに対応した後状態鍵ｒ０〜ｒ｜Ｑ｜−１を発生する。なお、これらの後状態鍵は、文字を入力する毎に異なる値となる。本変形例においては、例えば、サーバ３０は、ある文字が入力された場合、ｊ番目の後状態ｑｊに対応して後状態鍵ｒｊを読み出す。
【０１１２】
続いて、ステップＳ１２５からステップＳ１２８において、サーバ３０は、前状態毎にループ処理を実行する。本変形例においては、サーバ３０は、複数の前状態ｑ０〜ｑ｜Ｑ｜−１のそれぞれ毎に、ステップＳ１２６およびステップＳ１２７の処理を実行する。
【０１１３】
ステップＳ１２６において、サーバ３０は、当該前状態から、当該暗号配列に対応する文字が入力されたことに応じて遷移する後状態に対応する後状態鍵を、第１暗号化方式により暗号化した交換データを生成する。例えば、前状態がｑｉであり、受信した暗号配列に対応する文字がＸσである（即ち、受信した暗号配列が文字Ｘσから生成された）とする。この場合、前状態ｑｉにおいて文字Ｘσが入力されたことに応じて遷移する後状態は、図１２に示されるように、ｑｊである。また、後状態ｑｊに対応する後状態鍵は、図１４に示されるように、ｒｊである。
【０１１４】
従って、サーバ３０は、下記の式（１４）に示されるように、前状態がｑｉであり、受信した暗号配列に対応する文字がＸσである場合には、ｒｊを第１暗号化方式で暗号化した暗号文を、交換データＣｉとして生成する。なお、交換データの生成方法の詳細については図１５を参照して更に説明する。
【０１１５】
【数９】
0005846577.tif 000010
【０１１６】
続いて、ステップＳ１２７において、サーバ３０は、生成した交換データを、対応する前状態鍵で暗号化する。この場合において、サーバ３０は、メッセージ認証コード（ＭＡＣ）付きの秘密鍵暗号化方式で、交換データを暗号化する。本変形例においては、サーバ３０は、一例として、ディフィー・ヘルマン鍵を用いて交換データを暗号化する。
【０１１７】
ステップＳ１２８において、サーバ３０は、全ての前状態についてステップＳ１２６およびステップＳ１２７の処理を終了したと判定すると、ループを抜けて処理をステップＳ１３０に進める。
【０１１８】
続いて、ステップＳ１３０において、サーバ３０は、全ての前状態のそれぞれについて生成した暗号化した複数の交換データをクライアント２０へと送信する。この場合において、サーバ３０は、オートマトンの複数の前状態のそれぞれに対応して暗号化した複数の交換データを、暗号配列毎に、例えばランダムに並べ替えて送信する。また、この場合において、サーバ３０は、受信した暗号配列に対応付けられている文字順序がわかるように、暗号化した複数の交換データをクライアント２０へと送信する。サーバ３０は、一例として、文字順序を示すインデックスまたは対応する暗号配列を特定する情報を付加して、暗号化した複数の交換データをクライアント２０に送信する。
【０１１９】
本変形例においては、前状態ｑ０〜ｑ｜Ｑ｜−１のそれぞれに対応して、複数の交換データＣ０〜Ｃ｜Ｑ｜−１が生成されるとする。この場合、サーバ３０は、下記の式（１５）に示すように、複数の交換データＣ０〜Ｃ｜Ｑ｜−１のそれぞれを、前状態鍵Ｓ０〜Ｓ｜Ｑ｜−１のそれぞれにより暗号化する。なお、Ｅｎｃ（ｘ，ｙ）は、ディフィー・ヘルマン鍵ｘで、データｙを暗号化することを表す。
【０１２０】
【数１０】
0005846577.tif 000011
【０１２１】
サーバ３０は、文字列の最後の文字について処理を終えると、当該フローを終了する。文字列の最後の文字以外の文字について処理を終えた場合には、このステップＳ１３０において、サーバ３０は、複数の後状態ｑ０〜ｑ｜Ｑ｜−１のそれぞれに対応した複数の後状態鍵ｒ０〜ｒ｜Ｑ｜−１を、次の文字に対応する複数の前状態鍵として、記憶する。そして、サーバ３０は、処理を最初に戻し、次の文字に対応付けられた暗号配列に対する処理を実行する。
【０１２２】
図１５は、本変形例に係るサーバ３０における、交換データの生成処理のフローチャートを示す。サーバ３０は、図１１のステップＳ１２６の交換データの生成処理として、以下のステップＳ１３１からステップＳ１３７の処理を実行する。
【０１２３】
まず、ステップＳ１３１からステップＳ１３６において、サーバ３０は、受信した暗号配列に含まれる複数の要素のそれぞれ毎にループ処理を実行する。本変形例においては、サーバ３０は、０番目から（｜Σ｜−１）番目までの複数の要素のそれぞれについて、ステップＳ１３２からステップＳ１３５までの処理を実行する。
【０１２４】
ステップＳ１３２において、サーバ３０は、処理対象となっている要素に対応する文字を特定する。例えば、１ビットで表現される文字が入力される場合、暗号配列内に２つの要素が含まれる。この場合、例えば、サーバ３０は、暗号配列の一番目の要素について処理をする場合には、当該要素に対応する文字として"０"を特定し、二番目の要素について処理をする場合には、当該要素に対応する文字として"１"を特定する。ここでは、サーバ３０は、σ番目の要素に対応する文字Ｘσを特定したとする。
【０１２５】
続いて、ステップＳ１３３において、サーバ３０は、処理対象となっている前状態および特定した文字に基づき、当該前状態から当該要素により特定される文字が入力されたことに応じて遷移する後状態を、特定する。ここでは、サーバ３０は、処理対象となっている前状態がｑｉであるとする。この場合、サーバ３０は、前状態ｑｉから文字Ｘσが入力されたことに応じて遷移する後状態として、オートマトンの遷移表（例えば図１２の遷移表）を参照してｑｊを特定する。
【０１２６】
続いて、ステップＳ１３４において、サーバ３０は、特定した後状態ｑｊに対応する後状態鍵を、ステップＳ１２４において発生された複数の後状態鍵の中から選択する。ここでは、サーバ３０は、後状態ｑｊに対応する後状態鍵として、発生した複数の後状態鍵の表（例えば図１４の表）の中からｒｊを選択する。
【０１２７】
続いて、ステップＳ１３５において、サーバ３０は、対象の要素に対して、選択した後状態鍵ｒｊを冪乗する。ここでは、サーバ３０は、式（１６）に示されるように、σ番目の要素Ｅ（ｂσ）に後状態鍵ｒｊを冪乗する。
【０１２８】
【数１１】
0005846577.tif 000012
【０１２９】
この結果は、第１暗号化方式の特徴（加法準同型性）から、当該要素の第１暗号化方式により暗号化する前の値（ｂσ）に後状態鍵ｒｊを乗算した値（ｂσ×ｒｊ）に対して、第１暗号化方式により暗号化した暗号文と同一となる。
【０１３０】
続いて、ステップＳ１３６において、サーバ３０は、暗号配列に含まれる全ての要素についてステップＳ１３２〜ステップＳ１３５の処理を終了したと判定すると、ループを抜けて処理をステップＳ１３７に進める。
【０１３１】
ステップＳ１３７において、サーバ３０は、後状態鍵を冪乗した要素のそれぞれを、第１暗号化方式に対応する演算により結合する。サーバ３０は、このように結合した結果を、当該前状態に対応する交換データとする。
【０１３２】
本変形例においては、第１暗号化方式が加法準同型性を有する暗号化方式であるので、サーバ３０は、加法演算により後状態鍵を冪乗した要素のそれぞれを結合する。なお、サーバ３０は、第１暗号化方式が乗法準同型性を有する暗号化方式であれば、乗法演算により結合する。
【０１３３】
ここでは、式（１７）に示されるように、０番目から（｜Σ｜−１）番目までの各要素について、加法演算をして結合して交換データを生成する。なお、ｂ０、ｂ１、…、ｂσ、…、ｂ（｜Σ｜−１）は、第１暗号化方式により暗号化する前の要素の値を表す。また、ｒΔ（ｑｉ、ｘ０）、ｒΔ（ｑｉ、ｘ１）、…、ｒΔ（ｑｉ、ｘσ）、…、ｒΔ（ｑｉ、ｘ｜Σ｜−１）は、複数の要素のそれぞれに冪乗された後状態鍵を表す。
【０１３４】
【数１２】
0005846577.tif 000013
【０１３５】
ここで、暗号配列は、文字を特定する要素が第１暗号化方式により非単位元を暗号化した値とされ、文字を特定する要素以外の要素が第１暗号化方式により単位元を暗号化した値とされている。例えば、暗号配列Ｖは、下記の式（１８）に示されるように、第１暗号化方式が加法準同型性を有し、文字Ｘσに対応する要素ｂσが加法演算の非単位元である"１"、文字Ｘσに対応する要素ｂσ以外の要素が加法演算の単位元である"０"とされている。
【０１３６】
【数１３】
0005846577.tif 000014
【０１３７】
従って、式（１７）に式（１８）の要素を代入すると、交換データは、下記の式（１９）に示されるように変換される。即ち、文字Ｘσに対応する要素以外の要素は、全て０となり、文字Ｘσに対応する要素は、後状態鍵の値となる。この結果、交換データは、前状態ｑｉから、暗号配列に対応する文字Ｘσが入力されたことに応じて遷移する後状態ｑｊに対応する後状態鍵ｒｊを、第１暗号化方式により暗号化した暗号文（Ｅ（ｒｊ））となる。
【０１３８】
【数１４】
0005846577.tif 000015
【０１３９】
以上のように、サーバ３０は、ステップＳ１３１〜ステップＳ１３７の処理を実行することにより、当該前状態から、当該暗号配列に対応する文字が入力されたことに応じて遷移する後状態に対応する後状態鍵を、第１暗号化方式により暗号化した交換データを生成することができる。
【０１４０】
図１６は、本変形例に係るクライアント２０における復号処理のフローチャートを示す。
【０１４１】
まず、ステップＳ１４１において、クライアント２０は、文字列に含まれる文字に対応した暗号配列を送信したことに応じて、サーバ３０から暗号化された複数の交換データを受信する。クライアント２０は、受信した暗号化された複数の交換データに対して、ステップＳ１４２からステップＳ１５０の処理を実行する。この場合において、クライアント２０は、対応する文字の文字順序に従って、暗号化された複数の交換データに対する処理を実行する。
【０１４２】
続いて、ステップＳ１４２において、クライアント２０は、対応する文字に対応付けて記憶されている１つの前状態鍵を読み出す。なお、クライアント２０は、文字列の先頭の文字に対応して、例えばサーバ３０から予め１つの前状態鍵を受信して記憶している。また、クライアント２０は、文字列の先頭以外の各文字のそれぞれに対応して、前の文字に対応する１つの後状態鍵を、１つの前状態鍵として記憶している。
【０１４３】
続いて、ステップＳ１４３からステップＳ１４６において、クライアント２０は、複数の交換データのそれぞれ毎に、ループ処理を実行する。ステップＳ１４４において、クライアント２０は、処理対象の暗号化された交換データを、読み出した１つの前状態鍵によって復号処理を実行する。
【０１４４】
ここで、対応する文字が入力された場合にオートマトンが正しく他の状態に遷移できていれば、クライアント２０は、暗号化された複数の交換データのうち何れか１つを復号することができる。また、対応する文字が入力された場合にオートマトンが正しく他の状態に遷移できない場合、クライアント２０は、暗号化された複数の交換データの何れも復号することができない。
【０１４５】
続いて、ステップＳ１４５において、クライアント２０は、交換データが復号できたか否かを判断する（ステップＳ１４５）。クライアント２０は、復号できた場合には（ステップＳ１４５のＹｅｓ）、処理をステップＳ１４７に進める。クライアント２０は、復号できなかった場合には（ステップＳ１４５のＮｏ）、処理をステップＳ１４６に進める。
【０１４６】
ステップＳ１４６において、クライアント２０は、複数の交換データの全てについて、ステップＳ１４４およびステップＳ１４５の処理が終了したか否かを判断する。クライアント２０は、複数の交換データの何れかについて未だ処理が終了していない場合には、処理をステップＳ１４３に戻し、次の交換データについてステップＳ１４４およびステップＳ１４５の処理を実行する。クライアント２０は、複数の交換データの全てについて処理が終了していれば、即ち、複数の交換データの何れも復号できなかった場合には、入力された文字列によってサーバ３０が保有するオートマトンが正しい最終状態に遷移しなかった（不受理）と判定して、本フローを終了する。
【０１４７】
一方、交換データが復号できた場合（ステップＳ１４５のＹｅｓ）、ステップＳ１４７において、クライアント２０は、復号できた１つの交換データを第１暗号化方式で復号処理をして、後状態鍵を復号する。即ち、クライアント２０は復号できた１つの交換データを、当該文字に対応する配列の各要素を第１暗号化方式で暗号化する場合に用いた暗号鍵に対応する復号鍵を用いて後状態鍵を復号する。
【０１４８】
続いて、ステップＳ１４８において、クライアント２０は、最後の文字に対応する処理か否かを判断する（ステップＳ１４８）。クライアント２０は、最後の文字に対応する処理ではないと判断した場合（ステップＳ１４８のＮｏ）、処理をステップＳ１４９に進める。ステップＳ１４９において、クライアント２０は、復号した後状態鍵を、次の文字に対応する前状態鍵として保存する。そして、クライアント２０は、ステップＳ１４９の処理を終えると、次の文字に対応する処理をするためにステップＳ１４１から処理を繰り返す。
【０１４９】
また、クライアント２０は、最後の文字に対応する処理であると判断した場合（ステップＳ１４９のＹｅｓ）、処理をステップＳ１５０に進める。ステップＳ１５０において、クライアント２０は、復号した後状態鍵を、当該クライアント２０の状態を表す秘匿状態値として保存する。そして、クライアント２０は、ステップＳ１５０の処理を終えると、当該フローを終了する。
【０１５０】
以上のように、本変形例に係る検出システム１０によれば、クライアント２０に入力された文字列をサーバ３０に開示せず、且つ、サーバ３０が保有するオートマトンをクライアント２０に開示せずに、入力された文字列によってオートマトンが何れの状態に遷移したかを表す値を取得することができる。さらに、本変形例に係る検出システム１０によれば、クライアント２０に受け渡す秘匿状態値が、サーバ３０によって生成された乱数なので、クライアント２０に改ざんさせないようできる。
【０１５１】
また、本変形例に係る検出システム１０では、次の文字列が続けて入力された場合、前の文字列の最後の後状態鍵を、次の文字列の前状態鍵とされる。従って、本変形例に係る検出システム１０では、毎回、オートマトンを初期状態に戻し、順次にオートマトンの状態を遷移させる必要がなく、処理量を少なくすることができる。
【０１５２】
図１７は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【０１５３】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【０１５４】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【０１５５】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【０１５６】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【０１５７】
コンピュータ１９００にインストールされ、コンピュータ１９００を、クライアント２０として機能させるプログラムは、状態管理モジュールと、クライアント側通信モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、状態管理部４２およびクライアント側通信部４４としてそれぞれ機能させる。
【０１５８】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である、状態管理部４２およびクライアント側通信部４４として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のクライアント２０が構築される。
【０１５９】
コンピュータ１９００にインストールされ、コンピュータ１９００を、サーバ３０として機能させるプログラムは、集合記憶モジュールと、サーバ側通信モジュールと、判定モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、集合記憶部４６、サーバ側通信部４８および判定部５０としてそれぞれ機能させる。
【０１６０】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である、集合記憶部４６、サーバ側通信部４８および判定部５０として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のサーバ３０が構築される。
【０１６１】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【０１６２】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【０１６３】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【０１６４】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【０１６５】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【０１６６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１６７】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【０１６８】
１０  検出システム
２０  クライアント
３０  サーバ
４２  状態管理部
４４  クライアント側通信部
４６  集合記憶部
４８  サーバ側通信部
５０  判定部
５２  サーバ側検知部
１３２  文字入力部
１３４  配列化部
１３６  第１暗号化部
１３８  クライアント側送信部
１４０  クライアント側受信部
１４２  クライアント側鍵記憶部
１４４  第２復号部
１４６  第１復号部
１４８  状態記憶部
１５２  サーバ側受信部
１５４  オートマトン記憶部
１５６  鍵発生部
１５８  サーバ側鍵記憶部
１６０  交換データ生成部
１６２  第２暗号化部
１６４  サーバ側送信部
１９００  コンピュータ
２０００  ＣＰＵ
２０１０  ＲＯＭ
２０２０  ＲＡＭ
２０３０  通信インターフェイス
２０４０  ハードディスクドライブ
２０５０  フレキシブルディスク・ドライブ
２０６０  ＣＤ−ＲＯＭドライブ
２０７０  入出力チップ
２０７５  グラフィック・コントローラ
２０８０  表示装置
２０８２  ホスト・コントローラ
２０８４  入出力コントローラ
２０９０  フレキシブルディスク
２０９５  ＣＤ−ＲＯＭ
【図１】
0005846577.tif 000016
【図２】
0005846577.tif 000017
【図３】
0005846577.tif 000018
【図４】
0005846577.tif 000019
【図５】
0005846577.tif 000020
【図６】
0005846577.tif 000021
【図７】
0005846577.tif 000022
【図８】
0005846577.tif 000023
【図９】
0005846577.tif 000024
【図１０】
0005846577.tif 000025
【図１１】
0005846577.tif 000026
【図１２】
0005846577.tif 000027
【図１３】
0005846577.tif 000028
【図１４】
0005846577.tif 000029
【図１５】
0005846577.tif 000030
【図１６】
0005846577.tif 000031
【図１７】
0005846577.tif 000032