(57)【要約】  本発明はデータベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法および装置に関するものである。本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法は、暗号化されたフィールドの内容を復号化して保存することなく、暗号化されたデータそのままで索引を構築するものの、索引構築時に暗号化されたデータとあらかじめ設定された基準値との距離情報を利用して索引を構築し、検索時にも基準値との距離値を計算してこれを構築された索引情報テーブルと比較して検索を遂行する。特に、本発明は重複データが存在する場合、これをリーフノードに対する下位リーフノードでセットで構成することによって検索時間を最小化させることができる。
2016533606.tif 000002
【特許請求の範囲】
【請求項１】
データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法において、
(a)データベースで暗号化されたフィールドに対応する暗号化データを読み込む段階；
(b)前記暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する段階；
(c)基準値を生成する段階；
(d)前記原本データと前記基準値との距離値を計算する段階；
(e)前記距離値を前記距離値の大きさおよび符号を基準として整列させる段階；および
(f)前記距離値に対応する前記原本データの位置情報をマッチングさせて保存することによって索引情報テーブルを生成する段階；を含むことを特徴とする、暗号化されたフィールドに対する索引生成方法。
【請求項２】
(g)特定の原本データに対する検索が必要な場合、前記特定の原本データと前記基準値との距離である入力距離値を計算し、前記入力距離値を前記索引情報テーブルに保存された前記距離値と比較することによって前記特定の原本データを検索する段階をさらに含むことを特徴とする、請求項１に記載の暗号化されたフィールドに対する索引生成方法。
【請求項３】
前記(c)段階で、乱数を利用して前記基準値を生成することを特徴とする、請求項１に記載の暗号化されたフィールドに対する索引生成方法。
【請求項４】
前記(c)段階および前記(d)段階の間に、
前記基準値を暗号化して保存する段階をさらに含むことを特徴とする、請求項１に記載の暗号化されたフィールドに対する索引生成方法。
【請求項５】
前記(g)段階は、
索引検索技法としてＢ＋木アルゴリズム、ハッシュ(hash)アルゴリズムおよびビットマップ(Bitmap)アルゴリズムの中の一つを利用することを特徴とする、請求項１に記載の暗号化されたフィールドに対する索引生成方法。
【請求項６】
前記Ｂ＋木アルゴリズム、前記ハッシュアルゴリズムおよび前記ビットマップアルゴリズムは、
所望の検索データを探すための基準値を含む内部ノード(internal  node)と、前記索引情報を含むリーフノード(leaf  node)を含む形態で構成されることを特徴とする、請求項５に記載の暗号化されたフィールドに対する索引生成方法。
【請求項７】
前記リーフノードに、位置情報だけが異なって同じデータを有する重複データを含む下位リーフノードが存在する場合、前記重複データを含む前記下位リーフノードを括ってセットで構成することによってオーバーヘッドを最小化することを特徴とする、請求項６に記載の暗号化されたフィールドに対する索引生成方法。
【請求項８】
前記重複データを含む前記下位リーフノードの中の一つのリーフノードの下位に位置情報だけを含む下位リーフノードを生成してセットで構成することを特徴とする、請求項７に記載の暗号化されたフィールドに対する索引生成方法。
【請求項９】
前記(f)段階は、
前記データベースが使用者定義索引技法を提供する場合には、前記使用者定義索引技法を利用して前記索引情報テーブルを生成し、
前記データベースが使用者定義索引技法を提供しない場合には、使用者定義関数とトリガーを利用して前記索引情報テーブルを生成することを特徴とする、請求項１に記載の暗号化されたフィールドに対する索引生成方法。
【請求項１０】
データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成装置において、
索引するデータの距離を計算する基準値を生成する基準値生成部；
索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込んだ後、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出し、抽出した原本データと基準値の間の距離値を計算する距離値計算部；および
前記距離値に対応する原本データの位置情報を距離値にマッチングさせて保存して索引情報テーブルを生成する索引生成部；を含むことを特徴とする、暗号化されたフィールドに対する索引生成装置。
【請求項１１】
前記基準値生成部は前記原本データの最大長とタイプを基準として乱数を発生して前記基準値を生成することを特徴とする、請求項１０に記載の暗号化されたフィールドに対する索引生成装置。
【請求項１２】
前記距離値計算部は前記原本データが文字列で構成されている場合に、前記原本データの最初の文字列の順序情報に基づいて前記基準値との差を計算して前記距離値を計算することを特徴とする、請求項１０に記載の暗号化されたフィールドに対する索引生成装置。
【請求項１３】
前記距離値計算部は前記距離値を大きさおよび符号を基準として整列することを特徴とする、請求項１０に記載の暗号化されたフィールドに対する索引生成装置。
【請求項１４】
検索対象原本データと基準値との距離である入力距離値を計算し、入力距離値を前記索引情報テーブルに保存された距離値と比較して前記検索対象原本データを検索するデータ検索部をさらに含むことを特徴とする、請求項１０に記載の暗号化されたフィールドに対する索引生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースで暗号化されたフィールドに対する索引生成方法および装置に関するもので、より詳細には、データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法および装置、そして生成された索引を利用してデータを検索する方法および装置に関するものである。
【背景技術】
【０００２】
オラクルのようなDBMS(Database  Management  System)は、保存されたデータを迅速に探すためにデータ特性や検索特性に合わせて多様な索引(index)技法を提供する。仮に、索引技法を使用しない場合には、所望のデータを検索するために保存されたデータ値をすべてスキャン(full-scan)しなければならず、データ量の増加につれて検索時間が幾何級数的に増加する現象が発生することになる。したがって、DBMSで多量のデータから所望のデータを検索するためには索引技法の支援は必須である。
【０００３】
しかしながら、DMBSが支援する既存の索引技法は、暗号化されたデータに対しては正しく動作しない問題点が存在する。また、オラクルやMS-SQLでは自体で提供する暗号化された技法を使う場合、暗号化されたデータに対する索引技法の適用が可能であるが、個人情報の保護に関する法律で提示している多様な暗号化技法(ARIA、SEED、ASE、DESなど)を支援しない問題がある。一方、一部のDBMSは暗号化されたデータを復号化して索引データを作るFBI(Function
Based Index)という機能を提供する。しかし、この方法は索引データの内容が暗号化されていない状態で構築されるので、個人情報が露出される現象が発生する恐れがあり、個人情報の保護のためには使用できないという問題がある。
【０００４】
したがって、個人情報の保護のために暗号化されたフィールドのデータを迅速に検索するためには、暗号化されたデータが原データの順序をそれでも受け継ぐことができないため、必ず復号化されたデータをベースに暗号化フィールド索引を構築する方法と、生成された暗号化フィールド索引を利用して暗号化されたデータを検索できる方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は前述した問題点を解決するために案出されたもので、暗号化されたフィールドの内容を復号化して保存することなく、暗号化されたデータそのままで索引を構築し、構築された索引を利用して迅速にデータを検索することができる暗号化されたフィールドに対する索引生成方法および装置を提供することにその目的がある。
【課題を解決するための手段】
【０００６】
このための本発明の一実施例に係るデータベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法は、(a)データベースで暗号化されたフィールドに対する暗号化データを読み込む段階と、(b)前記暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する段階と、(c)基準値を生成する段階と、(d)前記原本データと前記基準値との距離値を計算する段階と、(e)前記距離値を前記距離値の大きさおよび符号を基準として整列させる段階と、(f)前記距離値に対応する前記原本データに位置情報をマッチングさせて保存することによって索引情報テーブルを生成する段階と、を有する。
【０００７】
好ましくは、(g)特定の原本データに対する検索が必要な場合、前記特定の原本データと前記基準値との距離である入力距離値を計算し、前記入力距離値を前記索引情報テーブルに保存された前記距離値と比較することによって前記特定の原本データを検索する段階をさらに有することができる。
【０００８】
好ましくは、前記(c)段階で、乱数を利用して前記基準値を生成することができる。
【０００９】
好ましくは、前記(c)段階および前記(d)段階の間に、前記基準値を暗号化して保存する段階をさらに有することができる。
【００１０】
好ましくは、前記(g)段階は、索引検索技法として、Ｂ＋木アルゴリズム、ハッシュ(hash)アルゴリズムおよびビットマップ(bitmap)アルゴリズム中の一つを利用することができる。
【００１１】
好ましくは、前記Ｂ＋木アルゴリズム、前記ハッシュアルゴリズムおよび前記ビットマップアルゴリズムは、所望の検索データを探すための基準値を含む内部ノード(internal  node)と、前記索引情報を含むリーフノード(leaf  node)を含む形態でなすことができる。
【００１２】
好ましくは、前記リーフノードに、位置情報だけが異なって同じデータを有する重複データを含む下位リーフノードが存在する場合、前記重複データを含む前記下位リーフノードを括ってセットで構成することによってオーバーヘッドを最小化することができる。
【００１３】
好ましくは、前記重複データを含む前記下位リーフノードの中の一つのリーフノードの下位に位置情報だけを含む下位リーフノードを生成してセットで構成するものであり得る。
【００１４】
好ましくは、前記(f)段階は、前記データベースが使用者定義索引技法を提供する場合には、前記使用者定義索引技法を利用して前記索引情報テーブルを生成し、前記データベースが使用者定義索引技法を提供しない場合には使用者定義関数とトリガーを利用して前記索引情報テーブルを生成することができる。
【００１５】
本発明の一実施例に係るデータベースで個人情報の保護のために暗号化されたフィールドに対する索引生成装置は、データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成装置において、索引するデータの距離を計算する基準値を生成する基準値生成部；索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込んだ後、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出し、抽出した原本データと基準値の間の距離値を計算する距離値計算部；および前記距離値に対応する原本データの位置情報を距離値にマッチングさせて保存して索引情報テーブルを生成する索引生成部；を具備する。
【００１６】
好ましくは、前記基準値生成部は前記原本データの最大長とタイプを基準として乱数を発生して前記基準値を生成する。
【００１７】
好ましくは、前記距離値計算部は前記原本データが文字列で構成されている場合に、前記原本データの最初の文字列の順序情報に基づいて前記基準値との差を計算して前記距離値を計算する。
【００１８】
好ましくは、前記距離値計算部は前記距離値を大きさおよび符号を基準として整列する。
【００１９】
好ましくは、検索対象原本データと基準値との距離である入力距離値を計算し、入力距離値を前記索引情報テーブルに保存された距離値と比較して前記検索対象原本データを検索するデータ検索部をさらに具備する。
【発明の効果】
【００２０】
本発明に係るデータベースの暗号化されたフィールドに対する索引生成および検索方法によれば、暗号化されたデータ状態で索引を構築することができるので、住民票コードのような個人情報を効果的に保護できる長所がある。また、本発明はリーフノードで重複したデータを含むリーフノードをセットで構成してオーバーヘッドを減少させることによって検索時間を最小化できる長所がある。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法を説明する順序図である。
【図２】学生の名前と学籍番号情報を含むテーブルと、学籍番号情報が暗号化されたテーブルを示している図である。
【図３】図２の暗号化されたテーブルで暗号化された学籍番号データの順序値に基づいて基準値との距離値を含むテーブルと、距離値を順に整列したテーブルを示している図である。
【図４】図３のテーブル情報に基づいてＢ＋木アルゴリズムを利用して生成した索引情報テーブルを示している図である。
【図５】本発明の一実施例に係る暗号化されたフィールドに対する索引生成装置の構成を図示したブロック図である。
【発明を実施するための形態】
【００２２】
以下、添付された図面を参照して本発明の好ましい実施例を詳細に説明する。
【００２３】
本発明の実施例は当該技術分野で通常の知識を有した者に本発明をさらに完全に説明するために提供されるものであり、下記の各実施例は多様な他の形態に変形することができ、本発明の範囲は下記の実施例に限定されるものではない。かえって、これらの実施例は本開示をさらに忠実かつ完全にし、当業者に本発明の思想を完全に伝達するために提供するものである。
【００２４】
本明細書に用いられた用語は特定の実施例を説明するためのもので、本発明を制限するためのものではない。本明細書にて用いられた通り、単数の形態は文脈上明確に他の場合を意味しない限り、複数の形態を含むことができる。また、本明細書で用いられる、「含む(comprise)」および/または「含む(comprising)」は言及した各形状、数字、段階、動作、部材、要素および/または、これらのグループの存在を特定するものであり、一つ以上の他の形状、数字、動作、部材、要素および/または、グループの存在または、付加を排除するものではない。本明細書で用いられるように、用語、「および/または」は、該当列挙された項目中のいずれか一つおよび一つ以上のすべての組合せを含む。
【００２５】
本明細書において、第１、第２等の用語は多様な部材、領域および/または、部位を説明するために用いられるが、これらの部材、部品、領域、層および/または、部位はこれらの用語によって限定されないことは自明である。これらの用語は、特定順序や上下、または、優劣を意味せず、一つの部材、領域または、部位を他の部材、領域または、部位と区別するためにのみ用いられる。したがって、以下で詳述する第１部材、領域または、部位は本発明の範囲から逸脱することなく第２部材、領域または、部位を指し示すことができる。
【００２６】
以下、本発明の各実施例を図面を参照して説明する。図面において、例えば、製造技術および/または、公差により、図示された形状の変形が予想され得る。したがって、本発明の実施例は本明細書に図示された領域の特定形状に制限されないものと解釈されるべきであり、例えば、製造上招来され得る形状の変化を含むべきである。
【００２７】
図１は本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法の遂行過程を図示した順序図である。
【００２８】
図１を参照すれば、本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法は、まず、索引を生成するために、索引対象であるテーブルと、そのフィールド名、暗号化方法などの属性情報を伝達しながら索引生成関数を呼び出す(S１００)。この時、索引を生成する方法はDBMSの種類によってそれぞれ異なり得るが、これに関しては後述する。
【００２９】
次に、索引情報テーブルに索引情報が存在するかを確認し(S１１０)、索引情報が構築されている場合にはすでに生成された索引であることを使用者に知らせた後、索引生成作業を終了する。これとは違って、索引情報が構築されていない場合には索引するデータの距離を計算する基準値を生成する(S１２０)。この時、基準値は原本データの最大長とタイプを基準として乱数を発生して生成することができる。しかし、基準値は乱数以外にも多様な方法で決定することができることはいうまでもない。この時、基準値は必要に応じてセキュリティーのために暗号化して保存することができる。
【００３０】
基準値を生成した後、索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込む(S１３０)。この時、暗号化データは住民票コード、生年月日など、データベースで個人情報の保護のためにあらかじめ暗号化されているデータを意味する。
【００３１】
次に、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する(S１４０)。この時、フィールドでの位置情報はテーブルの該当フィールドでの列番号を意味し得る。すなわち、暗号化データを復号化して原本データを復元する時、それぞれの原本データのテーブルでの位置情報(該当フィールドでの列番号など)を共に保存することができる。
【００３２】
前記のように、原本データが抽出されると原本データと距離値を計算する(S１５０)。例えば、原本データが文字列で構成されている場合、原本データの最初の文字列の順序情報に基づいて基準値との差を計算して距離値を計算することができる。他の実施例として、基準値を原本データのように文字列で構成することもでき、原本データと基準値を含んで順序情報に基づいて距離値を計算することもできる。
【００３３】
次に、距離値を大きさおよび符号を基準として整列させる(S１６０)。例えば、距離値は原本データの順序情報から基準値を引いた値に設定され得るが、このような場合、距離値は負の値を有するか、正の値または０の値を有することができる。この時、距離値が負の値を有すると大きさの大きい値であるほど距離が最も近いものと、距離値が正の値を有すると大きさの大きい値であるほど距離が最も遠いものと判断することができる。もちろん、整列順序によってこれと反対となることもある。
【００３４】
このように距離値が整列されると、距離値に対応する原本データの位置情報をマッチングさせて保存することによって索引情報テーブルを生成する(S１７０)。特定原本データに対する検索が必要な場合、特定原本データと基準値との距離である入力距離値を計算し、入力距離値を索引情報テーブルに保存された距離値と比較することによって特定原本データを検索することができる。この時、索引検索技法としては、広く用いられている多様な技法を利用することができるが、例えば、Ｂ＋木アルゴリズム、ハッシュ(hash)アルゴリズム、ビットマップ(Bitmap)アルゴリズムの中の一つを利用することができる。これらのアルゴリズムは、所望の検索データを探すための基準値を含む内部ノード(internal  nodes)と、索引情報を含むリーフノード(leaf  nodes)を含むツリー構造を有することができる。これに対しては図４を参照して後述する。
【００３５】
前述した通り、DBMS中にはオラクルのように使用者が索引機能を作ることができるDBMSがある反面、MS-SQLのようにこのような機能を提供しないDBMSもある。このような機能を使用者定義索引と呼び、オラクルではドメインインデックス(domain
index)と呼んでいる。
【００３６】
DBMSが使用者定義技法を提供する場合に、DBMSは使用者が作成した索引のために、DDL文(例えば、create  index、drop  index、alter  indexなど)を提供し、テーブルにデータ挿入、変更、削除が発生する場合、自動的に索引構造を変更することができるようにして、使用者定義索引を利用して検索できる機能を提供する。
【００３７】
ここではオラクルをベースに説明する。オラクルは使用者定義索引技法である‘domain  index’を提供するが、‘domain  index’では、‘index  type’を定義して使用できるようにする。例えば、‘security  index(SI)index  type’を次のように作ることができる。
【００３８】
<Create  indextype  SI_index  for  SI_eq(varchar２、varchar２)using  SI_im；>
‘SI_eq()’は、ドメインインデックスを利用して検索をするための検索関数(必要な複数の関数を定義することができる)であり、‘SI_im’は索引の内部を構成する関数部分を指定する。内部を構成する関数、‘skeleton’は、create()、drop()、alter()、insert()、delete()、update()、truncate()などで構成されており、使用者定義索引を製作する開発者が内部を構成するようになっている。
【００３９】
また、ドメインインデックスを使用するために、indexstart()、fetch()、close()の三つの関数skeletonを提供して、構成された索引検索を通じて適合したデータ結果を伝達できるようにする。また、例えばインデックスを下記のように生成することができる。
【００４０】
<Create  index「索引名」on「テーブル名(フィールド名)」indextype  is  SI_index；>
前記のように、使用者定義索引技法を提供するDBMSの場合には機能に合わせて暗号化索引技法を構成すれば良く、検索時には使用者定義索引を使用できる関数を構成して検索することができる。例えば、住民票コードが‘７１０００５-１０２８９３３’である使用者の他の情報を探す時は、次の通りである。
【００４１】
(暗号化前)<select*  from  table  where  jumin=‘７０１００５-１０２８９３３’>
(暗号化後)<select*  from  table  where  SI_eq(jumin、‘７０１００５-１０２８９３３’)=１>
一方、使用者定義索引技法を提供しないDBMSの場合には前記のような方法を使用することができず、使用者定義関数を作って索引を生成、削除および再生成をしなければならない。そして、テーブルにデータが挿入、削除および修正される時にもDBMSが自動で索引構成処理のために呼び出しをしないので、該当テーブルにトリガーを設定して索引データを構成しなければならない。構築された索引を検索する方法も既存の方式を利用することができず、次のように、‘sub-query’と、‘in-query’を利用して処理しなければならない。
【００４２】
(暗号化前)<select*  from  table  where  jumin=‘７０１００５-１０２８９３３’>
(暗号化後)<select*  from  table  where  rowed  in(select*  from  SI_eq(jumin、‘７０１００５-１０２８９３３’))>
rowidは該当テーブルでrecord idであり、rowidを支援しないDBMSである場合には、record indentifierのためにuniqueなフィールドを作って入れる。uniqueなフィールド値は数字を自動で増加するincrement constraintを使用するか、micro-secondのtime値を利用してuniqueな値を作ることができる。
【００４３】
以下では図２〜図４を参照して、実際の例示テーブルを参照して本発明に係る索引生成および検索方法を説明することにする。
【００４４】
図２は学生たちの名前と学籍番号情報を含むテーブルと、学籍番号情報が暗号化されたテーブルを示している図面である。
【００４５】
図２の(a)には８人の学生等に対する名前および学籍番号情報が含まれた原本テーブルが示されている。しかし、学籍番号の場合、個人情報の保護のために露出されない必要があるので学籍番号情報を暗号化して図２の(b)のようなテーブルを作ることができる。このように、図２の(b)のテーブルが完成されると、使用者は暗号化された学籍番号データしか見ることができないので個人情報の露出が制限される。しかし、暗号化された学籍番号情報をそのまま整列させると、これは原本データの順序とは全く関係がなくなるので、索引情報が無意味となる。したがって、図３に図示された通り、図２の暗号化されたテーブルで暗号化された学籍番号をあらかじめ設定された基準値との距離値を求めて、距離値を順に整列する必要がある。
【００４６】
図３の(a)では説明の便宜上暗号化された学籍番号の復号化されたデータを抽出し、基準値である１９９９０００との距離値を計算した。例えば、‘AAXY’を復号化した値は１９９９０００２であるので、距離値は‘１９９９０００２-１９９９００００=２’である。また、‘ZOXT’の場合、複合化した値が１９９９０００４であり、距離値は‘１９９９０００４-１９９９００００=４’である。
【００４７】
次に、距離値は図３の(b)のように、距離値の大きさおよび符号を基準として距離が近い値から距離が遠い値の順で再整列され得る。この時、各距離値に対応する原本データの位置情報が共にマッチングされて保存される。
【００４８】
前記のような情報を構築すれば、特定原本データを探そうとする場合、基準値との距離情報を求めて、これを前記情報と比較することによって原本データを容易に検索することができる。
【００４９】
図４は図３のテーブル情報に基づいてＢ＋木アルゴリズムを利用して生成した索引情報テーブルを示している図面である。
【００５０】
図４のように、Ｂ＋木アルゴリズムを利用した索引テーブル情報は、ルートノード(root  node)を含む内部ノード(internal  node：４２)とリーフノード(leaf  node：４４)とから構成される。内部ノードは所望の値を探すための基準値と下位ノードを示すポインタ(pointer)を含んで構成され、リーフノードは探そうとする実際のデータ値(例えば、索引情報テーブルの値)が保存されているものであり、リーフノードは両方向ポインタを有している。両方向ポインタは次のデータを容易に探していくことができるようにする。
【００５１】
索引情報テーブル、内部モードおよびリーフノードに対する属性はほとんど既存の方式と類似するので説明を省略し、リーフノードの一部の新しい構成は後述する。
【００５２】
例えば、図４の索引情報テーブルを通じて学籍番号が‘１９９９０００６’である学生に対する名前のような他のフィールド情報を探したい場合に、あらかじめ構築された基準値(１９９９００００)との距離値を求める。距離値は入力値１９９９０００６から基準値である１９９９００００を引いた６となる。
【００５３】
入力距離値６は、ルートノードの値と先に比較される。まず５と比較すると、６は５より大きいので５の右側の下位ノードに進んで行く。次に、下位ノードの７と比較することになるが、７よりは小さい値であるため７の左側ノードに降りて行く。７の左側ノードはリーフノードであるためここで６値があるかを探す。６値はリーフノードの２番目にあり、対応する位置情報として‘Ｌ８’が抽出される。したがって、使用者は‘Ｌ８’情報から図２のテーブルから該当学籍番号を有する学生の名前が「キンカブトン」である事実を確認することができるようになる。
【００５４】
一方、本発明は既存のアルゴリズムとは重複データを処理する方式において差がある。
【００５５】
既存のアルゴリズムでは、重複したデータが存在する場合、図４のリーフノードの構成でいうと、重複したデータを横に続けてノードを生成する構造を取っていたので、実際に重複したデータが存在するかの可否をフルスキャン(full-scan)をしないと分からない問題があった。本発明はこのような検索の非効率を解消するために、重複したデータ値は該当リードノードの下位リーフノードでセットで構成することによって、オーバーヘッドを最小化し、迅速な検索性能を有するようにした。すなわち、図４で‘３’を探した場合に、重複したデータ(すなわち、距離値が同一なデータ)が複数個(例えば、４個)存在すれば、図面符号４５のように、‘３(Ｌ５)’の下位に合計４個のリーフノードをセットで構成する。
【００５６】
下位リーフノードには、‘Ｌ１２、Ｌ１５、Ｌ１７、Ｌ２５’の位置情報だけが含まれ、これらの下位リーフノードが検索される場合、‘Ｌ５’の位置情報とともに使用者に提供される。すなわち、使用者が学籍番号１９９９０００３を探す場合、距離値３をもって索引情報から探すと、‘Ｌ５、Ｌ１２、Ｌ１５、Ｌ１７、Ｌ２５’のすべての位置情報を一括的に確認することができるようになる。
【００５７】
本発明はこのように暗号化されたフィールドの暗号化データをそのまま利用して索引を生成し、検索を遂行することができ、重複データに対して下位リーフノードのセットを構成することによって検索効率を向上させることができる長所がある。
【００５８】
図５は本発明に係る暗号化されたフィールドに対する索引生成装置に対する好ましい実施例の構成を図示したブロック図である。
【００５９】
図５を参照すれば、本発明に係る暗号化されたフィールドに対する索引生成装置に対する好ましい実施例は、基準値生成部５１０、距離値計算部５２０および索引生成部５３０を具備する。
【００６０】
基準値生成部５１０は索引するデータの距離を計算する基準値を生成する。この時、基準値は原本データの最大長とタイプを基準として乱数を発生して生成することができる。しかし、基準値を乱数以外の多様な方法で決定することができることはいうまでもない。この時、基準値は必要に応じてセキュリティーのために暗号化して保存することができる。
【００６１】
距離値計算部５２０は索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込んだ後、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する。この時、暗号化データは住民票コード、生年月日などデータベースで個人情報の保護のためにあらかじめ暗号化されているデータを意味し、フィールドでの位置情報はテーブルの該当フィールドでの列番号を意味し得る。次に、距離値計算部５２０は抽出した原本データと基準値の間の距離値を計算する。例えば、原本データが文字列で構成されている場合に、原本データの最初の文字列の順序情報に基づいて基準値との差を計算して距離値を計算することができる。他の実施例として、基準値を原本データのように文字列で構成することができ、原本データと基準値を含んで順序情報に基づいて距離値を計算することもできる。次に、距離値計算部５２０は距離値を大きさおよび符号を基準として整列させる。例えば、距離値は原本データの順序情報から基準値を引いた値に設定され得るが、このような場合、距離値は負の値を有するか、正の値または０の値を有することができる。この時、距離値が負の値を有し大きさが大きい値であるほど距離が最も近いものと、距離値が正の値を有し大きさが大きい値であるほど距離が最も遠いものと判断することができる。もちろん、整列順序によってこれと反対となることもできる。
【００６２】
索引生成部５３０は整列した距離値に対応する原本データの位置情報を距離値にマッチングさせて保存することによって索引情報テーブルを生成する。このように生成された索引情報テーブルに基づいて特定の原本データに対する検索が必要な場合に、該当原本データと基準値との距離である入力距離値を計算し、入力距離値を索引情報テーブルに保存された距離値と比較することによって該当原本データを検索することができる。このような索引情報テーブルを利用した原本データの検索はデータ検索部５４０により遂行され得る。
【００６３】
以上、図面を参照して本発明の実施形態に対して説明した。しかし、これは単に本発明を説明するための目的で記述されたものであり、本発明の内容をこれに限定したり制限するために記述されたものではない、したがって、本技術分野の通常の知識を有した者であれば、これから多様な変形および均等な他の実施例を実施することが可能であろう。したがって、本発明の真の技術的保護範囲は添付された特許請求の範囲の技術的事項によって定められるべきである。
【図１】
2016533606.tif 000003
【図２】
2016533606.tif 000004
【図３】
2016533606.tif 000005
【図４】
2016533606.tif 000006
【図５】
2016533606.tif 000007
【国際調査報告】
2016533606.tif 000008
2016533606.tif 000009
2016533606.tif 000010
2016533606.tif 000011