以下に、本願の開示するデータ検索方法、データ検索プログラムおよび中継装置の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
[データ検索システムの構成]
図1は、実施例に係るデータ検索システムの構成を示す機能ブロック図である。データ検索システム9は、中継サーバ1と、ウェブブラウザ2と、ウェブサーバ3とを有する。データ検索システム9は、ウェブブラウザ2から中継サーバ1を介してウェブサーバ3で管理されるデータを検索する。なお、ウェブサーバ3は、プラットフォームサービスにより提供されるプラットフォームの一例である。
中継サーバ1は、ウェブブラウザ2とウェブサーバ3との間の通信を中継し、ウェブブラウザ2側に設置される。ウェブブラウザ2は、ウェブサービスを利用する、パーソナルコンピュータなどのユーザ端末で動作するソフトウェアである。ウェブサーバ3は、ユーザの機密データを秘匿したまま管理するウェブサービスを実施するサーバである。本実施例では、ウェブサーバ3は、ユーザによって預けられた顧客情報を管理するウェブサービスを実施するものとする。機密データは、例えば、個人の名前、電話番号、住所などの個人データであるが、公開に制限があるデータであれば良い。なお、データ検索システム9では、ウェブサーバ3は、中継サーバ1およびユーザ端末の外部の装置として異なるネットワーク上に適用した場合であるが、中継サーバ1およびユーザ端末と同一のネットワーク上に適用する場合であっても良い。
ここで、中継サーバ1は、ウェブブラウザ2からのデータの追加またはデータの更新に関する追加更新処理と、ウェブブラウザ2からのデータの検索に関する検索処理とを備える。
中継サーバ1は、追加更新処理では、ウェブブラウザ2からデータを追加する旨のリクエストを取得すると、追加する平文のデータが機密データを含んでいれば、以下の処理を行う。すなわち、中継サーバ1は、平文のデータに含まれる機密データと当該機密データを暗号化した暗号文とを対応付けて後述する対応テーブルに記録する。そして、中継サーバ1は、追加されるデータに含まれる機密データを暗号文に置き換え、置き換えて得られたデータを追加する旨のリクエストをウェブサーバ3に送信する。また、中継サーバ1は、追加更新処理では、ウェブブラウザ2からデータを更新する旨のリクエストを取得すると、データの更新部分が機密データであれば、以下の処理を行う。すなわち、中継サーバ1は、更新部分と当該更新部分を暗号化した暗号文とを対応付けて対応テーブルを更新する。
そして、中継サーバ1は、検索処理では、ウェブブラウザ2からデータを検索する旨のリクエストを取得すると、対応テーブルに記憶された情報に基づいて、リクエスト内の平文の検索文字列の一部または全部を含む機密データを選択する。そして、中継サーバ1は、選択した機密データに対応付けられた暗号文を抽出し、抽出した暗号文を用いて暗号化された検索キーを生成する。そして、中継サーバ1は、暗号化された検索キーを含むリクエストをウェブサーバ3に送信し、ウェブサーバ3から秘匿したままのデータを柔軟に検索する。
中継サーバ1は、データポリシーテーブル41と、対応テーブル42と、検索結果テーブル43とを有する。データポリシーテーブル41は、公開に制限がある旨のデータポリシーを有する機密データのデータ項目のフォーム属性を記憶する。フォーム属性とは、ウェブブラウザ2に表示されるフォームによって入力可能なデータ項目の属性を意味し、例えば、データ項目が名前を示すデータ項目であれば名前のフォーム属性を「name」とする。すなわち、名前が、公開に制限がある旨のデータポリシーを有するデータ項目であれば、データポリシーテーブル41には、名前のフォーム属性(一例として「name」)が記憶される。対応テーブル42は、平文の機密データと当該機密データを暗号化した暗号文とを対応付けて記憶する。検索結果テーブル43は、ウェブサーバ3によって検索された検索結果を記憶する。なお、対応テーブル42のデータ構造の一例は、後述する。
また、中継サーバ1は、リクエスト受付部11と、リクエスト解析部12と、機密データ判定部13と、第1の検索キー生成部14と、検索キー判定部15と、第2の検索キー生成部16と、リクエスト生成部17と、リクエスト転送部18とを有する。また、中継サーバ1は、レスポンス受付部19と、レスポンス解析部20と、検索結果復元部21と、キャッシュ書込/読出部22と、レスポンス生成部23と、レスポンス転送部24とを有する。ここで、機密データ判定部13および第1の検索キー生成部14は、追加更新処理を実行する追加更新処理部1Aに含まれる。検索キー判定部15、第2の検索キー生成部16、検索結果復元部21およびキャッシュ書込/読出部22は、検索処理を実行する検索処理部1Bに含まれる。
リクエスト受付部11は、HTTP(Hyper Text Transfer Protocol)の各種リクエストを受け付け、受け付けたリクエストをリクエスト解析部12に引き渡す。各種リクエストには、例えば、データを追加または更新する旨のリクエスト(以降、「追加更新リクエスト」という)またはデータを検索する旨のリクエスト(以降、「検索リクエスト」という)が含まれる。追加更新リクエストには、追加または更新する平文のデータが設定される。なお、「追加」とは、データを新規に登録することを意味する。「更新」とは、データの一部を変更することや、データを削除することを意味する。
リクエスト解析部12は、リクエスト受付部11によって受け付けられたリクエストを解析する。
機密データ判定部13は、リクエスト解析部12による解析の結果、追加更新リクエストを取得すると、リクエストの平文のデータに機密データが含まれているか否かを判定する。例えば、機密データ判定部13は、データポリシーテーブル41に記憶された情報から、公開に制限がある旨のデータポリシーを有するフォーム属性を読み出す。そして、機密データ判定部13は、取得したリクエストに、読み出したフォーム属性が含まれているか否かを判定する。なお、機密データ判定部13は、リクエストの平文のデータに機密データが含まれていないと判定した場合、当該リクエストを後述するリクエスト転送部18に引き渡す。
第1の検索キー生成部14は、機密データ判定部13によって追加または更新される平文のデータに機密データが含まれていると判定された場合、当該機密データが対応テーブル42に記憶されているか否かを判定する。
ここで、対応テーブル42のデータ構造について、図2を参照して説明する。図2は、対応テーブルのデータ構造の一例を示す図である。図2に示すように、対応テーブル42は、項番42a、フォーム属性42b、機密データ42c、検索キー42dおよび更新日時42eを対応付けて記憶する。項番42aは、レコード毎に一意に付けられた番号である。フォーム属性42bは、機密データ42cに対応するフォーム属性である。機密データ42cは、機密データの内容であり、平文の文字列で表される。検索キー42dは、機密データ42cを暗号化した内容であり、暗号化文字列で表される。すなわち、検索キー42dは、後述する検索処理部1Bがウェブサーバ3のデータを検索する際の検索キーとなる。更新日時42eは、データの追加更新処理時にアクセスされたタイムスタンプを示す。一例として、項番42aが「1」である場合、フォーム属性42bとして「name」、機密データ42cとして「山田太郎」、検索キー42dとして「XXXX」、更新日時42eとして「2012/1/1」と記憶している。
図1に戻って、機密データが対応テーブル42に記憶されているか否かの判定は、例えばリクエストがHTTPのリクエストである場合、リクエストのメッセージボディの、当該機密データに対応するフォーム属性とその属性値とによって判定できる。例えば、第1の検索キー生成部14は、リクエストのメッセージボディから、機密データに対応するフォーム属性の更新前後の属性値を参照する。そして、第1の検索キー生成部14は、更新前後の属性値のうちいずれか一方の属性値が対応テーブル42の同じフォーム属性42bに対応する機密データ42cに記憶されているか否かで判定すれば良い。
第1の検索キー生成部14は、平文のデータに含まれた機密データが対応テーブル42に記憶されていないと判定した場合、当該機密データを含むデータが追加されるデータであると判断する。そして、第1の検索キー生成部14は、機密データから暗号化された文字列を生成する。すなわち、平文の機密データが秘匿化される。そして、第1の検索キー生成部14は、機密データ、暗号化文字列、フォーム属性および更新日時を示すタイムスタンプを対応テーブル42に追加する。ここで、機密データから生成された暗号化文字列は、ウェブサーバ3上のデータを検索する検索処理において検索キーとして用いられる。つまり、検索処理は、検索キーを秘匿した状態でウェブサーバ3に送信し、データを秘匿したまま検索する。
また、第1の検索キー生成部14は、平文のデータに含まれた機密データが対応テーブル42に記憶されていると判定した場合、当該機密データが更新されるか否かを判定する。平文のデータに含まれた機密データが更新されるか否かは、例えばリクエストがHTTPのリクエストである場合、リクエストのメッセージボディの、当該機密データに対応するフォーム属性とその属性値とによって判定できる。例えば、第1の検索キー生成部14は、リクエストのメッセージボディから、機密データに対応するフォーム属性の更新前後の属性値を参照する。そして、第1の検索キー生成部14は、更新前後の属性値にそれぞれヌル以外の異なる値が設定されていれば、更新前の属性値から更新後の属性値に機密データが更新されると判断すれば良い。また、第1の検索キー生成部14は、更新前の属性値にヌル以外の値が設定され、更新後の属性値にヌルが設定されていれば、更新前の属性値の機密データが削除更新されると判断すれば良い。また、第1の検索キー生成部14は、更新前後の属性値にそれぞれヌル以外の同じ値が設定されていれば、機密データが更新されないと判断すれば良い。そして、第1の検索キー生成部14は、対応テーブル42に記憶されている機密データが更新されると判定した場合、当該機密データから暗号化された暗号文を生成する。
また、第1の検索キー生成部14は、対応テーブル42の機密データが更新されると判定した場合、当該機密データから暗号化された暗号文を生成する。すなわち、平文の機密データが秘匿化される。そして、第1の検索キー生成部14は、機密データ、暗号化文字列、フォーム属性およびタイムスタンプを対応テーブル42に更新する。なお、第1の検索キー生成部14は、対応テーブル42の機密データが更新されない、すなわち機密データ以外のデータが更新されると判定した場合、対応テーブル42の、機密データに対応するタイムスタンプのみを更新する。
検索キー判定部15は、リクエスト解析部12による解析の結果、検索リクエストを取得すると、リクエストの検索文字列が対応テーブル42に記憶されたいずれかの機密データ42cと完全一致であるか否かを判定する。そして、検索キー判定部15は、リクエストの検索文字列がいずれかの機密データ42cと完全一致でないと判定した場合、第2の検索キー生成部16に新たな検索キーを生成させる。
また、検索キー判定部15は、リクエストの検索文字列がいずれかの機密データ42cと完全一致であると判定した場合、検索文字列に対応する検索キーが正当であるか否かを検証すべく、以下の処理を行う。検索キー判定部15は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを単数または複数抽出する。そして、検索キー判定部15は、検索文字列と完全一致した機密データ42cに対応する更新日時42eが、抽出した機密データ42cに対応するいずれかの更新日時42eより古いか否かを判定する。
ここで、検索キー判定部15は、検索文字列に対応する更新日時42eが、抽出した機密データ42cに対応するいずれかの更新日時42eより古いと判定した場合、検索文字列に対応する検索キーを新たに第2の検索キー生成部16に生成させる。つまり、リクエストの検索文字列が既に対応テーブル42に記憶されていても、記憶された日時より後に検索文字列を部分に含む機密データ42cが追加更新される場合があるからである。かかる場合に、検索キー判定部15は、検索文字列に対応する検索キーを新たに生成させる。
また、検索キー判定部15は、検索文字列に対応する更新日時42eが、抽出した機密データ42cに対応するいずれの更新日時42eより新しいと判定した場合、後述するキャッシュ書込/読出部22に検索結果がキャッシュに有るか否かの判定を依頼する。そして、検索キー判定部15は、キャッシュ書込/読出部22から検索結果が無い旨の応答を取得した場合、検索キー判定部15によって取得されたリクエストを後述するリクエスト生成部17に引き渡す。なお、キャッシュとは、キャッシュメモリのことを意味し、本実施例では、例えば検索結果テーブル43のことをいう。
第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを単数または複数抽出する。そして、第2の検索キー生成部16は、抽出した機密データ42cに対応付けられた検索キー42dを用いて、新たな検索キーを生成する。例えば、第2の検索キー生成部16は、検索文字列を部分に含む機密データ42cを単数選択する場合、選択する機密データ42cに対応付けられた検索キー42dを抽出し、抽出した検索キー42dを用いて新たな検索キーを生成する。また、第2の検索キー生成部16は、検索文字列を部分に含む機密データ42cを複数選択する場合、選択する複数の機密データ42cに対応付けられたそれぞれの検索キー42dを抽出する。そして、第2の検索キー生成部16は、抽出したそれぞれの検索キー42dを、例えばカンマ(,)で区切る新たな検索キーを生成する。これにより、第2の検索キー生成部16は、検索の際に、対応テーブル42を用いて、平文の検索文字列を部分に含む機密データについて、秘匿した検索キーを動的に生成できる。つまり、第2の検索キー生成部16は、機密データを秘匿した単位に依存しない検索キーを生成できる。
また、第2の検索キー生成部16は、新たな検索キーを、検索文字列と対応付けて対応テーブル42に追加する。これにより、第2の検索キー生成部16は、平文の検索文字列が示す機密データと当該機密データに対応する暗号文(検索キー)とを対応付けた対応テーブル42を動的に作成できる。
リクエスト生成部17は、HTTPの各種リクエストを生成する。例えば、リクエスト生成部17は、第1の検索キー生成部14によって機密データから検索キーが生成されると、リクエストの機密データを、生成された検索キーに置き換える。そして、リクエスト生成部17は、置き換えて得られたデータを追加または更新する旨の追加更新リクエストを生成する。また、リクエスト生成部17は、検索キー判定部15からリクエストを取得すると、リクエストの検索文字列を検索キーに置き換える。そして、リクエスト生成部17は、置き換えて得られた検索キーに対応するデータを検索する旨の検索リクエストを生成する。また、リクエスト生成部17は、第2の検索キー生成部16によって検索文字列から新たな検索キーが生成されると、リクエストの検索文字列を、生成された検索キーに置き換える。そして、リクエスト生成部17は、置き換えて得られた検索キーに対応するデータを検索する旨の検索リクエストを生成する。つまり、リクエスト生成部17は、追加または更新する際の平文の機密データや検索する際の平文の検索文字列を暗号文に置き換えたリクエストデータを生成する。
リクエスト転送部18は、HTTPの各種リクエストをウェブサーバ3に転送する。これにより、リクエスト転送部18は、機密データを秘匿したリクエストデータをウェブサーバ3に送信することができる。
レスポンス受付部19は、リクエスト転送部18によって転送されたHTTPのリクエストに対応するHTTPのレスポンスを、ウェブサーバ3から受け付ける。例えば、レスポンス受付部19は、検索リクエストに対応するレスポンスを、ウェブサーバ3から受け付ける。また、レスポンス受付部19は、追加更新リクエストに対応するレスポンスを、ウェブサーバ3から受け付ける。
レスポンス解析部20は、レスポンス受付部19によって受け付けられたレスポンスを解析する。例えば、レスポンス解析部20は、レスポンス受付部19から受け付けたレスポンスが検索リクエストに対応するレスポンスである場合、取得したレスポンスを検索結果復元部21に引き渡す。また、レスポンス解析部20は、レスポンス受付部19から受け付けたレスポンスが追加更新リクエストに対応するレスポンスである場合、取得したレスポンスを後述するレスポンス転送部24に引き渡す。
検索結果復元部21は、検索リクエストに対応するレスポンスに含まれた検索結果のうち暗号化された部分を復元する。例えば、検索結果復元部21は、検索リクエストに対応するレスポンスを取得すると、当該レスポンスに含まれた検索結果の中の検索キーに対応する機密データを対応テーブル42から抽出する。そして、検索結果復元部21は、検索結果の中の検索キーを、抽出した機密データに置き換えて、検索結果を復元する。そして、検索結果復元部21は、検索キーと、復元した検索結果とをキャッシュ書込/読出部22に引き渡す。
キャッシュ書込/読出部22は、検索結果復元部21から検索キーと復元した検索結果とを取得する場合、検索キーと復元した検索結果とを対応付けて検索結果テーブル43に書き込む。
キャッシュ書込/読出部22は、検索結果の有無の判定依頼を取得する場合、検索結果が検索結果テーブル43に有るか否かを判定する。ここでいう検索結果とは、復元した検索結果のことをいう。例えば、キャッシュ書込/読出部22は、検索キー判定部15から検索キーに対応する検索結果の有無の判定依頼を取得すると、検索結果テーブル43から検索キーに対応する、復元した検索結果が検索結果テーブル43に記憶されているか否かを判定する。そして、キャッシュ書込/読出部22は、検索キーに対応する、復元した検索結果が検索結果テーブル43に記憶されていないと判定した場合、復元した検索結果が無い旨を検索キー判定部15に応答する。一方、キャッシュ書込/読出部22は、検索キーに対応する、復元した検索結果が検索結果テーブル43に記憶されていると判定した場合、検索キーに対応する、復元した検索結果を検索結果テーブル43から読み出す。そして、キャッシュ書込/読出部22は、読み出した検索結果をレスポンス生成部23に引き渡す。
レスポンス生成部23は、HTTPの各種レスポンスを生成する。例えば、レスポンス生成部23は、キャッシュ書込/読出部22から検索キーに対応する、復元した検索結果を取得すると、取得した復元した検索結果をレスポンスに設定することで、検索キーの検索リクエストに対応するレスポンスを生成する。
レスポンス転送部24は、HTTPの各種レスポンスをウェブブラウザ2に転送する。
ウェブサーバ3は、顧客DB31および顧客情報管理アプリ32を有する。
顧客DB31は、秘匿化された顧客情報を記憶する。すなわち、顧客DB31は、機密データを暗号化した状態で顧客情報を記憶する。ここで、顧客DB31のデータ構造について、図3を参照して説明する。図3は、顧客DBのデータ構造の一例を示す図である。図3に示すように、顧客DB31は、日時31a、名前31b、会社31cおよびメモ31dを対応付けて記憶する。日時31aは、顧客に対応する該当データが追加または更新された際の日時を示す。名前31bは、顧客の名前である。ここでは、顧客の名前は機密データであるので、名前31bは平文の名前を暗号化した暗号文で記憶されている。会社31cは、顧客の所属する会社名である。メモ31dは、顧客に対応する補助的な内容である。ここでは、会社名およびメモは機密データでないので、会社31cおよびメモ31dはそれぞれ平文で記憶されている。一例として、名前31bが「XXXX」である場合、日時31aとして「2012/1/1」、会社31cとして「A社」、メモ31dとして「・・・」と記憶している。
顧客情報管理アプリ32は、顧客情報を管理するアプリケーションである。例えば、顧客情報管理アプリ32は、データを追加または更新する旨の追加更新リクエストを取得すると、取得したリクエストに応じてリクエスト内に設定されたデータを顧客DB31に追加または更新する。また、顧客情報管理アプリ32は、検索キーに対応するデータを検索する旨の検索リクエストを取得すると、取得したリクエストに応じて顧客DB31からデータを検索する。すなわち、顧客情報管理アプリ32は、リクエストに含まれた暗号化された検索キーを用いて、顧客DB31から該当するデータを検索する。そして、顧客情報管理アプリ32は、レスポンスを送信元のウェブブラウザ2へ中継サーバ1を介して送信する。
[データ検索処理の具体例]
次に、データ検索処理の具体例について、図4を参照して説明する。図4は、実施例に係るデータ検索処理の具体例を説明する図である。図4では、ウェブブラウザ2(利用者)から、名前が「山田」のデータを検索する旨のHTTPの検索リクエストが送信される場合について説明する。ここでは、検索リクエストの検索文字列は平文の「山田」である。なお、対応テーブル42には、項番42a「1」について、機密データ42c「山田 太郎」と検索キー42d「XXXX」とが対応付けて記憶されている。項番42a「2」について、機密データ42c「山田 花子」と検索キー42d「YYYY」とが対応付けて記憶されている。
図4に示すように、中継サーバ1では、リクエスト受付部11が、ウェブブラウザ2から送信された検索リクエストを受け付ける。そして、検索キー判定部15は、検索リクエストの検索文字列が対応テーブル42に記憶されたいずれかの機密データ42cと完全一致であるか否かを判定する。ここでは、対応テーブル42には、検索文字列「山田」と完全一致である機密データ42cがないので、検索キー判定部15は、検索リクエストの検索文字列「山田」がいずれかの機密データ42cと完全一致でないと判定する。
そして、第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを抽出する。ここでは、検索文字列「山田」を部分に含む機密データ42cとして「山田 太郎」、「山田 花子」が抽出される。
そして、第2の検索キー生成部16は、機密データ42cに対応付けられた検索キー42dを用いて、新たな検索キーを生成する。ここでは、検索文字列を部分に含む機密データ42cが複数選択されるので、第2の検索キー生成部16は、選択される複数の機密データ42cに対応付けられたそれぞれの検索キー42dを抽出する。そして、第2の検索キー生成部16は、抽出したそれぞれの検索キー42dを「,」で区切る新たな検索キーを生成する。すなわち、新たな検索キーとして「XXXX,YYYY」が生成される。これにより、第2の検索キー生成部16は、検索文字列「山田」を部分に含む機密データ「山田 太郎」、「山田 花子」を秘匿する検索キー「XXXX,YYYY」を動的に生成できる。つまり、第2の検索キー生成部16は、秘匿した機密データの単位(「山田 太郎」、「山田 次郎」)に依存しないで検索させることが可能となる。
そして、第2の検索キー生成部16は、新たな検索キーを、検索文字列と対応付けて対応テーブル42に追加する。ここでは、第2の検索キー生成部16は、新たな検索キー「XXXX,YYYY」を、平文の検索文字列「山田」と対応付けて対応テーブル42に追加する。これにより、第2の検索キー生成部16は、平文の検索文字列「山田」が示す機密データと当該機密データに対応する暗号文(検索キー)「XXXX,YYYY」とを対応付けた対応テーブル42を動的に作成できる。
中継サーバ1では、リクエスト転送部18が、リクエストの検索文字列を、暗号化された検索キーに置き換えた検索リクエストをウェブサーバ3に転送する。
ウェブサーバ3では、顧客情報管理アプリ32が、暗号化された検索キーに対応するデータを顧客DB31から検索する。ここでは、顧客情報管理アプリ32は、検索キー「XXXX,YYYY」に対応するデータを検索する。すなわち、顧客情報管理アプリ32は、検索キー「XXXX」に対応するデータおよび検索キー「YYYY」に対応するデータを検索する。そして、顧客情報管理アプリ32は、検索結果を含むレスポンスを、中継サーバ1を介してウェブブラウザ2に送信する。
中継サーバ1では、検索結果復元部21が、レスポンスに含まれた検索結果のうち暗号化された部分を、対応テーブル42を用いて復元する。ここでは、検索結果復元部21は、検索結果のうち暗号化された検索キー「XXXX」の部分を「山田 太郎」に、「YYYY」の部分を「山田 花子」に復元する。そして、レスポンス転送部24は、暗号化された検索結果を、復号化された検索結果に置き換えたレスポンスをウェブブラウザ2に転送する。
[検索キー生成処理の具体例]
ここで、検索キー生成処理の具体例について、図5Aおよび図5Bを参照して説明する。図5Aおよび図5Bは、検索キー生成処理の具体例を説明する図である。
図5Aに示すように、ウェブブラウザ2側の秘匿前のデータが追加更新処理によってウェブサーバ3側の顧客DB31に秘匿後のデータとして記憶される。ここでは、名前が機密データであるものとし、顧客DB31には、名前の内容が秘匿化されている。そして、中継サーバ1には、対応テーブル42に機密データ42cが「山田 太郎」、「山田 花子」に対応付けられる検索キー42dおよび更新日時42eが記憶されている。
このような状況の下、ウェブブラウザ2(利用者)から、名前が「山田」のデータを検索する旨のHTTPの検索リクエストが送信されると、検索キー判定部15は、検索文字列「山田」と完全一致である機密データ42cがないと判定する。そして、第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを抽出する。ここでは、「山田 太郎」、「山田 花子」が抽出される。
そして、第2の検索キー生成部16は、機密データ42cに対応付けられた検索キー42dを用いて、新たな検索キーを生成する。ここでは、新たな検索キーとして「XXXX,YYYY」が生成される。そして、第2の検索キー生成部16は、新たな検索キーを、検索文字列と対応付けて対応テーブル42に追加することになる。ここでは、項番42a「3」が示すレコードに、機密データ42cとして「山田」、検索キー42dとして「XXXX,YYYY」、更新日時42eとして「2012/03/01」が追加される。
図5Bに示すように、項番42a「3」が示すレコードに新たな機密データおよび検索キーが追加された状態の下、ウェブブラウザ2(利用者)から、データa1を追加する旨の追加更新リクエストが送信されるとする。すると、中継サーバ1では、ウェブブラウザ2側の秘匿前のデータa1に対応するレコードが追加更新処理によって対応テーブル42に追加される。ここでは、項番42a「4」が示すレコードb1に、機密データ42cとして「山田 次郎」、検索キー42dとして「ZZZZ」、更新日時42eとして「2012/04/01」が追加されている。そして、ウェブブラウザ2側の秘匿前のデータa1が追加更新処理によってウェブサーバ3側の顧客DB31に秘匿後のデータc1として記憶される。
このような状況の下、ウェブブラウザ2(利用者)から、名前が「山田」のデータを検索する旨のHTTPの検索リクエストが送信されると、検索キー判定部15は、検索文字列「山田」と完全一致である機密データ42cが項番42a「3」にあると判定する。そして、検索キー判定部15は、対応テーブル42に記憶された機密データ42cのうち検索文字列「山田」を部分に含む機密データ42cを抽出する。ここでは、「山田 太郎」、「山田 花子」、「山田 次郎」が抽出される。
さらに、検索キー判定部15は、検索文字列「山田」と完全一致した機密データ42cに対応する更新日時42eが、抽出した機密データ42cに対応するいずれかの更新日時42eより古いか否かを判定する。ここでは、検索文字列「山田」と完全一致した機密データ42cに対応する更新日時42eは、「2012/03/01」である。抽出した機密データ42c「山田 太郎」、「山田 花子」、「山田 次郎」に対応する更新日時42eは、それぞれ「2012/01/01」、「2012/02/01」、「2012/04/01」である。したがって、検索文字列「山田」に対応する更新日時42eは、「山田 次郎」に対応する更新日時42eより古いと判定される。
そこで、検索キー判定部15は、第2の検索キー生成部16に、検索文字列「山田」に対応する検索キーを新たに生成させる。すなわち、第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを抽出する。ここでは、「山田 太郎」、「山田 花子」、「山田 次郎」が抽出される。
そして、第2の検索キー生成部16は、機密データ42cに対応付けられた検索キー42dを用いて、新たな検索キーを生成する。ここでは、新たな検索キーとして「XXXX,YYYY,ZZZZ」が生成される。そして、第2の検索キー生成部16は、新たな検索キーを、検索文字列と対応付けて対応テーブル42に更新することになる。ここでは、項番42a「3」が示す機密データ42c「山田」に対応するレコードb2に、検索キー42dとして「XXXX,YYYY,ZZZZ」、更新日時42eとして「2012/04/02」が更新される。
[リクエストの具体例]
次に、データを追加、更新および検索する場合のリクエストについて、図6A〜図6Cを参照して説明する。図6Aは、データを追加する場合のリクエストの一例を示す図である。図6Bは、データを更新する場合のリクエストの一例を示す図である。図6Cは、データを検索する場合のリクエストの一例を示す図である。なお、図6A〜図6Cでは、機密データを名前とし、名前のフォーム属性を「name」とする。
図6A上図には、中継サーバ1がウェブブラウザ2から受け取る、データを追加する場合のリクエストが表されている。図6A上図に示すように、データを追加する場合のリクエストには、リクエストラインr1とリクエストヘッダーr2とメッセージボディr3とが含まれる。メッセージボディr3に、データのフォーム属性とその属性値とが設定される。そして、機密データに関して、更新前後のフォーム属性とその属性値とが設定される。
ここでは、機密データである名前の更新前のフォーム属性「from_name」の属性値としてヌルが設定されている。機密データである名前の更新後のフォーム属性「to−name」の属性値として「山田 太郎」が設定されている。会社のフォーム属性「company」の属性値として「A社」が設定されている。日時のフォーム属性「date」の属性値として「2012−01−01」が設定されている。メモのフォーム属性「memo」の属性値として「**********」が設定されている。すなわち、かかるリクエストは、機密データとして示される名前「山田 太郎」に関するデータを追加する旨のリクエストである。
図6A下図には、中継サーバ1がウェブサーバ3に送信する、データを追加する場合のリクエストが表されている。図6A下図に示すように、メッセージボディr31に、機密データである名前の更新後のフォーム属性「to_name」の属性値として「XXXX」が設定されている。すなわち、中継サーバ1は、リクエストを中継サーバ1からウェブサーバ3に送信する場合、機密データである「山田太郎」から暗号化された「XXXX」に置き換えて送信する。
図6Bには、中継サーバ1がウェブブラウザ2から受け取る、データを更新する場合のリクエストが表されている。図6Bに示すように、データを更新する場合のリクエストには、リクエストラインr1とリクエストヘッダーr2とメッセージボディr32とが含まれる。メッセージボディr32に、データのフォーム属性とその属性値とが設定される。そして、機密データに関して、更新前後のフォーム属性とその属性値とが設定される。
ここでは、機密データである名前の更新前のフォーム属性「from_name」の属性値として「山田 太郎」が設定されている。機密データである名前の更新後のフォーム属性「to_name」の属性値として「山田 花子」が設定されている。すなわち、かかるリクエストは、機密データとして示される名前「山田 太郎」に関するデータについて、「山田 太郎」を「山田 花子」に更新する旨のリクエストである。
なお、中継サーバ1がウェブサーバ3に送信する、データを更新する場合のリクエストは、「山田 太郎」および「山田 花子」をそれぞれ暗号化した暗号化文字列に置き換えて送信される。
図6Cには、中継サーバ1がウェブブラウザ2から受け取る、データを検索する場合のリクエストが表されている。図6Cに示すように、データを検索する場合のリクエストには、リクエストラインr1とリクエストヘッダーr2とメッセージボディr33とが含まれる。メッセージボディr33に、データのフォーム属性とその属性値とが設定される。そして、機密データに関して、検索に関わるフォーム属性とその属性値とが設定される。検索に関わるフォーム属性の属性値が検索文字列となる。
ここでは、検索に関わるフォーム属性「name_query1」の属性値として「山田太郎」が設定されている。検索に関わるフォーム属性「name_query2」の属性値として「山田花子」が設定されている。「山田 太郎」および「山田 花子」が検索文字列となる。すなわち、かかるリクエストは、「山田 太郎」および「山田 花子」に関するデータについて検索する旨のリクエストである。
なお、中継サーバ1がウェブサーバ3に送信する、データを検索する場合のリクエストは、「山田 太郎」および「山田 花子」をそれぞれ暗号化した暗号化文字列に置き換えて送信される。
[データの追加更新処理の手順]
次に、図7を参照して、データの追加更新処理の手順を説明する。図7は、データの追加更新処理のフローチャートを示す図である。なお、データを追加または更新する旨のリクエスト(追加更新リクエスト)がウェブブラウザ2から送信されたものとする。リクエストには、平文のデータが設定されている。
まず、中継サーバ1では、リクエスト受付部11が、ウェブブラウザ2から送信されたリクエストを受け取る(ステップS11)。
そして、機密データ判定部13は、受け取ったリクエストの平文のデータに機密データが含まれているか否かを判定する(ステップS12)。例えば、機密データ判定部13は、データポリシーテーブル41に記憶された情報から、データポリシーを有するフォーム属性を読み出す。そして、機密データ判定部13は、読み出したフォーム属性がリクエストのメッセージボディに含まれているか否かを判定する。
リクエストの平文のデータに機密データが含まれていないと判定した場合(ステップS12;No)、機密データ判定部13は、リクエストをそのまま送信すべく、ステップS20に移行する。
一方、リクエストの平文のデータに機密データが含まれていると判定した場合(ステップS12;Yes)、第1の検索キー生成部14は、当該機密データが対応テーブル42に記憶されているか否かを判定する(ステップS13)。例えば、第1の検索キー生成部14は、リクエストのメッセージボディから、機密データに対応するフォーム属性の更新前後の属性値を参照する。そして、第1の検索キー生成部14は、更新前後の属性値のうちいずれか一方の属性値が対応テーブル42の同じフォーム属性42bに対応する機密データ42cに記憶されているか否かを判定する。
機密データが対応テーブル42に記憶されていないと判定した場合(ステップS13;No)、第1の検索キー生成部14は、当該機密データを含むデータが追加されるデータであると判断する。そして、第1の検索キー生成部14は、機密データを秘匿(暗号化)する(ステップS14)。すなわち、第1の検索キー生成部14は、機密データから暗号化された暗号化文字列を生成する。
そして、第1の検索キー生成部14は、機密データ、暗号化文字列、フォーム属性および更新日時を示すタイムスタンプを対応テーブル42に新規追加する(ステップS15)。そして、第1の検索キー生成部14は、機密データを暗号化文字列に置き換えたリクエストを送信すべく、ステップS20に移行する。
一方、機密データが対応テーブル42に記憶されていると判定した場合(ステップS13;Yes)、第1の検索キー生成部14は、当該機密データが更新されるか否かを判定する(ステップS16)。例えば、第1の検索キー生成部14は、リクエストのメッセージボディから、機密データに対応するフォーム属性の更新前後の属性値を参照する。そして、第1の検索キー生成部14は、更新前後の属性値に異なる値が設定されているか否かを判定する。なお、更新前後の属性値にそれぞれヌル以外の異なる値が設定されていれば、更新前の属性値から更新後の属性値に機密データが更新されると判断される。更新前の属性値にヌル以外の値が設定され、更新後の属性値にヌルが設定されていれば、更新前の属性値の機密データが削除されると判断される。更新前後の属性値にヌル以外の同じ値が設定されていれば、機密データが更新されないと判断される。
機密データが更新されると判定した場合(ステップS16;Yes)、第1の検索キー生成部14は、機密データを秘匿(暗号化)する(ステップS17)。すなわち、第1の検索キー生成部14は、機密データから暗号化された暗号化文字列を生成する。
そして、第1の検索キー生成部14は、機密データ、暗号化文字列、フォーム属性および更新日時を示すタイムスタンプを対応テーブル42に更新する(ステップS18)。そして、第1の検索キー生成部14は、機密データを暗号化文字列に置き換えたリクエストを送信すべく、ステップS20に移行する。
一方、機密データが更新されないと判定した場合(ステップS16;No)、第1の検索キー生成部14は、更新日時を示すタイムスタンプのみを対応テーブル42に更新する(ステップS19)。そして、第1の検索キー生成部14は、リクエストをそのまま送信すべく、ステップS20に移行する。
ステップS20では、リクエスト転送部18は、ウェブサーバ3にリクエストを送信する(ステップS20)。これにより、中継サーバ1は、機密データを秘匿したままデータを追加更新するリクエストをウェブサーバ3に送信できる。
[データの検索処理の手順]
次に、図8を参照して、データの検索処理の手順を説明する。図8は、データの検索処理のフローチャートを示す図である。なお、データを検索する旨のリクエスト(検索リクエスト)がウェブブラウザ2から送信されたものとする。リクエストには、平文のデータが設定されている。
まず、中継サーバ1では、リクエスト受付部11が、ウェブブラウザ2から送信されたリクエストを受け取る。そして、検索キー判定部15は、リクエストの検索文字列(平文)を受け取る(ステップS31)。
そして、検索キー判定部15は、対応テーブル42に、受け取った検索文字列と完全一致する機密データがあるか否かを判定する(ステップS32)。検索文字列と完全一致する機密データがないと判定した場合(ステップS32;No)、検索キー判定部15は、検索文字列から検索キーを生成すべく、ステップS38に移行する。
一方、検索文字列と完全一致する機密データがあると判定した場合(ステップS32;Yes)、検索キー判定部15は、対応テーブル42から、検索文字列と完全一致する機密データ42cに対応する更新日時42eを取得する(ステップS33)。ここでは、検索文字列と完全一致する機密データ42cに対応する更新日時42eを「A」とする。検索キー判定部15は、対応テーブル42から、検索文字列を含む機密データ42cに対応する更新日時42eを取得する(ステップS34)。ここでは、検索文字列を含む機密データ42cに対応する更新日時42eを「B」とする。検索文字列を含む機密データ42cは、検索文字列を部分に含む機密データ42cのみならず、検索文字列を全体に含む機密データ42cを含む。
そして、検索キー判定部15は、検索文字列に対応する更新日時42e(A)が検索文字列を含む機密データ42cに対応する更新日時42e(B)以上であるか否かを判定する(ステップS35)。すなわち、検索キー判定部15は、検索文字列に対応する更新日時42e(A)が検索文字列を含む機密データ42cに対応するいずれかの更新日時42e(B)より古くないか否かを判定する。検索文字列に対応する更新日時42e(A)が検索文字列を含む機密データ42cに対応する更新日時42e(B)未満であると判定した場合(ステップS35;No)、検索キー判定部15は、検索文字列から検索キーを生成すべく、ステップS38に移行する。
検索文字列に対応する更新日時42e(A)が検索文字列を含む機密データ42cに対応する更新日時42e(B)以上であると判定した場合(ステップS35;Yes)、キャッシュ書込/読出部22は、以下の処理を行う。すなわち、キャッシュ書込/読出部22は、検索文字列に対応する検索キー42dの数が検索結果テーブル43に記憶された同じ検索キーに対応するデータの数と一致するか否かを判定する(ステップS36)。例えば、検索文字列に対応する検索キー42dが「XXXX、YYYY」である場合、キャッシュ書込/読出部22は、検索結果テーブル43に「XXXX」と「YYYY」に対応する2個のデータがあるか否かを判定する。
検索キー42dの数が同じ検索キーに対応するデータの数と一致しないと判定した場合(ステップS36;No)、検索キー判定部15は、検索文字列から検索キーを生成すべく、ステップS38に移行する。
一方、検索キー42dの数が同じ検索キーに対応するデータの数と一致すると判定した場合(ステップS36;Yes)、キャッシュ書込/読出部22は、検索キー42dに対応する検索結果を検索結果テーブル43から読み出す。そして、レスポンス転送部24は、検索結果テーブル43から読み出した検索結果をウェブブラウザ2に返却する(ステップS37)。そして、データの検索処理は終了する。
ステップS38では、第2の検索キー生成部16は、検索文字列から検索キーを生成する(ステップS38)。例えば、第2の検索キー生成部16は、対応テーブル42から、検索文字列を含む機密データ42cを選択する。検索文字列を含む機密データ42cは、検索文字列を部分に含む機密データ42cのみならず、検索文字列を全体に含む機密データ42cを含む。そして、第2の検索キー生成部16は、機密データ42cを単数選択した場合、選択した機密データ42cに対応付けられた検索キー42dを抽出し、抽出した検索キー42dを用いて新たな検索キーを生成する。第2の検索キー生成部16は、機密データ42cを複数選択した場合、選択した機密データ42cに対応付けられたそれぞれの検索キー42dを抽出し、抽出した検索キー42dを「,」で区切る新たな検索キーを生成する。
そして、第2の検索キー生成部16は、生成した検索キーを、検索文字列と対応付けて対応テーブル42に追加する(ステップS39)。そして、リクエスト転送部18は、検索文字列を検索キーに置き換えたリクエストをウェブサーバ3に送信する(ステップS40)。これにより、中継サーバ1は、検索キーを秘匿したままデータを検索するリクエストをウェブサーバ3に送信できる。
その後、レスポンス受付部19は、リクエストに対応するレスポンスを、ウェブサーバ3から受け付ける。そして、検索結果復元部21は、レスポンスの検索結果を受け取り(ステップS41)、検索結果を復元する(ステップS42)。例えば、検索結果復元部21は、検索結果の中の検索キーに対応する機密データを対応テーブル42から抽出する。そして、検索結果復元部21は、検索結果の中の検索キーを、抽出した機密データに置き換えて、検索結果を復元する。
そして、キャッシュ書込/読出部22は、復元した検索結果を検索キーとともに検索結果テーブル43にキャッシュする(ステップS43)。そして、レスポンス転送部24は、復元した検索結果をウェブブラウザ2に返却する(ステップS44)。そして、データの検索処理は終了する。
これにより、中継サーバ1は、検索の際に、平文の検索文字列を部分に含む機密データを秘匿する検索キーを動的に生成できる。この結果、利用者は、ウェブサーバ3から秘匿後のデータを秘匿したまま柔軟に検索することができる。
[実施例の効果]
上記実施例によれば、中継サーバ1は、ウェブブラウザ2から受信したデータに含まれる機密情報を暗号化し、暗号化した機密情報である暗号情報をウェブサーバ3に送信する。そして、中継サーバ1は、機密情報と暗号情報とを対応付けて対応テーブル42に記録する。さらに、中継サーバ1は、ウェブブラウザ2から受信した秘匿前の検索キーに少なくとも一部が一致する機密情報を対応テーブル42から選択し、選択した機密情報に対応付けられた暗号情報それぞれを暗号化された検索キーとして生成する。そして、中継サーバ1は、生成した暗号化された検索キーをウェブサーバ3に送信する。かかる構成によれば、中継サーバ1は、検索の際に、対応テーブル42に記憶された情報に基づいて、秘匿前の検索キーを部分に含む秘匿後の検索キーを動的に生成できる。この結果、中継サーバ1は、ウェブサーバ3がデータを秘匿して保管する場合、秘匿後のデータを柔軟に検索することが可能となる。
また、上記実施例によれば、中継サーバ1は、ウェブブラウザ2からデータの更新を所望する機密情報を受信すると、受信した機密情報を暗号化し、暗号化した機密情報である暗号情報をウェブサーバ3に送信する。そして、中継サーバ1は、更新を所望する機密情報と暗号情報とを対応付けて対応テーブルを更新する。かかる構成によれば、中継サーバ1は、機密情報が更新された場合であっても、ウェブサーバ3の秘匿後のデータを柔軟に検索することが可能となる。
また、上記実施例によれば、中継サーバ1は、ウェブブラウザ2から取得された秘匿前の検索キーが対応テーブル42に記憶された情報内のいずれかの機密情報と完全一致であるか否かを判定する。そして、中継サーバ1は、秘匿前の検索キーが対応テーブル42に記憶された情報内のいずれの機密情報とも完全一致でないと判定した場合、対応テーブル42に記憶された情報内の機密情報のうち秘匿前の検索キーを部分に含む機密情報を単数または複数選択する。そして、中継サーバ1は、選択した機密情報に対応付けられた暗号情報を抽出し、抽出した暗号情報を用いて暗号化された検索キーを生成する。かかる構成によれば、中継サーバ1は、機密情報を秘匿した単位に依存しない秘匿後の検索キーを生成できる。この結果、中継サーバ1は、ウェブサーバ3の秘匿後のデータを柔軟に検索することが可能となる。
また、上記実施例によれば、中継サーバ1は、検索キーを生成する処理によって生成された、暗号化された検索キーを、秘匿前の検索キーと対応付けて対応テーブル42に記録する。かかる構成によれば、中継サーバ1は、検索キーを生成する処理によって生成された秘匿後の検索キーを秘匿前の検索キーと対応付けて対応テーブル42に記録するので、対応テーブル42を動的に生成できる。
また、上記実施例によれば、中継サーバ1は、対応テーブル24に記録した際の記録日時を対応付けて対応テーブル42に記録する。そして、中継サーバ1は、秘匿前の検索キーが対応テーブル42に記憶された情報内のいずれかの機密情報と完全一致であると判定した場合、対応テーブル42に秘匿前の検索キーを部分に含む機密情報があれば当該機密情報を単数または複数選択する。そして、中継サーバ1は、秘匿前の検索キーに対応する記録日時が、選択した機密情報に対応するいずれかの記録日時より古ければ、秘匿前の検索キーに対応する暗号化された検索キーを新たに生成する。かかる構成によれば、中継サーバ1は、新しく記録された機密情報を考慮したうえで、秘匿後の検索キーを動的に生成できる。さらに、中継サーバ1は、新たに生成した暗号化された検索キーを秘匿前の検索キーと対応付けて対応テーブル42を更新することで、対応テーブル41を学習させることが可能となる。
[プログラムなど]
なお、上記実施例では、第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列を部分に含む機密データ42cを抽出すると説明した。そして、図4等で示すように、第2の検索キー生成部16は、対応テーブル42に記憶された機密データ42cのうち検索文字列と前方一致する機密データ42cを抽出する場合を説明した。しかしながら、第2の検索キー生成部16は、これに限定されず、対応テーブル42に記憶された機密データ42cのうち検索文字列と後方一致する機密データ42cを抽出しても良いし、中間一致する機密データ42cを抽出しても良い。この結果、第2の検索キー生成部16は、機密データを秘匿する検索キーを柔軟に生成でき、ひいてはウェブサーバ3から秘匿後のデータを秘匿したまま柔軟に検索させることができる。
また、中継サーバ1は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した追加更新処理部1Aおよび検索処理部1Bなどの各機能を搭載することによって実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、機密データ判定部13と第1の検索キー生成部14とを1個の部として統合しても良い。検索キー判定部15と第2の検索キー生成部16とを1個の部として統合しても良い。一方、第1の検索キー生成部14を機密データを含むデータを追加する場合の検索キー生成部と機密データを含むデータを更新する場合の検索キー生成部と機密データを含まないデータを更新する場合の検索キー生成部とに分散しても良い。また、データポリシーテーブル41、対応テーブル42および検索結果テーブル43を中継サーバ1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した中継サーバ1と同様の機能を実現するデータ検索プログラムを実行するコンピュータの一例を説明する。図9は、データ検索プログラムを実行するコンピュータの一例を示す図である。
図9に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、データ検索プログラム205aおよびデータ検索関連情報205bを記憶する。
CPU203は、データ検索プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、中継サーバ1の各機能部に対応する。データ検索関連情報205bは、データポリシーテーブル41、対応テーブル42および検索結果テーブル43に対応する。そして、例えばリムーバブルディスク211が、データ検索プログラム205aなどの各情報を記憶する。
なお、データ検索プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからデータ検索プログラム205aを読み出して実行するようにしても良い。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)中継装置が、
第1の情報処理装置から受信したデータに含まれる第1の情報と前記第1の情報を変換した第2の情報とを対応づけて記録する記憶部から、前記第1の情報処理装置から受信した第1の検索キーに少なくとも一部が一致する第1の情報を複数選択し、
選択した複数の前記第1の情報に対応付けられた前記第2の情報それぞれを第2の検索キーとして生成し、
生成した第2の検索キーを前記第2の情報処理装置に送信する、
処理を実行することを特徴とするデータ検索方法。
(付記2)前記中継装置が、
前記第1の情報処理装置から前記データの更新を所望する第3の情報を受信すると、前記更新データに含まれる第3の情報を他の第2の情報に変換し、変換した第2の情報を前記第2の情報処理装置に送信し、
前記更新データに含まれる第3の情報と他の前記第2の情報とを対応付けて前記記憶部を更新する
ことを特徴とする付記1に記載のデータ検索方法。
(付記3)前記中継装置が、
該第2の検索キーを生成する処理は、
前記第1の情報処理装置から受信した第1の検索キーが前記記憶部に記憶された情報内のいずれかの第1の情報と完全一致であるか否かを判定し、
該判定する処理の結果、前記第1の検索キーが前記記憶部に記憶された情報内のいずれの第1の情報とも完全一致でないと判定した場合、前記記憶部に記憶された情報内の第1の情報のうち前記第1の検索キーに少なくとも一部が一致する前記第1の情報を選択し、選択した前記第1の情報に対応付けられた前記第2の情報それぞれを用いて前記第2の検索キーを生成する
ことを特徴とする付記1または付記2に記載のデータ検索方法。
(付記4)前記中継装置が、
該第2の検索キーを生成する処理によって生成された前記第2の検索キーを、前記第1の情報処理装置から受信した前記第1の検索キーと対応付けて前記記憶部に記録する
ことを特徴とする付記3に記載のデータ検索方法。
(付記5)前記中継装置が、
前記記憶部に記録する処理は、さらに、前記記憶部に記録した際の記録日時を前記第1の検索キーと対応付けて前記記憶部に記録し、
該判定する処理の結果、前記第1の検索キーが前記記憶部に記憶された情報内のいずれかの第1の情報と完全一致であると判定した場合、前記記憶部に記憶された情報内の第1の情報のうち前記第1の検索キーに少なくとも一部が一致する前記第1の情報があれば当該第1の情報を選択し、前記第1の検索キーに対応する記録日時が、選択した前記第1の情報に対応付けられたいずれかの記録日時より古ければ、前記第1の検索キーに対応する第2の検索キーを新たに生成する
ことを特徴とする付記4に記載のデータ検索方法。
(付記6)前記中継装置が、
前記第2の情報処理装置から受信した前記第2の検索キーに対応する検索結果をキャッシュメモリに記録し、
前記第1の情報処理装置から第1の検索キーを受信すると、該第2の検索キーを生成する処理によって生成される第2の検索キーに対応する検索結果が前記キャッシュメモリにあれば、前記第2の検索キーを前記第2の情報処理装置に送信しないで前記キャッシュメモリに記憶された検索結果を前記第1の情報処理装置に送信する
ことを特徴とする付記1から付記5のいずれか1つに記載のデータ検索方法。
(付記7)コンピュータに、
第1の情報処理装置から受信したデータに含まれる第1の情報と前記第1の情報を変換した第2の情報とを対応づけて記録する記憶部から、前記第1の情報処理装置から受信した第1の検索キーに少なくとも一部が一致する第1の情報を複数選択し、
選択した複数の前記第1の情報に対応付けられた前記第2の情報それぞれを第2の検索キーとして生成し、生成した第2の検索キーを前記第2の情報処理装置に送信する、
各処理を実行させることを特徴とするデータ検索プログラム。
(付記8)第1の情報処理装置から受信したデータに含まれる第1の情報と前記第1の情報を変換した第2の情報とを対応づけて記憶する記憶部と、
前記記憶部から、前記第1の情報処理装置から受信した第1の検索キーに少なくとも一部が一致する第1の情報を複数選択し、選択した複数の前記第1の情報に対応付けられた前記第2の情報それぞれを第2の検索キーとして生成する生成部と、
前記生成部によって生成された第2の検索キーを前記第2の情報処理装置に送信する第2の送信部と、
を有することを特徴とする中継装置。