特許第6181882号(P6181882)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファスー ドット コム カンパニー リミテッドの特許一覧

特許6181882データベースで暗号化されたフィールドに対する索引生成方法および装置
<>
  • 特許6181882-データベースで暗号化されたフィールドに対する索引生成方法および装置 図000002
  • 特許6181882-データベースで暗号化されたフィールドに対する索引生成方法および装置 図000003
  • 特許6181882-データベースで暗号化されたフィールドに対する索引生成方法および装置 図000004
  • 特許6181882-データベースで暗号化されたフィールドに対する索引生成方法および装置 図000005
  • 特許6181882-データベースで暗号化されたフィールドに対する索引生成方法および装置 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6181882
(24)【登録日】2017年7月28日
(45)【発行日】2017年8月16日
(54)【発明の名称】データベースで暗号化されたフィールドに対する索引生成方法および装置
(51)【国際特許分類】
   G06F 17/30 20060101AFI20170807BHJP
   G06F 21/60 20130101ALI20170807BHJP
【FI】
   G06F17/30 414Z
   G06F17/30 120A
   G06F21/60
【請求項の数】14
【全頁数】12
(21)【出願番号】特願2016-546723(P2016-546723)
(86)(22)【出願日】2014年10月13日
(65)【公表番号】特表2016-533606(P2016-533606A)
(43)【公表日】2016年10月27日
(86)【国際出願番号】KR2014009572
(87)【国際公開番号】WO2015056939
(87)【国際公開日】20150423
【審査請求日】2016年4月5日
(31)【優先権主張番号】10-2013-0122102
(32)【優先日】2013年10月14日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】515204753
【氏名又は名称】ファスー ドット コム カンパニー リミテッド
【氏名又は名称原語表記】FASOO. COM CO., LTD
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】チョウ,キュ−ゴン
(72)【発明者】
【氏名】クォン,オ−スン
【審査官】 吉田 誠
(56)【参考文献】
【文献】 特開2005−242740(JP,A)
【文献】 特表2010−506289(JP,A)
【文献】 イーデルステイン ハーブ,テクニカルフォーラムfrom U.S.A.,日経コンピュータ,日本,日経BP社,1996年 2月 5日,no.384,139−144ページ
【文献】 青江 順一,キー検索技法−III,情報処理,日本,社団法人情報処理学会,1993年 1月15日,第34巻 第1号,106−113ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成するために索引生成装置が実行する方法において、
(a)データベースから、暗号化されたフィールドに対応する暗号化データを読み込む段階;
(b)前記暗号化データを復号化して、前記暗号化されたフィールドでの位置情報および原本データを抽出する段階;
(c)基準値を生成する段階;
(d)前記原本データと前記基準値との間の距離値を計算する段階;
(e)前記距離値を前記距離値の大きさおよび符号を基準として整列させる段階;および
(f)前記距離値に前記原本データの位置情報をマッチングさせることによって、前記位置情報および距離値が保存される索引情報テーブルを生成する段階;を含むことを特徴とする、暗号化されたフィールドに対する索引生成方法。
【請求項2】
(g)特定の原本データに対する検索が必要な場合、前記特定の原本データと前記基準値との距離である入力距離値を計算し、前記入力距離値を前記索引情報テーブルに保存された前記距離値と比較することによって前記特定の原本データをデータベースにおいて検索する段階をさらに含むことを特徴とする、請求項1に記載の暗号化されたフィールドに対する索引生成方法。
【請求項3】
前記(c)段階で、乱数を利用して前記基準値を生成することを特徴とする、請求項1に記載の暗号化されたフィールドに対する索引生成方法。
【請求項4】
前記(c)段階および前記(d)段階の間に、
前記基準値を暗号化して保存する段階をさらに含むことを特徴とする、請求項1に記載の暗号化されたフィールドに対する索引生成方法。
【請求項5】
前記(g)段階は、
索引検索技法としてB+木アルゴリズム、ハッシュ(hash)アルゴリズムおよびビットマップ(Bitmap)アルゴリズムの中の少なくとも一つを利用することを特徴とする、請求項1に記載の暗号化されたフィールドに対する索引生成方法。
【請求項6】
前記B+木アルゴリズム、前記ハッシュアルゴリズムおよび前記ビットマップアルゴリズムの中の少なくとも一つは、
所望の検索データを探すための基準値を含む内部ノード(internal node)と、索引情報を含むリーフノード(leaf node)を含む木構造を利用して実行されることを特徴とする、請求項5に記載の暗号化されたフィールドに対する索引生成方法。
【請求項7】
前記リーフノードに、異なる位置情報および重複データを含む下位リーフノードが存在する場合、前記異なる位置情報および重複データを含む前記下位リーフノードは、オーバーヘッド最小化されるように、グループ化されることを特徴とする、請求項6に記載の暗号化されたフィールドに対する索引生成方法。
【請求項8】
前記重複データを含む前記下位リーフノードの中の一つのリーフノードの下位に位置情報だけを含む下位リーフノードを生成してセットで構成することを特徴とする、請求項7に記載の暗号化されたフィールドに対する索引生成方法。
【請求項9】
前記(f)段階は、
前記データベースが使用者定義索引技法を提供する場合には、前記使用者定義索引技法を利用して前記索引情報テーブルを生成し、
前記データベースが使用者定義索引技法を提供しない場合には、使用者定義関数とトリガーを利用して前記索引情報テーブルを生成することを特徴とする、請求項1に記載の暗号化されたフィールドに対する索引生成方法。
【請求項10】
データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成する装置において、
索引するデータの距離を計算するための基準値を生成する基準値生成部;
索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込み、暗号化データを復号化して、前記暗号化されたフィールドでの位置情報および原本データを抽出し、抽出した原本データと基準値の間の距離値を計算する距離値計算部;および
記原本データの位置情報を距離値にマッチングさせることによって、前記位置情報および距離値が保存される索引情報テーブルを生成する索引生成部;を含むことを特徴とする、暗号化されたフィールドに対する索引生成装置。
【請求項11】
前記基準値生成部は前記原本データの最大長とタイプを基準として乱数を発生して前記基準値を生成することを特徴とする、請求項10に記載の暗号化されたフィールドに対する索引生成装置。
【請求項12】
前記距離値計算部は前記原本データが文字列で構成されている場合に、前記原本データの最初の文字列の順序情報に基づいて前記基準値との差を計算して前記距離値を計算することを特徴とする、請求項10に記載の暗号化されたフィールドに対する索引生成装置。
【請求項13】
前記距離値計算部は前記距離値を大きさおよび符号を基準として整列することを特徴とする、請求項10に記載の暗号化されたフィールドに対する索引生成装置。
【請求項14】
検索対象原本データと基準値との間の距離である入力距離値を計算し、入力距離値を前記索引情報テーブルに保存された距離値と比較して前記検索対象原本データを検索するデータ検索部をさらに含むことを特徴とする、請求項10に記載の暗号化されたフィールドに対する索引生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータベースで暗号化されたフィールドに対する索引生成方法および装置に関するもので、より詳細には、データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法および装置、そして生成された索引を利用してデータを検索する方法および装置に関するものである。
【背景技術】
【0002】
オラクルのようなDBMS(Database Management System)は、保存されたデータを迅速に探すためにデータ特性や検索特性に合わせて多様な索引(index)技法を提供する。仮に、索引技法を使用しない場合には、所望のデータを検索するために保存されたデータ値をすべてスキャン(full-scan)しなければならず、データ量の増加につれて検索時間が幾何級数的に増加する現象が発生することになる。したがって、DBMSで多量のデータから所望のデータを検索するためには索引技法の支援は必須である。
【0003】
しかしながら、DMBSが支援する既存の索引技法は、暗号化されたデータに対しては正しく動作しない問題点が存在する。また、オラクルやMS-SQLでは自体で提供する暗号化された技法を使う場合、暗号化されたデータに対する索引技法の適用が可能であるが、個人情報の保護に関する法律で提示している多様な暗号化技法(ARIA、SEED、ASE、DESなど)を支援しない問題がある。一方、一部のDBMSは暗号化されたデータを復号化して索引データを作るFBI(Function
Based Index)という機能を提供する。しかし、この方法は索引データの内容が暗号化されていない状態で構築されるので、個人情報が露出される現象が発生する恐れがあり、個人情報の保護のためには使用できないという問題がある。
【0004】
したがって、個人情報の保護のために暗号化されたフィールドのデータを迅速に検索するためには、暗号化されたデータが原データの順序をそれでも受け継ぐことができないため、必ず復号化されたデータをベースに暗号化フィールド索引を構築する方法と、生成された暗号化フィールド索引を利用して暗号化されたデータを検索できる方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は前述した問題点を解決するために案出されたもので、暗号化されたフィールドの内容を復号化して保存することなく、暗号化されたデータそのままで索引を構築し、構築された索引を利用して迅速にデータを検索することができる暗号化されたフィールドに対する索引生成方法および装置を提供することにその目的がある。
【課題を解決するための手段】
【0006】
このための本発明の一実施例に係るデータベースで個人情報の保護のために暗号化されたフィールドに対する索引生成方法は、(a)データベースで暗号化されたフィールドに対する暗号化データを読み込む段階と、(b)前記暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する段階と、(c)基準値を生成する段階と、(d)前記原本データと前記基準値との距離値を計算する段階と、(e)前記距離値を前記距離値の大きさおよび符号を基準として整列させる段階と、(f)前記距離値に対応する前記原本データに位置情報をマッチングさせて保存することによって索引情報テーブルを生成する段階と、を有する。
【0007】
好ましくは、(g)特定の原本データに対する検索が必要な場合、前記特定の原本データと前記基準値との距離である入力距離値を計算し、前記入力距離値を前記索引情報テーブルに保存された前記距離値と比較することによって前記特定の原本データを検索する段階をさらに有することができる。
【0008】
好ましくは、前記(c)段階で、乱数を利用して前記基準値を生成することができる。
【0009】
好ましくは、前記(c)段階および前記(d)段階の間に、前記基準値を暗号化して保存する段階をさらに有することができる。
【0010】
好ましくは、前記(g)段階は、索引検索技法として、B+木アルゴリズム、ハッシュ(hash)アルゴリズムおよびビットマップ(bitmap)アルゴリズム中の一つを利用することができる。
【0011】
好ましくは、前記B+木アルゴリズム、前記ハッシュアルゴリズムおよび前記ビットマップアルゴリズムは、所望の検索データを探すための基準値を含む内部ノード(internal node)と、前記索引情報を含むリーフノード(leaf node)を含む形態でなすことができる。
【0012】
好ましくは、前記リーフノードに、位置情報だけが異なって同じデータを有する重複データを含む下位リーフノードが存在する場合、前記重複データを含む前記下位リーフノードを括ってセットで構成することによってオーバーヘッドを最小化することができる。
【0013】
好ましくは、前記重複データを含む前記下位リーフノードの中の一つのリーフノードの下位に位置情報だけを含む下位リーフノードを生成してセットで構成するものであり得る。
【0014】
好ましくは、前記(f)段階は、前記データベースが使用者定義索引技法を提供する場合には、前記使用者定義索引技法を利用して前記索引情報テーブルを生成し、前記データベースが使用者定義索引技法を提供しない場合には使用者定義関数とトリガーを利用して前記索引情報テーブルを生成することができる。
【0015】
本発明の一実施例に係るデータベースで個人情報の保護のために暗号化されたフィールドに対する索引生成装置は、データベースで個人情報の保護のために暗号化されたフィールドに対する索引生成装置において、索引するデータの距離を計算する基準値を生成する基準値生成部;索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込んだ後、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出し、抽出した原本データと基準値の間の距離値を計算する距離値計算部;および前記距離値に対応する原本データの位置情報を距離値にマッチングさせて保存して索引情報テーブルを生成する索引生成部;を具備する。
【0016】
好ましくは、前記基準値生成部は前記原本データの最大長とタイプを基準として乱数を発生して前記基準値を生成する。
【0017】
好ましくは、前記距離値計算部は前記原本データが文字列で構成されている場合に、前記原本データの最初の文字列の順序情報に基づいて前記基準値との差を計算して前記距離値を計算する。
【0018】
好ましくは、前記距離値計算部は前記距離値を大きさおよび符号を基準として整列する。
【0019】
好ましくは、検索対象原本データと基準値との距離である入力距離値を計算し、入力距離値を前記索引情報テーブルに保存された距離値と比較して前記検索対象原本データを検索するデータ検索部をさらに具備する。
【発明の効果】
【0020】
本発明に係るデータベースの暗号化されたフィールドに対する索引生成および検索方法によれば、暗号化されたデータ状態で索引を構築することができるので、住民票コードのような個人情報を効果的に保護できる長所がある。また、本発明はリーフノードで重複したデータを含むリーフノードをセットで構成してオーバーヘッドを減少させることによって検索時間を最小化できる長所がある。
【図面の簡単な説明】
【0021】
図1】本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法を説明する順序図である。
図2】学生の名前と学籍番号情報を含むテーブルと、学籍番号情報が暗号化されたテーブルを示している図である。
図3図2の暗号化されたテーブルで暗号化された学籍番号データの順序値に基づいて基準値との距離値を含むテーブルと、距離値を順に整列したテーブルを示している図である。
図4図3のテーブル情報に基づいてB+木アルゴリズムを利用して生成した索引情報テーブルを示している図である。
図5】本発明の一実施例に係る暗号化されたフィールドに対する索引生成装置の構成を図示したブロック図である。
【発明を実施するための形態】
【0022】
以下、添付された図面を参照して本発明の好ましい実施例を詳細に説明する。
【0023】
本発明の実施例は当該技術分野で通常の知識を有した者に本発明をさらに完全に説明するために提供されるものであり、下記の各実施例は多様な他の形態に変形することができ、本発明の範囲は下記の実施例に限定されるものではない。かえって、これらの実施例は本開示をさらに忠実かつ完全にし、当業者に本発明の思想を完全に伝達するために提供するものである。
【0024】
本明細書に用いられた用語は特定の実施例を説明するためのもので、本発明を制限するためのものではない。本明細書にて用いられた通り、単数の形態は文脈上明確に他の場合を意味しない限り、複数の形態を含むことができる。また、本明細書で用いられる、「含む(comprise)」および/または「含む(comprising)」は言及した各形状、数字、段階、動作、部材、要素および/または、これらのグループの存在を特定するものであり、一つ以上の他の形状、数字、動作、部材、要素および/または、グループの存在または、付加を排除するものではない。本明細書で用いられるように、用語、「および/または」は、該当列挙された項目中のいずれか一つおよび一つ以上のすべての組合せを含む。
【0025】
本明細書において、第1、第2等の用語は多様な部材、領域および/または、部位を説明するために用いられるが、これらの部材、部品、領域、層および/または、部位はこれらの用語によって限定されないことは自明である。これらの用語は、特定順序や上下、または、優劣を意味せず、一つの部材、領域または、部位を他の部材、領域または、部位と区別するためにのみ用いられる。したがって、以下で詳述する第1部材、領域または、部位は本発明の範囲から逸脱することなく第2部材、領域または、部位を指し示すことができる。
【0026】
以下、本発明の各実施例を図面を参照して説明する。図面において、例えば、製造技術および/または、公差により、図示された形状の変形が予想され得る。したがって、本発明の実施例は本明細書に図示された領域の特定形状に制限されないものと解釈されるべきであり、例えば、製造上招来され得る形状の変化を含むべきである。
【0027】
図1は本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法の遂行過程を図示した順序図である。
【0028】
図1を参照すれば、本発明の一実施例に係る暗号化されたフィールドに対する索引生成方法は、まず、索引を生成するために、索引対象であるテーブルと、そのフィールド名、暗号化方法などの属性情報を伝達しながら索引生成関数を呼び出す(S100)。この時、索引を生成する方法はDBMSの種類によってそれぞれ異なり得るが、これに関しては後述する。
【0029】
次に、索引情報テーブルに索引情報が存在するかを確認し(S110)、索引情報が構築されている場合にはすでに生成された索引であることを使用者に知らせた後、索引生成作業を終了する。これとは違って、索引情報が構築されていない場合には索引するデータの距離を計算する基準値を生成する(S120)。この時、基準値は原本データの最大長とタイプを基準として乱数を発生して生成することができる。しかし、基準値は乱数以外にも多様な方法で決定することができることはいうまでもない。この時、基準値は必要に応じてセキュリティーのために暗号化して保存することができる。
【0030】
基準値を生成した後、索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込む(S130)。この時、暗号化データは住民票コード、生年月日など、データベースで個人情報の保護のためにあらかじめ暗号化されているデータを意味する。
【0031】
次に、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する(S140)。この時、フィールドでの位置情報はテーブルの該当フィールドでの列番号を意味し得る。すなわち、暗号化データを復号化して原本データを復元する時、それぞれの原本データのテーブルでの位置情報(該当フィールドでの列番号など)を共に保存することができる。
【0032】
前記のように、原本データが抽出されると原本データと距離値を計算する(S150)。例えば、原本データが文字列で構成されている場合、原本データの最初の文字列の順序情報に基づいて基準値との差を計算して距離値を計算することができる。他の実施例として、基準値を原本データのように文字列で構成することもでき、原本データと基準値を含んで順序情報に基づいて距離値を計算することもできる。
【0033】
次に、距離値を大きさおよび符号を基準として整列させる(S160)。例えば、距離値は原本データの順序情報から基準値を引いた値に設定され得るが、このような場合、距離値は負の値を有するか、正の値または0の値を有することができる。この時、距離値が負の値を有すると大きさの大きい値であるほど距離が最も近いものと、距離値が正の値を有すると大きさの大きい値であるほど距離が最も遠いものと判断することができる。もちろん、整列順序によってこれと反対となることもある。
【0034】
このように距離値が整列されると、距離値に対応する原本データの位置情報をマッチングさせて保存することによって索引情報テーブルを生成する(S170)。特定原本データに対する検索が必要な場合、特定原本データと基準値との距離である入力距離値を計算し、入力距離値を索引情報テーブルに保存された距離値と比較することによって特定原本データを検索することができる。この時、索引検索技法としては、広く用いられている多様な技法を利用することができるが、例えば、B+木アルゴリズム、ハッシュ(hash)アルゴリズム、ビットマップ(Bitmap)アルゴリズムの中の一つを利用することができる。これらのアルゴリズムは、所望の検索データを探すための基準値を含む内部ノード(internal nodes)と、索引情報を含むリーフノード(leaf nodes)を含むツリー構造を有することができる。これに対しては図4を参照して後述する。
【0035】
前述した通り、DBMS中にはオラクルのように使用者が索引機能を作ることができるDBMSがある反面、MS-SQLのようにこのような機能を提供しないDBMSもある。このような機能を使用者定義索引と呼び、オラクルではドメインインデックス(domain
index)と呼んでいる。
【0036】
DBMSが使用者定義技法を提供する場合に、DBMSは使用者が作成した索引のために、DDL文(例えば、create index、drop index、alter indexなど)を提供し、テーブルにデータ挿入、変更、削除が発生する場合、自動的に索引構造を変更することができるようにして、使用者定義索引を利用して検索できる機能を提供する。
【0037】
ここではオラクルをベースに説明する。オラクルは使用者定義索引技法である‘domain index’を提供するが、‘domain index’では、‘index type’を定義して使用できるようにする。例えば、‘security index(SI)index type’を次のように作ることができる。
【0038】
<Create indextype SI_index for SI_eq(varchar2、varchar2)using SI_im;>
‘SI_eq()’は、ドメインインデックスを利用して検索をするための検索関数(必要な複数の関数を定義することができる)であり、‘SI_im’は索引の内部を構成する関数部分を指定する。内部を構成する関数、‘skeleton’は、create()、drop()、alter()、insert()、delete()、update()、truncate()などで構成されており、使用者定義索引を製作する開発者が内部を構成するようになっている。
【0039】
また、ドメインインデックスを使用するために、indexstart()、fetch()、close()の三つの関数skeletonを提供して、構成された索引検索を通じて適合したデータ結果を伝達できるようにする。また、例えばインデックスを下記のように生成することができる。
【0040】
<Create index「索引名」on「テーブル名(フィールド名)」indextype is SI_index;>
前記のように、使用者定義索引技法を提供するDBMSの場合には機能に合わせて暗号化索引技法を構成すれば良く、検索時には使用者定義索引を使用できる関数を構成して検索することができる。例えば、住民票コードが‘710005-1028933’である使用者の他の情報を探す時は、次の通りである。
【0041】
(暗号化前)<select* from table where jumin=‘701005-1028933’>
(暗号化後)<select* from table where SI_eq(jumin、‘701005-1028933’)=1>
一方、使用者定義索引技法を提供しないDBMSの場合には前記のような方法を使用することができず、使用者定義関数を作って索引を生成、削除および再生成をしなければならない。そして、テーブルにデータが挿入、削除および修正される時にもDBMSが自動で索引構成処理のために呼び出しをしないので、該当テーブルにトリガーを設定して索引データを構成しなければならない。構築された索引を検索する方法も既存の方式を利用することができず、次のように、‘sub-query’と、‘in-query’を利用して処理しなければならない。
【0042】
(暗号化前)<select* from table where jumin=‘701005-1028933’>
(暗号化後)<select* from table where rowed in(select* from SI_eq(jumin、‘701005-1028933’))>
rowidは該当テーブルでrecord idであり、rowidを支援しないDBMSである場合には、record indentifierのためにuniqueなフィールドを作って入れる。uniqueなフィールド値は数字を自動で増加するincrement constraintを使用するか、micro-secondのtime値を利用してuniqueな値を作ることができる。
【0043】
以下では図2図4を参照して、実際の例示テーブルを参照して本発明に係る索引生成および検索方法を説明することにする。
【0044】
図2は学生たちの名前と学籍番号情報を含むテーブルと、学籍番号情報が暗号化されたテーブルを示している図面である。
【0045】
図2の(a)には8人の学生等に対する名前および学籍番号情報が含まれた原本テーブルが示されている。しかし、学籍番号の場合、個人情報の保護のために露出されない必要があるので学籍番号情報を暗号化して図2の(b)のようなテーブルを作ることができる。このように、図2の(b)のテーブルが完成されると、使用者は暗号化された学籍番号データしか見ることができないので個人情報の露出が制限される。しかし、暗号化された学籍番号情報をそのまま整列させると、これは原本データの順序とは全く関係がなくなるので、索引情報が無意味となる。したがって、図3に図示された通り、図2の暗号化されたテーブルで暗号化された学籍番号をあらかじめ設定された基準値との距離値を求めて、距離値を順に整列する必要がある。
【0046】
図3の(a)では説明の便宜上暗号化された学籍番号の復号化されたデータを抽出し、基準値である1999000との距離値を計算した。例えば、‘AAXY’を復号化した値は19990002であるので、距離値は‘19990002-19990000=2’である。また、‘ZOXT’の場合、複合化した値が19990004であり、距離値は‘19990004-19990000=4’である。
【0047】
次に、距離値は図3の(b)のように、距離値の大きさおよび符号を基準として距離が近い値から距離が遠い値の順で再整列され得る。この時、各距離値に対応する原本データの位置情報が共にマッチングされて保存される。
【0048】
前記のような情報を構築すれば、特定原本データを探そうとする場合、基準値との距離情報を求めて、これを前記情報と比較することによって原本データを容易に検索することができる。
【0049】
図4図3のテーブル情報に基づいてB+木アルゴリズムを利用して生成した索引情報テーブルを示している図面である。
【0050】
図4のように、B+木アルゴリズムを利用した索引テーブル情報は、ルートノード(root node)を含む内部ノード(internal node:42)とリーフノード(leaf node:44)とから構成される。内部ノードは所望の値を探すための基準値と下位ノードを示すポインタ(pointer)を含んで構成され、リーフノードは探そうとする実際のデータ値(例えば、索引情報テーブルの値)が保存されているものであり、リーフノードは両方向ポインタを有している。両方向ポインタは次のデータを容易に探していくことができるようにする。
【0051】
索引情報テーブル、内部モードおよびリーフノードに対する属性はほとんど既存の方式と類似するので説明を省略し、リーフノードの一部の新しい構成は後述する。
【0052】
例えば、図4の索引情報テーブルを通じて学籍番号が‘19990006’である学生に対する名前のような他のフィールド情報を探したい場合に、あらかじめ構築された基準値(19990000)との距離値を求める。距離値は入力値19990006から基準値である19990000を引いた6となる。
【0053】
入力距離値6は、ルートノードの値と先に比較される。まず5と比較すると、6は5より大きいので5の右側の下位ノードに進んで行く。次に、下位ノードの7と比較することになるが、7よりは小さい値であるため7の左側ノードに降りて行く。7の左側ノードはリーフノードであるためここで6値があるかを探す。6値はリーフノードの2番目にあり、対応する位置情報として‘L8’が抽出される。したがって、使用者は‘L8’情報から図2のテーブルから該当学籍番号を有する学生の名前が「キンカブトン」である事実を確認することができるようになる。
【0054】
一方、本発明は既存のアルゴリズムとは重複データを処理する方式において差がある。
【0055】
既存のアルゴリズムでは、重複したデータが存在する場合、図4のリーフノードの構成でいうと、重複したデータを横に続けてノードを生成する構造を取っていたので、実際に重複したデータが存在するかの可否をフルスキャン(full-scan)をしないと分からない問題があった。本発明はこのような検索の非効率を解消するために、重複したデータ値は該当リードノードの下位リーフノードでセットで構成することによって、オーバーヘッドを最小化し、迅速な検索性能を有するようにした。すなわち、図4で‘3’を探した場合に、重複したデータ(すなわち、距離値が同一なデータ)が複数個(例えば、4個)存在すれば、図面符号45のように、‘3(L5)’の下位に合計4個のリーフノードをセットで構成する。
【0056】
下位リーフノードには、‘L12、L15、L17、L25’の位置情報だけが含まれ、これらの下位リーフノードが検索される場合、‘L5’の位置情報とともに使用者に提供される。すなわち、使用者が学籍番号19990003を探す場合、距離値3をもって索引情報から探すと、‘L5、L12、L15、L17、L25’のすべての位置情報を一括的に確認することができるようになる。
【0057】
本発明はこのように暗号化されたフィールドの暗号化データをそのまま利用して索引を生成し、検索を遂行することができ、重複データに対して下位リーフノードのセットを構成することによって検索効率を向上させることができる長所がある。
【0058】
図5は本発明に係る暗号化されたフィールドに対する索引生成装置に対する好ましい実施例の構成を図示したブロック図である。
【0059】
図5を参照すれば、本発明に係る暗号化されたフィールドに対する索引生成装置に対する好ましい実施例は、基準値生成部510、距離値計算部520および索引生成部530を具備する。
【0060】
基準値生成部510は索引するデータの距離を計算する基準値を生成する。この時、基準値は原本データの最大長とタイプを基準として乱数を発生して生成することができる。しかし、基準値を乱数以外の多様な方法で決定することができることはいうまでもない。この時、基準値は必要に応じてセキュリティーのために暗号化して保存することができる。
【0061】
距離値計算部520は索引情報テーブルで暗号化の対象となるフィールドの暗号化データを読み込んだ後、暗号化データを復号化してフィールドでの位置情報を含む原本データを抽出する。この時、暗号化データは住民票コード、生年月日などデータベースで個人情報の保護のためにあらかじめ暗号化されているデータを意味し、フィールドでの位置情報はテーブルの該当フィールドでの列番号を意味し得る。次に、距離値計算部520は抽出した原本データと基準値の間の距離値を計算する。例えば、原本データが文字列で構成されている場合に、原本データの最初の文字列の順序情報に基づいて基準値との差を計算して距離値を計算することができる。他の実施例として、基準値を原本データのように文字列で構成することができ、原本データと基準値を含んで順序情報に基づいて距離値を計算することもできる。次に、距離値計算部520は距離値を大きさおよび符号を基準として整列させる。例えば、距離値は原本データの順序情報から基準値を引いた値に設定され得るが、このような場合、距離値は負の値を有するか、正の値または0の値を有することができる。この時、距離値が負の値を有し大きさが大きい値であるほど距離が最も近いものと、距離値が正の値を有し大きさが大きい値であるほど距離が最も遠いものと判断することができる。もちろん、整列順序によってこれと反対となることもできる。
【0062】
索引生成部530は整列した距離値に対応する原本データの位置情報を距離値にマッチングさせて保存することによって索引情報テーブルを生成する。このように生成された索引情報テーブルに基づいて特定の原本データに対する検索が必要な場合に、該当原本データと基準値との距離である入力距離値を計算し、入力距離値を索引情報テーブルに保存された距離値と比較することによって該当原本データを検索することができる。このような索引情報テーブルを利用した原本データの検索はデータ検索部540により遂行され得る。
【0063】
以上、図面を参照して本発明の実施形態に対して説明した。しかし、これは単に本発明を説明するための目的で記述されたものであり、本発明の内容をこれに限定したり制限するために記述されたものではない、したがって、本技術分野の通常の知識を有した者であれば、これから多様な変形および均等な他の実施例を実施することが可能であろう。したがって、本発明の真の技術的保護範囲は添付された特許請求の範囲の技術的事項によって定められるべきである。
図1
図2
図3
図4
図5