JP6493522B2 - 秘密計算データ利用システムと方法と装置並びにプログラム - Google Patents

秘密計算データ利用システムと方法と装置並びにプログラム Download PDF

Info

Publication number
JP6493522B2
JP6493522B2 JP2017516545A JP2017516545A JP6493522B2 JP 6493522 B2 JP6493522 B2 JP 6493522B2 JP 2017516545 A JP2017516545 A JP 2017516545A JP 2017516545 A JP2017516545 A JP 2017516545A JP 6493522 B2 JP6493522 B2 JP 6493522B2
Authority
JP
Japan
Prior art keywords
secret
calculation
data
request
intermediate device
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
JP2017516545A
Other languages
English (en)
Other versions
JPWO2016178291A1 (ja
Inventor
古川 潤
潤 古川
健吾 森
健吾 森
勇 寺西
勇 寺西
俊則 荒木
俊則 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2016178291A1 publication Critical patent/JPWO2016178291A1/ja
Application granted granted Critical
Publication of JP6493522B2 publication Critical patent/JP6493522B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/46Secure multiparty computation, e.g. millionaire problem

Landscapes

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

Description

本発明は、秘密計算データ利用システムと方法と装置並びにプログラムに関する。
以下、関連技術を説明する。
本発明者らを一部に含む発明者らは、情報漏洩対応のデータベースシステムをすでに提案している(例えば特許文献1参照)。図1は、特許文献1の開示の一つの側面の概略を例示するために、今回本発明者らが新たに作成した説明図である。以下に、その概要を説明する。なお、図1は、特許文献1の図面で開示された構成要素の名称や参照符号とは一致していない。
アプリケーションソフトウェア(プログラム)が稼働するアプリケーション装置110がデータベースシステム130に保存されているあるデータ(暗号化されて保存されている)に対して、ある加工を施して送付するように要求する。この要求は、中間装置(特許文献1ではユーザシステム)120において、データベースでの暗号プロトコルの適用方法とその適用結果の要求(問合せ文1)に変更され、データベースシステム130に送られる。この要求の結果は、例えば暗号文であるが、これを復号しただけでは、アプリケーション装置110が要求する加工済みデータとはならない場合がある。
データベース制御手段131は、中間装置120からの要求を受けて暗号プロトコル133を利用して、暗号文であるデータを加工した結果を、中間装置120に送付する。中間装置120は、受け取ったデータを復号し、必要に応じて、さらなる加工(問合せ文2に対応)を施したうえで、アプリケーション装置110に、データを送付する。
データベースシステム130では、暗号文を暗号プロトコル133により加工するため、アプリケーション装置110が要求するデータの暗号文を迅速に生成することができるとは限らない。また、データベース制御手段131において、データを暗号文のままフィルタリングしたり統計値を計算する等して、中間装置120に返送するデータ量(転送量)を減らすことができる場合がある。さらに中間装置120では、秘密鍵121を用いて暗号データを復号した平文を加工することにより、暗号文のままの処理ではできなかったデータ加工を行うことができる。その結果、アプリケーション装置110の望んだデータを送付することができる。
この様な手法により、アプリケーション装置110がデータベースシステム130に対して、あたかもデータが暗号化されていないかのように、データの要求を出した時に、データベースシステム130では、当該データが暗号化されており、かつ、暗号の鍵をデータベース130側に具備せずとも、アプリケーション装置110に対して所望するデータを渡すことができる。また、データベースシステム130から、中間装置120に転送されるデータ量を、要求に関係する暗号文を全て渡す場合と比べて、縮減可能としている。
情報セキュリティ技術として、秘密分散法(Secret Sharing Schemes)が広く知られている(非特許文献1、2参照)。例えばデータベースやメモリシステムに秘密分散法を用いて情報を複数に分散させることで、情報の漏洩の可能性やデータの破損等による元の情報の損失の可能性を低くするシステムが実現できる。
多項式補間による(k, n) 閾値秘密分散法は、以下の分散と復号からなる(非特許文献1、2等参照)。
<分散>秘密sを定数項a0とするランダムなk-1次多項式
F(x)=a0 + a1・x + a2・x^2 + . . . + ak-1・x^(k-1)
を生成する(a1〜ak-1は整数、^は冪乗演算子)。秘密sの保有者は、F(i)をシェアWiとし、識別子iのシェア保有者(装置)に送信する。なお、n個のシェア保有者には1〜nの識別子が割り当てられているものとする。
<復号>
k人のシェア保有者の(i, Wi)を集めることで、秘密s(=a0)が求められる。
qを素数とする有限素体Z/qZ上で(k,n)閾値法を実現する場合、多項式の係数a0〜ak-1もZ/qZ上で元であり、加減乗除もZ/qZ上で行われ、秘密s(=F(0))もZ/qZ上の元である。保有者iのシェアはF(i) mod qである。秘密s(=F(0) mod q)は、ラグランジュ補間を用いて、集合S={i1,…,ik}⊂{1,2,…,n}を選び、以下で与えられる。

Figure 0006493522
有限素体Z/qZ上で(k,n)閾値秘密分散法を実現する場合、k-1個のシェアを得たとしても、秘密sの情報を全く得ることができない。
なお、パラメタを三つとし(kは閾値:k個のシェアからは秘密sの情報を得ることができ、k−L個のシェアからは秘密sの情報を全く得ることはできず、l個(k-L+1≦l≦k-1)のシェアからは秘密sの何らかの情報を得ることができるようにした(k,L,n)閾値ランプ型秘密分散法等も知られている(例えば非特許文献2参照)。
データAが秘密分散されていると言った時、これはデータAを秘密分散して作られた複数のシェアのそれぞれが、装置集合のそれぞれに所持されている場合と、同じ状態である場合のことを言う。
なお、秘密計算(Secure Multiparty Computation)は、データを秘密分散したシェアを複数の装置に送り、複数の装置で秘密分散されたシェアの部分計算を繰り返し行うことで、データを秘匿したまま各種計算を行うことをいう。
例えば、マルチパーティプロトコルでは、各装置i(i=1〜n)は、該装置の秘密siを秘密分散したシェアw1 i,…, wi i,…, wn iを、各装置に分配する。各装置i(i=1〜n)は秘密siのシェア wi iのほか、他の装置j(j=1〜n, ただしj≠i)から装置iに分配されたシェアwi 1,…wi i-1, wi i+1,…, wi nを保持しており、関数h(w1 1,w2 1,…,w1 i, w2 i, …, wn n)=(v1,…,vi,… vn)を計算する。ここで、v1,…,vi,… vnは秘密情報s1,s2,…snの関数値v=g(s1,s2,…sn)のシェアである(非特許文献3等参照)。非特許文献3には、マルチパーティプロトコルを用いた関係代数演算の実行を可能とし、秘密分散法によって分散されたデータベース上でデータを1度も復号することなく全ての構造演算を可能とする構成が提案されている。
秘密分散されたデータAを秘密計算して秘密分散されたデータBを生成するとは、データAが秘密分散されている状態から、秘密計算が始まり、データBが秘密分散されている状態に終わることを言う。マルチパーティプロトコルでは、複数の参加者がそれぞれ秘密情報を有し、秘密情報を秘匿したまま、秘密情報の関数を計算する。
上記したように、あるデータが秘密分散されたとき、このシェアを一定数集めることで、元のデータを復元できる。あるいは、あるデータを秘密分散したときにできるシェアと同じシェアが何らかの方法で生成されても、これらのシェアを一定数集めることで、この対応するあるデータを復元することができる。
特許第5344109号公報
Shamir, Adi (1979), "How to share a secret", Communications of the ACM 22 (11): 612-613 土井洋, 秘密分散法とその応用について, 情報セキュリティ総合科学, 第4巻, 2012年11月 志村正法,宮崎邦彦,西出隆志,吉浦裕,秘密分散データベースの構造演算を可能にするマルチパーティプロトコルを用いた関係代数演算,情報処理学会論文誌,Vol.51, No.9, pp.1563-1578, 2010.
以下に関連技術の分析を与える。
データベースシステムと、秘密計算システムとの統合化を図る場合、秘密計算処理の計算量が大きく、その実用化は容易ではない。
本発明は、上記課題に鑑みて創案されたものであって、その目的は、データベースシステムと、秘密計算システムとの統合化にあたり、計算量、転送情報量の増大を抑止するか削減可能とするシステム、方法、装置、プログラムを提供することにある。
本発明の1つの側面によれば、アプリケーションが稼働するアプリケーション装置と、
複数の秘密計算装置と、前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う中間装置と、を備え、前記各秘密計算装置は、データを秘密分散したシェアに対して、前記中間装置から指示された前記演算を秘密計算で処理した結果のシェアを、前記中間装置に送信する手段を備え、
前記中間装置は、複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する手段と、
前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
前記復元したデータ、又は、
前記復元したデータと前記要求に含まれる少なくとも一部のデータに対して行う手段と、を備えた秘密計算データ利用システムが提供される。
本発明の他の側面によれば、
アプリケーションが稼働するアプリケーション装置からの要求を受けた中間装置が、前記要求に応じて、複数の秘密計算装置に対して演算の指示を行い、
複数の前記秘密計算装置は、データを秘密分散したシェアに対して、前記中間装置から指示された前記演算を秘密計算で処理し、前記秘密計算の処理結果のシェアを、前記中間装置に送信し、
前記中間装置では、
複数の前記秘密計算装置から受信した複数の前記シェアからデータを復元し、
前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
前記復元したデータ、又は、
前記復元したデータと前記要求に含まれる少なくとも一部のデータに対して行う秘密計算データ利用方法が提供される。
本発明のさらに他の側面によれば、アプリケーションが稼働するアプリケーション装置と、データを秘密分散したシェアに対して中間装置から指示された演算を秘密計算で処理し、処理結果のシェアを前記中間装置に送信する複数の秘密計算装置と、の間に配置される前記中間装置であって、
前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う第1の手段と、
複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する第2の手段と、
前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
前記復元したデータ、又は、
前記復元したデータと前記要求に含まれる少なくとも一部のデータに対して行う第3の手段と、
を備えた中間装置が提供される。
本発明のさらに他の側面によれば、アプリケーションが稼働するアプリケーション装置と、データを秘密分散したシェアに対して中間装置から指示された演算を秘密計算で処理し、処理結果のシェアを前記中間装置に送信する複数の秘密計算装置と、の間に配置される前記中間装置を構成するコンピュータに、
前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う処理と、
複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する処理と、
前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
前記復元したデータ、又は、
前記復元したデータと前記要求に含まれる少なくとも一部のデータに対して行う処理と、を実行させるプログラムが提供される。本発明のさらに他の側面によれば、該プログラムを記録したコンピュータ読み出し可能な、半導体メモリや磁気/光記録媒体等の記録媒体(non-transitory computer readable recording medium)が提供される。
本発明のさらに他の側面によれば、アプリケーションが稼働するアプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して秘密計算処理を指示する中間装置に接続された秘密計算装置であって、
前記中間装置から指示された前記要求の演算の一部の演算を受け取る手段と、
前記一部の演算について、前記複数の秘密計算装置間で保持するシェアを用いて秘密計算を行う手段と、
秘密計算結果であるシェアを前記中間装置に返す手段と、
を備え、前記中間装置で前記シェアから復元したデータに対して前記要求の演算の残りの演算処理を行わせる秘密計算装置が提供される。
本発明のさらに他の側面によれば、アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して秘密計算処理を指示する中間装置に接続された秘密計算装置を構成するコンピュータに、
前記中間装置から指示された前記要求の演算の一部の演算を受け取る処理と、
前記一部の演算について、前記複数の秘密計算装置間で保持するシェアを用いて秘密計算を行う処理と、
秘密計算結果であるシェアを前記中間装置に返す処理と、を実行させるプログラムが提供される。本発明のさらに他の側面によれば、該プログラムを記録したコンピュータ読み出し可能な、半導体メモリや磁気/光記録媒体等の記録媒体(non-transitory computer readable recording medium)が提供される。
本発明によれば、データベースと秘密計算方式を統合化した場合の計算量、通信量、転送する情報量の増大を抑止するか削減可能としている。
関連技術(特許文献1)を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態の中間装置を説明する図である。 本発明の例示的な実施形態の秘密計算装置を説明する図である。
本発明の前提となる関連発明について説明する。図1等のデータベースシステムを、複数の秘密計算装置で構成し、データベースに保存されるデータを、複数の秘密計算装置に秘密分散して保存し、アプリケーション装置110からのデータベースシステムへの問合せを、中間装置に対して行うシステムについて検討する。この場合、図1の中間装置120は、データを分散してシェアを生成して複数の秘密計算装置に秘密分散させる処理と、複数の秘密計算装置で秘密計算された計算結果のシェアを集めてデータを復元する処理を行う。
中間装置は、アプリケーション装置からデータベースに対する要求を受けると、秘密計算装置の集合に対して、秘密計算装置の集合に秘密分散して保存されているデータ(シェア)から、要求された加工を加えたデータが秘密分散されたものを秘密計算することを要求する。例えば、各秘密計算装置には、それぞれ複数の秘密情報SA、SBのシェアが与えられているものとすると、j番目の秘密計算装置が持つ秘密情報SA、SBのシェアをSA,j、SB,jと表すと、SA,j + SB,j mod q (qは素数)は、SA+SB mod qのシェアとなっている。したがって、秘密情報を秘匿したまま(秘密情報を復元することなく)、秘密情報の関数f(SA、SB)(fは例えば加算演算)を計算することができる。
中間装置は、秘密計算装置の集合に対して、秘密計算装置の集合による秘密計算結果であって、秘密計算装置の集合に分散されて保持されているシェアを、中間装置に返すことを、要求する。
中間装置は、秘密計算装置の集合から得た複数のシェアから、アプリケーション装置が要求したデータを復元して、当該アプリケーション装置に送る。
上記したシステムでは、データベースが、複数の秘密計算装置により構成されており、各秘密計算装置の管理者は、保存されているデータや、要求されてアプリケーションに返答したデータがなんであるか等に関する情報を得ることができない。これは、秘密計算装置がデータを漏洩することができないことを意味している。
しかしながら、上記システムにおいては、要求されたデータの加工を秘密分散で実行できるが、処理内容は、その性能に大きく影響する。
例えば、
・データ形式の変換、
・データの順序の並び替え、
・並び替えの結果
に基づく値の導出、
・平均値計算における実数の割り算処理、
等を、複数の秘密計算装置間で秘密計算する場合、計算量が大きい。このため、実用化が困難である。
以下で開示する形態では、計算の効率化を図り、実用化を可能としたものである。
<例示的な実施形態>
図2は、本発明の例示的な実施形態の一例を説明する図である。図2を参照すると、このシステムは、例えば、データベースへのアクセス要求を発行するアプリケーションソフトウェアが稼働するアプリケーション装置10と、秘密分散されたデータ(シェア)をそれぞれデータベース30〜30に格納し、当該データ(シェア)を用いて秘密計算する秘密計算装置40〜40と、アプリケーション装置10と秘密計算装置40〜40との間に配置された中間装置20と、を備える。
特に制限されないが、データベース30〜30には、データをn個に分割したシェアが格納される。データベース30〜30のカラム(列)のカラム名や、ロウ(行)数等のデータ構造は同一である。
アプリケーション装置10からのデータベースアクセス要求(コマンド)は、中間装置20を経て、秘密計算装置40〜40に伝達される。
秘密計算装置40〜40からの応答は中間装置20を経てアプリケーション装置10に返される。
アプリケーション装置10からの要求を中間装置20が受け取ると、中間装置20では、例えば以下の処理が行われる。
・中間装置20は、当該要求に含まれるデータのみを用いて実行可能な加工(演算)がある場合、当該加工(演算)を行う。
・中間装置20は、秘密計算装置40〜40での加工(秘密計算)に必要なデータを秘密分散し、秘密計算装置40〜40にそれぞれ該当するシェアを渡す。中間装置20では、合わせて、加工(演算)の指示を秘密計算装置40〜40に対して発行する。その際、一部のデータは、中間装置20にも保存しておくようにしてもよい。
中間装置20から加工(演算)の指示と、前記シェアを受け取った秘密計算装置40〜40は、データベース30〜30nに秘密分散されたデータと、前記シェアを用いて秘密計算したシェアを生成する。(k,n)閾値秘密分散法の場合、n個の秘密計算装置40〜40のうちk個(k<n)の秘密計算装置が、秘密計算の結果のシェアを中間装置20に送る。なお、(n,n)方式の秘密分散法の場合、元の情報を復元するには、全てのシェアが必要であるため、n個の秘密計算装置40〜40の秘密計算の結果のシェアが中間装置20に送られる。以下では、n個の秘密計算装置40〜40のうちの少なくともk個(ただし、k≦n)の秘密計算装置を、簡単のため、秘密計算装置40の集合ともいう。
中間装置20は、秘密計算装置40の集合から送られたシェアから、秘密計算装置40の集合で秘密計算された結果(データ)を復元(reconstruct)する。
中間装置20は、復元したデータを用いて必要な演算を行ってアプリケーション装置10が要求しているデータを生成する。なお、中間装置20が、復元したデータに対して行う演算は、アプリケーション装置10からの当該要求に含まれる演算のうちの一部であり、秘密計算装置40〜40による秘密計算は行わず、復元データに対して中間装置20で行うものと判断して、当該要求の演算から分離した部分演算に対応する。なお、この部分演算において、中間装置20は、復元データと中間装置20に保存されたデータとを用いて演算を行うようにしてもよい。
中間装置20は、生成したデータを、アプリケーション装置10からの当該要求に対する応答として、アプリケーション装置10に送る。
例示的な実施形態によれば、アプリケーション装置10から要求(データを含む場合もある)されたデータ処理の一部が、中間装置20で実行される。
アプリケーション装置10からの要求に含まれる演算が、秘密計算装置40〜40で秘密計算することが苦手とされる演算、例えば、
(A)順序の入れ替え、
(B)データ形式の変換(データの値に応じたデータの置き換え等も含む)、
(C)平均値計算(総和を総数で割る処理)、
(D)順序付け、
(E)文字列の結合、
等のうちの少なくとも一つの演算処理を含む場合、当該演算処理を分離し、これらの演算処理は、秘密計算装置40〜40で秘密計算処理を行わず、中間装置20側で処理する。ただし、秘密計算装置40〜40で秘密計算することが苦手とされる演算は、上記演算に制限されるものでないことは勿論である。
なお、図2において、秘密計算装置40〜40に接続するデータベース30〜30は、1つの記憶装置に実装してもよいことは勿論である。この場合、例えば当該記憶装置をパーティション化し、n個のパーティションにデータベース30〜30をそれぞれ実装し、一つの秘密計算装置に対応したデータベースが、他からアクセスができないようにセキュリティ管理するようにしてもよい。
<中間装置>
図3は、上記した例示的な実施形態における中間装置20の一例を説明する図である。特に制限されるものではないが、以下では、(k, n) 閾値秘密分散法を用いる。
図3を参照すると、中間装置20は、要求解析部201、演算分離部202、シェア生成部203、演算指示部204、復元部205、部分演算処理部206、アプリケーション装置10からの要求(コマンド)を受信する受信部207、アプリケーション装置10に対して要求(コマンド)の応答を送信する送信部208、秘密計算装置40〜40に対してシェア1〜nを送信する送信部209、及び、秘密計算装置40〜40で秘密計算されたシェア1〜nのうち少なくともk個のシェア1〜k(ただし、k<n)を受信する受信部210を備えている。
要求解析部201は、受信部207で受信したアプリケーション装置10からの要求(コマンド)を解析し、コマンドから、演算(関数)とデータを抽出・分離し、演算(関数)を演算分離部202に供給し、秘密分散させて、秘密計算装置40〜40に送信するデータを、シェア生成部203に供給する。要求解析部201でコマンドを解析した結果、中間装置20で処理するデータについては、中間装置20に保持する。
演算分離部202では、要求解析部201から供給されたコマンドに含まれる演算が、例えば複合演算の場合、秘密計算装置40〜40による秘密計算が苦手とされる演算1(関数1)(例えば上記(A)乃至(E)等)と、例えば和の演算等、秘密計算装置40〜40による秘密計算が比較的容易な演算2(関数2)と、に分離する。図3では、単に、説明の簡単のため、要求に含まれる演算を演算1と演算2に分離した例を説明したが、分離する演算の個数は二つに制限されるものでないことは勿論である。
なお、アプリケーション装置10からの要求(コマンド)が、アプリケーション装置10からのデータを、秘密分散したシェアをデータベース30〜30に格納する処理の場合(複合演算でない場合)、秘密計算装置40〜40での秘密計算は行われない。このため、演算1は空(null)、演算2は、秘密計算の演算ではなく、データベース30〜30の指定テーブルの指定列等にシェアをそれぞれ格納する挿入コマンドとなる。
また、アプリケーション装置10からの要求(コマンド)が、データベースからのデータの読み出し(例えば指定テーブルの指定列、指定行のデータの読み出し等)の場合、秘密計算装置40〜40で秘密計算は行われない。このため、演算1は空(null)、演算2は、データベース30〜30の指定テーブルの指定列、指定行等からのシェアを読み出すコマンドとなる。
シェア生成部203は、要求解析部201からのデータ(秘密分散対象のデータ)を受け、当該データを分割してn個のシェア1〜nを生成し、送信部209を介して秘密計算装置40〜40に渡す。
演算指示部204は、演算分離部202で分離された演算2を、送信部209を介して、秘密計算装置40〜40に通知する。演算2は、秘密計算装置40〜40で実行される秘密計算で演算(関数)を含む。
あるいは、演算分離部202に関連して説明したように、演算指示部204から秘密計算装置40〜40に通知される演算2は、秘密計算装置40〜40で秘密計算せず、データベースへのシェアの書込み、又は、シェアの読み出しという演算であってもよい。
受信部210は、秘密計算装置40〜40のうち少なくともk個の秘密計算装置40からk個のシェア1〜kを受信する。
復元部205は、k個のシェア1〜kから、データを復元する。
部分演算処理部206は、復元部205で復元されたデータ(1つ又は複数のデータ)に対して、演算分離部202で分離された演算1を施す。部分演算処理部206は、演算結果を、アプリケーション装置10からの上記要求に対する応答として、送信部208からアプリケーション装置10に送信する。
なお、要求解析部201で抽出されたデータの一部が、部分演算処理部206での部分演算処理として用いられる場合、部分演算処理部206に転送して保持し、復元部205で復元された1つ又は複数のデータと、保持したデータの一部を用いて、演算1を施すようにしてもよい。
図3の各部201〜210の一部又は全部は、中間装置20を構成するコンピュータで実行されるプログラムによりその処理・機能を実現するようにしてもよい。
なお、受信部207、送信部208はアプリケーション装置10との通信を行う第1の通信部を構成し、受信部210、送信部209は、秘密計算装置40〜40との通信を行う第2の通信部を構成している。アプリケーション装置10と、秘密計算装置40〜40が共通のネットワークに接続されている場合、第1、第2の通信部を共通の通信部で構成し、それぞれを個別のポートに割り当てるようにしてもよい。
<秘密計算装置>
図4は、上記した例示的な実施形態における秘密計算装置40〜40の一例を説明する図である。秘密計算装置40〜40は互いに同一の構成とされ、図4には、秘密計算装置40の構成が模式的に示されている。図4を参照すると、秘密計算装置40は、接続するデータベース30にアクセスするデータべースアクセス部401と、中間装置20から秘密分散されたシェア1を受けとるシェア受信部402と、中間装置20からの演算の指示を受け取り、秘密計算処理部404に設定する演算指示受信部403と、データベース30に保持されるシェア、中間装置20から秘密分散されたシェア1、必要に応じて他の秘密計算装置40〜40のシェアを用いて、演算指示受信部403で受信した演算指示に関する秘密計算を行う秘密計算処理部404と、秘密計算結果であるシェアを、中間装置20に返すシェア送信部405を備えている。秘密計算装置40の各部401〜405の一部又は全ての処理・機能はコンピュータで実行されるプログラムで実現するようにしてもよい。
なお、アプリケーション装置10を、通信端末等で構成し、中間装置20をプロキシ装置として構成してもよい。中間装置20をサーバ仮想化技術を用いてサーバ上に仮想化して構成してもよい。
秘密計算装置40〜40をサーバ上の仮想マシン上にそれぞれ実装してもよいことは勿論である。
以下では、いくつかの例を説明する。なお、以下の例で、システムの基本構成は図3に示したものと同様とされる。
<実施形態1>
アプリケーション装置10が、あるデータ列を辞書順序に整列して返すことを要求する。この要求は中間装置20に伝えられる。
アプリケーション装置10が要求したデータ列(複数のデータ)を生成するための各データは、それぞれ、例えば中間装置20において、複数のシェアに秘密分散され、それぞれのシェアが、秘密計算装置40〜40の各々に保存されている。
中間装置20は、アプリケーション装置10からの要求を受けると、要求を構成する文を文法解析して、データ列の各データの秘密分散は、秘密計算する処理であり、辞書順序での整列は、中間装置20で実行する処理であると判断する。
中間装置20は、秘密計算装置401〜40にそれぞれ接続されたデータベース301〜30に保存されているデータ(秘密分散されたデータ)から、当該データ列を秘密計算することを、秘密計算装置401〜40に要求する。
ここで、データ列の代わりに、当該データ列をランダムにその順番を入れ替えた列を秘密計算してもよい。
秘密計算装置401〜40は、それぞれ、データ列を秘密計算し、秘密計算結果であるシェアを、中間装置20に送付する。
中間装置20は、秘密計算装置40の集合から受け取った複数のシェアから、前記データ列を復元する。
そして、中間装置20は、復元したデータ列に対して、辞書順序に整列し、アプリケーション装置10から要求されたデータ列を生成する。
中間装置20は、辞書順序に整列した前記データ列を、アプリケーション装置10に送付する。
秘密分散されたデータの辞書順序での整列を、秘密計算装置401〜40で秘密計算する処理は、多大な計算量を必要とする。
これに対して、本実施形態によれば、復元してから辞書順序に整列させる処理は、計算量も大きくはなく、容易である。
なお、秘密計算装置401〜40から中間装置20に送られるデータ量は、整列していようとも整列していなくとも同じである。
さらに整列していないデータ列を、中間装置20に開示しても、データ列を整列させてから開示する場合と比べて、中間装置20に開示される情報量は、さほど大きくはならない。
また、データ列をランダムにその順番を入れ替えてから中間装置20に開示する場合も、中間装置20に開示される情報量は、さほど大きくなく、ランダムに順番を入れ替える処理は、整列させる処理と比べて、処理は大きくない。
中間装置20では、演算の一部を行うことにより、計算量、通信量、中間装置20に開示する情報量のいずれも、削減、あるいは同等に保つことができる。
ただし、あるデータ列を使って整列した他の列を要求する様な場合は、最初のデータ列を、追加的に、中間装置20に送る必要があるため、データ量は増加する。
<具体例1>
アプリケーション装置10からのSQL(Structured Query Language)言語によるデータベースへの問い合わせ:
select column-X from table-A order by column-X
に関して、「order by」が、上記した「整列の要求」に対応する。
この問い合わせ(SQLコマンド)を受けた中間装置20では、
・秘密計算装置401〜40により、データべース30〜30をアクセスして、
「select column-X from table-A」を処理し、
・中間装置20で、「カラムX(column-X)の順序を整列」(「order by column-X」)を処理する、
と判断する。
中間装置20は、秘密計算装置401〜40に対して、前半の処理(select column-X from table-A)のみ要求する。
後半の処理(「order by column-X」)を秘密計算装置401〜40で実行するという手間をかけなくとも、中間装置20で実行することで、アプリケーション装置10は全ての処理を一括して中間装置20に要求することができる。
なお、SQL言語における順序の整列は、「order by 句」だけでなく、「group by 句」(同列内の値の中で同じ値を持つデータごとにグループ化する)等にも適用可能である。この場合にも、順序の整列を中間装置20に任せることができる場合がある。
<実施形態2>
アプリケーション装置10が、あるデータからそのデータ形式を変更してできた結果のデータを要求する。この要求は、中間装置20に伝えられる。当該データは秘密分散されて、それぞれのシェアが、秘密計算装置401〜40のそれぞれに保存されているとする。
中間装置20は、前記要求を受けると、要求を構成する文を文法解析し、
・当該データの取り出し処理を、秘密計算装置401〜40に依頼し、
・データ形式の変換は、中間装置20で処理する、
と判断する。
中間装置20は、秘密分散されている保存データのシェアを、秘密計算装置401〜40に要求する。
秘密計算装置40の集合は、秘密分散されている保存データのシェアを、中間装置20に送付する。
中間装置20は、秘密計算装置40の集合から受け取ったシェアから、前記あるデータを復元し、そのデータ形式を変更して、アプリケーション装置10から要求されたデータを生成する。
中間装置20は生成したデータをアプリケーション装置10に送付する。
<具体例2>
例えば、アプリケーション装置10からのSQL言語によるデータベースへの問い合わせ:
select ASCII(column-X) from table-A
について、「ASCII()」が「データ形式の変換」の要求に対応する。
この場合、当該問い合わせ(SQLコマンド)を受けた中間装置20では、
・秘密計算装置401〜40により、データべース30〜30をアクセスして、
「select column-X from table-A」を処理し、
・中間装置20で、「ASCII(column-X)」を処理する、
と判断する。
中間装置20は、秘密計算装置401〜40に対して、前半の処理(「select column-X from table-A」)のみ要求して、後半の処理(「ASCII(column-X)」)は、秘密計算装置401〜40で実行するという手間をかけなくとも、中間装置20で実行することできる。なお、アプリケーション装置10は、これらの処理を一括して一つのSQLコマンドで中間装置20に要求する。
本実施形態によれば、以下の作用効果を奏する。
秘密分散されたデータのデータ形式を変更する処理は大きな計算を必要とするが、復元してからデータ形式を変換する処理は、容易である。
秘密計算装置40の集合から中間装置20に送られるデータ量は、データ形式の変換前でも後でもあまり変わらないことが多い。
データ形式を変換する前のデータを中間装置20に開示しても、変換してから開示するのに比べて、一対一の変換であり、且つ、そのルールが開示されていれば、中間装置20に開示される情報量は変わらない。
本実施形態によれば、中間装置20でアプリケーション装置10から要求されるデータ処理・演算の一部である変換処理を行うことにより、計算量、通信量、中間装置20に開示する情報量のいずれも削減、あるいは同等に保つことができる。
<実施形態3>
アプリケーション装置10があるデータを示し、秘密計算装置401〜40に秘密分散されたあるテーブル(データベースの指定テーブル)から、前記提示されたデータの形式を変換してできた値に一致する値を持つ行を選んだ結果を要求する。この要求は中間装置20に伝えられる。
アプリケーション装置10から当該要求を受けると、中間装置20は、提示されたデータの形式を変換し、この変換後の値を秘密分散したシェアを、秘密計算装置401〜40に送信する。
中間装置20は、変換後の値が含まれている行を、前記テーブルから秘密計算により選んで送ることを、秘密計算装置401〜40に要求する。
秘密計算装置40の集合は、秘密分散された前記変換後の値のシェアと、前記秘密分散されたテーブルを用いて、秘密計算により前記テーブルから行を選び出し、結果のシェアを中間装置20に送付する。
中間装置20は、前記秘密計算装置40の集合から受け取った複数のシェアから抜き出された行からなるテーブルのデータを復元し、アプリケーション装置10から要求されたデータを生成する。中間装置20は、生成したデータをアプリケーション装置10に送付する。
<具体例3>
アプリケーション装置10からのSQL言語によるデータベースへの問い合わせ:
select * from table-A where ASCII(value)=column-X;
について、「ASCII()」 が「データ形式の変換」の要求に対応する。
この場合、
・当該問い合わせ(SQLコマンド)を受けた中間装置20で、「V=ASCII(value)」の演算を処理し、
・秘密計算装置401〜40により、データべース30〜30をアクセスして、
「select * from table-A where V=column-X」を処理する、
ことに対応する。
中間装置20は、秘密計算装置401〜40に対して、後半の処理(「select * from table-A where V=column-X」)のみ要求して、前半の処理(V=ASCII(value))を秘密計算装置40の集合で実行するという手間をかけなくとも、中間装置20で実行することができる。アプリケーション装置10は、これらの処理を一括して、一つのSQLコマンドで中間装置20に要求することができる。
本実施形態によれば、以下の作用効果を奏する。
秘密分散されたデータのデータ形式を変更する処理は大きな計算を必要とするが、秘密分散する前にデータ形式を変換する処理は、容易である。
また、秘密計算装置40の集合から中間装置20に送られるデータ量は、提示されたデータ形式の変換を中間装置20で行っても、あまり変わらないことが多い。
中間装置20がデータ形式を変換する処理は、中間装置20に開示される情報量を変えない。
中間装置20で、アプリケーション装置10からの要求のデータ処理・演算の前半の変換処理を行うことにより、計算量、通信量、中間装置20に開示する情報量のいずれも削減、あるいは同等に保つことができる。
<実施形態4>
アプリケーション装置10があるデータ列の要素の平均値を要求する。この要求は中間装置20に伝えられる。前記データ列を生成するためのデータは複数のシェアに秘密分散されて、それぞれのシェアは、秘密計算装置401〜40のそれぞれに保存されているものとする。
中間装置20は、前記要求を受けると、要求を構成する文を文法解析し、
・データ列の要素の総和を取る処理を秘密計算する処理とし、
・データ列の要素数でこの総和を割る処理を中間装置20で行う処理、
と判断する。
中間装置20は、前記データ列の要素の総和と、データ列の要素数を秘密計算することを、秘密計算装置401〜40に要求する。
秘密計算装置401〜40は、前記データ列の総和を秘密計算しそのシェアを中間装置20に送付する。
秘密計算装置401〜40は、データ列の要素数を計算し、中間装置20に送付する。
中間装置20は、秘密計算装置40の集合から受け取ったシェアから、前記データ列の要素の総和を計算する。
中間装置20は、この総和をデータ列の要素数で割ることで、データ列の平均値を計算し、アプリケーション装置10に送付する。
<具体例4>
アプリケーション装置10からのSQL言語によるデータベースへの問い合わせ:
「select AVG(column-X) from table-A」
について、「AVG(column-X) 」が「平均」の要求に対応する。
この場合、当該問い合わせ(SQLコマンド)を受けた中間装置20では、
・秘密計算装置401〜40により、データべース30〜30をアクセスして、
「select SUM(column-X) as S from table-A」(指定したカラムXの合計値をS)と、
「select COUNT(column-X) as N from table-A」(指定したカラムXのレコード数をN)と、
を処理し、
・中間装置20で、秘密計算装置40の集合から送信されたSのシェアとNのシェアとから、それぞれ、SとNを復元して、S/Nを計算する、
と判断する。
中間装置20は、秘密計算装置401〜40に対して、前半の処理(select SUM、select COUNT)のみ要求して、後半の処理(S/N)は自身で実行するという手間をかけなくとも、全ての処理を一括して要求することができている。
本実施形態によれば、以下の作用効果を奏する。
秘密分散されたデータ列の平均値を秘密計算する処理は大きな計算を必要とするが、総和を計算する処理は、容易である。
秘密計算装置40の集合から中間装置20に送られるデータ量は、総和と要素数の対と、平均値とではあまり変わらない。
データ数は大きな秘密でない場合が多い。データベースにこれを秘匿するのは難しく、隠すべき情報でない場合も多い。
中間装置20で、アプリケーション装置10からの要求のデータ処理・演算の一部である平均演算を行うことにより、計算量、通信量、中間装置20に開示する情報量のいずれも削減、あるいは同等に保つことができる。
なお、上記実施形態において、データベース30〜30に、テーブル名、列名等、データベースのメタデータを秘密分散したシェアを格納する構成としてもよい。この場合、SQL文(select column-X from table-A)を受けた中間装置は、例えばテーブル名(table-A)等の検索文字列を秘密分散したシェアを秘密計算装置40〜40に送信する。
以上説明したように、上記実施形態によれば、複数の装置の集合にデータを秘密分散して保存し、各装置にデータを隠ぺいしたままアプリケーション装置10の要求した任意の処理を実行することで、データの漏洩を防ぎつつもその活用を図ることができる。
アプリケーション装置10からの処理要求において秘密計算の性能限界を考慮しなくとも、中間装置20が秘密計算の性能を落とす処理を自動的に受け持つことで、高速な秘密計算による強固なデータ漏洩対策を伴ったデータ活用が実現される。
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
10、110 アプリーション装置
20、120 中間装置
30〜30 データベース
40〜40 秘密計算装置
121 秘密鍵
130 データベースシステム
131 データベース制御手段
132 データベース
133 暗号プロトコル
201 要求解析部
202 演算分離部
203 シェア生成部
204 演算指示部
205 復元部
206 部分演算処理部
207、210 受信部
208、209 送信部
401 データベースアクセス部
402 シェア受信部
403 演算指示受信部
404 秘密計算処理部
405 シェア送信部

Claims (20)

  1. アプリケーションが稼働するアプリケーション装置と、
    複数の秘密計算装置と、
    前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う中間装置と、
    を備え、
    前記各秘密計算装置は、データを秘密分散したシェアに対して、前記中間装置から指示された前記演算を秘密計算で処理した結果のシェアを、前記中間装置に送信する手段を備え、
    前記中間装置は、
    前記複数の秘密計算装置での秘密計算処理に必要なデータのシェアを生成し、前記複数の秘密計算装置に送信する手段と、
    複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する手段と、
    前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して行う手段と、
    を備えた、ことを特徴とする秘密計算データ利用システム。
  2. 前記中間装置は、
    前記アプリケーション装置からの前記要求を解析する手段と、
    前記要求の演算から、前記複数の秘密計算装置で秘密計算処理される演算を抽出し、前記複数の秘密計算装置に対して前記抽出した演算を指示する手段と、
    を備え、
    前記要求の演算から、前記複数の秘密計算装置で秘密計算処理される前記演算以外の演算を分離し、
    前記分離した演算を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して実行する、ことを特徴とする請求項1に記載の秘密計算データ利用システム。
  3. 前記複数の秘密計算装置は、データを秘密分散したシェアを保持する複数のデータベースにそれぞれ接続され、
    前記中間装置は、前記アプリケーション装置からの要求としてデータベース操作コマンドを受け、
    前記複数の秘密計算装置は、前記中間装置から、前記データベース操作コマンドに応じた演算指示を少なくとも受け、
    前記複数のデータベースに保持されるシェアに対して、前記演算指示に対応した秘密計算処理を行う、ことを特徴とする請求項1又は2に記載の秘密計算データ利用システム。
  4. 前記中間装置は、前記データベース操作コマンドを解析し、
    前記データベース操作コマンドが、
    順序の入れ替え、
    データ形式の変換、
    所定の算術計算、
    順序付け、
    文字列の結合、
    のうちいずれか一つ又は複数個の組み合わせからなる演算処理を含む場合、
    前記データベース操作コマンドの演算から、前記演算処理を除いた演算の実行を前記複数の秘密計算装置に対して指示し、
    前記演算処理を、前記中間装置で実行する、ことを特徴とする請求項に記載の秘密計算データ利用システム。
  5. 前記中間装置は、前記データベース操作コマンドを解析し、
    前記データベースのデータ又はメタデータの少なくとも一方を秘密分散したシェアを生成し、前記複数の秘密計算装置に送信する、ことを特徴とする請求項又はに記載の秘密計算データ利用システム。
  6. アプリケーションが稼働するアプリケーション装置からの要求を受けた中間装置が、前記要求に応じて、複数の秘密計算装置に対して演算の指示を行い、前記中間装置は、前記複数の秘密計算装置での秘密計算に必要なデータのシェアを生成して、前記複数の秘密計算装置に送信し
    複数の前記秘密計算装置は、データを秘密分散した前記シェアに対して、前記中間装置から指示された前記演算を秘密計算で処理し、前記秘密計算の処理結果のシェアを、前記中間装置に送信し、
    前記中間装置では、
    複数の前記秘密計算装置から受信した複数の前記シェアからデータを復元し、
    前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して行う、ことを特徴とする秘密計算データ利用方法。
  7. 前記中間装置は、
    前記要求を解析し、
    前記要求の演算から、前記複数の秘密計算装置で秘密計算処理される演算を抽出し、
    前記複数の秘密計算装置に対して、前記抽出した演算を指示し、
    前記要求の演算から、前記秘密計算処理される前記演算を除いた演算を分離し、
    前記分離した演算を、
    前記復元したデータ、又は、
    前記復元したデータと、前記要求に含まれる少なくとも一部のデータ、
    に対して実行する、ことを特徴とする請求項に記載の秘密計算データ利用方法。
  8. 前記複数の秘密計算装置は、データを秘密分散したシェアを保持する複数のデータベースに接続され、
    前記中間装置は、前記アプリケーション装置からの要求として、データベース操作コマンドを受け、
    前記複数の秘密計算装置は、前記中間装置から前記データベース操作コマンドに応じた演算指示を少なくとも受け、
    前記複数のデータベースに保持されるシェアに対して、前記演算指示に対応した秘密計算処理を行う、ことを特徴とする請求項6又は7に記載の秘密計算データ利用方法。
  9. 前記中間装置は、前記データベース操作コマンドを解析し、前記データベース操作コマンドが、
    順序の入れ替え、
    データ形式の変換、
    所定の算術計算、
    順序付け、
    文字列の結合、
    のうちいずれか一つ又は複数個の組み合わせからなる演算処理を含む場合、
    前記データベース操作コマンドの演算のうち、前記演算処理を除いた演算の実行を前記複数の秘密計算装置に指示し、
    前記演算処理を前記中間装置で実行する、ことを特徴とする請求項に記載の秘密計算データ利用方法。
  10. 前記中間装置は、前記データベース操作コマンドを解析し、
    前記データベースのデータ又はメタデータの少なくとも一方を秘密分散したシェアを生成し、前記複数の秘密計算装置に送信する、ことを特徴とする請求項又はに記載の秘密計算データ利用方法。
  11. アプリケーションが稼働するアプリケーション装置と、
    データを秘密分散したシェアに対して中間装置から指示された演算を秘密計算で処理し、処理結果のシェアを前記中間装置に送信する複数の秘密計算装置と、
    の間に配置される前記中間装置であって、
    前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う第1の手段と、
    複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する第2の手段と、
    前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータに対して行う第3の手段と、
    前記複数の秘密計算装置での秘密計算に必要なデータのシェアを生成して、前記複数の秘密計算装置に送信する手段と、
    を備えた、ことを特徴とする中間装置。
  12. 前記アプリケーション装置からの前記要求を解析し、前記要求の演算を抽出する第4の手段と、
    抽出された前記要求の演算から、前記複数の秘密計算装置で秘密計算処理される演算と、前記秘密計算処理される前記演算以外の演算とに分離する第5の手段と、
    を備え、
    前記第1の手段は、前記秘密計算処理される演算を、前記複数の秘密計算装置に対して指示し、
    前記第3の手段は、
    前記秘密計算処理される演算以外の演算処理を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して実行する、ことを特徴とする請求項11に記載の中間装置。
  13. 前記複数の秘密計算装置は、データを秘密分散したシェアを保持する複数のデータベースに接続され、
    前記中間装置は、前記アプリケーション装置からの要求として、データベース操作コマンドを受け、
    前記複数の秘密計算装置は、前記中間装置から前記データベース操作コマンドに応じた演算指示を少なくとも受け、
    前記複数のデータベースに保持されるシェアに対して前記演算指示に対応した秘密計算処理を行う、ことを特徴とする請求項11又は12に記載の中間装置。
  14. 前記中間装置は、前記データベース操作コマンドを解析し、
    前記データベース操作コマンドが、
    順序の入れ替え、
    データ形式の変換、
    所定の算術計算、
    順序付け、
    文字列の結合、
    のうちいずれか一つ又は複数個の組み合わせからなる演算処理を含む場合、
    前記データベース操作コマンドの演算のうち、前記演算処理を除いた演算の実行を前記複数の秘密計算装置に指示し、
    前記演算処理を前記中間装置で実行する、ことを特徴とする請求項13に記載の中間装置。
  15. 前記データベース操作コマンドを解析し、
    前記データベースのデータ又はメタデータの少なくとも一方を秘密分散したシェアを生成し、前記複数の秘密計算装置に送信する、ことを特徴とする請求項13又は14に記載の中間装置。
  16. アプリケーションが稼働するアプリケーション装置と、
    データを秘密分散したシェアに対して中間装置から指示された演算を秘密計算で処理し、処理結果のシェアを前記中間装置に送信する複数の秘密計算装置と、
    の間に配置される前記中間装置を構成するコンピュータに、
    前記アプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して演算の指示を行う処理と、
    前記複数の秘密計算装置での秘密計算に必要なデータのシェアを生成して、前記複数の秘密計算装置に送信する処理と、
    複数の前記秘密計算装置から送信された複数の前記シェアからデータを復元する処理と、
    前記アプリケーション装置からの前記要求の演算の一部の演算処理を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して行う処理と、
    を実行させるプログラム。
  17. 前記アプリケーション装置からの前記要求を解析し、前記要求の演算を抽出する処理と、
    抽出された前記要求の演算から、前記複数の秘密計算装置で秘密計算処理される演算と、前記秘密計算処理される演算以外の演算とに分離する処理と、
    前記秘密計算処理される演算を、前記複数の秘密計算装置に対して指示する処理と、
    第3の処理では、前記秘密計算処理される演算以外の演算を、
    前記復元したデータ、又は、
    前記復元したデータと前記要求に含まれる少なくとも一部のデータ、
    に対して実行する処理を、前記コンピュータに実行させる請求項16に記載のプログラム。
  18. 前記アプリケーション装置からの前記要求としてデータベース操作コマンドを受け、前記データベース操作コマンドが、
    順序の入れ替え、
    データ形式の変換、
    所定の算術計算、
    順序付け、
    文字列の結合、
    のうちいずれか一つ又は複数個の組み合わせからなる演算処理を含む場合、
    前記データベース操作コマンドの演算のうち、前記演算処理を除いた演算の実行を前記複数の秘密計算装置に指示し、
    前記演算処理を前記中間装置で実行する処理を、前記コンピュータに実行させる請求項16又は17に記載のプログラム。
  19. 前記データベース操作コマンドを解析し、
    データベースのデータ又はメタデータの少なくとも一方を秘密分散したシェアを生成し、前記複数の秘密計算装置に送信する処理を、前記コンピュータに実行させる請求項18に記載のプログラム。
  20. アプリケーションが稼働するアプリケーション装置からの要求を受け、前記要求に応じて、前記複数の秘密計算装置に対して秘密計算処理を指示する中間装置に接続された秘密計算装置であって、
    前記中間装置から指示された前記要求の演算の一部の演算を受け取る手段と、
    前記中間装置で生成され前記複数の秘密計算装置宛に送信された、前記複数の秘密計算装置での秘密計算に必要なデータのシェアを受信し保持する処理と、
    前記一部の演算について、前記複数の秘密計算装置間で保持する前記シェアを用いて秘密計算を行う手段と、
    秘密計算結果であるシェアを前記中間装置に返す手段と、
    を備え、
    前記中間装置で前記シェアから復元したデータに対して、前記要求の演算のうち、前記複数の秘密計算装置で秘密計算処理される前記一部の演算以外の演算処理を行わせる、ことを特徴とする秘密計算装置。
JP2017516545A 2015-05-07 2015-05-07 秘密計算データ利用システムと方法と装置並びにプログラム Active JP6493522B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/063226 WO2016178291A1 (ja) 2015-05-07 2015-05-07 秘密計算データ利用システムと方法と装置並びにプログラム

Publications (2)

Publication Number Publication Date
JPWO2016178291A1 JPWO2016178291A1 (ja) 2018-03-01
JP6493522B2 true JP6493522B2 (ja) 2019-04-03

Family

ID=57218608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516545A Active JP6493522B2 (ja) 2015-05-07 2015-05-07 秘密計算データ利用システムと方法と装置並びにプログラム

Country Status (3)

Country Link
US (1) US10721063B2 (ja)
JP (1) JP6493522B2 (ja)
WO (1) WO2016178291A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6006842B1 (ja) * 2015-07-22 2016-10-12 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
JP6034927B1 (ja) * 2015-07-27 2016-11-30 日本電信電話株式会社 秘密計算システム、秘密計算装置、およびプログラム
JP6467063B2 (ja) * 2015-10-13 2019-02-06 日本電信電話株式会社 秘密認証符号付加装置、秘密認証符号付加方法、およびプログラム
US10749670B2 (en) * 2017-05-18 2020-08-18 Bank Of America Corporation Block chain decoding with fair delay for distributed network devices
US11456862B2 (en) * 2017-07-05 2022-09-27 Nippon Telegraph And Telephone Corporation Secure computation system, secure computation apparatus, secure computation method, and recording medium
US11537726B2 (en) 2017-12-18 2022-12-27 Nippon Telegraph And Telephone Corporation Secret computation system and method
JP7159717B2 (ja) * 2018-09-10 2022-10-25 日本電信電話株式会社 秘密統計処理システム、方法、統計処理装置及びプログラム
WO2020084751A1 (ja) 2018-10-26 2020-04-30 日本電気株式会社 秘密計算サーバ、システム、秘密計算方法及びプログラム
US11995164B2 (en) 2018-10-26 2024-05-28 Nec Corporation Authentication candidate extraction apparatus, authentication system, authentication candidate extraction method, and program
WO2020144768A1 (ja) 2019-01-09 2020-07-16 日本電気株式会社 検証装置、秘密計算検証システム、秘密計算実行コードの検証方法及びプログラム
CN111832034B (zh) * 2019-04-23 2024-04-30 创新先进技术有限公司 多方数据融合方法及装置
US11222129B2 (en) * 2019-06-24 2022-01-11 International Business Machines Corporation Entity resolution between multiple private data sources
JP6744565B1 (ja) * 2019-10-11 2020-08-19 富士通クライアントコンピューティング株式会社 情報処理装置、プログラムおよび情報処理システム
US12027264B2 (en) 2020-02-17 2024-07-02 International Business Machines Corporation Medical intervention based on separate data sets
US11704150B2 (en) * 2020-05-27 2023-07-18 Acronis International Gmbh Systems and methods for dynamic job performance in secure multiparty computation
IL281330A (en) * 2021-03-08 2022-10-01 Google Llc Improved execution of secure multilateral calculation
JP2023150937A (ja) * 2022-03-31 2023-10-16 エヌ・ティ・ティ・コミュニケーションズ株式会社 情報提供装置、情報提供方法及び情報提供プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4292835B2 (ja) * 2003-03-13 2009-07-08 沖電気工業株式会社 秘密再構成方法、分散秘密再構成装置、及び秘密再構成システム
US20120002811A1 (en) * 2010-06-30 2012-01-05 The University Of Bristol Secure outsourced computation
JP5351852B2 (ja) * 2010-08-02 2013-11-27 日本電信電話株式会社 横断統計システム、発言端末、横断統計方法
KR101388724B1 (ko) 2011-11-11 2014-04-25 닛본 덴끼 가부시끼가이샤 데이터베이스 암호화 시스템과 방법 및 컴퓨터 판독가능 기록 매체
US9819661B2 (en) * 2013-09-12 2017-11-14 The Boeing Company Method of authorizing an operation to be performed on a targeted computing device
JP6283119B2 (ja) 2014-10-07 2018-02-21 日本電信電話株式会社 秘密計算システム、中継装置、それらの方法、プログラム、および記録媒体

Also Published As

Publication number Publication date
JPWO2016178291A1 (ja) 2018-03-01
US10721063B2 (en) 2020-07-21
WO2016178291A1 (ja) 2016-11-10
US20180139045A1 (en) 2018-05-17

Similar Documents

Publication Publication Date Title
JP6493522B2 (ja) 秘密計算データ利用システムと方法と装置並びにプログラム
CN110337649B (zh) 用于搜索模式未察觉的动态对称可搜索加密的方法和系统
Melchor et al. XPIR: Private information retrieval for everyone
Li et al. Secure deduplication with efficient and reliable convergent key management
US10664610B2 (en) Method and system for range search on encrypted data
JP2019500645A (ja) 暗号プロトコルを用いたsqlベースのデータベースの保護
CN111026788B (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
Liu et al. Cooperative private searching in clouds
Rashid et al. A secure data deduplication framework for cloud environments
WO2018099577A1 (en) System and method for providing a collective decentralized authority for sharing sensitive data
JP7327517B2 (ja) 秘匿ハッシュテーブル構築システム、参照システム、およびそれらの方法
KR101428649B1 (ko) 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법
CN109783456B (zh) 去重结构搭建方法、去重方法、文件取回方法、去重系统
Fan et al. Ppca: Privacy-preserving principal component analysis using secure multiparty computation (mpc)
CN117951730A (zh) 一种基于哈希索引的云端安全可搜索加密方法
JP7440662B2 (ja) マルチキー情報検索
Mathew et al. Secure Fuzzy Multi-Keyword Ranked Search over Encrypted Cloud Data
JP6493402B2 (ja) 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム
Patil Enhanced-elliptic curve Diffie Hellman algorithm for secure data storage in multi cloud environment
JP2024061277A (ja) プログラム、情報処理装置、方法、及び情報処理システム
Nikolopoulos Efficient private information retrieval
Jordão et al. Secure data storage in distributed cloud environments
KR101324477B1 (ko) 위치제어에 의한 데이터 병렬처리 시스템 및 그 방법
Zhao Semantically Secure Private Set Intersection over Outsourced Multi-Owner Secret-Shared Databases
Cai et al. SEDB: building secure database services for sensitive data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180806

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190218

R150 Certificate of patent or registration of utility model

Ref document number: 6493522

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150