(57)【特許請求の範囲】
【請求項１】
複数の階層に分割する階層化が可能な所定の表現形式で表現された登録用キーワードを入力し、前記階層化のルールを定めた階層化ルールに基づいて前記登録用キーワードを階層ごとの要素に分割する登録側分割部と、
前記登録側分割部によって分割されたそれぞれの要素である登録用階層要素に、所属する階層を示す位置情報を付加する登録側位置情報付加部と、
前記登録側位置情報付加部によって前記位置情報が付加されたそれぞれの前記登録用階層要素を、所定のデータ変換規則に従ってデータ変換する登録側データ変換部と、
前記登録用キーワードの前記表現形式で表現された複数の検索用キーワードを含み、かつ、前記複数の検索用キーワードに基づき検索対象範囲を指定する第１の検索条件を入力し、入力された前記第１の検索条件を、前記第１の検索条件の前記検索対象範囲と同一の検索対象範囲を指定する第２の検索条件であって、前記登録用キーワードの前記表現形式で表現され、かつ、ドントケア表現の可能な特有階層を保有する検索用キーワードである少なくとも一つの特有階層保有検索用キーワードを含む第２の検索条件に変更可能かどうかを判定し、前記第１の検索条件を前記第２の検索条件に変更可能と判定すると前記第１の検索条件を前記第２の検索条件に変更し、変更された前記第２の検索条件を出力し、変更できないと判定すると前記第１の検索条件を出力する検索側キーワード生成部と、
前記検索側キーワード生成部によって出力された前記第１の検索条件と前記第２の検索条件とのいずれかの前記検索条件を入力し、入力された前記検索条件に含まれる前記検索用キーワードの全てを前記登録側分割部の使用する前記階層化ルールに基づいて複数の要素に分割する検索側分割部と、
前記検索側分割部によって分割されたそれぞれの要素である検索用階層要素に、前記位置情報を付加する検索側位置情報付加部と、
前記検索側位置情報付加部によって前記位置情報が付加されたそれぞれの前記検索用階層要素を、前記登録側データ変換部の使用する前記データ変換規則に従ってデータ変換する検索側データ変換部と
を備えたことを特徴とするキーワード変換装置。
【請求項２】
前記登録側位置情報付加部は、
前記登録用キーワードの属性を示す属性情報を入力し、前記属性情報をそれぞれの前記登録用階層要素に付加し、
前記登録側データ変換部は、
前記登録側位置情報付加部によって前記位置情報と前記属性情報とが付加されたそれぞれの前記登録用階層要素を、前記データ変換規則に従ってデータ変換することを特徴とする請求項１記載のキーワード変換装置。
【請求項３】
前記検索側キーワード生成部は、
前記第２の検索条件が複数の前記検索用キーワードを含む場合に、前記第２の検索条件において、それぞれの前記検索用キーワードどうしを論理演算で結合し、
前記検索側分割部は、
前記第２の検索条件を入力すると、前記論理演算の関係を維持しつつ、前記第２の検索条件に含まれる前記検索用キーワードの全てを前記階層化ルールに基づいて複数の前記検索用階層要素に分割することを特徴とする請求項１または２のいずれかに記載のキーワード変換装置。
【請求項４】
複数の階層に分割する階層化が可能な所定の表現形式で表現された複数の検索用キーワードを含み、かつ、前記複数の検索用キーワードに基づき検索対象範囲を指定する第１の検索条件を入力し、入力された前記第１の検索条件を、前記第１の検索条件の前記検索対象範囲と同一の検索対象範囲を指定する第２の検索条件であって、入力された前記検索用キーワードの前記表現形式で表現され、かつ、ドントケア表現の可能な特有階層を保有する検索用キーワードである少なくとも一つの特有階層保有検索用キーワードを含む第２の検索条件に変更可能かどうかを判定し、前記第１の検索条件を前記第２の検索条件に変更可能と判定すると前記第１の検索条件を前記第２の検索条件に変更し、変更された前記第２の検索条件を出力し、変更できないと判定すると前記第１の検索条件を出力する検索側キーワード生成部と、
前記検索側キーワード生成部によって出力された前記第１の検索条件と前記第２の検索条件とのいずれかの前記検索条件を入力し、入力された前記検索条件に含まれる前記検索用キーワードの全てを前記階層化のルールを定めた階層化ルールに基づいて複数の要素に分割する検索側分割部と、
前記検索側分割部によって分割されたそれぞれの要素である検索用階層要素に、所属する階層を示す位置情報を付加する検索側位置情報付加部と、
前記検索側位置情報付加部によって前記位置情報が付加されたそれぞれの前記検索用階層要素を、所定のデータ変換規則に従ってデータ変換する検索側データ変換部と
を備えたことを特徴とするキーワード変換装置。
【請求項５】
コンピュータに、
複数の階層に分割する階層化が可能な所定の表現形式で表現された複数の検索用キーワードを含み、かつ、前記複数の検索用キーワードに基づき検索対象範囲を指定する第１の検索条件を入力し、入力された前記第１の検索条件を、前記第１の検索条件の前記検索対象範囲と同一の検索対象範囲を指定する第２の検索条件であって、入力された前記検索用キーワードの前記表現形式で表現され、かつ、ドントケア表現の可能な特有階層を保有する検索用キーワードである少なくとも一つの特有階層保有検索用キーワードを含む第２の検索条件に変更可能かどうかを判定し、前記第１の検索条件を前記第２の検索条件に変更可能と判定すると前記第１の検索条件を前記第２の検索条件に変更し、変更された前記第２の検索条件を出力し、変更できないと判定すると前記第１の検索条件を出力するステップ、
出力された前記第１の検索条件と前記第２の検索条件とのいずれかの前記検索条件を入力し、入力された前記検索条件に含まれる前記検索用キーワードの全てを前記階層化のルールを定めた階層化ルールに基づいて複数の要素に分割するステップ、
分割されたそれぞれの要素である検索用階層要素に、所属する階層を示す位置情報を付加するステップ、
前記位置情報が付加されたそれぞれの前記検索用階層要素を、所定のデータ変換規則に従ってデータ変換するステップ、
を実行させるためのキーワード変換プログラム。
【請求項６】
請求項５記載のキーワード変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
（１）複数の階層に分割する階層化が可能な所定の表現形式で表現された複数の検索用キーワードを含み、かつ、前記複数の検索用キーワードに基づき検索対象範囲を指定する第１の検索条件を入力し、入力された前記第１の検索条件を、前記第１の検索条件の前記検索対象範囲と同一の検索対象範囲を指定する第２の検索条件であって、前記表現形式で表現され、かつ、ドントケア表現の可能な特有階層を保有する検索用キーワードである少なくとも一つの特有階層保有検索用キーワードを含む第２の検索条件に変更可能かどうかを判定し、前記第１の検索条件を前記第２の検索条件に変更可能と判定すると前記第１の検索条件を前記第２の検索条件に変更し、変更された前記第２の検索条件を出力し、変更できないと判定すると前記第１の検索条件を出力し、
（２）出力された前記第１の検索条件と前記第２の検索条件とのいずれかの前記検索条件を入力し、入力された前記検索条件に含まれる前記検索用キーワードの全てを前記階層化のルールを定めた階層化ルールに基づいて複数の要素に分割し、
（３）分割されたそれぞれの要素である検索用階層要素に、所属する階層を示す位置情報を付加し、
（４）前記位置情報が付加されたそれぞれの前記検索用階層要素を、所定のデータ変換規則に従ってデータ変換することを特徴とする装置のキーワード変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、検索に使用するキーワードを変換するキーワード変換装置に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングと呼ばれるコンピュータの利用形態が普及している。クラウドコンピューティングでは、利用者はデータの保管や管理などのコンピュータ処理を、ネットワーク経由で、サービスとして利用できる。このような形態においては、データの所有者であるサービス利用者とデータの管理者であるサービス提供者とが異なる。このため、サービス利用者の機密情報がデータの管理者に漏えいすることを防ぐために、利用者の保存データを暗号化することが一般的になりつつある。さらに、データを暗号化したまま所望するデータを検索できる秘匿検索サービスが実現できれば、利用者の利便性が大きく向上する。【０００３】
このような秘匿検索を実現するために、キーワード検索のための索引の秘匿性を高める方法が考案されている（特許文献１参照）。また、暗号化された文字列の部分一致検索を提供するために、文字単位の暗号化を行うことで、文字単位の照合を可能とする方法が考案されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−５２６９８号公報
【特許文献２】特開２００２−１０８９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、キーワードの完全一致による検索しか行うことができず、大小関係の比較や部分一致などができない。そのため、日付や数値などの範囲検索を行おうとすると、検索範囲に含まれる全ての要素を列挙して完全一致検索を行う必要があり、検索性能（検索速度）の点で課題がある。【０００６】
特許文献２では、文字単位の暗号化後にも暗号化前と同じ文字の順序が保存されている。このため、保存された暗号化データに対する複数の文字の相関による頻度解析のような攻撃に弱く、秘匿性の点で課題がある。【０００７】
この発明は、日付や数値のキーワードの階層化により、検索範囲に含まれる要素数を削減して照合回数を削減し、かつ、階層間の位置関係を示す位置ＩＤ（位置情報）を階層の値と合わせて秘匿する。これにより、高速化を図り、かつ安全性を高めた範囲検索方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明のキーワード変換装置は、
複数の階層に分割する階層化が可能な所定の表現形式で表現された登録用キーワードを入力し、前記階層化のルールを定めた階層化ルールに基づいて前記登録用キーワードを階層ごとの要素に分割する登録側分割部と、
前記登録側分割部によって分割されたそれぞれの要素である登録用階層要素に、所属する階層を示す位置情報を付加する登録側位置情報付加部と、
前記登録側位置情報付加部によって前記位置情報が付加されたそれぞれの前記登録用階層要素を、所定のデータ変換規則に従ってデータ変換する登録側データ変換部と
を備えたことを特徴とする。
【発明の効果】
【０００９】
この発明のキーワード変換装置により、階層化による検索の迅速化と、位置情報の秘匿化による情報の秘匿化向上を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１における検索システム１００のブロック図。
【図２】実施の形態１における検索システム１００の登録処理のフローチャート。
【図３】実施の形態１における検索システム１００の検索処理のフローチャート。
【図４】実施の形態１における暗号化検索索引部２００のブロック図。
【図５】実施の形態１におけるブロックテーブル２２を示す図。
【図６】実施の形態１における索引ファイル２０４を示す図。
【図７】実施の形態１における索引ファイル２０４の登録処理のフローチャート。
【図８】実施の形態１における索引ファイル２０４の検索処理のフローチャート。
【図９】実施の形態２における端末装置１００−１の外観の一例を示す図。
【図１０】実施の形態２における端末装置１００−１のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、実施の形態１に係る範囲検索方法を用いた検索システム１００（キーワード変換装置）の構成を示す図である。
【００１２】
（検索システム１００の構成）
検索システム１００は、登録部１０１、検索部１０２、および暗号化検索索引部２００を備える。登録部１０１は、登録側分割部１１１、登録側シンボル化部１１２（登録側位置情報付加部）、登録側暗号化部１１３（登録側データ変換部）、索引登録部１１４を備える。検索部１０２は、キーワード生成部１２０（検索側キーワード生成部）、検索側分割部１２１、検索側シンボル化部１２２（検索側位置情報付加部）、検索側暗号化部１２３（検索側データ変換部）、および索引検索部１２４を備える。
【００１３】
（登録時）
検索システム１００は、登録用キーワードとその登録用キーワードが含まれる文書を特定する文書ＩＤとを関連付け、登録用キーワードを暗号化して暗号化検索索引部２００に登録する。図１に示すように、登録側分割部１１１が登録用キーワードと文書ＩＤとを入力する。後述のように属性情報（属性ＩＤ）を含める場合には、登録側分割部１１１は属性情報も入力する。例えば、登録対象の文書に含まれる属性項目「生年月日」を検索キーとして使用する場合、登録対象の文書から抽出された生年月日の値（例えば「２０００年４月１日」）を登録用キーワードとする。文書ＩＤとしては、登録シリアル番号や、文書ファイル名など、文書を一意に特定可能となるＩＤを用いることができる。文書ファイル名を用いる場合には前もって暗号化を行うことで、文書ファイル名を秘匿化する。
【００１４】
（検索時）
検索時には、検索システム１００は、検索キーに関する「範囲検索条件」を入力し、範囲検索条件の範囲に含まれる文書ＩＤを出力する。例えば、属性項目「生年月日」を検索キーとし、
範囲検索条件「２０００年４月１日〜２０００年４月３０日」、
とする場合、検索システム１００は、その範囲に含まれる文書ＩＤを出力する。
【００１５】
（登録処理）
図２は、実施の形態１に係る検索システム１００の登録の流れ（登録工程Ｓ１０１〜Ｓ１０４）を示すフローチャートである。
（１）Ｓ１０１にて、登録側分割部１１１は、入力された登録用キーワードを予め定められた階層化ルールに基づき複数の階層の値に分割する。
（２）Ｓ１０２にて、登録側シンボル化部１１２は、分割された値と、その値の位置ＩＤ、あるいはそれらに加えて属性ＩＤを合わせて１シンボルとしてエンコードする。
（３）Ｓ１０３にて、登録側暗号化部１１３は前記シンボルに対して特定の変換を行い、登録用変換済みシンボルを生成する。
（４）Ｓ１０４にて、索引登録部１１４は登録用変換済みシンボルのそれぞれを、登録用キーワードに関連する文書ＩＤに関連付けて暗号化検索索引部２００に登録する。
以下、図２で説明した各ステップを、さらに詳しくに説明する。
【００１６】
（Ｓ１０１：登録側分割部１１１）
検索システム１００に登録用キーワードが入力されると、登録側分割部１１１は、登録用キーワードを、予め定められた「階層化ルール」に基づき、複数の階層の値に分割する。例えば属性項目「生年月日」のような日付情報を階層化する場合、「生年月日」は、
「年」、「月」、「日」、
のように階層化することができる。
この場合、
「２０００年４月１日」、
という登録用キーワードは、
「２０００」、「４」、「１」、
という３個の値（登録用階層要素）に分割される。
【００１７】
（階層化ルール）
階層化ルールについて、さらに説明する。階層化ルールは、日付や数値や文字列など、範囲を持ちうる値の種類毎に定めることができる。
（１）数値であれば、固定長の２進数を固定ビット数ごとに分割して階層化することができる。例えば、６４ビット整数を８ビット（１バイト）ごとに分割すると８階層となる。その場合、位置ＩＤとしてはＭＳＢから数えた０から始まるバイト位置（０〜７）とする。
（２）また、数値の別な表現方法として、２進化１０進数という表現方法を用いてもよい。その場合には固定長の２進化１０進数を１０進の桁数ごとに分割し、位置ＩＤとしてＭＳＢから数えた０から始まる桁位置とする。
（３）日付の場合、前述の例の他に、過去の特定日を０としたシリアル番号化し、数値として階層化することもできる。例えば、１９００年１月１日をシリアル番号１とし、１９００年１月１日からの経過日数で日付を表すことができる。また、日付を「ＹＹＹＹＭＭＤＤ」（ＹＹＹＹは西暦年、ＭＭは月、ＤＤは日）のような特定の文字列フォーマットに表し、２進化１０進数として階層化することもできる。
（４）時刻の場合も同様に、「時」、「分」、「秒」で階層化するか、「００：００：００」を０としたシリアル番号化するか、「ＨＨｍｍＳＳ」（ＨＨは２４時間表記の時間、ｍｍは分、ＳＳは秒）と表すなどの方法を用いることができる。
（５）文字列の場合には１文字単位で分割し、先頭を０から数えた文字位置を位置ＩＤとすることで可変長の文字列を表すことができる。
【００１８】
（Ｓ１０２：登録側シンボル化部１１２）
登録側シンボル化部１１２は、分割された階層の値にタグを付加して、１シンボルとしてエンコードする。
例えば、日付情報を、
「年」、「月」、「日」、
のように階層化する場合、階層の位置情報を「年」「月」「日」とし、これらをタグとして、階層の値に付加する。ここで「位置情報」とは階層に分割された値（登録用階層要素）の所属する階層を示す情報である。
「２０００年４月１日」
という登録用キーワードは、位置情報が付加されて、
「年：２０００」、「月：４」、「日：１」
の３個のシンボルとなる。
ここでは、シンボルを「タグ：値」の形で表した。タグはＸＭＬ（ＥＸＴＥＮＳＩＢＬＥ  ＭＡＲＫＵＰ  ＬＡＮＧＵＡＧＥ）形式として、
「＜タグ＞値＜／タグ＞」、
のようにしてもよい。
その場合、
「＜年＞２０００＜／年＞」、「＜月＞２０００＜／月＞」、「＜日＞１＜／日＞」
のようになる。
また別の例としては、シンボルを固定長の２進整数にエンコードすることもできる。日付の場合、１シンボルを例えば３２ビットで表すこととし、上位１６ビットにタグをエンコードし、下位１６ビットに値をエンコードしてもよい。
【００１９】
（属性情報）
登録側シンボル化部１１２は、さらに、登録用キーワードとともに、属性を示す属性ＩＤ（属性情報）を、タグとしてシンボルに含めてエンコードしてもよい。属性ＩＤは登録用キーワードとともに入力される。
例えば、シンボルを、
「属性ＩＤ：位置ＩＤ：値」、
として、タグを２重（属性ＩＤと位置ＩＤとのタグ）に付加することができる。
例えば、登録用キーワードが前述の
「２０００年４月１日」、
という日付データの場合、
「属性ＩＤ＝１」を属性項目「生年月日」とし、
「属性ＩＤ＝２」を属性項目「入会日」とすれば、
「生年月日」である「２０００年４月１日」、あるいは「入会日」である「２０００年４月１日」を検索することができる。
「生年月日」であれば、「２０００年４月１日」は「属性ＩＤ：位置ＩＤ：値」の表現として、
「１：年：２０００」、「１：月：４」、「１：日：１」、
と表現できる。
また、ＸＭＬ形式であれば、
＜属性ＩＤ＞＜位置ＩＤ＞値＜／位置ＩＤ＞＜／属性ＩＤ＞、
のように入れ子構造と記載できる。
あるいは、
＜属性ＩＤ  階層＝”位置ＩＤ”＞値＜／属性ＩＤ＞
のように、１つのＸＭＬタグに属性を付与してもよい。
また、シンボルを固定長の２進整数にエンコードする際に、属性ＩＤ領域を決めてエンコードするようにしてもよい。
例えば、１シンボルを３２ビットで表すこととし、
上位８ビットに属性ＩＤタグをエンコードし、
中位８ビットに位置ＩＤタグをエンコードし、
下位１６ビットに値をエンコードするというようにできる。
属性ＩＤはシステムで一意に定まればよいため、属性名と属性ＩＤとの対応付けをテーブル管理することにより、単純なシリアル番号にエンコードすることができる。
属性ＩＤをシンボルに含めることにより、シンボルがどの属性に含まれるかということも秘匿化することができ、秘匿性が向上する。
【００２０】
（Ｓ１０３：登録側暗号化部１１３）
登録側暗号化部１１３は、シンボルに対して所定のデータ変換規則による「特定の変換」を行い、登録用変換済みシンボルを生成する。１個の登録用キーワードがＮ個のシンボルにエンコードされた場合、Ｎ個の各シンボルが変換され、Ｎ個の登録用変換済みシンボルが生成される。上記の「２０００年４月１日」の例では、「年：２０００」、「月：４」、「日：１」の３つのシンボルが生成されたが、この場合、この３つのそれぞれの登録用変換済みシンボルが登録側暗号化部１１３によって生成される。登録側暗号化部１１３による「特定の変換」としては、暗号化やハッシュなどを行うことによりシンボルの秘匿性を高めることができる。暗号化の方法としては、一般の共通鍵暗号を用いることができる。
【００２１】
（Ｓ１０４：索引登録部１１４）
索引登録部１１４は、登録側暗号化部１１３によって生成されたＮ個のそれぞれの登録用変換済みシンボルを、登録用キーワードに関連する文書ＩＤに関連付けて暗号化検索索引部２００に登録する。シンボルの登録順序が暗号化検索索引部２００に保存されるような場合には、Ｎ個のシンボルをランダムな順序で登録することにより秘匿性を高めることができる。
【００２２】
以上述べたように、
（１）登録用キーワードを分割し（Ｓ１０１）、
（２）位置ＩＤと値の組をシンボル化し（Ｓ１０２）、
（３）シンボルを暗号化等の変換を施した上で（Ｓ１０３）、
（４）暗号化検索索引に登録する（Ｓ１０４）。
登録用キーワードを階層に分割し、かつ、階層の値に登録用キーワード内の位置情報を含めるため、検索の迅速化と、秘匿化向上を図ることができる。また、複数の属性を検索キーとして使用する場合に属性ＩＤをシンボルに含めるので、シンボルがどの属性に含まれるかを秘匿化することができる。
【００２３】
（検索処理）
図３は、実施の形態１に係る検索システム１００の検索処理（検索工程Ｓ２０１〜Ｓ２０５）の流れを示すフローチャートである。
（１）Ｓ２０１にて、キーワード生成部１２０は、入力された範囲検索条件の範囲に含まれる全ての要素の検索が可能な複数の検索キーワードを生成する。
（２）Ｓ２０２にて、検索側分割部１２１は検索キーワードを、予め定められた階層化ルール（登録時と同一）に基づき複数の階層の値に分割する。
（３）Ｓ２０３にて、検索側シンボル化部１２２は、分割された値とその値の位置ＩＤ、またはそれらに加えて属性ＩＤを合わせて１シンボルとしてエンコードする。
（４）Ｓ２０４にて、検索側暗号化部１２３は前記シンボルに対して特定のデータ変換を行い、検索用変換済みシンボルを生成する。
（５）Ｓ２０５にて、索引検索部１２４は検索用変換済みシンボルの検索を暗号化検索索引部２００を用いて行い、結果の文書ＩＤを出力する。
以下、図３で説明した各ステップを、さらに詳しく説明する。
【００２４】
（Ｓ２０１：キーワード生成部１２０）
キーワード生成部１２０は、範囲検索条件が入力されると、範囲検索条件の範囲に含まれる全ての要素の検索が可能な複数の検索キーワードを生成する。キーワード生成部１２０は、ある階層が取りうる値がすべて範囲検索条件の範囲に含まれる場合には、その階層をドントケアとし、ドントケア階層を含む検索キーワードを１つにまとめる。例えば日付属性において、階層化ルールを「年」、「月」、「日」、とした場合、キーワード生成部１２０は、
範囲検索条件「２０００年４月１日〜２０００年４月３０日」
を、１個の検索キーワード「２０００年４月＊日」（＊はドントケア）、
とする。
また、
範囲検索条件「２０００年４月１６日〜２００２年４月１５日」、
であれば、キーワード生成部１２０は、以下のような＜検索条件１＞を生成する。
＜検索条件１＞
「２０００年４月１６日」ＯＲ
「２０００年４月１７日」ＯＲ
・・・（略）
「２０００年４月３０日」ＯＲ
「２０００年５月＊日」ＯＲ
「２０００年６月＊日」ＯＲ
・・・（略）
「２０００年１２月＊日」ＯＲ
「２００１年＊月＊日」ＯＲ
「２００２年１月＊日」ＯＲ
「２００２年２月＊日」ＯＲ
「２００２年３月＊日」ＯＲ
「２００２年４月１日」ＯＲ
「２００２年４月２日」ＯＲ
・・・（略）
「２００２年４月１５日」。
＜検索条件１＞に示すような検索キーワードを生成することで、範囲検索条件の範囲の全ての要素を検索できる。上記の＜検索条件１＞において、「ＯＲ」はキーワードの検索結果の論理和を意味する。このようにして、「ドントケア」を用いることで照合回数を減らし、検索速度を向上させることができる。さらに、「ＯＲ」で結合された部分については、順番を入れ替えても検索結果は変わらないため、順番をランダムに入れ替えることで、検索条件の秘匿性を高めることができる。
【００２５】
このように、キーワード生成部１２０は、複数の階層に分割する階層化が可能な所定の表現形式で表現された複数の検索用キーワード（２０００年４月１６日、２００２年４月１５日）を含み、かつ、複数の検索用キーワードに基づき検索対象範囲を指定する検索条件である「２０００年４月１６日〜２００２年４月１５日」（第１の検索条件）を入力する。キーワード生成部１２０は、入力された第１の検索条件を、第１の検索条件の前記検索対象範囲と同一の検索対象範囲を指定する第２の検索条件であって、第１の検索条件に含まれる検索用キーワードの表現形式で表現され、かつ、ドントケア表現の可能な特有階層を保有する検索用キーワードである少なくとも一つの「特有階層保有検索用キーワード」（＜検索条件１＞の例では、ドントケアを示す＊を含む年月日）を含む第２の検索条件（上記の＜検索条件１＞）に変更可能かどうかを判定する。キーワード生成部１２０は、第１の検索条件（「２０００年４月１６日〜２００２年４月１５日」）を第２の検索条件（上記の＜検索条件１＞）に変更可能と判定すると第１の検索条件を第２の検索条件に変更して第２の検索条件を出力し、変更できないと判定すると第１の検索条件を出力する。「２０００年４月１６日〜２００２年４月１５日」の場合、キーワード生成部１２０は、変更可能と判定し、第２の検索条件として、上記の＜検索条件１＞を出力する。
【００２６】
（Ｓ２０２：検索側分割部１２１）
検索側分割部１２１は、登録側分割部１１１と同様に、検索用キーワードを予め定められた階層化ルールに基づき複数の階層の値に分割する。以下に示す＜検索条件２＞は、検索側分割部１２１が、キーワード生成部１２０により生成された＜検索条件１＞を分割した例である。
【００２７】
＜検索条件２＞
「２０００年」ＡＮＤ
（「４月」ＡＮＤ（「１６日」ＯＲ「１７日」ＯＲ・・・（略）・・・ＯＲ「３０日」））ＯＲ
「５月」ＯＲ「６月」ＯＲ・・・（略）・・・「１２月」）ＯＲ
「２００１年」ＯＲ
「２００２年」ＡＮＤ
（「１月」ＯＲ「２月」ＯＲ「３月」ＯＲ
（「４月」ＡＮＤ（「１日」ＯＲ「２日」ＯＲ・・・（略）・・・ＯＲ「１５日」）））。
＜検索条件２＞が上記のように生成されることで、範囲の全ての要素を検索可能であり、照合回数をさらに削減できる。＜検索条件２＞についても「ＯＲ」結合された部分については、順番を入れ替えても検索結果は変わらないため、順番をランダムに入れ替えることで、検索条件の秘匿性を高めることができる。
あるいは、「ＡＮＤ」結合部分を含めて順番を入れ替えて個別に検索し、中間結果を全て取得してから、検索結果の突合せを行うようにすれば、さらに検索条件の秘匿性を高めることができる。
【００２８】
（Ｓ２０３：検索側シンボル化部１２２）
検索側シンボル化部１２２は、登録側シンボル化部１１２と同様に、位置ＩＤと値、または属性ＩＤと位置ＩＤと値をシンボルにエンコードする。
【００２９】
（Ｓ２０４：検索側暗号化部１２３）
検索側暗号化部１２３は、登録側暗号化部１１３と同様に、シンボルの変換を行い、検索用変換済みシンボルを生成する。以下に示す＜検索条件３＞は、検索側シンボル化部１２２が＜検索条件２＞をシンボル化し、シンボル化された検索条件２を、検索側暗号化部１２３がデータ変換した例である。＜検索条件２＞において、検索側シンボル化部１２２のエンコードをＳ（Ｘ）、検索側暗号化部１２３のデータ変換をＥ（Ｙ）とすると、
検索条件全体は以下の様になる。
＜検索条件３＞
Ｅ（Ｓ（２０００年））ＡＮＤ
（Ｅ（Ｓ（４月））ＡＮＤ（Ｅ（Ｓ（１６日））ＯＲ  Ｅ（Ｓ（１７日））ＯＲ・・・（略）・・・ＯＲ  Ｅ（Ｓ（３０日））））ＯＲ
Ｅ（Ｓ（５月））ＯＲ  Ｅ（Ｓ（６月」））ＯＲ・・・（略）・・・Ｅ（Ｓ（１２月）））ＯＲ
Ｅ（Ｓ（２００１年））ＯＲ
Ｅ（Ｓ（２００２年））ＡＮＤ
（Ｅ（Ｓ（１月））ＯＲ  Ｅ（Ｓ（２月））ＯＲ  Ｅ（Ｓ（３月））ＯＲ
（Ｅ（Ｓ（４月））ＡＮＤ（Ｅ（Ｓ（１日））ＯＲ  Ｅ（Ｓ（２日））ＯＲ・・・（略）・・・ＯＲ  Ｅ（Ｓ（１５日）））））。
【００３０】
（Ｓ２０５：索引検索部１２４）
索引検索部１２４は、暗号化検索索引部２００を用いて検索を行う。
【００３１】
以上述べたように、検索の階層化により範囲検索における照合回数を削減することで、検索を高速化できる。
【００３２】
（暗号化検索索引部２００）
次に、暗号化検索索引部２００について、詳しく説明する。登録側暗号化部１１３および検索側暗号化部１２３にて共通の確定的暗号を用いた場合の例を説明する。「確定的暗号」とは、鍵が同じであれば同じデータは常に同じ暗号化データに変換される暗号化方法を指す。従って、登録側暗号化部１１３と検索側暗号化部１２３にて鍵が同じであれば、変換済みシンボルを完全一致照合の検索が可能である。
【００３３】
暗号化検索索引部２００は、一般に用いられているリレーショナルデータベース技術を用いて構成できる。すなわち、変換済みシンボルと、変換済みシンボルに対応する文書ＩＤとの２つのフィールドを含むテーブルを定義することにより、変換済みシンボルから該当（その変換済シンボルを含む）の文書ＩＤを取得できる。さらに、文書ＩＤは、ユーザ側で予め「非確定的暗号」により暗号化し、その後に登録する。そして、検索結果を取得後にユーザが復号することで、暗号化検索索引の秘匿性を向上することができる。
【００３４】
（暗号化検索索引部２００）
図４は、暗号化検索索引部２００のブロック図の一例を示す。暗号化検索索引部２００は、ブロックテーブル参照部２０１、ブロックテーブル２０２、ブロックアクセス部２０３、索引ファイル２０４、登録処理部２０５、検索処理部２０６を備える。
図５は、ブロックテーブル２０２を示す図である。
図６は、索引ファイル２０４を示す図である。
【００３５】
（１）登録処理部２０５は、登録用変換済みシンボルの登録処理を行う。
（２）検索処理部２０６は、検索用変換済みシンボルの検索処理を行い、検索結果の文書ＩＤを出力する。
（３）ブロックテーブル参照部２０１は、変換済みシンボルを入力し、ブロックテーブル２０２を参照して、変換済みシンボルに対応する文書ＩＤが含まれる索引ブロック情報を取得する。
（４）ブロックアクセス部２０３は、索引ブロック情報を元に、索引ファイル２０４の該当するブロックにアクセスし、登録時には文書ＩＤを該当ブロックに追加書き込みし、検索時には、該当ブロックの文書ＩＤを読み出して出力する。
（５）ブロックテーブル参照部２０１は、ハッシュを用いることで、変換済みシンボルに対応する索引ブロック情報のアドレスを直接生成し、索引ブロック情報を高速に取り出すことができる。
（６）ブロックテーブル２０２は、ディスク上のファイルとして保存されるが、実行時には主記憶上に格納して高速化することもできる。索引ファイル２０４もディスク上のファイルとして保存される。
（７）ブロックテーブル２０２の索引ブロック情報には、索引ファイル内の該当シンボルに対する文書ＩＤ情報が格納されたブロックのオフセット及びブロックのサイズが格納される。索引ブロック情報により、ブロックアクセス部２０３は必要最小限のディスクアクセスにより、文書ＩＤ情報の読み書きが可能である。索引ブロックの秘匿化のために、索引ブロックは暗号化することができる。その場合、索引ファイル２０４全体ではなく、個々のブロック毎に暗号化される。
【００３６】
次に、図４に示した暗号化検索索引部２００の動作を説明する。
【００３７】
（暗号化検索索引部２００の登録処理）
図７は、図４の暗号化検索索引部２００における登録処理の流れ（登録処理工程Ｓ３０１〜Ｓ３０７）を示すフローチャートである。
（１）Ｓ３０１にて、登録処理部２０５は登録用変換済みシンボルを入力する。
（２）Ｓ３０２にて、登録処理部２０５は、ブロックテーブル参照部２０１に対して登録用変換済みシンボルのブロックテーブル２０２の参照を行わせ、該当する索引ブロック情報を取得させる。
（３）Ｓ３０３にて、登録処理部２０５は、ブロックテーブル２０２に該当するエントリがあったかどうかを確認する。
（４）該当するエントリがあった場合には、登録処理部２０５は、Ｓ３０４にて、取得した索引ブロック情報を元にブロックアクセス部２０３に索引ファイル２０４からの索引ブロック取得を行わせ、索引ブロックに登録用変換済みシンボルに関連付けられた文書ＩＤを追加する。
（５）Ｓ３０３にて該当するエントリがなかった場合には、登録処理部２０５は、Ｓ３０５にて、ブロックテーブル参照部２０１に対して、ブロックテーブル２０２への新たなエントリ追加を行わせる。
（６）Ｓ３０６にて登録処理部２０５は、ブロックアクセス部２０３に対して索引ファイル２０４への新たな索引ブロック追加を行わせ、Ｓ３０７にて索引ブロックに文書ＩＤを追加する。
【００３８】
（検索処理）
図８は、図４の暗号化検索索引部２００の検索処理の流れ（検索処理工程Ｓ４０１〜Ｓ４０６）の一例を示すフローチャートである。
（１）Ｓ４０１にて、検索処理部２０６は検索用変換済みシンボルを入力する。
（２）Ｓ４０２にて、検索処理部２０６は、ブロックテーブル参照部２０１に対して検索用変換済みシンボルのブロックテーブル２０２の参照を行わせ、ブロックテーブル２０２から該当する索引ブロック情報を取得させる。
（３）Ｓ４０３にて、ブロックテーブル２０２に該当するエントリがあったかどうかを確認する。
（４）該当するエントリがなかった場合には、Ｓ４０４にて、該当なしの検索結果を出力する。
（５）Ｓ４０３にて該当するエントリがあった場合には、Ｓ４０５にて、検索処理部２０６は、取得した索引ブロック情報を元にブロックアクセス部２０３に索引ファイル２０４からの索引ブロック取得を行わせ、Ｓ４０６にて索引ブロックから文書ＩＤを取得して検索結果として出力する。
【００３９】
実施の形態２．
実施の形態２は、コンピュータである端末装置１００−１（ユーザが使用）のハードウェア構成を説明する。
図９は、端末装置１００−１の外観の一例を示す図である。
【００４０】
図９において、端末装置１００−１（キーワード変換装置の一例）はネットワーク（例えばインターネット）を介して、クラウド側（サービス提供者側）のクラウド側装置１００−２と接続している。端末装置１００−１は図１のデータ変換までの処理（図１の破線３１の左側の処理）を実行する。クラウド側装置１００−２は図１の登録及び検索の処理（図１の破線３１の右側の処理）を実行する。端末装置１００−１とクラウド側装置１００−２とは検索システム１００を構成される。端末装置１００−１は、登録側分割部１１１、登録側シンボル化部１１２、登録側暗号化部１１３、キーワード生成部１２０、検索側分割部１２１、検索側シンボル化部１２２、検索側暗号化部１２３の機能を有する。またクラウド側装置１００−２は、索引登録部１１４、索引検索部１２４、及び暗号化検索索引部２００の機能を有する。
【００４１】
以下では端末装置１００−１について説明するが、クラウド側装置１００−２も端末装置１００−１と同様のコンピュータであり、端末装置１００−１についての説明はクラウド側装置１００−２についても当てはまる。
【００４２】
図９に示すように、端末装置１００−１は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、ＦＤＤ８１７（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・  Ｄｒｉｖｅ）、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）、プリンタ８１９などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット３０はネットワークを介してクラウド側装置１００−２に接続している。
【００４３】
図１０は、端末装置１００−１のハードウェア資源を示す図である。端末装置１００−１は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＦＤＤ８１７、ＣＤＤ８１８、プリンタ装置８１９、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００４４】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＦＤＤ８１７、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、「記憶装置」あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、キーボード８１４、ＦＤＤ８１７などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３、プリンタ装置８１９などは、出力部、出力装置の一例である。通信ボード８１６は、ネットワークに接続されている。
【００４５】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００４６】
上記プログラム群８２３には、実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００４７】
ファイル群８２４には、以上の実施の形態の説明において、「階層化ルール」として説明した情報や、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」（ＤＢ）の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００４８】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＦＤＤ８１７のフレキシブルディスク、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００４９】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ＲＯＭ８１１に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させる。あるいは、プログラムは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００５０】
なお、以上の実施の形態では、キーワード変換装置を説明したが、キーワード変換装置の動作を、キーワード変換方法、あるいはキーワード変換プログラムとして把握することも可能である。さらに、キーワード変換プログラムを記録したコンピュータ読み取り可能な記録媒体として把握することも可能である。
【００５１】
以上の実施の形態では、以下のステップを備えた範囲検索方法を実施する検索システムを説明した。検索対象となるデータから抽出された検索対象キーワードを検索システムに登録し、値の範囲を持った検索条件に合致するデータを前記検索システムにより検索する範囲検索方法であって、
（１）前記検索対象キーワード１個をＮ個（Ｎ≧１）の値に分割する分割ステップと、
（２）前記Ｎ個の値のそれぞれについて、タグを付加したシンボルにエンコードするシンボル化ステップと、
（３）前記Ｎ個のシンボルに対してそれぞれ特定の変換によりＮ個の登録用変換済みシンボルに変換するデータ変換ステップと、
（４）前記Ｎ個の登録用変換済みシンボルを前記検索対象となるデータに関連付けて検索システムに登録する登録ステップと、
（５）値の範囲を持った検索条件から複数の検索キーワードを生成する検索キーワード生成ステップと、
（６）前記検索キーワード１個をＮ個の値に分割し、そのうちＭ個（Ｎ≧Ｍ≧１）の値を抽出する検索側分割ステップと、
（７）前記Ｍ個の値のそれぞれについてタグを付加したシンボルにエンコードする検索側シンボル化ステップと、
（８）前記Ｍ個のシンボルに対してそれぞれ特定の変換によりＭ個の検索用変換済みシンボルに変換する検索側データ変化テップと、
（９）Ｍ個の検索用変換済みシンボルが全て含まれる検索対象データを検索システムにて検索する検索ステップと
を含む範囲検索方法。
【００５２】
以上の実施の形態では、
前記分割するステップは、前記検索対象キーワードが文字列データである場合に、文字列データを文字単位の値に分割し、
前記エンコードするステップは、タグとして前記文字列データ中の文字の位置を付す範囲検索方法を説明した。
【００５３】
以上の実施の形態では、
前記分割するステップは、前記検索対象キーワードが整数値データである場合に、整数値データをビット単位の数値に分割し、
前記エンコードするステップは、タグとして分割した数値のビット位置を付す範囲検索方法を説明した。
【００５４】
以上の実施の形態では、
前記検索側分割ステップは、前記検索対象キーワードが日付データまたは時刻データである場合に、日付データまたは時刻データをシリアル番号化して前記整数値データとして分割する範囲検索方法を説明した。
【００５５】
以上の実施の形態では、
前記検索ステップは、検索用変換済みシンボルの順序をランダムに入れ替えてから検索する範囲検索方法を説明した。
【符号の説明】
【００５６】
１００  検索システム、１００−１  端末装置、１００−２  クラウド側装置、１０１  登録部、１０２  検索部、１１１  登録側分割部、１１２  登録側シンボル化部、１１３  登録側暗号化部、１１４  索引登録部、１２０  キーワード生成部、１２１  検索側分割部、１２２  検索側シンボル化部、１２３  検索側暗号化部、１２４  索引検索部、２００  暗号化検索索引部、２０１  ブロックテーブル参照部、２０２  ブロックテーブル、２０３  ブロックアクセス部、２０４  索引ファイル、２０５  登録処理部、２０６  検索処理部。
【図１】
0005425307.tif 000002
【図２】
0005425307.tif 000003
【図３】
0005425307.tif 000004
【図４】
0005425307.tif 000005
【図５】
0005425307.tif 000006
【図６】
0005425307.tif 000007
【図７】
0005425307.tif 000008
【図８】
0005425307.tif 000009
【図９】
0005425307.tif 000010
【図１０】
0005425307.tif 000011