(57)【特許請求の範囲】
【請求項１】
センタ装置に文書が暗号化され登録される記憶装置を備え、前記センタ装置とはネットワークを介して接続される端末装置が、前記記憶装置に登録された文書を暗号化したまま検索することのできる暗号化文書検索システムにおける暗号化文書検索方法であって、
前記端末装置が、
文書のインデックスとして登録される単語を取り込んで暗号化のための演算を実行し、前記演算された結果得られるビット列を値ｎに変換し、前記インデックスの値のｎ番目のビットをＯＮに設定することにより当該文書のブルームフィルタ（ＢＦ）値を得て、当該文書のインデックスとして前記センタ装置の記憶装置に登録するインデックス生成ステップを有し、
前記センタ装置が、
前記記憶装置を参照してインデックスの値であるＢＦ値が類似するインデックス同士をグルーピングし、前記グルーピングの結果得られるグループのインデックス同士を更にグルーピングし、文書のＢＦ値を階層化したインデックスツリーを生成するインデックスツリー生成ステップと、
前記端末装置から暗号化された検索キーワードを受信し、当該検索キーワードのインデックスとして当該検索キーワードのＢＦ値を計算し、当該インデックスと前記インデックスツリーとの比較演算を行って前記検索キーワードの有無を判定し、前記インデックスに紐付けられた文書を返信する検索処理ステップと、
前記検索処理ステップによる検索履歴を用いて前記インデックスツリー生成ステップにより生成されたインデックスツリーを再構成するインデックス更新ステップと
を有し、
前記検索処理ステップは、
（１）前記暗号化された検索キーワードを受信して当該検索キーワードのＢＦ値の計算を実行し、（２）最上位階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを判定し、（３）含む場合、順次、次階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを更に判定し、（４）最下位階層に至った場合、最下位階層のＢＦ値が検索キーワードのＢＦ値を含むときは、該当するグループの文書についてインデックス検索を行い、インデックス検索によりヒットした検索結果を回答し、（５）インデックス検索にてヒットしなかったときは、全文検索を行い、全文検索によりヒットした検索結果を回答し、
前記インデックス更新ステップは、
（１）前記全文検索の結果を前記検索履歴として参照して、前記検索処理ステップの前記全文検索によりヒットした単語のＢＦ値を計算し、（２）当該計算されたＢＦ値と閾値として設定される任意のハミング重みとを比較し、（３）当該閾値内にあるとき、当該計算されたＢＦ値を、前記検索処理ステップの前記全文検索によりヒットした全文書のＢＦ値のそれぞれに対してＯＲ演算することにより足し込んで得られる当該全文書のＢＦ値を用いて、前記インデックスツリーを再構成する
ことを特徴とする暗号化文書検索方法。
【請求項２】
前記インデックス生成ステップは、
（１）ユーザによって入力される単語を所定の共通鍵暗号を用いて暗号化し、（２）前記暗号化された単語にハッシュ関数演算を実行して任意のｋ種類のハッシュ値を得、（３）前記ｋ種類のハッシュ値を値Ｍで除算して剰余Ｘを求め、当該Ｍビットのビット列の前記Ｘ番目の位置のビットをＯＮし、（４）文書を構成する全ての単語について前記（１）〜（３）の処理を実行し、その最終処理結果を前記文書のＢＦ値として前記記憶装置にインデックス登録することを特徴とする請求項１に記載の暗号化文書検索方法。
【請求項３】
前記インデックスツリー生成ステップは、
（１）前記記憶装置に登録されたＢＦ値同士のハミング距離を計算して任意の閾値以内にあるＢＦ値をグルーピングし、（２）前記グルーピングの結果得られるグループのＢＦ値同士を（１）に従い更にグルーピングしてインデックスツリーを生成し、（３）前記グルーピングができなくなった階層における全てのＢＦ値をＯＲ演算して最上位階層のＢＦ値を生成することを特徴とする請求項２に記載の暗号化文書検索方法。
【請求項４】
文書が暗号化され登録される記憶装置を備え、前記記憶装置に登録された文書を暗号化したまま検索する暗号化文書検索システムであって、
前記文書のインデックスとして登録される単語を受信して暗号化のための演算を実行し、前記演算された結果得られるビット列を値ｎに変換し、前記インデックスの値のｎ番目のビットをＯＮに設定することにより当該文書のブルームフィルタ（ＢＦ）値を得て、当該文書のインデックスとして前記センタ装置の記憶装置に登録するインデックス生成部と、
前記記憶装置を参照してインデックス値の値であるＢＦ値が類似するインデックス同士をグルーピングし、前記グルーピングの結果得られるグループのインデックス同士を更にグルーピングし、文書のＢＦ値を階層化したインデックスツリーを生成するインデックスツリー生成部と、
暗号化された検索キーワードを受信し、当該検索キーワードのインデックスとして当該検索キーワードのＢＦ値を計算し、当該インデックスと前記インデックスツリーとの比較演算を行って前記検索キーワードの有無を判定し、前記インデックスに紐付けられた文書を返信する検索処理部と、
前記検索処理部による検索履歴を用いて前記インデックスツリー生成部により生成されたインデックスツリーを再構成するインデックス更新部と
を備え、
前記検索処理部は、
（１）前記暗号化された検索キーワードを受信して当該検索キーワードのＢＦ値の計算を実行し、（２）最上位階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを判定し、（３）含む場合、順次、次階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを更に判定し、（４）最下位階層に至った場合、最下位階層のＢＦ値が検索キーワードのＢＦ値を含むときは、該当するグループの文書についてインデックス検索を行い、インデックス検索によりヒットした検索結果を回答し、（５）インデックス検索にてヒットしなかったときは、全文検索を行い、全文検索によりヒットした検索結果を回答し、
前記インデックス更新部は、
（１）前記全文検索の結果を前記検索履歴として参照して、前記検索処理部の前記全文検索によりヒットした単語のＢＦ値を計算し、（２）当該計算されたＢＦ値と閾値として設定される任意のハミング重みとを比較し、（３）当該閾値内にあるとき、当該計算されたＢＦ値を、前記検索処理部の前記全文検索によりヒットした全文書のＢＦ値のそれぞれに対してＯＲ演算することにより足し込んで得られる当該全文書のＢＦ値を用いて、前記インデックスツリーを再構成する
ことを特徴とする暗号化文書検索システム。
【請求項５】
前記インデックス生成部は、
（１）ユーザによって入力される単語を所定の共通鍵暗号を用いて暗号化し、（２）前記暗号化された単語にハッシュ関数演算を実行して任意のｋ種類のハッシュ値を得、（３）前記ｋ種類のハッシュ値を値Ｍで除算して剰余Ｘを求め、当該Ｍビットのビット列の前記Ｘ番目の位置のビットをＯＮし、（４）文書を構成する全ての単語について前記（１）〜（３）の処理を実行し、その最終処理結果を前記文書のＢＦ値として前記記憶装置にインデックス登録することを特徴とする請求項４に記載の暗号化文書検索システム。
【請求項６】
前記インデックスツリー生成部は、
（１）前記記憶装置に登録されたＢＦ値同士のハミング距離を計算して任意の閾値以内にあるＢＦ値をグルーピングし、（２）前記グルーピングの結果得られるグループのＢＦ値同士を（１）に従い更にグルーピングしてインデックスツリーを生成し、（３）前記グルーピングができなくなった階層における全てのＢＦ値をＯＲ演算して最上位階層のＢＦ値を生成することを特徴とする請求項５に記載の暗号化文書検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化文書検索方法および暗号化文書検索システムに関する。
【背景技術】
【０００２】
近年、様々なデータを電子データに変換し、オンラインで保管および管理することによって作業を効率化する試みが多くの企業でなされている。それに伴い、「データセンタ」事業と称される、データベースに必要な資材および環境を提供するサービスも出現している。
このような形態において、データベース環境を管理する管理者と実際にデータベースを利用する利用者とが異なることから、管理者によって利用者の機密情報が盗聴されることを防ぐために、利用者が保存するデータを暗号化することが考えられている。
【０００３】
ところが、データを暗号化した状態ではそのデータの内容が判別不能であるため、必要なデータを探し出すことが困難であり、このため、従来は、データを復号化して検索していた（例えば特許文献１参照）。また、暗号化データベースに蓄積されたデータを暗号化したまま検索可能とするためのインデックスの作成を行い、当該インデックスを参照することによって暗号化データベースの検索処理の高速化をはかった文書検索システムも出現している（例えば、特許文献２参照）。
【特許文献１】特開２００１−２２２５５５号公報
【特許文献２】特開２００５−１３４９９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記した特許文献２に開示された技術によれば、文書が暗号化され蓄積された暗号化データベースを暗号化したまま検索できるため、検索処理の高速化ははかれるが、このとき、インデックス値が格納された別テーブルを参照するため、このインデックステーブルを検索するにあたり情報漏洩の恐れがある。また、インデックス値を更新管理する上でのシステム上の負荷に関しても課題として残っていた。
【０００５】
本発明は上記事情に基づいてなされたものであり、暗号化されたデータのインデックスを安全な方法で生成することにより機密性を高めながら検索処理の一層の高速化をはかることのできる暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システムを提供することを目的とする。
また、ユーザの検索履歴を使用してインデックスを動的に自動更新することで更新管理に対する負荷の削減をはかることのできる暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システムを提供することも目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために本発明の一態様は、センタ装置に文書が暗号化され登録される記憶装置を備え、前記センタ装置とはネットワークを介して接続される端末装置が、前記記憶装置に登録された文書を暗号化したまま検索することのできる暗号化文書検索システムにおける暗号化文書検索方法であって、前記端末装置が、文書のインデックスとして登録される単語を取り込んで暗号化のための演算を実行し、前記演算された結果得られるビット列を値ｎに変換し、前記インデックスの値のｎ番目のビットをＯＮに設定することにより当該文書のブルームフィルタ（ＢＦ）値を得て、当該文書のインデックスとして前記センタ装置の記憶装置に登録するインデックス生成ステップを有し、前記センタ装置が、前記記憶装置を参照してインデックスの値であるＢＦ値が類似するインデックス同士をグルーピングし、前記グルーピングの結果得られるグループのインデックス同士を更にグルーピングし、文書のＢＦ値を階層化したインデックスツリーを生成するインデックスツリー生成ステップと、前記端末装置から暗号化された検索キーワードを受信し、当該検索キーワードのインデックスとして当該検索キーワードのＢＦ値を計算し、当該インデックスと前記インデックスツリーとの比較演算を行って前記検索キーワードの有無を判定し、前記インデックスに紐付けられた文書を返信する検索処理ステップと、前記検索処理ステップによる検索履歴を用いて前記インデックスツリー生成ステップにより生成されたインデックスツリーを再構成するインデックス更新ステップとを有し、前記検索処理ステップは、（１）前記暗号化された検索キーワードを受信して当該検索キーワードのＢＦ値の計算を実行し、（２）最上位階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを判定し、（３）含む場合、順次、次階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを更に判定し、（４）最下位階層に至った場合、最下位階層のＢＦ値が検索キーワードのＢＦ値を含むときは、該当するグループの文書についてインデックス検索を行い、インデックス検索によりヒットした検索結果を回答し、（５）インデックス検索にてヒットしなかったときは、全文検索を行い、全文検索によりヒットした検索結果を回答し、前記インデックス更新ステップは、（１）前記全文検索の結果を前記検索履歴として参照して、前記検索処理ステップの前記全文検索によりヒットした単語のＢＦ値を計算し、（２）当該計算されたＢＦ値と閾値として設定される任意のハミング重みとを比較し、（３）当該閾値内にあるとき、当該計算されたＢＦ値を、前記検索処理ステップの前記全文検索によりヒットした全文書のＢＦ値のそれぞれに対してＯＲ演算することにより足し込んで得られる当該全文書のＢＦ値を用いて、前記インデックスツリーを再構成することを特徴とする。
【０００７】
また、上記発明において、前記インデックス生成ステップは、（１）ユーザによって入力される単語を所定の共通鍵暗号を用いて暗号化し、（２）前記暗号化された単語にハッシュ関数演算を実行して任意のｋ種類のハッシュ値を得、（３）前記ｋ種類のハッシュ値を値Ｍで除算して剰余Ｘを求め、当該Ｍビットのビット列の前記Ｘ番目の位置のビットをＯＮし、（４）文書を構成する全ての単語について前記（１）〜（３）の処理を実行し、その最終処理結果を前記文書のＢＦ値として前記記憶装置にインデックス登録することを特徴とする。
【０００８】
また、上記発明において、前記インデックスツリー生成ステップは、（１）前記記憶装置に登録されたＢＦ値同士のハミング距離を計算して任意の閾値以内にあるＢＦ値をグルーピングし、（２）前記グルーピングの結果得られるグループのＢＦ値同士を（１）に従い更にグルーピングしてインデックスツリーを生成し、（３）前記グルーピングができなくなった階層における全てのＢＦ値をＯＲ演算して最上位階層のＢＦ値を生成することを特徴とする。
【０００９】
また、上述した課題を解決するために本発明の他の態様は、文書が暗号化され登録される記憶装置を備え、前記記憶装置に登録された文書を暗号化したまま検索する暗号化文書検索システムであって、前記文書のインデックスとして登録される単語を受信して暗号化のための演算を実行し、前記演算された結果得られるビット列を値ｎに変換し、前記インデックスの値のｎ番目のビットをＯＮに設定することにより当該文書のブルームフィルタ（ＢＦ）値を得て、当該文書のインデックスとして前記センタ装置の記憶装置に登録するインデックス生成部と、前記記憶装置を参照してインデックス値の値であるＢＦ値が類似するインデックス同士をグルーピングし、前記グルーピングの結果得られるグループのインデックス同士を更にグルーピングし、文書のＢＦ値を階層化したインデックスツリーを生成するインデックスツリー生成部と、暗号化された検索キーワードを受信し、当該検索キーワードのインデックスとして当該検索キーワードのＢＦ値を計算し、当該インデックスと前記インデックスツリーとの比較演算を行って前記検索キーワードの有無を判定し、前記インデックスに紐付けられた文書を返信する検索処理部と、前記検索処理部による検索履歴を用いて前記インデックスツリー生成部により生成されたインデックスツリーを再構成するインデックス更新部とを備え、前記検索処理部は、（１）前記暗号化された検索キーワードを受信して当該検索キーワードのＢＦ値の計算を実行し、（２）最上位階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを判定し、（３）含む場合、順次、次階層のＢＦ値が検索キーワードのＢＦ値を含むか否かを更に判定し、（４）最下位階層に至った場合、最下位階層のＢＦ値が検索キーワードのＢＦ値を含むときは、該当するグループの文書についてインデックス検索を行い、インデックス検索によりヒットした検索結果を回答し、（５）インデックス検索にてヒットしなかったときは、全文検索を行い、全文検索によりヒットした検索結果を回答し、前記インデックス更新部は、（１）前記全文検索の結果を前記検索履歴として参照して、前記検索処理部の前記全文検索によりヒットした単語のＢＦ値を計算し、（２）当該計算されたＢＦ値と閾値として設定される任意のハミング重みとを比較し、（３）当該閾値内にあるとき、当該計算されたＢＦ値を、前記検索処理部の前記全文検索によりヒットした全文書のＢＦ値のそれぞれに対してＯＲ演算することにより足し込んで得られる当該全文書のＢＦ値を用いて、前記インデックスツリーを再構成することを特徴とする。
【００１０】
また、上記発明において、前記インデックス生成部は、（１）ユーザによって入力される単語を所定の共通鍵暗号を用いて暗号化し、（２）前記暗号化された単語にハッシュ関数演算を実行して任意のｋ種類のハッシュ値を得、（３）前記ｋ種類のハッシュ値を値Ｍで除算して剰余Ｘを求め、当該Ｍビットのビット列の前記Ｘ番目の位置のビットをＯＮし、（４）文書を構成する全ての単語について前記（１）〜（３）の処理を実行し、その最終処理結果を前記文書のＢＦ値として前記記憶装置にインデックス登録することを特徴とする。
【００１１】
また、上記発明において、前記インデックスツリー生成部は、（１）前記記憶装置に登録されたＢＦ値同士のハミング距離を計算して任意の閾値以内にあるＢＦ値をグルーピングし、（２）前記グルーピングの結果得られるグループのＢＦ値同士を（１）に従い更にグルーピングしてインデックスツリーを生成し、（３）前記グルーピングができなくなった階層における全てのＢＦ値をＯＲ演算して最上位階層のＢＦ値を生成することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ユーザにインデックス値として登録する単語を入力してもらってその単語を暗号化し、また、そのビット列をある長さにするために一方向性関数演算を施してある値に変換し、その各値に対応するビット位置をＯＮしてインデックス値として登録することで、暗号化された文書のインデックスを安全な方法で生成することができ、このことにより、機密性を高めることができる。
また、センタ装置は、登録されたインデックスが類似するもの同士をグルーピングすることにより階層化してインデックスツリーを生成し、暗号化された検索キーワードを受信したときにそのインデックスとインデックスツリーとの比較演算を行い検索キーワードの有無を判定することにより検索処理の一層の高速化をはかることができる。更に、センタ装置がその検索結果を利用して、インデックスを自動更新することにより、ユーザの検索履歴を使用してインデックスを動的に更新することができ、更新管理に対する負荷の削減をはかることができる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の実施形態に係る暗号化文書検索システムのシテム構成の一例を示す図である。ここでは、ある会社が社内のある重要文書のデータベース管理をデータセンタに委託する場合の適用システムを想定している。
端末装置としてのユーザ端末１２には、暗号化文書作成のためのプログラム（暗号化モジュール１２４）があらかじめインストールされており、ＬＡＮ１３（Local Area Network）経由で社内の管理サーバ１２に接続されている。管理サーバ１２は、ネットワークとしてのインターネット３０を経由して、センタ装置としてのデータセンタ２０（記憶装置としての暗号化ＤＢ２２）に接続されている。
【００１４】
上記したシステム構成において、ユーザがユーザ端末１２を操作し、ユーザＩ／Ｆ（インタフェース）１２２を用いて文書を作成してデータセンタ２０に登録する場合、ユーザ端末１２は、暗号化モジュール１２４を起動してその文書の暗号化を行い、通信モジュール１２３、インターネット３０を経由してデータセンタ２０をアクセスする。そして、データセンタ２０の暗号化ＤＢ登録検索モジュール２１を介して暗号化ＤＢ２２にアップロードする。
【００１５】
一方、ユーザがキーワード検索を行う場合、ユーザ端末１２を操作して検索キーワードの入力を行い、ユーザ端末１２は、その検索キーワードを暗号化してインターネット３０経由でデータセンタ２０へ送信する。
データセンタ２０では、ＤＢ登録検索モジュール２１を起動し、このＤＢ登録検索モジュール２１は、暗号化ＤＢ２２を検索して暗号化された状態でマッチング処理を行い、該当する文書を抽出して返信する。検索要求を発行したユーザ端末１２は、返信されてきた文書を復号化モジュール１２５により復号化し、ユーザＩ／Ｆ１２２を介してユーザに提供する。
【００１６】
以下に詳細説明を行う。ここでは、文書は単語単位で暗号化されデータセンタ２０の暗号化ＤＢ２２に登録されるものとする。
まず、ユーザがユーザ端末１２を操作することによりインデックスとして登録すべき単語を入力する。ユーザ端末１２はその単語を暗号化し、さらに、そのビット列をある長さにするためハッシュ関数などの一方向性関数を通してある値ｎに変換し、ｋビットのインデックス値のｎ番目のビットをＯＮする。同様の処理を、データセンタ２０の暗号化ＤＢ２２に登録する全ての単語に施し、各数値に対応するビット位置をＯＮする。これを文書のインデックス値としてデータセンタ２０の暗号化ＤＢ２２に登録する。データセンタ２０では、更に、インデックス値が類似するもの同士をグルーピングすることにより階層化する。また、検索結果を利用して、インデックスを自動更新する。
【００１７】
また、データセンタ２０は、検索キーワードを受信し、図２に示すフローチャートに従いその検索処理を実行する。
すなわち、データセンタ２０は、検索キーワードを受信してキャッシュチェックを行い直前の検索結果を参照する（Ｓ２１、Ｓ２２）。その結果、ヒット（ＨＩＴ）した場合はキャッシュから文書を取得してユーザに結果を通知し（Ｓ２７）、ヒットしなかった場合に暗号化ＤＢ２２のインデックス検索が行われる（Ｓ２３）。インデックス検索によりヒットした場合は対応する文書を取得してユーザに結果を通知し（Ｓ２７）、ヒットしなかった場合は暗号化ＤＢ２２を参照して全文検索を行う（Ｓ２４）。そして、対応する文書を取得してユーザに結果を通知する。全文検索の場合、ヒットの有無に係らず結果がユーザに通知される（Ｓ２５、Ｓ２７）。なお、全文検索の後、インデックス検索により検索された文書内を全文検索してインデックスの自動更新が行われる（Ｓ２６）。インデックスの自動更新については後に詳細に述べる。
【００１８】
図３は、本発明の実施形態に係る暗号化文書検索システムの構成を機能展開して示したブロック図である。
本発明実施形態に係る暗号化文書検索システムは、インデックス生成部２１１と、インデックスツリー生成部２１２と、インデックス記憶部２１３と、暗号化文書２１４と、検索要求受信部２１５と、検索処理部２１６と、インデックス更新部２１７で構成される。
【００１９】
インデックス生成部２１１は、文書のインデックスとして登録される単語を受信して暗号化のための演算を実行し、演算された結果得られるビット列を所定長の値ｎに変換して値のｎ番目のビットをＯＮに設定し、インデックスとしてインデックス記憶部２１３に登録する機能を持つ。
また、インデックスツリー生成部２１２は、インデックス記憶部２１３を参照してインデックス値が類似するインデックス同士をグルーピングし、当該グルーピングの結果得られるグループのインデックス同士を更にグルーピングしてインデックスツリーを生成する機能を持つ。なお、各インデックスには配下の文書のＩＤが紐付けられており、暗号化文書２１４に登録される文書とは対応付けて管理される。
【００２０】
一方、検索要求受信部２１５は、暗号化された検索キーワードを受信して検索処理部２１６に引き渡す機能を持つ。検索処理部２１６は、インデックス生成部２１１と同じ手順に従ってインデックスを生成し、当該インデックスとインデックスツリー生成部２１２によって生成されるインデックスツリーとの比較演算を行って検索キーワードの有無を判定し、インデックスに紐付けられた文書を暗号化文書２１４から抽出して返信する機能を持つ。
インデックス更新部２１７は、検索処理部２１６による検索履歴を用いてインデックスツリー生成部２１２により生成されたインデックスツリーの再構成（インデックスの動的更新）する機能を持つ。詳細は後述する。
【００２１】
なお、図１に示す暗号化ＤＢ２２は、図２に示すインデックス記憶部２１３と、暗号化文書部２１４から構成されるものとする。
【００２２】
以下、本発明の実施形態に係る暗号化文書検索システムの動作について、図４以降に示すフローチャートを参照しながら詳細に説明する。
まず、インデックス生成部２１１によるインデックス生成処理について、図４に示すフローチャートを参照しながら説明する。ここではインデックス作成に、局所的分散発見手法の一つとして知られているBloom Filter（以下、ＢＦといいう）を利用するものとする。インデックス生成部２１１は、まず、ユーザによって入力された単語、あるいは検索キーワードを取込み（Ｓ４１）、所定の共通鍵暗号で暗号化した後、K種類のハッシュ関数ＳＨＡ−１（Secure Hash Algorithm-1：K通りの別の鍵を入力するＭＡＣ：Message Authentication Code）に入力し、K種類の１６０ビットのハッシュ値を得る（Ｓ４２）。
【００２３】
次に、インデックス生成部２１１は、そのハッシュ値について、ｍｏｄ Ｍ演算を行い、剰余の値Ｘを求める（Ｓ４３）。そして、Ｍビットにおけるビット列のＸの位置（Ｋ種類計算されているはず）にビットをＯＮする（Ｓ４４）。
これを該当文書における全てのキーワードに対して実施し、都度ビットをＯＮする（Ｓ４５）。但し、既にビットがＯＮしている位置はそのままにしておく。そして、全ての単語について同様の処理を行い、最終結果を当該文書のＢＦとしてデータセンタ２０のインデックス記憶部２１３に登録する（Ｓ４６）。なお、Ｋ，Ｍについては設定により変更可能とする。
【００２４】
次に、データセンタ２０では、インデックスツリー生成部２１２を起動し、インデックス記憶部２１３に登録された文書のＢＦに対し、図５にフローチャートで示す処理を実行してＢＦの階層化処理を行う。
すなわち、インデックスツリー生成部２１２は、登録されているＢＦ同士の類似度を判定するためにハミング距離を計算し（Ｓ５１）、閾値Ｔ以内のＢＦをグルーピングする（Ｓ５２）。グループのＢＦは、グループメンバーのＢＦを全てＯＲ演算することにより求めることができる。このとき、ビットがＯＮしていなければＯＮする。続いて、同様の手順でグループのＢＦを更にグルーピングする（Ｓ５３）。そして、グルーピングできなくなった段階で、全てのＢＦをＯＲ演算し、ルートＢＦを生成する（Ｓ５４）。ここでのルートＢＦは最上位階層とする。なお、閾値Ｔは任意に設定可能とする。また、各ＢＦには、配下の文書のＩＤが紐付いていることは上記したとおりである。
【００２５】
キーワード検索は、データセンタ２０の検索処理部２１６が、図６のフローチャートに示す手順を実行することにより実現される。
まず、ユーザ端末１２がユーザによって入力される検索キーワードを、所定の共通鍵暗号で暗号化する。そして、暗号化した検索キーワードをデータセンタ２０に送信する。データセンタ２０では、暗号化された検索キーワードを検索要求受信部２１５が受信し、検索処理部２１６に引き渡す（Ｓ６１）。このとき、検索処理部２１６は、インデックス生成部２１１で生成されるインデックスと同じ手順でそのＢＦ値の計算を実行する（Ｓ６２）。
【００２６】
続いて、最上位階層のルートＢＦ値を参照し（Ｓ６３）、送信されてきたＢＦ値とＯＲ演算し、更にその値にルートＢＦ値を比較演算（ＸＯＲ）して（Ｓ６４）、オール“０”になるか否かを判定する（Ｓ６５）。ここでは、ルートＢＦ値に検索キーワードに相当するＢＦ値が含まれるか否かを判定している。
ここで、オール“０”であれば、Ｓ６６の処理に進み、オール“０”でなければ、検索キーワード無しとしてユーザに返信する（Ｓ６９）。
【００２７】
Ｓ６６の処理において、検索処理部２１６は、次階層のルートＢＦ値を参照し、同様の手順で検索キーワードに相当するＢＦ値が含まれるか否かを判定する（Ｓ６４、Ｓ６５）。ここで、オール“０”であれば、更に次階層のルートＢＦ値を参照して階層展開が出来なくなるまでＳ６４〜Ｓ６６に従う処理を繰り返す。そして、最下位階層までいって（Ｓ６７“Ｙｅｓ”）、そのルートＢＦ値に検索キーワードに相当するＢＦ値が含まれるか否かを判定し（Ｓ６８）、オール“０”になった場合、該当するグループの文書全てについてインデックス検索を行う（Ｓ６９）。そして、インデックス検索の結果、ヒットの有無を判定し（Ｓ７０）、ヒットしなければ全文検索を行い（Ｓ７１）、検索回答を行う（Ｓ７２）。なお、検索回答はヒットの有無にかかわらず行われる。
なお、オール“０”となるグループが１つでもあれば、ユーザに返信せずに処理を継続する。図７に、上記した階層展開の模式図が示されている。図７中、Ｄｏｃ．はそれぞれのＢＦに紐付けられた文書、×印は、ルートＢＦ値に検索キーワードに相当するＢＦ値が含まれていないと判定されたケースを示している。
【００２８】
一方、インデックス更新処理は、インデックス更新部２１７が、図８に示すフローチャートに示す手順を実行することによって実現される。インデックス更新部２１７は、上記した全文検索によって検索された結果を利用することによりインデックスを更新（インデックスツリーの再構成）することができる。
具体的には、全文検索された単語ＷについてＢＦ値を計算し（Ｓ８１、Ｓ８２）、ここで計算されたＢＦ値を、上記の検索でヒットした全文書のＢＦ値それぞれに対してＯＲ演算することにより足し込み、ＢＦの階層化構造であるインデックスツリーを再構成する（Ｓ８４）。
【００２９】
なお、インデックス更新部２１７は、外部からある閾値Ｕ（ハミング重み）が設定されることで、その閾値Ｕと、各ＢＦ値とを比較することで、インデックス更新処理に制限を設けている（Ｓ８３）。すなわち、インデックス更新部２１７は、各ＢＦのハミング重みがＵになるまでインデックスツリーの再構成を許可し、Ｕを超えた場合は、再構成を許可しないこととしている。また、上記したインデックス更新処理は、別プロセスとして、バッチ処理により実行される。
【００３０】
以上説明のように本発明は、ユーザにインデックス値として登録する単語を入力してもらってその単語を暗号化し、また、そのビット列をある長さにするために一方向性関数演算を施してある値に変換し、その各値に対応するビット位置をＯＮしてインデックス値として登録するものであり、このことにより、暗号化された文書のインデックスを安全な方法で生成することができ、機密性を高めることができる。
【００３１】
また、データセンタ２０（センタ装置）は、登録されたインデックスが類似するもの同士をグルーピングすることにより階層化してインデックスツリーを生成し、暗号化された検索キーワードを受信したときにそのインデックスとインデックスツリーとの比較演算を行い検索キーワードの有無を判定するものであり、ことにより検索処理の一層の高速化をはかることができる。更に、データセンタ２０が、その検索結果を利用して、インデックスを自動更新することにより、ユーザの検索履歴を使用してインデックスを動的に更新することができ、更新管理に対する負荷の削減をはかることができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態に係る暗号化文書検索システムのシステム構成の一例を示す図である。
【図２】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用したフローチャートである。
【図３】本発明の実施形態に係る暗号化文書検索システムの構成を機能展開して示したブロック図である。
【図４】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用したフローチャートである。
【図５】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用したフローチャートである。
【図６】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用したフローチャートである。
【図７】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用した模式図である。
【図８】本発明の実施形態に係る暗号化文書検索システムの動作を説明するために引用したフローチャートである。
【符号の説明】
【００３３】
１２…ユーザ端末、２０…データセンタ、３０…インターネット、２１…ＤＢ登録検索モジュール、２１１…インデックス生成部、２１２…インデックスツリー生成部、２１３…インデックス記憶部、２１４…暗号化文書、２１５…検索要求受信部と、２１６…検索処理部、２１７…インデックス更新部
【図１】
0004722620.tif 000002
【図２】
0004722620.tif 000003
【図３】
0004722620.tif 000004
【図４】
0004722620.tif 000005
【図５】
0004722620.tif 000006
【図６】
0004722620.tif 000007
【図７】
0004722620.tif 000008
【図８】
0004722620.tif 000009