JP5429502B2 - 範囲検索システム、範囲検索方法、及び範囲検索用プログラム - Google Patents

範囲検索システム、範囲検索方法、及び範囲検索用プログラム Download PDF

Info

Publication number
JP5429502B2
JP5429502B2 JP2011524710A JP2011524710A JP5429502B2 JP 5429502 B2 JP5429502 B2 JP 5429502B2 JP 2011524710 A JP2011524710 A JP 2011524710A JP 2011524710 A JP2011524710 A JP 2011524710A JP 5429502 B2 JP5429502 B2 JP 5429502B2
Authority
JP
Japan
Prior art keywords
search
range
encrypted
data
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011524710A
Other languages
English (en)
Other versions
JPWO2011013463A1 (ja
Inventor
祥治 西村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011524710A priority Critical patent/JP5429502B2/ja
Publication of JPWO2011013463A1 publication Critical patent/JPWO2011013463A1/ja
Application granted granted Critical
Publication of JP5429502B2 publication Critical patent/JP5429502B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/0021Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、範囲検索システムに関し、特に暗号化DB(データベース)における範囲検索システムに関する。
暗号化DB(データベース)とは、データを暗号化して保存し、暗号化DBの管理者に、どのようなデータが格納されているか、どのようなデータの検索が行われたかを知られることなく実現する技術である。一方で、範囲検索とは、ある範囲内にあるデータをDBから取得する問い合わせ(query)を行う検索である。
従来の暗号化DBにおける検索システムの一例が、非特許文献1、非特許文献2に記載されている。
<非特許文献1>
非特許文献1は、安全な完全一致検索を提供する暗号化DBシステムを示している。完全一致検索とは、問い合わせた値と完全に一致するデータだけをDBから取得する問い合わせを行う検索である。
非特許文献1におけるデータ処理手順はおおむね、データ挿入とデータ検索の2つの手順に分けられる。以下に、それぞれの手順について述べる。
[データ挿入手順]
まず、暗号化データ生成鍵でデータを暗号化し、暗号化データを生成する。次に、暗号化検索キー生成鍵を用いて、データから一方向関数等で暗号化検索キーを生成する。そして、暗号化検索キーで暗号化データを暗号化し、二重暗号化データを生成する。この暗号化データと二重暗号化データを関連付けて、暗号化DBへ格納する。
[データ検索手順]
取り出したい値を暗号化検索キー生成鍵を用いて暗号化し、暗号化検索キーを生成する。この暗号化検索キーを暗号化DBへ渡す。暗号化DBは、暗号化検索キーで、暗号化DB中に格納された各暗号化データを暗号化し、その結果が、その暗号化データに関連付けられた二重暗号化データと一致するかをチェックする。そして、一致した場合、その暗号化データを結果として返す。
このようにして、非特許文献1の暗号化DBには、元のデータ、問い合わせは全て暗号化されたものが渡され、かつ、一致しなかったものの同値性は不明なままにしておけるため、安全な完全一致検索を実現している。
しかし、範囲検索をしたい場合、その範囲に含まれる全てのデータの完全一致検索をする必要がある。例えば、1以上10以下の範囲にあるデータを範囲検索したい場合、値が1、2、…、10に関する完全一致検索をする必要がある。このため、範囲が広くなる場合、検索コストが膨大になってしまう課題がある。
<非特許文献2>
非特許文献2は、非特許文献1を拡張して、範囲検索を提供する暗号化DBシステムである。非特許文献2では、データから暗号化検索キーを生成する際、データから複数個の範囲検索用の検索キーを生成し、これらの検索キーそれぞれから暗号化検索キーを生成する。
以下に、非特許文献2における検索キーの生成方法及び範囲検索の方法について、具体例を用いて説明する。
[検索キーの生成方法]
まず、データの取り得る範囲(値域)を適当な数NでN等分してN個のブロックに分割する。ここでは、小さいほうからブロック1、ブロック2、…、ブロックNとし、各ブロックのインデックスキーが、キー1、キー2、…、キーNとする。あるデータがブロックKに含まれる場合、そのデータには、キー1、キー2、…、キーKがそのデータの検索キーとして割り当てられる。つまり、このデータにはK個の二重暗号化データが関連付けられることになる。例えば、データの値域が1以上8以下とし、4等分した場合、図1のように4つのブロックが構成され、それぞれ、k1,k2,k3,k4の検索キーと関連付けられる。そして、値1に関しては、検索キーとしてk1が割り当てられ、値5に関しては、検索キーとしてk1,k2,k3が割り当てられる。
[範囲検索の方法]
データの値がM以上の範囲に含まれるものを検索したい場合、Mが前記のどのブロックに含まれるかをチェックする。そして、そのブロックがブロックMであった場合、その検索キーk3から暗号化検索キー生成鍵を生成し、暗号化検索キーとする。暗号化DBは、暗号化検索キーを鍵に各暗号化データを暗号化し、その結果と一致する二重暗号化データを持っている暗号化データを返す。逆に、M未満の範囲に含まれるものを検索したい場合、その結果と一致する二重暗号化データを持っていない暗号化データを返す。また、A以上B未満の範囲検索はこれらの2つの検索結果のANDをとることで実現している。
図1の例で挙げると、値5以上を検索したい場合は、検索キーk3を基に作られる二重暗号化データを含むものを問合せ、値5未満を検索したい場合は、検索キーk3を基に作られる二重暗号化データを含まないものを問い合わせる。つまり、非特許文献2では、あるデータには、そのデータより小さいデータが持ち得る全ての検索キーを持つことで範囲検索を実現している。
しかし、この方法には、安全性に問題がある。その理由は、値の大きさに比例して検索キーが関連付けられるため、割り当てられた検索キーの数を数えることで、暗号化されたデータの元の値が推測できるからである。
例えば、図1の極端な例として、4分割でなく8分割した場合、検索キーの数がその値となる。また、この方法には、データ挿入コストの問題がある。その理由は、値域の幅が広くなり、分割数Nを増やすと、平均的に1つのデータあたり検索キーをN/2割り当てられるため、二重暗号化データを生成する数が増えてしまうからである。一方で、分割数Nを小さく抑えると、非常に粗い範囲検索しかできなくなる。
従来技術では、データ検索コストへ転化することでデータ挿入コストを抑える改良手法も提案しているが、依然、前記の安全性の問題を解決していない。
「Privacy−Preserving Query on Encrypted Data」 Zhiqiang Yang, Sheng Zhong, Rebecca N. Wright Proceedings of the 11th European Symosium On Research In Computer Security(Esorics)LNCS4189, pp.479−495, 2006.<http://www.cs.rutgers.edu/〜rebecca.wright/Publications/esorics06.pdf> 「データベースアウトソーシングにおけるプライバシー保護に考慮した範囲検索法」 新井裕子、渡辺知恵美 第19回データ工学ワークショップ(DEWS2008)<http://www.ieice.org/〜de/DEWS/DEWS2008/proceedings/files/c1/c1−1.pdf>
従来技術における第1の問題点は、暗号化されたデータの値が容易に推測可能であるためである。その理由は、値の大きさと生成される検索キーの数に相関があるため、二重暗号化データの数を数えることで暗号化された値の内容を推測可能にしてしまうためである。
従来技術における第2の問題点は、データ挿入のコストが大きいということである。その理由は、データの値域が広い、それなりの精度がある範囲検索を実現する際に、大量の検索キーが割り当てられるデータが出てくるからである。
従来技術における第3の問題点は、データ検索のコストが大きいということである。その理由は、範囲検索の広さに比例した検索キーが必要であるからである。
本発明の範囲検索システムは、暗号化DB(データベース)に挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取るデータ入力手段と、暗号化データ生成鍵を用いて、データを暗号化する暗号化手段と、範囲検索用の検索キーを生成する検索キー生成手段と、暗号化検索キー生成鍵を用いて、検索キーを暗号化する暗号化検索キー生成手段と、暗号化検索キーを用いて、暗号化データを暗号化する二重暗号化手段とを具備する。本発明では、検索キー生成手段は、データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成する。
本発明の範囲検索方法は、コンピュータを用いて実施される暗号化DB(データベース)の範囲検索方法である。本発明の範囲検索方法では、暗号化DBに挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取る。また、暗号化データ生成鍵を用いて、データを暗号化して暗号化データを生成する。また、データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成する。また、暗号化検索キー生成鍵を用いて、検索キーを暗号化して暗号化検索キーを生成する。また、暗号化検索キーを用いて、暗号化データを暗号化する。
本発明の範囲検索用プログラムは、暗号化DB(データベース)に挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取るステップと、暗号化データ生成鍵を用いて、データを暗号化して暗号化データを生成するステップと、データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成するステップと、暗号化検索キー生成鍵を用いて、検索キーを暗号化して暗号化検索キーを生成するステップと、暗号化検索キーを用いて、暗号化データを暗号化するステップとをコンピュータに実行させるためのプログラムである。なお、本発明の範囲検索用プログラムは、記憶装置や記憶媒体に格納することが可能である。
これにより、暗号化DBに対する検索において、意図しない情報漏洩を防止することができ、暗号化DBに対して挿入されるデータを小さくすることができ、データ検索コストを小さくすることができ、暗号化DBに対して、安全で効率的な範囲検索ができる。
データの値域を4等分した場合の4つのブロックを示す図である。 本発明の第1実施形態の範囲検索システムの構成例を示すブロック図である。 本発明の第1実施形態のデータ入力動作を示す流れ図である。 本発明の第1実施形態のデータ問合せ動作を示す流れ図である。 本発明の第2実施形態の範囲検索システムの構成例を示すブロック図である。 本発明の第3実施形態の範囲検索システムの構成例を示すブロック図である。 本発明の実施例1におけるグレイコード表記の例を示す図である。 本発明の暗号化DBに格納されたレコードの例を示す図である。 本発明の実施例2におけるグレイコード表記の例を示す図である。 本発明の実施例3におけるグレイコード表記の例を示す図である。
<第1実施形態>
以下に、本発明の第1実施形態について添付図面を参照して説明する。
図2に示すように、本発明の範囲検索システムは、第1コンピュータ100と、第2コンピュータ200を含む。
第1コンピュータ100及び第2コンピュータ200の例として、中央処理装置、プロセッサ、データ処理装置、PC(パソコン)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータを想定している。例えば、本発明の範囲検索システムをクライアントサーバシステムの構成にして、第1コンピュータ100をクライアント(端末)とし、第2コンピュータ200をサーバとしても良い。但し、実際には、これらの例に限定されない。
第1コンピュータ100は、データ入力部110と、暗号化部111と、値非依存一定数検索キー生成部112と、二重暗号化部113と、データ問合せ部120と、範囲検索キー生成部121と、暗号化検索キー生成部130を備える。
第2コンピュータ200は、データ挿入部210と、データ検索部220と、暗号化検索キー比較部230と、暗号化データ格納部(暗号化DB)240を備える。
これらの手段は、それぞれ概略つぎのように動作する。
データ入力部110は、暗号化DBに格納したいデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵を入力として受け取る。
暗号化部111は、暗号化データ生成鍵を用いて、入力されたデータを暗号化して暗号化データを生成する。
値非依存一定数検索キー生成部112は、入力されたデータから、データの値の大きさに依らず定まった数(所定の数)の検索キーを生成する。
二重暗号化部113は、暗号化検索キーを用いて、暗号化データを暗号化する。暗号化検索キーとは、後述する暗号化検索キー生成部130が暗号化検索キー生成鍵を用いて検索キーを暗号化したものである。
データ問合せ部120は、問い合わせたい範囲の情報を入力として受け取り、入力された範囲に対応する検索キーによる問合せを生成して、暗号化DBへ問い合わせる。ここでは、データ問合せ部120は、範囲検索キー生成部121から、入力された範囲に対応する検索キーを取得する。
範囲検索キー生成部121は、入力された範囲に対応する検索キーを生成する。
暗号化検索キー生成部130は、暗号化検索キー生成鍵を用いて、検索キーを暗号化して暗号化検索キーを生成する。
データ挿入部210は、暗号化データと二重暗号化データを受け取り、暗号化データ格納部240に、これらを関連付けて挿入する。
データ検索部220は、暗号化データ格納部240からデータを取り出し、暗号化検索キー比較部230の比較結果に基づき、暗号化データを返す。
暗号化検索キー比較部230は、暗号化データを暗号化検索キーで暗号化し、同一の二重暗号化データが存在するかどうかをチェックする。
暗号化データ格納部240は、暗号化DBに該当し、暗号化データと二重暗号化データを関連付けて保持する。
例えば、データ入力部110、暗号化部111、二重暗号化部113、値非依存一定数検索キー生成部112、データ問合せ部120、範囲検索キー生成部121、暗号化検索キー生成部130、データ挿入部210、データ検索部220、及び暗号化検索キー比較部230、暗号化データ格納部240は、プログラムで駆動されるプロセッサ等のハードウェアと、そのハードウェアを駆動して所望の処理を実行するソフトウェアと、そのソフトウェアを格納するメモリ等の記憶装置によって実現される。なお、暗号化データ格納部240は、記憶装置を搭載したコンピュータや、記憶装置そのものでも良い。
上記のハードウェアの例として、CPU(Central Processing Unit)、マイクロプロセッサ、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路(Integrated Circuit(IC))等が考えられる。また、上記の記憶装置の例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)やSDメモリカード(Secure Digital memory card)等のリムーバブルディスクや記憶媒体(メディア)等が考えられる。また、上記の記憶装置は、コンピュータ本体に内蔵された記憶装置に限らず、周辺機器(外付けHDD等)や外部のサーバ(ストレージサーバ等)に設置された記憶装置、或いは、NAS(Network Attached Storage)でも良い。但し、実際には、これらの例に限定されない。
また、第1コンピュータ100と第2コンピュータ200との間の通信回線の例として、インターネット、LAN(Local Area Network)、無線LAN(Wireless LAN)、固定電話網、携帯電話網、専用線(lease line)、IrDA(Infrared Data Association)、Bluetooth(登録商標)、シリアル通信回線、データバス等が考えられる。第2コンピュータ200と暗号化データ格納部240との間の通信回線についても同様である。但し、実際には、これらの例に限定されない。
次に、図3及び図4のフローチャートを参照して、本実施形態の全体の動作について詳細に説明する。ここでは、データ入力とデータ問合せの二つの動作に分けて説明する。
[データ入力動作]
図3のフローチャートを参照して、データ入力動作について説明する。
(1)ステップS101
まず、データ入力部110は、暗号化DB(暗号化データ格納部240)に格納したいデータと暗号化データ生成鍵と暗号化検索キー生成鍵を入力として受け取る。
(2)ステップS102
次に、暗号化部111は、データ入力部110からデータと暗号化データ生成鍵を受け取り、暗号化データ生成鍵を用いてデータを暗号化し、暗号化データを生成する。
(3)ステップS103
次に、値非依存一定数検索キー生成部112は、データ入力部110からデータを受け取り、一定の数の検索キーを生成する。このとき、検索キーは、ある幅を持った範囲に関連付けられたものである。
あるデータの値域が与えられたとき、様々な範囲を定義することができるが、本実施形態では、これらの範囲のうち、下記の条件を満たす範囲の集合を選んで用いる。すなわち、値域に含まれる各値について、その値が含まれる範囲の数が定まった数になるように範囲の集合を選ぶ。
この条件を満たす範囲の集合の例を示す。
あるデータの値域が1以上4以下だったとする。ここでは、M以上N以下の範囲を[M,N]で表すとする。例えば、範囲として、[1,2]、[2,3]、[3,4]、[4,1]を選択したとする。但し、[4,1]は、値域がラップアラウンド(wrap around)していると考え、4と1だけを含む範囲である。
この場合、各値が含まれる範囲の数はそれぞれ以下の通りである。
・値1が含まれる範囲の集合は、{[1,2]、[4,1]}であるので2つ
・値2が含まれる範囲の集合は、{[1,2]、[2,3]}であるので2つ
・値3が含まれる範囲の集合は、{[2,3]、[3,4]}であるので2つ
・値4が含まれる範囲の集合は、{[3,4]、[4,1]}であるので2つ
このように、各値が含まれる範囲の数は、定まった数(この例では2つ)となっている。
前記の条件を満たさない例も挙げる。
範囲として、[1,1]、[1,2]、[1,3]、[1,4]を選択したとすると、各値が含まれる範囲の数はそれぞれ以下の通りである。
・値1が含まれる範囲の集合は、{[1,1]、[1,2]、[1,3]、[1,4]}であるので4つ
・値2が含まれる範囲の集合は、{[1,2]、[1,3]、[1,4]}であるので3つ
・値3が含まれる範囲の集合は、{[1,3]、[1,4]}であるので2つ
・値4が含まれる範囲の集合は、{[1,4]}であるので1つ
このように、各値が含まれる範囲の数はばらばらになっているため、定まった数にはなっていない。従来技術も、この条件に満たさない例の1つである。
(4)ステップS104
次に、暗号化検索キー生成部130は、データ入力部110から、値非依存一定数検索キー生成部112により生成された検索キーと、暗号化検索キー生成鍵を受け取り、暗号化検索キー生成鍵を用いて、検索キーを暗号化し、暗号化検索キーを生成する。
(5)ステップS105
次に、二重暗号化部113は、データ入力部110から、暗号化部111により生成された暗号化データと、暗号化検索キー生成部130により生成された暗号化検索キーを受け取り、暗号化検索キーを用いて、暗号化データを暗号化し、二重暗号化データを生成する。このとき、暗号化検索キーは前述の通り複数個あるため、二重暗号化データも暗号化検索キーの数だけ生成される。
(6)ステップS106
データ入力部110は、暗号化データ、二重暗号化データをデータ挿入部210へ送信する。
(7)ステップS107
データ挿入部210は、受け取った暗号化データと二重暗号化データとを関連付けて1つのレコードとし、暗号化データ格納部240へ格納する。ここでは、レコードは、暗号化データと二重暗号化データの組を示す。
[データ問合せ動作]
図4のフローチャートを参照して、データ問合せ動作について説明する。
(1)ステップS201
まず、データ問合せ部120は、範囲検索したい範囲(値域)のデータと暗号化検索キー生成鍵を入力として受け取る。
(2)ステップS202
次に、範囲検索キー生成部121は、データ問合せ部120から範囲の情報を受け取り、範囲にあたる検索キーの論理式を生成する。範囲にあたる検索キーは、ステップS103において選択された範囲の集合を基に生成する。ここで、簡単な例を示す。例えば、データの値域が1以上4以下とし、範囲として、[1,2]、[2,3]、[3,4]、[4,1]が選択されたとする。このとき、1以上2以下という範囲検索が問い合わされた場合、範囲[1,2]に対応する検索キーを生成する。また、選択された範囲の集合にない場合は、選択された範囲を組み合わせて検索キーを構成する。すなわち、1以上3以下という範囲検索が問い合わされた場合、範囲[1,2]及び範囲[2,3]の論理和として表現する。
(3)ステップS203
次に、暗号化検索キー生成部130は、データ問合せ部120から、近傍関係に基づいて範囲検索キー生成部121により生成された検索キーと、暗号化検索キー生成鍵とを受け取り、暗号化検索キー生成鍵を用いて、検索キーを暗号化し、暗号化検索キーを生成する。
(4)ステップS204
次に、データ問合せ部120は、検索キーの論理式中の検索キーを暗号化検索キーに置き換えることで、検索キーの論理式を暗号化検索キーの論理式に変換し、この暗号化検索キーの論理式をデータ検索部220へ送信する。
(5)ステップS205
次に、データ検索部220は、暗号化検索キーの論理式を受け取ると、暗号化データ格納部240に格納された全てのレコード(暗号化データと二重暗号化データの組)について処理が終了しているか確認する。
(6)ステップS206
次に、データ検索部220は、暗号化データ格納部240に未処理のレコードがあれば、暗号化データ格納部240からレコードを1つ取り出し、取り出されたレコードと暗号化検索キーを暗号化検索キー比較部230へ渡す。
(7)ステップS207
次に、暗号化検索キー比較部230は、取り出されたレコードと暗号化検索キーをデータ検索部220から受け取り、暗号化検索キーを用いて、取り出されたレコード中の暗号化データを暗号化し、検索用二重暗号化データを生成する。
(8)ステップS208
次に、暗号化検索キー比較部230は、検索用二重暗号化データと一致する二重暗号化データがレコード内に存在するかをチェックし、そのチェック結果をデータ検索部220へ返す。
(9)ステップS209
データ検索部220は、当該チェック結果で暗号化検索キーによる論理式を評価する。ここでは、データ検索部220は、当該チェック結果において、検索用二重暗号化データと一致する二重暗号化データがレコード内に存在する旨が示されている場合、評価の結果、真であると判断する。データ検索部220は、評価の結果、偽であれば、暗号化データ格納部240に他に未処理のレコードがあるか確認する。
(10)ステップS210
データ検索部220は、評価の結果、真であれば、取り出されたレコードをマッチレコードと判断し、そのレコード中の暗号化データをマッチリストに追加する。その後、データ検索部220は、暗号化データ格納部240に他に未処理のレコードがあるか確認する。データ検索部220は、以上のステップS206からステップS210までの処理を、暗号化データ格納部240に格納された全てのレコードに対して繰り返す。
(11)ステップS211
データ検索部220は、暗号化データ格納部240に格納された全てのレコードに対して処理が終了したと判断した場合、最後にマッチリストを検索結果として、データ問合せ部120へ返却する。
本実施形態では、データからをデータの値に依らず、一定数の検索キーを生成し、それを基にして作られた二重暗号化データを暗号化データ関連付けて格納している。
このため、1つの暗号化データに関連付けられた二重暗号化データの数は一定であるため、それを手がかりに暗号化データの元の値を推測することはできないため、安全性を確保することができる。
<第2実施形態>
次に、本発明の第2実施形態について詳細に説明する。
図5に示すように、本発明の範囲検索システムは、第1コンピュータ100と、第2コンピュータ200を含む。
第1コンピュータ100は、データ入力部110と、暗号化部111と、二重暗号化部113と、値非依存一定数階層化検索キー生成部114と、データ問合せ部120と、範囲検索キー生成部121と、暗号化検索キー生成部130を備える。
第2コンピュータ200は、データ挿入部210と、データ検索部220と、暗号化検索キー比較部230と、暗号化データ格納部(暗号化DB)240を備える。
データ入力部110、暗号化部111、二重暗号化部113、データ問合せ部120、範囲検索キー生成部121、暗号化検索キー生成部130、データ挿入部210、データ検索部220、暗号化検索キー比較部230、暗号化データ格納部(暗号化DB)240については、第1実施形態と同様である。
第2実施形態は、前記第1実施形態のうち、値非依存一定数検索キー生成部112が、値非依存一定数階層化検索キー生成部114に置き換わったものであるので、その差分についてのみ説明する。
値非依存一定数階層化検索キー生成部114は、前記第1実施形態の値非依存一定数検索キー生成部112により選択される範囲の集合の条件に、検索キーに対応する範囲の幅が狭いものから広いものまで少なくとも2種類以上を含むという条件を追加したものである。
この条件を満たす範囲の集合の例を示す。
データの値域が1以上4以下だとする。例えば、範囲として、[1,2]、[2,3]、[3,4]、[4,1]、[1,4]を選択したとする。このとき、範囲の幅が2のものと4のものの2種類あり、かつ、各値を含む範囲の集合の数はそれぞれ3つと一定数となっている。この結果、例えば、1以上4以下という範囲検索をするとき、第1実施形態における例では2つの検索キーが必要であったが、この例では、範囲[1,4]に対する検索キーを1つで済ますことが可能である。特に、値域が広い場合、その効果が大きくなる。
本実施形態では、範囲の幅が狭いもの、広いものが含まれるように検索キーに関連付けられた範囲の集合を持つように構成している。このため、範囲検索の際、範囲が狭い場合、広い場合どちらの場合であっても、より少ない検索キーで、範囲検索を表現することができるため、検索コストを抑えることが可能である。
<第3実施形態>
次に、本発明の第3実施形態について詳細に説明する。
図6に示すように、本発明の範囲検索システムは、第1コンピュータ100と、第2コンピュータ200を含む。
第1コンピュータ100は、データ入力部110と、暗号化部111と、二重暗号化部113と、値非依存一定数ベキ長階層化検索キー生成部115と、データ問合せ部120と、範囲検索キー生成部121と、暗号化検索キー生成部130を備える。
第2コンピュータ200は、データ挿入部210と、データ検索部220と、暗号化検索キー比較部230と、暗号化データ格納部(暗号化DB)240を備える。
データ入力部110、暗号化部111、二重暗号化部113、データ問合せ部120、範囲検索キー生成部121、暗号化検索キー生成部130、データ挿入部210、データ検索部220、暗号化検索キー比較部230、暗号化データ格納部(暗号化DB)240については、第1実施形態と同様である。
第3実施形態は、前記第1実施形態のうち、値非依存一定数検索キー生成部112が、値非依存一定数ベキ長階層化検索キー生成部115に置き換わったものであるので、その差分についてのみ説明する。
値非依存一定数ベキ長階層化検索キー生成部115は、前記第2実施形態の値非依存一定数階層化検索キー生成部114により選択される範囲の集合の条件に、範囲の幅がベキ長の関係になるような種類で、かつ、範囲の幅が狭いときは、その範囲の幅を持つ範囲を選択する数を大きく、範囲の幅が広いときはその数を小さくなるように範囲の集合を選択する条件を追加したものである。
範囲の幅がベキ長の関係とは、例えば、範囲の幅が1,2,4,8、...、2(nは任意の整数)のように、ベキ級数の式で表されるような幅を取ることである。
範囲の幅が狭いときは、その範囲の幅を持つ範囲を選択する数を大きく、範囲の幅が広いときはその数を小さくなるように範囲の集合を選択するのは、ある値において、その値を含む範囲の幅Kの範囲の数を一定数以下に抑えるためである。
まず、明らかなように、範囲の幅がKの場合、その範囲に含まれる値の数はK個である。また、任意の範囲の幅Kを持つ範囲は、データの値域の幅をNとし、ラップアラウンドするような範囲を考慮するならば、N個定義することが可能である。
このとき、ある範囲の幅Kを持つN個の範囲のうち、ある値を含む範囲はK個ある。例えば、選択された範囲の幅をK1,K2(K1 = 2*K2)とし、それぞれ、N個の範囲を選択したとする。すると、ある値Vを含む範囲の数は、範囲の幅K1はK1個、範囲の幅K2はK2個となり、範囲の幅K1の個数は範囲の幅K2の個数の倍あることになる。
範囲の幅に依らずある値を含む範囲の数を一定にするには、選択する範囲の数を減らせば良い。つまり、範囲の幅K1はN個ではなく、うまくN/2個選べば、ある値Vを含む範囲の数は、範囲の幅K2と同じになる。
以上から、範囲の幅に対して、おおよそ反比例するようにその範囲の幅を持つ範囲を選択すれば、各範囲の幅に対して、各値に定数個の検索キーを割り当てることができる。
また、範囲の幅の種類をベキ長の関係になるように選択すると、データの値域の幅Nに対して、高々O(log N)種類の範囲の幅が選択されることになる。
この結果、ある値に関連付けられる検索キーの個数は高々O(log N)個に抑えることができる。また、本実施形態の条件を満たすように検索キーに関連付ける範囲を選択すると、範囲検索において、任意の範囲を表現する際に高々O(log N)個の検索キーの組合せで表現できる。
簡単な例を用いて説明する。
データの値域が1以上8以下とし、本実施形態の条件を満たす範囲の集合として、
範囲の幅1:[1,1]、[2,2]、[3,3]、[4,4]、[5,5]、[6,6]、[7,7]、[8,8]
範囲の幅2:[1,2]、[3,4]、[5,6]、[7,8]
範囲の幅4:[1,4]、[5,8]
範囲の幅8:[1,8]
を選択したとする。
まず、任意の幅(N−K)をもつ範囲検索に対応する検索キーは、幅Kをもつある範囲検索に対応する検索キーの論理否定と等価であるため、幅N/2より大きい範囲検索については考えなくて良い。つまり、範囲の幅7に対する範囲検索は範囲の幅1に対する範囲検索と等価である。
以下では、範囲の幅が4より大きい範囲検索は考えない。
次に、選択された各範囲の幅の範囲の集合において、ある値を含む範囲の数が一定数であることから、選択された各範囲の幅の範囲の集合が、値域全体を一様に網羅する(値域のうちカバーしない部分がない)性質を持っている。言い換えれば、全ての値は少なくとも1つ以上の範囲でカバーされている。
次に、ある範囲検索に対応する検索キーがない場合、その範囲検索の幅Mより小さい範囲検索に対応する検索キーを組み合わせて構成するとする。
このとき、各範囲の幅がベキ長の関係になっており、前記の性質とあわせると、幅M/2以上の範囲が必ず1つ含まれる。例えば、1以上4以下という範囲検索では、範囲[1,4]という幅4を持つ範囲が含まれている。また、2以上5以下という範囲検索では、範囲[3,4]という幅2を持つ範囲が含まれている。同様に、任意の範囲の幅3の範囲検索では、必ずどれかの幅2を持つ範囲が含まれていることがわかる。
つまり、幅M/2以上の範囲が1つと、幅M/2以下の範囲検索が高々2つの組合せとして構成されることがわかる。例えば、2以上5以下のという範囲検索は、範囲[3,4]と2以上2以下、5以上5以下の2つの範囲検索から構成することができる。
この操作を高々log M/2回、再帰的に適用することで、残った範囲検索も分解することができる。つまり、高々O(log M)個の検索キーの組合せとして表現可能である。
以上から、高々O(log N)個の検索キーの組合せで任意の範囲検索が構成することが可能である。
本実施形態は、範囲の幅がベキ長の関係になるような種類で、かつ、範囲の幅が狭いときは、その範囲の幅を持つ範囲を選択する数を大きく、範囲の幅が広いときはその数を小さくなるように範囲の集合を基に検索キーを構成するようにしている。このため、データの挿入コストや検索コストを抑えることが可能である。
なお、上記の各実施形態は、組み合わせて実施することも可能である。
<具体的な実施例>
次に、具体的な実施例を用いて、本発明の動作について説明する。
本発明の範囲検索システムは、データ挿入、範囲検索の問合せをする暗号化DBクライアント(端末)と、暗号化されたデータ及びそのデータの索引にあたる二重暗号化されたデータを保持する暗号化DBサーバに分けられる。
まず、暗号化DBクライアントは、ファイルやメモリに格納されたデータから読み込んだり、キーボード等の入力装置からの入力、ネットワークからデータを受け取ったりする等の方法により、暗号化DBに格納したいデータや、暗号化データ生成鍵、暗号化検索キー生成鍵、範囲検索の問合せを取得する。
また、暗号化DBサーバは、暗号化DBに格納したいデータを、ファイルやデータベースのテーブル等を通じてHDDやメモリ等の記憶装置に格納する。ここでは、暗号化DBに格納したいデータは、0以上15以下の値域を持つものとする。今、値が5であるようなデータを暗号化DBに挿入したいとする。このデータから暗号化データ生成鍵を用いて暗号化データを生成する。
生成方法としては、例えば、DES、AESのような共通鍵暗号、RSAのような公開鍵暗号を用いる。また、用途として暗号化したデータを復号しなくても良いのなら、「SHA−1」、「MD5」のような一方向ハッシュ関数や「ANSI X9.31」のような擬似乱数生成器を用いても良い。より安全性を高めるには、データにノンスのような適当な値をつなげ、同じ値であっても異なる暗号化データになるようにしても良い。
ここでは、この結果、値5は、E5という暗号化データになったとする。本来であれば、暗号化した結果、元の値が推測不能なものへ変換されるが、ここでは、説明がわかりやすいように、元の値が推測可能なものへと変換して表記する。以下、同じである。
次に、データから範囲検索のための検索キーを生成する。
<実施例1>
実施例1としてバイナリコードに基づいて検索キーを生成する方法を示す。
まず、暗号化DBクライアントは、図7のように、値域における各値をバイナリコード表記する。そして、範囲の定義は、バイナリコード表記において、上位1ビット、上位2ビット、上位3ビット、上位4ビットが共通するもの同士を範囲としてまとめる。
この例では、
範囲の幅が1のものとして、[0,0]、[1,1]、...、[15,15]の16個
範囲の幅が2のものとして、[0,1]、[2,3]、...、[14,15]の8個
範囲の幅が4のものとして、[0,3]、[4,7]、[8,11]、[12,15]の4個
範囲の幅が8のものとして、[0,7]、[8,15]の2個
範囲の幅が16のものとして、[0,15]の1個
を選択された範囲の集合とする。
この選択された範囲の集合はメモリやディスク上にキャッシュとして保持しておいても良いし、毎回計算して求めても良い。
このとき、値5を含むものは、[5,5]、[4,5]、[4,7]、[0,7]、[0,15]の5つであるので、暗号化DBクライアントは、それぞれの範囲に対応する検索キーとして、例えば、「kb0101」、「kb010*」、「kb01**」、「kb0***」、「kb****」を生成する。なお、「*」は、0,1どちらでも良いという意味で表し、この例では、0,1,*の組合せで範囲を一意に表現する。以下、同じである。
次に、生成された検索キーを暗号化検索キー生成鍵で暗号化する。
暗号化DBクライアントは、この暗号化では、生成された暗号化検索キーから元の検索キーが推測できないという条件を満たしていれば良いため、例えば、DES、AESのような共通鍵暗号、RSAのような公開鍵暗号、「SHA−1」、「MD5」のような一方向ハッシュ関数を用いて暗号化する。
ここでは、暗号化DBクライアントは、その結果、「E_kb0101」、「E_kb010*」、「E_kb01**」、「E_kb0***」、「E_kb****」を生成したとする。
次に、暗号化DBクライアントは、暗号化検索キーを鍵に、暗号化データを暗号化し、二重暗号化データを生成する。ここでは、暗号化DBクライアントは、生成された二重暗号化データから元の暗号化検索キーと暗号化データの組を推測できなくなるものであれば何でも良いため、例えば、DES、AESのような共通鍵暗号、RSAのような公開鍵暗号、「SHA−1」、「MD5」のような一方向ハッシュ関数を用いて暗号化する。
ここでは、この結果、「H_E5_E_kb0101」、「H_E5_E_kb010*」、「H_E5_E_kb01**」、「H_E5_E_kb0***」、「H_E5_E_kb****」が生成されたとする。
次に、暗号化DBクライアントは、暗号化データと二重暗号化データの組を暗号化DBサーバへと送信する。そして、暗号化DBサーバは、渡されたデータを、暗号化データと二重暗号化データとを関連付けて保持できる構造として記録する。
例えば、暗号化DBサーバは、図8のように、各行をレコードとし、暗号化データの列、二重暗号化データの列を持ったテーブルへ格納する。ここでは、値5に関するデータは、図8の最後のレコードとして追加されたことを示している。
次に、図8を参照して、範囲検索の具体例について説明する。
暗号化DBクライアントは、図8のように暗号化DBに格納されたレコードに対して範囲検索をする。ここでは、まず、4以上5以下の範囲検索の問合せをしたとする。すると、この場合では、範囲[4,5]というものが選択された範囲の集合に含まれているため、暗号化DBクライアントは、検索キーの論理式として(kb010*)を生成する。そして、暗号化DBクライアントは、この検索キー「kb010*」を暗号化し、暗号化検索キー「E_kb010*」を得て、暗号化検索キーの論理式として(E_kb010*)を得ることができる。暗号化DBクライアントは、この検索キーを暗号化DBサーバへ送信する。暗号化DBサーバは、検索キーを受け取ると、テーブル中の各レコードの暗号化データを受け取った検索キーで二重暗号化し、その結果が二重暗号化データに含まれているかチェックする。
まず、図8に示すテーブルの1行目のレコードに対して行う。
このレコードの暗号化データは「E6」であるので、これを暗号化検索キー「E_kb010*」で暗号化すると、検索用二重暗号化データ「H_E6_E_kb010*」を得る。この「H_E6_E_kb010*」が二重暗号化データに存在するかをチェックし、この例では存在しなかったので、このレコードに対する暗号化検索キー「E_kb010*」の結果として、「false(偽)」が返される。暗号化検索キーの論理式(E_kb010*)は、「E_kb010*」でこの結果は「false(偽)」であるから、このレコードはマッチリストに追加されない。
次に、図8に示すテーブルの2行目のレコードに対して行う。
このレコードの暗号化データはE4であるので、これを暗号化検索キー「E_kb010*」で暗号化すると、検索用二重暗号化データ「H_E4_E_kb010*」を得る。この「H_E4_E_kb010*」が二重暗号化データに存在するかをチェックし、この例では存在するので、このレコードに対する暗号化検索キー「E_kb010*」の結果として、「true(真)」が返される。暗号化検索キーの論理式(E_kb010*)は、E_kb010*でこの結果は「true(真)」であるから、このため、このレコードはマッチリストに追加される。
以下、同様にして、全てのレコードに対して同様の手続きを繰り返す。この結果、暗号化検索キーの論理式として満たすものは、E4,E5(それぞれ値4、値5を暗号化したもの)であるのでこれを検索結果として返す。また、4以上6以下の範囲検索の問合せだった場合、範囲[4,5]、範囲[4,6]の論理和で構成されるので、例えば、(OR kb010* kb0110)という検索キーを生成する。そして、暗号化した結果、(OR E_kb010* E_kb0110)という暗号化検索キーの論理式を暗号化DBサーバへ送信する。
この暗号化検索キーの論理式は2つの暗号化検索キーを持っているので、それぞれについて二重暗号化データを生成し、論理式の評価をする。
まず、図8の1行目のレコードに対して、二重暗号化データを生成すると、それぞれ「H_E6_E_kb010*」、「H_E6_E_kb0110」となる。このとき、「H_E6_E_kb010*」とマッチする二重暗号化データは存在しないのでE_kb010*の結果として「false(偽)」を、「H_E6_E_kb0110」とマッチする二重暗号化データは存在するので「E_kb0110」の結果として「true(真)」を返す。この例では、これらの結果の論理和であるから、この論理式の結果は「true(真)」となるので、このレコードをマッチリストに追加する。
同様の手順を全てのレコードに対して繰り返すとマッチリストとして、E6,E4,E5(それぞれ値6、値4、値5を暗号化したもの)を得られ、これを検索結果として返す。
<実施例2>
その他のデータから範囲検索のための検索キーを生成する方法について述べる。ここでは、実施例2として、値のグレイコード表記に基づいて検索キーを生成する方法を示す。
まず、図9のように、値域における各値をグレイコード表記する。
コンピュータで通常用いられるバイナリコードからグレイコードへの変換方法は知られていて、バイナリコードを右に1ビットシフトしたものと、元のバイナリコードとの排他的論理和をとれば良い。グレイコードは、隣合う値のビット表現のハミング距離が1という性質を持っている。
そして、範囲の定義は、グレイコード表記において、隣り合う2の中でお互いのハミング距離がn以下になっているものを選ぶ。
範囲の幅が4の時を例に挙げる。このとき、お互いのハミング距離が2以下になっている必要がある。
[0,3]の場合は、これらの4つの値の上位2ビットが00と共通し、下位2ビットだけ異なるため、お互いのハミング距離は2以下に収まっているので、この範囲は選択する。
一方、[1,4]の場合は、1と4は、下位3ビットが異なっているためハミング距離は3であることから、この範囲は選択されない。
この例では、
範囲の幅が1のものとして、[0,0]、[1,1]、...、[15,15]の16個
範囲の幅が2のものとして、[0,1]、[1,2]、...、[14,15]、[15,0]の16個
範囲の幅が4のものとして、[0,3]、[2,5]、...、[12,15]、[14,1]の8個
範囲の幅が8のものとして、[0,7]、[4,11]、[8,15]、[12,3]の4個
範囲の幅が16のものとして、[0,15]の1個
を選択された範囲の集合となる。
このとき、値5を含むものは、[5,5]、[4,5]、[5,6]、[2,5]、[4,7]、[0 7]、[4,11]、[0,15]の8つであるので、値5に関連付けられる検索キーとしては、それぞれの範囲に対応する検索キーとして例えば、「kb0111」、「kb011*」、「kb01*1」、「kb0*1*」、「kb01**」、「kb0***」、「kb*1**」、「kb****」が生成される。
このような選択された範囲の集合を用いる利点は、検索の際、必要な検索キーの数を抑えることができることにある。
特に、バイナリコードに基づいて範囲を選択した場合、例えば、7と8の間のように範囲の境界がそろってしまうため、そのような範囲の境界をまたぐような範囲検索があった場合、必要な検索キーの数が多くなる。
しかし、グレイコードに基づいて範囲を選択した場合、それが解消されるため、範囲検索時に必要な検索キーの数を抑えることができる。
<実施例3>
更に、その他のデータから範囲検索のための検索キーを生成する方法について述べる。ここでは、実施例3として、値の冗長グレイコード表記に基づいて検索キーを生成する方法を示す。
冗長グレイコード表記とは、n+1ビットで表されるグレイコードによる実数表現に対して、2倍したものである。
1つの値について2通りの表現が可能であることから、ここでは、冗長グレイコード表記と呼んでいる。(参考文献:「グレイコードと実数」<http://www.i.h.kyoto−u.ac.jp/〜tsuiki/bit/gray.html>)
まず、図10のように、全ての値を冗長グレイコード表記する。
コンピュータで通常用いられるバイナリコードから冗長グレイコードへの変換は、比較的容易であり、バイナリコードを2倍したものをグレイコード変換したものと、バイナリコードを2倍して1引いたものをグレイコード変換したものである。そして、範囲の定義は、グレイコード表記において、隣り合う2−1の中でお互いのハミング距離がn以下になっているものを選ぶ。
この例では、
範囲の幅が1のものとして、[0,0]、[1,1]、...、[15,15]の16個
範囲の幅が3のものとして、[0,2]、[1,3]、...、[15,1]の16個
範囲の幅が5のものとして、[0,4]、[2,6]、...、[14,2]の8個
範囲の幅が9のものとして、[0,8]、[4,12]、[8,0]、[12,4]の4個
範囲の幅が16のものとして、[0,15]の1個
を選択された範囲の集合となる。
この表現においては、ある値を中心とみて、両側0、1、2、4離れているものという視点で範囲を定義したものになる。
このとき、値5を含むものは、[5,5]、[3,5]、[4,6]、[5,7]、[2,6]、[4,8]、[0,8]、[4,12]、[0,15]の8つであるので、それぞれの範囲に対応する検索キーとしては、例えば、「kb011*1」、「kb0*10*」、「kb011**」、「kb01*1*」、「kb0*1**」、「kb01***」、「kb0****」、「kb*1***」、「kb****」が生成する。
更に、範囲の幅が5,9を持つ範囲に関して、値によっては2回ないし3回出現する。値5の場合は、それぞれ2回であったが、例えば、値8の場合は、それぞれ3回出現する。
そこで、範囲の幅が5,9の範囲に対して、2つしか存在しない値の場合、ダミーの検索キー「kdummy5」,「kdummy9」をそれぞれ付与し、値により検索キーの数に偏りが出ないようにする。
結局、値5に関しては、上記の8つに加え、「kdummy5」,「kdummy9」をあわせた10個の検索キーが割り当てられることになる。
このような選択された範囲の集合を用いると、例えば、格子状に区切られた地図データにおいて、ある格子及びその上下左右の格子に含まれるデータを通りたいというように、ある値を中心とする範囲検索を主にしたい場合や実数値に対する範囲検索をしたいという場合に利用できる。
本発明は、ASP(Application Service Provider)や、SaaS(Service as a Service)といった形態でサービスを提供し、利用者がサーバ側へ安全にデータを預けるような用途に適用できる。
以上のように、本発明の範囲検索システムは、暗号化DBに対する範囲検索システムであって、データの値の大きさに依らず定まった数の範囲検索用の検索キーを生成する手段を備えたことを特徴とする。
検索キーを生成する手段は、1つのデータに対して狭い範囲及び広い範囲に対応する範囲検索用の検索キーを生成する手段を含むことを特徴とする。
検索キーを生成する手段は、1つのデータに対して割り当てられる範囲の幅がそれぞれベキ長の関係になるように範囲検索用の検索キーを生成する手段を含むことを特徴とする。
本発明の範囲検索システムは、暗号化手段と、暗号化検索キー生成手段と、二重暗号化手段と、暗号化データ格納手段と、範囲検索キー生成手段と、データ検索手段とを更に備えたことを特徴とする。暗号化手段は、挿入するデータを暗号化し、暗号化データを生成する。暗号化検索キー生成手段は、検索キーを暗号化する。二重暗号化手段は、暗号化データを暗号化検索キーで暗号化し、二重暗号化データを生成する。暗号化データ格納手段は、暗号化データと二重暗号化データを関連付けて保持する。範囲検索キー生成手段は、範囲検索の問合せからその範囲検索を実現する暗号化検索キーを生成する。データ検索手段は、暗号化データ格納手段に格納された暗号化データを範囲検索キー生成手段で生成された暗号化検索キーで二重暗号化し、その結果と一致する二重暗号化データが存在するかを判定することで範囲検索結果を求める。
本発明の範囲検索方法は、暗号化DBに対する範囲検索方法であって、データの値の大きさに依らず定まった数の範囲検索用の検索キーを生成することを特徴とする。
本発明の範囲検索方法は、更に、1つのデータに対して狭い範囲及び広い範囲に対応する範囲検索用の検索キーを生成することを特徴とする。
本発明の範囲検索方法は、更に、1つのデータに対して割り当てられる範囲の幅がそれぞれベキ長の関係になるように範囲検索用の検索キーを生成する。
本発明の範囲検索方法では、挿入するデータを暗号化して暗号化データを生成する。次に、検索キーを暗号化して暗号化検索キーを生成する。次に、暗号化データを暗号化検索キーで暗号化して二重暗号化データを生成する。次に、暗号化データと二重暗号化データを関連付けて保持する。次に、範囲検索の問合せからその範囲検索を実現する暗号化検索キーを生成する。次に、暗号化DBに格納された暗号化データを範囲検索キー生成手段で生成された暗号化検索キーで二重暗号化して、その結果と一致する二重暗号化データが存在するかを判定することで範囲検索結果を求める。
本発明のプログラムは、データの値の大きさに依らず定まった数の範囲検索用の検索キーを生成する処理をコンピュータに実行させるためのプログラムである。
本発明のプログラムは、更に、検索キーを生成する処理において、1つのデータに対して狭い範囲及び広い範囲に対応する範囲検索用の検索キーを生成する処理をコンピュータに実行させることを特徴とする。
本発明のプログラムは、更に、検索キーを生成する処理において、1つのデータに対して割り当てられる範囲の幅がそれぞれベキ長の関係になるように範囲検索用の検索キーを生成する処理をコンピュータに実行させることを特徴とする。
本発明のプログラムは、暗号化処理と、暗号化検索キー生成処理と、二重暗号化処理と、暗号化データ格納処理と、範囲検索キー生成処理と、データ検索処理をコンピュータに更に実行させることを特徴とする。暗号化処理では、コンピュータは、挿入するデータを暗号化し、暗号化データを生成する。暗号化検索キー生成処理では、コンピュータは、検索キーを暗号化する。二重暗号化処理では、コンピュータは、暗号化データを暗号化検索キーで暗号化し、二重暗号化データを生成する。暗号化データ格納処理では、コンピュータは、暗号化データと二重暗号化データを関連付けて保持する。範囲検索キー生成処理では、コンピュータは、範囲検索の問合せからその範囲検索を実現する暗号化検索キーを生成する。データ検索処理では、コンピュータは、暗号化データ格納手段に格納された暗号化データを範囲検索キー生成手段で生成された暗号化検索キーで二重暗号化し、その結果と一致する二重暗号化データが存在するかを判定することで範囲検索結果を求める。
本発明の範囲検索システムで使用される端末は、データの値の大きさに依らず定まった数の範囲検索用の検索キーを生成する手段と、挿入するデータを暗号化し、暗号化データを生成する暗号化手段と、検索キーを暗号化する暗号化検索キー生成手段と、暗号化データを暗号化検索キーで暗号化し、二重暗号化データを生成する二重暗号化手段とを備えたことを特徴とする。
本発明の範囲検索システムで使用されるサーバは、暗号化データと二重暗号化データを関連付けて保持する暗号化データ格納手段と、暗号化データ格納手段に格納された暗号化データを端末から渡された暗号化検索キーで二重暗号化し、その結果と一致する二重暗号化データが存在するかを判定することで範囲検索結果を求めるデータ検索手段を備えたことを特徴とする。
以上のように、本発明の暗号化DBシステムは、データに対して値の大きさに依らず定まった数の検索キーを生成する手段を備え、生成された検索キーを基につくられた二重暗号化データを暗号化データと関連付けて格納し、範囲検索の問合せからその範囲に対応する検索キーによって範囲検索するよう動作する。このような構成を採用し、暗号化DBシステムに格納されるデータに関連付けられる検索キーの数にバラつきをなくすことにより本発明の目的を達成することができる。
また、この検索キーは範囲に対応付けられるが、前記の検索キーを生成する手段は、更に、各データに対して、範囲の幅が狭いものから広いものまでを関連付けるよう動作する。このような構成を採用し、任意の範囲検索に対して、少ない数の検索キーの問合せで実現することにより本発明の目的を達成することができる。
また、前記の検索キーを生成する手段は、更に、各データに対して関連付けられる範囲の幅をベキ長の関係になるよう動作する。このような構成を採用し、各データに対して関連付けられる検索キーの数を抑え、かつ、任意の範囲検索に対して、少ない数の検索キーの問合せを実現することにより本発明の目的を達成することができる。
第1の効果は、意図しない情報漏洩を防止する暗号化DBに対する検索ができることにある。その理由は、値の大きさによらず生成される検索キーの数が一定であるためである。
第2の効果は、データ挿入が小さくできることにある。その理由は、値によらず生成される検索キーの数が一定であり、かつ、検索キーの数を高々O(log N)に抑えることができるためである。
第3の効果は、データ検索コストが小さくできることにある。その理由は、あるデータに関連付けられる検索キーを範囲が狭いものから広いものまで、階層化して用意されているため、任意の範囲検索の範囲Mに対して、高々O(1)〜O(log M)個の問合せで実現できるからである。
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
なお、本出願は、日本出願番号2009−176986に基づく優先権を主張するものであり、日本出願番号2009−176986における開示内容は引用により本出願に組み込まれる。

Claims (12)

  1. 暗号化DB(データベース)に挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取るデータ入力手段と、
    前記暗号化データ生成鍵を用いて、前記データを暗号化して暗号化データを生成する暗号化手段と、
    範囲検索用の検索キーを生成する検索キー生成手段と、
    前記暗号化検索キー生成鍵を用いて、前記検索キーを暗号化して暗号化検索キーを生成する暗号化検索キー生成手段と、
    前記暗号化検索キーを用いて、前記暗号化データを暗号化する二重暗号化手段と
    を具備し、
    前記検索キー生成手段は、前記データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成する
    範囲検索システム。
  2. 請求項1に記載の範囲検索システムであって、
    前記検索キー生成手段は、1つのデータに対して、範囲の幅が狭い場合及び広い場合のそれぞれに対応する範囲検索用の検索キーを生成する
    範囲検索システム。
  3. 請求項1又は2に記載の範囲検索システムであって、
    前記検索キー生成手段は、1つのデータに対して、割り当てられる範囲の幅がそれぞれベキ長の関係になる形式で、範囲検索用の検索キーを生成する
    範囲検索システム。
  4. 請求項1乃至3のいずれか一項に記載の範囲検索システムであって、
    前記暗号化DBへ問い合わせたい範囲の情報を入力として受け取るデータ問合せ手段と、
    前記範囲に対応する検索キーを生成する範囲検索キー生成手段と
    を更に具備し、
    前記データ問合せ手段は、前記範囲に対応する検索キーによる問合せを生成して、前記暗号化DBへ問い合わせる
    範囲検索システム。
  5. コンピュータを用いて実施される暗号化DB(データベース)の範囲検索方法であって、
    前記暗号化DBに挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取り、
    前記暗号化データ生成鍵を用いて、前記データを暗号化して暗号化データを生成し、
    前記データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成し、
    前記暗号化検索キー生成鍵を用いて、前記検索キーを暗号化して暗号化検索キーを生成し、
    前記暗号化検索キーを用いて、前記暗号化データを暗号化する
    範囲検索方法。
  6. 請求項5に記載の範囲検索方法であって、
    前記範囲検索用の検索キーを生成する際、1つのデータに対して、範囲の幅が狭い場合及び広い場合のそれぞれに対応する範囲検索用の検索キーを生成する
    範囲検索方法。
  7. 請求項5又は6に記載の範囲検索方法であって、
    前記範囲検索用の検索キーを生成する際、1つのデータに対して、割り当てられる範囲の幅がそれぞれベキ長の関係になる形式で、範囲検索用の検索キーを生成する
    範囲検索方法。
  8. 請求項5乃至7のいずれか一項に記載の範囲検索方法であって、
    前記暗号化DBへ問い合わせたい範囲の情報を入力として受け取り、
    前記範囲に対応する検索キーを生成し、
    前記範囲に対応する検索キーによる問合せを生成して、前記暗号化DBへ問い合わせる
    範囲検索方法。
  9. 暗号化DB(データベース)に挿入するデータと、暗号化データ生成鍵と、暗号化検索キー生成鍵と、を入力として受け取るステップと、
    前記暗号化データ生成鍵を用いて、前記データを暗号化して暗号化データを生成するステップと、
    前記データの値の大きさに依らず所定の数の範囲検索用の検索キーを生成するステップと、
    前記暗号化検索キー生成鍵を用いて、前記検索キーを暗号化して暗号化検索キーを生成するステップと、
    前記暗号化検索キーを用いて、前記暗号化データを暗号化するステップと
    をコンピュータに実行させるための範囲検索用プログラムを格納した
    記憶媒体。
  10. 請求項9に記載の記憶媒体であって、
    前記範囲検索用の検索キーを生成する際、1つのデータに対して、範囲の幅が狭い場合及び広い場合のそれぞれに対応する範囲検索用の検索キーを生成するステップ
    を更にコンピュータに実行させるための範囲検索用プログラムを格納した
    記憶媒体。
  11. 請求項9又は10に記載の記憶媒体であって、
    前記範囲検索用の検索キーを生成する際、1つのデータに対して、割り当てられる範囲の幅がそれぞれベキ長の関係になる形式で、範囲検索用の検索キーを生成するステップ
    を更にコンピュータに実行させるための範囲検索用プログラムを格納した
    記憶媒体。
  12. 請求項9乃至11のいずれか一項に記載の記憶媒体であって、
    前記暗号化DBへ問い合わせたい範囲の情報を入力として受け取るステップと、
    前記範囲に対応する検索キーを生成するステップと、
    前記範囲に対応する検索キーによる問合せを生成して、前記暗号化DBへ問い合わせるステップと
    を更にコンピュータに実行させるための範囲検索用プログラムを格納した
    記憶媒体。
JP2011524710A 2009-07-29 2010-06-17 範囲検索システム、範囲検索方法、及び範囲検索用プログラム Active JP5429502B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011524710A JP5429502B2 (ja) 2009-07-29 2010-06-17 範囲検索システム、範囲検索方法、及び範囲検索用プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009176986 2009-07-29
JP2009176986 2009-07-29
JP2011524710A JP5429502B2 (ja) 2009-07-29 2010-06-17 範囲検索システム、範囲検索方法、及び範囲検索用プログラム
PCT/JP2010/060292 WO2011013463A1 (ja) 2009-07-29 2010-06-17 範囲検索システム、範囲検索方法、及び範囲検索用プログラム

Publications (2)

Publication Number Publication Date
JPWO2011013463A1 JPWO2011013463A1 (ja) 2013-01-07
JP5429502B2 true JP5429502B2 (ja) 2014-02-26

Family

ID=43529128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011524710A Active JP5429502B2 (ja) 2009-07-29 2010-06-17 範囲検索システム、範囲検索方法、及び範囲検索用プログラム

Country Status (3)

Country Link
US (1) US9172534B2 (ja)
JP (1) JP5429502B2 (ja)
WO (1) WO2011013463A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5720536B2 (ja) * 2011-11-10 2015-05-20 富士通株式会社 秘匿化データの検索のための情報処理方法及び装置
CN102409991A (zh) * 2011-12-19 2012-04-11 西安思坦仪器股份有限公司 井口防喷密封装置
JP5948060B2 (ja) * 2012-01-13 2016-07-06 株式会社日立製作所 暗号化データの高速な類似検索処理システム
CN104704493B (zh) * 2012-08-15 2019-06-07 维萨国际服务协会 可搜索的经加密的数据
US11190336B2 (en) * 2019-05-10 2021-11-30 Sap Se Privacy-preserving benchmarking with interval statistics reducing leakage
US11909857B2 (en) * 2019-12-23 2024-02-20 Intel Corporation Functionally safe encryption for vehicle to anything communication
CN111488386B (zh) * 2020-04-14 2023-09-29 北京易数科技有限公司 数据查询方法和装置
KR102463479B1 (ko) * 2021-04-16 2022-11-04 (주)이즈피엠피 온라인 박람회에서 미팅 서버의 미팅 세션과 연동되는 대기 세션을 제공하기 위한 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113213A1 (en) * 2007-10-24 2009-04-30 Park Taejun System and method for searching encrypted numerical data

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7570759B2 (en) * 2004-08-13 2009-08-04 Yen-Fu Liu System and method for secure encryption

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113213A1 (en) * 2007-10-24 2009-04-30 Park Taejun System and method for searching encrypted numerical data

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CSNG200900266012; 新井 裕子ほか: 'データベースアウトソーシングにおけるプライバシー保護に考慮した範囲検索法' 電子情報通信学会 第19回データ工学ワークショップ論文集 , 200804, C1-1, [online] *
JPN6013055095; 新井 裕子ほか: 'データベースアウトソーシングにおけるプライバシー保護に考慮した範囲検索法' 電子情報通信学会 第19回データ工学ワークショップ論文集 , 200804, C1-1, [online] *
JPN6013055098; Yang, Z., et al.: 'Privacy-Preserving Queries on Encrypted Data' In Proceedings of the 11th European Symposium On Research In Computer Security (Esorics 2006) , 2006, [online] *
JPN6013055101; Boneh, D., et al.: 'Conjunctive, Subset, and Range Queries on Encrypted Data' Theory of Cryptography (TCC 2007) LNCS 4392, 200702, pp. 535-554, [online] *
JPN6013055104; Shi, E., et al.: 'Multi-Dimensional Range Query over Encrypted Data' In Proceedings of 2007 IEEE Symposium on Security and Privacy (SP'07) , 200705, pp. 350-364, [online] *

Also Published As

Publication number Publication date
WO2011013463A1 (ja) 2011-02-03
US20120131355A1 (en) 2012-05-24
US9172534B2 (en) 2015-10-27
JPWO2011013463A1 (ja) 2013-01-07

Similar Documents

Publication Publication Date Title
JP5429502B2 (ja) 範囲検索システム、範囲検索方法、及び範囲検索用プログラム
KR101403745B1 (ko) 데이터베이스 시스템에서 비-결정적으로 암호화된 데이터에대한 검색을 수행하는 방법 및 이를 위한 원격 데이터베이스를 제공하는 방법, 및 기계-판독가능 매체
US10554385B2 (en) Method for providing encrypted data in a database and method for searching on encrypted data
Li et al. Enabling fine-grained multi-keyword search supporting classified sub-dictionaries over encrypted cloud data
US20100161957A1 (en) Methods of storing and retrieving data in/from external server
KR20100068042A (ko) 데이터 암호화 방법 및 암호화된 데이터의 결합 키워드 검색방법
CN110851481B (zh) 一种可搜索加密方法、装置、设备及可读存储介质
JPWO2012115031A1 (ja) 検索システム、検索システムの検索方法、情報処理装置、検索プログラム、対応キーワード管理装置および対応キーワード管理プログラム
KR101825838B1 (ko) 데이터의 부분 암호화 방법, 데이터의 부분 복호화 방법 및 부분 암호화된 데이터를 복호화하는 프로그램을 저장하는 저장매체
JP6352441B2 (ja) ストリーミングデータの匿名化
US20190363878A1 (en) Value comparison server, value comparison encryption system, and value comparison method
WO2014141802A1 (ja) 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
CN116527235A (zh) 基于密钥轮换的数据加密方法、装置和电子设备
CN115310125A (zh) 一种加密数据检索系统、方法、计算机设备及存储介质
Fu et al. A privacy-preserving fuzzy search scheme supporting logic query over encrypted cloud data
US11281688B2 (en) Ranking and de-ranking data strings
WO2018193507A1 (ja) 認証タグ生成装置、認証タグ検証装置、方法及びプログラム
Mouri et al. RS-PKE: Ranked searchable public-key encryption for cloud-assisted lightweight platforms
KR20100003093A (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
CN111901447B (zh) 域名数据管理方法、装置、设备及存储介质
JP6091394B2 (ja) 情報処理装置、暗号化方法
JPWO2017168798A1 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
Mlgheit et al. Security Model for Preserving Privacy over Encrypted Cloud Computing
KR100919824B1 (ko) 데이터 암호화 장치와 이를 이용한 암호화 방법
JP5276526B2 (ja) ビット列生成装置、ビット列生成方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130509

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131119

R150 Certificate of patent or registration of utility model

Ref document number: 5429502

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350