(57)【要約】【課題】キーワードの推定及び出現頻度の知得を適切に防止することが可能な情報処理装置等を提供する。【解決手段】サーバコンピュータ１は、キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得する取得部と、前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び暗号化後続セル位置を記憶する記憶処理部とを備える。【選択図】図１
2016133881.tif 000002
【特許請求の範囲】
【請求項１】
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得する取得部と、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び暗号化後続セル位置を記憶する記憶処理部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記記憶部の未使用のセル位置を、通信網を介して接続されるコンピュータへ送信する送信部を備え、
前記取得部は、前記送信部により送信された未使用のセル位置の情報を参照して前記コンピュータが選択した暗号化後続セル位置を取得する
請求項１に記載の情報処理装置。
【請求項３】
暗号化キーワードを取得するキーワード取得部と、
暗号化キーワードに対応付けて、前記記憶部の先頭セル位置を記憶した先頭テーブルと
を備える請求項１または２に記載の情報処理装置。
【請求項４】
キーワードと、複数の記憶セルを有する記憶部における暗号化ファイル情報を記憶する未使用の記憶セル位置とを対応付けて記憶した記憶テーブルと、
前記キーワードに対応する暗号化ファイル情報、前記記憶テーブルを参照して読み出される前記キーワードに対応付けられた記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を、通信網を介して接続される情報処理装置へ送信する送信部と、
該送信部による送信に対応して、前記記憶テーブルに送信される前記後続セル位置を記憶する記憶処理部と
を備えるコンピュータ。
【請求項５】
情報処理装置に、
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得し、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び前記暗号化後続セル位置を記憶する
処理を実行させるプログラム。
【請求項６】
情報処理装置を用いた情報処理方法において、
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得し、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び前記暗号化後続セル位置を記憶する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、コンピュータ、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
従来、キーワードを秘匿することによりキーワードの推定を防止する技術が知られている（例えば、非特許文献１及び非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Deterministic and Efficiently Searchable Encryption, Mihir Bellare, Alexandra Boldyreva, Adam O’Neill, Advances in Cryptology - CRYPTO 2007,  Lecture Notes in Computer Science Volume 4622, 2007, pp 535-552
【非特許文献２】Dynamic searchable symmetric encryption, Seny Kamara, Charalampos Papamanthou, Tom Roeder , Proceeding CCS '12 Proceedings of the 2012 ACM conference on Computer and communications security pp. 965-976
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法ではキーワードに関連付けられるデータの個数や更新頻度を手掛かりにキーワードが推定されてしまう危険がある。
【０００５】
一つの側面では、キーワードの秘匿性を高めることが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願に開示する情報処理装置は、キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得する取得部と、前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び暗号化後続セル位置を記憶する記憶処理部とを備える。
【発明の効果】
【０００７】
一つの側面では、キーワードの秘匿性を高めることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムのハードウェア群を示す説明図である。
【図２】コンピュータのハードウェア群を示すブロック図である。
【図３】末尾テーブルのレコードレイアウトを示す説明図である。
【図４】サーバコンピュータのハードウェア群を示すブロック図である。
【図５】先頭テーブルのレコードレイアウトを示す説明図である。
【図６】セルファイルのレコードレイアウトを示す説明図である。
【図７】新たにファイルＩＤ及び後続セル位置が登録された状態を示す説明図である。
【図８】末尾テーブルのレコードレイアウトを示す説明図である。
【図９】暗号化ファイルのレコードレイアウトを示す説明図である。
【図１０】初期登録処理を示すフローチャートである。
【図１１】暗号化データを追加する際の手順を示すフローチャートである。
【図１２】暗号化データを追加する際の手順を示すフローチャートである。
【図１３】検索処理の手順を示すフローチャートである。
【図１４】検索処理の手順を示すフローチャートである。
【図１５】末尾テーブルのレコードレイアウトを示す説明図である。
【図１６】実施の形態２に係るサーバコンピュータのハードウェア群を示すブロック図である。
【図１７】削除情報ファイルのレコードレイアウトを示す説明図である。
【図１８】削除イメージを示す説明図である。
【図１９】削除情報の登録処理の手順を示すフローチャートである。
【図２０】削除情報の登録処理の手順を示すフローチャートである。
【図２１】削除処理の手順を示すフローチャートである。
【図２２】削除処理の手順を示すフローチャートである。
【図２３】上述した形態のサーバコンピュータの動作を示す機能ブロック図である。
【図２４】上述した形態のコンピュータの動作を示す機能ブロック図である。
【図２５】実施の形態３に係るサーバコンピュータのハードウェア群を示すブロック図である。
【図２６】実施の形態３に係るコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は情報処理システムのハードウェア群を示す説明図である。情報処理システムは情報処理装置１及びコンピュータ２を含む。情報処置装置１及びコンピュータ２は、インターネット、公衆回線網、またはＬＡＮ（Local Area Network）等の通信網Ｎを介して接続されている。情報処理装置１はサーバコンピュータまたはパーソナルコンピュータ等である。以下では情報処理装置１をサーバコンピュータ１と読み替えて説明する。
【００１０】
コンピュータ２は、例えばサーバコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、またはＰＤＡ（Personal Digital Assistant）等である。コンピュータ２はキーワードに対応する暗号化ファイル情報をサーバコンピュータ１へ送信する際に、当該暗号化ファイル情報を記憶するセル位置及び次に異なる暗号化ファイル情報を記憶する後続セル位置をも併せて送信する。
【００１１】
図１の例では、記憶セル位置[５]と共に、暗号化ファイル情報ｆ４及び後続セル位置[８]を送信する。サーバコンピュータ１は、記憶セル位置[５]に暗号化ファイル情報ｆ４及び後続セル位置[８]を記憶する。次の暗号化ファイル情報ｆ５を記憶する際には、後続セル位置[８]に暗号化ファイル情報ｆ５が記憶されることとなる。以下詳細を説明する。
【００１２】
図２はコンピュータ２のハードウェア群を示すブロック図である。コンピュータ２は、サーバコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、または、ＰＤＡ（Personal Digital Assistant）等である。以下ではコンピュータ２をパーソナルコンピュータであるものとして説明する。コンピュータ２は制御部としてのＣＰＵ（Central Processing Unit）２１、ＲＡＭ(Random Access Memory)２２、入力部２３、表示部２４、記憶部２５、通信部２６、及び時計部２８等を含む。ＣＰＵ２１は、バス２７を介してハードウェア各部と接続されている。ＣＰＵ２１は記憶部２５に記憶された制御プログラム２５Ｐに従いハードウェア各部を制御する。ＲＡＭ２２は例えばＳＲＡＭ（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ２２は、記憶部としても機能し、ＣＰＵ２１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１３】
入力部２３はマウスまたはキーボード、マウスまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ２１へ出力する。表示部２４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ２１の指示に従い各種情報を表示する。通信部２６は通信モジュールであり、通信網Ｎを介してサーバコンピュータ１等との間で情報の送受信を行う。時計部２８は日時をＣＰＵ２１へ出力する。記憶部２５はハードディスクまたは大容量メモリであり、制御プログラム２５Ｐ及び末尾テーブル（記憶テーブル）２５１等を格納している。
【００１４】
図３は末尾テーブル２５１のレコードレイアウトを示す説明図である。末尾テーブル２５１はキーワードフィールド及び記憶セル位置フィールド等を含む。キーワードフィールドには、キーワードが記憶されている。記憶セル位置フィールドには、キーワードに対応付けて、次に暗号化ファイルを記憶する記憶セル位置が記憶されている。例えば、キーワード「ねこ」に対応付けて記憶セル位置「５」が記憶されている。
【００１５】
図４はサーバコンピュータ１のハードウェア群を示すブロック図である。サーバコンピュータ１は制御部としてのＣＰＵ１１、ＲＡＭ１２、入力部１３、表示部１４、記憶部１５、通信部１６、及び時計部１８等を含む。ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。ＲＡＭ１２は例えばＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１６】
入力部１３はマウスまたはキーボード、マウスまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。通信部１６は通信モジュールであり、通信網Ｎを介してコンピュータ２等との間で情報の送受信を行う。
【００１７】
時計部１８は日時をＣＰＵ１１へ出力する。記憶部１５はハードディスクまたは大容量メモリであり、制御プログラム１５Ｐ、先頭テーブル１５１、セルファイル１５２、及び暗号化ファイル１５３等を格納している。なお、実施形態では各ファイルを記憶部１５に記憶する例を挙げて説明するが、これに限るものではない。通信網Ｎを介して接続される他のＤＢサーバ（図示せず）に記憶しても良い。この場合、サーバコンピュータ１は必要に応じて各ＤＢへアクセスし、情報の読み書きを行う。
【００１８】
図５は先頭テーブル１５１のレコードレイアウトを示す説明図である。先頭テーブル１５１は、暗号化キーワードフィールド及び先頭セル位置フィールド等を含む。実施形態では、平文が同じである場合、暗号文も等しくなる暗号化を確定的暗号化という。また、平文が同じであっても異なる暗号文が生成される暗号化を確率的暗号化という。暗号化キーワードフィールドには、確定的暗号化されたキーワードが記憶されている。先頭セル位置フィールドには、暗号化キーワードに対応付けて、当該キーワードに係る暗号化ファイル情報を最初に記憶する先頭のセル位置が記憶されている。
【００１９】
例えば、暗号化キーワード「ねこ」に対応する暗号化ファイル情報は、セル位置「４」から順にセルファイル１５２に記憶されることとなる。先頭セル位置も同様に確定的暗号化しても良い。
【００２０】
図６はセルファイル１５２のレコードレイアウトを示す説明図である。セルファイル１５２は予め番号が付与されたセルにより区分けされた記憶領域を有するファイルである。ＣＰＵ１１は、Freeで示される情報が格納されていない未使用の領域に暗号化ファイル情報及び後続セル位置を記憶する。以下ではセルに記憶される暗号化ファイル情報及び後続セル位置を代表して登録情報という。暗号化ファイル情報は、暗号化された暗号化ファイルを特定するための識別情報であり、例えばファイル名が該当する。以下では、暗号化ファイル情報をファイルＩＤと読み替えて説明する。セル位置[４]には、キーワード「ねこ」に対応する暗号化ファイルを特定するためのファイルＩＤｆ１及び後続セル位置[１]が記憶されている。なお、図６において括弧書きで示す（ねこ）は説明を容易にするために記載したものであり、セルファイル１５２内には当該情報は記憶されていない。
【００２１】
キーワード「ねこ」に対応する情報を読み出す場合、ＣＰＵ１１は、先頭テーブル１５１を参照し、先頭セル位置[４]を読み出す。ＣＰＵ１１は、セル位置[４]に対応するファイルＩＤｆ１及び後続セル位置[１]を読み出す。次いでＣＰＵ１１は、読み出した後続セル位置[１]に基づき、セル位置[１]のファイルＩＤｆ２及びセル位置[６]を読み出す。同様に、次いでＣＰＵ１１は、読み出した後続セル位置[６]に基づき、セル位置[６]のファイルＩＤｆ３及びセル位置[５]を読み出す。
【００２２】
図７は新たにファイルＩＤ及び後続セル位置が登録された状態を示す説明図である。ＣＰＵ１１は、図１に示すファイルＩＤｆ４及び後続セル位置[８]と、記憶セル位置[５]が送信されてきた場合、セルファイル１５２のセル位置[５]にファイルＩＤｆ４及び後続セル位置[８]を記憶する。このように順次セルファイル１５２には登録情報たるファイルＩＤ及び後続セル位置が記憶されていない未使用の記憶領域に係る記憶セル位置に新たなファイルＩＤ及び後続セル位置が記憶されることとなる。
【００２３】
図８は末尾テーブル２５１のレコードレイアウトを示す説明図である。コンピュータ２のＣＰＵ２１は、記憶セル位置と、ファイルＩＤ及び後続セル位置をサーバコンピュータ１へ送信した場合、末尾テーブル２５１の記憶セル位置を後続セル位置に変更する処理を行う。図３及び図８の例では、記憶セル位置[５]と、ファイルＩＤｆ４及び後続セル位置[８]がサーバコンピュータ１へ送信されたため、末尾テーブル２５１の記憶セル位置[５]が後続セル位置[８]に変更されることとなる。
【００２４】
図９は暗号化ファイル１５３のレコードレイアウトを示す説明図である。暗号化ファイル１５３は暗号化ファイルＩＤフィールド及び暗号化データフィールド等を含む。暗号化データフィールドには、暗号化ファイルＩＤに対応付けて暗号化されたデータが記憶されている。
【００２５】
以上のハードウェア群において各種ソフトウェア処理を、フローチャートを用いて説明する。図１０は初期登録処理を示すフローチャートである。サーバコンピュータ１のＣＰＵ１１は、セルファイル１５２を参照し、未使用の記憶セル位置を読み出す。ＣＰＵ１１は、通信部１６を介して、読み出した未使用の記憶セル位置をコンピュータ２へ送信する（ステップＳ１０１）。コンピュータ２のＣＰＵ２１は、通信部２６を介して、未使用のセル位置を受信する（ステップＳ１０２）。
【００２６】
ＣＰＵ２１は、受信した未使用のセル位置の中から、一つの先頭セル位置を選択する（ステップＳ１０３）。なお、ＣＰＵ２１は、未使用のセル位置の中からランダムに先頭セル位置を選択する他、入力部２３を通じて、ユーザが選択したセル位置を先頭セル位置としても良い。その他、未使用のセル位置を複数のブロックに分割し、分割されたブロック内の未使用のセル位置をランダムに選択するようにしても良い。
【００２７】
ＣＰＵ２１は、登録を希望するキーワードを入力部２３から受け付ける。ＣＰＵ２１は、キーワードに対応付けて、選択された先頭セル位置を末尾テーブル２５１に記憶する（ステップＳ１０４）。ＣＰＵ２１は、第２鍵によりキーワードを暗号化する（ステップＳ１０５）。なお、実施形態においては一例として第１鍵〜第４鍵を用いて暗号化処理を行う例を示すが、これに限るものではない。異なる数の鍵を用いて暗号化処理を行っても良い。
【００２８】
ＣＰＵ２１は、第３鍵によりキーワードを暗号化する（ステップＳ１０６）。ＣＰＵ２１は、第３鍵により暗号化したキーワードと先頭セル位置との排他的論理和を算出する（ステップＳ１０７）。ＣＰＵ２１は、第２鍵により暗号化したキーワード及び算出した排他的論理和を、サーバコンピュータ１へ送信する（ステップＳ１０８）。サーバコンピュータ１のＣＰＵ１１は、第２鍵により暗号化したキーワード及び先頭セル位置に係る排他的論理和を、先頭テーブル１５１に記憶する（ステップＳ１０９）。
【００２９】
図１１及び図１２は暗号化データを追加する際の手順を示すフローチャートである。サーバコンピュータ１のＣＰＵ１１は、セルファイル１５２を参照し、未使用の記憶セル位置を読み出す。ＣＰＵ１１は、通信部１６を介して、読み出した未使用の記憶セル位置をコンピュータ２へ送信する（ステップＳ１１１）。コンピュータ２のＣＰＵ２１は、通信部２６を介して、未使用のセル位置を受信する（ステップＳ１１２）。ユーザは登録を希望するデータのファイルＩＤを、入力部２３から選択する。ＣＰＵ２１は、選択されたファイルＩＤ及び当該ファイルＩＤに対応する登録対象のデータを読み出す（ステップＳ１１３）。
【００３０】
ＣＰＵ２１は、第１鍵によりファイルＩＤを暗号化し、暗号化ファイルＩＤを生成する（ステップＳ１１４）。ＣＰＵ２１は、第１鍵により読み出したデータを暗号化し、暗号化データを生成する（ステップＳ１１５）。なお、暗号化データの暗号化は確率的暗号化を行うようにすれば良い。ＣＰＵ２１は、キーワードを受け付ける（ステップＳ１１６）。キーワードは入力部２３からユーザが入力するほか、登録対象の文書データに対して形態素解析を行い、抽出されたものを入力すればよい。ＣＰＵ２１は、キーワードに対応する記憶セル位置を末尾テーブル２５１から読み出す（ステップＳ１１７）。
【００３１】
ＣＰＵ２１は、受信した未使用のセル位置の中から、後続セル位置を選択する（ステップＳ１１８）。ＣＰＵ２１は、第４鍵を用いて、暗号化ファイルＩＤ及び後続セル位置を暗号化し、登録情報を生成する（ステップＳ１１９）。ＣＰＵ２１は、例えば、登録情報の生成に当たり、以下の式１を用いて行う。
【００３２】
【数１】
2016133881.tif 000003
式１
【００３３】
ここで、ｃは登録情報であり、fidは暗号化ファイルＩＤ、kは後続セル位置、ｒは乱数を示す。Ｅｎｃk4(w)は、キーワードｗを第４鍵で暗号化することを示す。||は文字または数字の追加を意味する。Hash()は括弧内の値のハッシュ値を算出することを意味する。
【００３４】
ＣＰＵ２１は、登録情報、記憶セル位置、暗号化ファイルＩＤ及び暗号化データをサーバコンピュータ１へ送信する（ステップＳ１２１）。ＣＰＵ２１は、後続セル位置をキーワードに対応付けて末尾テーブル２５１に記憶する（ステップＳ１２２）。なお、ステップＳ１２２の処理は、ステップＳ１１８の処理後の適宜のタイミングで行えば良い。
【００３５】
サーバコンピュータ１のＣＰＵ１１は、登録情報、記憶セル位置、暗号化ファイルＩＤ及び暗号化データを受信する（ステップＳ１２３）。ＣＰＵ１１は、暗号化ファイルＩＤ及び暗号化データを暗号化ファイル１５３に記憶する（ステップＳ１２４）。ＣＰＵ１１は、ステップＳ１２３で受信した記憶セル位置を参照し、セルファイル１５２の記憶セル位置に登録情報を記憶する（ステップＳ１２５）。
【００３６】
図１３及び図１４は検索処理の手順を示すフローチャートである。ユーザは検索に用いるキーワードを入力部２３から入力する。ＣＰＵ２１は、キーワードを受け付ける。コンピュータ２のＣＰＵ２１は、第２鍵を用いて受け付けたキーワードを暗号化し、第２鍵暗号化キーワードを生成する（ステップＳ１３１）。コンピュータ２のＣＰＵ２１は、第３鍵を用いて受け付けたキーワードを暗号化し、第３鍵暗号化キーワードを生成する（ステップＳ１３２）。コンピュータ２のＣＰＵ２１は、第４鍵を用いて受け付けたキーワードを暗号化し、第４鍵暗号化キーワードを生成する（ステップＳ１３３）。
【００３７】
ＣＰＵ２１は、第２鍵暗号化キーワード、第３鍵暗号化キーワード及び第４鍵暗号化キーワードをサーバコンピュータ１へ送信する（ステップＳ１３４）。サーバコンピュータ１のＣＰＵ１１は、第２鍵暗号化キーワード、第３鍵暗号化キーワード及び第４鍵暗号化キーワードを受信する（ステップＳ１３５）。ＣＰＵ１１は、先頭テーブル１５１を参照し、第２鍵暗号化キーワードに対応する排他的論理和を抽出する（ステップＳ１３６）。
【００３８】
ＣＰＵ１１は、排他的論理和を第３鍵暗号化キーワードにより復号し、先頭セル位置を抽出する（ステップＳ１３７）。具体的にはＣＰＵ１１は、下記式２を用いて先頭セル位置を抽出する。
【００３９】
【数２】
2016133881.tif 000004
式２
【００４０】
ここで、Enck3(W)はキーワードを第３鍵で暗号化することを示し、iは先頭セル位置を示す。ＣＰＵ１１は、排他的論理和と、第３鍵暗号化キーワードとの排他的論理和を求めることにより先頭セル位置iを抽出する。ＣＰＵ１１は、セルファイル１５２を参照し、先頭セル位置に記憶された登録情報を抽出する（ステップＳ１３８）。ＣＰＵ２１は、登録情報を第４鍵暗号化キーワードで復号し、暗号化ファイルＩＤ及び後続セル位置を抽出する（ステップＳ１３９）。具体的にはＣＰＵ１１は、下記式３を用いて暗号化ファイルＩＤ及び後続セル位置を抽出する。
【００４１】
【数３】
2016133881.tif 000005
式３
【００４２】
ｃは登録情報を示し、ｒは乱数を示す。Ｅｎｃk4(w)は、キーワードｗを第鍵４で暗号化することを示す。||は文字または数字の追加を意味する。Hash()は括弧内の値のハッシュ値を算出することを意味する。ＣＰＵ１１は、登録情報と、第４鍵暗号化キーワードと乱数のハッシュ値との排他的論理和を求め、暗号化ファイルＩＤ及び後続セル位置を抽出する。
【００４３】
ＣＰＵ１１は、暗号化ファイル１５３を参照し、抽出した暗号化ファイルＩＤに対応する暗号化データを抽出する（ステップＳ１４１）。ＣＰＵ１１は、セルファイル１５２を参照し、抽出した後続セル位置のセルに登録情報が記憶されているか否かを判断する（ステップＳ１４２）。ＣＰＵ１１は、登録情報が記憶されていると判断した場合（ステップＳ１４２でＹＥＳ）、ステップＳ１４３へ移行する。ＣＰＵ１１は、後続セル位置に記憶された登録情報を抽出する（ステップＳ１４３）。ＣＰＵ１１は、その後、処理をステップＳ１３９へ戻す。これにより、後続セル位置に記憶された登録情報が次々に読み出されることになる。
【００４４】
ＣＰＵ１１は、後続セル位置のセルに登録情報が記憶されていないと判断した場合（ステップＳ１４２でＮＯ）、処理をステップＳ１４４へ移行させる。ＣＰＵ１１は、ステップＳ１４１で抽出した暗号化データをコンピュータ２へ送信する（ステップＳ１４４）。コンピュータ２のＣＰＵ２１は、暗号化データを受信する（ステップＳ１４５）。ＣＰＵ２１は、第１鍵により暗号化データを復号する（ステップＳ１４６）。これによりキーワードの推定及び出現頻度の知得を適切に防止することが可能となる。また、先頭テーブル１５１の更新が不要となることから、キーワードの出現頻度を秘匿することが可能となる。なお、キーワードの出現位置をセルに併せて記録し、完全転置インデックスにすることも可能である。また、ユーザは初期登録時に、検索データ配列の要素に乱数を入れることで、ダミーのセルを作っても良い。また、ファイル追加時にダミーの暗号化データとともに、ダミーの検索データ配列のセルを複数作成し、サーバコンピュータ１に登録を依頼しても良い。
【００４５】
実施の形態２
実施の形態２は登録した暗号化データを削除する形態に関する。図１５は末尾テーブル２５１のレコードレイアウトを示す説明図である。末尾テーブル２５１は、キーワードフィールド、先行セル位置フィールド及び記憶セル位置フィールド等を有する。キーワードフィールド及び記憶セル位置フィールドは実施の形態１で述べたとおりであるので、詳細な説明は省略する。先行セル位置フィールドには、キーワードに対応付けて、記憶セル位置に先立つ先行セル位置が記憶されている。ＣＰＵ２１は、新たなデータが登録される際に選択された後続セル位置が、記憶セル位置フィールドに記憶される場合、記憶セル位置フィールドに記憶されている値を先行セル位置フィールドに記憶する。
【００４６】
図１５の例ではキーワード「ねこ」についての先行セル位置が２、記憶セル位置が５であったとする。ここで、新たなデータを登録する際に、後続セル位置１３が選択されたとする。この場合、末尾テーブルの先行セル位置は５に変更され、記憶セル位置は１３に変更される。
【００４７】
図１６は実施の形態２に係るサーバコンピュータ１のハードウェア群を示すブロック図である。新に、記憶部１５に削除情報ファイル１５４が設けられている。図１７は削除情報ファイル１５４のレコードレイアウトを示す説明図である。削除情報ファイル１５４は暗号化ファイルＩＤフィールド及び削除情報フィールドを有する。削除情報フィールドには、先行セル位置、記憶セル位置及び後続セル位置が記憶されている。図１７の例では暗号化ファイルＩＤｆ１に対応付けて、先行セル位置２、記憶セル位置５及び後続セル位置１３が記憶されている。
【００４８】
図１８は削除イメージを示す説明図である。暗号化ファイルＩＤがｆ１の情報を削除する場合、ＣＰＵ１１は、削除情報ファイル１５４から先行セル位置、記憶セル位置及び後続セル位置を読み出す。図１７及び図１８の例では、先行セル位置２、記憶セル位置５及び後続セル位置１３が読み出される。削除前は点線矢印で示すように、セル位置[２]、[５]、[１３]の順に登録情報が読み出される。ＣＰＵ１１は、セルファイル１５２を参照し、削除対象のセル位置[５]の登録情報を削除する。
【００４９】
ＣＰＵ１１は、先行セル位置２の登録情報の値を変更する。具体的には登録情報内の後続セル位置[５]を後続セル位置[１３]に変更する。変更後は、実線矢印で示すようにセル位置[２]、[１３]の順に登録情報が読み出される。
【００５０】
図１９及び図２０は削除情報の登録処理の手順を示すフローチャートである。図１１及び図１２の処理に加えて以下の処理を行う。ＣＰＵ２１は、登録対象のデータの登録が初回であるか否かを判断する（ステップＳ１９１）。ＣＰＵ２１は、初回でないと判断した場合（ステップＳ１９１でＮＯ）、ステップＳ１９２へ移行する。ＣＰＵ２１は、末尾テーブル２５１を参照し、先行セル位置、記憶セル位置を読み出す。ＣＰＵ２１は、読み出した先行セル位置及び記憶セル位置と、ステップＳ１１８で選択された後続セル位置を取得する（ステップＳ１９２）。
【００５１】
ＣＰＵ２１は、初回登録であると判断した場合（ステップＳ１９１でＹＥＳ）、処理をステップＳ１９３へ移行させる。ＣＰＵ２１は、末尾テーブル２５１を参照し記憶セル位置を読み出す。ＣＰＵ２１は、読み出した記憶セル位置と、ステップＳ１１８で選択された後続セル位置を取得する（ステップＳ１９３）。ＣＰＵ２１は、初回登録であり先行セル位置が存在しないことから、先行セル位置を開始情報に設定する（ステップＳ１９４）。開始情報は例えば式４で示される値とすればよい。
【００５２】
【数４】
2016133881.tif 000006
式４
【００５３】
式４に示すように開始情報は開始を示すStartに第２鍵で暗号化した第２鍵暗号化キーワードを追加したものとすれば良い。その後ＣＰＵ２１は、末尾テーブル２５１の先行セル位置の値を、記憶セル位置の値に変更し、記憶セル位置の値を後続セル位置の値に変更する（ステップＳ１９５）。ＣＰＵ２１は、先行セル位置、記憶セル位置、及び後続セル位置と、暗号化ファイルＩＤとの排他的論理和を算出し、削除情報を生成する（ステップＳ１９６）。具体的には、ＣＰＵ２１は、第２鍵によりファイルＩＤを暗号化し、第２暗号化ファイルＩＤを生成する。ＣＰＵ１１は、先行セル位置、記憶セル位置、及び後続セル位置と、第２暗号化ファイルＩＤとの排他的論理和を算出し、削除情報を生成する。
【００５４】
ＣＰＵ２１は、第１鍵でファイルＩＤを暗号化し、第１暗号化ファイルＩＤを生成する（ステップＳ１９７）。ＣＰＵ２１は、第１暗号化ファイルＩＤ及び削除情報をサーバコンピュータ１へ送信する（ステップＳ１９８）。ＣＰＵ１１は、第１暗号化ファイルＩＤ及び削除情報を受信する（ステップＳ１９９）。ＣＰＵ１１は、第１暗号化ファイルＩＤ及び削除情報を削除情報ファイル１５４に記憶する（ステップＳ１２１）。
【００５５】
図２１及び図２２は削除処理の手順を示すフローチャートである。ＣＰＵ２１は、入力部２３から削除対象のファイルＩＤを受け付ける（ステップＳ２１１）。ＣＰＵ２１は、第１鍵でファイルＩＤを暗号化し、第１暗号化ファイルＩＤを生成する（ステップＳ２１２）。ＣＰＵ２１は、第２鍵でファイルＩＤを暗号化し、第２暗号化ファイルＩＤを生成する（ステップＳ２１３）。ＣＰＵ２１は、生成した第１暗号化ファイルＩＤ及び第２暗号化ファイルＩＤをサーバコンピュータ１へ送信する（ステップＳ２１４）。
【００５６】
ＣＰＵ１１は、第１暗号化ファイルＩＤ及び第２暗号化ファイルＩＤを受信する（ステップＳ２１５）。ＣＰＵ１１は、削除情報ファイル１５４を参照し、第１暗号化ファイルＩＤに対応する削除情報を抽出する（ステップＳ２１６）。ＣＰＵ１１は、削除情報と第２暗号化ファイルＩＤとの排他的論理和を求め、先行セル位置、記憶セル位置及び後続セル位置を抽出する（ステップＳ２１７）。ＣＰＵ１１は、セルファイル１５２を参照し、記憶セル位置の登録情報を削除する（ステップＳ２１８）。
【００５７】
ＣＰＵ１１は、ステップＳ２１７で抽出した先行セル位置がステップＳ１９４で設定した開始情報であるか否かを判断する（ステップＳ２１９）。ＣＰＵ１１は、開始情報でないと判断した場合（ステップＳ２１９でＮＯ）、処理をステップＳ２２１へ移行させる。ＣＰＵ１１は、先行セル位置の登録情報中の後続セル位置の値を、ステップＳ２１７で抽出した後続セル位置の値に変更する（ステップＳ２２１）。具体的には、ＣＰＵ１１は、式５による処理を行う。
【００５８】
【数５】
2016133881.tif 000007
式５
【００５９】
ここでｃは先行セル位置の登録情報であり、ｊは記憶セル位置、ｋは後続セル位置を示す。
【００６０】
ＣＰＵ１１は、先行セル位置が開始情報であると判断した場合（ステップＳ２１９でＹＥＳ）、処理をステップＳ２２２へ移行させる。ＣＰＵ１１は、先頭テーブル１５１を参照し、第２暗号化ファイルＩＤに対応する先頭セル位置を読み出す（ステップＳ２２２）。ＣＰＵ１１は、先頭セル位置を、ステップＳ２１７で抽出した後続セル位置の値に変更する（ステップＳ２２３）。具体的にはＣＰＵ１１は、式６による処理を行う。
【００６１】
【数６】
2016133881.tif 000008
式６
【００６２】
ここで、ｃ１は先頭テーブル１５１に記憶される先頭セル位置であり、ｊは記憶セル位置、ｋは後続セル位置を示す。ＣＰＵ１１は、先頭セル位置に記憶されていた先頭セル位置と記憶セル位置及び後続セル位置の排他的論理和を算出し、算出した値を先頭テーブル１５１に記憶する。
【００６３】
ＣＰＵ１１は、ステップＳ２１８で削除したセル位置をコンピュータ２へ送信する（ステップＳ２２４）。ＣＰＵ２１は、削除されたセル位置を受信する（ステップＳ２２５）。これにより、不要となったデータ及び登録情報を適切に削除することが可能となる。
【００６４】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００６５】
実施の形態３
図２３は上述した形態のサーバコンピュータ１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１５Ｐを実行することにより、サーバコンピュータ１は以下のように動作する。取得部１０１は、キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部１５における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得する。記憶処理部１０２は記憶部１５の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び暗号化後続セル位置を記憶する。送信部１０３は、前記記憶部１５の未使用のセル位置を、通信網Ｎを介して接続されるコンピュータ２へ送信する。キーワード取得部１０４は、暗号化キーワードを取得する。抽出部１０５は、削除対象の暗号化ファイル情報を取得した場合に、該暗号化ファイル情報に対応する先行セル位置、記憶セル位置及び後続セル位置を抽出する。削除部１０６は、抽出した記憶セル位置の情報を削除する。変更部１０７は抽出した先行セル位置に記憶された後続セル位置を、抽出した後続セル位置へ変更する。
【００６６】
図２４は上述した形態のコンピュータ２の動作を示す機能ブロック図である。ＣＰＵ２１が制御プログラム２５Ｐを実行することにより、コンピュータ２は以下のように動作する。送信部２０１は、キーワードに対応する暗号化ファイル情報、末尾テーブル２５１を参照して読み出される前記キーワードに対応付けられた記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を、通信網Ｎを介して接続されるサーバコンピュータ１へ送信する。記憶処理部２０２は、送信に対応して、末尾テーブル２５１に送信される前記後続セル位置を記憶する。取得部２０３は、サーバコンピュータ１から未使用のセル位置を取得する。位置送信部２０４は、サーバコンピュータ１へ、暗号化された先行セル位置、記憶セル位置及び後続セル位置を送信する。
【００６７】
図２５は実施の形態３に係るサーバコンピュータ１のハードウェア群を示すブロック図である。サーバコンピュータ１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１０ＡにCD-ROM、DVD（Digital Versatile Disc）ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをサーバコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００６８】
図２５に示すサーバコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したサーバコンピュータ１として機能する。
【００６９】
図２６は実施の形態３に係るコンピュータ２のハードウェア群を示すブロック図である。コンピュータ２を動作させるためのプログラムは、ディスクドライブ等の読み取り部２０ＡにCD-ROM、DVDディスク、メモリーカード、またはUSBメモリ等の可搬型記録媒体２Ａを読み取らせて記憶部２５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ２Ｂをコンピュータ２内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００７０】
図２６に示すコンピュータ２は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体２Ａまたは半導体メモリ２Ｂから読み取り、或いは、通信網Ｎを介して他のコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム２５Ｐとしてインストールされ、ＲＡＭ２２にロードして実行される。これにより、上述したコンピュータ２として機能する。
【００７１】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００７２】
以上の実施の形態１乃至３を含む実施形態に関し、さらに以下の付記を開示する。
【００７３】
（付記１）
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得する取得部と、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び暗号化後続セル位置を記憶する記憶処理部と
を備えることを特徴とする情報処理装置。
【００７４】
（付記２）
前記記憶部の未使用のセル位置を、通信網を介して接続されるコンピュータへ送信する送信部を備え、
前記取得部は、前記送信部により送信された未使用のセル位置の情報を参照して前記コンピュータが選択した暗号化後続セル位置を取得する
付記１に記載の情報処理装置。
【００７５】
（付記３）
暗号化キーワードを取得するキーワード取得部と、
暗号化キーワードに対応付けて、前記記憶部の先頭セル位置を記憶した先頭テーブルと
を備える付記１または２に記載の情報処理装置。
【００７６】
（付記４）
前記記憶処理部は、
前記先頭テーブルを参照し、前記キーワード取得部により取得した暗号化キーワードに対応する先頭セル位置を抽出し、
抽出した先頭セル位置に記憶された暗号化ファイル情報及び暗号化後続セル位置を取得する
付記３に記載の情報処理装置。
【００７７】
（付記５）
前記取得部は、
記憶セル位置及び後続セル位置に加えて、前記記憶セル位置に先立つ先行セル位置を取得する
付記１から付記４のいずれか一つに記載の情報処理装置。
【００７８】
（付記６）
前記記憶部は、暗号化ファイル情報と、前記取得部により取得した先行セル位置、記憶セル位置及び後続セル位置とを対応付けて記憶しており、
削除対象の暗号化ファイル情報を取得した場合に、該暗号化ファイル情報に対応する先行セル位置、記憶セル位置及び後続セル位置を抽出する抽出部と、
抽出した記憶セル位置の情報を削除する削除部と、
抽出した先行セル位置に記憶された後続セル位置を、抽出した後続セル位置へ変更する変更部と
を備える付記５に記載の情報処理装置。
【００７９】
（付記７）
キーワードと、複数の記憶セルを有する記憶部における暗号化ファイル情報を記憶する未使用の記憶セル位置とを対応付けて記憶した記憶テーブルと、
前記キーワードに対応する暗号化ファイル情報、前記記憶テーブルを参照して読み出される前記キーワードに対応付けられた記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を、通信網を介して接続される情報処理装置へ送信する送信部と、
該送信部による送信に対応して、前記記憶テーブルに送信される前記後続セル位置を記憶する記憶処理部と
を備えるコンピュータ。
【００８０】
（付記８）
前記情報処理装置から未使用のセル位置を取得する取得部を備え、
前記送信部は、
未使用のセル位置から選択された後続セル位置を暗号化した暗号化後続セル位置を送信する
付記７に記載のコンピュータ。
【００８１】
（付記９）
前記記憶テーブルは、
前記送信部による送信に対応して、記憶セル位置及び後続セル位置に加えて、前記記憶セル位置に先立つ先行セル位置を記憶する
付記７または８に記載のコンピュータ。
【００８２】
（付記１０）
前記情報処理装置へ、暗号化された先行セル位置、記憶セル位置及び後続セル位置を送信する位置送信部
を備える付記９に記載のコンピュータ。
【００８３】
（付記１１）
情報処理装置に、
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得し、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び前記暗号化後続セル位置を記憶する
処理を実行させるプログラム。
【００８４】
（付記１２）
情報処理装置を用いた情報処理方法において、
キーワードに対応する暗号化ファイル情報、複数の記憶セルを有する記憶部における前記暗号化ファイル情報を記憶する未使用の記憶セル位置及び該記憶セル位置に後続する未使用の暗号化後続セル位置を取得し、
前記記憶部の取得した前記記憶セル位置に、取得した前記暗号化ファイル情報及び前記暗号化後続セル位置を記憶する
情報処理方法。
【００８５】
（付記１３）
前記記憶部は、キーワードに対応する先頭セル位置から順に暗号化ファイル情報及び暗号化後続セル位置を記憶している
付記１２に記載の情報処理方法。
【符号の説明】
【００８６】
１      サーバコンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１０Ａ  読み取り部
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１８    時計部
２      コンピュータ
２Ａ    可搬型記録媒体
２Ｂ    半導体メモリ
２０Ａ  読み取り部
２１    ＣＰＵ
２２    ＲＡＭ
２３    入力部
２４    表示部
２５    記憶部
２５Ｐ  制御プログラム
２６    通信部
２８    時計部
１０１  取得部
１０２  記憶処理部
１０３  送信部
１０４  キーワード取得部
１０５  抽出部
１０６  削除部
１０７  変更部
１５１  先頭テーブル
１５２  セルファイル
１５３  暗号化ファイル
２０１  送信部
２０２  記憶処理部
２０３  取得部
２０４  位置送信部
２５１  末尾テーブル
Ｎ      通信網
【図１】
2016133881.tif 000009
【図２】
2016133881.tif 000010
【図３】
2016133881.tif 000011
【図４】
2016133881.tif 000012
【図５】
2016133881.tif 000013
【図６】
2016133881.tif 000014
【図７】
2016133881.tif 000015
【図８】
2016133881.tif 000016
【図９】
2016133881.tif 000017
【図１０】
2016133881.tif 000018
【図１１】
2016133881.tif 000019
【図１２】
2016133881.tif 000020
【図１３】
2016133881.tif 000021
【図１４】
2016133881.tif 000022
【図１５】
2016133881.tif 000023
【図１６】
2016133881.tif 000024
【図１７】
2016133881.tif 000025
【図１８】
2016133881.tif 000026
【図１９】
2016133881.tif 000027
【図２０】
2016133881.tif 000028
【図２１】
2016133881.tif 000029
【図２２】
2016133881.tif 000030
【図２３】
2016133881.tif 000031
【図２４】
2016133881.tif 000032
【図２５】
2016133881.tif 000033
【図２６】
2016133881.tif 000034