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