JP6693508B2 - 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム - Google Patents

秘密計算システム、サーバ装置、秘密計算方法、および、プログラム Download PDF

Info

Publication number
JP6693508B2
JP6693508B2 JP2017510254A JP2017510254A JP6693508B2 JP 6693508 B2 JP6693508 B2 JP 6693508B2 JP 2017510254 A JP2017510254 A JP 2017510254A JP 2017510254 A JP2017510254 A JP 2017510254A JP 6693508 B2 JP6693508 B2 JP 6693508B2
Authority
JP
Japan
Prior art keywords
share
calculation
secret
finite field
shares
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
JP2017510254A
Other languages
English (en)
Other versions
JPWO2016159357A1 (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 JPWO2016159357A1 publication Critical patent/JPWO2016159357A1/ja
Application granted granted Critical
Publication of JP6693508B2 publication Critical patent/JP6693508B2/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/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
    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Description

[関連出願についての記載]
本発明は、日本国特許出願:特願2015−077064号(2015年4月3日出願)に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、秘密計算システム、サーバ装置、秘密計算方法、および、プログラムに関し、特にマルチパーティ計算手法に基づく秘密計算システム、サーバ装置、秘密計算方法、および、プログラムに関する。
まず、本発明の背景技術と、本発明を記述するために必要な用語について説明する。
「秘密分散」
秘密分散方式(Share, Reconst)は、ユーザが保有している秘密aを複数のサーバ装置1, …, Nでシェアして持つためのプロトコルであり、秘密aからシェアを作るシェア生成関数Shareと、シェアから秘密aを復元する復元関数Reconstから成る。非特許文献1に記載された方式をはじめとして、秘密aおよびシェアは有限体の元であることが多い。本発明でも、秘密aおよびシェアが有限体の元である状況を考える。以下では、かかる状況における秘密分散法式について説明する。
Fを有限体とするとき、秘密aとシェアが有限体Fの元である秘密分散を「Fにおける秘密分散」という。また、「Fおける秘密分散」で生成されたシェアを「秘密aのF上のシェア」または「秘密aのFでのシェア」という。
ShareおよびReconstの関数の入出力は、次のとおりである。
・シェア生成関数Shareは、秘密aとサーバ装置の台数Nと有限体F(ないし、有限体Fに関する情報)を入力として受け取り、秘密aのシェアs[1], …, s[N]を出力する。
・復元関数Reconstは、シェアs[1], …, s[N]の一部または全部と有限体F(ないし、有限体Fに関する情報)を入力として受け付け、秘密aまたは「復元失敗」を意味するデータを出力する。
秘密分散方式(Share, Reconst)は、以下の手順で用いられる。まず、ユーザUは、秘密aをサーバ装置1, ..., Nにシェアする場合、Share(a, N, F)を実行して出力s[1], …, s[N] ∈ Fを得る。次に、ユーザはシェアs[1], ..., s[N]を、それぞれサーバ装置1, ..., Nに送信する。後に、シェアから秘密を復元する必要が生じた場合、{i_1, …, i_v} ∈ Accessを満たすサーバ装置i_1, ..., i_vが自身のシェアs[i_1], … ,s[i_v]をユーザUに送信する。次に、ユーザUは、Reconst(s[i_1], …, s[i_v], F)を実行して秘密aを得る。
ここでは、ユーザUがReconst(s[i_1], …, s[i_v], F)を実行するケースについて説明した。ただし、ユーザU以外のユーザ、または、サーバ装置がReconst(s[i_1], …, s[i_v], F)を実行してもよい。
さらに、{1, …, N}の部分集合の集合Accessが以下を満たすとき、集合Accessを{1, …, N}上のアクセス構造という。
・S ∈ AccessかつS ⊂ Tであれば、T ∈ Access.
また、{1, …, N}上のアクセス集合Accessに対して、(Share, Reconst)が以下の性質を満たすとき、(Share, Reconst)はAccess-安全であるという。
・s[1], …, s[N]をShare(a, N, F)の出力、S = {i_1, …, i_v}を{1, …, N}の部分集合とする。この場合、S ∈ Accessであるとき、Reconst(s[i_1], .., s[i_v], F)はaを出力する。一方、S ∈ Accessでないとき、s[i_1], .., s[i_v]からaのいかなる部分情報も知ることができない。
「Shamirの秘密分散法」
次に、非特許文献1においてShamirによって提案された秘密分散法(以下、「Shamir秘密分散法」という。)について説明する。Shamir秘密分散法では、「しきい値」という自然数Kを事前に決めて固定する。なお、しきい値Kはサーバ装置の台数N以下とする必要がある。
Shamir秘密分散法におけるアクセスAccessは
Access = {S ⊂ {1, …, N} | SはK個以上元を含む}
である。よって、Shamir秘密分散法では、サーバ装置1, ..., NのうちのK台以上が集まれば、秘密を復元することができる。一方、Shamir秘密分散法では、K台未満のサーバ装置が集まっても、秘密に関する情報を一切得ることができない。
Shamir秘密分散法は、有限体上の秘密分散法である。Fを有限体とするとき、Shamir秘密分散法のシェア関数、および、復元関数を、それぞれShamirShare(a, K, N, F)およびShamirReconst(s[i_1], …, s[i_v], K, N, F)と表す。ここで、a ∈ Fは秘密であり、s[i_1], …, s[i_v] ∈ Fはシェアである。また、関数ShamirShareおよびShamirReconstは、以下のように定義される。
・ShamirShare(a, K, N, F) : 乱数r[1], …, r[K - 1]をランダムに選び、i = 1, …, Nに対し、有限体F上の多項式f(X)を
f(X) = a + Σk = 1, …, K - 1r[k]Xk
により定義し、
s[i] = f(i)
を計算し、s[1], …, s[N]をそれぞれサーバ装置1, ..., Nのシェアとして返す。
・ShamirReconst(s[i_1], …, s[i_v], K, N, F) : vがK以上の場合、任意のu = 1, …, vに対して、f(i_u) = s[i_u]を満たす有限体F上のK - 1次多項式f(X)を求めてf(0)を出力する。一方、vがK未満の場合、秘密を復元できない旨のメッセージを返す。
「マルチパーティ計算(MPC:Multi Party Computation)プロトコル」
MPCプロトコルとは、何らかのアルゴリズムを複数のサーバ装置でセキュアに計算する手段のことである。本発明では、MPCプロトコルとして、「乗法剰余MPCプロトコル」および「乱数生成MPCプロトコル」を用いる。
乗法剰余MPCプロトコルにおいて、s[1], …, s[N]は何らかの整数aの有限体F上のシェアとする。一方、t[1], …, t[N]は、何らかの整数bの有限体F上のシェアとする。
乗法剰余MPCプロトコルとは、乗法剰余アルゴリズムをセキュアに実行するMPCであり、サーバ装置1 , ..., M[N]が、それぞれ(s[1], t[1], F), ..., (s[N], t[N], F)を入力として実行され、サーバ装置1, ..., M[N]がそれぞれz[1], ..., z[n]を出力として受け取る。ここで、z[1], …, z[N]はF上の積abのF上のシェアである。
一方、乱数生成MPCプロトコルとは、乱数生成アルゴリズムをセキュアに実行するMPCであり、サーバ装置1, ..., Nがいずれも有限体Fを入力として実行され、サーバ装置1, ..., Nがそれぞれu[1], ..., u[N]を出力として受け取る。ここで、u[1], …, u[N]は有限体F上の一様乱数のFにおけるシェアである。
これらのプロトコルの実現方法として、様々な方法(例えば、非特許文献2に記載された方法)を用いることが可能である。
なお、特許文献1には、入力した秘密情報を部分秘密情報に分割し、分割した部分秘密情報と乱数または当該部分秘密情報との排他的論理和演算を実行して部分分散情報を生成し、生成された部分分散情報を連結して分散情報を生成して、生成された分散情報を所定の人数の管理者に送信する技術が記載されている。
特開2009−037093号公報
A. Shamir, "How to Share a Secret," Communications of the ACM, November 1979, Volume 22, Number 11, pp. 612 - 613. O. Goldreich, S. Micali, and A. Wigderson, "HOW TO PLAY ANY MENTAL GAME or A completeness Theorem for Protocols with Honest Majority," in Proceedings of the Nineteenth Annual ACM Conference on Theory of Computing, ACM Press, 1987, pp. 218 - 229.
上記特許文献1および非特許文献1、2の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
クラウド技術の普及により、ユーザがクラウド等に設けられたデータベースにデータを預け、その後、データベースに預けたデータの中からユーザが必要なデータを検索して利用するサービスが一般化しつつある。
しかし、このようなサービスでは、データベースの管理者はユーザが預けたデータをすべて閲覧することができる。したがって、ユーザがデータをデータベースに預けると、ユーザのプライバシーがデータベース管理者に筒抜けになるおそれがある。
このような危険を回避するために、データベースに預けるデータをユーザが暗号化することが考えられる。しかしながら、データを暗号化してしまうと、後でデータベースから必要なデータを検索しようと思っても、暗号化によりデータが読めなくなっているため、検索ができないという問題が生じる。
このようなジレンマを解決する技術として、マルチパーティ計算(MPC:Multi-Party Computation)プロトコルと呼ばれる技術が知られている。MPCプロトコルは、複数台のサーバ装置にデータa[1], …, a[m]を「シェア」して持った状態からスタートし、シェアされたデータから何らかのアルゴリズムφに従って必要な値φ(a[1], …, a[m])をセキュアに計算するプロトコルである。ここで、「シェア」は秘密分散方式で生成される。
マルチパーティ計算に関する関連技術においては、論理演算子AND、OR、NOTのマルチパーティ計算方法を提案するとともに、一般の関数φに対してはφをAND、OR、NOT等の論理演算子で表した上で、論理演算子AND、OR、NOTのマルチパーティ計算方法を組み合わせることでφのマルチパーティ計算を実現している。
関連技術に係るマルチパーティ計算では、ANDの計算を行うために、サーバ装置群は定数ラウンド分の通信を行う必要がある。したがって、J個のビットa[1], …, a[J]をANDしたa[1] AND … AND a[J]を計算するためには、最低でもO(log J)ラウンドを要する。
例えば、1回のANDの計算にXラウンド要する状況下で8個(J = 8)のデータをANDしたa[1] AND … AND a[8]を計算するためには、以下の計算が必要となる。
・1〜Xラウンド目でb[1] = a[1] AND a[2], b[2] = a[3] AND a[4], b[3] = a[5] AND a[6], b[4] = a[7] AND a[8]をマルチパーティ計算し、
・X+1〜2Xラウンド目でc[1] = b[1] AND b[2], c[2] = b[3] AND b[4]をマルチパーティ計算し、
・2X+1〜3Xラウンド目でc[1] AND c[2]をマルチパーティ計算する。
したがって、AND計算において、合計3X = (log2 8)・Xラウンドを要する。
このように、関連技術に係るマルチパーティ計算では、多数のデータをANDする際、多数のラウンド数を要するという問題がある。
特に、マルチパーティ計算を検索に応用した場合、上述の問題が顕著となる。例えば、クエリb = b[1] … b[m]を部分ビット列として含むビット列a = a[1] … a[n]を検索したい場合、φとして
φ(a, b) = 1(bがaの部分ビット列である場合)、
φ(a, b) = 0(それ以外の場合)
を満たすものを採用すればよい。
ここで、bがaの部分ビット列であることは、論理式
∃ j (b[j + 1] = a[j + 1]) AND … AND (b[j + n] = a[j + n])
を満たすことと同値である。したがって、部分ビット列であるか否かを判定するには、n個のデータのANDをマルチパーティ計算する必要があり、多数のラウンド数を要する。
なお、特許文献1に記載された技術によっても、上述の問題は解消されない。
そこで、マルチパーティ計算におけるラウンド数を削減することが課題となる。本発明の目的は、かかる課題解決に寄与する秘密計算システム、サーバ装置、秘密計算方法、および、プログラムを提供することにある。
本発明の第1の態様に係る秘密計算システムは、秘密データを引数とする所定の関数の値をマルチパーティ計算する秘密計算システムであって、複数のサーバ装置を備え、前記複数のサーバ装置は、前記秘密データを秘密分散して生成された有限体上の元であるシェアを保持する記憶部と、前記シェアを拡張して拡張シェアを生成するシェア拡張部と、前記拡張シェアを用いて前記所定の関数に含まれるOR演算を実行するOR計算部と、前記拡張シェアを用いて前記所定の関数に含まれるNOT演算を実行するNOT計算部と、を有する。
本発明の第2の態様に係るサーバ装置は、第1の態様に係る秘密計算システムに含まれる前記複数のサーバ装置のうちの一のサーバ装置である。
本発明の第3の態様に係る秘密計算方法は、秘密データを引数とする所定の関数の値を複数のサーバ装置を用いてマルチパーティ計算する秘密計算方法であって、前記複数のサーバ装置のうちの一のサーバ装置が、前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付けるステップと、前記シェアを拡張して拡張シェアを生成するステップと、前記拡張シェアを用いて前記所定の関数に含まれるOR演算を実行するステップと、前記拡張シェアを用いて前記所定の関数に含まれるNOT演算を実行するステップと、を含む。
本発明の第4の態様に係るプログラムは、秘密データを引数とする所定の関数の値を複数のコンピュータを用いてマルチパーティ計算するプログラムであって、前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付ける処理と、前記シェアを拡張して拡張シェアを生成する処理と、前記拡張シェアを用いて前記所定の関数に含まれるOR演算を実行する処理と、前記拡張シェアを用いて前記所定の関数に含まれるNOT演算を実行する処理と、を前記複数のコンピュータのうちの一のコンピュータに実行させる。なお、プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することもできる。
本発明に係る秘密計算システム、サーバ装置、秘密計算方法、および、プログラムによると、マルチパーティ計算におけるラウンド数を削減することが可能となる。
一実施形態に係る秘密計算システムの構成を例示するブロック図である。 第1および第2の実施形態に係る秘密計算システムの構成を例示するブロック図である。 第3および第4の実施形態に係る秘密計算システムの構成を例示するブロック図である。
<発明の概要>
はじめに、本発明の概要(基本的なアイデア)について説明する。
関連技術に係るマルチパーティ計算は、以下のようにして構築されている。
・足し算を計算するマルチパーティ計算と掛け算を計算するマルチパーティ計算を作る。
・ANDを計算するマルチパーティ計算、NOTを計算するマルチパーティ計算、および、ORを計算するマルチパーティ計算を、上述の足し算と掛け算のマルチパーティ計算を組み合わせて作る。
・任意の関数はAND演算子とNOT演算子とOR演算子を用いて表現できるので、上述のAND, OR, NOTのマルチパーティ計算を組み合わせて実現する。
上記において、足し算のマルチパーティ計算は、0ラウンドで(すなわち、サーバ装置間の通信を行うことなく)実現できることが知られている。一方、掛け算のマルチパーティ計算は定数ラウンドを要することが知られている。
AND、OR、NOTのマルチパーティ計算は、掛け算のマルチパーティ計算をベースとして実現されている。したがって、これらの論理演算子のマルチパーティ計算も定数ラウンドを要する。特に、複数個のデータのORや複数データのANDをマルチパーティ計算するには、上述のように多数のラウンド数を要する。
そこで、本発明では、NOTのマルチパーティ計算と複数データのORのマルチパーティ計算を、可能な限り少ない掛け算で実現する。これにより、マルチパーティ計算のラウンド効率の改善を図る。なお、AND演算子はORとNOTを組み合わせて表現することができるので、ANDのマルチパーティ計算はORとNOTのマルチパーティ計算によって実現することができる。
本発明において、NOT演算子のマルチパーティ計算と複数データのOR演算子のマルチパーティ計算は、それぞれ、以下のアイデアに基づいて実行される。
まず、有限体Fを固定し、有限体Fの元0を真理値「FALSE」、0以外の元を真理値「TRUE」に対応させる。マルチパーティ計算で用いられる各ビットは真理値であるため、各ビットがFALSEであるかTRUEであるかに応じて、0または0以外の有限体Fの元のいずれかを割り振る。
NOT aをマルチパーティ計算するには、aのシェアを用いて
1 - aq - 1
のシェアをマルチパーティ計算すればよい。ここで、qは有限体Fの位数である。
Fermatの小定理より、1 - aq - 1はaが0の場合1となり、aが0以外の場合0となる。よって、上記の計算によりNOTが計算されることになる。
一方、a[1], …, a[J]のORをマルチパーティ計算するには、i = 1, …, Jに対するa[i]の有限体F上のシェアs[j, 1], …, s[j, N]をそれぞれサーバ装置1, ..., Nが持っている状態からスタートし、n = 1, …, Nに対し各サーバ装置nが
Σj = 1, …, J s[j, n]u[j, n] ∈F
を計算する。ここで、(u[j, n])n = 1, …, Nは有限体F上の何らかの乱数r[j]のシェアである。
定義より(Σj = 1, …, J s[j, n]u[j, n])n = 1, …, NはV = Σj = 1, …, J a[j]r[j]のシェアになっている。a[1] = … = a[J] = 0である場合、Vは0になり、これはa[1] OR …. OR a[J] = 0と一致する。一方a[1], …, a[J]の中に0でないものがある場合、r[j]は乱数であるため、V = Σj = 1, …, J a[j]r[j]は確率1 - (1/q)で0以外の値になる。すなわち、qを十分大きい値にとることで、高い確率でVはa[1] OR … OR a[J] = 1と一致する。
以上の議論により、有限体Fの位数qを十分大きくとることにより、NOT演算子とOR演算子のマルチパーティ計算を高い確率で正しく実行することができる。
そこで、位数qを大きな値に設定することが考えられる。しかしながら、NOT演算子は1 - aqのマルチパーティ計算により実現されているので、qを大きくするに従ってNOT演算子の計算のラウンド効率が悪化するというジレンマが生じる。
本発明では、かかるジレンマを2通りの方法で解決する。なお、以下の解決方法1、2は、それぞれ、後述する第1、第2の実施形態において採用される。
[解決方法1]
第1の解決方法は、次のとおりである。すなわち、上述のジレンマを解決するため、有限体Fの位数qを小さな値としたまま、代わりに、1つの値aをλ回秘密分散することでλ個のシェアの組(s[n, 1])n = 1, N、…, (s[n, λ])n = 1, Nを生成し、サーバ装置nは(s[n, 1], …, s[n, λ])を保持する。ここで、λはセキュリティ・パラメータである。また、(s[n, 1], …, s[n, λ])のことをaの「拡張シェア」という。
拡張シェア(s[n, 1], …, s[n, λ]) n = 1, Nに対し、(s[n, 1])n = 1,…, N, …, (s[n, λ])n = 1, …, Nがシェアしている値をそれぞれu[1], …, u[λ]とする。この場合、u[1] = … = u[λ] = 0のとき、拡張シェアはFALSEをシェアしているものとみなし、それ以外のとき、拡張シェアはTRUEをシェアしているものとみなす。
{解決方法1におけるOR計算}
OR計算では、拡張シェアの各成分s[n, 1], …, s[n, λ]に対し、前述のように乱数との積の和を取る。これにより「乱数との積の和」という計算がλ回繰り返されることになるので、OR計算を間違える確率は1/qλとなり、間違い確率はλに対して指数関数的に小さくなる。よって、λを大きくすることで、q自身を小さく保ったまま間違い確率を小さくすることができる。これにより、上述のジレンマを解消することができる。
{解決方法1におけるNOT計算}
一方、NOT計算の際には、s[n, 1], …, s[n, λ]がシェアしている値をu[1], …, u[λ]とするとき、v = (1 - u[1]q - 1) … (1 - u[λ]q - 1)のシェアをマルチパーティ計算し、vのシェアの拡張シェアを作る。Fermatの小定理より、u[1], …, u[λ]がすべて0の場合vは1になり、それ以外の場合vは0になる。したがって、以上の計算はNOT演算子に対応する。
[解決方法2]
解決方法1では、通常のシェアを拡張シェアに変換する手続きを導入した。一方、第2の解決方法では、変換手続きとして、通常のシェアに0のF上のシェアを足し合わせる方法が用いられる。第2の解決方法では、上述のジレンマを解決するため、有限体Fの位数qを小さな値としつつ、有限体Fの拡大体Lの位数を大きくする。さらに、必要に応じて有限体F上のシェアを拡大体L上のシェアに変換する。変換後のシェアを「拡張シェア」と呼ぶ。第2の解決方法においても、通常のシェアを拡張シェアに変換する変換手続が導入される。ただし、第2の解決方法では、変換手法として、通常のシェアに0の拡大体L上のシェアを足し合わせる方法が用いられる。
{解決方法2におけるOR計算}
OR計算において、
Σj = 1, …, J T[j, n]u[j, n] ∈ L
を計算する。ここでT[j, n]はa[j]の拡張シェアであり、u[j, n]は拡大体L上の何らかの乱数のシェアである。有限体Fの位数q自身は小さい場合であっても、拡大体Lの位数Qを大きく取ることで、OR計算の間違い確率は小さくなる。すなわち、上述のジレンマは解消される。
{解決方法2におけるNOT計算}
NOT aをマルチパーティ計算するには、aの拡張シェアを用いて
1 - aQ - 1
のシェアをマルチパーティ計算する。ここで、Qは拡大体Lの位数である。しかし、前述の理由でQは大きい値にする必要があるため、単純に1 - aQ-1のシェアをマルチパーティ計算しようとすると、NOT計算の効率が悪くなるという問題がある。そこで、次のようにしてaQの計算を効率化する。
Lは有限体Fの拡大体であるため、拡大体Lは有限体F上線形空間とみなせる。そこで、E[1], …, E[λ]を拡大体LのF上線形空間の基底とすると、拡大体Lの任意の元aを
Σl = 1, …, λa[l]E[l]
と表すことができる。また、定義より明らかにQ = qλである。
したがって、
aQ-1 = (Σl = 1, …, λa[l]E[l])^{qλ - 1} = Σl = 1, …, λa[l]E[l]^{(1 + q + … + qλ - 1)(q - 1)}
= (Πi = 0, …, λ - 1Σl = 1, …, λa[l]E[l]^{q^i})q - 1
である。
左辺をマルチパーティ計算する代わりに、右辺をマルチパーティ計算することで、効率的にNOTを計算することができる。
<一実施形態>
次に、本発明の一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
図1は、一実施形態に係る秘密計算システム10の構成を例示するブロック図である。図1を参照すると、秘密計算システム10は、秘密データを引数とする所定の関数の値をマルチパーティ計算する秘密計算システムであって、複数のサーバ装置2−1〜2−Nを備えている。
サーバ装置2−1〜2−Nは、秘密データを秘密分散して生成された有限体(F)上の元であるシェアを保持する記憶部22−1〜22−Nと、前記シェアを拡張して拡張シェアを生成するシェア拡張部231−1〜231−Nと、前記拡張シェアを用いて前記所定の関数に含まれるOR演算を実行するOR計算部232−1〜232−Nと、前記拡張シェアを用いて前記所定の関数に含まれるNOT演算を実行するNOT計算部233−1〜233−Nと、を有する。
ここで、シェア拡張部231−1〜231−Nは、前記シェアを秘密分散して生成された複数のシェアを成分とする配列を拡張シェアとして生成してもよい。このとき、OR計算部232−1〜232−Nは、拡張シェアの各成分に対して、有限体(F)上の乱数のシェアを乗じて足し合わせることでOR演算を実行する。また、NOT計算部233−1〜233−Nは、前記拡張シェアの各成分がシェアする値を前記有限体の位数(q)から1を引いた値(q - 1)でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、NOT演算を実行する。
一方、シェア拡張部231−1〜231−Nは、前記シェアを秘密分散して生成された複数のシェアを有限体(F)の拡大体(L)上の元として表したものを、前記拡張シェアとして生成するようにしてもよい。このとき、OR計算部232−1〜232−Nは、OR演算の対象となる拡張シェアに対して、拡大体(L)上の乱数のシェアを乗じて足し合わせることで、OR演算を実行する。また、NOT計算部233−1〜233−Nは、NOT演算の対象となる拡張シェアを拡大体(L)の基底で成分表示し、各成分に対応する基底を有限体(F)の位数(q)のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を有限体(F)の位数(q)から1を引いた値(q - 1)でべき乗したものを1から減じた値をマルチパーティ計算することで、NOT演算を実行する。
かかる秘密計算システム10によると、マルチパーティ計算におけるラウンド数を削減することが可能となる。なぜなら、秘密計算システム10によれば、有限体Fの位数qを大きくすることなく、OR演算子およびNOT演算子を高い確率で正しく計算することができるからである。
<実施形態1>
次に、第1の実施形態に係る秘密計算システムについて、図面を参照して説明する。はじめに、本実施形態と、後述する第2の実施形態との間で共通する構成および動作について説明する。
以下では、λをセキュリティ・パラメータとする。また、Nをサーバ装置の台数とし、有限体Fの位数qをN以上とする。さらに、{0, 1}を自然に有限体Fの部分集合とみなす。
[構成]
図2は、本実施形態に係る秘密計算システム10の構成を例示するブロック図である。なお、後述する第2の実施形態に係る秘密計算システム10も図2と同様の構成を有する。
図2を参照すると、秘密計算システム10は、登録装置1とサーバ装置2−1〜2−Nを備えている。なお、サーバ装置2−1〜2−Nのうちのいずれかが登録装置1の機能を兼ねていてもよい。
登録装置1は、通信部11、記憶部12、および、計算部13を備えている。また、計算部13は、シェア生成部131と復元部132を備えている。
サーバ装置2−n(n = 1, …, N)は、通信部21−n、記憶部22−n、および、計算部23−nを備えている。また、計算部23−nは、シェア拡張部231−n、OR計算部232−n、および、NOT計算部233−nを備えている。
[動作]
本実施形態では、Shamirの秘密分散法を用いる。そこで、事前にしきい値Kを固定(fix)しておく。さらに、有限体Fの相異なる元m[1], …, m[N]を固定する。
a[1], …, a[U] ∈ {0, 1} ⊂ Fを秘密データとし、φを関数とする。本実施形態では、φ(a[1], …, a[U])をマルチパーティ計算したい場合を考える。
この場合、以下の動作が行われる。
・登録装置1は、秘密データa[1], ..., a[U]を受け付けると、受け付けた秘密データa[1], ..., a[U]を記憶部12に保持する。また、登録装置1のシェア生成部131は、u = 1, …, Uに対し、後述する「シェア生成」を行い、a[u]のシェアs[u, 1], …, s[u, N]を求める。次に、登録装置1の通信部11は、生成されたシェアs[u, 1], …, s[u, N]を、それぞれサーバ装置2−1〜2−Nに送る。
・サーバ装置2−1〜2−Nの通信部21−1〜21−Nは、それぞれ、登録装置1からシェアs[u, 1], …, s[u, N]を受け取ると、記憶部22−1〜22−Nに格納する。シェア拡張部231−1〜231−Nは、それぞれ、マルチパーティ計算を開始するまでに「シェア拡張」を行ってs[u, 1], …, s[u, N]の拡張シェアを求め、求めた拡張シェアを記憶部22−1〜22−Nに保持する。
・サーバ装置2−1〜2−Nの計算部23−1〜23−Nは、関数φをORゲートとNOTゲートの組み合わせで表記し、u = 1, …, Uに対するa[u]の拡張シェアを入力として、ORゲートとNOTゲートを順にマルチパーティ計算していく。ORゲートに対するマルチパーティ計算は後述する「OR計算」の部分、NOTゲートに対するマルチパーティ計算は後述する「NOT計算」の部分で説明する。サーバ装置2−1〜2−Nは、最終的にφ(a[1], …, a[U])のシェアを得る。
・φ(a[1], …, a[U])の各ビットのシェアの計算が終了すると、サーバ装置2−1〜2−Nの通信部21−1〜21−Nは、計算したシェアを登録装置1に送出する。登録装置1の復元部132は、サーバ装置2−1〜2−Nから送出されたシェアに基づいて、後述する「復元計算」を行うことでφ(a[1], …, a[U])を復元する。
上記では、サーバ装置2−1〜2−Nに設けられたシェア拡張部231−1〜231−Nがシェア拡張を行う場合について説明した。ただし、登録装置1の側でシェア拡張を行ってもよい。この場合、登録装置1の通信部11は、シェアs[u, 1], …, s[u, N]自身ではなく、これらのシェアをシェア拡張して得られた拡張シェアをサーバ装置2−1〜2−Nに送出する。
次に、シェア生成動作の詳細について説明する。本実施形態と後述する第2の実施形態との間で、シェア生成動作は共通である。
{シェア生成}
実施形態1、2では、秘密aは{0, 1}の元である場合を想定する。ただし、以下のシェア生成動作は秘密aがFの元であれば{0, 1}の元でなくとも正しく動作する。なお、後述する第3、第4の実施形態では、秘密aが{0, 1}の元とは限らない場合に対しても以下のシェア生成動作を用いる。
・登録装置1は、秘密a ∈ Fを入力として受け取る。
・シェア生成部131は乱数r[1], …, r[K - 1] ∈ Fをランダムに選び、i = 1, …, Nに対し、有限体F上の多項式f(X)を
f(X) = a + Σk = 1, …, K - 1r[k]Xk
により定義し、n = 1, …, Nに対し
s[n] = f(m[n])
を計算する。通信部11は、計算されたシェアs[1], …, s[N]を、それぞれサーバ装置2-1, ..., 2-Nのシェアとして送信する。
・サーバ装置2−1〜2−Nは、それぞれ、受信したシェアs[1], …, s[N]を記憶部22−1〜22−Nに保持する。
本実施形態と後述する第2の実施形態との間では、「シェア拡張」、「OR計算」、「NOT計算」および「復元計算」の動作が相違する。以下では、本実施形態における「シェア拡張」、「OR計算」、「NOT計算」および「復元計算」の動作について説明する。
{シェア拡張}
・サーバ装置2−1〜2−Nのシェア拡張部231−1〜231−Nは、それぞれ、シェアs[1], …, s[N]を記憶部22−1〜22−Nから読み込む。
・l =1, …, λ、d = 1, …, Dに対し、シェア拡張部231−1〜231−Nは乱数生成MPCプロトコルを実行することで、有限体F上の一様乱数r[l, d]のシェアを生成する。実行結果として、シェア拡張部231−1〜231−Nはそれぞれr[l, d]のシェアρ[l, d, 1], …., ρ[l, d, N]を得る。
・n = 1, …, N, l = 1, …, λに対し、シェア拡張部231−nは
t[n, l] = s[n] + Σd = 1, …, Dρ[l, d, n]m[n]d
を計算する。
・n = 1, …, N に対し、シェア拡張部231−nは(t[n, 1], …, t[n, λ])を拡張シェアとして出力する。
{OR計算}
j = 1, …, Jに対し、サーバ装置2−1〜2−Nがa[j]の拡張シェア(t[j, 1, 1], …, t[j, 1, λ]) ∈ Fλ, …, (t[j, N, 1],…,t[j, N, λ]) ∈ Fλをそれぞれ記憶部22−1〜22−Nに保管しているとき、サーバ装置2−1〜2−NのOR計算部232−1〜232−Nは、次のようにしてb = a[1] OR … OR a[J]のシェアを計算する。
・j = 1, …, Jに対し、OR計算部232−1〜232−Nは、それぞれ、拡張シェア(t[j, 1, 1], …, t[j, 1, λ]) ∈ Fλ, …, (t[j, N, 1], …, t[j, N, λ]) ∈Fλを記憶部22−1〜22−Nから読み込む。
・OR計算部232−1〜232−Nは、それぞれ、乱数生成MPCをJλ回実行する。その結果として、j = 1, …, J, l = 1, …, λに対して、OR計算部232−1〜232−Nは、それぞれ、有限体F上の乱数R[j, l]のシェアu[j, 1, l], …, u[j, N, l]を得る。
・n = 1, …, N, l = 1, …, λに対し、OR計算部232−nはv[n, l] = Σj = 1,…,Jt[j, n, l]u[j, n, l]∈Fを計算し、(v[n, 1], …, v[n, λ])をbの拡張シェアとして記憶部22−nに保管する。
{NOT計算}
サーバ装置2−1〜2−Nが、それぞれ、aの拡張シェア(t[1, 1], …, t[1, λ]) ∈ Fλ, …, (t[N, 1], …, t[N, λ]) ∈ Fλを記憶部22−1〜22−Nに保管しているとき、サーバ装置2−1〜2−NのNOT計算部233−1〜233−Nは、次のようにしてb = NOT aのシェアを計算する。
・NOT計算部233−1〜233−Nは、それぞれ、秘密aの拡張シェア(t[1, 1], …, t[1, λ]) ∈ Fλ, …, (t[N, 1], …, t[N, λ]) ∈ Fλを記憶部22−1〜22−Nから読み込む。拡張シェアの定義より、(t[n, l]) n = 1, …, Nは何らかの元c[n] ∈ Fの秘密分散になっている。
・n = 1, …, N, l = 1, …, λに対し、NOT計算部233−nがt[n, l] ∈ Fを入力として用いて
d[l] = 1 - c[l]q - 1
のシェアを得るマルチパーティ計算を実行する。NOT計算部233−nは、かかるマルチパーティ計算を、有限体F上の和のマルチパーティ計算と積のマルチパーティ計算を組み合わせることで実行することができる。ここで、qは有限体Fの位数である。実行結果として、NOT計算部233−1〜233−Nは、それぞれd[l]のシェアδ[1, l], …, δ[N, l]を得る。
・n = 1, …, Nに対し、NOT計算部233−nがδ[n, 1], …, δ[n, λ] ∈ Fを入力として用いて、
e = d[1] … d[λ]
のシェアを得るマルチパーティ計算を実行する。NOT計算部233−1〜233−Nは、実行結果として、それぞれeのシェアε[1], …, ε[N]を得る。
・n = 1, …, Nに対し、シェア拡張部231−nはε[n]を入力としてシェア拡張を実行する。実行結果として得られた拡張シェアを記憶部22−nに書き込む。
{復元計算}
・登録装置1の復元部132は、v個(v ≧ K)の拡張シェア(t[i_1, 1], …, t[i_1, λ]) ∈ Fλ, …, (t[i_v, 1],…,t[i_v, λ]) ∈ Fλを入力として受け取る。
・復元部132は、l = 1, …, λに対して、ShamirReconst(t[i_1, l], …, t[i_v, l], K, N, F)を実行し、出力a[l]を得る。
・復元部132は、a[1] = …. = a[λ] = 0である場合0を出力し、それ以外の場合1を出力する。
本実施形態の秘密計算システム10によると、有限体Fの位数q自身を小さく保ったままOR計算を間違える確率を小さくすることができる。したがって、本実施形態によると、ラウンド効率を悪化させることなく、マルチパーティ計算を高い確率で正しく実行することができる。
<実施形態2>
次に、第2の実施形態に係る秘密計算システムについて、図面を参照して説明する。
[構成]
図2は、本実施形態の秘密計算システム10の構成を例示するブロック図である。本実施形態の秘密計算システム10の構成は、第1の実施形態の秘密計算システムの構成と同様であるため、説明を省略する。
本実施形態では、有限体Fとして位数qがサーバ装置の台数N以上のものを用いる。また、有限体Fの相異なる元m[1], …, m[N]を固定する。
さらに、本実施形態では、Lを有限体Fの拡大体であって、拡大次数がセキュリティ・パラメータλ以上であるものとする。拡大体Lの定義より、拡大体LをF上λ次元ベクトル空間とみなすことができる。そこで、F上λ次元ベクトル空間としての拡大体Lの基底E[1], …, E[λ] ∈ Lを固定する。
[動作]
次に、本実施形態の秘密計算システムの動作について説明する。なお、本実施形態におけるシェア生成動作は、第1の実施形態におけるシェア生成動作と同様であるため、説明を省略する。以下では、本実施形態における「シェア拡張」、「OR計算」、「NOT計算」および「復元計算」の動作について説明する。
{シェア拡張}
・n = 1, …, N, l = 1, …, λに対し、第1の実施形態と同様に、サーバ装置2−nのシェア拡張部231−1は
t[n, l] = s[n] + Σd = 1, …, Dρ[l, d, n]m[n]d
を計算する。
・本実施形態では、シェア拡張部231−n(n = 1, …, N)は、
T[n] = Σl = 1, …, λt[n, l]E[l]
を計算し、計算したT[n]を拡張シェアとして出力する。
{OR計算}
j = 1, …, Jに対し、サーバ装置2−1〜2−Nが、それぞれa[j]の拡張シェアT[j, 1] ∈ L, …, T[j, N] ∈ Lを記憶部22−1〜22−Nに保管しているとき、サーバ装置2−1〜2−NのOR計算部232−1〜232−Nは、次のようにしてb = a[1] OR … OR a[J]のシェアを計算する。
・j = 1, …, Jに対し、OR計算部232−1〜232−Nは、それぞれ、拡張シェアT[j, 1] ∈ L, …, T[j, N] ∈ Lを記憶部22−1〜22−Nから読み込む。
・OR計算部232−1〜232−Nは、それぞれ、乱数生成MPCをJ回実行する。その結果として、j = 1, …, Jに対して、OR計算部232−1〜232−Nは、それぞれ、拡大体L上の乱数R[j]のシェアu[j, 1], …, u[j, N] ∈ Lを得る。
・n = 1, …, Nに対し、OR計算部232−nはv[n] = Σj = 1, …, JT[j, n]u[j, n] ∈ Lを計算し、v[n]をbの拡張シェアとして記憶部22−nに保管する。
{NOT計算}
サーバ装置2−1〜2−Nが、それぞれaの拡張シェアT[1] ∈ L, …, T[N] ∈ Lを記憶部22−1〜22−Nに保管しているとき、サーバ装置2−1〜2−NのNOT計算部233−1〜233−Nは、次のようにしてb = NOT aのシェアを計算する。
・NOT計算部233−1〜233−Nは、それぞれ、秘密aの拡張シェアT[1] ∈ L, …, T[N] ∈ Lを記憶部22−1〜22−Nから読み込む。拡張シェアの定義より、T[1], …, T[N]はaを秘密分散したシェアである。
・n = 1, …, Nに対し、NOT計算部233−nはT[n]を
T[n] = Σl = 1, …, λt[n, l]E[l] (t[n, l]∈F)
と成分表示し、y = 1, …, λに対し、
δ[n, y] = Σl = 1, …, λt[n, l]E[l]^{qu}
を計算する。ここで、qは有限体Fの位数である。拡張シェアの定義より、δ[n, y]は何らかの元d[y]を秘密分散したシェアである。
・n=1, …, Nに対し、NOT計算部233−nがδ[n, 1], …, δ[n, λ] ∈ Lを入力として用いて、
e = 1 - (d[1] … d[λ])q - 1
のシェアを得るマルチパーティ計算を実行する。NOT計算部233−1〜233−Nは、実行結果として、それぞれeのシェアε[1], …, ε[N]を得る。
{復元計算}
・登録装置1の復元部132は、v個(v ≧ K)の拡張シェアT[i_1], …, T[i_v]を入力として受け取る。
・復元部132は、u = 1, …, vに対して、T[i_u]をT[i_u] = Σl = 1, …, λt[i_u, l]E[l]と成分表示する。
・復元部132は、l = 1, …, λに対して、ShamirReconst(t[i_1, l], …, t[i_v, l], K, N, F)を実行して出力a[l]を得る。
・復元部132は、a[1] = …. = a[λ] = 0である場合0を出力し、それ以外の場合1を出力する。
本実施形態の秘密計算システム10によると、有限体Fの位数qを小さく保ったままOR計算を間違える確率を小さくすることができる。したがって、本実施形態によると、ラウンド効率を悪化させることなく、マルチパーティ計算を高い確率で正しく実行することができる。また、この計算の際に、NOT計算の効率の低下を防ぐことも可能となる。
<実施形態3>
次に、第3の実施形態に係る秘密計算システムについて、図面を参照して説明する。本実施形態の秘密計算システムは、第1の実施形態に係る秘密計算システムを文字列検索(例えば、文字列の部分一致検索)に適用したものである。
以下では、Nをサーバ装置の台数とする。また、本実施形態において、文字列とは「ワード」と呼ばれるデータを有限個並べたものを指し、各ワードは0以上W未満の整数を指すものとする。さらに、第1の実施形態における有限体Fとして、位数qがW以上のものをとる。
[構成]
図3は、本実施形態に係る秘密計算システム20の構成を例示するブロック図である。図3を参照すると、秘密計算システム20は、登録装置3、検索装置4、および、サーバ装置2−1〜2−Nを備えている。登録装置1と検索装置3は、別個の装置であっても同一の装置であってもよい。同様に、登録装置1および検索装置3の機能を、サーバ装置2−1〜2−Nのいずれかが備えていてもよい。
本実施形態では、サーバ装置2−1〜2−Nに対して登録装置3が文字列を登録する。文字列を登録する登録装置3は、文字列毎に異なってもよいし同一でもよい。図3では、一例として、すべての文字列を同一の装置が登録する状況を想定し、t番目の文字列atを登録する状況を示す。
また、本実施形態では、サーバ装置2−1〜2−Nに保管された文字列を検索装置4が検索する。検索装置4は、検索文字列b毎に異なってもよいし同一でもよい。図3では、一例として、1台の検索装置4がすべての検索を行う状況を想定する。
登録装置3は、通信部31、記憶部32、および、計算部33を備えている。また、計算部33は、登録文字列のシェアを生成するシェア生成部331を備えている。
検索装置4は、通信部41、記憶部42、および、計算部43を備えている。また、計算部43は、検索文字列のシェアを生成するシェア生成部431と、復元部432を備えている。
サーバ装置2−n(n = 1, …, N)は、通信部21−n、記憶部22−n、および、計算部23−nを備えている。また、計算部23−nは、シェア拡張部231−n、OR計算部232−n、および、NOT計算部233−nを備えている。
[動作]
次に、本実施形態の秘密検索システム20の動作について説明する。
{登録手順}
ここで、a = a[1] … a[U]を登録したい文字列とする。登録装置3のシェア生成部331は、各u = 1, …, Uに対して、a[u]のシェアs[u, 1], …, s[u, N]を第1の実施形態のシェア生成と同様の手順で計算する。登録装置3の通信部31は、生成されたシェアs[u, 1], …, s[u, N]を、それぞれサーバ装置2−1〜2−Nに送る。サーバ装置2−1〜2−Nは、それぞれ、受信したシェアs[u, 1], …, s[u, N]を記憶部22−1〜22−Nに保管する。サーバ装置2−nのシェア拡張部231−n(n = 1, …, N)は、任意のタイミングでシェアs[u, n]に対する拡大シェアを計算しておく。
{検索手順}
ここでは、b = b[1] … b[V]を検索装置4がクエリする文字列とする。本実施形態では、サーバ装置2−1〜2−Nにシェアが登録されている文字列a = a[1] … a[U]のうちの、bがaの部分文字列となっているものを見つけることを目標とする。
・検索装置4のシェア生成部431は、v = 1, …, Vに対して、b[v]のシェアを計算する。検索装置4の通信部41は、計算されたb[v]のシェアをサーバ装置2−1、…、サーバ装置2−Nに送る。サーバ装置2−nのシェア拡張部231−n(n = 1, …, N)は、b[v]のシェアに対する拡大シェアを計算する。
・サーバ装置2−1〜2−Nの計算部23−1〜23−Nは、シェアが登録されている各文字列a = a[1] ... a[U]に対し、u = 1, …, U - Vに対するa[u]の拡大シェアとv = 1, …, Vに対するb[v]の拡大シェアを入力として減法と乗法のマルチパーティ計算を行うことで
c[u, v] = (a[u] - b[u + v])q
の拡大シェアを計算する。ここで、qは有限体Fの位数である。
・サーバ装置2−1〜2−NのNOT計算部233−1〜233−Nは、u = 1, …, U - V, v = 1, …, Vに対して、第1の実施形態のNOT計算を用いることで、c[u, v]の拡大シェアから
d[u, v] = NOT c[u, v]
の拡大シェアを計算する。
・サーバ装置2−1〜2−NのOR計算部232−1〜232−Nは、u = 1, …, U - Vに対して、第1の実施形態のOR計算を用いることで、d[u, v]の拡大シェアから
e[u] = d[u, 1] OR … OR d[u, V]
の拡大シェアを計算する。
・サーバ装置2−1〜2−NのNOT計算部233−1〜233−Nは、u = 1, …, U - V,に対して、第1の実施形態のNOT計算を用いることで、e[u]の拡大シェアから
f[u] = NOT e[u]
の拡大シェアを計算する。
・サーバ装置2−1〜2−NのOR計算部232−1〜232−Nは、第1の実施形態のOR計算を用いることで、f[u]の拡大シェアから
g = f[1] OR … OR f[V]
の拡大シェアを計算する。
・検索装置4の復元部432は、第1の実施形態の復元計算を用いることで、gのシェアからgを復元する。
・復元部432は、g = 1である場合、a = a[1] ... a[U]が検索にヒットしたものとみなして、a[1]のシェア、…、a[U]のシェアを検索装置に送信する。
・復元部432は、第1の実施形態の復元計算を用いることで、a[1]のシェア、…、a[U]のシェアからそれぞれa[1], …, a[U]を復元し、a = a[1] … a[U]とする。
本実施形態の秘密計算システム20によると、文字列検索をマルチパーティ計算に基づいて行う場合において、ラウンド数を削減することが可能となり、高速な文字列検索が実現される。
<実施形態4>
次に、第4の実施形態に係る秘密計算システムについて、説明する。本実施形態の秘密計算システムの構成は、第3の実施形態に係る秘密計算システムの構成(図3)と同様である。
ただし、本実施形態では、第3の実施形態において第1の実施形態1に係る「OR計算」、「NOT計算」および「復元計算」を用いる代わりに、第2の実施形態に係る「OR計算」、「NOT計算」および「復元計算」を用いる点で、第3の実施形態と相違する。
本実施形態の秘密計算システム20によると、第3の実施形態に係る秘密計算システムと同様の効果がもたらされる。すなわち、本実施形態によると、文字列検索をマルチパーティ計算に基づいて行う場合において、ラウンド数を削減することが可能となり、高速な文字列検索が実現される。
なお、本発明において、下記の形態が可能である。
[形態1]
上記第1の態様に係る秘密計算システムのとおりである。
[形態2]
前記シェア拡張部は、前記シェアを秘密分散して生成された複数のシェアを成分とする配列を前記拡張シェアとして生成し、
前記OR計算部は、前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行し、
前記NOT計算部は、前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記NOT演算を実行する、
形態1に記載の秘密計算システム。
[形態3]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記シェア拡張部は、前記シェアに対して、Shamirの秘密分散法による0の前記有限体上のシェアを加えることで、前記拡張シェアを生成する、
形態2に記載の秘密計算システム。
[形態4]
前記シェア拡張部は、前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、前記拡張シェアとして生成し、
前記OR計算部は、OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行し、
前記NOT計算部は、NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することで、前記NOT演算を実行する、
形態1に記載の秘密計算システム。
[形態5]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記シェア拡張部は、前記シェアに対して、Shamirの秘密分散法による0の前記拡大体上のシェアを加えることで、前記拡張シェアを生成する、
形態4に記載の秘密計算システム。
[形態6]
前記複数のサーバ装置は、登録対象文字列の各ワードを秘密分散して生成されたシェアと、検索装置から受け付けた検索対象文字列の各ワードを秘密分散して生成されたシェアを前記記憶部に保持し、
前記シェア拡張部、前記OR計算部、および、前記NOT計算部を用いて、前記登録対象文字列の前記各ワードと前記検索対象文字列の前記各ワードの差のべき乗のシェアを、前記登録対象文字列の前記各ワードの前記シェアと前記検索対象文字列の前記各ワードの前記シェアとを用いてマルチパーティ計算し、前記べき乗のORのシェアを前記べき乗のシェアを用いてマルチパーティ計算し、前記ORされた値のNOTを前記ORされた値のシェアを用いてマルチパーティ計算し、前記NOTされた値のORを前記NOTされた値のシェアを用いてマルチパーティ計算し、
前記検索装置は、前記計算された前記NOTされた値のORに基づいて、検索対象文字列が登録対象文字列に部分一致したか否かを判定する、
形態1ないし5のいずれか一に記載の秘密計算システム。
[形態7]
形態1ないし6のいずれか一に記載の秘密計算システムに含まれる前記複数のサーバ装置のうちの一のサーバ装置。
[形態8]
上記第3の態様に係る秘密計算方法のとおりである。
[形態9]
前記一のサーバ装置は、前記シェアを秘密分散して生成された複数のシェアを成分とする配列を前記拡張シェアとして生成し、
前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行し、
前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記NOT演算を実行する、
形態8に記載の秘密計算方法。
[形態10]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記一のサーバ装置は、前記シェアに対して、Shamirの秘密分散法による0の前記有限体上のシェアを加えることで前記拡張シェアを生成する、
形態9に記載の秘密計算方法。
[形態11]
前記一のサーバ装置は、前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、前記拡張シェアとして生成し、
OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行し、
NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することで、前記NOT演算を実行する、
形態8に記載の秘密計算方法。
[形態12]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記一のサーバ装置は、前記シェアに対して、Shamirの秘密分散法による0の前記拡大体上のシェアを加えることで、前記拡張シェアを生成する、
形態11に記載の秘密計算方法。
[形態13]
上記第4の態様に係るプログラムのとおりである。
[形態14]
前記シェアを秘密分散して生成された複数のシェアを成分とする配列を前記拡張シェアとして生成する処理と、
前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行する処理と、
前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記NOT演算を実行する処理と、を前記一のコンピュータに実行させる、
形態13に記載のプログラム。
[形態15]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記シェアに対して、Shamirの秘密分散法による0の前記有限体上のシェアを加えることで、前記拡張シェアを生成する処理を、前記一のコンピュータに実行させる、
形態14に記載のプログラム。
[形態16]
前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、前記拡張シェアとして生成する処理と、
OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで、前記OR演算を実行する処理と、
NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することで、前記NOT演算を実行する処理と、を前記一のコンピュータに実行させる、
形態13に記載のプログラム。
[形態17]
前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
前記シェアに対して、Shamirの秘密分散法による0の前記拡大体上のシェアを加えることで、前記拡張シェアを生成する処理を、前記一のコンピュータに実行させる、
形態16に記載のプログラム。
なお、上記特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
1、3 登録装置
2−1〜2−N サーバ装置
4 検索装置
10、20 秘密計算システム
11、21−1〜21−N、31、41 通信部
12、22−1〜22−N、32、42 記憶部
13、23−1〜23−N、33、43 計算部
131、331、431 シェア生成部
132、432 復元部
231−1〜231−N シェア拡張部
232−1〜232−N OR計算部
233−1〜233−N NOT計算部

Claims (10)

  1. 秘密データを引数とする所定の関数の値をマルチパーティ計算する秘密計算システムであって、
    複数のサーバ装置と、登録装置と、を備え、
    前記複数のサーバ装置は、前記秘密データを秘密分散して生成された有限体上の元であるシェアを保持する記憶部と、
    前記シェアを秘密分散して生成された複数のシェアを成分とする配列を拡張シェアとして生成するシェア拡張部と、
    前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記所定の関数に含まれるOR演算を実行するOR計算部と、
    前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記所定の関数に含まれるNOT演算を実行するNOT計算部と、を有し、
    前記登録装置は、前記複数のサーバ装置によって計算されたシェアから前記秘密データを復元する、
    ことを特徴とする秘密計算システム。
  2. 前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
    前記シェア拡張部は、前記シェアに対して、Shamirの秘密分散法による0の前記有限体上のシェアを加えることで前記拡張シェアを生成する、
    請求項に記載の秘密計算システム。
  3. 秘密データを引数とする所定の関数の値をマルチパーティ計算する秘密計算システムであって、
    複数のサーバ装置と、登録装置と、を備え、
    前記複数のサーバ装置は、前記秘密データを秘密分散して生成された有限体上の元であるシェアを保持する記憶部と、
    前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、拡張シェアとして生成するシェア拡張部と、
    OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで、前記所定の関数に含まれる前記OR演算を実行するOR計算部と、
    NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することで、前記所定の関数に含まれる前記NOT演算を実行するNOT計算部と、を有し、
    前記登録装置は、前記複数のサーバ装置によって計算されたシェアから前記秘密データを復元する、
    ことを特徴とする秘密計算システム。
  4. 前記シェアは、Shamirの秘密分散法に基づく前記秘密データの前記有限体上のシェアであり、
    前記シェア拡張部は、前記シェアに対して、Shamirの秘密分散法による0の前記拡大体上のシェアを加えることで、前記拡張シェアを生成する、
    請求項に記載の秘密計算システム。
  5. 前記複数のサーバ装置は、登録対象文字列の各ワードを秘密分散して生成されたシェアと、検索装置から受け付けた検索対象文字列の各ワードを秘密分散して生成されたシェアを前記記憶部に保持し、
    前記シェア拡張部、前記OR計算部、および、前記NOT計算部を用いて、前記登録対象文字列の前記各ワードと前記検索対象文字列の前記各ワードの差のべき乗のシェアを、前記登録対象文字列の前記各ワードの前記シェアと前記検索対象文字列の前記各ワードの前記シェアとを用いてマルチパーティ計算し、前記べき乗のORのシェアを前記べき乗のシェアを用いてマルチパーティ計算し、前記ORされた値のNOTを前記ORされた値のシェアを用いてマルチパーティ計算し、前記NOTされた値のORを前記NOTされた値のシェアを用いてマルチパーティ計算し、
    前記検索装置は、前記計算された前記NOTされた値のORに基づいて、検索対象文字列が登録対象文字列に部分一致したか否かを判定する、
    請求項1ないしのいずれか1項に記載の秘密計算システム。
  6. 請求項1ないしのいずれか1項に記載の秘密計算システムに含まれる前記複数のサーバ装置のうちの一のサーバ装置。
  7. 秘密データを引数とする所定の関数の値を複数のサーバ装置を用いてマルチパーティ計算する秘密計算方法であって、
    前記複数のサーバ装置のうちの一のサーバ装置が、前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付けるステップと、
    前記シェアを秘密分散して生成された複数のシェアを成分とする配列を拡張シェアとして生成するステップと、
    前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記所定の関数に含まれるOR演算を実行するステップと、
    前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記所定の関数に含まれるNOT演算を実行するステップと、
    前記複数のサーバ装置によって計算されたシェアから秘密データを復元する登録装置に対して、前記マルチパーティ計算の結果であるシェアを送信するステップと、を含む、
    ことを特徴とする秘密計算方法。
  8. 秘密データを引数とする所定の関数の値を複数のサーバ装置を用いてマルチパーティ計算する秘密計算方法であって、
    前記複数のサーバ装置のうちの一のサーバ装置が、前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付けるステップと、
    前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、拡張シェアとして生成するステップと、
    OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで、前記所定の関数に含まれる前記OR演算を実行するステップと、
    NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することで、前記所定の関数に含まれるNOT演算を実行するステップと、
    前記複数のサーバ装置によって計算されたシェアから秘密データを復元する登録装置に対して、前記マルチパーティ計算の結果であるシェアを送信するステップと、を含む、
    ことを特徴とする秘密計算方法。
  9. 秘密データを引数とする所定の関数の値を複数のコンピュータを用いてマルチパーティ計算するプログラムであって、
    前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付ける処理と、
    前記シェアを秘密分散して生成された複数のシェアを成分とする配列を拡張シェアとして生成する処理と、
    前記拡張シェアの各成分に対して、前記有限体上の乱数のシェアを乗じて足し合わせることで、前記所定の関数に含まれるOR演算を実行する処理と、
    前記拡張シェアの各成分がシェアする値を前記有限体の位数から1を引いた値でべき乗したものを1から差し引いた値の積をマルチパーティ計算することで、前記所定の関数に含まれるNOT演算を実行する処理と、
    前記複数のサーバ装置によって計算されたシェアから秘密データを復元する登録装置に対して、前記マルチパーティ計算の結果であるシェアを送信する処理と、
    を前記複数のコンピュータのうちの一のコンピュータに実行させる、
    ことを特徴とするプログラム。
  10. 秘密データを引数とする所定の関数の値を複数のコンピュータを用いてマルチパーティ計算するプログラムであって、
    前記秘密データを秘密分散して生成された有限体上の元であるシェアを受け付ける処理と、
    前記シェアを秘密分散して生成された複数のシェアを前記有限体の拡大体上の元として表したものを、拡張シェアとして生成する処理と、
    OR演算の対象となる拡張シェアに対して、前記拡大体上の乱数のシェアを乗じて足し合わせることで前記OR演算を実行する処理と、
    NOT演算の対象となる拡張シェアを前記拡大体の基底で成分表示し、各成分に対応する基底を前記有限体の位数のべき乗でべき乗したものを各成分に乗じたものの和を求め、求めた和がシェアしている値の積を前記有限体の位数から1を引いた値でべき乗したものを1から減じた値をマルチパーティ計算することでNOT演算を実行する処理と、
    前記複数のサーバ装置によって計算されたシェアから秘密データを復元する登録装置に対して、前記マルチパーティ計算の結果であるシェアを送信する処理と、
    を前記複数のコンピュータのうちの一のコンピュータに実行させる、
    ことを特徴とするプログラム。
JP2017510254A 2015-04-03 2016-04-01 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム Active JP6693508B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015077064 2015-04-03
JP2015077064 2015-04-03
PCT/JP2016/060941 WO2016159357A1 (ja) 2015-04-03 2016-04-01 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム

Publications (2)

Publication Number Publication Date
JPWO2016159357A1 JPWO2016159357A1 (ja) 2018-02-01
JP6693508B2 true JP6693508B2 (ja) 2020-05-13

Family

ID=57006178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017510254A Active JP6693508B2 (ja) 2015-04-03 2016-04-01 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム

Country Status (3)

Country Link
US (1) US10749671B2 (ja)
JP (1) JP6693508B2 (ja)
WO (1) WO2016159357A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042358B2 (en) * 2016-08-18 2021-06-22 Nec Corporation Secure computation system, secure computation method, secure computation apparatus, distribution information generation apparatus, and methods and programs therefor
US11646880B2 (en) * 2017-01-18 2023-05-09 Nippon Telegraph And Telephone Corporation Secret computation method, secret computation system, secret computation apparatus, and program
US11334353B2 (en) 2017-05-18 2022-05-17 Nec Corporation Multiparty computation method, apparatus and program
US10749670B2 (en) * 2017-05-18 2020-08-18 Bank Of America Corporation Block chain decoding with fair delay for distributed network devices
JP6713585B2 (ja) * 2017-07-05 2020-06-24 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、プログラム、および記録媒体
CN111543025A (zh) * 2017-08-30 2020-08-14 因福尔公司 高精度隐私保护实值函数评估
EP3688921B1 (en) * 2017-09-29 2021-07-14 Robert Bosch GmbH Method for faster secure multiparty inner product computation with spdz
EP3757976B1 (en) * 2018-02-20 2023-10-11 Nippon Telegraph And Telephone Corporation Secret calculation device, secret calculation authentication system, secret calculation method, and program
US11934518B2 (en) 2019-01-09 2024-03-19 Nec Corporation Verification apparatus, multiparty computation verification system, and method and program for verifying multiparty computation executable code
JP2022523182A (ja) * 2019-02-22 2022-04-21 インファー,インク. モジュラー整数を使用したセキュアなマルチパーティ計算のための算術
US11101980B2 (en) * 2019-05-01 2021-08-24 Baffle, Inc. System and method for adding and comparing integers encrypted with quasigroup operations in AES counter mode encryption
US11190339B2 (en) * 2019-05-14 2021-11-30 Baffle, Inc. System and method for performing equality and less than operations on encrypted data with quasigroup operations
EP4080488B1 (en) * 2019-12-19 2024-02-28 Nippon Telegraph And Telephone Corporation Secret random number generation system, secret calculation device, secret random number generation method, and program
CN113098840B (zh) * 2021-02-25 2022-08-16 鹏城实验室 基于加法秘密分享技术的高效安全线性整流函数运算方法
US11637690B1 (en) 2021-10-08 2023-04-25 Baffle, Inc. Format preserving encryption (FPE) system and method for long strings

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9270414B2 (en) * 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
JP5065795B2 (ja) 2007-08-03 2012-11-07 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP5400705B2 (ja) 2010-02-24 2014-01-29 日本電信電話株式会社 秘密計算システム、秘密計算方法、計算装置
EP2858297B1 (en) * 2012-07-05 2017-03-01 Nippon Telegraph And Telephone Corporation Secret sharing system, data distribution apparatus, distributed data transform apparatus, secret sharing method and program
JP5995749B2 (ja) 2013-02-26 2016-09-21 日本電信電話株式会社 秘密集合演算装置及び方法

Also Published As

Publication number Publication date
WO2016159357A1 (ja) 2016-10-06
JPWO2016159357A1 (ja) 2018-02-01
US20180115415A1 (en) 2018-04-26
US10749671B2 (en) 2020-08-18

Similar Documents

Publication Publication Date Title
JP6693508B2 (ja) 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム
Ding et al. Encrypted data processing with homomorphic re-encryption
Pasupuleti et al. An efficient and secure privacy-preserving approach for outsourced data of resource constrained mobile devices in cloud computing
Lambić A novel method of S-box design based on chaotic map and composition method
US9515828B2 (en) Sharing a secret via linear interpolation
US8638926B2 (en) Sharing a secret with modular inverses
Liu et al. Efficient and privacy-preserving skyline computation framework across domains
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
WO2016148281A1 (ja) 秘匿文字列計算システム及び方法と装置並びにプログラム
CN108055128B (zh) Rsa密钥的生成方法、装置、存储介质及计算机设备
US20170257218A1 (en) Cryptographic hash generation system
CN110826089A (zh) 一种实现大尺度矩阵乘法安全高效的可验证外包计算方法、客户端及云计算***
CN112769542A (zh) 基于椭圆曲线的乘法三元组生成方法、装置、设备及介质
EP3959841B1 (en) Compression and oblivious expansion of rlwe ciphertexts
US11599681B2 (en) Bit decomposition secure computation apparatus, bit combining secure computation apparatus, method and program
US11101981B2 (en) Generating a pseudorandom number based on a portion of shares used in a cryptographic operation
Syam Kumar et al. RSA-based dynamic public audit service for integrity verification of data storage in cloud computing using Sobol sequence
Biksham et al. A lightweight fully homomorphic encryption scheme for cloud security
Ramezanian et al. Privacy preserving shortest path queries on directed graph
Liu et al. Privacy-preserving decentralised singular value decomposition
Block et al. Secure computation using leaky correlations (asymptotically optimal constructions)
CN113806760A (zh) 获取特征间相关系数方法、装置、电子设备及存储介质
Sardar et al. The secure link prediction problem
WO2014203339A1 (ja) 保持数検証システム
Vuicik et al. Efficiency of RSA key factorization by open-source libraries and distributed system architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191015

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200330

R150 Certificate of patent or registration of utility model

Ref document number: 6693508

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150