(57)【特許請求の範囲】
【請求項１】
検索システムであって、
文書及び前記文書の索引が検索可能な形式で暗号化されて格納される記憶装置と、
前記記憶装置に格納されたデータを検索する検索サーバと、
索引鍵を管理する鍵サーバと、を備え、
前記記憶装置は、
前記索引鍵で暗号化された暗号化索引と、前記索引鍵を利用者の鍵で暗号化した暗号化索引鍵とを関連付けて格納する索引データベースと、
文書鍵で暗号化された暗号化文書と、前記文書鍵を利用者の鍵で暗号化した暗号化文書鍵とを関連付けて格納する文書データベースとを格納し、
前記検索サーバは、
要求された検索クエリから検索用の見出しを抽出し、
当該検索クエリを要求した利用者の鍵を用いて、暗号化された索引鍵を復号化し、
前記復号化された索引鍵を用いて前記抽出した見出しを暗号化し、
端末から検索クエリとトークンを受信すると、受信した検索クエリから検索条件を抽出し、辞書を参照しながら前記検索条件の言語解析を行い、前記検索条件に含まれる見出しを取得し、
利用者が所属するグループの索引に関連付けられている暗号化された索引鍵を索引データベースから取得し、
暗号化された索引鍵に対応するトークンを鍵サーバに送信することによって、復号化された索引鍵を取得し、
前記索引鍵を非一時的記憶装置に格納せずに、各グループの索引鍵で暗号化された見出しを用いて、索引を暗号化した状態で前記索引データベースを検索し、
索引データベースのグループに対応する索引を検索して、ヒットした見出しに対応する文書ＩＤ、文書中の見出しの位置、見出し前後の文、及び単語を取得し、
検索クエリの演算子を考慮して検索結果を集計し、
前記集計された検索結果を前記端末に送信することを特徴とする検索システム。
【請求項２】
請求項１に記載の検索システムであって、
前記検索サーバは、
登録を要求された文書から見出しを抽出し、
前記索引鍵を用いて前記抽出した見出しを暗号化し、
当該文書の登録を要求した利用者の鍵を用いて、前記索引鍵を暗号化し、
前記暗号化された見出し及び前記暗号化された索引鍵を前記索引データベースに登録し、
前記文書鍵を用いて登録すべき文書を暗号化し、
当該文書の登録を要求した利用者の鍵を用いて、前記文書鍵を暗号化し、
前記暗号化された文書及び前記暗号化された文書鍵を前記文書データベースに登録することを特徴とする検索システム。
【請求項３】
請求項１又は２に記載の検索システムであって、
前記検索サーバは、前記利用者が複数のグループに所属している場合、当該複数のグループの各々の索引鍵を取得することを特徴とする検索システム。
【請求項４】
請求項１から３のいずれか一つに記載の検索システムであって、
前記検索サーバは、利用者に関連付けられる索引がある場合、当該利用者の索引鍵を取得することを特徴とする検索システム。
【請求項５】
請求項１から４のいずれか一つに記載の検索システムであって、
前記検索サーバは、前記利用者の鍵を用いて前記索引鍵を暗号化するように、前記利用者のトークンを用いて前記鍵サーバに依頼することを特徴とする検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化された状態でデータを検索する検索システムに関する。
【背景技術】
【０００２】
クラウドサービスの一つとして、ストレージサービスがある。ストレージサービスは、利用者がアップロードした文書データを保管し、利用者や利用者が許可した他の利用者グループで文書データを共有できるサービスである。サービスの一つとして、キーワードを含む文書データを検索する全文検索がある。
【０００３】
ストレージサービスには、保存した文書データを第三者が閲覧する可能性が課題として指摘されている。特に、法律上正当な権限がある機関（捜査機関や裁判所）がストレージの提出を求めた場合、サービス事業者がストレージの提供を拒否できず、ストレージを押収される恐れがある。クラウドサービスでは、サーバやストレージなどを利用者間で共有しており、利用者自身が対象でない場合でも、利用者の文書データを含んだストレージが提出され、利用者が知らない間に他人（捜査機関、裁判所など）が文書にアクセスする可能性があり、機密漏洩への対策が求められていた。
【０００４】
また、一般的には、クラウド事業者は、文書データを暗号化して保存しているが、正当な権限がある機関に提出を求められたり、復号化の命令に応じなければならない場合がある。このような懸念は、文書データを保存する場合に限らず、Ｋｅｙ−ＶａｌｕｅストアやリレーショナルＤＢなどにおいても同じである。
【０００５】
このような課題への対策として、利用者又は利用者が所属する組織の鍵で暗号化して文書データを保存する技術が提案されている。また、暗号化された文書データをそのまま全文検索する技術が提案されている。
【０００６】
本技術の背景技術として、特開２００２−２７８９７０号公報（特許文献１）、特開２００３−１５０６００号公報（特許文献２）がある。特許文献１には、電子文書の保管、書誌検索、全文検索、閲覧機能を提供する文書管理サーバとクライアントから成る文書管理システムであって、クライアントで文書とそれに対応する書誌および全文索引情報を同一または別の方法で暗号化しサーバに送信し、サーバでは暗号化された文書と索引情報を登録し、検索時は、クライアントで検索条件を対応する索引情報と同一の方法で暗号化してサーバに送信し、サーバでは暗号化された検索条件で暗号化された索引情報を検索し、閲覧においては暗号化された文書をサーバからクライアントに送信する。全文索引情報をサーバ上に転置索引方式を用いて保存する。クライアントで索引情報をシーザー暗号化する文書管理ステムが記載されている。
【０００７】
また、特許文献２には、文字列を言語解析する言語解析ステップと、暗号化する暗号化ステップと、文字列を含む情報を複数保持する情報保持ステップと、クエリを入力するクエリ入力ステップと、第１の文字列と第２の文字列を比較する文字列比較ステップと、復号化する復号化ステップと、一致した文字列を含む情報名や情報内容を１つ又は複数個表示する表示又は記憶ステップを含んで情報検索装置を構成するデータ処理方法が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−２７８９７０号公報
【特許文献２】特開２００３−１５０６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１及び２においては、利用者が使用するクライアント側で索引情報を作成する必要がある。見出しを作成するためには、文書中の文の形態素や構文などの言語解析をする必要があり、そのための辞書を保有する必要がある。特に英語など、日本語以外の言語ではｗｒｏｔｅをｗｒｉｔｅとするなど単語の原形を使った索引が一般的である。また、索引情報を暗号化するために暗号の鍵が必要であり、復号の鍵を含めた鍵管理をしなければならない。
【００１０】
言語解析プログラム、辞書、鍵を管理する技術は一般的であり、そのためのシステムも提案されている。しかしながら、ストレージサービスを利用するクライアント側のシステムは一般的には汎用のＷｅｂブラウザであり、多種多様なＷｅｂブラウザに言語解析プログラム、辞書及び鍵管理などを組み込むのは、技術的及び運用上困難である。
【００１１】
さらに、特許文献１及び２においては、マルチテナントが利用するクラウドサービスとしての検索が考慮されていない。すなわち、複数の組織や、組織に所属しない複数の個人が同一の検索サーバを利用する場合が考慮されておらず、閲覧が許されない文書が検索結果に含まれる可能性がある。仮に、文書に対するアクセス制御がされており、文書本体は閲覧されなくても、他組織の利用者や他人が文書名や文書の一部を閲覧できてしまう。さらに、閲覧できない文書が大量に検索結果に含まれると、利用者が探している文書を見つけられなくなるおそれがある。閲覧できない文書は検索結果に含めない処理をするにしても、サーバ内には他組織や他人の文書の方が多くあり、処理コストが高くなる課題がある。
【００１２】
本発明は、一般的なインターネット利用環境において、クラウドサービス事業者のストレージ上のデータが暗号化されたまま、検索機能を提供する。また、全文検索の他に、Ｋｅｙ−ＶａｌｕｅストアやリレーショナルＤＢでも利用可能な暗号化検索技術を提案する。
【課題を解決するための手段】
【００１３】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、検索システムであって、文書及び前記文書の索引が検索可能な形式で暗号化されて格納される記憶装置と、前記記憶装置に格納されたデータを検索する検索サーバと、索引鍵を管理する鍵サーバと、を備え、前記記憶装置は、前記索引鍵で暗号化された暗号化索引と、前記索引鍵を利用者の鍵で暗号化した暗号化索引鍵とを関連付けて格納する索引データベースと、文書鍵で暗号化された暗号化文書と、前記文書鍵を利用者の鍵で暗号化した暗号化文書鍵とを関連付けて格納する文書データベースとを格納し、前記検索サーバは、要求された検索クエリから検索用の見出しを抽出し、当該検索クエリを要求した利用者の鍵を用いて、暗号化された索引鍵を復号化し、前記復号化された索引鍵を用いて前記抽出した見出しを暗号化し、端末から検索クエリとトークンを受信すると、受信した検索クエリから検索条件を抽出し、辞書を参照しながら前記検索条件の言語解析を行い、前記検索条件に含まれる見出しを取得し、利用者が所属するグループの索引に関連付けられている暗号化された索引鍵を索引データベースから取得し、暗号化された索引鍵に対応するトークンを鍵サーバに送信することによって、復号化された索引鍵を取得し、前記索引鍵を非一時的記憶装置に格納せずに、各グループの索引鍵で暗号化された見出しを用いて、索引を暗号化した状態で前記索引データベースを検索し、索引データベースのグループに対応する索引を検索して、ヒットした見出しに対応する文書ＩＤ、文書中の見出しの位置、見出し前後の文、及び単語を取得し、検索クエリの演算子を考慮して検索結果を集計し、前記集計された検索結果を前記端末に送信する。
【発明の効果】
【００１４】
本発明の代表的な実施の形態によれば、文書本体を暗号化した状態で検索することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】第１実施例の文書保管・検索システムの全体の構成を示すブロック図である。
【図２】第１実施例の文書保管・検索システムを構成する各サーバの物理的な構成を示すブロック図である。
【図３】第１実施例における鍵の管理を説明する図である。
【図４】第１実施例のグループデータベースの構成例を示す図である。
【図５】第１実施例における文書登録処理のフローチャートである。
【図６】第１実施例の検索処理の概要を示すフローチャートである。
【図７】第１実施例のステップ３０７における検索結果を集計する集計処理のフローチャートである。
【図８】第２実施例のアクセス権追加処理のフローチャートである。
【図９】第３実施例のアクセス権追加処理のフローチャートである。
【発明を実施するための形態】
【００１６】
図１は、第１実施例の文書保管・検索システムの全体の構成を示すブロック図である。
【００１７】
文書保管・検索システム１１２は、検索サーバ１２１、文書サーバ１２５および認証サーバ１２６から構成され、例えば、ストレージサービス提供事業者が提供する文書保管・検索システムである。
【００１８】
文書保管・検索システム１１２には、利用者が使用する端末１１０が通信回線１１４を介して接続されている。
【００１９】
また、文書保管・検索システム１１２には、鍵サーバ１１３が通信回線１１５を介して接続されている。鍵サーバ１１３は、文書保管・検索システム１１２を運営する事業者と別のサービス事業者が運営しても、文書保管・検索システム１１２を運営するストレージサービス事業者自身が運営してもよい。また、鍵サーバ１１３は、利用者が所属する組織が運営してもよい。鍵サーバ１１３は、受信したデータを暗号化又は復号化して送信する。暗号化や復号に使われる鍵は外部に取り出すことはできない形式で鍵サーバ１１３に保管されている。例えば、鍵サーバ１１３は、Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ（ＨＳＭ）と称される装置を用いることによって、鍵の生成、暗号化及び復号化での鍵の利用、鍵の廃棄を装置内で実行し、鍵が外部に取り出せないように保管することができる。前述したトークンは、外部に取り出せない鍵と関連付けられており、トークンに対応した利用者又はグループの鍵でデータを暗号化及び復号化するために使用する。
【００２０】
通信回線１１４、１１５は、例えば、インターネットであるが、所定の組織内のネットワーク（例えば、イントラネット）でもよい。
【００２１】
検索サーバ１２１は、索引データベース１２２、辞書１２３、文書データベース１２４及び鍵サーバ１１３にアクセスして、文書の全文を検索可能なように索引を作成し、索引を利用して検索をする。
【００２２】
文書サーバ１２５は、利用者が指示した文書を端末１１０のＷｅｂブラウザ１１１に送信するコンピュータであり、例えば、ストレージサービス事業者が保有する。文書サーバ１２５は、文書を送信する際、利用者が文書にアクセス可能かを示すアクセス権限を付与することができる。
【００２３】
認証サーバ１２６では、利用者を認証し、トークンをブラウザ１１１へ送信するコンピュータであり、例えば、ストレージサービス事業者が保有する、また、認証サーバ１２６は、検索サーバ１２１からの要求に応じてトークンや索引鍵を送信してもよい。認証サーバ１２６は、セキュリティを確保する上で重要なので、鍵サーバ１１３と同様に、文書保管・検索システム１１２を運営する事業者と異なる事業者が所有し、運用したり、利用者企業が所有し、運用してもよい。
【００２４】
索引データベース１２２は、検索サーバ１２１が作成した索引を格納するデータベースであり、高速に全文検索できるように、検索キーワードとなる見出し、該見出しを含む文書の文書ＩＤ、文書内の見出しの位置、見出しの前後の文や単語の付加情報を含む。索引データベース１２２は、ストレージサービス事業者が保有し、検索サーバ１２１が利用する。索引データベース１２２の構成は、図３を用いて後述する。
【００２５】
辞書１２３は、文書登録時に全文検索に使われる見出しを取り出す際の言語処理や、検索時にもクエリから見出しを取り出す際に使用され、ストレージサービス事業者が保有する。
【００２６】
文書データベース１２４は、暗号化された文書を蓄積するデータベースであり、文書サーバ１２５のアクセス権限も格納する。また、文書データベース１２４は、検索サーバ１２１からアクセス可能である。文書データベース１２４は、ストレージサービス事業者が保有する。文書データベース１２４の構成は、図３を用いて後述する。
【００２７】
文書保管・検索システム１１２は、グループデータベース１２７を有する。グループデータベース１２７は、文書保管・検索システム１１２の利用者が所属するグループを管理するためのデータベースであり、認証サーバ１２６が利用する。グループデータベース１２７は、どのようなグループがあり、どの利用者が各グループに所属するかを管理する。グループデータベース１２７の構成は、図４を用いて後述する。本明細書において、グループは、利用者が所属するグループであり、一人の利用者は複数のグループに所属することができる。また、組織は、利用者が所属する組織であり、一人の利用者は一つの組織のみに所属する。
【００２８】
端末１１０は、プログラムを実行するプロセッサ（ＣＰＵ）、プログラムを格納するメモリ、プログラムの実行時に使用されるデータを格納する不揮発性記憶装置、入出力インターフェース（キーボード、マウス、ディスプレイ装置など）、及び通信インターフェースを有するコンピュータである。端末１１０では、Ｗｅｂブラウザ１１１が動作している。利用者は、Ｗｅｂブラウザ１１１が提供するインターフェースを用いて、文書保管・検索システム１１２で文書を検索することができる。端末１１０は、Ｗｅｂブラウザ１１１ではなく、文書保管・検索システム１１２にアクセスする専用アプリケーションを実行してもよい。
【００２９】
図２は、第１実施例の文書保管・検索システム１１２を構成する各サーバの物理的な構成を示すブロック図である。なお、図２には、検索サーバ１２１の構成を示すが、他のサーバ１２５、１２６も同様の構成を有すればよい。また、鍵サーバ１１３も、検索サーバ１２１と同様の構成でよい。
【００３０】
本実施例の検索サーバ１２１は、プロセッサ（ＣＰＵ）１、メモリ２、補助記憶装置３及び通信インターフェース４を有する計算機によって構成される。
【００３１】
プロセッサ１は、メモリ２に格納されたプログラムを実行する。メモリ２は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶素子であり、プロセッサ１が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００３２】
補助記憶装置３は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置によって構成され、プロセッサ１が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置３から読み出されて、メモリ２にロードされて、プロセッサ１によって実行される。
【００３３】
通信インターフェース４は、所定のプロトコルに従って、他の装置（端末１１０、鍵サーバ１１３など）との通信を制御するネットワークインターフェース装置である。
【００３４】
検索サーバ１２１は、入力インターフェース５及び出力インターフェース８を有してもよい。入力インターフェース５は、キーボード６やマウス７などが接続され、オペレータからの入力を受けるインターフェースである。出力インターフェース８は、ディスプレイ装置９やプリンタなどが接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。
【００３５】
プロセッサ１が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して検索サーバ１２１に提供され、非一時的記憶媒体である不揮発性の補助記憶装置３に格納される。このため、検索サーバ１２１は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００３６】
検索サーバ１２１は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３７】
＜鍵の管理＞
図３は、第１実施例における鍵の管理を説明する図である。
【００３８】
本実施例の文書保管・検索システム１１２では、何種類かの鍵を使用し、文書、索引情報、鍵などを暗号化する。なお、図３において、暗号化されているデータは、太字で示す。
【００３９】
索引１２２１は、索引鍵１２２２で暗号化された見出しなどの情報が含まれ、利用者のグループごとに索引データベース１２２に格納される。利用者のグループは、グループデータベース１２７（図４）で定義される。
【００４０】
索引鍵１２２２は、索引内の情報を暗号化するのに利用する鍵である。索引鍵１２２２は、鍵サーバ１１３に格納される利用者鍵又はグループ鍵で暗号化される。利用者鍵及びグループ鍵は鍵サーバ１１３の外に取り出すことができないように管理されている。このため、索引鍵を暗号化する場合、検索サーバ１２１が索引鍵を鍵サーバ１１３に送り、暗号化を依頼し、鍵サーバ１１３が索引鍵を暗号化し、暗号化した索引鍵１２２２を検索サーバ１２１に返信する。復号する場合も同様の処理が実行される。なお、索引鍵１２２２は索引ごとにランダムに生成されるとよい。暗号化された索引鍵１２２２は暗号化対象の索引１２２１に関連付けられ、索引ＤＢ１２２に格納される。
【００４１】
文書データベース１２４は、文書鍵１２４２で暗号化された文書１２４１を格納する。
【００４２】
文書鍵１２４２は、文書を暗号化する際に用いる鍵であり、文書ごとにランダムに生成されるとよい。暗号化及び復号化の方法は索引鍵と同様である。暗号化された文書鍵は暗号化対象の文書１２４１に関連付けられ、文書データベース１２４に格納される。すなわち、暗号化された文書１２４１は、複数の利用者鍵及びグループの鍵で暗号化されたら、複数存在する。また、暗号化された文書鍵１２４２も、複数の利用者鍵及びグループの鍵で暗号化されたら、複数存在する。なお、暗号化された文書鍵１２４２には、利用者名及びグループ名が付与され、どの利用者鍵及びグループ鍵で暗号化されたか識別可能に管理される。
【００４３】
＜グループ管理＞
図４は、第１実施例のグループデータベース１２７の構成例を示す図である。
【００４４】
グループデータベース１２７は、グループを示すレコード（行データ）の集まりで構成されており、各レコードはグループ名７０１及び所属利用者名７０２の属性を含む。
【００４５】
グループ名７０１は、グループの名称であり、グループはレコードと１対１の関係である。所属利用者名７０２は、当該グループに所属する利用者名のリストである。
【００４６】
＜文書登録処理＞
図５は、第１実施例における文書登録処理のフローチャートである。なお、以下の説明では、文書は組織に所属する利用者がアクセスできるように登録する。
【００４７】
まず、利用者は端末１１０を操作して、Ｗｅｂブラウザ１１１から認証サーバ１２６に利用者の認証を要求する（ステップ２０１）。認証の方法は、パスワード、生体情報、ハードウェアを利用するものなど様々な方法があるが、本実施例ではいずれの方法を採用してもよい。
【００４８】
認証サーバ１２６は、利用者の認証を試みて、認証に失敗すればエラーを返信する。一方、認証サーバ１２６が、認証に成功すれば、利用者名を鍵サーバ１１３へ送信し、検索サーバ１２１が、鍵サーバ１１３が保管する利用者鍵を利用する場合のトークンを返信する。さらに、認証サーバ１２６は、グループデータベース１２７を用いて、利用者が所属しているグループを特定し、鍵サーバ１１３へグループ名を送信し、鍵サーバ１１３が保管するグループ鍵を検索サーバ１２１が利用する場合のトークンを返信する（ステップ２０２）。トークンの種別及びデータ構造は、公知のものを利用することができ、その詳細は本明細書では省略する。検索サーバ１２１が、鍵サーバ１１３にトークンを示すことによって、当該トークンに対応した利用者鍵又はグループ鍵で鍵サーバ１１３がデータを暗号化又は復号化する。
【００４９】
Ｗｅｂブラウザ１１１は、認証サーバ１２６からトークンを受信すると、利用者が指定した文書及びトークンを検索サーバ１２１に送信して、文書の登録を要求する（ステップ２０３）。
【００５０】
検索サーバ１２１が、Ｗｅｂブラウザ１１１から文書及びトークンを受信すると、文書登録処理を開始する（ステップ２０４）。具体的には、文書からテキストを抽出し、辞書１２３を参照しながら言語解析を行い、見出しとその位置を取得する。一般に、文書には複数の見出しとなる語が含まれているため、複数の見出しとその位置のペアを取得する。さらに、付加的に、見出し前後の文や単語を取り出してもよい。他に、見出しの出現頻度など、検索結果順位を決める情報を取り出してもよい。また、単純に単語を見出しとして取り出すだけではなく、部分一致検索を実現するためのＮグラム法を用いて見出しを取り出してもよい。
【００５１】
その後、検索サーバ１２１は、見出しを暗号化するために使用する索引鍵１２２２を取得する（ステップ２０５）。デフォルトの索引鍵は、利用者が所属する組織の索引鍵である。具体的には、検索サーバ１２１は、索引データベース１２２にアクセスし、利用者が所属する組織の索引に関連付けられている暗号化された索引鍵１２２２を取得し、鍵サーバ１１３に送信する。図３に示したとおり、索引鍵には利用者名やグループ名が付与されており、組織というグループに対応した索引鍵を見付けることができる。この際、所属組織であるグループのグループ鍵を利用するためのトークンも一緒に送信する。鍵サーバ１１３は、索引鍵を復号化して、復号化した索引鍵を検索サーバ１２１に返信する。このようにして、検索サーバ１２１は、索引鍵を取得する。
【００５２】
その後、検索サーバ１２１は、見出しを索引鍵で暗号化し、暗号化された索引１２２１と当該索引の暗号化に用いた索引鍵１２２２とを関連付けて索引データベース１２２に登録する（ステップ２０６）。具体的には、暗号化処理は、共通鍵暗号、索引を暗号化した状態で検索する方法で暗号化処理を行う。そして、暗号化した見出し（索引）と当該索引の暗号化に用いた索引鍵１２２２とを関連付けて索引データベース１２２に登録する。登録の方法は、Ｂ木、ハッシュ索引など、索引の種別に応じた方法を採用する。
【００５３】
索引に登録する項目は、見出しに対する文書ＩＤ、文書中の見出しの位置、見出し前後の文や単語、見出しの出現頻度などである。前後の文や単語は暗号化して索引データベース１２２に登録する。他は暗号化して索引データベース１２２に登録してもよいし、暗号化せずに索引データベース１２２に登録してもよい。
【００５４】
その後、検索サーバ１２１は、文書を文書鍵１２４２で暗号化し、暗号化された文書１２４１を文書データベース１２４に登録する（ステップ２０７）。文書を暗号化するための文書鍵１２４２は、ランダムに生成されたものを用いるとよい。具体的には、検索サーバ１２１は、文書鍵１２４２を鍵サーバ１１３に送信して、文書を暗号化するための文書鍵の暗号化を依頼する。この際、所属組織であるグループのグループ鍵を利用するためのトークンも一緒に送信する。鍵サーバ１１３は、文書鍵を暗号化し、暗号化された文書鍵を検索サーバ１２１に返信する。検索サーバ１２１は、暗号化された文書１２４１と当該文書の暗号化に用いた文書鍵１２４２とを関連付けて文書データベース１２４に登録する。さらに、文書のアクセス権限を、当該利用者が所属する組織からアクセス可能に設定する。
【００５５】
その後、検索サーバ１２１は、文書登録が終了した旨の文書登録の結果を端末１１０（Ｗｅｂブラウザ１１１）に送信する（ステップ２０８）。Ｗｅｂブラウザ１１１は、文書登録の結果を画面に表示する。
【００５６】
＜索引鍵の取得方法＞
前述した例では、文書にアクセス可能なグループは利用者が所属する組織であるが、別のグループから当該文書へのアクセスを許可する場合、ステップ２０５において、索引データベース１２２に格納される、当該別のグループに対応する索引１２２１に関連付けられた索引鍵１２２２を利用する。鍵サーバ１１３に送るトークンも、当該別のグループのトークンを利用する。なお、検索サーバ１２１は、ステップ２０３において、トークンを取得している。また、登録する索引は当該別のグループに対応した索引である。
【００５７】
もし、当該別のグループに対応する索引鍵が索引データベース１２２に登録されていない場合、新たな索引鍵をランダムに生成する。この場合、生成した索引鍵を、当該別のグループのトークンと共に鍵サーバ１１３に送信し、暗号化された索引鍵を取得する。そして、検索サーバ１２１は、暗号化された索引１２２１と当該索引の暗号化に用いた索引鍵１２２２とを関連付けて索引データベース１２２に登録する。
【００５８】
なお、グループではなく、利用者のみにアクセスを許可する場合、グループの鍵ではなく、利用者の索引鍵及び文書鍵を利用する。
【００５９】
＜検索処理＞
図６は、第１実施例の検索処理の概要を示すフローチャートである。
【００６０】
まず、Ｗｅｂブラウザ１１１が認証サーバ１２６に利用者認証を要求する（ステップ３０１）。この処理は、ステップ２０１と同じである。
【００６１】
次に、認証サーバ１２６は、利用者の認証を試み、認証が成功すれば、鍵サーバ１１３へアクセスするためのトークンをＷｅｂブラウザ１１１へ送信する（ステップ３０２）。この処理は、ステップ２０２と同じである。
【００６２】
Ｗｅｂブラウザ１１１は、認証サーバ１２６からトークンを受信すると、利用者が指定した検索クエリ及びトークンを検索サーバ１２１に送信して検索を要求する（ステップ３０３）。
【００６３】
検索サーバ１２１は、Ｗｅｂブラウザ１１１から検索クエリとトークンを受信すると、検索処理を開始する（ステップ３０４）。すなわち、検索サーバ１２１は、検索クエリから検索条件を抽出し、辞書１２３を参照しながら言語解析を行い、検索条件に含まれる見出しを取得する。
【００６４】
その後、検索サーバ１２１は、見出しを暗号化するために使用する索引鍵を取得する（ステップ３０５）。この処理は、ステップ２０５と同じである。すなわち、検索サーバ１２１は、索引データベース１２２にアクセスし、利用者が所属する各グループの索引に関連付けられている暗号化された索引鍵１２２２を取得し、暗号化された各々の索引鍵１２２２に対応するグループのトークンを一緒に鍵サーバ１１３に送信する。鍵サーバ１１３は、索引鍵１２２２を復号化して、復号化した索引鍵を検索サーバ１２１に返信する。このようにして、検索サーバ１２１は、索引鍵を取得する。利用者が複数のグループに所属していれば、複数の索引鍵を取得する。さらに、利用者に関連付けられる索引があれば、同様にして利用者の索引鍵も取得する。
【００６５】
検索サーバ１２１は、ステップ３０５で取得した各グループの索引鍵で見出しを暗号化し、索引データベース１２２の各グループに対応する索引を検索する。検索方法としては、Ｂ木、ハッシュ索引など、索引の種別に応じた方法を採用する。また、見出しの比較においては、索引を暗号化した状態で検索する方法で判定することによって、都度索引を復号化することなく高速に判定することができる。そして、ヒットした見出しに対応する文書ＩＤ、文書中の見出しの位置、及び見出し前後の文及び単語などを取得する（ステップ３０６）。ステップ２０６において、これらの情報を暗号化して索引データベース１２２に登録した場合、暗号化に応じた方法で復号化する。なお、ステップ３０６の処理は複数回繰り返す場合がある。検索クエリが、ＡＮＤやＯＲの演算子を含み、複数の見出しを含む場合があるからである。さらに、利用者が所属する各グループの索引１２２１ごとに繰り返す。
【００６６】
その後、複数の索引鍵で重複したヒット、検索クエリのＡＮＤやＯＲの演算子を考慮して検索結果を集計し、Ｗｅｂブラウザ１１１に送信する（ステップ３０７）。集計処理の詳細は図７で説明する。
【００６７】
その後、Ｗｅｂブラウザ１１１が検索サーバ１２１から受信した検索結果を表示し、利用者が指定した文書のＩＤとトークンを文書サーバ１２５に送信する（ステップ３０８）。
【００６８】
文書サーバ１２５は、ステップ３０６で取得した文書ＩＤの文書を文書データベース１２４から取得し、復号化してＷｅｂブラウザ１１１に返信する（ステップ３０９）。文書の復号化は、まず、文書に関連付けられた暗号化された文書鍵１２４２のうち、利用者の鍵又は利用者が所属するグループの鍵で暗号化された文書鍵を探し、探し出された暗号化された文書鍵及び利用者又はグループのトークンを鍵サーバ１１３に送り、鍵サーバ１１３が文書鍵を復号化し、得られた文書鍵を使って文書を復号する、という手順で行う。
【００６９】
その後、Ｗｅｂブラウザ１１１は、文書サーバ１２５から受信した文書を表示する（ステップ３１０）。
【００７０】
＜集計処理＞
図７は、第１実施例のステップ３０７における検索結果を集計する集計処理のフローチャートである。
【００７１】
まず、検索サーバ１２１は、複数の索引鍵でヒットした同一の見出しを一つの見出しに纏める（ステップ４０１）。
【００７２】
次に、検索サーバ１２１は、検索クエリに含まれるＡＮＤ、ＯＲの演算子や他の検索条件に従って検索結果を絞り込む（ステップ４０２）。さらに、出現頻度などを用いて検索結果をソートする。ステップ４０２の処理は通常の全文検索と同じであるため、詳細の説明は省略する。さらに、文書データベース１２４に格納される文書１２４１へのアクセス権を検査し、利用者がアクセスできない文書を除外する処理を集計処理に含めてもよい。
【００７３】
＜第２実施例＞
次に本発明の第２実施例として、文書の所有者が他者に文書へのアクセス権を付与する処理を説明する。
【００７４】
図８は、第２実施例のアクセス権追加処理のフローチャートである。図８で説明する例では、利用者が所属するグループＸと利用者Ｄのアクセス権が付与されている文書に利用者Ｅへのアクセス権を追加する。
【００７５】
まず、検索サーバ１２１が、既存のアクセス可能な利用者と新たに追加する利用者を含む新しいグループの生成を認証サーバ１２６に要求する（ステップ５０１）。すなわち、グループＸに所属する利用者と利用者Ｄと利用者Ｅとを含む新グループの生成を要求する。
【００７６】
認証サーバ１２６は、グループ名及び利用者をグループデータベース１２７に登録し、新たなレコードをグループデータベース１２７に追加する。さらに、認証サーバ１２６は、新たなグループの鍵の生成と、当該生成される鍵を利用するためのトークンを鍵サーバ１１３に要求する（ステップ５０２）。
【００７７】
鍵サーバ１１３は、要求されたグループ鍵及び当該鍵を利用するためのトークンを生成し、生成されたグループ鍵及びトークンを返信する（ステップ５０３）。
【００７８】
認証サーバ１２６は、トークンを受信した後、受信したトークンを検索サーバ１２１に送信する（ステップ５０４）。
【００７９】
検索サーバ１２１は、トークンを受信した後、新しいグループに対応した索引１２２１を作成する（ステップ５０５）。具体的には、アクセス権追加の対象である文書１２４１を復号化し、復号化した文書から索引情報を抽出する。文書の復号化はステップ３０９と同様であり、索引情報の抽出はステップ２０４と同様である。その後、新しい索引鍵をランダムに生成し、ステップ２０６と同様の方法で索引情報を暗号化し、索引データベース１２２に登録する。検索サーバ１２１は、認証サーバ１２６から受信したトークンを付して、索引情報を暗号化するための索引鍵の暗号化を鍵サーバ１１３に依頼し、暗号化された索引鍵１２２２を暗号化された索引１２２１に関連付けて索引データベース１２２に登録する。この際に、暗号化した索引鍵に新しいグループ名を付与して登録する。こうすることによって、図３で述べたように、索引鍵が、どのグループや利用者のものかを識別することができる。
【００８０】
その後、検索サーバ１２１が、ステップ５０５で使用した文書鍵の暗号化を鍵サーバ１１３に依頼し、暗号化された文書鍵１２４２を暗号化された文書１２４１に関連付けて文書データベース１２４に登録する（ステップ５０６）。
【００８１】
＜第３実施例＞
次に、本発明の第３実施例として、文書の所有者がアクセス権を追加する機能を検索サーバ１２１が有する例を説明する。
【００８２】
図９は、第３実施例のアクセス権追加処理のフローチャートである。
【００８３】
前述した実施例では、索引鍵１２２２と索引１２２１とは関連付けられて、グループと１対１に対応している。第３実施例では、利用者が組織に所属する場合には、その組織の索引と索引鍵とを使用し、利用者が組織に所属しない個人である場合には、利用者固有の索引と索引鍵とを使用する例を説明する。
【００８４】
アクセスが許可される利用者が、文書を所有している利用者と同一組織に属しているかを判定する（ステップ８０１）。その結果、アクセスが許可される利用者が、文書を所有している利用者と同一組織に属していれば、ステップ８０３に進む。一方、アクセスが許可される利用者が、文書を所有している利用者と同一組織に属していなければ、ステップ８０２に進む。
【００８５】
ステップ８０２において、検索サーバ１２１は、アクセス権が追加される文書を復号化し、ステップ２０４と同様に索引情報を抽出し、アクセスが許可される利用者の所属組織の索引に追加する。なお、当該利用者の所属組織がない場合、アクセスが許可される利用者の索引に追加する。ここで、索引データベース１２２に追加する索引を暗号化するための索引鍵を取得するために、アクセスが許可される利用者に成り代わり、検索サーバ１２１は、鍵サーバ１１３へアクセスするためのトークンを認証サーバ１２６に要求する。
【００８６】
ステップ８０３において、アクセス権が追加される文書に当該利用者のアクセス権限を追加するように、文書データベース１２４を更新する。
【００８７】
第３実施例では、集計処理（図７）のステップ４０２において、文書データベース１２４に格納されている文書１２４１へのアクセス権を検査し、利用者がアクセスできない文書を除外する処理は必須となる。なぜなら、追加した利用者が所属する組織に所属する他の利用者が検索した場合、検索した結果には対象文書が含まれるが、当該文書へのアクセス権はステップ８０３に示すように追加した利用者のみに与えられるからである。このため、検索結果に含まれる文書へのアクセス権を確認して、アクセス権のない文書を検索結果から削除する必要がある。
【００８８】
＜第４実施例＞
前述した実施例では、索引鍵１２２２や文書鍵１２４２は、鍵サーバ１１３が管理する利用者鍵又はグループ鍵で暗号化されて、索引データベース１２２や文書データベース１２４に格納されている。他の方法として、トークン自体が、利用者鍵やグループ鍵を含む方法がある。この場合、認証サーバ１２６が鍵を保有してもよい。この場合、何らかの方法で鍵を暗号化してストレージに保存する。また、認証サーバ１２６が、鍵サーバ１１３から鍵を取得してもよい。
【００８９】
利用者が所属する組織が、鍵サーバ１１３や認証サーバ１２６を運営する場合、利用者が知らない間にストレージが行政機関や裁判所に提供されることはないので、暗号化しないでストレージに保存してもよい。
【００９０】
また、索引鍵や文書鍵を、利用者鍵やグループ鍵ではなく、サーバの鍵で暗号化してもよい。
【００９１】
＜第５実施例＞
第１実施例では、グループごとに索引１２２１を作成する。索引データベース１２２に格納される索引１２２１を全グループの全利用者で共有してもよい。この場合、一つの暗号化された索引１２２１には一つの索引鍵１２２２が対応付けられ、複数の索引鍵１２２２のそれぞれに対応して複数の暗号化された索引１２２１が作成される。そして、検索時は、該当する索引鍵で暗号化した索引の見出しがヒットし、異なる索引鍵で暗号化された索引の見出しはヒットしない。索引鍵１２２２は、組織ごとに用意され、鍵サーバ１１３中が管理する組織の鍵で暗号化するとよい。また、索引鍵１２２２を利用者ごと用意し、索引鍵１２２２を利用者の鍵で暗号化してもよい。
【００９２】
＜第６実施例＞
前述した実施例では、文書の全文を検索対象としているが、本発明は他の検索にも適用できる。例えば、本発明は、Ｋｅｙ−Ｖａｌｕｅストアにも適用できる。Ｋｅｙ−Ｖａｌｕｅストアではキーに対する値であるデータが登録されており、キーを指定して検索することによって値を得ることができる。Ｋｅｙ−Ｖａｌｕｅストアは、大量のデータを登録しても高速に検索できる。Ｋｅｙ−Ｖａｌｕｅストアにおける索引として、Ｂ木やハッシュ索引を用いることが多い。
【００９３】
Ｋｅｙ−Ｖａｌｕｅストアにおける検索と文書の全文検索とは、全文検索における見出しの代わりにキーを登録し、全文検索における文書の代わりに値を登録することである。文書から見出しを抽出する処理が不要となるため、文書登録処理（図５）において、見出し抽出手順（ステップ２０４）や、暗号化手順（ステップ２０６）が不要となる。また、検索処理（図６）においてにおいて、検索クエリからの見出し抽出手順（ステップ３０４）や、検索結果の集計手順（ステップ３０７）が不要となる。
【００９４】
＜第７実施例＞
他の実施例として、本発明を適用したリレーショナルＤＢ（ＲＤＢ）がある。但し、ＲＤＢにおいては、キーの比較結果は一致であり、大小の比較を含まない。
【００９５】
レコードを登録する場合、検索対象となる属性値を見出しとして、レコードＩＤを文書ＩＤとして登録する。レコードを検索する場合、検索クエリから検索対象となる属性及び属性値を取り出し、索引データベース１２２内を検索し、ヒットするレコードＩＤを抽出し、検索クエリに含まれるＡＮＤやＯＲの演算子などの条件にしたがって、検索結果を絞り込み、検索結果を利用者に返信する。
【００９６】
以上に説明したように、本発明は、クラウドサービスの一種であるストレージサービスの特に文書の全文検索機能に関するものであり、サービス事業者の鍵や利用者の鍵で暗号化された文書に対する全文検索に関する機能である。文書の全文検索に限らず、Ｋｅｙ−Ｖａｌｕｅストアやリレーショナルデータベースでの検索にも適用可能である。
【００９７】
以上に説明したように、本発明の実施例によると、文書本体を暗号化した状態で検索することができる。すなわち、文書及び索引を暗号化した状態で、暗号化したキーワードの索引を使って、文書のキーワード検索ができる。また、索引を暗号化及び復号化するための索引鍵及び文書を暗号化及び復号化するための文書鍵は検索サーバ１２１のメモリ上のみに記憶されており、非一時的記憶媒体（不揮発性記憶装置である、磁気ディスクドライブやＳＳＤ）には格納されないため、非一時的記憶媒体が第三者に提供されても文書の内容が漏洩することはない。
【００９８】
また、利用者のクライアント端末では、言語解析処理、辞書の整備、鍵管理などが不要になり、一般的なブラウザを利用して暗号化検索技術が適用された全文検索を利用することができる。
【００９９】
さらに、文書の所有者が認めれば、他者が検索することも可能となる。また、文書検索の他に、Ｋｅｙ−ＶａｌｕｅストアやリレーショナルＤＢでも索引及びデータを暗号化したまま検索をすることができる。
【０１００】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１０１】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１０２】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１０３】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１０４】
１１１：ブラウザ
１１２：文書保管・検索システム
１１３：鍵サーバ
１２１：検索サーバ
１２２：索引データベース
１２３：辞書
１２４：文書データベース
１２５：文書サーバ
１２６：認証サーバ
１２７：グループデータベース
１２２１：暗号化された索引
１２２２：暗号化された索引鍵
１２４１：暗号化された文書
１２４２：暗号化された文書鍵
【図１】
0006419633.tif 000002
【図２】
0006419633.tif 000003
【図３】
0006419633.tif 000004
【図４】
0006419633.tif 000005
【図５】
0006419633.tif 000006
【図６】
0006419633.tif 000007
【図７】
0006419633.tif 000008
【図８】
0006419633.tif 000009
【図９】
0006419633.tif 000010