JP5412414B2 - 検索可能暗号処理システム - Google Patents

検索可能暗号処理システム Download PDF

Info

Publication number
JP5412414B2
JP5412414B2 JP2010273556A JP2010273556A JP5412414B2 JP 5412414 B2 JP5412414 B2 JP 5412414B2 JP 2010273556 A JP2010273556 A JP 2010273556A JP 2010273556 A JP2010273556 A JP 2010273556A JP 5412414 B2 JP5412414 B2 JP 5412414B2
Authority
JP
Japan
Prior art keywords
data
unit
search
registration
client
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
JP2010273556A
Other languages
English (en)
Other versions
JP2012123614A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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
Priority to JP2010273556A priority Critical patent/JP5412414B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to US13/825,643 priority patent/US9275250B2/en
Priority to EP11847558.1A priority patent/EP2650798A4/en
Priority to CN201180046068.8A priority patent/CN103119594B/zh
Priority to EP15195911.1A priority patent/EP3012754B1/en
Priority to PCT/JP2011/077588 priority patent/WO2012077541A1/ja
Priority to KR1020137007399A priority patent/KR101467130B1/ko
Publication of JP2012123614A publication Critical patent/JP2012123614A/ja
Application granted granted Critical
Publication of JP5412414B2 publication Critical patent/JP5412414B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • 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
    • 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

Landscapes

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

Description

本発明は、サーバ/クライアントモデルにおいて、サーバが、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理システムに関する。
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供する情報システムを利用する、クラウドと呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えい等を防止する策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、サーバに対し、預託したデータの情報漏洩を防ぐ技術として、暗号技術を利用した方式が知られている。例えば、非特許文献1や非特許文献2には、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理方式が記載されている。この検索処理方式は、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対mの複雑な対応関係を有する確率的暗号化方式を採用しており、サーバ管理者への情報漏洩を防ぎながら、かつサーバに預託したデータを安全に検索するための技術が開示されている。
Dawn Xiaodong Song, David Wagner, Arian Perrig. "Practical Techniques for Searches on Encrypted Data". In Proceedings of the 2000 IEEE Symposium on Security and Privacy, pages 44-55(2000). Zhiqiang Yang, Sheng Zhong, Rebecca N. Wright. "Privacy-Preserving Queries on Encrypted Data". In Proceedings of the 11th European Symposium on Research in Computer Security (Esorics), Volume 4189 of Lecture Notes in Computer Science, pages 476-495(2006).
しかしながら、非特許文献1、非特許文献2に記載された技術では、サーバに預託する確率的暗号化で暗号化したデータを復号化するために必要な、運用管理が複雑、クライアント・サーバ共に複雑である。更に、擬似乱数による確率的暗号化は、クライアントが検索をするまでは有効であるが、検索後は、検索に該当した暗号文の擬似乱数のマスクが解除されてしまい、暗号文の安全性が、確率的暗号化から、決定的暗号化に低下してしまう。しかも、クライアントは、検索時の要求(検索クエリ)の暗号化には、安全性の低い決定的暗号化方式を用いているため、頻度分析等の不正攻撃に対しても、脆弱である。
前記課題を解決するために、検索可能暗号処理システムは、データを預かるDBサーバと、DBサーバにデータを預託する登録クライアントと、DBサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数の出力値によるマスクを用いた確率的暗号化方式により、暗号化したデータを、安全にサーバに預託し、検索クライアントは、検索クエリの暗号化に、複数の異なる入力値から同一の値を出力する準同型関数を用いたマスクによる確率的暗号化を用い、DBサーバにマスクを解除させずに、かつ、DBサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させ、検索クライアントは、検索結果を入手後、再暗号化を行い、DBサーバにデータを再預託する。
クライアントがDBサーバを利用した検索後も、検索に該当したデータが確率的暗号で暗号化されており、安全性が高い。また、複雑な運用管理をクライアントに強いることなく、暗号化されたデータを効率的に復号化できる。
検索可能暗号処理システムの概略を例示する図である。 登録クライアントの機能の概略を例示する図である。 検索クライアントの機能の概略を例示する図である。 DBサーバの機能の概略を例示する図である。 コンピュータの概略構成を例示する図である。 登録クライアントの出力部の表示内容を例示する図である。 登録クライアントが作成する連結データのデータ構成を例示するブロック図である。 登録クライアントが作成する連結データのデータ構成を例示するブロック図である。 登録クライアントが作成する秘匿登録データのデータ構成を例示するブロック図である。 登録クライアントが秘匿登録データをDBサーバへ登録する処理を例示するシーケンス図である。 DBサーバのデータベース記憶部に記憶される、データベースの管理状態を例示する図である。 DBサーバのデータベース記憶部に記憶される、データベースの検索手順を例示する図である。 検索クライアントの出力部の表示内容を例示する図である。 検索クライアントが作成する連結データのデータ構成を例示するブロック図である。 検索クライアントが作成する連結データのデータ構成を例示するブロック図である。 検索クライアントが作成する連結データのデータ構成を例示するブロック図である。 検索クライアントが、秘匿検索クエリを用い、DBサーバ内のデータベースを検索する処理を例示するシーケンス図である。 DBサーバが通信部から受信した秘匿検索クエリを復号化した、連結データのデータ構成を例示するブロック図である。 DBサーバが、データベース記憶部に記憶した、秘匿登録データのデータ構成を例示するブロック図である。 DBサーバが作成する連結データのデータ構成を例示するブロック図である。 DBサーバが作成する連結データのデータ構成を例示するブロック図である。 検索クライアントが通信部から受信した秘匿登録データのデータ構成を例示するブロック図である。 検索クライアントが作成するデータCのデータ構成を例示するブロック図である。 DBサーバが作成する連結データのデータ構成を例示するブロック図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本実施形態の検索処理システムの概略図である。図示するように、検索処理システムは、登録クライアント100(Registration Client)と、検索クライアント200(Search Client)と、DBサーバ300(Data Base Server)とを備え、登録クライアント100とDBサーバ300、検索クライアント200とDBサーバ300は、ネットワーク400を介して相互に情報を送受信できるように構成されている。
ここで、本実施形態における登録クライアント100は、秘匿化したデータをDBサーバ300に送信するデータ登録用の送受信装置として機能し、検索クライアント200は、秘匿化した検索クエリをDBサーバ300に送信し、検索結果を受信する、検索用の送受信装置として機能し、DBサーバ300は、秘匿化したデータをデータベースに保管し、またデータベース内のデータを検索するDB管理用の送受信装置として機能する。
図2は、登録クライアント100の機能概略図である。図示するように、登録クライアント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。
記憶部120は、登録データ記憶部130と、秘密鍵記憶部150と、パラメータ記憶部160と、一時情報記憶部180とを備える。
登録データ記憶部130には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、入力部101を介して、受け付けた平文登録データ131を特定する情報と、DBサーバ300に登録する、秘匿登録データ132を特定する情報と、平文登録データ131と秘匿登録データ132の属性133を特定する情報とが記憶される。
秘密鍵記憶部150には、安全性の観点から登録クライアント100が秘密に管理すべき、秘密鍵151を特定する情報が記憶される。ここで、本実施形態においては、暗号化部112に入力する秘密鍵151と、擬似乱数生成部114に入力する秘密鍵151と、圧縮関数部115に入力する秘密鍵151とを特定する情報が記憶される。
パラメータ記憶部160には、データの秘匿化に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部116に入力する関数パラメータ161と、基本演算部117に入力する検査パラメータ162とを特定する情報が記憶される。また、安全性の観点から、関数パラメータ161は、登録クライアント100が秘密に管理すべき情報である。
一時情報記憶部180には、制御部110での処理で必要となる情報が記憶される。
制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とを備える。
全体処理部111は、登録クライアント100における全ての処理を制御する。
例えば、本実施形態において、全体処理部111は、入力部101を介して入力を受け付けた情報を、登録データ記憶部130に平文登録データ131として記憶する処理を行う。
また、本実施形態において、全体処理部111は、平文登録データ131を出力部102に表示する処理を行う。
また、本実施形態において、全体処理部111は、登録データ記憶部130に記憶した平文登録データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、登録データ記憶部130に秘匿登録データ132として記憶する処理を行う。
また、本実施形態において、全体処理部111は、属性133と秘匿登録データ132を、通信部103を介してDBサーバ300に送信する処理を行う。
さらに、本実施形態において、全体処理部111は、DBサーバ300より通信部103を介して受信した属性133と秘匿登録データ132を、一時情報記憶部180に記憶する処理と出力部102に表示する処理を行う。
暗号化部112は、入力されたデータを暗号化したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部111からデータと秘密鍵151が入力され、秘密鍵151を用い、暗号化したデータを出力する処理を行う。
例えば、標準的な暗号化アルゴリズムの実装により、暗号化部112は実現される。
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
例えば、擬似乱数生成部114は、温度、時間、電力量、等の物理現象から、乱数を出力する。
本実施形態においては、擬似乱数生成部114は、全体処理部111から入力された秘密鍵151を用い、擬似乱数を出力する。また、秘密鍵151のデータ値は新しいデータ値に更新され、再び、全体処理部111により秘密鍵記憶部150に記憶される。
例えば、標準的な擬似乱数生成アルゴリズムの実装により、擬似乱数生成部114は実現される。
圧縮関数部115は、入力されたデータを圧縮したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部111から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
例えば、標準的な暗号ハッシュ関数アルゴリズムの実装により、任意長の入力データを固定長のデータへ変換する圧縮関数部115が実現できる。
準同型関数部116は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
例えば、本実施形態においては、全体処理部111から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部111から入力された関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、
F(x・y)=F(x)?F(y) (1)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
本実施形態では、・と?にXOR演算記号xorが入る場合、即ち式(2)が成り立つ場合を示す。
F(x xor y)=F(x)xor F(y) (2)
ただし、準同型関数が式(2)以外の演算記号で成り立つ時でも、本実施形態は同様に実施できる。
なお、準同型関数を実現するアルゴリズムの実装により、準同型関数部116は実現される。
基本演算部117は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
例えば、本実施形態においては、基本演算部117は、全体処理部111から入力された2つのデータのビット毎の排他的論理和であるXOR演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
以上に示した登録クライアント100は、例えば、図5(コンピュータの概略図)に示すような、CPU(Central Processing Unit)501と、メモリ502と、HDD(Hard Disk Drive)等の外部記憶装置503と、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)509と、を備えた一般的なコンピュータ500で実現できる。
例えば、記憶部120は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110と制御部110に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101は、CPU501が入力装置506を利用することで実現可能であり、出力部102は、CPU501が出力装置505を利用することで実現可能であり、通信部103は、CPU501が通信装置504を利用することで実現可能である。
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
図3は、検索クライアント200の機能概略図である。図示するように、検索クライアント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。
記憶部220は、検索クエリ記憶部230と、秘密鍵記憶部250と、パラメータ記憶部260と、受信データ記憶部270と、一時情報記憶部280とを備える。
検索クエリ記憶部230には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、検索クライアント200が、入力部201を介して受け付けた平文検索クエリ231を特定する情報と、DBサーバ300に送信する秘匿検索クエリ232と、平文検索クエリ231と秘匿検索クエリ232の属性233を特定する情報とが記憶される。
秘密鍵記憶部250には、安全性の観点から検索クライアント200が秘密に管理すべき、秘密鍵251を特定する情報が記憶される。ここで、本実施形態においては、暗号化部212に入力する秘密鍵251と、復号化部213に入力する秘密鍵251と、擬似乱数生成部214に入力する秘密鍵251と、圧縮関数部215に入力する秘密鍵251とを特定する情報が記憶される。
パラメータ記憶部260には、データの秘匿化と秘匿化解除とに用いるパラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部216に入力する関数パラメータ261を特定する情報と、基本演算部217に入力する検査パラメータ262を特定する情報とが記憶される。また、安全性の観点から、関数パラメータ261は、検索クライアント200が秘密に管理すべき情報である。
受信データ記憶部270には、通信部203を介して受信したデータを特定する情報が記憶される。ここで、本実施形態においては、受信データ記憶部270には、通信部203を介してDBサーバ300から受信したデータを特定する情報が、秘匿登録データ271として記憶される。また、秘匿登録データ271から、秘匿化を解除したデータを、平文登録データ272として受信データ記憶部270に記憶する処理を行う。
一時情報記憶部280には、制御部210での処理で必要となる情報が記憶される。
制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とを備える。
全体処理部211は、検索クライアント200における全ての処理を制御する。
例えば、本実施形態において、全体処理部211は、入力部201を介して入力を受け付けた情報を、検索クエリ記憶部230に平文検索クエリ231として記憶する処理を行う。
また、本実施形態において、全体処理部211は、平文検索クエリ231を出力部202に表示する処理を行う。
また、本実施形態において、全体処理部211は、検索クエリ記憶部230に記憶した平文検索クエリ231を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿検索クエリ232として検索クエリ記憶部230に記憶する処理を行う。
また、本実施形態において、全体処理部211は、通信部203を介して、属性233と秘匿検索クエリ232をDBサーバ300に送信する処理を行う。
また、本実施形態において、全体処理部211は、通信部203を介して、秘匿登録データ271をDBサーバ300から受信する処理を行う。
また、本実施形態において、全体処理部211は、通信部203を介して、受信した秘匿登録データ271を受信データ記憶部270に秘匿登録データ271として記憶する処理を行う。
また、本実施形態において、全体処理部211は、受信データ記憶部270に記憶した秘匿登録データ271を読み込み、それぞれ、復号化部213と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを平文登録データ272として受信データ記憶部270に記憶する処理を行う。
また、本実施形態において、全体処理部211は、平文登録データ272を出力部202に表示する処理を行う。
さらに、全体処理部211は、DBサーバ300より、通信部203を介して受信したデータを、一時情報記憶部280に記憶する処理と、出力部202に表示する処理を行う。
暗号化部212は、入力されたデータを暗号化したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、暗号化したデータを出力する処理を行う。
復号化部213は、入力されたデータを復号化したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、復号化したデータを出力する処理を行う。
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力する。
本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する。また、秘密鍵251のデータ値は新しいデータ値に更新され、再び、全体処理部211により秘密鍵記憶部250に記憶される。
例えば、本実施形態においては、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。
圧縮関数部215は、入力されたデータを圧縮したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部211から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
準同型関数部216は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
例えば、本実施形態においては、全体処理部211から入力されたデータを準同型の性質を有する関数の入力値とみなし、全体処理部211から入力された関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
基本演算部217は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
例えば、本実施形態においては、基本演算部217は、全体処理部211から入力された2つのデータのバイナリ値(2進数)の減算結果を、データとして出力する処理を行う。
以上に示した検索クライアント200は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
例えば、記憶部220は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部210と制御部210に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部201は、CPU501が入力装置506を利用することで実現可能であり、出力部202は、CPU501が出力装置505を利用することで実現可能であり、通信部203は、CPU501が通信装置504を利用することで実現可能である。
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
図4は、DBサーバ300の機能概略図である。図示するように、DBサーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303と、を備える。
記憶部320は、パラメータ記憶部360と、秘密鍵記憶部350と、データベース記憶部340と、検索クエリ記憶部330と、一時情報記憶部380とを備える。
パラメータ記憶部360には、秘匿検索クエリ332とデータベース341の関係の検査に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部316に入力する関数パラメータ361を特定する情報が記憶される。また、安全性の観点から、関数パラメータ361はDBサーバ300が秘密に管理すべき情報である。
秘密鍵記憶部350には、安全性の観点からDBサーバ300が秘密に管理すべき、秘密鍵351を特定する情報が記憶される。ここで、本実施形態においては、復号化部313に入力する秘密鍵351とを特定する情報が記憶される。
データベース記憶部340には、通信部303を介して受信した登録データを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
検索クエリ記憶部330には、通信部303を介して受信した検索クエリを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、検索クエリ記憶部330に秘匿検索クエリ332として記憶する処理を行う。
一時情報記憶部380には、制御部310での処理で必要となる情報が記憶される。
制御部310は、全体処理部311と、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317と、を備える。
全体処理部311は、DBサーバ300における全ての処理を制御する。
例えば、本実施形態において、全体処理部311は、通信部303を介して秘匿登録データ131を、登録クライアント100から受信する処理を行う。
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿登録データ131を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
また、本実施形態において、全体処理部311は、通信部303を介して秘匿検索クエリ332を、検索クライアント200から受信する処理を行う。
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿検索クエリ332を、検索クエリ記憶部330に記憶する処理を行う。
また、本実施形態において、全体処理部311は、検索クエリ記憶部330に記憶した秘匿検索クエリ332を読み込み、それぞれ、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317とに入力し、出力されたデータを、通信部303を介して、検索クライアント200に送信する処理を行う。
さらに、全体処理部311は、検索クライアント200または登録クライアント100より、通信部303を介して受信したデータに関する情報を、一時情報記憶部380に記憶する処理と、出力部302に表示する処理を行う。
復号化部313は、入力されたデータを復号化したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部311からデータと秘密鍵351が入力され、秘密鍵351を用い、復号化したデータを出力する処理を行う。
圧縮関数部315は、入力されたデータを圧縮したデータを出力する処理を行う。
例えば、本実施形態においては、全体処理部311から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
準同型関数部316は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
例えば、本実施形態においては、全体処理部311から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部311から入力された関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現したデータを固定長(fビット)のデータに変換する処理を行う。
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
基本演算部317は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
例えば、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の減算結果をデータとして出力する処理を行う。
また、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の比較結果をデータとして出力する処理を行う。
以上に示したDBサーバ300は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)とを備えた一般的なコンピュータで実現できる。
例えば、記憶部120、220、320は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101、201、301は、CPU501が入力装置506を利用することで実現可能であり、出力部102、202、302は、CPU501が出力装置505を利用することで実現可能であり、通信部103、203、303は、CPU501が通信装置504を利用することで実現可能である。
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
図6は、登録クライアント100の出力部102の表示内容600を例示した図である。図示するように、登録クライアント100は、管理方法の選択部610と、管理フォーム部620と、実行と表示されたボタンを指す実行ボタン650と、クリアと表示されたボタンを指すクリアボタン660とを備える。
管理方法の選択部610は、データの登録と、データの更新と、データの削除となどの、データの管理に関する項目から構成される。例えば、本実施形態では、データ追加と、データ更新と、データ削除とを特定するラジオボタンを備える。また、入力部101を介し、各項目が選択可能である。
管理フォーム部620は、管理方法の選択部610で特定された項目である、データの登録と、データの更新と、またはデータの削除とに応じて扱う、データの種類を示す属性621と、データの詳細内容を入力する入力フォーム622から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを指す属性621と、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム622を備える。各入力フォーム622に入力された情報は、記憶部120の一時情報記憶部180に記憶される。
クリアボタン660は、入力部101を介し、選択可能である。例えば、本実施形態では、クリアボタン660が選択されると、各入力フォーム622に入力された情報を消去する。
実行ボタン650は、入力部101を介し、選択可能である。例えば、本実施形態では、実行ボタン650が選択されると、管理方法の選択部610で特定された項目と各フォームに入力された情報を基に、秘匿登録データ131を作成し、DBサーバ300へ送信する処理を行う。以下では、管理方法の選択部610で、特定された項目がデータ登録である場合を説明するが、データ更新と、データ削除とが特定された場合も、同様の処理を行う。
管理方法の選択部610で、特定された項目がデータ登録である場合に、実行ボタン650が選択された場合に、実施する秘匿登録データ131の処理手順をS701からS715に示す。
図7Aは、本実施形態において、登録クライアント100が、出力部102に出力した入力フォーム622に入力された情報を基に作成する、連結データ703のデータ構成を示すブロック図の例である。
また、図7Bは、本実施形態において、登録クライアント100が、秘匿登録データ712を作成する過程において作成する、連結データ704のデータ構成を示すブロック図の例である。
また、図7Cは、本実施形態において、登録クライアント100が作成する、秘匿登録データ712のデータ構成を示すブロック図である。
以下では、図7Aと、図7Bと、図7Cとを用い、入力フォーム622に入力されたデータ値によらず、登録クライアント100が、毎回、データ値の異なる秘匿登録データ712を作成する処理手順を説明する。
登録クライアント100の全体処理部111は、入力フォーム622に入力された情報を平文登録データ701として、記憶部120の登録データ記憶部130に記憶する処理を行う。このとき、平文登録データ701は、登録クライアント100の一時情報記憶部180にmビットのバイナリ表現で構成されたデータとして記憶される。
登録クライアント100の全体処理部111は、パラメータ記憶部160に記憶された検査パラメータ162を読み込み、誤り検査データ702として出力する処理を行う。このとき、出力された誤り検査データ702は、登録クライアント100の一時情報記憶部180に、eビットのデータとして記憶される。
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結する処理を行う (S701) 。
連結処理では、平文登録データ701の各所に、分割した誤り検査データ702を挿入してもよい。例えば、平文登録データ701の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ702を挿入してもよい。また、誤り検査データ702に平文登録データ701を乗算で掛け合わせるなど、混合させてもよい。
以下では、図7Aに示すように、登録クライアント100において、全体処理部111が入力した平文登録データ701の末尾に、誤り検査データ702を連結し、連結データ703を一つのデータとみなした場合を扱う。このとき、登録クライアント100の一時情報記憶部180には、連結データ703は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
次に、図7Bに示すように、登録クライアント100が作成する連結データ704のデータ構成を説明する。
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結したデータである連結データ703と、秘密鍵記憶部150に記憶された秘密鍵151とを暗号化部112へ入力する処理を行う(S702)。
登録クライアント100の暗号化部112は、入力されたデータを暗号化し、データCR705を出力する処理を行う(S703)。
登録クライアント100において、全体処理部111が入力した連結データ703を暗号化部112が暗号化し、出力したデータをデータCR705とみなす。このとき、データCR705は、登録クライアント100の一時情報記憶部180には、cビットのデータとして記憶される(S704)。
なお、データCR705は、連結データ703に依存、即ち、入力フォーム622の入力情報に依存して構わない。例えば、同一のデータ値を持つ連結データ703からは、同一のデータCR705を出力してもよい。
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151を、擬似乱数生成部114に入力する処理を行う(S705)。
登録クライアント100の擬似乱数生成部114は、入力された秘密鍵151を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、登録クライアント100の一時情報記憶部180には、rビットのデータP706として記憶される(S706)。
擬似乱数生成部114が出力する擬似乱数は、連結データ703、データCR705に依存しない。従って、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータP706を作成できる。
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151と乱数生成部から出力されたデータP706を連結したデータを、圧縮関数部115に入力する処理を行う(S707)。
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、hビットのデータH707として記憶される(S708)。
データH707は、圧縮関数の性質から、乱数とみなせる。データH707は、連結データ703、データCR705に依存しない。従って、データP706同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータH707を作成できる。
登録クライアント100の全体処理部111は、データH707と、パラメータ記憶部160に記憶された関数パラメータ161とを準同型関数部116に入力する(S709)。
登録クライアント100の準同型関数部116は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、登録クライアント100の一時情報記憶部180には、fビットのデータF708として記憶される(S710)。
なお、準同型関数をfuncとした場合、その入力値であるデータH707、出力値であるデータF708には、式(3)が成り立つ(ただし、関数パラメータ161の記述は省略)。
= func(H) (3)
データF708は、準同型関数部116が処理する準同型関数の性質から、入力されたデータ値が乱数の場合、出力も乱数とみなせる。また、データF708は、連結データ703と、データCR705に依存しない。従って、データH707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータF707を作成できる。
登録クライアント100の全体処理部111は、準同型関数部116から出力されたデータF708を、圧縮関数部115へ入力する処理を行う(S711)。
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータG709として記憶される(S712)。
データG709は、圧縮関数の性質から、乱数である。従って、データF707と、データH707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータG709を作成できる。また、圧縮関数の性質から、逆像は計算困難であるため、データG709をDBサーバ300に登録しても、データの安全性に影響を与えない。
図7Cは、本実施形態において、登録クライアント100が作成する秘匿登録データ712のデータ構成を示すブロック図である。
登録クライアント100の全体処理部111は、データH707とデータCR705とを基本演算部117へ入力する処理を行う(S713)。
登録クライアント100の基本演算部117は、入力されたデータH707とデータCR705とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を、データDR711として出力する処理を行う(S714)。
S714のxor算により、データH707とデータC705とデータD711とは式(4)を満たす。
R =H xor CR (4)
S714の計算は、連結データ703やデータCR705に依存しない、乱数であるデータH707を用いている。従って、連結データ703とデータCR705の関係が一意に定まる場合でも、毎回、データ値が異なる、データH707を用いれば、異なるデータ値のデータDR711が得られる。
登録クライアント100の全体処理部111は、データP706とデータD711とデータG709とを連結し、作成したデータを、秘匿登録データ712として登録データ記憶部130へ記憶する処理を行う(S715)。
秘匿登録データ712は、連結データ703やデータCR705に依存しない乱数であるデータP706、データD711、データG709を用いており、毎回、異なるデータ値が得られる。その結果、データP706とデータD711とデータG709とを連結した秘匿登録データ712は、連結データ703とデータCR705とは独立している。即ち、入力フォーム622の入力情報に依存せず、毎回、データ値の異なる秘匿登録データ712を作成できる。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S713とS714の処理手順を変更し、S713でデータP706とデータH707とデータG709を連結してから、S714でデータH707とデータCR705とのXOR算を計算してもよい。同様に、他の処理手順を変更してもよい。
また、上記の各処理を担当する制御部110は固定されたものではなく、担当する制御部110を変更してもよい。例えば、S711でデータF708を、圧縮関数部115ではなく、暗号化部112にデータF708を入力してもよく、S712では、暗号化部112から出力されたデータを、データG709として一時情報記憶部180に記憶してもよい。
また、秘匿登録データ712のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、データP706に関する情報は、記憶部120に記憶し、秘匿登録データ712に含まないように構成しても構わない。この時、S706が出力するデータをデータH706とみなし、S707とS708に係る処理は削除可能である。また、この時、S715で登録クライアント100の全体処理部111は、秘匿登録データ712として、データD711とデータG709とを連結すればよい。
図8は、本実施形態において、ネットワーク400を経由し、登録クライアント100が、秘匿登録データ132をDBサーバ300へ登録する処理を示すシーケンス図である。
登録クライアント100は、入力部101を経由し、ユーザからフォームへ入力された情報を一時情報記憶部180に記憶する処理を行う(S801)。
登録クライアント100は、入力部101を経由し、ユーザにより実行ボタン650が選択されたことを検知し、フォームに入力された情報を、平文登録データ131として記憶部120へ記憶する処理を行う(S802)。
登録クライアント100は、制御部110により秘匿登録データ132を作成し、記憶部120へ記憶する処理を行う(S803)。
登録クライアント100は、通信部103からネットワーク400を経由し、属性133と秘匿登録データ132を、DBサーバ300へ送信する処理を行う(S804)。
DBサーバ300は、通信部303からネットワーク400を経由し、登録クライアント100が送信した属性133と秘匿登録データ132を受信する処理を行う(S805)。
DBサーバ300は、制御部310により受信した属性133を用い、秘匿登録データ132を、データベース341の構成情報として記憶部320へ記憶する処理を行う(S806)。
DBサーバ300は、秘匿登録データ132の登録処理の成否を、通信部303からネットワーク400を経由し、登録サーバへ送信する処理を行う(S807)。
登録クライアント100は、通信部103からネットワーク400を経由し、DBサーバ300が送信した秘匿登録データ132の登録処理の成否を受信する処理を行う(S808)。
登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む登録情報について表示する処理を行う(S809)。
図9Aは、DBサーバ300における、記憶部320のデータベース記憶部340に記憶されるデータベース341の管理状態を例示した構成図である。
例えば、本実施形態において、DBサーバ300における、データベース341は、番号と、氏名と、Eメールとなどを示す属性901と、属性901に関連付けられた秘匿登録データ902(d0、d1、d2、・・・)とから構成されている。
図10は、検索クライアント200の出力部202の表示内容1000を例示した図である。図示するように、検索クライアント200は、検索項目部1010と、検索フォーム部1020と、検索と表示されたボタンを指す検索ボタン1050と、クリアと表示されたボタンを指すクリアボタン1060とを備える。
検索方法の選択部は、検索対象のデータの種類に関する項目から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを特定するラジオボタンを備える。また、入力部201を介し、各項目が複数選択可能である。
検索フォーム部1020は、検索方法の選択部で特定された属性1011である、番号と、氏名と、Eメールと、所属部署との詳細内容を入力する入力フォーム1022から構成される。例えば、本実施形態では、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム1022を複数備える。各入力フォーム1022に入力された情報は、記憶部220の一時情報記憶部280に記憶される。
クリアボタン1060は、入力部201を介し、選択可能である。例えば、本実施形態では、クリアボタン1060が選択されると、各入力フォーム1022の入力情報を消去する。
検索ボタン1050は、入力部201を介し、選択可能である。例えば、本実施形態では、検索ボタン1050が選択されると、検索方法の選択部で特定された属性1011と入力フォーム1022に入力された情報を基に、秘匿検索クエリ232を作成し、DBサーバ300へ送信する処理を行う。以下では、検索方法の選択部で、ただ一つの属性1011(例えば氏名)が選択された場合を示すが、複数の入力フォーム1022に情報が入力された場合と、複数の属性1011が選択された場合も、同様の処理で実施できる。
検索方法の選択部で、特定された属性1011が、ただ一つである場合に、検索ボタン1050が選択された場合の処理手順は、S1101〜S1112に従う。
図11Aは、本実施形態において、検索クライアント200が、出力部202に出力した入力フォーム1022に入力された情報を基に作成する連結データ1103のデータ構成を示すブロック図の例である。
また、図11Bは、本実施形態において、検索クライアント200が、秘匿検索クエリ1111を作成する過程において作成する連結データ1104のデータ構成を示すブロック図の例である。
また、図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
以下では、図11Aと、図11Bと、図11Cとを用い、入力フォーム1022に入力されたデータ値によらず、検索クライアント200が、毎回、データ値の異なる秘匿検索クエリ1111を作成する処理手順を説明する。
検索クライアント200の全体処理部211は、入力フォーム1022に入力された情報を、平文検索クエリ1101として記憶部220の検索クエリ記憶部230に記憶する処理を行う。このとき、平文検索クエリ1101は、検索クライアント200の一時情報記憶部280にmビットのバイナリ表現で構成されたデータとして記憶される。
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、誤り検査データ1102として出力する処理を行う。このとき、出力された誤り検査データ1102は、検索クライアント200の一時情報記憶部280に、eビットのデータとして記憶される。
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結する処理を行う(S1101)。
連結処理では、平文検索クエリ1101の各所に、分割した誤り検査データ1102を挿入してもよい。例えば、平文検索クエリ1101の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ1102を挿入してもよい。また、誤り検査データ1102に平文検索クエリ1101を乗算で掛け合わせるなど、混合させてもよい。
以下では、図11Aに示すように、検索クライアント200において、全体処理部211が入力した平文検索クエリの末尾に誤り検査データ1102を連結し、連結データ1103を一つのデータとみなした場合を扱う。このとき、検索クライアント200の一時情報記憶部280には、連結データ1103は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
次に、図11Bに示すように、検索クライアント200が作成する連結データ1104のデータ構成を説明する。
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結したデータである連結データ1103と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1102)。
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、データCS1105を出力する処理を行う(S1103)。
検索クライアント200において、全体処理部211が入力した連結データ1103を暗号化部212が暗号化し、出力したデータをデータCS1105とみなして扱えばよい。このとき、データCS1105は、検索クライアント200の一時情報記憶部280に、cビットのデータとして記憶される(S1104)。
なお、データCS1105は、連結データ1103に依存、即ち、入力フォーム1022の入力情報に依存してもよい。例えば、同一のデータ値を持つ連結データ1103からは、同一のデータCS1105を出力してもよい。
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251を擬似乱数生成部214に入力する処理を行う(S1105)。
検索クライアント200の擬似乱数生成部214は、入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、検索クライアント200の一時情報記憶部280に、rビットのデータP1106として記憶される(S1106)。
擬似乱数生成部214が出力する擬似乱数は、連結データ1103、データCS1105に依存しない。従って、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる、データPS1106を作成できる。
データPS1106は、擬似乱数生成関数の性質から、乱数を出力する。また、データPS1106は、連結データ703、データCS705に依存しない。従って、データPS1106は、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータF1107を作成できる。
検索クライアント200の全体処理部211は、データP1106と、パラメータ記憶部260に記憶された関数パラメータ261とを準同型関数部216に入力する(S1107)。
検索クライアント200の準同型関数部216は、入力されたデータを、準同型の性質を有する関数の入力値とみなし、関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、検索クライアント200の一時情報記憶部280に、fビットのデータF1107として記憶される(S1108)。
なお、準同型関数をfuncとした場合、その入力値であるデータP、出力値であるデータFには、式(5)が成り立つ(ただし、関数パラメータ261の記述は省略)。
= func(P) (5)
データF1107は、準同型関数部216が処理する準同型関数の性質から、入力されたデータ値が一様に分布する乱数の場合、出力も同様に一様分布する。また、データF1107は、連結データ1103とデータCS1104に依存しない。従って、データP1106同様、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータF1107を作成できる。
図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
検索クライアント200の全体処理部211は、データP1106とデータF1107とを連結し、作成した連結データ1104と、データCS1105とを基本演算部217へ入力する処理を行う(S1109)。
検索クライアント200の基本演算部217は、入力された連結データ1104と、データCS1105とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータD1110として出力する処理を行う(S1110)。
S1110の計算は、連結データ1103やデータCS1105に依存しない、乱数であるデータP1106を用いている。従って、連結データ1103とデータCS1105の関係が一意に定まる場合でも、毎回、データ値が異なる、データP1106を用いれば、異なるデータ値のデータD1110が得られる。
検索クライアント200の全体処理部211は、データD1110とデータF1107とを連結したデータである連結データ1108と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1111)。
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、暗号化したデータを、全体処理部211は、秘匿検索クエリ1111として検索クエリ記憶部230へ記憶する処理を行う(S1112)。
秘匿検索クエリ1111は、暗号化部に入力された連結データが乱数とみなせるため、出力された秘匿検索クエリ1111も、同様に乱数とみなせる。そのため、検索クライアント200が、例え不正傍受可能なネットワーク400経由で、DBサーバ300に送信しても、秘匿検索クエリ1111は安全である。
秘匿検索クエリ1111は、連結データ1103やデータC1105に依存しない、乱数であるデータP1106とデータF1107とを用いており、毎回、異なるデータ値が得られる。その結果、データD1106とデータF1107とを連結した秘匿検索クエリ1111は、連結データ1103とデータCR1105とは独立している。即ち、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる秘匿検索クエリ1111を作成できる。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S1109とS1110の処理手順を変更し、S1109でデータC1105と、データP1106と、のXOR算を計算してから、S1110でデータF1107とデータD1110とを連結してもよい。同様に、他の処理手順を変更してもよい。
また、上記の各処理を担当する制御部210は固定されたものではなく、担当する制御部210を変更してもよい。例えば、S1105で、擬似乱数生成部214ではなく、圧縮関数部215に秘密鍵251を入力してもよい。
また、秘匿検索クエリ1111のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、全体処理部211がデータF1107と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行い(S1111)、暗号化部が出力したデータと、データD1106とを、連結したデータを、秘匿検索クエリ1111とみなしてもよい (S1112)。
図12は、本実施形態において、ネットワーク400を経由し、検索クライアント200が送信した秘匿検索クエリ232を用い、DBサーバ300がデータベース341を検索する処理を示すシーケンス図である。
検索クライアント200は、入力部201を経由し、ユーザから、フォームへ入力された情報を一時情報記憶部280に記憶する処理を行う(S1201)。
検索クライアント200は、入力部201を経由し、ユーザにより、検索ボタン1050が選択されたことを検知し、フォームに入力された情報を平文検索クエリ231として記憶部220へ記憶する処理を行う(S1202)。
検索クライアント200は、制御部210により、秘匿検索クエリ232を作成し、記憶部220へ記憶する処理を行う(S1203)。
検索クライアント200は、通信部203からネットワーク400を経由し、属性233と秘匿検索クエリ232を、DBサーバ300へ送信する処理を行う(S1204)。
DBサーバ300は、通信部303からネットワーク400を経由し、検索クライアント200が送信した属性233と秘匿検索クエリ232を受信する処理を行う(S1205)。
DBサーバ300は、制御部310により、属性233を用い、データベース341から、秘匿検索クエリ332に関係する秘匿登録データ902を検索する処理を行う(S1206)。
DBサーバ300は、秘匿検索クエリ332に該当する検索結果(属性901と秘匿登録データ902の一部を抜粋)を、通信部303からネットワーク400を経由し、検索サーバへ送信する処理を行う(S1207)。
検索クライアント200は、通信部203からネットワーク400を経由し、DBサーバ300が送信した秘匿検索クエリ232に該当する検索結果を受信する処理を行う(S1208)。
検索クライアント200は、制御部210により、秘匿検索クエリ232に該当する検索結果から、平文登録データ272を復元する(S1209)。
検索クライアント200は、出力部202を経由し、抽出した平文登録データ272を記憶部220に記憶する。また、抽出した平文登録データ272を、出力部202に表示する処理を行ってもよい(S1210)。
本実施形態において、S1206で示した、DBサーバ300の制御部310が秘匿登録データ902を検索する処理手順は、以下、S1301からS1318に従う。
なお、DBサーバ300の全体処理部311は、受信した属性233に関係する、データベース341の属性901に関連付けられた秘匿登録データ902を検索対象とする。
図9Bは、図9Aに示した、構成図を用い、DBサーバ300の記憶部320のデータベース記憶部340に記憶された、データベース341における、検索対象を例示した構成図である。
例えば、受信した属性233が、氏名に関する情報である場合、図9Bの太線の実線枠が囲んだ部分が示すように、DBサーバ300の全体処理部311は、データベース341の氏名に関係する属性901を、検索対象の秘匿登録データ902として扱う。
なお、以下、秘匿登録データ902を検索するS1301からS1318の処理手順は、検索対象である秘匿登録データ902の全て、または検索対象である秘匿登録データ902から任意に抽出した秘匿登録データ902、または一定数の秘匿登録データ902に対して、実施する。
図13Aは、本実施形態において、DBサーバ300が、通信部303から受信した秘匿検索クエリを復号化した、連結データ1301のデータ構成を示すブロック図の例である。
また、図13Bは、本実施形態において、DBサーバ300が、データベース記憶部340に記憶した、データベース341における、秘匿登録データ1304のデータ構成を示すブロック図の例である。
また、図13Cは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1308のデータ構成を示すブロック図の例である。
また、図13Dは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1311のデータ構成を示すブロック図の例である。
以下では、図13Aと、図13Bと、図13Cと、図13Dとを用い、DBサーバ300が、毎回、データ値の異なる連結データ1301を用いても、正しく秘匿登録データ1304を検索する処理手順を説明する。
DBサーバ300の全体処理部311は、通信部303を用い、秘匿検索クエリ1300を受信する処理を行う。このとき、DBサーバ300の全体処理部311は、秘匿検索クエリ1300を、検索クエリ記憶部330に記憶する。
DBサーバ300の全体処理部311は、秘匿検索クエリ1300と、秘密鍵記憶部350に記憶された秘密鍵351とを復号化部313へ入力する処理を行う(S1301)。
DBサーバ300の復号化部は、入力された秘匿検索クエリ1300を復号化し、連結データ1301を出力する処理を行う(S1302)。このとき、図13Aに示すように、連結データ1301は、DBサーバ300の一時情報記憶部280に、(h+f)ビットのバイナリ表現で構成されたデータとして記憶される。
DBサーバ300の全体処理部311は、連結データ1301からデータD1302を取り出す処理を行う(S1303)。
S1303は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が、連結データ1301から、データD1302に該当する最初のhビットを、抽出すればよい。
DBサーバ300の全体処理部311は、データベース記憶部340に記憶されている、データベース341にある秘匿登録データ1304を読み出し、秘匿登録データ1304から、データDR1306を取り出す処理を行う(S1304)。
S1304は、例えば、図13Bに示すように、DBサーバ300が、全体処理部311が、秘匿登録データ1304から、データP1305に該当する最初のrビットと、データG1307に該当する最後のgビットとを取り除いたデータを、データDR1306とみなして扱えばよい。
図13Cは、本実施形態において、DBサーバ300が作成する連結データ1308のデータ構成を示すブロック図である。
登録クライアント100がデータC705の確率的暗号化に利用したデータH707と、検索クライアント200がデータC1105の確率的暗号化に利用したデータP1106と、の相関関係が取れるかを、準同型関数部316を利用して検査する。
DBサーバ300の全体処理部311は、データD711とデータD1302とを基本演算部317へ入力する処理を行う(S1305)。
登録クライアント100の基本演算部117は、入力されたデータD1309とデータDS1310とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を連結データ1308として出力する処理を行う(S1306)。
S1305とS1306では、登録クライアント100の入力フォーム622に入力された情報を隠すためのデータH707と、検索クライアント200が入力フォーム1022に入力された情報を隠すためのデータP1106との関係式を導く。
実際、S1306のxor算により、登録クライアント100と検索クライアント200の入力情報が等しい、即ち、データC705とデータC1105のデータ値が等しい場合、以下の式(6)が導ける。
xor D = P xor H (ただし、C=Cのとき) (6)
図13Dは、本実施形態において、DBサーバ300が作成する連結データ1311のデータ構成を示すブロック図の例である。
DBサーバ300の全体処理部311は、連結データ1308と、パラメータ記憶部360に記憶された関数パラメータ361とを準同型関数部316に入力する(S1307)。
DBサーバ300の準同型関数部316は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、DBサーバ300の一時情報記憶部380には、hビットのデータF1312として記憶される(S1308)。
= F(P xor H) =F xor FR (7)
なお、式(7)は、式(3)と、式(5)と、式(6)とより導ける。
DBサーバ300の全体処理部311は、連結データ1301からデータF1303を取り出す処理を行う(S1309)。
S1309は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が入力した連結データ1301から、データF1303に該当する最後のfビットを抽出すればよい。
DBサーバ300の全体処理部311は、データF1312とデータFS1303を、基本演算部317に入力する処理を行う(S1310)。
DBサーバ300の基本演算部317は、入力されたデータF1312とデータF1303とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータD1313として出力する処理を行う(S1311)。
データC705とデータC1105のデータ値が同じ、即ち、式(7)が成り立つ場合、S1311の処理は、式(8)に基づく。
R = F xor FS= FR (8)
従って、データC705とデータC1105のデータ値が等しい場合、データDR1313のデータ値はデータFR708と等しい。
DBサーバ300の全体処理部311は、データD1313を、圧縮関数部315へ入力する処理を行う(S1312)。
DBサーバ300の圧縮関数部315は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータG1314として記憶される(S1313)。
DBサーバ300の全体処理部311は、データG1314とデータGR1307を基本演算部317に入力する処理を行う(S1314)。
DBサーバ300の基本演算部317は、入力されたデータG1314と、データGR1307とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータE1315として出力する(S1315)。
式(5)が成り立つ場合、データG1314のデータ値はデータGR1307と等しく、式(9)より、データE1315のデータ値は0になる。
xor GS= 0 (9)
DBサーバ300の全体処理部311は、任意の数だけ、データE1315のビット値が0であるかを判定する(S1316)。
S1316で調査したデータE1315のデータ値が0でない場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係がないと判断する。このとき、検索対象である秘匿登録データ1304の全て、または検索対象である秘匿登録データ1304から任意に抽出した秘匿登録データ1304の全て、または検索した秘匿登録データ1304が一定数に達するまで、DBサーバ300の制御部310は、S1304に戻り、秘匿登録データ1304を検索する処理を続ける(S1317)。
S1316で調査したデータE1315のデータ値が0である場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係があると判断する。このとき、判断された秘匿登録データ1304と、関連する属性901に対応する秘匿登録データ1304とを、秘匿検索クエリ1300に該当する検索結果とみなす(S1318)。
例えば、図9Bに示すように、検索結果は、検索した属性901が氏名に関する情報であり、秘匿検索クエリ1300に関係がある秘匿登録データ1304がdk+1であるとDBサーバ300の全体処理部311が判断した場合、判断された秘匿登録データ1304であるdk+1と、属性901が対応する図9Bの太枠の点線で囲まれた秘匿登録データ1304(dk、dk+2、dk+3、・・・)を、秘匿検索クエリ1300に該当する検索結果とみなす。
以上に示したように、登録クライアント100が、毎回、異なるデータ値を有する秘匿登録データ712を作成し、検索クライアント200が、毎回、異なるデータ値を有する秘匿検索クエリ1111を作成した場合にも、受信した秘匿検索クエリ1300に該当する秘匿登録データ1304を正しく検索できる。
また、式(6)に示したように、検索過程において、データC705とデータC1105のデータ値を互いに相殺しており、DBサーバ300には、データC705とデータC1105のデータ値が漏洩しない。
なお、上記の処理手順は固定されたものではなく、処理手順を変更してもよい。例えば、S1303とS1305、S1304とS1306の処理手順をそれぞれ変更し、S1304でデータDR1306を取り出し、S1306でデータDS1302を取り出してもよい。同様に、他の処理手順を変更してもよい。
また、上記の各処理を担当する制御部310は固定されたものではなく、担当する制御部310を変更してもよい。例えば、DBサーバ300が暗号化部312を備える場合、S1312でデータD1313を、圧縮関数部315ではなく、暗号化部312に入力してもよく、S1314では、暗号化部312から出力されたデータを、データGD1314として一時情報記憶部380に記憶してもよい。
また、検索処理に該当する判定基準を変更してもよい。例えば、S1316において、データE1315の任意のビットが0と等しいのを判定するのではなく、変更可能な特定の値と、データE1315のデータ値との大小関係等の判定式を用いて判定するようにしてもよい。
また、秘匿検索クエリ1301に該当する、秘匿登録データ1304のデータ構成を変更し、検索結果を構成してもよい。例えば、データG1307に関する情報は、検索結果に含まないように構成しても構わない。
また、DBサーバ300が擬似乱数生成部314を備えるならば、全体処理部311が擬似乱数生成部314に秘密鍵351を入力し、擬似乱数生成部314が出力した擬似乱数を、データG1307の代わりに連結したデータを、秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよい。また、データG1307と擬似乱数を、共に秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよく、擬似乱数の代わりに、一般的なインデックスを用いてもよい。
また、DBサーバ300が暗号化部313を備えるならば、全体処理部311が、秘匿検索クエリ1301に該当する秘匿登録データ1304と、秘密鍵351を暗号化部313に入力し、出力したデータを、検索結果とみなしてもよい。秘匿検索クエリ1301に該当する秘匿登録データ1304が擬似乱数または一般的なインデックスと連結されている場合、暗号化部313への入力値が随時異なるため、暗号化部313が出力するデータは、乱数とみなせる。従って、DBサーバ300が、例え不正傍受可能なネットワーク400経由で、検索クライアント200に送信しても、検索結果は安全である。
本実施形態において、S1209で示した、検索クライアント200の制御部210が、受信した秘匿登録データ1304の全てまたは一部に対する秘匿登録データ1304を復号し、平文登録データ272を抽出する処理手順は、以下、S1401からS1411の処理手順に従う。
図14Aは、本実施形態において、検索クライアント200が、通信部203から受信した秘匿登録データ1401のデータ構成を示すブロック図の例である。
また、図14Bは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成するデータC1405のデータ構成を示すブロック図の例である。
また、図14Cは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成する連結データ1409のデータ構成を示すブロック図の例である。
以下では、図14Aと、図14Bと、図14Cと、図14Dとを用い、検索クライアント200が、秘匿登録データ1401から平文登録データ1410を復号化する処理手順を説明する。
検索クライアント200の全体処理部211は、通信部203を用い、秘匿登録データ1401を受信する処理を行う。このとき、検索クライアント200は、登録データ1401を、検索クエリ記憶部230に、(r+h+g)ビットのバイナリ表現で構成されたデータとして記憶する。
検索クライアント200の全体処理部211は、秘匿登録データ1401からデータP1402を取り出す処理を行う(S1401)。
S1401は、例えば、図14に示すように、検索クライアント200が、全体処理部211が入力した秘匿登録データ1401から、データP1402に該当する最初のrビットを抽出すればよい。
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251とデータP1402を圧縮関数部215に入力する処理を行う(S1402)。
検索クライアント200の圧縮関数部215は、入力されたデータを変換し、ハッシュ値を出力する処理を行う(S1403)。このとき、ハッシュ値は、検索クライアント200の一時情報記憶部280には、hビットのデータH1407として記憶される。
図14Bは、本実施形態において、DBサーバ300が作成するデータC1405のデータ構成を示すブロック図である。
検索クライアント200の全体処理部211は、データD1403とデータH1407とを基本演算部217へ入力する処理を行う(S1404)。
検索クライアント200の基本演算部217は、入力されたデータD1403とデータH1407とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータC1405として出力する処理を行う(S1405)。
S1407のxor算では、データH1407とデータD1403とデータC1405とは式(10)を満たす。
R =H xor DR (10)
なお、式(10)は、式(4)を変形した数式である。
検索クライアント200の全体処理部211は、基本演算部217が出力したデータと、秘密鍵記憶部250に記憶された秘密鍵251とを復号化部213へ入力する処理を行う(S1406)。
検索クライアント200の復号化部は、入力されたデータC1405を復号化し、連結データ1409を出力する処理を行う(S1407)。このとき、図14Cに示すように、連結データ1409は、検索クライアント200の一時情報記憶部280に、(m+e)ビットのデータとして記憶される。
検索クライアント200の全体処理部211は、連結データ1409から誤り検査データ1411を取り出す処理を行う(S1408)。
例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1403から、データ終わりのeビットを誤り検査データ1411とみなし抽出すればよい。
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、検査用のデータに変換したデータと、誤り検査データ1411とを基本演算部217へ入力する処理を行う(S1409)。
検索クライアント200の基本演算部217は、入力された、検査用に変換されたデータと、誤り検査データ1411を比較し、その比較結果を出力する処理を行う(S1410)。
例えば、バイナリ列で表わされた検査用のデータと誤り検査データが等しければ、等号を表わすビット(1)を出力し、等しくない場合は、不等号を表わすビット(0)を出力する処理を行う。
例えば、基本演算部217が、等号を表わすビット(1)を出力した場合は、検索クライアント200の全体処理部211は、正しい検索結果であると判断する処理を行う。また、基本演算部217が、不等号を表わすビット(0)を出力した場合は、DBサーバ300の全体処理部311は、誤った検索結果であると判断する処理を行う。
検索クライアント200の全体処理部211は、基本演算部217が出力した結果に応じ、連結データ1402から抽出した平文登録データ1410を検索結果とする処理を行い、平文登録データ1410を復元する処理(S1209)を終了する(S1411)。例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1409から、データ初めのmビットを平文登録データ1410とみなす。
なお、DBサーバ300の不正対策に万全を期したい場合、検索に該当した検索結果はDBサーバ300から削除し、復号化した平文登録データ1410の順番をランダムにシャッフルした後、検索クライアント200または登録クライアント100から、DBサーバ300に秘匿登録データを再登録するように処理してもよい。
100:登録クライアント、200:検索クライアント、300:DBサーバ、400:ネットワーク、500:コンピュータ、101、201、301:入力部、102、202、302:出力部、103、203、303:通信部、110、210、310:制御部、111、211、311:全体処理部、112、212:暗号化部、213、313:復号化部、114、214:擬似乱数生成部、115、215、315:圧縮関数部、116、216、316:準同型関数部、117、217、317:基本演算部、120、220、320:記憶部、130:登録データ記憶部、131、272、701、1410:平文登録データ、132、271、712、1304、1401:秘匿登録データ、133、233:属性、230、330:検索クエリ記憶部、231、1101:平文検索クエリ、232、332、1111、1300:秘匿検索クエリ、340:データベース記憶部、341:データベース、150、250、350:秘密鍵記憶部、151、251、351:秘密鍵、160、260、360:パラメータ記憶部、161、261、361:関数パラメータ、162、262:検査パラメータ、270:受信データ記憶部、180、280、380:一時情報記憶部、501:CPU(Central Processing Unit)、502:メモリ、503:外部記憶装置、508:記憶媒体、507:読書装置、506:入力装置、505:出力装置、504:通信装置、509:内部通信線、600:出力部101の表示内容、610:管理方法の選択部、620:管理フォーム部、621、1011:属性、622、1022:入力フォーム、650:実行ボタン、660、1060:クリアボタン、1000:出力部102の表示内容、1010:検索項目部、1020:検索フォーム部、1050:検索ボタン、702、1411:誤り検査データ、703、704、1103、1104、1108、1301、1308、1311、1409:連結データ、705:データC、706:データP、707:データH、708:データF、709:データG、711:データD、1102:誤り検査データ、1105:データC、1106:データP、1107:データF、1110:データD、1302:データD、1303:データF、1305:データP、1306:データD、1307:データG、1309:データD、1310:データD、1312:データF、1313:データD、1314:データG、1315:データE、1402:データP、1403:データD、1404:データG、1405:データC、1407:データH

Claims (10)

  1. 確率的暗号化方式により暗号化された登録データを記憶するDBサーバと、
    検索クライアントとを含み、
    前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
    前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
    前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
    前記検索クライアントにおける前記制御部は、第1の乱数を生成する乱数生成部と、前記第1の乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記第1の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
    前記検索クライアントにおける前記制御部は、前記準同型関数部が出力した前記関数値を変換し、ハッシュ値を出力する圧縮関数部を備え、
    前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
    前記DBサーバにおける前記制御部は、暗号化された前記登録データと暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
    前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された暗号文と、前記圧縮関数部が出力する前記ハッシュ値から構成されるデータが暗号化されていることを特徴とする検索可能暗号処理ステム。
  2. 確率的暗号化方式により、暗号化された登録データを記憶するDBサーバと、
    検索クライアントとを含み、
    前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
    前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
    前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
    前記検索クライアントにおける前記制御部は、乱数を生成する乱数生成部と、前記乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
    前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
    前記DBサーバにおける前記制御部は、暗号化された前記登録データと、暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
    前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された前記データと、前記準同型関数部が出力した前記関数値から構成されるデータが暗号化されることを特徴とする検索可能暗号処理ステム。
  3. 請求項1記載の検索可能暗号処理システムであって
    記確率的暗号化方式により、前記登録データを暗号化する登録クライアントを有し、
    前記DBサーバの前記通信部は、暗号化した前記登録データを受信し、前記DBサーバの前記記憶部は前記登録データを記憶し、
    前記登録クライアントは、前記登録データを記憶する記憶部と、前記登録データを暗号化する制御部と、暗号化した前記登録データを送信する通信部とを備え、
    前記登録クライアントにおける前記制御部は、第2の乱数を生成する乱数生成部と、前記第2の乱数により前記登録データを前記確率的暗号化方式で暗号化する基本演算部と、前記第2の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部と、を備えることを特徴とする検索可能暗号処理ステム。
  4. 請求項3記載の検索可能暗号処理システムであって、
    前記登録クライアントが送信する暗号化された前記登録データは、前記乱数部が出力した前記第2の乱数と、前記基本演算部により前記確率的暗号化方式で暗号化された暗号文と、前記準同型関数部が出力する前記関数値から構成されることを特徴とする検索可能暗号処理システム。
  5. 請求項4記載の検索可能暗号処理システムであって、
    前記DBサーバの前記通信部は、前記検索クエリに該当する、暗号化された前記登録データを送信し、
    前記検索クライアントの前記通信部は、暗号化された前記登録データを受信し、前記検索クライアントの前記制御部は、前記登録データを復号化し、
    前記検索クライアントの前記制御部は、暗号化された前記登録データを暗号化した第3の乱数を出力する圧縮関数部を備え、前記検索クライアントの前記基本演算部は、前記登録データの暗号化を解除することを特徴とする検索可能暗号処理ステム。
  6. 請求項5記載の検索可能暗号処理システムであって、
    前記DBサーバの前記基本演算部は、前記登録データから任意のデータを抽出し、前記圧縮関数部が出力した前記第3の乱数から、指定されたデータ長分を検査することを特徴とする検索可能暗号処理ステム。
  7. 請求項6記載の検索可能暗号処理システムであって、
    前記登録クライアントの前記記憶部は、前記登録クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
    前記検索クライアントの前記記憶部は、前記検索クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
    前記DBサーバの前記記憶部は、前記DBサーバの前記準同型関数部に入力可能な関数パラメータを記憶することを特徴とする検索可能暗号処理システム。
  8. 請求項7記載の検索可能暗号処理システムであって、
    前記検索クライアントの前記記憶部は、暗号化を解除した前記登録データの検査用のパラメータを記憶し、
    前記検索クライアントは、暗号化を解除した前記登録データから検査用のデータを抽出し、前記検査用のパラメータとの関係を検査する全体処理部を備えることを特徴とする検索可能暗号処理ステム。
  9. 請求項8記載の検索可能暗号処理システムであって、
    前記登録クライアントは、前記登録データを決定的暗号化方式で暗号化する暗号化部を備え、
    前記決定的暗号化方式は、同一のデータ値の平文からデータ値が等しい暗号文を生成するデータの暗号化方式であることを特徴とする検索可能暗号処理ステム。
  10. 請求項9記載の検索可能暗号処理システムであって、
    前記登録クライアントの前記記憶部は、暗号化されていない、登録用のデータを記憶し、前記登録クライアントの前記記憶部に記憶した検査用のパラメータから、誤り検査用のデータを抽出し、前記登録用のデータと結合させる全体制御部を備えることを特徴とする検索可能暗号処理ステム。
JP2010273556A 2010-12-08 2010-12-08 検索可能暗号処理システム Active JP5412414B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2010273556A JP5412414B2 (ja) 2010-12-08 2010-12-08 検索可能暗号処理システム
EP11847558.1A EP2650798A4 (en) 2010-12-08 2011-11-29 BROKEN ENCRYPTION PROCESSING SYSTEM
CN201180046068.8A CN103119594B (zh) 2010-12-08 2011-11-29 可检索密码处理系统
EP15195911.1A EP3012754B1 (en) 2010-12-08 2011-11-29 Searchable symmetric encryption processing system
US13/825,643 US9275250B2 (en) 2010-12-08 2011-11-29 Searchable encryption processing system
PCT/JP2011/077588 WO2012077541A1 (ja) 2010-12-08 2011-11-29 検索可能暗号処理システム
KR1020137007399A KR101467130B1 (ko) 2010-12-08 2011-11-29 검색 가능 암호 처리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010273556A JP5412414B2 (ja) 2010-12-08 2010-12-08 検索可能暗号処理システム

Publications (2)

Publication Number Publication Date
JP2012123614A JP2012123614A (ja) 2012-06-28
JP5412414B2 true JP5412414B2 (ja) 2014-02-12

Family

ID=46207032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010273556A Active JP5412414B2 (ja) 2010-12-08 2010-12-08 検索可能暗号処理システム

Country Status (6)

Country Link
US (1) US9275250B2 (ja)
EP (2) EP2650798A4 (ja)
JP (1) JP5412414B2 (ja)
KR (1) KR101467130B1 (ja)
CN (1) CN103119594B (ja)
WO (1) WO2012077541A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10594473B2 (en) 2015-02-10 2020-03-17 Kabushikikaisha Rnai Terminal device, database server, and calculation system
US11170123B2 (en) 2017-09-12 2021-11-09 Mitsubishi Electric Corporation Registration terminal, key server, search system, and computer readable medium
US11360978B2 (en) 2017-05-18 2022-06-14 Mitsubishi Electric Corporation Search device, tag generation device, query generation device, searchable encryption system and computer readable medium

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418238B2 (en) * 2011-02-22 2016-08-16 Mitsubishi Electric Corporation Search system, search method of search system, and information processing device
WO2012121152A1 (ja) * 2011-03-04 2012-09-13 日本電信電話株式会社 代理計算システム、方法、依頼装置及びプログラム
JP5622714B2 (ja) * 2011-12-27 2014-11-12 株式会社東芝 情報処理装置および電力利用調整システム
US9087212B2 (en) * 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database
US9391965B2 (en) 2012-01-25 2016-07-12 Mitsubishi Electric Corporation Data search device, data search method, data search program, data registration device, data registration method, data registration program, and information processing device
CA3092603C (en) * 2012-06-18 2023-01-24 Ologn Technologies Ag Secure password management systems, methods and apparatuses
US9665722B2 (en) * 2012-08-10 2017-05-30 Visa International Service Association Privacy firewall
EP2933732A4 (en) 2012-12-12 2016-07-27 Nec Corp DATABASE SEARCH, DATABASE SEARCH AND PROGRAM
JP2014119486A (ja) * 2012-12-13 2014-06-30 Hitachi Solutions Ltd 秘匿検索処理システム、秘匿検索処理方法、および秘匿検索処理プログラム
JP5889177B2 (ja) * 2012-12-25 2016-03-22 株式会社日立製作所 データベースシステム及びその更新方法
CN104995621B (zh) * 2013-02-25 2018-06-05 三菱电机株式会社 服务器装置以及隐匿检索系统
US9286488B2 (en) * 2013-03-13 2016-03-15 Northrop Grumman Systems Corporation System and method for secure database queries
WO2014203339A1 (ja) * 2013-06-18 2014-12-24 株式会社日立製作所 保持数検証システム
US10122714B2 (en) 2013-08-01 2018-11-06 Bitglass, Inc. Secure user credential access system
US9552492B2 (en) * 2013-08-01 2017-01-24 Bitglass, Inc. Secure application access system
US9553867B2 (en) 2013-08-01 2017-01-24 Bitglass, Inc. Secure application access system
JP6144992B2 (ja) 2013-08-08 2017-06-07 株式会社日立製作所 検索可能暗号処理システム及び方法
JP5937556B2 (ja) * 2013-09-30 2016-06-22 日本電信電話株式会社 秘密計算装置、秘匿検索システム、秘密計算方法、秘匿検索方法、プログラム
WO2015063905A1 (ja) * 2013-10-31 2015-05-07 株式会社日立製作所 データ分析システム
JP6208586B2 (ja) 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
US9363243B2 (en) 2014-03-26 2016-06-07 Cisco Technology, Inc. External indexing and search for a secure cloud collaboration system
WO2015163822A1 (en) * 2014-04-23 2015-10-29 Agency For Science, Technology And Research Method and system for generating / decrypting ciphertext, and method and system for searching ciphertexts in a database
US9558366B2 (en) * 2014-05-12 2017-01-31 Compugroup Medical Se Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method
KR101583311B1 (ko) * 2014-08-28 2016-01-08 고려대학교 산학협력단 키 교환 방법 및 바디 센서
JP6234605B2 (ja) * 2014-10-21 2017-11-22 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
WO2016072057A1 (ja) 2014-11-05 2016-05-12 日本電気株式会社 暗号文照合システム、方法、および記録媒体
US20170322977A1 (en) * 2014-11-07 2017-11-09 Hitachi, Ltd. Method for retrieving encrypted graph, system for retrieving encrypted graph, and computer
US9537838B2 (en) 2014-12-22 2017-01-03 Sap Se Adjustable proxy re-encryption
US9547720B2 (en) 2014-12-24 2017-01-17 Sap Se Access control for encrypted query processing
CN107210004A (zh) * 2015-01-15 2017-09-26 三菱电机株式会社 随机数扩展装置、随机数扩展方法和随机数扩展程序
JPWO2016120975A1 (ja) * 2015-01-26 2017-06-08 株式会社日立製作所 データ集計分析システム及びその方法
WO2016178655A1 (en) * 2015-05-01 2016-11-10 Hewlett Packard Enterprise Development Lp Secure multi-party information retrieval
KR102423885B1 (ko) * 2015-05-08 2022-07-21 한국전자통신연구원 연산 에러 검출이 가능한 준동형 암호 방법 및 그 시스템
US10176207B1 (en) 2015-06-09 2019-01-08 Skyhigh Networks, Llc Wildcard search in encrypted text
US10404669B2 (en) 2015-06-09 2019-09-03 Skyhigh Networks, Llc Wildcard search in encrypted text
CN104978536B (zh) * 2015-07-08 2018-04-17 合肥高维数据技术有限公司 一种隐私保护云图像管理系统
US9894042B2 (en) * 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type
JP6732887B2 (ja) * 2015-08-18 2020-07-29 ノキア ソリューションズ アンド ネットワークス オサケユキチュア データベースクエリのための方法及びシステム
JP6961324B2 (ja) * 2015-08-25 2021-11-05 株式会社日立製作所 検索可能暗号処理システム
JP6701646B2 (ja) 2015-09-02 2020-05-27 富士通株式会社 情報処理装置、情報処理システム及び情報管理方法
JP5969681B1 (ja) * 2015-10-30 2016-08-17 株式会社第一コンピュータサービス 秘密情報管理システム
WO2017082875A1 (en) 2015-11-10 2017-05-18 Hewlett Packard Enterprise Development Lp Data allocation based on secure information retrieval
WO2017122326A1 (ja) * 2016-01-14 2017-07-20 三菱電機株式会社 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
WO2017122352A1 (ja) 2016-01-15 2017-07-20 三菱電機株式会社 暗号化装置、暗号化方法及び暗号化プログラム
EP3373504B1 (en) * 2016-01-18 2019-09-11 Mitsubishi Electric Corporation Encryption device, retrieval device, encryption program, retrieval program, encryption method, and retrieval method
US10789374B2 (en) 2016-03-28 2020-09-29 Hitachi, Ltd. Database system and data retrieval method
DE112017003740T5 (de) * 2016-08-24 2019-05-09 Robert Bosch Gmbh Durchsuchbare-Symmetrische-Verschlüsselung-System und Verfahren zum Verarbeiten eines invertierten Indexes
US11080301B2 (en) 2016-09-28 2021-08-03 Hewlett Packard Enterprise Development Lp Storage allocation based on secure data comparisons via multiple intermediaries
US10230703B1 (en) 2016-10-27 2019-03-12 Cisco Technology, Inc. Providing multiple levels of group access to partial data objects
JP6653246B2 (ja) * 2016-12-08 2020-02-26 株式会社日立製作所 計算機システム及びデータ管理方法
US11765137B2 (en) 2016-12-20 2023-09-19 Nippon Telegraph And Telephone Corporation Message transmission system, communication terminal, server apparatus, message transmission method, and program
US11128452B2 (en) * 2017-03-25 2021-09-21 AVAST Software s.r.o. Encrypted data sharing with a hierarchical key structure
CN110546631A (zh) 2017-04-25 2019-12-06 三菱电机株式会社 检索装置、检索系统、检索方法和检索程序
US10846423B2 (en) * 2017-08-11 2020-11-24 Palo Alto Research Center Incorporated System and architecture for analytics on encrypted databases
JP6619401B2 (ja) * 2017-09-21 2019-12-11 三菱スペース・ソフトウエア株式会社 データ検索システム、データ検索方法およびデータ検索プログラム
US11138152B2 (en) 2017-10-11 2021-10-05 Lognovations Holdings, Llc Method and system for content agnostic file indexing
US10963429B2 (en) 2017-10-11 2021-03-30 Lognovations Holdings, Llc Method and system for content agnostic file indexing
US10866822B2 (en) * 2017-11-28 2020-12-15 Bank Of America Corporation Computer architecture for emulating a synchronous correlithm object processing system
GB201720341D0 (en) * 2017-12-06 2018-01-17 Trisent Communications Ltd Personal data management
WO2019142268A1 (ja) 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
JP6840692B2 (ja) * 2018-02-22 2021-03-10 株式会社日立製作所 計算機システム、接続装置、及びデータ処理方法
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
JP7249248B2 (ja) * 2019-08-30 2023-03-30 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
US11436351B1 (en) * 2019-12-18 2022-09-06 Bae Systems Information And Electronic Systems Integration Inc. Homomorphic encryption of secure data
JP7325396B2 (ja) 2020-12-25 2023-08-14 株式会社日立製作所 データファイル暗号化送受信システム及びデータファイル暗号化送受信方法
KR102401485B1 (ko) * 2021-12-30 2022-05-24 주식회사 디사일로 동형 암호화된 데이터 처리 방법 및 시스템
KR102613986B1 (ko) 2023-03-31 2023-12-14 고려대학교산학협력단 신뢰 실행 환경 기반의 동적 탐색 가능한 암호화에서 정보 유출을 최소화하는 방법, 장치 및 시스템
KR102613985B1 (ko) 2023-03-31 2023-12-14 고려대학교산학협력단 탐색 가능한 암호화에서 역방향 안정성 하향 공격에 대한 방어 방법, 장치 및 시스템

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030140112A1 (en) * 1999-11-04 2003-07-24 Satish Ramachandran Electronic messaging system method and apparatus
US7362868B2 (en) * 2000-10-20 2008-04-22 Eruces, Inc. Hidden link dynamic key manager for use in computer systems with database structure for storage of encrypted data and method for storage and retrieval of encrypted data
JP2002278970A (ja) * 2001-03-16 2002-09-27 Ricoh Co Ltd 文書管理システム
US7472105B2 (en) * 2004-10-19 2008-12-30 Palo Alto Research Center Incorporated System and method for providing private inference control
JP2007114494A (ja) * 2005-10-20 2007-05-10 Nippon Telegr & Teleph Corp <Ntt> 秘匿計算方法及び装置
CN101593196B (zh) * 2008-05-30 2013-09-25 日电(中国)有限公司 用于快速密文检索的方法、装置和系统
CN101739400B (zh) * 2008-11-11 2014-08-13 日电(中国)有限公司 生成索引的方法和装置以及检索方法和装置
US9684710B2 (en) * 2009-05-28 2017-06-20 Microsoft Technology Licensing, Llc Extending random number summation as an order-preserving encryption scheme

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10594473B2 (en) 2015-02-10 2020-03-17 Kabushikikaisha Rnai Terminal device, database server, and calculation system
US11360978B2 (en) 2017-05-18 2022-06-14 Mitsubishi Electric Corporation Search device, tag generation device, query generation device, searchable encryption system and computer readable medium
US11170123B2 (en) 2017-09-12 2021-11-09 Mitsubishi Electric Corporation Registration terminal, key server, search system, and computer readable medium

Also Published As

Publication number Publication date
KR101467130B1 (ko) 2014-11-28
KR20130056314A (ko) 2013-05-29
EP3012754A1 (en) 2016-04-27
WO2012077541A1 (ja) 2012-06-14
US9275250B2 (en) 2016-03-01
EP2650798A4 (en) 2016-01-27
US20130262863A1 (en) 2013-10-03
CN103119594B (zh) 2016-05-18
JP2012123614A (ja) 2012-06-28
EP3012754B1 (en) 2019-10-09
EP2650798A1 (en) 2013-10-16
CN103119594A (zh) 2013-05-22

Similar Documents

Publication Publication Date Title
JP5412414B2 (ja) 検索可能暗号処理システム
JP6144992B2 (ja) 検索可能暗号処理システム及び方法
US10489604B2 (en) Searchable encryption processing system and searchable encryption processing method
US8578473B2 (en) Systems and methods for information security using one-time pad
KR101829267B1 (ko) 암호문의 크기가 감소되는 동형 암호화 방법
US20090138698A1 (en) Method of searching encrypted data using inner product operation and terminal and server therefor
CN111010266B (zh) 消息的加解密、读写方法、装置、计算机设备和存储介质
CN104052740A (zh) 云存储中可验证的基于词典的可搜索加密方法
JP6961324B2 (ja) 検索可能暗号処理システム
JP2013145420A (ja) 暗号化データの高速な類似検索処理システム
CN115473703A (zh) 认证的基于身份的密文等值测试方法、装置、系统及介质
CN108370312B (zh) 加密装置、检索装置、计算机能读取的记录介质、加密方法和检索方法
Shatilov et al. Solution for secure private data storage in a cloud
KR20120071844A (ko) 기밀성과 무결성을 제공하는 통합 암호화 장치 및 그 방법
CN108920968B (zh) 一种基于连接关键词的文件可搜索加密方法
KR100951034B1 (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
CN106789007B (zh) 一种基于密文检索的网络信息审查方法与系统
KR20120108121A (ko) 대칭키 기반의 암호 생성 및 검색 방법과 그 시스템
US20100246817A1 (en) System for data security using user selectable one-time pad
Adak et al. Dynamic Data Masking by Two-Step Encryption
Zhang et al. The Security Analysis of MySQL's Encryption Functions
Alfawair et al. Secure Image Indexing Using Speeded Up Robust Features (SURF) Key Points and SHAKE256 Hashing
CN113259438A (zh) 模型文件的发送方法和装置及模型文件的接收方法和装置
CN117176325A (zh) 一种加密处理方法、解密处理方法及相关装置
CN115168909A (zh) 一种基于比较索引的密文数据范围查询方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130902

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Ref document number: 5412414

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150