JP6400743B2 - 端末装置、データベースサーバおよび計算システム - Google Patents

端末装置、データベースサーバおよび計算システム Download PDF

Info

Publication number
JP6400743B2
JP6400743B2 JP2016574714A JP2016574714A JP6400743B2 JP 6400743 B2 JP6400743 B2 JP 6400743B2 JP 2016574714 A JP2016574714 A JP 2016574714A JP 2016574714 A JP2016574714 A JP 2016574714A JP 6400743 B2 JP6400743 B2 JP 6400743B2
Authority
JP
Japan
Prior art keywords
query
encryption
data
unit
segment
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
JP2016574714A
Other languages
English (en)
Other versions
JPWO2016129390A1 (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.)
KABUSHIKIKAISHA RNAI
Original Assignee
KABUSHIKIKAISHA RNAI
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 KABUSHIKIKAISHA RNAI filed Critical KABUSHIKIKAISHA RNAI
Publication of JPWO2016129390A1 publication Critical patent/JPWO2016129390A1/ja
Application granted granted Critical
Publication of JP6400743B2 publication Critical patent/JP6400743B2/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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースサーバ、クエリ装置(端末装置)、データベースシステムおよび計算システムなどに関する。特に、データベースサーバが格納するデータの情報提供者およびデータベースサーバ管理者にクエリの内容を知られずにクエリの処理を行うことができ、また、復号化の処理をすることなくクエリに応じた計算結果を情報提供者の暗号鍵により暗号化して得ることができるデータベースサーバ、クエリ装置、データベースシステムなどに関する。
クラウドサービスが利用可能となり、様々なデータベースサービスがインターネットを介して提供可能である。すなわち、情報提供者は、クラウドサービス提供者が提供するデータベースサーバに種々のデータを格納し、データベースサービスを提供することが可能となってきている。この場合、情報提供者自らがデータベースサーバを管理する必要はなく、クラウドサービス提供者が管理するデータベースサーバを借りることとなる。
このようなデータベースサービスの提供においては、情報提供者と異なるクラウドサービス提供者がデータベースサーバを管理するので、データの漏えいが発生する危険が高くなる可能性がある。例えば、クラウドサービス提供者は、提供するデータベースサーバに格納されたデータに直接アクセスしてデータを入手することが可能であり、情報提供者は価値の高いデータの提供を躊躇する場合がある。また、データベースサービスの利用者にしても、どのようなクエリをデータベースに対して発行したかをクラウドサービス提供者および情報提供者が知ることが可能である。このため、データベースサービスの利用者の意図が、他者により推測される可能性があるので、データベースサービスの利用を躊躇する場合がある。
このような問題を解決する技術として、データベースサーバに格納されるデータおよびクエリの両方またはいずれか一つを暗号化した状態でクエリを処理することを可能とする秘匿計算の技術が提案されている(例えば、特許文献1〜9参照。)。
国際公開第2013/038698号 特許第5412414号公報 特開2012−227801号公報 特開2013−130825号公報 特開2013−145420号公報 特開2013−125039号公報 特開2013−205655号公報 特開2009−271584号公報 特許第4938678号公報
従来の技術においては、情報提供者、データベースサーバ管理者およびデータベースの検索を行う利用者の間でクエリの秘匿化が十分に行えず、例えば、利用者のクエリが情報提供者に対して秘匿となっていても、データベースサーバ管理者にはデータベースに格納されているデータが秘匿とはならない場合がある。
本発明の一実施形態として、データベースと、受信部と、計算処理部とを有するデータベースサーバを提供する。データベースは、暗号化ベクトルデータを格納する。暗号化ベクトルデータとは、複数の要素により構成されるデータを、暗号化前における第1の演算の結果が暗号化後における第2の演算の結果を復号化して得られる結果となる第1の演算と第2の演算との準同型を保つ暗号化の処理により、前記複数の要素それぞれを暗号化して得られる。受信部は、クエリデータを有するクエリベクトルを複数のセグメントに分割し、それぞれが前記複数のセグメントのいずれかとランダムデータを含むランダムセグメントとのいずれか一以上を含み、前記クエリベクトルを復元可能な複数の難読化クエリベクトルを前記情報検索者の端末から受信する。計算処理部は、前記複数の難読化クエリベクトルそれぞれに含まれる前記複数のセグメントのいずれかのセグメントとランダムセグメントごとに、前記準同型により、前記暗号化ベクトルデータの前記複数の要素を暗号化する前の要素の部分列との計算結果のそれぞれを前記情報提供者の公開鍵により暗号化して得られるべき複数の暗号化計算結果を計算する。
本発明によれば、データベースサーバに格納されたデータは、情報提供者のみが復号化の処理をすることができ、また、データベースの検索を行う利用者のクエリの内容を情報提供者およびデータベースサーバ管理者が知ることを困難とすることができる。
本発明の一実施形態に係るシステムの機能ブロック図 本発明の一実施形態に係るシステムの情報提供装置の機能ブロック図 本発明の一実施形態に係るシステムの情報提供装置による暗号化処理を説明するための図 本発明の一実施形態に係るシステムのデータベースサーバの機能ブロック図 本発明の一実施形態に係るシステムのデータベースサーバに格納されたベクトルデータの一例図 本発明の一実施形態に係るシステムのデータベースサーバに格納されたベクトルデータの一例図 本発明の一実施形態に係るシステムのデータベースサーバにおける計算を説明するための図 本発明の一実施形態に係るシステムのクエリ装置の機能ブロック図 (A)は、クエリベクトルの一例図であり、(B)は、セグメント化されたクエリベクトルの一例図であり、(C)は、難読化クエリベクトルの一例図であり、(D)は、難読化情報の一例図である。 本発明の一実施形態に係るシステムの復号装置の機能ブロック図 本発明の一実施形態に係るシステムの情報提供装置の実行する処理のフローチャート 本発明の一実施形態に係るシステムのデータベースサーバが実行する処理のフローチャート 本発明の一実施形態に係るシステムのデータベースサーバが実行する処理のフローチャート 本発明の一実施形態に係るシステムのクエリ装置(端末装置)が実行する処理のフローチャート 本発明の一実施形態に係るシステムの復号装置が実行する処理のフローチャート 本発明の一実施形態に係るシステムのデータの流れを説明するための図 本発明の一実施形態に係るシステムのデータの流れを説明するための図 本発明の一実施形態に係るシステムのデータの流れを説明するための図 本発明の一実施形態に係るシステムの機能ブロック図 本発明の一実施形態に係るシステムのデータの流れを説明するための図 本発明の一実施形態に係るシステムのデータの流れを説明するための図 本発明の一実施形態に係るシステムのデータベースサーバの機能ブロック図 本発明の一実施形態に係るシステムの情報提供装置による暗号化処理を説明するための図
以下、本発明を実施するための形態について、図面を参照していくつかの実施形態として説明する。なお本発明は、以下に説明する実施形態に限定して、解釈されることはない。本発明は、以下に説明される実施形態を種々に変形して実施することが、可能である。
(実施形態1)
図1は、本発明の一実施形態に係るシステムの機能ブロック図、を示す。システム100は、情報提供装置101と、データベースサーバ102と、クエリ装置103と、復号装置104とを備える。なお、クエリ装置103を、「端末装置(103)」と呼称する場合がある。
本実施形態においては、情報提供装置101の運営者(すなわち、情報提供者)、データベースサーバ102の管理者およびクエリ装置103の利用者は互いに異なることが通常、想定される。また、復号装置104の運営者は、情報提供装置101の運営者と同一であってもよい。
システム100の動作の概要は以下の通りである。(ステップA)情報提供装置101が暗号化の処理を行った暗号化データ(例えば、複数の暗号化の処理がされた要素を含むベクトルデータ)を含むデータをデータベースサーバに格納する。(ステップB)クエリ装置103は、データベースサーバに対してクエリ(例えば、複数のクエリデータの要素を含むクエリベクトル)を送信する。この場合、クエリは平文で送られるのではなく、クエリ装置103において一種の暗号化の処理である難読化の処理が施され、データベースサーバ102の管理者および情報提供装置101の運営者が難読化前のクエリを復元困難な状態にしてからデータベースサーバ102に送信される。(ステップC)データベースサーバ102は、受信したクエリに応じて、暗号化データに対する計算を行い、その結果をクエリ装置103に返信する。このとき、クエリ装置103に返信される結果は、暗号化の処理がされている。また、データベースサーバ102における暗号化データに対する計算には、復号化の処理を含まないようにすることができる。(ステップD)クエリ装置103は、返信された結果の全てまたは一部を復号装置104に送信し、結果の全てまたは一部を復号化させる。復号装置104は、情報提供装置101がデータに対して行った暗号化の処理に対応する復号化の処理を行う。(ステップE)クエリ装置103は、復号化の処理がされた結果を受信し、難読化の処理の逆の処理を行い、計算結果を得ることができる。なお、暗号化の処理を行うことを、暗号化する(encrypt)という場合がある。同様に復号化の処理を行うことを復号化する(decrypt)という場合がある。
ステップAの暗号化の処理は、データベースサーバ102の管理者およびクエリ装置103の利用者の両者がデータの復号を行うことができないようにするために行うことができる。
ステップBの難読化の処理は、データベースサーバ102の管理者および情報提供装置101の運営者が、クエリの内容からクエリ装置103の利用者の意図を知ることができないようにするために行うことができる。なお、難読化の処理を「N−ランダム化ベクトルを生成する処理」と呼称する場合がある。ここに、「N」は、クエリをセグメントに分割数またはクエリの分割位置を表わす自然数の列であってよい。例えば、クエリの4番目までの要素のセグメントと、5番目から6番目までの要素のセグメントと、7番目以降の要素のセグメントに分割する難読化により得られるデータを、3−ランダム化ベクトルまたは(4,6)−ランダム化ベクトルという。
ステップCにおける結果は、情報提供装置101が暗号化の処理を行ったときの暗号鍵により暗号化された状態となっており、データベースサーバ102の管理者およびクエリ装置103の利用者の両者が計算結果の復号化の処理を行うことができないようにすることができる。
ステップDにおいて、復号装置104には、クエリの難読化により得られた計算結果が送信されるので、復号装置104は、復号化の処理を行っても、復号化の処理の結果から、クエリ装置103の利用者の意図を知ることを困難とすることができる。例えば、クエリ装置103の利用者が何を検索しようとしているかを知ることを困難とすることができる。
ステップEにおける逆難読化の処理の結果の内容は、データベースサーバ102の管理者および情報提供装置101の運営者に知られないようにクエリ装置103の利用者側で行うことができる。
したがって、本発明の一実施形態においては、データベースサーバ102に格納されたデータは暗号化されているので、データベースサーバ102からデータが漏えいしても情報提供装置101の運営者以外は復号化をすることができないようにすることができる。また、クエリ装置103が送信するクエリは難読化されているので、データベースサーバ102の管理者および情報提供装置101の運営者は、クエリ装置103の利用者の意図を知ることができないようにすることができる。また、クエリに対する結果は、難読化の影響を受けているので、クエリの結果を情報提供装置101の運営者が知ったとしても、クエリ装置103の利用者の意図を知ることができないようにすることができ、また、クエリの結果は、暗号化されているので、データベースサーバ102の管理者が、クエリの結果を復号化できないようにすることができる。また、復号装置104においても、計算結果は難読化の影響を受けているので、復号化の処理を行っても復号化の処理の結果から復号装置104の管理者がクエリ装置103の利用者の意図を知ることを困難とすることができる。
図2は、情報提供装置101の機能ブロック図を示す。情報提供装置は、データ取得部201と、データ暗号化部202と、鍵情報格納部203と、暗号化データ送信部204とを有する。なお、情報提供装置101は、CPU、メモリ、記憶装置、入出力装置およびそれらを接続するバスを含む計算機にプログラムを動作させることにより実現が可能である。また、情報提供装置101を、LSI(Large Scale Integration)などのハードウェアの構成要素を組み合わせて実現し、プログラムを用いる必要を無くすることもできる。
データ取得部201は、データを取得する。例えば、情報提供装置101に備えられた光ディスクドライブやハードディスクドライブより、データを読み込み、データを取得する。あるいは、情報提供装置101に接続された他の機器からデータを受信し、データを取得する。取得されたデータは、情報提供装置101の例えばメモリや記憶装置に記憶される。
データ取得部201が取得するデータは、複数の要素により構成される。例えば化合物について、予め定められた複数の部分構造それぞれを有するか否かを表わす値の組がデータとなる。この場合、化合物が、ある1つの部分構造を有するか否かを表わす値が要素となる。例えば、その化合物がメチル基を有するか否かを表わす値が要素となる。あるいは、一般的なオブジェクト(人、有体物または無体物)が、複数の属性それぞれを有するか否かを表わす値の組がデータとなる。この場合、オブジェクトが、ある1つの属性を有するか否かを表わす値が要素となる。例えば、その人が女性であるかどうかを表わす値が要素となる。なお、化合物が部分構造を有することやオブジェクトが属性を有することを表わす値として、1という整数の値を使用し、化合物が部分構造を有しないことやオブジェクトが属性を有しないことを表わす値として、0という整数の値を使用することができる。
データ取得部201が取得するデータが複数の要素により構成されるので、データ取得部201を「要素取得部(201)」と呼称する場合がある。
データ暗号化部202は、データ取得部201が取得したデータの暗号化の処理を行う。データ暗号化部202は、鍵情報格納部203に格納された暗号鍵を用いて、データを構成する複数の要素それぞれを暗号化する。暗号鍵は、共通鍵暗号化方法の共通鍵、または、公開鍵暗号化方法の公開鍵や秘密鍵を用いることができる。本発明の一実施形態においては、データベースサーバ102においてもその暗号鍵を用いてクエリの暗号化の処理が必要となる場合に備え、情報提供装置101の利用者の公開鍵を用いるのが好ましい。また、2つの要素の値が同じであっても、それぞれの要素に対する暗号化の処理の結果が同一にならないのが好ましい。このため、確率暗号の処理が用いられるのが好ましい。
データ暗号化部202を「要素暗号化部(202)」と呼称する場合がある。
データ暗号化部202は、例えば、鍵情報格納部203に格納された暗号鍵を読み出し、情報提供装置101の例えばメモリに記憶し、また、データ取得部201が取得しメモリや記憶装置に記憶されたデータを読み出し、暗号化をCPUに行わせるプログラムを実行することにより実現することができる。また、データ暗号化部202を、プログラムを用いずにハードウェアの組合せによっても実現することができる。暗号化の処理の結果は、情報提供装置101のメモリや記憶装置に記憶される。
本実施形態においては、暗号化の処理は、暗号化の処理の前の値に第1の演算を適用した結果が、暗号化の処理の結果に第2の演算を適用した結果を復号化して得られる結果となる処理であるのが好ましい。すなわち、本実施形態における暗号化の処理は、第1の演算と第2の演算との準同型(Semi−Homomorphism)を保つことが好ましい。
例えば、第1の演算を「+」を用いる和の演算とし、第2の演算を「*」を用いる積の演算とした場合において、暗号化の処理を関数Encにより表わし、暗号化の処理の前の値に第1の演算を適用した結果をa+bと表わすとする。このとき、暗号化の処理の結果に第2の演算を適用した結果を復号化して得られる結果は、Enc−1(Enc(a)*Enc(b))となる。したがって、
Enc(a+b)=Enc(a)*Enc(b)
が成り立つことが好ましい。
第1の演算と第2の演算との準同型を保つ暗号化としては、例えば、ElGamal暗号が知られている。ElGamal暗号においては、ある群(group)Gの位数をqとし、Gの生成元の1つをgとした場合に、秘密鍵は、0以上q−1以下の値の整数から選択された数とすることができる。例えば、秘密鍵をx(0≦x≦q−1)とする。このとき、公開鍵は、g(gのx乗)とすることができる。なお、Gの生成元とは、gのべき乗の列g、g、g、g、…、g−1、g−2、g−3、…を生成することにより、Gの全ての元を得ることができる元gをいう。なお、Gの位数qは無限大である場合がある。この場合には、秘密鍵は、任意の整数から選択することができる。
公開鍵により平文mを、群Gの元に対応付けるために、エンコードしたものをsと表わすと(例えば、s=gとしてエンコードを行う)、暗号化の処理の結果Enc(m)は、暗号化の処理時に0≦r≦q−1を任意に選択して、Enc(m)=(g, s*(g)となる。rが個々の平文mに対して異なって選択されることにより、ElGamal暗号は確率暗号となる。
Enc(m)=(g, s*(g)を、秘密鍵xを用いて復号化する場合には、c=g、c=s*(gとすると、c*(c −1を計算すればよい。
また、Enc(a)=(g, s*(g)とし、Enc(b)=(gr´, s*(g)として、Enc(a)*Enc(b)を次のように定義する。
Enc(a)*Enc(b)=(g*gr´,s*(g*s*(gr´)
(すなわち、(x,y)*(z,w)=(x*z,y*w)と定義する)
このとき、
(g*gr´,s*(g*s*(g)=(gr+r´,sa+b*(gr+r´)=Enc(a+b)
となる。したがって、Enc(a+b)=Enc(a)*Enc(b)が成り立ち、ElGamal暗号は、第1の演算「+」と第2の演算「*」との準同型を保つ。
第1の演算と第2の演算との準同型を保つ別の暗号方法としては、例えばPaillier暗号が知られている。
図3は、データ暗号化部202の暗号化の処理を説明するための図である。符号301は、M個の要素であるan1、an2、…、anMにより構成される第nデータを表わすとする。データ暗号化部202が、このn番目のデータを暗号化した結果は、符号302により表わされ、Enc(an1)、Enc(an2)、…、Enc(anM)というM個の暗号化された要素となる。暗号化された複数の要素により構成されるデータを、「暗号化ベクトルデータ」または単に「暗号化ベクトル」という。
暗号化データ送信部204は、データ暗号化部202により暗号化されたデータ(暗号化ベクトルデータ)を含むデータをデータベースサーバ102へ送信する。例えば、暗号化データ送信部204は、通信網を介してデータベースサーバ102と通信を行い、暗号化ベクトルデータを含むデータを送信する。あるいは、暗号化データ送信部204は、暗号化ベクトルデータを含むデータを記録装置に送信し、記録装置が暗号化されたデータを記録媒体に記録し、記録媒体がデータベースサーバ102に向けて輸送されてもよい。
暗号化データ送信部204は、情報提供装置101のメモリや記憶装置に記憶されたデータ暗号化部202による暗号化の処理の結果を読み出し、暗号化の処理の結果を入出力装置に送信し、データ暗号化部202により暗号化されたデータを送信する。
なお、暗号化データ送信部204を「暗号化要素送信部(204)」と呼称する場合がある。
図4は、データベースサーバ102の機能ブロック図を示す。データベースサーバ102は、データベース401と、暗号化データ受信部402と、データベース管理部403と、受信部404と、計算処理部405と、送信部406とを備える。なお、データベースサーバ102は、CPU、メモリ、記憶装置、入出力装置およびそれらを接続するバスを含む計算機にプログラムを動作させることにより実現が可能である。また、データベースサーバ102を、LSI(Large Scale Integration)などのハードウェアの構成要素を組み合わせて実現し、プログラムを用いる必要を無くすることもできる。
データベース401は、情報提供装置101から送信された暗号化ベクトルデータを含む1または複数のデータを格納する。したがって、データベース401は、1または複数の暗号化ベクトルデータを格納するということができる。暗号化ベクトルデータを含むデータの格納は、例えば、データベースサーバ102の記憶装置が行うことができる。
図5は、データベース401にそれぞれがM個の暗号化された要素を有するN個の暗号化ベクトルデータが格納された状態の一例図である。列501は、暗号化ベクトルデータを一意に識別するための番号が格納され、列502に暗号化ベクトルデータが格納されている。列501と列502とによりテーブルが形成される。
図6は、データベース401にそれぞれがM個の暗号化された要素を有するN個の暗号化ベクトルデータが格納された状態の別の一例図である。図6においては、図5に示すテーブルに、列601が追加されたテーブルが示されている。これにより、列601に格納されている例えばEnc(V)が、Enc(a31)、Enc(a32)、…、Enc(a3M)という暗号化ベクトルデータに関連付けられている。これにより、データベース401に対するクエリの計算結果に列601に格納されているデータを含めることができる。すなわち、クエリが列502に格納された暗号化ベクトルデータをキーとする検索を行うという計算を表わしているときに、計算結果である検索結果に列601に格納され、暗号化ベクトルデータに関連付けられている値を含めることができる。なお、図6においては、列601に格納されているデータは、暗号化の処理がされたデータとなっているが、列601に格納されているデータは暗号化の処理がされていなくてもよい。
暗号化データ受信部402は、暗号化データ送信部204が送信した暗号化ベクトルデータを含むデータを受信する。例えば、暗号化データ送信部204が通信網を介してデータを送信する場合には、暗号化データ受信部402はその通信網に接続された入出力装置を介してデータを受信する。また、暗号化データ送信部204により、データが記録媒体に格納されている場合には、暗号化データ受信部402は、その記録媒体を読み取る読取装置からデータを受信する。受信されたデータは、一時的にメモリに記憶されてもよい。
データベース管理部403は、暗号化データ受信部402が受信したデータをデータベース401に格納する。例えば、一時的にメモリに記憶されているデータをCPUが読み出し、記憶装置に格納する。この結果、データベース401には、例えば図5、図6に示されるテーブルが格納され、そのテーブルに1または複数の暗号化ベクトルデータが格納される。
受信部404は、クエリ装置103よりクエリを受信する。クエリは、データベース401に格納された暗号化ベクトルデータに対して行うべき計算を表わす。本実施形態では、クエリは、データベース401に格納されている暗号化ベクトルデータの要素の個数と同じ個数の値により構成されるベクトルデータであることが好ましい。もし、クエリを構成する値の個数が、データベース401に格納されている暗号化ベクトルデータの要素の個数と異なる場合には、クエリを複数のベクトルデータに分割したり、値のパディングを行ったりして、データベース401に格納されている暗号化ベクトルデータの要素の個数に合致させることが好ましい。あるいは、クエリを構成する値の個数が、データベース401に格納されている暗号化ベクトルデータの要素の個数と異なる場合には、エラーとしてもよい。なお、以下では、クエリが1または複数のベクトルを含む場合、個々のベクトルを「クエリベクトル」または「クエリベクトルデータ」という場合がある。
受信部404は、クエリ装置103が通信網を介してクエリを送信する場合には、その通信網に接続された入出力装置を介してクエリを受信する。あるいは、受信部404は、クエリ装置103によりクエリが記録された記憶媒体を読み取る読取装置からクエリを受信してもよい。受信されたクエリは、一時的にメモリに記憶されてもよい。計算処理部405の処理において、クエリベクトルが複数のセグメントに分割される場合には、受信部404は、クエリベクトルの分割の情報も受信してもよい。例えば、受信部404は、それぞれのセグメントが含むデータの数(または、それぞれのセグメントの長さ若しくはセグメントの区切り位置)の情報を受信してもよい。
計算処理部405は、受信部404が受信したクエリに応じて、データベース401に格納された暗号化データに対して計算を行う。データベースサーバ102が計算機により実現される場合には、クエリに応じて暗号化データに対して計算を行うプログラムが記憶装置からメモリに読み込まれ、そのプログラムがCPUにより実行されることになる。計算結果は、データベースサーバ102を実現する計算機のメモリや記憶装置に格納される。
図7は、計算処理部405による計算を説明するための図である。データベース401には暗号化ベクトルデータが格納され、クエリも1または複数のベクトルデータ(1または複数のクエリベクトル)を含む場合には、計算処理部405が行う計算は、基本的には、データベース401に格納されている暗号化ベクトルデータそれぞれと、クエリベクトルデータそれぞれとの計算をすることになる。また、クエリのベクトルデータを複数のセグメントに分割した場合、暗号化ベクトルデータも同じく複数のセグメントに分割し、クエリデータのクエリベクトルそれぞれと、暗号化ベクトルデータの対応するセグメントとの計算をすることが可能である。この場合、「暗号化ベクトルデータも同じく複数のセグメントに分割する」とは、クエリのクエリベクトルの複数のセグメントのセグメント列中の第iセグメントの長さと、暗号化ベクトルデータの複数のセグメントのセグメント列中の第iセグメントの長さが同じになることをいう。また、「クエリベクトルデータそれぞれと、暗号化ベクトルデータの対応するセグメントとの計算をする」とは、クエリベクトルデータの複数のセグメントのセグメント列中の第iセグメントと、暗号化ベクトルデータの複数のセグメントのセグメント列中の第iセグメントとの要素の積の値を計算し、計算した値の積を計算することである。
図7において、クエリベクトルデータの一つが、符号701に示されるように、q、q、…、qとなっている場合に、データベース401に格納されている第iベクトルデータEnc(ai1)、Enc(ai2)、…、Enc(aiM)が読み出されると、計算処理部405は、(q*Enc(ai1))*(q*Enc(ai2))*…*(q*Enc(aiM))を計算することができる。また、計算処理部405は、q*Enc(ai1)、q*Enc(ai2)、…、q*Enc(aiM)のM個の項の中から選ばれる任意の項を用いる計算をすることができる。特に、q、q、…、qが0または1であれば、Enc(ai1)、Enc(ai2)、…、Enc(aiM)の中から選ばれる項の任意の項の積を計算することができる。この計算結果は、ai1、ai2、…、aiMの中から選ばれる項の任意の項の和に対する暗号化の処理の結果を、Encに対応する復号化の処理を行うことなく、計算することができる。
また、例えばEnc(a+b)=Enc(a)*Enc(b)であるのでEnc(2a)=Enc(a+a)=Enc(a)*Enc(a)=Enc(a)などであるので、q、q、…、qが整数であれば、Enc(qi1+qi2+…+qiM)=Enc(ai1q1*Enc(ai2q2*…*Enc(aiMqMとなる。すなわち、q、q、…、qとai1、ai2、…、aiMとの内積(ユークリッド計量)を暗号化した値(Enc(qi1+qi2+…+qiM))を、ai1、ai2、…、aiMそれぞれを暗号化したEnc(ai1)、Enc(ai2)、…、Enc(aiM)に対して演算*を適用することにより算出することができる。
別言すると、q、q、…、qに基づいて、ai1、ai2、…、aiMの各要素に対して+の演算を行なって得られる計算結果(qijの和)を暗号化した暗号化計算結果を、暗号化ベクトルEnc(ai1)、Enc(ai2)、…、Enc(aiM)の各データに対して、q、q、…、qに基づいて*の演算を行なって得られる冪の値、また、複数の冪の値に対する*による演算結果を得ることができる。暗号化ベクトルEnc(ai1)、Enc(ai2)、…、Enc(aiM)の各データに対して、q、q、…、qに基づいて*の演算を行なう場合、復号化を行なう必要がなくなる。
また、上記では、ユークリッド計量の計算の例について説明したが、ミンコフスキー計量も同様に計算することができる。
ここで、ai1、ai2、…、aiMの全てが、整数0および整数1のいずれかであるとし、q、q、…、qも全てが、0および1のいずれかであるとする。
このとき、例えば、q、q、…、qの全てが1であれば、(q*Enc(ai1))*(q*Enc(ai2))*…*(q*Enc(aiM))=Enc(ai1)*Enc(ai2)*Enc(aiM)=Enc(ai1+ai2+…+aiM)となり、ai1+ai2+…+aiMは、ai1、ai2、…、aiMの中の1の個数となるので、Enc(ai1)、Enc(ai2)、…、Enc(aiM)のそれぞれの復号化の処理をしなくても、ai1、ai2、…、aiMの中の1の個数に対して、暗号化の処理を行って得られる値を計算することができる。
また、q、q、…、qの全てが1でなくても、
Figure 0006400743

となるので、qとaijとの両方が1となる添え字jの個数を暗号化した値を計算することができる。なお、左辺は、q=1となるjについて、Enc(aij)の*による演算結果を表わす。すなわち、q=1となるjが1、3および4であれば、左辺は、Enc(ai1)*Enc(ai3)*Enc(ai4)を表わすことになる。
そこで、ベクトルai1、ai2、…、aiMをAと記し、クエリベクトルq、q、…、qをQと記す場合、AとQとの類似度を表わす指標として様々な指標が知られている。例えば、このような指標の1として、以下の式により計算されるTversky Indexが知られている。
|A∩Q|/(|A∩Q|+α(|A|−|A∩Q|)+β(|Q|−|A∩Q|))
ここに、|A∩Q|は、qとaijとの両方が1となる添え字jの個数であり、|A|は、ai1、ai2、…、aiMの中の1の個数であり、|Q|は、q、q、…、qの中の1の個数であり、αおよびβのそれぞれは、正の数である。また、αおよびβのそれぞれは、正の整数または有理数であるとすることができる。
θを0以上の数として、Tversky Indexがθ以上であるとする。すなわち、
|A∩Q|/(|A∩Q|+α(|A|−|A∩Q|)+β(|Q|−|A∩Q|))≧θ
の式が得られる。この式を変形すると、
{1−θ+θ(α+β)}|A∩Q|−αθ|A|−βθ|Q|≧0 (2)
を得ることができる。ここで、整数の演算に置き換えるために、α´、β´、θ´、θを、
α=α´/θ、β=β´/θ、θ=θ´/θ
を満たす自然数であるとすると、式(2)は、以下の式(3)に変形できる。この式(3)により、Tversky Indexに対応する値を計算することができる。
γ|A∩Q|+γ|A|+γ|Q|≧0 (3)
ここに
γ=θ(θ−θ´)+θ´(α´+β´)
γ=−α´θ´
γ=−β´θ´
である。したがって、式(2)が成り立てば、式(3)が成り立つこととなる。
ここで、|A∩Q|は、Aの第i要素とQの第i要素との両方が1となるiの数であるので、Enc(|A∩Q|)は、式(1)より
Figure 0006400743

により計算される。Enc(|A|)は、ai1+ai2+…+aiMに暗号化の処理をしたものであるので、ai1、ai2、…、aiMにそれぞれ暗号化の処理をして得られる値の積である
Figure 0006400743

により計算される。Enc(|Q|)は、q+q+…+qに暗号化の処理をしたものであるので、q、q、…、qそれぞれを暗号化の処理をして得られる値の積である
Figure 0006400743

により計算される。ここで、Encが公開鍵による暗号化の処理であれば、Enc(|A∩Q|)、Enc(|A|)およびEnc(|Q|)のそれぞれは復号化の処理を実行しなくても計算が可能であり、データベースサーバ102において計算することができる。したがって、
Enc(γ|A∩Q|+γ|A|+γ|Q|)=Enc(|A∩Q|)γ1*Enc(|A|)γ2*Enc(|Q|)γ3
により、式(3)の左辺をデータベースサーバ102において計算することができる。なおEncが情報提供装置101の運営者の秘密鍵による暗号化の処理であっても、QそのものまたはQの中の1の数をデータベースサーバ102から情報提供装置101の運営者の秘密鍵を格納している装置に送信し、その装置において、Enc(q+q+…+q)を計算させて返信させることにより、データベースサーバ102は、Enc(|Q|)を取得することができる。
なお、群Gは、生成元をgとし、位数がqであるので、整数0を群Gの元g(すなわち、Gの単位元)に対応付け、正の整数nをgに対応付け、負の整数mをgq+mに対応付けることにより、式(3)の左辺を群Gの中での演算により計算することができ、式(3)が成り立つかどうかの演算も可能である。
以上においては、クエリベクトルq、q、…、qと暗号化ベクトルデータEnc(ai1)、Enc(ai2)、…、Enc(aiM)とを用いた計算について説明した。さらに、上述したクエリベクトルのセグメントと暗号化ベクトルデータのセグメントとを用いた計算を一般化し、クエリベクトルの部分ベクトルと暗号化ベクトルデータの部分ベクトルとを用いた計算をすることもできる。ここにベクトルv、v、…、vの部分ベクトルとは、集合{1、2、…、M}の部分集合の要素を添え字として用いて{v、v、…、v}から要素を選択してベクトルとしたものである。例えば、M≧6であるとき、{2、4、6}の要素を添え字として用いて{v、v、v}を選択して部分ベクトルとする。
また、集合{1、2、…、M}を複数の部分集合に分割し、それぞれの部分集合に対応するクエリベクトルの部分ベクトルと暗号化ベクトルデータの部分ベクトルとを用いた複数の種類の値の計算を行い、計算された複数の値の積を計算することにより、クエリベクトルと暗号化ベクトルデータの計算をすることができる。
例えば、クエリベクトルq、q、…、qが複数のセグメントに分割されているとする。例えば、1より大きくM未満の数のL個の数の列u1、u2、…、uLであり、1<u1<u2<…<uL<Mとなる列が与えられたとする。このような数の列により、クエリベクトルを複数のセグメントに分割することができる。すなわち、クエリベクトルの第1セグメントをqからqu1まで、クエリベクトルの第2セグメントをqu1+1からqu2まで、…、クエリベクトルの第L+1セグメントをquL+1からqとすることができる。この場合、クエリベクトルのセグメントと暗号化ベクトルデータのセグメントの要素ごとの積を計算することができる。すなわち、クエリの複数のセグメントの分割に対応させて、暗号化ベクトルデータEnc(ai1)、Enc(ai2)、…、Enc(aiM)を、暗号化ベクトルデータの第1セグメントがEnc(ai1)からEnc(aiu1)まで、第2セグメントがEnc(aiu1+1)からEnc(aiu2)まで、…、第L+1セグメントがEnc(aiuL+1)からEnc(aiM)まで、となるように分割する。そして、クエリベクトルの第iセグメントの要素と暗号化ベクトルデータの第iセグメントの要素(1≦i≦L+1)とのL+1個の積の値を、計算処理部405による計算結果とすることができる。
計算処理部405は、クエリベクトルとデータベース401に格納されている暗号化ベクトルデータのそれぞれとの計算結果を生成することができる。計算としては、上述のように、セグメントの対応する要素の積などがある。また、複数のクエリベクトルが受信部404により受信された場合には、複数のクエリベクトルのそれぞれと、データベース401に格納されている暗号化ベクトルデータのそれぞれとの計算結果を計算する。
なお、複数のクエリベクトルが受信部404により受信される場合としては、以下に説明するように、クエリ装置103においてクエリの難読化の処理が行われる場合がある。すなわち、クエリベクトルを複数のセグメントに分割し、クエリベクトルと同じ長さのランダムなデータを有し、クエリと同じく複数のセグメントに分割した1または複数のランダムデータベクトルとクエリとの間で、セグメントのシャッフルが行われる場合である。この場合、クエリの第iセグメントは、ランダムデータベクトルの第iセグメントとなるようにシャッフルがされる。クエリベクトルをN個のセグメントに分割し、クエリベクトルと同じ長さのランダムなデータを有し、クエリと同じく複数のセグメントに分割した1または複数のランダムデータベクトルとクエリとの間で、セグメントのシャッフルが行われて生成される複数のベクトルを、N−ランダム化ベクトルという。また、Nは、1<u1<u2<…<uL<Mとなる数列u1、u2、…、uLを表わしてもよい。このとき、上述のN−ランダム化ベクトルは、L+1−ランダム化ベクトルまたは(u1、u2、…、uL)−ランダム化ベクトルと表記することができる。
送信部406は、計算処理部405による計算結果を、送信する。例えば、データベースサーバ102とクエリ装置103とが通信網を介して接続されていれば、送信部406は、その通信網を介して計算処理部405による計算結果をクエリ装置103に送信する。また、送信部406は、記憶媒体に計算処理部405による計算結果を記録する記録装置に計算処理部405による計算結果を送信してもよい。送信部406は、計算処理部405による計算結果をメモリや記憶装置から読み出し、入力装置に出力することにより、計算結果を送信する。
図8は、クエリ装置103の機能ブロック図を示す。クエリ装置103は、クエリ取得部801と、クエリ難読化部802と、クエリ送信部803と、計算結果受信部804と、計算結果送信部805と、復号結果受信部806と、逆難読化部807と、難読化情報格納部808と、出力部809とを備える。なお、クエリ装置103は、CPU、メモリ、記憶装置、入出力装置およびそれらを接続するバスを含む計算機にプログラムを動作させることにより実現が可能である。クエリ装置103の具体的な形態としては、パーソナルコンピュータ、スマートフォンなどを挙げることができる。また、クエリ装置103を、LSI(Large Scale Integration)などのハードウェアの構成要素を組み合わせて実現し、プログラムを用いる必要を無くすることもできる。
クエリ取得部801は、複数のデータを有するクエリを取得する。例えば、クエリ装置103のGUIなどを介してクエリを取得する。取得されたクエリにより、クエリベクトルが得られる。すなわち、複数のデータが取得されることにより、これらのデータによりクエリベクトルが得られる。得られたクエリベクトルは、クエリ装置103のメモリや記憶装置に記憶される。
クエリ難読化部802は、クエリベクトルの難読化の処理を行う。クエリベクトルの難読化の処理とは、具体的には次の処理を意味することができる。
(ステップ1)クエリベクトルを複数のセグメントに分割する処理を行う。例えば上述のように、M以下の数のL個の数の列u1、u2、…、uLであり、1<u1<u2<…<uL<Mとなる列が与えられ、クエリベクトルがL+1のセグメントに分割される。
(ステップ2)複数の難読化クエリベクトルを生成する。クエリベクトルと同じ長さのランダムなデータを有し、クエリベクトルと同じく複数のセグメントに分割した1または複数のランダムデータベクトルを用意する。そして、ランダムデータベクトルとクエリベクトルとの間で、セグメントのシャッフルを行う(クエリベクトルのセグメントとランダムデータベクトルのセグメントとを交換する操作を1回以上行う)。この場合、クエリベクトルの第iセグメントは、ランダムデータベクトルの第iセグメントとなるようにシャッフルがされる。
上記の(ステップ1)および(ステップ2)の処理により得られる複数のベクトルを複数の「L+1−ランダム化ベクトル」または「(u1、u2、…、uL)−ランダム化ベクトル」と呼称することが可能である。
クエリベクトルの難読化の処理により、複数のデータを有するクエリベクトルを複数のセグメントに分割し、複数のセグメントのいずれかとランダムデータを含むランダムセグメントとのいずれか1以上を含む複数のベクトルを得ることができる。また、この複数のベクトルから、ランダムセグメント以外を選択することにより、クエリベクトルが復元可能となる。
図9(A)〜図9(D)は、難読化クエリ(L+1−ランダム化ベクトル)の生成について説明するための図である。図9(A)に示すように、M個の要素q、q、…、qを含むクエリ901が取得され、メモリや記憶装置に記憶されたとする。
上記のステップ1の処理に対応し、図9(B)に示すように、クエリ901をL+1個のセグメントB(911)、B(912)、…、BL+1(913)に分割する。
上記のステップ2の処理に対応し、最終的に得られる難読化クエリベクトルの数を例えば2とし、その2つの難読化クエリベクトルを、図9(C)のように、符号931と932とにより示すことにする。この場合、最初の段階において、例えば符号931をクエリベクトルとし、符号932をランダムデータベクトルとした場合、クエリベクトル931とランダムデータベクトル932との間でセグメントのシャッフルを行う。例えば、図9(C)においては、クエリベクトルの第1セグメントBとランダムデータベクトルの第1セグメントとを交換する(図9(C)では、BとBL+1とはランダムデータベクトル932のセグメントと交換されていないが、B、B、…、BLの中から選択されるセグメントをランダムデータベクトルのセグメントと交換することができる)。
難読化の処理により、図9(C)においては、クエリベクトルの第1セグメントB1(911)は、難読化クエリベクトル932の第1セグメントとして配置され、クエリベクトルの第2セグメントB2(912)は、難読化クエリベクトルの931の第2セグメントとして配置され、…、クエリベクトルの第L+1セグメントは、難読化クエリベクトル931の第L+1セグメントとして配置されている。そして、クエリベクトルのセグメントが配置されない難読化クエリのセグメントは、ランダムな値を有するセグメントとなる。
図9(D)は、クエリベクトルの各セグメントが複数の難読化クエリベクトルのいずれの難読化クエリベクトルのセグメントとして配置されたかを表わす情報の例である。すなわち、列951には、クエリベクトルのセグメントの番号が格納され、列952には、難読化クエリベクトルの番号(複数のL+1−ランダム化ベクトルのいずれかの識別子)が格納される。このような情報を難読化情報または生成情報という。難読化情報には、それぞれのセグメントの長さの情報を含むこともできる。
クエリ難読化部802により、クエリベクトルの難読化の処理が行われると、難読化情報も生成され、生成された難読化情報は、難読化情報格納部808に格納される。例えば、メモリや記憶装置に難読化情報が記憶される。また、このとき、クエリ取得部801が取得したクエリと関連付けて難読化情報が記憶されてもよい。
クエリ送信部803は、クエリ難読化部802による難読化により得られた難読化クエリをデータベースサーバ102に送信する。例えば、クエリ送信部803は、通信網を介して、難読化クエリをデータベースサーバ102に送信する。あるいは、クエリ送信部803は、記録媒体に書き込みを行う装置に難読化クエリを送信し、難読化クエリが記録された記録媒体がデータベースサーバ102に発送されてもよい。なお、クエリ送信部803は、各セグメントの長さの情報も送信してもよい。また、例えば、Tversky Indexに関する計算がデータベースサーバ102において行われるのであれば、α´、β´、θ´、θなどがパラメータとして送信されてもよい。
計算結果受信部804は、クエリ送信部803による難読化クエリの送信に対応して、データベースサーバ102より計算結果を受信する。例えば、計算結果受信部804は、通信網を介して、計算結果を受信し、受信した計算結果をメモリや記憶装置に記憶する。あるいは、データベースサーバ102から発送された記録媒体を読み取る装置から計算結果を受信し、受信した計算結果をメモリや記憶装置に記憶する。
計算結果送信部805は、計算結果受信部804により受信された計算結果の一部または全てを、復号装置104に送信する。クエリ装置103においては、難読化クエリのどのセグメントがランダムデータセグメントのセグメントであるかの情報を難読化情報などとして有しているので、ランダムデータセグメントのセグメントに関する計算結果は復号装置104に送信する必要はない。ただし、復号装置104が、復号の結果から、どのような計算が行われたかを推測することを困難とするために、ランダムデータセグメントのセグメントについての計算結果を復号装置104に送信するのが好ましい。計算結果送信部805は、通信網を介して、計算結果を送信する。あるいは、記録媒体に計算結果を書き込む記録装置に計算結果を送信し、計算結果が記録された記録媒体が復号装置104に発送されてもよい。
復号結果受信部806は、復号装置104から送信される復号結果を受信する。例えば、復号結果受信部806は、通信網を介して復号結果を受信する。あるいは、復号結果が記録された記録媒体を読み取る装置から復号結果を受信する。受信された復号結果は、メモリや記憶装置に記憶される。
なお、通信網を介して、計算結果送信部805による計算結果の送信、および、復号結果受信部806による復号結果の受信を行う場合には、クエリ装置103と復号装置104とが直接通信を行うと、復号装置104が、クエリ装置103のIPアドレスなどを得ることができる。これにより、クエリ装置103がどの組織に属しているかを知ることができる。このようなことを防ぐために、クエリ装置103と復号装置104との通信は、別のサーバを介して行い、クエリ装置103の情報が復号装置104に知られないようにするのが好ましい。例えば、データベースサーバ102を介してクエリ装置103と復号装置104との間の通信が行われるようになっていてもよい。
逆難読化部807は、復号結果受信部806により受信された復号結果を、難読化情報格納部808に格納された難読化情報を用いて、難読化の処理の逆の処理を行う。
すなわち、難読化クエリベクトルのそれぞれから、各セグメントについての計算結果がデータベースサーバ102から受信され、復号装置104に送信される。復号装置104から受信される復号の結果から、難読化情報を参照することにより、ランダムデータベクトルのセグメントについての復号の結果を除去することができ、クエリベクトルの各セグメントについての計算結果を得ることができる。
例えば、クエリの全てのデータを1とするクエリベクトルを複数のセグメントB、B、…、BL+1に分割したとする。これらの複数のセグメントそれぞれについての計算結果として、データベースサーバ102より、Enc(b)、Enc(b)、…、Enc(bL+1)が得られたとすると、Enc(b)、Enc(b)、…、Enc(bL+1)を復号装置104に送信し、復号させることにより、b、b、…、bL+1を得ることができ、暗号化ベクトルデータの暗号化前データの各セグメントの1の数に関する情報を得ることができる。Enc(b)、Enc(b)、…、Enc(bL+1)それぞれを復号装置104に送信するかわりにEnc(b)*Enc(b)*…*Enc(bL+1)を計算してその計算結果を復号装置104に送信しても、暗号化ベクトルデータの暗号化の処理前のデータの各セグメントの中の1の数に関する情報を得ることができる。
同様に、クエリデータと暗号化ベクトルデータの暗号化前のデータとのTversky Indexに関する情報を得ることもできる。また、上述のように、ユークリッド計量やミンコフスキー計量に関する情報を得ることもできる。
出力部809は、逆難読化部807の処理の結果を出力する。例えば、クエリ装置103のディスプレイに、逆難読化部807の処理の結果を、表示する。
図10は、復号装置104の機能ブロック図を示す。復号装置は、復号鍵格納部1001と、結果受信部1002と、復号部1003と、復号結果送信部1004とを備える。なお、復号装置104は、CPU、メモリ、記憶装置、入出力装置およびそれらを接続するバスを含む計算機にプログラムを動作させることにより実現が可能である。また、復号装置104を、LSI(Large Scale Integration)などのハードウェアの構成要素を組み合わせて実現することによりプログラムを用いる必要を無くすこともできる。また、復号装置104と情報提供装置101とを一つの装置とすることもできる。
復号鍵格納部1001は、復号鍵を記憶する。例えば、メモリや記憶装置に復号鍵が記憶される。復号鍵は、情報提供装置101のデータ暗号化部202による暗号化の処理に対応する復号化の処理を行うための鍵である。情報提供装置101のデータ暗号化部202による暗号化の処理において、公開鍵が用いられるのであれば、復号鍵は、その公開鍵に対応する秘密鍵となる。
結果受信部1002は、クエリ装置103より、データベースサーバ102から送信された計算結果を、受信する。例えば、結果受信部1002は、通信網を介して計算結果を受信し、受信した計算結果をメモリや記憶装置に記憶する。
復号部1003は、復号鍵格納部1001に格納された復号鍵を用いて、結果受信部1002により受信された計算結果を復号化の処理を実行する。復号化の処理を実行して得られる結果である復号結果は、メモリや記憶装置に記憶される。
復号結果送信部1004は、復号部1003により復号された結果をクエリ装置に送信する。例えば、復号結果送信部1004は、通信網を介して復号結果を送信する。
図11は、情報提供装置101の処理のフローチャートの一例である。ステップS1101の処理として、データ取得部201を動作させることにより、データを取得する。ステップS1102の処理として、データ暗号化部202を動作させることにより、データを暗号化し暗号化ベクトルデータを生成する。ステップS1103の処理として、暗号化データ送信部204を動作させることにより、暗号化ベクトルデータを送信する。
図12は、データベースサーバ102が、暗号化ベクトルデータを受信し、データベース401に格納するまでの処理のフローチャートである。ステップS1201の処理として、暗号化データ受信部402を動作させることにより、暗号化ベクトルデータを受信する。ステップS1202の処理として、データベース管理部403を動作させることにより、暗号化データをデータベース401に格納する。
図13は、データベースサーバ102が、難読化クエリを受信してから、計算結果を送信するまでの処理のフローチャートである。ステップS1301の処理として、受信部404を動作させることにより、難読化クエリを受信する。ステップS1302の処理として、計算処理部405を動作させることにより、難読化クエリのベクトルのセグメントごとに計算を行う。ステップS1303の処理として、送信部406を動作させることにより、計算結果を送信する。
図14は、クエリ装置103の処理を説明するフローチャートである。ステップS1401の処理として、クエリ取得部801を動作させることにより、クエリを取得する。ステップS1402の処理として、クエリ難読化部802を動作させることにより、難読化クエリを生成する。このとき、難読化情報が難読化情報格納部808に格納される。ステップS1403の処理として、クエリ送信部803を動作させることにより、難読化クエリを送信する。ステップS1404の処理として、計算結果受信部804を動作させることにより、計算結果を取得する。ステップS1405の処理として、計算結果送信部805を動作させることにより計算結果を送信する。ステップS1406の処理として、復号結果受信部806を動作させることにより、復号化の処理の結果を受信する。ステップS1407の処理として、逆難読化部807を動作させることにより、難読化の逆の処理を行う。ステップS1408の処理として、出力部809を動作させることにより、難読化の逆の処理の出力を行う。
図15は、復号装置104の処理を説明するフローチャートである。ステップS1501の処理として、結果受信部1002を動作させることにより、計算結果を受信する。ステップS1502の処理として、復号部1003を動作させることにより、復号化の処理を行う。ステップS1503の処理として、復号結果送信部1004を動作させることにより、復号化の処理の結果を送信する。
図16は、本発明の一実施形態に係るシステムのデータの流れを説明するための図である。
(ステップ1)情報提供装置101からデータベースサーバ102へ、暗号化ベクトルデータが送信され、データベースサーバ102のデータベース401へ格納される。暗号化データの送信は、必要に応じて随時行われる。また、必要に応じて、データベース401に格納された暗号化データの削除、変更なども行われてもよい。
(ステップ2)クエリ装置103からデータベースサーバ102に難読化クエリが送信される。データベースサーバ102が難読化クエリを受信すると、難読化クエリのセグメントごとに計算がされる。
(ステップ3)データベースサーバ102からクエリ装置103に計算結果が送信される。
(ステップ4)クエリ装置103から、ステップ3で受信された計算結果が復号装置104に送信される。
(ステップ5)復号装置104において復号化の処理が行われ、復号結果がクエリ装置103に送信される。
図17は、本発明の一実施形態における図16とは異なるデータの流れを示す。
図17において、ステップ1からステップ2までは図16と同じである。ステップ3以降が図16のデータの流れと異なる。
(ステップ3)データベースサーバ102から復号装置104に計算結果が送信される。
(ステップ4)復号装置104において、計算結果の復号化の処理がされ、復号結果がクエリ装置103に送信される。
以上のように、本実施形態として、データベースサーバにおいて、暗号化ベクトルデータを格納し、難読化クエリをクエリ装置103より受信し、難読化クエリのベクトルのセグメントについての計算を行い、クエリ装置103へ返信する。これにより、クエリ装置103では、データベースサーバにおける計算の目的を他者に知られずに、暗号化の処理がされた計算結果を得ることができ、復号化の処理の結果を得ることができる。
なお、上記の説明において、情報提供装置101、データベースサーバ102、クエリ装置103および復号装置104それぞれの台数を1として説明した。しかし、本発明はこれに限定されることはない。情報提供装置101、データベースサーバ102、クエリ装置103および復号装置104のそれぞれの台数を任意の数とすることができる。
例えば、図18は、図16において情報提供装置の数を複数とする場合のシステム1600の一例を示す。すなわち、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nそれぞれが、情報提供装置101と同様に構成され、データベースサーバ102は、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nから、第1暗号化データ、第2暗号化データ、…、第n暗号化データそれぞれを受信する。なお、図18においては、第1暗号化データ、第2暗号化データ、…、第n暗号化データは、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nからデータベースサーバ102が受信する暗号化ベクトルデータを示す。特に、第1暗号化データ、第2暗号化データ、…、第n暗号化データのそれぞれの数は1に限定されることなく、任意の数とすることができる。
図18において、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nそれぞれの鍵情報格納部203に格納される暗号鍵は、同一とすることができる。すなわち、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nは、共通の公開鍵を共有することができる。したがって、第1暗号化データ、第2暗号化データ、…、第n暗号化データは、同じ暗号鍵により暗号化されて得られる暗号化ベクトルデータとすることができる。
また、図18において、復号装置104は、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nそれぞれの鍵情報格納部203に格納される暗号鍵による暗号化の処理に対応する復号化の処理を行うための鍵を格納する。
したがって、図18において、データベースサーバ102は、第1情報提供装置101−1、第2情報提供装置101−2、…、第n情報提供装置101−nそれぞれから同じ暗号鍵で暗号化された暗号化データを受信し、データベース401に格納する。また、クエリ装置103は、データベースサーバ102に対して難読化クエリを送信し、データベースサーバ102は、難読化クエリに対する計算結果をクエリ装置103に返信する。クエリ装置103は、計算結果を復号装置104へ送信し、復号装置104は復号結果を返信する。クエリ装置103は、返信された復号結果に対して逆難読化を行い、クエリに対する結果を得ることができる。
このようにシステム1600を構成することにより、複数の情報提供装置の運営者が提供するデータの処理を、データベースサーバ102の運営者、復号装置104の運営者にクエリの内容を知られずに行うことができる。また、情報提供装置の運営者が提供する個々のデータの内容をデータベースサーバ102の運営者およびクエリ装置103の利用者に知られてしまうことを困難にすることもできる。
例えば、複数の情報提供装置の各運営者が物品購入機関であり、物品購入機関が提供するデータが購入を希望する物品の数を含むとする。また、クエリ装置の運営者が物品提供機関であるとする。このとき、物品提供機関は、物品購入機関それぞれが購入を希望する物品の総数を知ることが可能となる。しかし、物品購入機関それぞれが購入を希望する数は、データベースサーバ102の運営者および物品提供機関が知ることは困難である。
以上の構成は、例えば会社が株式を発行する際に応用することができる。すなわち、各投資家は、購入を希望する株式の数を同じ暗号鍵により暗号化して、データベースサーバに送信する。データベースサーバは、例えば証券会社が運営する。このとき、株式を発行する会社は、データベースサーバに対して、投資家が購入を希望する株式の数の総数を知ることは可能であるが、個々の投資家が購入を希望する株式の数を知ることは困難となる。
(実施形態2)
図19は、図17に示すデータの流れを実現する際のクエリ装置103の機能ブロック図を示す。図19に示すように、クエリ装置103は、クエリ取得部801と、クエリ難読化部802と、クエリ送信部803と、復号結果受信部806と、逆難読化部807と、難読化情報格納部808と、出力部809とを備える。
クエリ取得部801と、クエリ難読化部802と、クエリ送信部803と、復号結果受信部806と、逆難読化部807と、難読化情報格納部808と、出力部809とのそれぞれは、図8を参照して説明したクエリ装置103と同じである。
図19においては、データベースサーバ102の計算処理部405による計算結果は、データベースサーバ102の送信部406より、直接、復号装置104の結果受信部1002に送信される。このため、クエリ装置103は、図8に示される計算結果受信部804と、計算結果送信部805を備える必要がない。
図17に示すデータの流れおよび図19に示す構成により、クエリ装置103が計算結果をデータベースサーバ102から受信し、計算結果を復号装置104に送信する処理をする必要がなくなる。
なお、図19においては、復号装置104からクエリ装置103に直接、復号結果が送信されるようになっているが、データベースサーバ102など他のサーバを介して復号装置104からクエリ装置103に送信されるようになっていてもよい。
(実施形態3)
図20は、本発明の実施形態3に係るシステムの機能ブロック図およびデータの流れを示す。システム1900は、第2情報提供装置101と、データベースサーバ102と、クエリ装置103と、第2復号装置104と、第1情報提供装置1901と、第1復号装置1902とを備える。
図1と図20とを較べると、図1の情報提供装置101と図20の第2情報提供装置とが対応し、図1の復号装置104と図20の第2復号装置104と対応している。また、図20の構成は、図1の構成に第1情報提供装置1901と第1復号装置1902とが追加されている構成になっている。
第1情報提供装置1901は、第2情報提供装置101と同じ構成とすることができ、データ取得部と、データ暗号化部と、鍵情報格納部と、暗号化データ送信部とを有する。この場合、第1情報提供装置1901の暗号化データ送信部は、第2情報提供装置101のデータ取得部201に、第1情報提供装置1901の運営者の暗号鍵により暗号化の処理がされたデータを送信する。第1情報提供装置1901における暗号化の処理も、第1の演算と第2の演算との準同型を保つことが好ましい。
したがって、本実施形態では、第1情報提供装置1901により取得されたデータが、第1情報提供装置1901の運営者の暗号鍵による暗号化の処理がされ、さらに、第2情報提供装置101の運営者の暗号鍵による暗号化の処理がされる。結果として2重に暗号化の処理がされ、データベースサーバ102に格納される。
また、第1復号装置1902は、第1情報提供装置1901の運営者の暗号鍵による暗号化の処理に対応した復号化の処理を行う。
本実施形態におけるデータの流れを説明すると次のようになる。
(ステップ1)第1情報提供装置1901から第2情報提供装置101へ暗号化データが送信される。
(ステップ2)第2情報提供装置101からデータベースサーバ102へ、2重に暗号化の処理がされたデータが送信され、データベース401へ格納される。
(ステップ3)クエリ装置103からデータベースサーバ102に難読化クエリが送信される。データベースサーバ102が難読化クエリを受信すると、難読化クエリのセグメントごとに計算がされる。
(ステップ4)データベースサーバ102からクエリ装置103に計算結果が送信される。
(ステップ5)クエリ装置103から、ステップ4で受信された計算結果が第2復号装置104に送信される。
(ステップ6)第2復号装置104において復号化の処理が行われ、復号化の処理の結果がクエリ装置103に送信される。
(ステップ7)クエリ装置103から、ステップ6で受信された復号化の処理の結果が第1復号装置1902に送信される。
(ステップ8)第1復号装置1902において復号化の処理が行われ、復号化の処理の結果がクエリ装置103に送信される。
本実施形態においては、第1情報提供装置1901の運営者の暗号鍵と第2情報提供装置101の運営者の暗号鍵との2つの暗号鍵により、データが2重に暗号化されるので、第1情報提供装置1901の運営者と第2情報提供装置101の運営者との同意がないと、復号化の処理を行うことができない。
例えば、第1情報提供装置1901の運営者が患者であり、第2情報提供装置101の運営者がその患者の担当医である場合、患者のDNAデータなどを患者の暗号鍵により暗号化して第1情報提供装置1901から第2情報提供装置101に送信し、さらに担当医の暗号鍵により暗号化してデータベース401に格納がされ、クエリ装置103による検索がされる。しかし、復号化の処理がされた検索結果をクエリ装置103の利用者が得るには、患者と担当医との同意が必要となる。このため、プライバシーの確保がされる。例えば、患者および担当医の少なくとも一方が、情報提供に同意しなくなった場合には、少なくとも一方が、その後の復号化の処理を拒否することにより、情報開示を抑制することができる。
なお、第1情報提供装置1901による暗号化の処理と第2情報提供装置101による暗号化の処理との順序を交換しても、第2復号装置104による復号化の処理の後に第1復号装置1902による復号化の処理が可能であれば、ステップ5、6とステップ7、8とを入れ替えて実行することもできる。
(実施形態4)
図21は、本発明の実施形態4に係るシステムの機能ブロック図である。システム2000は、第1情報提供装置101と、第1データベースサーバ102と、クエリ装置103と、第1復号装置104と、第2情報提供装置101−2と、第2データベースサーバ102−2と、第2復号装置104−2とを備える。
図21において、第1情報提供装置101と、第1データベースサーバ102と、クエリ装置103と、第1復号装置104との構成の部分は、上記の実施形態と同様である。また、第2情報提供装置101−2と、第2データベースサーバ102−2と、クエリ装置103と、第2復号装置104−2との構成の部分も、上記の実施形態と同様である。ただし、本実施形態においては、第1情報提供装置101から暗号化データを第1データベースサーバ102に格納するときに、第2情報提供装置に、暗号化データを識別する情報(図21では、アイテム番号)を第2情報提供装置101−2に送信し、第2情報提供装置101−2は、アイテム番号と1対1に対応する管理番号を生成する。このとき、第2情報提供装置101−2は、アイテム番号と1対1に対応する管理番号の生成を、第1情報提供装置101に対して秘密裡に行うことができる。
第1情報提供装置101は、第1データベースサーバ102に格納する第1暗号化データに、アイテム番号を含め、クエリ装置103から第1データベースサーバに対して難読化クエリを送信することにより、計算結果として暗号化されたアイテム番号を得ることができるようにする。
また、第2情報提供装置101−2は、第2データベースサーバ102−2に格納する第2暗号化データに、管理番号とアイテム番号とを含め、クエリ装置103から難読化したアイテム番号に関するクエリを第2データベースサーバ102−2に送信することにより、計算結果として暗号化された管理番号を得ることができるようにする。
以上のような構成は、例えば、第1情報提供装置101の運営者が物品供給機関であり、供給する物品に関するデータをアイテム番号を含めて第1データベースサーバ102に暗号化して格納し、第2情報提供装置102の運営者が物品供給機関およびクエリ装置の利用者と独立した機関である場合に有効である。特に、第1情報提供装置101の運営者である物品供給機関が複数存在し、物品を共同の物流センターで管理する場合に有効である。
この場合、物品供給機関は、アイテム番号とともに物品を第2情報提供装置101−2へ送付し、第2情報提供装置101−2は、生成した前記管理番号を付して物品を物流センターに保管させる。アイテム番号と管理番号との対応関係は、第2情報提供装置101−2の運営者のみが知るようにすることができる。このため、物品供給機関も物流センターも、各々の物品を開梱や開封しないと、物品がどの管理番号で管理されているのか知ることができないようにすることができる。したがって、物流センターにおける物品の秘匿性を高めることができる。
クエリ装置103の利用者が第1データベースサーバに対して、物品に関する難読化クエリを送信し、第1復号装置104により復号化の結果を受け取ることにより、アイテム番号を得ることができる。しかし、物品供給機関は、どのようなクエリによりそのアイテム番号をクエリ装置103の利用者が得たのかを知ることができず、物品供給機関は、クエリ装置103の利用者の意図を知ることができない。
次に、クエリ装置103の利用者は、アイテム番号を難読化したクエリを第2データベースサーバ102−2に送信し、計算結果を受信する。その後、計算結果を第2復号装置104−2に送信し、復号の処理の結果を得る。これにより、クエリ装置103の利用者は、管理番号を得ることができ、物流センターに管理番号を提示して物品を得ることができる。この場合、第2情報提供装置102の運営者は、クエリ装置103の利用者がどのようなクエリにより、管理番号を検索したのかを知ることができない。したがって、第2情報提供装置102の運営者も、クエリ装置103の利用者の意図を知ることができないこととなり、物品供給機関、第1データベースサーバ102の管理者、クエリ装置103、第2情報提供装置102の運営者、第2データベースサーバ102−2の管理者間での情報の秘匿性を維持することができる。
(実施形態5)
実施形態5として、データベースサーバに格納されている暗号化ベクトルデータを更新するためのデータベースサーバおよび情報提供装置について説明する。
図22は、実施形態5に係るデータベースサーバの機能ブロック図を示す。データベースサーバ102は、データベース401と、暗号化データ受信部402と、データベース管理部403と、計算処理部405と、受信部404と、送信部406と、更新クエリ暗号化・復号化鍵生成部2201と、更新クエリ復号化鍵情報格納部2202と、更新クエリ暗号化鍵情報送信部2203と、暗号化更新クエリ受信部2204と、暗号化更新クエリ復号化部2205と、データ更新部2206とを有する。
別言すれば、図22に機能ブロック図を示すデータベースサーバ102は、実施形態1から4のいずれかの実施形態に係るデータベースサーバ102が、更に、更新クエリ暗号化・復号化鍵生成部2201と、更新クエリ復号化鍵情報格納部2202と、更新クエリ暗号化鍵情報送信部2203と、暗号化更新クエリ受信部2204と、暗号化更新クエリ復号化部2205と、データ更新部2206とを有するといえる。
更新クエリ暗号化・復号化鍵生成部2201は、データベース管理部403が暗号化ベクトルをデータベース401に格納する際に、暗号化鍵を生成する。暗号化鍵による暗号化が公開鍵暗号化の処理である場合には、暗号化鍵に加え、暗号化鍵を秘密鍵とする公開鍵も生成する。生成される暗号化鍵(例えば秘密鍵および公開鍵)は、データベース401に格納される暗号化ベクトルごとに異なるようにすることができる。
更新クエリ復号化鍵情報格納部2202は、データベース401に暗号化ベクトルが格納される際に、更新クエリ暗号化・復号化鍵生成部2201により生成された暗号化鍵(例えば秘密鍵)を、格納される暗号化ベクトルに対応付けて格納する。例えば、図5に示される列501に格納される、暗号化ベクトルを一意に識別する情報に暗号化鍵を対応付けて格納する。
更新クエリ暗号化鍵情報送信部2203は、更新クエリ暗号化・復号化鍵生成部2201が生成した暗号鍵(例えば秘密鍵に対する公開鍵)を情報提供装置101に送信する。これにより、情報提供装置1101は、データベースサーバ102に送信した暗号化データに対応する暗号化鍵を受信して取得することができる。当該暗号鍵を「更新クエリ暗号化鍵」2210と呼称する。
情報提供装置101が、暗号化ベクトルを更新したい場合には、更新を表わす更新クエリを更新クエリ暗号化鍵2210により暗号化する。暗号化ベクトルの一部のデータを更新したい場合には、暗号化ベクトルの識別情報および、当該識別情報により識別される暗号化ベクトルの更新するデータの範囲を含めて、更新クエリ暗号化鍵2210により暗号化する。このように暗号化された更新クエリを暗号化更新クエリ2211と呼称する。
暗号化更新クエリ受信部2204は、暗号化更新クエリを情報提供装置101より受信する。
暗号化更新クエリ復号化部2205は、暗号化更新クエリ受信部2204により受信された暗号化更新クエリ2211を、更新クエリ復号化鍵情報格納部2202に格納されている更新クエリ復号化鍵により復号する。この復号により、更新後の暗号化ベクトルデータ、また、必要であれば、更新する暗号化ベクトルデータの識別情報、当該識別情報により識別される暗号化ベクトルデータの更新するデータの範囲(例えば、更新する列の名前に対応するデータの範囲)をデータベースサーバ102内において得ることができる。
データ更新部2206は、暗号化更新クエリ復号化部2205による暗号化更新クエリの復号化の結果に基づいて、データベース401に格納されている暗号化ベクトルデータの更新を行なう。
更新は、暗号化ベクトルデータの上書きによって行なうことができる。また、暗号化ベクトルデータのデータEnc(m)をEnc(n)に更新する場合には、情報提供装置101によって、Enc(n−m)を計算し、暗号化更新クエリに含めてもよい。この場合、データベースサーバ102は、Enc(m)*Enc(n−m)を計算して得られる結果により、Enc(m)を上書きする。準同型の性質により、Enc(m)*Enc(n−m)=Enc(m+n−m)=Enc(n)となるので、Enc(m)をEnc(n)に更新することができる。
また、Enc(m)をEnc(0)に更新する場合には、情報提供装置は、Enc(−m)を計算し、暗号化更新クエリに含めてもよい。
図23は、実施形態5に係る情報提供装置101の機能ブロック図を示す。情報提供装置101は、データ取得部201と、データ暗号化部202と、鍵情報格納部203と、暗号化データ送信部204と、更新データ取得部2303と、データ位置情報格納部2304と、更新データ暗号化部2305と、更新クエリ暗号化鍵情報受信部2301と、更新クエリ暗号化鍵情報格納部2302と、更新クエリ暗号化部2306と、暗号化更新クエリ送信部2307とを有する。
別言すれば、図23に機能ブロック図を示す情報提供装置101は、実施形態1から4のいずれかの実施形態に係る情報提供装置101が、さらに、更新データ取得部2303と、データ位置情報格納部2304と、更新データ暗号化部2305と、更新クエリ暗号化鍵情報受信部2301と、更新クエリ暗号化鍵情報格納部2302と、更新クエリ暗号化部2306と、暗号化更新クエリ送信部2307とを有する構成となっている。
更新クエリ暗号化鍵情報受信部2301は、暗号化データ送信部204による暗号化ベクトルデータの送信に応じて、データベースサーバ102が生成し更新クエリ暗号化鍵情報送信部2203が送信する更新クエリ暗号化鍵2210を受信する。
更新クエリ暗号化鍵情報格納部2302は、更新クエリ暗号化鍵情報受信部2301が受信する更新クエリ暗号化鍵2210を格納する。例えば、暗号化データ送信部204が暗号化ベクトルデータを送信し、データベースサーバ102がデータベース401に暗号化ベクトルデータを格納し、格納した暗号化ベクトルデータの識別情報を更新クエリ暗号化鍵2210とともに送信する場合には、更新クエリ暗号化鍵情報格納部2302は、暗号化ベクトルデータの識別情報に関連付けて更新クエリ暗号化鍵2210を格納する。
更新データ取得部2303は、更新するデータを取得する。更新データ取得部2303は、更新するデータとともに、更新する暗号化ベクトルデータの識別情報および更新する範囲(例えば、更新する列の名前)を取得してもよい。
データ位置情報格納部2304は、更新データ取得部2303が、更新する範囲を、例えば、更新する列の名前により取得した場合に、更新する列の名前を更新する範囲(例えば、暗号化ベクトルデータの要素の数による範囲)に変換するために、更新する列の名前と更新する範囲とを関連付けて記憶する。
更新データ暗号化部2305は、更新データ取得部2303により取得されたデータを鍵情報格納部203により格納された鍵情報により暗号化する。更新データ暗号化部2305は、暗号化の結果と、必要であれば暗号化ベクトルデータの識別情報およびデータ位置情報格納部2304から得られた更新する範囲を更新クエリ暗号化部2306に出力する。
更新クエリ暗号化部2306は、更新データ暗号化部2305による暗号化の結果を更新クエリ暗号化鍵情報格納部2302に格納されている更新クエリ暗号化鍵により暗号化する。このとき、更新データ暗号化部2305が暗号化ベクトルデータの識別情報およびデータ位置情報格納部2304から得られた更新する範囲を出力した場合には、出力された暗号化ベクトルデータの識別情報に関連づけて更新クエリ暗号化鍵情報格納部2302に格納されている更新クエリ暗号化鍵を読み出し、読み出された更新クエリ暗号化鍵を用いて暗号化し、暗号化更新クエリを生成する。暗号化更新クエリには、更新する範囲が暗号化ベクトルデータの識別情報に関連づけて更新クエリ暗号化鍵情報格納部2302に格納されている更新クエリ暗号化鍵により暗号化されたデータにより暗号化されて含まれていてもよい。
また、更新データ暗号化部2305が暗号化ベクトルデータの識別情報を出力しなかった場合には、例えば、新たな暗号化ベクトルデータの追加とみなし、更新クエリ暗号化部2306は、鍵情報格納部203に格納されている暗号鍵により暗号化された以上には暗号化しなかったり、デフォルトの暗号鍵により暗号化を行なったりする。
暗号化更新クエリ送信部2307は、更新クエリ暗号化部2306により暗号化された結果である暗号化更新クエリ2211を、データベースサーバ102に送信する。
以上のように、本実施形態においては、情報提供装置101から送信された暗号化ベクトルデータのうち、任意の暗号化ベクトルおよび当該暗号化ベクトルの任意のエントリを更新することができる。特に、更新する際の更新クエリは、暗号化ベクトルデータの格納の都度生成される更新クエリ暗号化鍵により暗号化されて情報提供装置101からデータベースサーバ102に送信されるので、情報提供者およびデータベースサーバ102の管理者以外は復号することができず、秘匿性を高めることができる。
また、暗号化ベクトルデータを、0を暗号化したデータに更新することにより、データベースサーバの計算処理部405の計算において0を表わすデータとして扱われ得るので、事実上削除されたのと同一の効果を得ることができる。別言すれば、0を暗号化したデータへの更新により、データを削除することが可能となる。
100 計算システム
101 情報提供装置(第2情報提供装置)
102 データベースサーバ
103 クエリ装置(端末装置)
104 復号装置(第2復号装置)
201 データ取得部
202 データ暗号化部
203 鍵情報格納部
204 暗号化データ送信部
401 データベース
402 暗号化データ受信部
403 データベース管理部
404 受信部
405 計算処理部
406 送信部
801 クエリ取得部
802 クエリ難読化部
803 クエリ送信部
804 計算結果受信部
805 計算結果送信部
806 復号結果受信部
807 逆難読化部
808 難読化情報格納部
809 出力部
1001 復号鍵格納部
1002 結果受信部
1003 復号部
1004 復号結果送信部
1901 第1情報提供装置
1902 第1復号装置
2201 更新クエリ暗号化・復号化鍵生成部
2202 更新クエリ復号化鍵情報格納部
2203 更新クエリ暗号化鍵情報送信部
2204 暗号化更新クエリ受信部
2205 暗号化更新クエリ復号化部
2206 データ更新部
2210 更新クエリ暗号化鍵
2211 暗号化更新クエリ
2301 更新クエリ暗号化鍵情報受信部
2302 更新クエリ暗号化鍵情報格納部
2303 更新データ取得部
2304 更新データ位置情報格納部
2305 更新データ暗号化部
2306 更新クエリ暗号化部
2307 暗号化更新クエリ送信部

Claims (17)

  1. 複数のデータを有するクエリを取得するクエリ取得部と、
    前記クエリから複数のN−ランダム化ベクトルを生成する生成部であり、前記クエリおよび前記複数のN−ランダム化ベクトルそれぞれをN個のセグメントに分割した場合、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントは、前記クエリの第i番目のセグメントまたはランダムなデータを含むセグメントであり、前記クエリのセグメントそれぞれは、前記複数のN−ランダム化ベクトルのいずれか1以上のセグメントとして含まれる、生成部と、
    前記クエリの前記セグメントそれぞれを含む前記複数のN−ランダム化ベクトルの識別情報を格納する生成情報格納部と、
    前記複数のN−ランダム化ベクトルをデータベースサーバへ送信する送信部であり、前記データベースサーバは、暗号化の前における第1の演算の結果が前記暗号化の後における第2の演算の結果を復号化して得られる結果となる暗号化により、複数の要素それぞれを前記暗号化して得られる暗号化ベクトルを格納し、前記複数のN−ランダム化ベクトルに対して、前記暗号化ベクトルを、N個の暗号化セグメントに分割し、第i番目の暗号化セグメントの各要素を暗号化する前の各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第1の演算を行なって得られる計算結果を前記暗号化した暗号化計算結果を、前記暗号化ベクトルの第i番目の暗号化セグメントの各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第2の演算を行ない、生成するデータベースサーバである送信部と、
    前記送信部による送信に対応して、前記暗号化計算結果を前記暗号化に対応する復号化した計算結果を受信する計算結果受信部と、
    前記計算結果受信部により受信される計算結果と前記生成情報格納部に格納された識別情報に基づいて、前記クエリと前記暗号化ベクトルの各要素を前記暗号化する前の各要素との計算結果を計算する計算部と
    を備える、端末装置。
  2. 前記計算結果受信部は、
    前記データベースサーバより前記暗号化計算結果を受信する暗号化計算結果受信部と、
    前記暗号化計算結果受信部により受信された前記暗号化計算結果を復号化する装置へ送信する暗号化計算結果送信部と、
    前記装置より復号化した計算結果を受信する計算結果受信部とを備える、請求項1に記載の端末装置。
  3. 前記複数の要素のそれぞれは、1ビットの情報を表わし、前記クエリは、ビット列を表わす、請求項1に記載の端末装置。
  4. 前記第1の演算は加算であり、前記第2の演算は乗算である請求項1に記載の端末装置。
  5. 前記第2の演算は、生成元を有する群における乗算である請求項4に記載の端末装置。
  6. 前記生成元の位数は有限である請求項5に記載の端末装置。
  7. 暗号化の前における第1の演算の結果が前記暗号化の後における第2の演算の結果を復号化して得られる結果となる暗号化の処理により、複数の要素それぞれを暗号化して得られる暗号化要素を含む暗号化ベクトルを格納するデータベースと、
    複数のデータを有するクエリから生成された複数のN−ランダム化ベクトルを受信する受信部であり、前記クエリおよび前記複数のN−ランダム化ベクトルそれぞれをN個のセグメントに分割した場合、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントは、前記クエリの第i番目のセグメントまたはランダムなデータを含むセグメントであり、前記クエリのセグメントそれぞれは、前記複数のN−ランダム化ベクトルのいずれか1以上のセグメントとして含まれる、受信部と、
    前記暗号化ベクトルをN個のセグメントに分割して得られる第i番目の暗号化セグメントの各要素を暗号化する前の各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第1の演算を行なって得られる計算結果を前記暗号化した暗号化計算結果を、前記暗号化ベクトルの第i番目のセグメントの各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第2の演算を行ない計算する計算処理部と、
    前記暗号化計算結果を送信する送信部と、
    を備えるデータベースサーバ。
  8. 前記暗号化計算結果は、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントS(i)の各データに基づく計算結果であり、前記セグメントS(i)の各データに基づく演算結果は、前記暗号化ベクトルの第i番目のセグメントの第j番目の暗号化要素dijに、前記セグメントS(i)に含まれる第j番目のデータの表わす整数Sijの回数前記第2の演算を適用した冪dij Sijを計算した結果に前記第2の演算を適用した演算結果Πij Sijと等価である、請求項7に記載のデータベースサーバ。
  9. 前記複数の要素のそれぞれは、1ビットの情報を表わし、前記クエリは、ビット列を表わす、請求項7に記載のデータベースサーバ。
  10. 前記第1の演算を用いて計算される計算結果は、前記セグメントS(i)と、前記暗号化ベクトルの第i番目のセグメントの各要素を暗号化する前の要素を含むセグメントとのTversky Indexに対応する値である請求項9に記載のデータベースサーバ。
  11. 前記第1の演算は加算であり、前記第2の演算は乗算である、請求項7に記載のデータベースサーバ。
  12. 前記第2の演算は、生成元を有する群における乗算である、請求項11に記載のデータベースサーバ。
  13. 前記生成元の位数は有限である、請求項12に記載のデータベースサーバ。
  14. 前記暗号化の処理においては確率暗号を用いる、請求項7に記載のデータベースサーバ。
  15. 前記データベースに格納される暗号化ベクトルに関連づけられた復号鍵を格納する復号鍵格納部と、
    前記データベースに格納される暗号化ベクトルの暗号化要素の範囲と前記範囲の暗号化された要素に置き換える暗号化要素とを暗号化した情報を受信する第2受信部と、
    前記第2受信部で受信された情報を前記復号鍵格納部に格納されている復号鍵により復号した結果に基づいて、前記範囲内の前記暗号化ベクトルの暗号化要素を更新する更新部と、
    を有する、請求項7に記載のデータベースサーバ。
  16. 前記更新部は、前記暗号化ベクトルの暗号化要素を、前記暗号化ベクトルの暗号化要素と前記復号した結果に含まれる暗号化要素とに対する前記第2の演算の結果に更新する、請求項15に記載のデータベースサーバ。
  17. データベースサーバと、情報提供装置と、復号装置と、端末装置とを有する計算システムであり、
    前記情報提供装置は、
    複数の要素を有する要素の組を取得する要素取得部と、
    暗号化の前の第1の演算の結果が前記暗号化の後における第2の演算の結果を復号化して得られる結果となる暗号化により、前記複数の要素それぞれを暗号化し、暗号化ベクトルを生成する要素暗号化部と、
    前記要素暗号化部により生成された暗号化ベクトルを前記データベースサーバに送信する暗号化データ送信部と、
    を備え、
    前記復号装置は、
    前記暗号化されたデータを受信するデータ受信部と、
    前記データ受信部により受信されたデータを復号化する復号部と、
    前記復号部により復号された結果を送信する復号結果送信部と
    を備え、
    前記端末装置は、
    複数のデータを有するクエリを取得するクエリ取得部と、
    前記クエリ取得部により取得されたクエリから複数のN−ランダム化ベクトルを生成する生成部であり、前記クエリおよび前記複数のN−ランダム化ベクトルそれぞれをN個のセグメントに分割した場合、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントは、前記クエリの第i番目のセグメントまたはランダムなデータを含むセグメントであり、前記クエリのセグメントそれぞれは、前記複数のN−ランダム化ベクトルのいずれか1以上のセグメントとして含まれる、生成部と、
    前記クエリの前記セグメントそれぞれを含む前記複数のランダム化ベクトルの識別情報を格納する生成情報格納部と、
    前記複数のN−ランダム化ベクトルを、前記データベースサーバへ送信するクエリ送信部と、
    前記クエリ送信部による前記N−ランダム化ベクトルの送信に対応して、前記復号装置から前記複数のN−ランダム化ベクトルの各セグメントについての前記データベースサーバでの計算結果を復号した結果を受信する計算結果受信部と、
    前記計算結果受信部により受信された計算結果と前記生成情報格納部に格納された識別情報に基づいて前記クエリと前記暗号化ベクトルの各要素を前記暗号化する前の各要素との計算結果を計算する計算部と
    を備え、
    前記データベースサーバは、
    前記情報提供装置から送信される暗号化ベクトルを格納するデータベースと、
    前記端末装置から送信される複数のN−ランダム化ベクトルを受信するクエリ受信部と、
    前記暗号化ベクトルをN個のセグメントに分割して得られる第i番目の暗号化セグメントの各要素を暗号化する前の各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第1の演算を行なって得られる計算結果を前記暗号化した暗号化計算結果を、前記暗号化ベクトルの第i番目のセグメントの各要素に対して、前記複数のN−ランダム化ベクトルそれぞれの第i番目のセグメントの各データに基づいて前記第2の演算を行ない計算する計算処理部と、
    前記暗号化計算結果を送信する送信部と、
    を備える計算システム。
JP2016574714A 2015-02-10 2016-01-27 端末装置、データベースサーバおよび計算システム Active JP6400743B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015024759 2015-02-10
JP2015024759 2015-02-10
PCT/JP2016/052342 WO2016129390A1 (ja) 2015-02-10 2016-01-27 端末装置、データベースサーバおよび計算システム

Publications (2)

Publication Number Publication Date
JPWO2016129390A1 JPWO2016129390A1 (ja) 2017-11-09
JP6400743B2 true JP6400743B2 (ja) 2018-10-03

Family

ID=56615401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016574714A Active JP6400743B2 (ja) 2015-02-10 2016-01-27 端末装置、データベースサーバおよび計算システム

Country Status (3)

Country Link
US (1) US10594473B2 (ja)
JP (1) JP6400743B2 (ja)
WO (1) WO2016129390A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10891621B2 (en) * 2017-08-09 2021-01-12 Microsoft Technology Licensing, Llc Systems and methods of providing security in an electronic network
US10715619B2 (en) * 2017-10-16 2020-07-14 Red Hat, Inc. Cache management using a probabilistic data structure
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
US11397950B2 (en) 2019-06-20 2022-07-26 Microsoft Technology Licensing, Llc Systems and methods for authenticating an electronic transaction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3871301B2 (ja) 2001-05-15 2007-01-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース検索装置、及びプログラム
US7620625B2 (en) * 2004-05-20 2009-11-17 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
CN101057448B (zh) 2004-11-16 2012-02-15 皇家飞利浦电子股份有限公司 安全地计算相似性度量
JP2009271584A (ja) 2008-04-30 2009-11-19 Tokyo Metropolitan Univ 類似情報検索システムおよび類似情報検索プログラム
JP5412414B2 (ja) 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
JP5416734B2 (ja) 2011-04-21 2014-02-12 株式会社日立製作所 暗号化値判定方法および判定システム
WO2013038698A1 (ja) * 2011-09-14 2013-03-21 独立行政法人産業技術総合研究所 検索システム、検索方法、およびプログラム
JP5790471B2 (ja) 2011-12-13 2015-10-07 富士通株式会社 暗号処理方法、復号処理方法、装置及びプログラム
JP5667969B2 (ja) 2011-12-22 2015-02-12 株式会社日立製作所 検索処理システムおよび部分一致検索方法
JP5948060B2 (ja) 2012-01-13 2016-07-06 株式会社日立製作所 暗号化データの高速な類似検索処理システム
US9087212B2 (en) * 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database
JP2013205655A (ja) 2012-03-28 2013-10-07 Fujitsu Ltd プログラム、情報処理方法及び情報処理装置
US10810178B2 (en) * 2013-09-24 2020-10-20 QIikTech International AB Methods and systems for data management and analysis
US9438412B2 (en) * 2014-12-23 2016-09-06 Palo Alto Research Center Incorporated Computer-implemented system and method for multi-party data function computing using discriminative dimensionality-reducing mappings

Also Published As

Publication number Publication date
US20180034626A1 (en) 2018-02-01
JPWO2016129390A1 (ja) 2017-11-09
WO2016129390A1 (ja) 2016-08-18
US10594473B2 (en) 2020-03-17

Similar Documents

Publication Publication Date Title
Cui et al. Efficient and expressive keyword search over encrypted data in cloud
CN110337649B (zh) 用于搜索模式未察觉的动态对称可搜索加密的方法和系统
US10496631B2 (en) Secure information retrieval and update
US9355271B2 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
US9021259B2 (en) Encrypted database system, client terminal, encrypted database server, natural joining method, and program
CN109784931B (zh) 一种基于区块链的数据查询平台的查询方法
WO2017061024A1 (ja) 秘匿検索システム、管理装置、秘匿検索方法及び秘匿検索プログラム
US20150229611A1 (en) Keyword ordered storage, search and retrieval on encrypted data for multiuser scenario
CN105681280A (zh) 一种云环境中基于中文的可搜索加密方法
CA2887191A1 (en) Secure linkage of databases
JP6075017B2 (ja) 情報分析システム及び情報分析方法
JP6035421B2 (ja) 暗号化された文書についてのセキュアなブール検索を実行するための方法およびシステム
JP6400743B2 (ja) 端末装置、データベースサーバおよび計算システム
JP6770075B2 (ja) 暗号化メッセージ検索方法、メッセージ送受信システム、端末、プログラム
WO2022137668A1 (ja) データファイル暗号化送受信システム及びデータファイル暗号化送受信方法
US20150082040A1 (en) Method, information service system and program for information encryption/decryption
Shen et al. Keyword search with access control over encrypted cloud data
JP2013150026A (ja) データ処理システム及び秘匿化装置及び秘密鍵生成装置及び秘匿化方法及び秘密鍵生成方法及びプログラム
JP6703706B2 (ja) 暗号文管理方法、暗号文管理装置及びプログラム
JPWO2017149686A1 (ja) 鍵生成装置、計算機システム、および暗号統計処理方法
CN113630250A (zh) 基于数据加密的模型训练方法及系统
CN107203723B (zh) 基于散列表方法的多公共云上的文件存储及其检索方法
CN115510490A (zh) 一种非密钥共享的加密数据查询方法、装置、系统及设备
Vo-Huu et al. EPiC: efficient privacy-preserving counting for MapReduce

Legal Events

Date Code Title Description
AA64 Notification of invalidation of claim of internal priority (with term)

Free format text: JAPANESE INTERMEDIATE CODE: A241764

Effective date: 20170822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170901

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: 20180821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180905

R150 Certificate of patent or registration of utility model

Ref document number: 6400743

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250