(57)【要約】【課題】  コンピュータに保存される情報の機密性を確保しつつ高速な情報検索が可能な情報検索システムおよび方法を提供する。【解決手段】  マークアップ言語で書かれた文書データは、その所定部分が所定の鍵を用いて暗号化され（８０２）、データベース（８０４）に登録される。検索文字列が入力されると、その検索文字列が上記所定の鍵を用いて暗号化され（８０７）、この暗号化された検索文字列を含む文書データが、データベース（８０４）から検索される（８０３）。【選択図】  図８
2005284915.tif 000002
【特許請求の範囲】
【請求項１】
文書データをデータベースとして保持するサーバと、このサーバと通信可能に接続されたクライアントとを含み、このクライアントからの検索要求に応じて前記サーバがデータベースに対する情報検索を行う情報検索システムであって、
前記サーバは、
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化する第１の暗号化手段と、
前記第１の暗号化手段により前記所定部分が暗号化された文書データを前記データベースに登録する登録手段と、
検索文字列を前記所定の鍵を用いて暗号化する第２の暗号化手段と、
前記第２の暗号化手段により暗号化された検索文字列を含む文書データを前記データベースから検索する検索手段と、
を有することを特徴とする情報検索システム。
【請求項２】
前記所定部分は、前記マークアップ言語のタグによって特定されることを特徴とする請求項１に記載の情報検索システム。
【請求項３】
前記第１の暗号化手段は、入力した文書データが前記マークアップ言語で記述されたものでない場合、前記文書データを前記マークアップ言語の文書データに変換する変換手段を含むことを特徴とする請求項１または２に記載の情報検索システム。
【請求項４】
前記第１の暗号化手段は、前記所定部分の暗号化を実行した後に前記所定部分を特定する前記タグを前記文書データから削除する編集手段を含むことを特徴とする請求項２に記載の情報検索システム。
【請求項５】
前記検索手段によって検索された文書データを復号する復号手段を更に有することを特徴とする請求項１から４までのいずれかに記載の情報検索システム。
【請求項６】
文書データをデータベースとして保持するサーバと、このサーバと通信可能に接続されたクライアントとを含み、このクライアントからの検索要求に応じて前記サーバがデータベースに対する情報検索を行う情報検索システムであって、
前記クライアントは、
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化する第１の暗号化手段と、
検索文字列を前記所定の鍵を用いて暗号化する第２の暗号化手段と、
を有し、
前記サーバは、
前記第１の暗号化手段により前記所定部分が暗号化された文書データを前記データベースに登録する登録手段と、
前記第２の暗号化手段により暗号化された検索文字列を含む文書データを前記データベースから検索する検索手段と、
を有することを特徴とする情報検索システム。
【請求項７】
文書データをデータベースとして保持するサーバと、このサーバと通信可能に接続されたクライアントとを含み、このクライアントからの検索要求に応じて前記サーバがデータベースに対する情報検索を行う情報検索システムであって、
前記クライアントは、
マークアップ言語によって書かれた文書データの所定部分を第１の鍵を用いて暗号化する第１の暗号化手段と、
前記第１の暗号化手段により前記所定部分が暗号化された文書データを前記サーバに送信する送信手段と、
を有し、
前記サーバは、
前記クライアントから受信した前記所定部分が暗号化された文書データを、前記第１の鍵を用いて復号する復号手段と、
前記復号手段により復号された文書データの前記所定部分を第２の鍵を用いて暗号化する第２の暗号化手段と、
前記第２の暗号化手段により前記所定部分が暗号化された文書データを前記データベースに登録する登録手段と、
検索文字列を前記第２の鍵を用いて暗号化する第３の暗号化手段と、
前記第３の暗号化手段により暗号化された検索文字列を含む文書データを前記データベースから検索する検索手段と、
を有することを特徴とする情報検索システム。
【請求項８】
文書データをデータベースとして保持するサーバと、このサーバと通信可能に接続されたクライアントとを含み、このクライアントからの検索要求に応じて前記サーバがデータベースに対する情報検索を行う情報検索システムであって、
前記クライアントは、
マークアップ言語によって書かれた文書データの所定部分をそのクライアントに依存した第１の鍵を用いて暗号化する第１の暗号化手段と、
前記第１の暗号化手段により前記所定部分が暗号化された文書データと前記第１の鍵とを前記サーバに送信する送信手段と、
を有し、
前記サーバは、
前記クライアントから受信した前記所定部分が暗号化された文書データと前記第１の鍵とを前記データベースに登録する登録手段と、
検索文字列を前記第２の鍵を用いて暗号化する第２の暗号化手段と、
前記第２の暗号化手段により暗号化された検索文字列を含む文書データを前記データベースから検索する検索手段と、
を有することを特徴とする情報検索システム。
【請求項９】
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化する第１の暗号化手段と、
前記第１の暗号化手段により前記所定部分が暗号化された文書データを記憶する記憶手段と、
検索文字列を前記所定の鍵を用いて暗号化する第２の暗号化手段と、
前記第２の暗号化手段により暗号化された検索文字列を含む文書データを、前記記憶手段から検索する検索手段と、
を有することを特徴とする情報検索装置。
【請求項１０】
マークアップ言語によって書かれた文書データが所定部分を所定の鍵を用いて暗号化し、その所定部分が暗号化された文書データをメモリに記憶しておき、このメモリに記憶されている文書データに対し情報検索を行う情報検索方法であって、
検索文字列を前記所定の鍵を用いて暗号化するステップと、
暗号化された前記検索文字列を含む文書データを、前記メモリから検索するステップと、
を有することを特徴とする情報検索方法。
【請求項１１】
マークアップ言語によって書かれた文書データが所定部分を所定の鍵を用いて暗号化し、その所定部分が暗号化された文書データをメモリに記憶しておき、このメモリに記憶されている文書データに対し情報検索を行う情報検索方法をコンピュータに実行させるためのプログラムであって、
検索文字列を前記所定の鍵を用いて暗号化するためのコードと、
暗号化された前記検索文字列を含む文書データを、前記メモリから検索するためのコードと、
を含むことを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【請求項１３】
文書データをデータベースとして保持し、クライアントからの検索要求に応じてこのデータベースに対する情報検索を行う情報検索システムにおけるサーバであって、
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化する第１の暗号化手段と、
前記第１の暗号化手段により前記所定部分が暗号化された文書データを前記データベースに登録する登録手段と、
検索文字列を前記所定の鍵を用いて暗号化する第２の暗号化手段と、
前記第２の暗号化手段により暗号化された検索文字列を含む文書データを前記データベースから検索する検索手段と、
を有することを特徴とするサーバ。
【請求項１４】
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化し、その所定部分を暗号化した文書データをデータベースとして保持し、クライアントからの検索要求に応じてこのデータベースに対する情報検索を行う情報検索システムにおけるサーバの制御方法であって、
検索文字列を前記所定の鍵を用いて暗号化するステップと、
暗号化された前記検索文字列を含む文書データを前記データベースから検索するステップと、
を有することを特徴とするサーバの制御方法。
【請求項１５】
マークアップ言語によって書かれた文書データの所定部分を所定の鍵を用いて暗号化し、その所定部分を暗号化した文書データをデータベースとして保持し、クライアントからの検索要求に応じてこのデータベースに対する情報検索を行う情報検索方法をサーバに実行させるためのプログラムであって、
検索文字列を前記所定の鍵を用いて暗号化するためのコードと、
暗号化された検索文字列を含む文書データを前記データベースから検索するためのコードと、
を含むことを特徴とするプログラム。
【請求項１６】
請求項１５に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報検索の技術に関し、特に、暗号化された情報の検索を行う技術に関する。
【背景技術】
【０００２】
デジタルコンテンツの暗号化方式として、図１４に示すように、送信者と受信者で同一の暗号鍵を秘密に共有する共通鍵暗号方式（秘密鍵暗号方式、対称暗号方式、慣用暗号方式とも呼ばれる）がある。共通鍵暗号方式は適当な長さの文字列（ブロック）ごとに同じ鍵で暗号化するブロック暗号と文字列またはビットごとに鍵を変えていくストリーム暗号に分けることができる。ブロック暗号としてはDES（Data Encryption Standard）やAES（Advanced Encryption Standard）などが良く知られている。ストリーム暗号には多表を用いるビジネル暗号や１回限りの使い捨ての鍵を用いるバーナム暗号等が知られている。画像データ全体の暗号化による著作権保護は上記の共通鍵暗号方式のうちのいずれかを用いることにより容易に実現できる。共通鍵暗号方式によれば、送信者と受信者で暗号鍵を共有し、送信者が暗号化した画像データを受信者がその鍵を用いて復号すればよい。
【０００３】
また、公開鍵暗号方式もよく利用されている。公開鍵暗号方式は平文を暗号化するときと復号するときとで異なる鍵を使う暗号アルゴリズムである。この方式では、暗号化用の鍵を公開し、復号用の鍵を自分だけが秘密に保持する。そのため、暗号化用の鍵を公開鍵、復号用の鍵を秘密鍵と呼ぶ。図１５を用いて説明すると、受信者Ｂは公開鍵と秘密鍵の鍵ペアを持ち、公開鍵は送信者のＡに渡す。ＡはＢの公開鍵で平文を暗号化してＢに送信する。ＢはＡから受信した暗号文を自分の秘密に保存した秘密鍵で復号する。公開鍵暗号アルゴリズムには整数の素因数分解の困難性（素因数分解問題）を利用したRSA、離散対数の困難性（離散対数問題）を利用したDSA、DHなどがある。
【０００４】
一方、これら鍵暗号方式を用いた暗号化は、例えば、文書データや画像データなどが解読されないために使われている。そして、これら鍵暗号方式を用いて暗号化された文書データや画像データを解読するには、共通鍵暗号方式なら、暗号化された際に使われた共通鍵で復号し、また、公開鍵暗号方式なら、暗号化された際に使われた公開鍵と対になる秘密鍵で復号する。（例えば、特許文献１参照。）
【０００５】
【特許文献１】米国特許第５４９９２９４号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の情報セキュリティ技術では、コンピュータに保存されている情報が暗号化されている場合、それらの暗号化されている情報は復号化されない限り検索することができない。このため、暗号化されている情報が大規模になるほど、復号化および検索の処理時間がかかるという問題がある。
【０００７】
そこで、本発明は、コンピュータに保存される情報の機密性を確保しつつ高速な情報検索を可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、例えば、マークアップ言語によって書かれた文書データの所定部分が所定の鍵を用いて暗号化され、この所定部分が暗号化された文書データがデータベースとして保持される。そして、入力された検索文字列が前記所定の鍵を用いて暗号化され、その後、暗号化された検索文字列を含む文書データが前記データベースから検索される。
【発明の効果】
【０００９】
本発明によれば、コンピュータに保存される情報の機密性を確保しつつ高速な情報検索が可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【００１１】
（実施形態１）
まず、本実施形態における情報検索対象のデータの形式としては、XML（Extensible Markup Language）文書を考える。XMLは、拡張可能なマークアップ言語で、１９８６年ＩＳＯで標化されたSGML（Standard Generalized Markup Language）をインターネットで活用しやすくするために、１９９８年２月にその基本仕様XML１.０がW3Cにて策定された。Webページ作成言語であるHTML（HyperText Markup Language）はタグが固定であり、表示に特化した構造となっているため、アプリケーションからそのタグ情報を基にプログラム処理したいという要求に対応できないという問題がある。これに対して、XMLでは利用者が自由にタグを定義でき、文書中の文字列に意味付けができる言語構造を持っており、プログラムで自在にXMLデータを情報処理できるというメリットがある。さらに、SGMLの持つ複雑な印刷系のオプションなどを省略して言語仕様を規定しており、理解しやすさ、使いやすさを向上させている点にもメリットがある。
【００１２】
図１は、XML文書の簡単な例である。これは、鈴木太郎という人が市場調査というテーマで作成した市場調査報告書である。ここでは、報告書を細かい情報単位で分け、その前後に情報の意味を表すタグをつけて、XML文書を作成した。この文書のキーワードになるのは「複写機」である。
【００１３】
この図１を例を用いて、XML文書を規定するために使用する用語を定義する。
【００１４】
（１）空要素タグ＆開始タグ＆終了タグ：
XML文書中で、要素の内容を持たない空の要素を示すタグを「空要素タグ」と呼ぶ。図１中、「＜client Id=“1”／＞」の部分が空要素タグである。
【００１５】
XML文書中で、空要素ではない要素の始まりを示すタグを、「開始タグ」と呼ぶ。図１中、「＜data＞」、「＜Title＞」、「＜KeyWord＞」などの部分が開始タグである。
【００１６】
XML文書中で、空要素ではない要素の終わりを示すタグを、「終了タグ」と呼ぶ。 図１中、「＜/data＞」、「＜/Title＞」、「＜/KeyWord＞」などの部分が終了タグである。
【００１７】
（２）要素：
「＜Title＞市場調査＜/Title＞」や「＜FamilyName＞鈴木＜/FamilyName＞」などのように開始タグから終了タグまでの部分を「要素」と呼ぶ。
【００１８】
（３）要素の内容：
「市場調査」または「鈴木」のように開始タグと終了タグで囲まれた中身を「要素の内容」と呼ぶ。
【００１９】
（４）XML文書：
XMLによって作成された文書やデータを「XML文書」を呼ぶ。
【００２０】
（５）子要素：
ある要素の中に直接含まれる要素を「子要素」という。例えば、Title要素はdata要素の子要素である。
【００２１】
入力データを転送、保存する場合、機密性を確保するために暗号化を行う必要がある。ここでは、XML暗号化を用いてデータの暗号化を行う。XML暗号化の特徴として、XML要素、XML要素の内容、任意の電子データ全体（XML文書も含む）を暗号化の対象とすることができる。XML暗号化では、復号側が復号に必要な全ての情報、暗号化アルゴリズム、鍵の情報、暗号化されたデータなどすべての情報をEncryptedData要素の中に格納する。図２はXML暗号文書の構成例を示したものである。図中、“？”は０回または１回、“＊”は０回以上出現することを意味する。
【００２２】
EncryptedData要素の子要素としては、
EncryptionMethod要素、
KeyInfo要素、
CipherData要素、
EncryptionProperties要素、
の４つがある。これらのうち、CipherDataのみ省略不可能である。
【００２３】
EncryptionMethod要素にはType属性に暗号アルゴリズムの情報、KeyInfo要素には暗号化に使用した鍵に関する情報を格納する。
【００２４】
暗号化されたデータはBase64エンコードされて、CipherData要素の子要素CipherValue要素に格納するか、または、CipherReference要素のURI属性で指定した場所に格納する。
【００２５】
EncryptionProperties要素にはEncryptedData要素の生成に関する追加情報（日付／タイムスタンプなど）を格納する。XML暗号化を用いて、キーワードになる「複写機」など、選択した部分や要素のみの暗号化が可能である。また、一つの文書で部分暗号化を行う場合、それぞれ暗号化に使う鍵を異ならせることもできる。
【００２６】
例えば、図１のdata要素のすべての子要素の内容（「鈴木」、「太郎」、「複写機」など）をそれぞれ、図２のXML暗号化構文を利用して暗号化した結果は図４のようになる。具体的には、図１の「鈴木」はEncryptedData要素に置き換えられ、暗号化されたデータ「A3sa98z3」はCipherData要素のCipherValue要素に格納される。なお、空要素タグ＜client Id=“１”／＞は図１のXML文書がID番号１を持つクライアントにより生成されていることを意味する。
【００２７】
ここで、用いる暗号方式としてTriple DESを考える。Triple DESはDESの安全性を高めるための暗号方式である。
【００２８】
DESの基本的な動作は、（１）データを６４ビット長のブロックに分割する、（２）各ブロックを５６ビット長の鍵で暗号化する、の２つであるが、ブロックと鍵の使い方によってECB、CBC、OFB、CFBの４つのモードがある。
【００２９】
DESの基本型と言えるモードがECB（Electronic Code Block）である。上で述べた基本動作がそのまま行われる。つまり、データをブロックに分割した後、各ブロックを秘密鍵で暗号化し、それらのブロックを元の順番でつなぎ合わせる。
【００３０】
CBC（Cipher Block Chaining）は、暗号化された前ブロックと、まだ暗号化されていない現在のブロックとのXOR（排他的論理和）をとり、これを秘密鍵で暗号化するモードである。“Chaining（連鎖）”という言葉が使われているように、各ブロックの暗号化が「連鎖的」に進められる。
【００３１】
一方、CFB（Cipher Feedback）は、前ブロックの暗号化結果の１部（ｍビット）が次ブロックのｍビットとXORをとる値としてフィードバックされるモードである。したがってCBCとCFBでは、ブロック内で発生したビット・エラーが、以降のブロックの暗号化に影響を与えることになる。
【００３２】
OFB（Output Feedback）は、ある初期値を第１ブロックとして暗号文を生成し、その暗号文（の１部）を次の暗号文の入力として用いると同時にその１部（ｍビット）を乱数として対応するｍビットのデータとXOR をとるモードである。この仕組みによりブロック内のビット・エラーが、ほかのブロックを暗号化する際に影響を及ぼさない。“Output Feedback（出力フィードバック）”という名前は、前ブロックで生成された暗号文出力を次ブロックで使用する暗号文出力を生成させるためのパラメータとして、フィードバックさせることに由来している。
【００３３】
上記各モードにおいて、ｍビットを適切に選択することにより、任意のビット長毎の暗号化を実現できる。
【００３４】
Triple DESは、DESのアルゴリズムを複数回適用することで暗号強度を強化した暗号方式である。TipleDESは２つの異なる共通鍵を用いて「１つ目の鍵で暗号化」→「２つ目の鍵で復号化」→「１つ目の鍵で暗号化」を行うE-D-E方式と、3つの異なる共通鍵を用いるE-E-Dがある。
【００３５】
図３は、本実施形態に係る情報検索システムの構成を示すブロック図である。本発明の情報検索装置は単体の情報処理装置によって実現が可能であるが、ここではネットワークを介して相互に接続されるクライアント・サーバ型の情報検索システムを示す。
【００３６】
本実施形態の情報検索システムは、図示の如く、サーバ５０にインターネット４０を介して複数のクライアント１０，２０，３０が接続されている。同図には３つのクライアントが接続されているが、クライアントの数は問題ではない。すなわち、クライアントは１つだけでもよいし、４つ以上接続された形態であってもよい。また、インターネット４０はネットワークの一形態であって、ＬＡＮ等の別の形態のネットワークであってもよい。
【００３７】
サーバおよびクライアントはそれぞれ、一般のパーソナルコンピュータで実現できるものであり、そのハードウェア構成は基本的に同様のものである。したがって、ここでは代表的にクライアント１０のハードウェア構成についてのみ説明することにする。なお、以下に示すハードウェア構成はパーソナルコンピュータとして概ね標準的なものであるが、本発明を実現するためにこれらの構成をすべて備える必要があるというものではない。
【００３８】
クライアント１０において、文書データの入力作業はマウス３１３やキーボード３１４を用いて行うことができ、あるいは、インターネット４０を介して外部から文書データを取得することも可能である。作成された文書データは、例えばハードディスク３０４に記憶される。なお、ユーザからの各種指示等は、マウス３１３およびキーボード３１４からの入力操作により行われる。クライアント１０の各構成要素はバス３０７によって接続され、相互に種々のデータの受け渡しが可能である。ＣＰＵ３０２は主記憶装置３０３にロードされたプログラムを実行し、各構成要素の動作を制御する。主記憶装置３０３は、ＣＰＵ３０２において行われる処理のために、一時的にプログラムや処理対象のXML文書を格納しておくメモリ（ＲＡＭ）である。ハードディスク装置（ＨＤＤ）３０４は、主記憶装置３０３等に転送されるプログラムやXML文書をあらかじめ格納したり、処理後の結果データを保存することのできる装置である。３１５はインターネット４０に接続するためのインタフェース（Ｉ／Ｆ）、３０８はXML文書等を印刷するプリンタ３１６と接続ためのプリンタＩ／Ｆである。ＣＤドライブ３０９は、外部記憶媒体の一つであるＣＤ（ＣＤ−Ｒ／ＣＤ−ＲＷ）に記憶されたデータを読み込んだり、あるいは書き出すことができる装置である。ＦＤＤ３１１は、ＣＤドライブ３０９と同様にＦＤからの読み込みや、ＦＤへの書き出しをすることができる装置である。ＤＶＤドライブ３１０は、ＦＤＤ３１１と同様に、ＤＶＤからの読み込みや、ＤＶＤへの書き出しをすることができる装置である。なお、ＣＤ、ＦＤ、ＤＶＤ等に文書編集用のプログラムが記憶されている場合には、これらプログラムをＨＤＤ３０４上にインストールし、必要に応じて主記憶装置３０３に転送されるようになっている。３１２は、マウス３１３やキーボード３１４からの入力指示を受け付けるために、これらと接続されるＩ／Ｆである。また、モニタ３０６は、文書の暗号化過程や文書検索結果を表示することのできる表示装置である。さらに、ビデオコントローラ３０５は、表示データをモニタ３０６に送信するための装置である。
【００３９】
図８は、本実施形態における情報検索システムの機能構成を示す図である。
【００４０】
図示のように、クライアント側で生成されたXML文書やテキストファイルはサーバ５０に転送され、タグ生成部８０６および文書暗号化部８０２の処理を経て、データベース８０４に保存される。このデータベース８０４への保存処理の詳細は、後ほど図５および図１０を用いて説明する。
【００４１】
各クライアントは、任意の検索文字列を含む文書を、サーバ５０のデータベース８０４から検索するよう要求することができる。クライアントで入力された検索文字列がサーバ５０に転送されると、サーバ５０はこれに応じ、検索文字列暗号化部８０７および検索処理部８０３の処理を実行して、データベース８０４から検索された文書を取り出す。取り出した文書は復号処理部８０８での復号処理を経て検索要求を出したクライアントに出力される。この検索処理の詳細は、のちほど図７を用いて説明する。
【００４２】
なお、文書暗号化部８０２、検索文字列暗号化部８０７、および復号処理部８０８で利用する共通鍵は鍵管理部８０９から獲得する。
【００４３】
各クライアントでは、上記したとおり、文書データの入力作業はマウス３１３やキーボード３１４を用いて行うことができ、あるいは、インターネット４０を介して外部から文書データを取得することも可能である。マウス３１３やキーボード３１４を用いて例えばXML文書を作成する際には、図６に示すようなグラフィカルユーザインタフェースによってその作成を支援することが好ましい。作成された文書データはインターネット４０を介してサーバ８０５に転送される。
【００４４】
次に、図５のフローチャートを用いて、クライアントで生成された文書データをサーバ５０のデータベース８０４に保存する処理を説明する。このフローチャートに対応するプログラムは例えば、サーバ５０におけるＨＤＤに記憶されており、主記憶装置にロードされてＣＰＵによって実行されるものである。
【００４５】
クライアントより転送されてきた文書データを受け取ると（ステップ５０１）、その文書をXML文書に変換する（ステップ５０２）。このステップ５０２のXML文書への変換処理については図１０のフローチャートを用いて説明する。
【００４６】
まず、入力したデータがXML文書かどうかを判断し（ステップ１００２）、XML文書ではない場合には、タグ生成部８０６により、図１に示したような所定のタグをつけてXML文書を生成する（ステップ１００３）ことが好ましい（ただし、この処理は本発明に必須のものではない。）。次に、入力されたXML文書またはステップ１００３で生成されたXML文書の要素を順番に読み取り（ステップ１００４）、暗号化対象の要素かどうかを判断する（ステップ１００５）。暗号化対象の要素には特定の属性を付ける（ステップ１００６）。例えば、図９に示すように、FamilyName要素、LastName要素、およびKeyWord要素にそれぞれ“EncObject”という属性名をつけることで、暗号化部分を明記することができる。EncObject属性値は暗号化に使う情報、例えば暗号鍵の名前を規定しても良い。全ての要素の検出が終わるまで、ステップ１００４〜１００６の処理を繰り返す（ステップ１００７）。
【００４７】
なお、上記ステップ１００６では、暗号化対象を決定するために暗号化対象になる要素に特定の属性をつけるようにしたが、他にも暗号対象の上位に特定の要素を付けることによっても暗号化対象を決定することができる。さらに、名前空間を与えることにより、正確に暗号化対象を探すことができる。
【００４８】
説明を図５のフローチャートに戻す。XML文書への変換を終えると、XML文書データの暗号化に使う共通鍵を鍵管理部８０９より獲得する（ステップ５０３）。続いて、XML文書から要素を順番に取り（ステップ５０４）、特定の属性がついている要素を検出する（ステップ５０５）。例えば、ステップ１００６によって付与された属性EncObjectを検出する。特定の属性（EncObject）がついている要素に対しては、文書暗号化部８０２により、検出された要素の内容を共通鍵で、それぞれXML部分暗号化を実行する（ステップ５０６）。この部分暗号化は前述したXML暗号化を用いて実現する。なお、暗号方式はTripleDES方式などを用いる。
【００４９】
次に、上記特定の属性（EncObject）を取り除く（ステップ５０７）。これは同一形式のXML文書でデータを生成するためである。そして、当該要素がXML文書の末尾かを判断し（ステップ５０８）、最後の要素の場合には、以上の処理によって暗号化されたXML文書をデータベース８０４に格納し（ステップ５０９）、この処理を終了する。一方、まだ終了要素ではない場合にはステップ５０４に戻って処理を繰り返す。
【００５０】
次に、図７のフローチャートを用いて、サーバ５０における文字列検索処理を説明する。この検索処理の検索対象は、上記した図５のフローに従いデータベース８０４に登録された部分暗号化されたXML文書である。
【００５１】
まず、クライアントから検索文字列を受信すると（ステップ７０２）、共通鍵を鍵管理部８０９より獲得する（ステップ７０３）。この共通鍵はデータベース８０４への登録処理における暗号化（ステップ５０６）で使用された鍵である。検索文字列は、検索文字列暗号化部８０７により、この獲得した鍵を用いて暗号化される（ステップ７０４）。そして、検索処理部８０３により、データベース８０４に保存されている全ての要素内容を検索する（ステップ７０７）。
【００５２】
ここで、要素型などの補助情報を持っている場合には（ステップ７０５）、その情報を検索条件として付加し（ステップ７０６）、これにより高速な検索を行なうことも可能である。
【００５３】
検索された部分暗号化文書は、復号処理部８０８により、ステップ７０３で獲得した共通鍵を用いて復号され（ステップ７０８）、検索要求元のクライアントに転送される（ステップ７０９）。
【００５４】
以上説明した実施形態１によれば、各文書は、その文書の特徴的な情報を含むであろう所定の部分が所定の鍵によって暗号化されたうえでデータベースに保存されるので、文書の機密性は確保される。そして、データベースの検索要求があった場合、その検索文字列が上記所定の鍵により暗号化され、この暗号化された検索文字列がデータベースから検索される。このため、従来のように検索処理のためにデータベース内の文書をすべて復号する必要がなくなり、検索を高速化することができる。
【００５５】
（実施形態２）
上述の実施形態１では、クライアント側で生成された文書データがそのままサーバに転送され、サーバにおいて文書データの暗号化が行われていた。この場合には、クライアントからサーバに転送する過程における文書データのセキュリティが保証されないという問題がある。そこで、本実施形態では、文書データの暗号化をクライアント側で行い、その後にサーバに転送するようにする。これにより、文書データの安全な転送およびデータベースの保存が確保される。
【００５６】
図１１は、本実施形態における情報検索システムの機能構成を示す図である。図示のように、クライアント１１０１がタグ生成部１１０７および文書暗号化部１１０８を有する構成である。各クライアントは必要に応じて各処理部を備えており、例えば、クライアント１１０２はさらに、検索文字列暗号化部や復号処理部も備えている。一方、クライアント１１０３は、検索文字列暗号化部や復号処理部を備えているが、タグ生成部や文書暗号化部は備えていない。サーバ１１０４は、図８に示したサーバ５０とは対照的に、タグ生成部、文書暗号化部、検索文字列暗号化部、復号処理部を備えていない。
【００５７】
また、実施形態１におけるサーバは鍵管理部を有していたが、本実施形態では各クライアントの鍵を一元管理する鍵管理サーバ１１１２を別途設けるシステム構成とした。鍵管理サーバは、クライアントＩＤとクライアントの共通鍵をあらかじめ登録してこれらを管理する。したがって、クライアントはこの鍵管理サーバ１１１２から共通鍵を取得して文書データの暗号化、検索文字列の暗号化、復号処理を行うことになる。同様に、サーバ１１０４における検索処理部１１０６も鍵管理サーバ１１１２から共通鍵を取得して検索処理を行うことになる。
【００５８】
次に、図１２のフローチャートを用いて、クライアントによる文書データのサーバへの転送に係る処理を説明する。この処理は、実施形態１におけるサーバ５０の処理（図５）と類似のものである。なお、このフローチャートに対応するプログラムは例えば、クライアント側のＨＤＤに記憶されており、主記憶装置にロードされてＣＰＵによって実行されるものである。
【００５９】
クライアントにおいて、文書データを作成またはネットワーク等を介して受信すると（ステップ１２０１）、その文書をXML文書に変換する（ステップ１２０２）。このステップ１２０２のXML文書への変換処理については実施形態１のステップ５０２（図１０のフローチャート）と同様に行うことができる。
【００６０】
XML文書への変換を終えると、XML文書データの暗号化に使う共通鍵を鍵管理サーバ１１１２より獲得する（ステップ１２０３）。続いて、XML文書から要素を順番に取り（ステップ１２０４）、特定の属性がついている要素を検出する（ステップ１２０５）。例えば、ステップ１００６によって付与された属性EncObjectを検出する。特定の属性（EncObject）がついている要素に対しては、文書暗号化部１１０８により、検出された要素の内容を共通鍵で、それぞれXML部分暗号化を実行する（ステップ１２０６）。この部分暗号化は前述したXML暗号化を用いて実現する。なお、暗号方式はTripleDES方式などを用いる。
【００６１】
次に、上記特定の属性（EncObject）を取り除く（ステップ１２０７）。これは同一形式のXML文書でデータを生成するためである。そして、当該要素がXML文書の末尾かを判断し（ステップ１２０８）、最後の要素の場合には、以上の処理によって暗号化されたXML文書をサーバ１１０４に転送し（ステップ１２０９）、この処理を終了する。一方、まだ終了要素ではない場合にはステップ１２０４に戻って処理を繰り返す。
【００６２】
サーバ１１０４は、以上の処理によって部分暗号化されたXML文書が転送されてくると、保存部１１０５の処理により、これをそのままデータベース１１０９に保存（登録）する。
【００６３】
次に、本実施形態における検索処理について説明する。ここでは、クライアント１１０３がサーバ１１０４に対して検索要求を出す場合を想定する。
【００６４】
クライアント１１０３は、ユーザにより入力された検索文字列を、自身が有する検索文字列暗号化部１１１０の処理により暗号化し、それを鍵管理サーバ１１１２に転送する。鍵管理サーバ１１１２は、暗号化された検索文字列を復号し、各クライアントの鍵で暗号化したうえでサーバ１１０４に転送する。サーバ１１０４は、検索処理部１１０６の処理により暗号化された検索文字列を含む文書をデータベース１１０９から検索し、検索によりヒットした部分暗号化文書を鍵管理サーバ１１１２に転送する。鍵管理サーバ１１１２は、これに応じて部分暗号化文書を復号し、クライアント１１０３の鍵で暗号化して、これをクライアント１１０３に転送する。図１３および図３０のフローチャートを用いて、以上の処理をより詳しく説明する。図１３は、クライアント１１０３における処理、図３０は鍵管理サーバ１１１２における処理を示している。
【００６５】
図１３に示したクライアント１１０３における処理は、図７に示したサーバ５０における処理と一部と類似している。まず、検索文字列を入力すると（ステップ１３０１）、共通鍵を鍵管理サーバ１１１２より獲得する（ステップ１３０２）。この共通鍵はデータベース１１０９への登録処理における暗号化（ステップ１２０６）で使用された鍵である。検索文字列は、検索文字列暗号化部１１１０により、この獲得した鍵を用いて暗号化される（ステップ１３０３）。そして、この暗号化された検索文字列を、クライアント１１０３のＩＤ（ネットワークＩＤ）とともに鍵管理サーバ１１１２に転送する（ステップ１３０６）ここで、要素型などの補助情報を持っている場合には（ステップ１３０４）、その情報を検索条件として付加し（ステップ１３０５）、これにより高速な検索を行わせることも可能である。
【００６６】
次に、図３０の鍵管理サーバ１１１２における処理を説明する。鍵管理サーバ１１１２は、クライアントより暗号化された検索文字列を受信すると（ステップ３００１）、同時に送信されてきたクライアントのＩＤを用いて、登録されているクライアントの共通鍵を獲得し（ステップ３００２）、その共通鍵を用いて暗号化された検索文字列を復号する（ステップ３００３）。次に、各クライアントの共通鍵を獲得し（ステップ３００４）、それらの共通鍵を用いて、復号した検索文字列を暗号化する（ステップ３００５）。そして、各クライアントの共通鍵別に暗号化された複数の検索文字列をサーバ１１０４に転送する（ステップ３００６）。
【００６７】
図２０は、上記ステップ３００６に応じて行われるサーバ１１０４における検索処理を示すフローチャートである。サーバ（１１０４）は、上記ステップ３００６によって転送されてきた複数の暗号化された検索文字列を受信し（ステップ２００１）、これらの暗号化された検索文字列を含む文書をデータベース１１０９から検索する（ステップ２００２）。そして、この検索でヒットした部分暗号化文書を鍵管理サーバ１１１２に転送する（ステップ２００３）。
【００６８】
図３１は、上記ステップ２００３に応じて行われる鍵管理サーバ１１１２における制御処理を示すフローチャートである。鍵管理サーバ１１１２は、上記ステップ２００３によって転送されてきた部分暗号化文書を受信すると（ステップ３１０１）、部分暗号化文書のclient要素のID属性により、どのクライアントの共通鍵で暗号化されているか判断し、登録されているそのクライアントの共通鍵を獲得し（ステップ３１０２）、その共通鍵を用いて部分暗号化文書を復号する（ステップ３１０３）。次に、送信先クライアント（検索要求元のクライアント）の共通鍵を獲得し（ステップ３１０４）、その共通鍵を用いて、復号した文書を暗号化する（ステップ３１０５）。そして、この暗号化された部分暗号化文書をクライアントに転送する（ステップ３１０６）。
【００６９】
図２１は、クライアント１１０３の復号処理部１１１１による復号処理を示すフローチャートである。クライアント１１０３は、検索された部分暗号化文書を受信すると（ステップ２１０１）、自分の共通鍵を獲得して（ステップ２１０２）、部分暗号化文書を復号する（ステップ２１０３）。
【００７０】
なお、以上の検索処理の例では、サーバ１１０４は検索された部分暗号化文書を鍵管理サーバ１１１２に送り（図２０）、鍵管理サーバ１１１２がそれをクライアントに転送するようにしたが（図３１）、サーバ１１０４が直接クライアントに検索された部分暗号化文書を転送するようにしてもよい。この場合には、ステップ２１０２における鍵の獲得は鍵管理サーバ１１１２への問い合わせ処理となる。
【００７１】
（実施形態３）
上述の実施形態２では、各クライアントの鍵を一元管理する鍵管理サーバ１１１２を別途設けるシステム構成とした。しかしこの場合には、鍵の管理を鍵管理サーバに依存することになり鍵の管理が複雑になるという欠点がある。本実施形態では各クライアントとサーバとでそれぞれ違う鍵で暗号化して送信することによりデータの安全性を高める。
【００７２】
図１９は、本実施形態における情報検索システムの機能構成を示す図である。実施形態２に係る図１１と対照すると分かるように、本システムは鍵管理サーバを設けないかわりに、クライアントおよびサーバが鍵生成管理部を有する構成である。各クライアント１９０１および１９０２とサーバ１９０３はそれぞれ、公開鍵と秘密鍵の鍵ペアを持つ。クライアントの公開鍵はサーバ１９０３の鍵生成管理部１９１２に保存される。また、サーバ１９０３の公開鍵は各クライアントの鍵生成管理部１９１３および１９１４に保存される。
【００７３】
図１６は、クライアント１９０１で生成した文書データがサーバ１９０３のデータベース１９０９に登録されるまでの暗号化過程を表したものである。以下ではこの図１６と、図２２および図２３のフローチャートを用いて、クライアント１９０１とサーバ１９０３の動作をそれぞれ説明する。
【００７４】
図２２は、本実施形態におけるクライアント１９０１による文書データのサーバ１９０３への転送に係る処理を示すフローチャートである。
【００７５】
クライアント１９０１において、文書データを作成またはネットワーク等を介して受信すると（ステップ２２０１）、その文書をXML文書に変換する（ステップ２２０２）。このステップ２２０２のXML文書への変換処理については実施形態１のステップ５０２（図１０のフローチャート）と同様に行うことができる。
【００７６】
XML文書への変換を終えると、XML文書データの暗号化に使う共通鍵を獲得する（ステップ２２０３）。本実施形態で使用する共通鍵は毎回ランダムに生成される共通鍵（Ran_Key1、図１６参照）であり、これは鍵生成管理部１９１３で生成される。
【００７７】
続いて、XML文書から要素を順番に取り（ステップ２２０４）、特定の属性がついている要素を検出する（ステップ２２０５）。例えば、実施形態１，２と同様に、ステップ１００６によって付与された属性EncObjectを検出する。特定の属性（EncObject）がついている要素に対しては、文書暗号化部１９０８により、検出された要素の内容を共通鍵で、それぞれXML部分暗号化を実行する（ステップ２２０６）。この部分暗号化は前述したXML暗号化を用いて実現する。なお、暗号方式はTripleDES方式などを用いる。
【００７８】
次に、上記特定の属性（EncObject）を取り除く（ステップ２２０７）。これは同一形式のXML文書でデータを生成するためである。そして、当該要素がXML文書の末尾かを判断する（ステップ２２０８）。最後の要素であった場合には、鍵生成管理部１９１３によりサーバ１９０３の公開鍵を獲得し（ステップ２２０９）、そのサーバの公開鍵を用いてRan_Key1をXML暗号化する（ステップ２２１０）。そして、以上の処理によって暗号化されたXML文書をサーバ１９０３に転送し（ステップ２２１１）、この処理を終了する。一方、まだ終了要素ではない場合にはステップ１２０４に戻って処理を繰り返す。なお、Ran_Key1の暗号化情報は、部分暗号化文書の中に埋め込んでサーバに転送しても良いし、独自でサーバに転送しても良い。あるいは、Ran_Key1については暗号化せずにそのままサーバに転送してもよい。
【００７９】
図２３は、サーバ１９０３の、上記ステップ２２１１によりクライアントから転送されてきた部分暗号化文書のデータベースへの登録処理を示すフローチャートである。
【００８０】
サーバ１９０３は、Ran_Key1の暗号化情報を受信すると（ステップ２３０１）、サーバの秘密鍵を鍵生成管理部１９１２より獲得し（ステップ２３０２）、そのサーバの秘密鍵を用いて、Ran_Key1の暗号化情報を復号する（ステップ２３０３）。次に、復号されたRan_Key1を用いて部分暗号化文書を復号する（ステップ２３０４）。さらに、サーバの共通鍵（Ser_Key）を鍵生成管理部１９１２より獲得し（ステップ２３０５）、そのサーバの共通鍵（Ser_Key）を用いて、復号した部分を暗号化し（ステップ２３０６）、これをデータベース１９０９に保存する（ステップ２３０７）。
【００８１】
図１７は、クライアント１９０２から検索文字列を入力して、サーバ１９０３が検索を行うまでの暗号化過程を表したものである。以下ではこの図１７と、図２４および図２５のフローチャートを用いて、クライアント１９０２とサーバ１９０３の動作をそれぞれ説明する。
【００８２】
図２４は、本実施形態の検索処理に係るクライアント１９０２での処理内容を示すフローチャートである。この処理は実施形態２で説明した図１３の処理と類似の処理である。ただし、実施形態２では、クライアント固有の共通鍵を用いて暗号化するのに対し、本実施形態で使用する共通鍵は毎回ランダムに生成される共通鍵（Ran_Key2）である（ステップ２４０２，２４０３）。また、Ran_Key２は鍵生成管理部１９１４に保存されているサーバの公開鍵で暗号化する（ステップ２４０６，２４０７）。なお、Ran_Key2の暗号化情報は部分暗号化文書の中に埋め込んでサーバに転送しても良いし、独立にサーバに転送されても良い。あるいは、Ran_Key2は暗号化せずにそのままサーバに転送してもよい。
【００８３】
図２５は、サーバ１９０３による検索処理を示すフローチャートである。
【００８４】
サーバ１９０３はまず、Ran_Key2の暗号化情報と暗号化された検索文字列を受信する（ステップ２５０１）。次に、サーバの秘密鍵を鍵生成管理部１９１２より獲得し（ステップ２５０２）、そのサーバの秘密鍵を用いてRan_Key2を復号する（ステップ２５０３）。続いて、そのRan_Key2を用いて、暗号化された検索文字列を復号する（ステップ２５０４）。さらに、サーバの共通鍵（Ser_Key）を鍵生成管理部１９１２より獲得し（ステップ２５０５）、そのサーバの共通鍵（Ser_Key）を用いて、復号した検索文字列を暗号化する（ステップ２５０６）。そして、この暗号化された検索文字列を含む文書をデータベースから検索する（ステップ２５０７）。
【００８５】
図１８は、上記ステップ２５０７によりサーバ１９０３で検索された部分暗号化文書をクライアント１９０２で復号する際の復号過程を表したものである。以下ではこの図１８と、図２６および図２７のフローチャートを用いて、サーバ１９０３およびクライアント１９０２の動作をそれぞれ説明する。
【００８６】
図２６は、サーバ１９０３による検索した部分暗号化文書に対する処理を示すフローチャートである。
【００８７】
サーバ１９０３はまず、サーバの共通鍵（Ser_Key）を鍵生成管理部１９１２より獲得し（ステップ２６０２）、そのサーバの共通鍵（Ser_Key）を用いて、検索された部分暗号化文書の暗号化された部分を復号する（ステップ２６０３）。次に、復号した部分を、ランダムに生成された鍵（Ran_Key3）を鍵生成管理部１９１２より獲得し（ステップ２６０４）、その鍵（Ran_Key3）を用いて、復号した文書を暗号化する（ステップ２６０５）。次に、クライアント１９０２の公開鍵を鍵生成管理部１９１２より獲得し（ステップ２６０６）、そのクライアント１９０２の公開鍵を用いて、ステップ２６０４で獲得した鍵（Ran_Key3）を暗号化する（ステップ２６０７）。そして、ステップ２６０５で暗号化された部分暗号化文書およびステップ２６０７で暗号化されたRan_Key3の暗号化情報を、クライアント１９０２に転送する（ステップ２６０８）。
【００８８】
なお、Ran_Key3を生成せず、上記した検索処理で利用したRan_Key2を用いて復号した部分を暗号化しても良い。また、安全性は低くなるが、検索された部分暗号化文書を、クライアント１９０２の公開鍵で暗号化されたSer_Keyの暗号化情報と共にクライアント１９０２に転送しても良い。
【００８９】
図２７は、クライアント１９０２による復号処理を示すフローチャートである。
【００９０】
ランダムに生成された鍵Ran_Key3の暗号化情報および部分暗号化文書をサーバ１９０３より受信すると（ステップ２７０１）、クライアント１９０２の秘密鍵を鍵生成管理部１９１４より獲得し（ステップ２７０２）、そのクライアント１９０２の秘密鍵を用いて、受信した暗号化情報を復号する（ステップ２７０３）。これにより、ランダムに生成された鍵Ran_Key3が復号される。続いて、復号したRan_Key3を用いて、受信した部分暗号化文書を復号する（ステップ２７０４）。
【００９１】
（実施形態４）
上述の実施形態３では、サーバが送信された部分暗号化文書を復号して、サーバの共通鍵で暗号化したが、この場合にはデータの処理時間が長くなるという欠点がある。そこで本実施形態では、サーバが暗号化して送信された部分暗号化文書をそのまま保存し、クライアント毎の鍵をサーバ内に管理して、検索文字列をその鍵で暗号化する。
【００９２】
図２８は、本実施形態における情報検索システムの機能構成を示す図である。サーバ２８０３は、保存処理部２８０４により、クライアント２８０１から転送された部分暗号化文書をデータベース２８０５にそのまま保存する。この点は、実施形態３に係る図１９では、部分暗号化文書が復号処理部１９０４および暗号化処理部１９０５の処理を介してデータベース１９０９に保存される点と対照的である。サーバ２８０３は、検索文字列によって部分暗号化文書を検索し、クライアント２８０２に転送する。
【００９３】
図３２は、本実施形態におけるクライアント２８０１による文書データのサーバ２８０３への転送に係る処理を示すフローチャートである。これは実施形態３に係る図２２とほぼ共通の処理である。ただし、実施形態３ではランダムで生成した鍵で文書データを暗号化したが（ステップ２２０３，２２０６）、本実施形態ではクライアント２８０１の共通鍵で暗号化する（ステップ３２０３，３２０６）。クライアント２８０１のID情報は文書データ中のclient要素のId属性に保存する。なお、クライアント２８０１の共通鍵は鍵管理部２８１０に保存されている。
【００９４】
図３６は、サーバ２８０３による受信データの保存処理を示すフローチャートである。サーバ２８０３は、部分暗号化文書を受信すると（ステップ３６０１）、上記のとおり、そのままデータベース２８０５に保存する（ステップ３６０２）。次に、上記ステップ３２１０で暗号化されたうえで転送されてきたクライアント２８０１の共通鍵を、サーバ２８０３の秘密鍵で復号し（ステップ３６０３）、これを鍵管理部２８０７に保存する（ステップ３６０４）。
【００９５】
図３３は、本実施形態の検索処理に係るクライアント２８０２での処理内容を示すフローチャートである。この処理は実施形態３で説明した図２４の処理と類似の処理である。ただし、実施形態３（図２４）では、クライアントは検索文字列をランダムに生成された鍵で暗号化する（ステップ２４０２，２４０３）のに対し、本実施形態では、クライアント２８０２は入力された検索文字列をクライアント２８０２の共通鍵で暗号化する（ステップ３３０２，３３０３）。
【００９６】
図２９は、サーバ２８０３による検索処理を示すフローチャートである。この処理は実施形態３で説明した図２５の処理と類似の処理である。ただし、実施形態３（図２５）ではいったん復号された検索文字列をサーバの共通鍵で暗号化した（ステップ２５０５，２５０６）のに対し、本実施形態ではいったん復号した検索文字列を各クライアントの共通鍵で暗号化する（ステップ２９０５，２９０６）。なお、各クライアントの共通鍵は鍵管理部２８０７に保存されている。
【００９７】
図３４は、サーバ２８０３による検索した部分暗号化文書に対する処理を示すフローチャートである。この処理は実施形態３で説明した図２６の処理と類似の処理である。ただし、実施形態３（図２６）では検索された部分暗号化文書を復号する際にはサーバの共通鍵で復号したが（ステップ２６０２，２６０３）、本実施形態では、クライアントの共通鍵で復号する（ステップ３４０２，３４０３）。なお、クライアントの共通鍵は鍵管理部２８０７に保存されている。また、本実施形態では、検索された部分暗号化文書のclient要素を用いて、どのクライアントの共通鍵を利用するかを識別する。
【００９８】
図３５は、クライアント２８０３による復号処理を示すフローチャートである。この処理は実施形態３で説明した図２７の処理と類似の処理である。ただし、本実施形態では、クライアントの共通鍵を用いて部分暗号化文書を復号することになる（ステップ３５０２，３５０３）。
【００９９】
（他の実施形態）
上述の各実施形態では、暗号方式としてTriple DESを用いた例を説明したが、本発明ではTripleDESに限らずAESやMISTY，Camelliaなどその他の共通鍵暗号化を用いることでできるのは明らかである。この場合、本発明の暗号化・復号手法の強度は用いた暗号方式に応じた安全性を持つ。
【０１００】
また、暗号化モードもCFBやOFBに限らず任意長のデータを暗号化できる手法であるかぎり、本発明は特定の暗号化モードに限定されるものではない。
【０１０１】
また、実施形態２と実施形態３では、検索文字列をクライアントからサーバに転送する際、安全性のため暗号化して転送したが、必要がなければ暗号化せずにそのまま転送しても良い。また、閉じたシステムにおいて、いつも決まった部分のみ暗号化するような場合には、暗号化する部分を特定しなくても良いであろう。
【０１０２】
以上、本発明の実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０１０３】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成される。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。
【０１０４】
従って、本発明の機能処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体およびそのプログラムを格納した記憶媒体も本発明を構成することになる。つまり、本発明の特許請求の範囲には、本発明の機能処理を実現するためのコンピュータプログラム自体、およびそのプログラムを格納した記憶媒体も含まれる。
【０１０５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１０６】
プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などがある。
【０１０７】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、そのホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【０１０８】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１０９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１０】
さらに、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１１１】
【図１】XML文書の一例を示す図である。
【図２】XML暗号文書の構成例を示す図である。
【図３】本発明の実施形態に係る情報検索システムの構成を示すブロック図である。
【図４】図２のXML暗号化構文を利用して暗号化した結果の一例を示す図である。
【図５】実施形態１における、クライアントから転送された文書をデータベース８０４に保存する処理を示すフローチャートである。
【図６】クライアントにおいてXML文書を作成する際に使用されるグラフィカルユーザインタフェースの一例を示す図である。
【図７】実施形態１における文字列検索処理を示すフローチャートである。
【図８】実施形態１における情報検索システムの機能構成を示す図である。
【図９】暗号化対象に付される特定の属性の一例を示す図である。
【図１０】実施形態１におけるXML文書への変換処理を示すフローチャートである。
【図１１】実施形態２における情報検索システムの機能構成を示す図である。
【図１２】実施形態２におけるクライアントよる文書データのサーバへの転送に係る処理を示すフローチャートである。
【図１３】実施形態２の検索処理に係るクライアントでの処理内容を示すフローチャートである。
【図１４】共通鍵暗号方式を説明する図である。
【図１５】公開鍵暗号方式を説明する図である。
【図１６】実施形態３における文書データをデータベースに登録する際の暗号化過程を説明する図である。
【図１７】実施形態３における検索文字列が入力された際の暗号化過程を説明する図である。
【図１８】実施形態３における検索された暗号化文書の復号過程を説明する図である。
【図１９】実施形態３における情報検索システムの機能構成を示す図である。
【図２０】実施形態２におけるサーバによる検索処理を示すフローチャートである。
【図２１】実施形態２におけるクライアントによる復号処理を示すフローチャートである。
【図２２】実施形態３におけるクライアントによる文書データのサーバへの転送に係る処理を示すフローチャートである。
【図２３】実施形態３におけるサーバによるデータベースへの登録処理を示すフローチャートである。
【図２４】実施形態３の検索処理に係るクライアントでの処理内容を示すフローチャートである。
【図２５】実施形態３におけるサーバによる検索処理を示すフローチャートである。
【図２６】実施形態３におけるサーバによる検索処理後の後処理を示すフローチャートである。
【図２７】実施形態３におけるクライアントによる復号処理を示すフローチャートである。
【図２８】実施形態４における情報検索システムの機能構成を示す図である。
【図２９】実施形態４におけるサーバによる検索処理を示すフローチャートである。
【図３０】実施形態２の文字列検索処理に係る鍵管理サーバの処理内容を示すフローチャートである。
【図３１】実施形態２の文字列検索処理に係る鍵管理サーバの処理内容を示すフローチャートである。
【図３２】実施形態４におけるクライアントによる文書データのサーバへの転送に係る処理を示すフローチャートである。
【図３３】実施形態４の検索処理に係るクライアントでの処理内容を示すフローチャートである。
【図３４】実施形態４におけるサーバによる検索処理後の後処理を示すフローチャートである。
【図３５】実施形態４におけるクライアントによる復号処理を示すフローチャートである。
【図３６】実施形態４におけるサーバによる受信データの保存処理を示すフローチャートである。
【図１】
2005284915.tif 000003
【図２】
2005284915.tif 000004
【図３】
2005284915.tif 000005
【図４】
2005284915.tif 000006
【図５】
2005284915.tif 000007
【図６】
2005284915.tif 000008
【図７】
2005284915.tif 000009
【図８】
2005284915.tif 000010
【図９】
2005284915.tif 000011
【図１０】
2005284915.tif 000012
【図１１】
2005284915.tif 000013
【図１２】
2005284915.tif 000014
【図１３】
2005284915.tif 000015
【図１４】
2005284915.tif 000016
【図１５】
2005284915.tif 000017
【図１６】
2005284915.tif 000018
【図１７】
2005284915.tif 000019
【図１８】
2005284915.tif 000020
【図１９】
2005284915.tif 000021
【図２０】
2005284915.tif 000022
【図２１】
2005284915.tif 000023
【図２２】
2005284915.tif 000024
【図２３】
2005284915.tif 000025
【図２４】
2005284915.tif 000026
【図２５】
2005284915.tif 000027
【図２６】
2005284915.tif 000028
【図２７】
2005284915.tif 000029
【図２８】
2005284915.tif 000030
【図２９】
2005284915.tif 000031
【図３０】
2005284915.tif 000032
【図３１】
2005284915.tif 000033
【図３２】
2005284915.tif 000034
【図３３】
2005284915.tif 000035
【図３４】
2005284915.tif 000036
【図３５】
2005284915.tif 000037
【図３６】
2005284915.tif 000038