JPWO2016129363A1 - 分散装置、演算・復元装置、及びプログラム - Google Patents
分散装置、演算・復元装置、及びプログラム Download PDFInfo
- Publication number
- JPWO2016129363A1 JPWO2016129363A1 JP2016574708A JP2016574708A JPWO2016129363A1 JP WO2016129363 A1 JPWO2016129363 A1 JP WO2016129363A1 JP 2016574708 A JP2016574708 A JP 2016574708A JP 2016574708 A JP2016574708 A JP 2016574708A JP WO2016129363 A1 JPWO2016129363 A1 JP WO2016129363A1
- Authority
- JP
- Japan
- Prior art keywords
- secret information
- secret
- server
- less
- integer
- 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.)
- Pending
Links
- 239000002131 composite material Substances 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 185
- 238000003860 storage Methods 0.000 claims description 50
- 238000009826 distribution Methods 0.000 claims description 42
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 238000012937 correction Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 281
- 238000012545 processing Methods 0.000 description 118
- 230000008569 process Effects 0.000 description 114
- 239000006185 dispersion Substances 0.000 description 98
- 230000005540 biological transmission Effects 0.000 description 61
- 230000006837 decompression Effects 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 230000001174 ascending effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 230000009467 reduction Effects 0.000 description 9
- 239000013598 vector Substances 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 7
- 238000013139 quantization Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 5
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 241001367053 Autographa gamma Species 0.000 description 1
- 101100014539 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) get-1 gene Proteins 0.000 description 1
- 102000005765 Proto-Oncogene Proteins c-akt Human genes 0.000 description 1
- 108010045717 Proto-Oncogene Proteins c-akt Proteins 0.000 description 1
- 241000269821 Scombridae Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 235000020640 mackerel Nutrition 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 238000011410 subtraction method Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
W(x)=s+a1x+a2x2+…+ak-1xk-1 (1)
Wa(xj)=a+a1xj+a2xj2+…+ak-1xjk-1 (2)
Wb(xj)=b+b1xj+b2xj2+…+bk-1xjk-1 (3)
Wa(xj)+Wb(xj)=(a+b)+(a1+b1)xj+(a2+b2)xj2+…+(ak-1+bk-1)xjk-1 (4)
k-1次の多項式同士の乗算結果は、2k-2次の多項式となる。よってその多項式を解く(各係数を求める)ためには、2k-1個の分散値が必要になり、集める分散値の数が乗算の場合のみ増加するという問題が生じる。すなわち、(k,n)秘密分散法において1つのサーバに1つの分散値を保存している場合、k個のサーバがあれば秘密情報の復元や秘匿加減算は可能であるが、乗算に対しては2k-1個のサーバが必要になり、乗算の場合だけ復元に必要なサーバの数が増加する。例えば、(3,5)秘密分散法や(2,3)秘密分散法の場合、秘密情報の復元と加減算に対しては各々3つ、2つの分散値を集めればよいため、全サーバ数のうち2つまたは1つのサーバが破損しても問題ない。しかし、(3,5)秘密分散法や(2,3)秘密分散法を乗算に用いる場合は、各々2k-1=5個、2k-1=3個のサーバが必要になる。よって、乗算は実現できるが、1つのサーバの破損も許されなくなる。また、(3,4)秘密分散法を用いる場合、秘密情報の復元と加減算は問題ないが、乗算に関しては2k-1=5個の分散値が必要なため、4つのサーバで構成されたシステムでは乗算が実現できない。すなわち、乗算の場合のみシステム構成を変える、または破損耐性を変える必要がある。従って、多項式の次数変化がなく乗算を行える手法があれば、これらの問題を解決することができる。サーバの台数変化のない乗算手法として[2]が提案されている。この手法は以下のように1つのサーバに2つの分散値を持たせ、1つの分散値を秘匿化して乗算を行い、その後乱数を削除するため、サーバ台数を変える必要はないとしている。
[分散]
(1)秘密情報aをもつオーナAは乱数αを生成し、以下をサーバxi(i=1,・・・,n)用に秘密分散する(ai,jは乱数)。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xik-1
Wa’(n+xi)=α(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α+a1,1xi+・・・+a1,k-1xik-1
Wb(xi)=b+b0,1xi+・・・+b0,k-1xik-1
Wb’(n+xi)=β(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β+b1,1xi+・・・+b1,k-1xik-1
各サーバはWab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(n+xi)Wb’(n+xi)を計算する(i=1,…,n)。
[復元]
(1)サーバj(j=1,…,k)はWab(xj)、Wab’(xj)、Wa1(xj)、Wb1(xj)を復元者に送る。
(2)復元者の復元端末はWa1(xj)からαを、Wb1(xj)からβを復元し、Wab’(xj)をαとβで割り、Wab(n+xj)を作る。
(3)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
(1)サーバj(j=1,…,n)は各々1つずつの乱数rjとqjを生成して、互いに交換しr=r1・・・rn、q=q1・・・qnを生成する。
(2)サーバj(j=1,…,k)はWab(xj)とWab’(xj)にrq、Wa1(xj)にr、Wb1(xj)にqをかけて復元者に送る。
(3)復元者の復元端末はr・Wa1(xj)からrαを、q・Wb1(xj)からqβを復元し、Wab’(xj)をrαとrβで割り、Wab(n+xj)を作る。
(4)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
次に、除算について考える。上記(2)(3)を乗算することによって定数項にa・bを持つ分散値を作れるが、(2)を(3)で割ってもb/aを定数項に持つ分散値は得られない。すなわち、分散値を用いて秘密情報同士の除算を実現する手法は難しく、少なくとも乗算と同様の手法では実現できないことが知られている。よって、従来法及び[2]の手法では除算用に特殊な手段を用意する必要がある。よって、除算も乗算と同様の手段で実現できれば秘匿演算の効率化が実現できる。
前述した秘匿演算の連続について考える。例として、秘密情報aを定数項にもつ多項式Wa(x)、秘密情報bを定数項に持つ多項式Wb(x)、秘密情報cを定数項に持つ多項式Wc(x)を用いてa・b+cの積和演算を求める場合、一般的にはまずWa(x)Wb(x)の乗算を行い、その後Wa(x)Wb(x)+Wc(x)の加算を連続して行う。この場合、各多項式の次数をk-1次とすると、Wa(x)Wb(x)の次数は2k-2になっているのでk-1次のWc(x)との加算は整合性がよくない。できれば、Wa(x)Wb(x)をk-1次の多項式に変換して、Wc(x)と加算することが望まれる。それに対しては、積多項式について以下に示す次数の変換法が知られている[1]。ここでは簡単のため、2k次の多項式をk次の多項式に変換する場合を示す。ここで、h(x)を2k次多項式、f(x)とg(x)をk次多項式とする。さらに、n台のサーバに対するh(x)の分散値をW=(W1,W2,・・・,Wn)とする。
h(x)=h0+h1x+・・・+h2kx2k
Wi=h(xi)=f(xi)g(xi) (i=1,・・・,n)
h’(x)=h0+h1x+・・・+hkxk
Ri=h’(xi)
(I)〜(III)は、秘匿乗算を含む秘匿演算に関連する問題であるが、最初に述べたように秘密情報が分散値として大容量ストレージに分散・保管され、その分散値をネットワーク経由でユーザがアクセスする場合、検索に関する以下のような問題も生じる。例えば、企業の経理処理を行うようなアプリを考え、その入金や出金に関する金額を秘匿するために上記秘密分散法を用いているとする。すなわち、企業の社員Aは自分の業務上発生した入金や出金を企業のn台のサーバに秘密分散しており、企業は全社員からの入金や出金に関する分散値を用いて合計や平均、分散などを計算し管理しているとする。この場合、n台のサーバには入出金に関する金額の分散値と一緒に、その金額が生じた日時を検索IDとして保存している必要がある。これによって、例えば社員Aがある日時の入出金を確認したい場合、その日時を検索IDとしてk個のサーバに送れば、各サーバはその検索IDを用いて対応する分散値を検索し社員Aに伝え、社員Aはそれを復元して金額情報を確認できる。また、そのアプリの秘匿計算を利用する場合、ある期間を指定すれば、そのアプリはその期間内にある分散値を、日時を検索IDとして集め、その期間内の金額の合計や、平均値、分散などといった各種統計値を、秘密情報である各金額をサーバに知られることなく計算でき、企業の会計担当者などに伝えることができる。しかし逆に、金額を指定し、その金額が発生した日時を特定するといった検索はできない。例えば社員Aが発生した金額のみ記憶しており、それが発生した日時を検索しようとしても、その金額は秘密分散されているため、その分散値がわからなければ検索IDを逆引きすることはできない。さらに、日時から金額を検索する場合においても、日時情報は秘匿されていないため、どの日時の情報が検索されているかサーバは知ることができる。すなわち、企業Aがデータ保管のためのサーバシステムをアウトソーシングしている場合、アウトソーシング先の企業は企業Aにおいて重要な取引があった日(よく検索されている日)などを知ることができる。これに対して、検索IDである日時を暗号化して保存したとすれば、サーバはいつの日時のデータが検索されているかわからないが、暗号化したユーザしか金額の検索ができない。企業の取引に関する金額データなどの場合、そのデータは複数の人によってアクセスされると考えられるが、この場合、暗号化に用いたその暗号鍵を複数の人で共有する必要ができ安全性が低下する。よって、ユーザが何を検索しているかサーバにわからせず、暗号鍵のような特殊な情報を共有しなくても秘密分散した分散値を検索できる仕組みが必要である。また、秘密情報と検索IDは相互に検索されることがあるので、秘密情報の分散値が秘匿演算可能な形であれば、検索IDの分散値も同様の形をしていることが望まれる。
さらに、秘密分散によって秘匿演算及び秘匿検索を実装できるシステムがネットワーク上に実現できた場合、そのシステムが保管している情報の更新は安全性を向上させるために必要なもう1つの大きな課題である。すなわち、n台のサーバからなるシステムがネットワーク上に構成された場合、秘密分散法によりk-1台までの情報漏えい(不正アクセス)があったとしても秘密情報は安全であるが、k-1台以下の情報漏えいがあった場合それをそのままにしていては、攻撃を受け続けた場合、いつかk台の情報が漏洩する可能性がある。よって、定期的にまたはその情報を使用するたびに保管している情報を更新できれば安全性が保たれる。具体的には、(1)の形で保存されている分散値の秘密情報sを変えずに乱数a 1〜a k-1を新たな乱数に更新できれば、前の不正アクセスで漏洩した分散値を無効にできる。また、安全性を向上させるため式(1)の閾値kの値を大きくする場合も、秘密情報sは変えずに多項式の次数及び乱数を変更しなければならない。さらに、秘密情報s自体も使用する毎に変更する場合も分散値の更新が必要になる。これらに対して自明な方法としては、システムが一旦k個の分散値を集め、秘密情報sを復元して新たな多項式をたてて再分散を行うことが考えられるが、この場合更新の過程で秘密情報sが復元されるため安全性が低下する。一方、分散値の更新に関しては[3]が知られているが、この手法はn-k台のサーバが分散値の差分情報の復元処理を行うため効率的ではない。さらに、n-k台のサーバが全サーバの更新に必要な差分情報を知るため、n-k台のうちの1台のサーバを盗聴されると他のサーバの更新値が漏洩し、安全性が低下する。よって、安全性を低下させず、かつ効率的に分散値を更新できる手法が必要である。また、従来手法は秘密情報及び各係数が秘匿化されていない、すなわち分散値が秘匿化されていない場合を想定した更新法であり、後述する実施の形態に示す秘密情報及び各係数が秘匿化されている、すなわち分散値が秘匿化されてい場合の更新法は知られていない。よって、秘匿化された分散値に対しても適用できる更新法が望まれる。
秘密分散法は1つの秘密情報をn個に分散するため、大きな記憶容量を必要とする。記憶容量の小型化を実現するために、分散情報サイズを小型化する(k,L,n)ランプ型秘密分散法や、分散情報の数を削減する(k,n)非対称秘密分散法[4]などが知られている。ランプ型秘密分散法は最も大きな記憶容量削減を実現する一方、秘密情報の復元はk台のサーバがあれば実行できるため、サーバを提供している企業などがk台のサーバの情報を集めれば秘密情報の所有者であるユーザの意思に関係なく秘密情報の復元が可能である。それに対して、非対称秘密分散は記憶容量の小型化と、秘密情報の復元にユーザ自身が参加可能という特徴を持ち、ユーザが参加しなければ秘密情報は復元されないので、個人情報の利用などにおいて大きな役割を果たす。よって、ランプ型秘密分散法と非対称秘密分散に対して、かつ上記(I)〜(V)の特徴をもつ秘匿計算、秘匿検索、秘匿更新が実現できれば、個人情報の秘匿演算に同様の効果をもたらすことが期待される。さらに、これらの手法の組み合わせは考慮されておらず、その組合せによって最適な小型化が期待できる。
以上ではShamirの(k,n)秘密分散法を基本として説明したが、Shamir法は多項式の合成や多項式を解く処理が必要であり、処理が効率的でない。それに対して、多項式処理を行わず、XOR演算のみを用いて高速に(k,n)秘密分散を実行する手法(以降、XOR法)なども知られている。しかし、XOR法は秘密情報をビット列として扱うために、秘密情報を数値として扱う演算、すなわち秘匿演算を実現することができなかった。そこで、本発明ではXOR法を拡張し、秘密情報をビット列ではなく数値として扱い、秘匿演算できる手法にする。ただし、XOR法の秘密情報をビット列ではなく数値として扱い秘匿加算を行う手法に関しては既に提案されている[5]が、秘匿乗算については提案されていない。このXOR法の拡張法(以降、多値化法)は秘密情報の復元は分散値の加算と減算だけで実現できるため、多項式を解く必要があるShamir法と比べ、高速に演算が実行できる。よって、XOR法の拡張方式に関しても上記(I)〜(V)の特徴をもつ秘匿演算、秘匿検索、秘匿更新が実現できれば非常に効率的な処理が実現できる。
よって、上記の特徴を全て実現する(k,n)秘密分散法に適した手法が実現されることは重要である。特に、XOR法に対するランプ型秘密分散法は提案されているが、XOR法を拡張した多値化法に対応するランプ型秘密分散法は提案されていない。また、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法をランプ型秘密分散法の組み合わせ、非対称秘密分散法と多値化法のランプ型秘密分散法との組み合わせも提案されておらず、さらにそれらを用いた秘匿演算も提案されていない。特に、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法とランプ型秘密分散法、非対称秘密分散法と多値化法に対応するランプ型秘密分散法の組合せは記憶容量の小型化と高速化を同時に実現できる。
第1の秘匿化秘密情報に用いられた第1の乱数を構成する複数の乱数のうちの1つである第1の部分乱数の分散値と、第2の秘匿化秘密情報に用いられた第2の乱数を構成する複数の乱数うちの1つである第2の部分乱数の分散値とを集めて、前記第1の部分乱数と前記第2の部分乱数を復元する手段と、
前記復元した第1の部分乱数と第2の部分乱数を合成する手段と、
を備える計算装置。
より大きな素数を法として、乗算及び除算を加算及び減算に分解することなく、加算と減算だけで行う手段と、を備える。
請求項17に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステム秘密情報の格納位置を検索する計算装置であって、第1の検索用秘密情報と第2の検索用秘密情報の差を取得する手段と、前記差に応じて前記格納位置を定める手段と、を備える。
請求項18に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を更新する計算装置であって、秘密情報の分散値に、予め定められた第1の乱数を乗算しかつ予め定められた第2の乱数を加算する手段を備える。
本願発明は、除算を、乗算と同様の手段で実現できる。
本願発明は、連続した秘匿演算を矛盾なく実現できる。
本願発明は、例えば、検索IDから秘密情報への及び秘密情報から検索IDへの双方向の検索を実現できる。
本願発明は、効率的かつ安全にその分散値を更新することができる。
本願発明は、記憶容量の小型化を実現できる。
本願発明は、処理の高速化を実現できる。
本願発明は、記憶容量の小型化と共に処理の高速化を実現できる。
(全体構成)
最初に、第1の実施の形態〜第10の実施の形態の全体の構成を説明する。
(k,n)秘密分散法を用いて秘密情報の分散保管、秘匿計算、秘匿検索、秘匿更新を行う図1に示すシステムを考える。システムは、秘密情報の分散を行う複数のディーラ装置を備えている。図1では、3つのディーラ装置、即ち、第1のディーラ装置12A、第2のディーラ装置12B、及び第3のディーラ装置12Cを備えている例を示している。また、システムは、分散されたn個の分散値を独立に保管するn個のサーバ、即ち、第1のサ−バ14x1、第2のサ−バ14x2、・・・第n個のサ−バ14xn(以降、サ−バシステムともいう)を備えている。更に、システムは、秘密情報または秘匿演算された結果の復元を行う復元装置16を備えている。図1では、復元装置16は1つのみ示しているが、複数の復元装置16を備えることもできる。なお、複数の復元装置16を備える場合でも、各復元装置16は以下に示す処理を実行する。また、システムは、検索サーバ18を備える場合もある。第1のディーラ装置12A〜第3のディーラ装置12C、第1のサ−バ14x1〜第n個のサ−バ14xn、及び復元装置16は、インタ−ネット等のネットワ−ク10を介して相互に接続されている。これに対し、検索サーバ18は、ネットワ−ク10を介さずに、第1のサ−バ14x1〜第n個のサ−バ14xnの各々に直接接続されている。
Shamirの(k,n)秘密分散法に対して閾値kを変化させない秘匿乗算法を以下に示す。第1のディーラ装置12Aが秘密情報aを持ち、第2のディーラ装置12Bが秘密情報bを持つ。以下では、a,bを秘匿したままa・bの乗算結果を得る場合を示す。
前提として、生成する乱数は0を含まないとし、第1のサ−バ14x1〜第n個のサ−バ14xnの識別データ(サ−バID)であるx1〜xnは公開の値である、即ち、他の装置は、各サーバIDを記憶しているとする。また、a,bは素数p以下の整数とし、演算はq(>pu、uは1以上の整数。ただし、元々pを大きくとった場合はp=qとしてもよい)を素数として、qを超えた値に対してはその余りをとる法演算を用いて行われる。αiやβi(i=1,…,k)などの乱数は素数q以下の整数とする。さらに、パラメ−タが実数の場合でも、以下のようにすれば整数として扱える。まず、実数は小数点以下の位が定められているとする。例えば、小数点第2位までとされる場合、100倍すれば整数として扱える。よって、実数を秘密分散する場合、実数は桁上げをして整数として表す(これを実数の整数表現と呼ぶ)。その小数点位置は別に記憶されている、または規定によって予め定められているとする。よって、実数の整数表現同士の和は整数の和と同様に扱え、小数点位置も変化しない。それに対して、実数の整数表現同士の積も整数の積と同様に扱えるが、小数点位置に変化が生じる。例えば、小数点第2位の実数同士の積を計算する場合、小数点第4位の実数となる。前述のように、全ての実数は小数点以下の位が定められているとする場合、小数点第3位以下は切り捨てまたは四捨五入されて、積も小数点第2位の実数とする。このように小数点位置の規定に従って小数点位置の調整を行い実数に戻すことを実数化と呼ぶ。一般に、実数はコンピュ−タ上では固定小数点表現と浮動小数点表現があるが、これらはあくまで表現であるので上記のような規則が定められていればどちらにも対応できる。以上の前提は全実施の形態を通して共通である。
以下、秘匿乗算1(基本形)を説明する。秘匿乗算1(基本形)は、分散、乗算、及び復元の各処理により実行される。
[分散]
まず、分散(秘匿分散)を、図3〜図6を参照して説明する。
第1のディーラ装置12AのCPU22は、図3に示す分散値処理を実行する。
ステップ42で、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する。
ステップ44で、以下の分散値を計算する。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k−1xi k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiは上記のように公開されているサ−バID(i=1,…,n)である。
n=4、k=3とすると、第1のサ−バ14x1〜第nのサ−バ14xnの分散値Wa’(xi)〜Wak(xi)は、図4に示す通りである。
ステップ52で、k個の乱数βiを生成し、その積β=β1・β2・・・βkを計算する。
ステップ54で、以下の分散値を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k−1xi k−1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)
n=4、k=3とすると、第1のサ−バ14x1〜第nのサ−バ14xnの分散値Wb’(xi)〜Wbk(xi)は、図6に示す通りである。
次に、乗算を図7〜図9を参照して説明する。
サ−バシステム内の、例えば予め定められた1つのサ−バ、例えば、第1のサ−バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する。図7のステップ62(図8も参照)で、自身のサーバ14x1及び他のサ−バ14x2〜14xkから、Wa’(xi)をk個集め、ステップ64でαaを復元し、ステップ66で、αaを、演算に参加する他のサ−バ、例えば、他の全てのサ−バ14x2〜14xnに送信する。その様子を図8に示す。
Wab’(xj)=αβa(b+b0,1xj+・・・+b0,k−1xj k−1)
n=4、k=3の場合の、第1のサーバ14x1〜第4のサーバ14x4におけるWab’(x1)〜Wab’(x4)は、図9(B)に示す通りである。
次に、復元を、図10〜図13を参照して説明する。
復元に参加するサ−バj(j=1,…,k)、即ち、例えば、予め定められた第1のサ−バ14x1〜第kのサ−バ14xkの各々のCPU22は、図10のαjβjの復元・計算・送信処理を実行する。即ち、ステップ72(図11も参照)で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ74で、αjとβjを1つずつ復元する。図11では、第1のサ−バ14x1はj=1が指定されてα1とβ1を復元し、第2のサ−バ14x2はj=2が指定されてα2とβ2を復元し、第3のサ−バ14x3はj=3が指定されてα3とβ3を復元する。
ステップ84(図13も参照)で、αjβj(j=1,・・・,k)からαβを合成し、ステップ86(図13も参照)で、αβabをαβで割ってabを得る。
以上は、以降の実施の形態についても同様である。
次に、乗算を繰り返してabcを計算する場合を説明する。なお、乗算の後に加算を行う場合は第3の実施の形態に示す。
[分散]
[分散]においてa,bは秘匿乗算1と同様に分散されているとする。即ち、第1のディーラ装置12A、第2のディーラ装置12Bはそれぞれ、図3、図5の分散処理を実行する。
第3のディーラ装置12CのCPU22は、図14の分散処理を実行する。即ち、ステップ92で、k個の乱数γiを生成し、その積γ=γ1・γ2・・・γkを計算する。
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k−1xi k−1)
Wc1(xi)=γ1+c1,1xi+・・・+c1,k−1xi k−1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k−1xi k−1
ステップ96で、n個の第1のサ−バ14x1〜第nのサ−バ14xnに、分散値Wc’(xi)〜Wck(xi)を送信する。
なお、n=4、k=3の場合、上記分散値Wc’(xi)〜Wck(xi)は、図15に示す通りである。
秘匿乗算1の上記処理(図7、図9)を実行し、Wab’(xi)を計算する。
予め定められたサ−バ、例えば、第1のサ−バ14x1のCPU22は、図16のγcの復元・送信処理を実行する。即ち、ステップ102(図16も参照)で、Wc’(xj)をk個集め、ステップ104(図16も参照)で、γcを復元し、ステップ106(図16も参照)で、γcを他のサ−バに送信する。上記例では、γcをサーバ14x2〜14x4に送信する。その様子を図17に示す。
Wabc’(xj)=αβγc(ab+ab0,1xi+・・・+ab0,k−1xi k−1)
n=4、k=3の場合、第1のサーバ14x1〜第4のサーバ14x4におけるWabc’(x1)〜Wabc’(x4)は、図18(B)に示す通りである。
復元に参加する予め定められたサ−バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1〜第kのサーバ14xkの各々のCPU22は、図19のαjβjγjの復元・計算・送信処理を実行する。即ち、ステップ112で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)(i=1,…,k)を集める(n=4、k=3の場合の例を示す図20も参照)。ステップ114で、1サ−バ当たりαj ,βj ,γjを1つずつ復元する。ステップ116で、積αjβjγjを計算し、ステップ118で、Wabc’(xj)とαjβjγjを復元装置16に送信する。
[分散]
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図23に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、ステップ101で、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k−1xi k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
Wd1(xi)=d1+d1,1xi+・・・+d1,k−1xi k−1
Wd3(xi)=d3+d3,1xi+・・・+d3,k−1xi k−1
ただし、ah,j及びd1,j、d3,j(h=0,・・・,k、j=1,・・・,k−1)は乱数(整数),xiはサ−バID(i=1,…,n)
Wb’(xi)=β(b+b0,1xi+・・・+b0,k−1xi k−1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
Wd2(xi)=d2+d2,1xi+・・・+d2,k−1xi k−1
Wd4(xi)=d4+d4,1xi+・・・+d4,k−1xi k−1
ただし、bh,j及びd2,j、d4,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)
復元に参加するサーバ、例えば、予め定められた第1のサ−バ14x1〜第kのサ−バ14xkの各CPU22は、図25に示すαjβjの復元・送信処理を実行する。即ち、ステップ121で、指定されたjに応じたWaj(xj)とWbj(xj)を、jに対応するサーバから集め、ステップ123で、αjとβjを素数pを法として1つずつ復元する。ステップ125で、実数化したαjとβjを用いてαjβjを実数演算し、ステップ127で、計算したαjβjを復元装置16に送信する。
復元装置はWd1(xi)+Wd3(xi)を復元して、それをk倍した値からαβの小数点位置を知り、αβの小数点位置を調整する。
復元装置はWd2(xi)+Wd4(xi)を復元して、その値からαβabの小数点位置を知り、αβabの小数点位置を調整する。
また、上記では小数点位置を表す値も秘密分散し、演算結果の小数点位置を調整したが、例えば小数点位置がある値に固定されている場合、小数点位置を表す分散値及び秘匿演算は省略できる。例えば、全てのパラメータは小数点第2位の実数と定められていれば、上記アルゴリズムではαβの小数点位置は2kであり、αβabの小数点位置は4であることは明らかである。
以上は、以降の実施の形態についても同様である。
次に、秘匿除算を行う場合を説明する。ここでは第2のディーラ装置12Bが持つ秘密情報bを第1のディーラ装置12Aが持つ秘密情報aで割る、即ちb/aを計算する場合を考える。
(秘匿除算1(基本形))
まず、秘匿除算1(基本形)について説明する。秘匿除算1(基本形)は、分散、除算、及び復元の処理により実行される。
[分散]
秘匿除算1(基本形)の分散は、秘匿乗算1の分散処理(図3、図5)と同様であるので、その説明を省略する。
[除算]
次に、除算を説明する。あるサ−バ14xd、例えば、予め定められた第1のサ−バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する(図8も参照)。即ち、Wa’(xi)をk個集め(ステップ62)、αaを復元し(ステップ64)、αaを他のサ−バに分散する(ステップ66)。
Wab’(xj)=(β/αa)(b+b0,1xj+・・・+b0,k−1xj k−1)
n=4.k=3の場合の、第1のサーバ14x1〜第4のサーバ14x4におけるWab’(xj)は、図28(B)に示す通りである。
次に、復元を説明する。
復元に参加するサ−バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1〜第kのサーバ14xkの各CPU22は、図29のβj/αjの復元・計算・送信処理を実行する。即ち、ステップ132(図30も参照)で、予め指定されたjに応じたWaj(xi)とWbj(xi)(i=1,…,k)を集め、ステップ134(図30も参照)で、1サ−バ当たりαjとβjを1つずつ復元する。
n=4、k=3の場合、上記処理により、復元装置16には、図30に示す各データが送信されている。
次に、秘匿除算2(繰り返し)を説明する。秘匿除算2(繰り返し)では、秘密情報cによる秘匿除算を連続させる。この場合、第1の実施の形態の秘匿乗算2の[乗算]と[復元]において、以下の変更を行うことにより実行できる。
秘匿除算2(繰り返し)における分散は、秘匿乗算2の分散処理(図3、図5、図14)と同様であるので、その説明を省略する。
[除算]
各サ−バ14x1〜14xnのCPU22(A)は、前述した図23(A)に示す除算処理を実行して、Wab’(xi)(図23(B))を計算する。
Wabc’(xj)=(β/αaγc)(b+b0,1xi+・・・+b0,k−1xi k−1)
n=4、k=3の場合の、第1のサーバ14x1〜第4のサーバ14x4のWabc’(x1)〜Wabc’(x4)は、図33(B)に示す通りである。
復元に参加するサーバ、例えば、予め定められたサ−バ14x1〜14xkの各CPU22は、図34のαjβjの復元・計算・送信処理を実行する。即ち、ステップ152(図35も参照)で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)を集め(i=1,…,k)、ステップ154(図35も参照)で、1サ−バ当たりαj ,βj,γjを1つずつ復元する。
秘匿除算と乗算を組み合わせた連続の場合も同様の拡張が可能であることは明らかである。
次に、パラメ−タが実数の場合の秘匿除算を説明する。加減算や乗算は上述したように、実数を整数表現し、素数pまたはqに対応してパラメータを設定することで対応可能である。
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図3に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する(ステップ42)。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k−1xi k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k−1)は乱数(整数),xiはサ−バID(i=1,…,n)
ステップ54で、以下の分散値を計算する。この場合、bとβを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とし、βbを実数計算した後、βbを整数表現し、素数qを法として以下の分散値を計算する。また、βi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k−1xi k−1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)
ステップ56で、第1のサ−バ14x1〜第nのサ−バ14xnに送信する。
復元に参加するサーバ、例えば、予め定められた第1のサ−バ14x1〜第kのサ−バ14xkの各CPU22は、図38のβj/αjの復元・送信処理を実行する。即ち、ステップ172(図39も参照)で、指定されたjに応じたWaj(xj)とWbj(xj)を集め、ステップ174(図39も参照)で、αjとβjを素数qを法として1つずつ復元する。ステップ176(図39も参照)で、実数化したαjとβjを用いてβj/αjを素数qを実数演算し、ステップ178(図39も参照)で、計算したβj/αjを復元装置16に送信する。
秘匿乗算3は秘匿除算3が行われる際、同じ分散値を用いて乗算にも対応できるようにしたものである。
上記において、[復元]におけるサ−バxdは秘密情報a,b及び演算結果b/aに関する情報は得られないので、どのサ−バがなってもよい。
次に、演算の連続の例として乗算と加算を連続させる積和演算ab+cについて示す。演算の基本は四則演算であり、加算と減算は代替可能で、第1の実施の形態及び第2の実施の形態より乗算と除算は容易に代替可能であるので、積和演算ができれば全ての演算の組合せに対応できることが言える。a=de+fとすれば(de+f)b+cとなり、f=0とすればdeb+cとなる。また、c=de+fとすればab+de+fとなり、種々の演算が可能である。ここでは、第1のディーラ装置12Aが持つ秘密情報aと第2のディーラ装置12Bが持つ秘密情報bと第3のディーラ装置12Cが持つ秘密情報cを用いてab+cを計算する場合を考える。ただし、今回は[積和]において復元装置16が秘匿演算に協力するが、復元装置16は第2の実施の形態の第1のサ−バ14x1のように秘密情報や途中結果について何の情報も得られない。
まず、秘匿積和1(基本形)について説明する。秘匿積和1(基本形)は、分散、積和、及び復元により実行される。
[分散]
オ−ナA,B,Cのそれぞれは第1のディーラ装置12A〜第3のディーラ装置12Cを用いて、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ−バに分散保管する(i=1,…,n)(図3、図5、図14)。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k−1xi k−1)
Wb’(xi)=β(b+b0,1xi+・・・+b0,k−1xi k−1)
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k−1xi k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
Wc1(xi)=γ1+c1,1xi+・・・+c1,k−1xi k−1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k−1xi k−1
例えば、第1のサ−バ14x1は、図7のαaの復元・分散処理を実行する。第1のサ−バ14x1〜第kのサ−バ14xkは、図9(A)の乗算処理を実行する。よって、第1のサ−バ14x1〜第kのサ−バ14xkは以下のWab’(xj)を得る(図9(B)参照)。
Wab’(xj)=αβa(b+ab0,1xi+・・・+ab0,k−1xi k−1)
第1の実施の形態に示した秘匿乗算は秘密情報に乱数をかけることにより秘匿化して、それを一旦復元することにより閾値kを変えない秘匿演算を可能にしている。第1の実施の形態の問題点は、秘密情報が0である場合、秘匿化秘密情報を一旦復元すれば、その値が0となるので秘密情報が0であることがわかる点である(秘匿化に用いられる乱数は0以外のため)。
ただし、第2の実施の形態に示す秘匿除算の場合は一旦復元した秘匿化秘密情報が0の場合、除算できないことがわかるためこの性質は有効である。
以下、秘匿乗算において秘密情報に0を含む場合の手法を以下に示す。
[分散]
秘密情報aをもつオ−ナAの第1のディーラ装置12AのCPU22は、図3の分散処理を実行し、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する(ステップ42)。
Wa(xi)=a+a0,1xi+・・・+a0,k−1xi k−1
Wa’(xi)=α(a+a0,1(n+xi)+・・・+a0,k−1(n+xi)k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)
Wb(xi)=b+b0,1xi+・・・+b0,k−1xi k−1
Wb’(xi)=β(b+b0,1(n+xi)+・・・+b0,k−1(n+xi)k−1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)
第1のサ−バ14x1〜第nのサ−バ14xnの各CPU22は、図44の乗算処理を実行する。即ち、ステップ242で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する。
[復元]
復元に参加するサーバ、例えば、予め定められた第1のサ−バ14x1〜第kのサ−バ14xkの各CPU22は、図45のαjβjの復元処理を実行する。即ち、ステップ244で、指定されたjに応じたWaj(xi)とWbj(xi)を集め、ステップ246で、αjとβjを1つずつ復元する。
上記秘匿乗算4は分散値同士の乗算となっているため次数変化が生じている。次に、連続演算に対応するために次数変換を行う場合を考える。
[分散]
秘密情報aを第1のディーラ装置12AのCPU22は、図47に示す分散処理を実行する。即ち、ステップ262で、k個の0以外の乱数αi、ri(以降もαi、riは0以外)を生成し、その積α=α1・α2・・・αk、r=r1・r2・・・rkを計算する。
Wa(xi)=r(a+a0,1xi+・・・+a0,k−1xi k−1)
Wa’(xi)=rα(a+a0,1(n+xi)+・・・+a0,k−1(n+xi)k−1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k−1xi k−1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k−1xi k−1
Wr1(xi)=r1+ak+1,1xi+・・・+ak+1,k−1xi k−1
:
Wrk(xi)=rk+a2k,1xi+・・・+a2k,k−1xi k−1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)である。
ステップ266で、分散値を第1のサ−バ14x1〜第nのサ−バ14xnに送信する。
Wb(xi)=q(b+b0,1xi+・・・+b0,k−1xi k−1)
Wb’(xi)=qβ(b+b0,1(n+xi)+・・・+b0,k−1(n+xi)k−1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k−1xi k−1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k−1xi k−1
Wq1(xi)=q1+bk+1,1xi+・・・+bk+1,k−1xi k−1
:
Wqk(xi)=qk+b2k,1xi+・・・+b2k,k−1xi k−1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k−1)は乱数,xiはサ−バID(i=1,…,n)である。
第1のサ−バ14x1〜第nのサ−バ14xnの各CPU22は、図49の乗算処理を実行する。即ち、ステップ278で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する(i=1,…,n)。
第1のサ−バ14x1〜第kのサ−バ14xkの各CPU22は、図50の次数変換処理を実行する。即ち、ステップ282で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ284で、αjとβjを1つずつ復元し、ステップ286で、αjβjを計算し、ステップ288で、αjβjを復元装置16に送信する。
第1のサ−バ14x1〜第kのサ−バ14xkの各CPU22は、図52のrjgjの復元・送信処理を実行する。即ち、ステップ332で、指定されたjに応じたWrj(xi)とWqj(xi)を集め(i=1,…,k)、ステップ334で、1サ−バ当たりrjとqjを1つずつ復元する。
まず、n台のサ−バ14x1〜14xnに対して閾値kを変えずに分散値を更新する場合を示す。第1の実施の形態〜第4の実施の形態に示すように秘密情報aに乱数αがかけられて分散されている場合を考える。今まで、乱数がかかった分散値の更新法は知られていない。
第1のサ−バ14x1〜第kのサ−バ14xkの内から、復元処理を行うサーバ、例えば、第kのサ−バ14xkがランダムに予め1台選ばれている。
Wa’i=α(a+a1’xi+a2’xi 2+・・・+ak−1’xi k−1)
Ui’=Wa’(xi)−Wa’i=α{(a1−a1’)xi+(a2−a2’)xi 2+・・・+(ak−1−ak−1’)xi k−1}
Wj’=α{(a1−a1’)xj+(a2−a2’)xj2+・・・+(ak−1−ak−1’)xj k−1} (ただし、j=k,・・・,n)
次に、n台のサ−バに対して閾値をkからu(u≧k)に増やす場合の更新法を示す。
第iのサ−バ14xiのCPU22は、図57のδiの生成送信処理を実行する。即ち、ステップ382で、u−1個の乱数di1,・・・,diu−1を生成し、ステップ384で、以下の多項式を生成する。
δi(x)=di1x+di2x2+・・・diu−1xu−1
Wa’(xi)=Wa’(xi)+Σδj(xi)
=α(a+a1xi+a2xi 2+・・・+ak−1xi k−1)+Σδj(xi)
=α{a+(a1+Σdi1/α)xi+・・・+(ak−1+Σdik−1/α)xi k−1+・・・+(Σdiu−1/α)xi u−1}
ステップ396で、Wa’(xi)を新たな分散値として保存する。
予め定められたサーバ、例えば、第1のサ−バ14x1のCPU22は、図59の更新処理を実行する。即ち、ステップ402で、第1のサ−バ14x1〜第nのサ−バ14xnから、第1のサ−バ14x1〜第nのサ−バ14xnに格納されている分散値W(xi)を集め、ステップ404で、乱数βとk−1個の乱数d1〜dk−1を生成し、ステップ406で、以下を計算する。
Wa’(xi)=βWa’(xi)+δ(xi)=αβ{a+(a1+d1/β)xi+・・・+(ak−1+dk−1/β)xi k−1}
δ(x)=d1x+d2x2+・・・dk−1xk−1
以上の更新法は定数項を必ず0とするので、k-1次の多項式を用いていてもk-1個の分散値があれば更新に用いた多項式が解ける。すなわち、安全性に問題がある。よって、以下のように更新を行うことによりk個の分散値がなければ更新に用いた値がわからないようにすることができる。
第iのサーバ14xiにおいては、xiを第1IDとし、また、xi'を、第2IDとして、x1〜xnの中から、全てのサーバで第1IDと第2IDの重なりがなく、かつk−1個のサーバ内でその組合せが閉じることがないように、ランダムに定められている。例えば、n=kの場合、どのようなk−1個のサーバ内でその組合せは閉じない。なぜならば、i番目のサーバの第1IDと第2IDが同じとすると、残りのk−1台のサーバ内でIDの組合せが閉じていることになるが、この場合、全てのサーバで第1IDと第2IDの重なりがないという条件を満たしていない。よって、n=kの場合は全てのサーバで第1IDと第2IDの重なりがないように選択すればよい。それに対してn>kの場合、k−1個のサーバ内でその組合せは閉じていても、残り2台のサーバの第1IDと第2IDが逆になっていれば全てのサーバで第1IDと第2IDの重なりがないという条件を満たす。よってまず、x1のサーバがx1以外のサーバIDxj2をランダムに選び、選ばれたxj2のサーバがサーバIDxj3をランダムに選ぶことを順に行い、k−1台目のサーバになる前に選ばれたサーバが既に第2IDを選択したサーバでないようにすればよい。これは、第2IDを既に選択しているサーバは新たな第2IDを選択することができないので、そこで閉じることになるためである。各IDの情報は公開される。
δi(x)=di0+di1x+di2x2+・・・diu-1xu-1
λi(x)=di0+ri1x+ri2x2+・・・riu-1xu-1
Wa’(xi)=Wa(xi)+Σδj(xi)=a+a1xi+a2xi2+・・・+ak-1xik-1+Σδj(xi)
=(a+Σdi0)+(a1+Σdi1)xi +・・・+(ak-1+Σdik-1)xik-1
λ(xi’)=Σλj(xi’)=(Σdi0)+(Σri1)xi’ +・・・+(Σrik-1)xi’k-1
復元装置16のCPU22は、図60(B)の復元処理を実行する。即ち、ステップ411で、k個のサーバからWa’(xi)を集めて、解いて(a+Σdi0)を計算する。ステップ413で、k個のサーバからλ(xi’)を集めて、解いて(Σdi0)を計算する。
ステップ415で、(a+Σdi0)から(Σdi0)を引いて秘密情報aを計算する。
(2)各サーバはWa’(xi)+λ(xi)を計算して復元装置16に送信する。
(3)復元装置16はk個のサーバからWa’(xi)+λ(xi)を集めて、解いてaを計算する。
[分散]
図61(A)を参照して、サーバが実行する分散処理を説明する。この処理では秘匿更新4と同様に各サーバは第1IDと第2IDをもつ。以下ではことわりがない限り、サーバIDは第1IDを指す。
Wa’(xi)=α(a+a1xi+a2xi2+・・・+ak-1xik-1) (i=1,・・・,k-1)
Wa’i=α(a’+a1’xi+a2’xi2+・・・+ak-1’xik-1)
Ui’=Wa’(xi)-Wa’i=α{(a-a’)+(a1-a1’)xi+(a2-a2’)xi2+・・・+(ak-1-ak-1’)xik-1}
Wj’=α{(a1-a1’)xj+(a2-a2’)xj2+・・・+(ak-1-ak-1’)xjk-1} (ただし、j=k+1,・・・,n)
Wd’(xi’)=α(a-a’)+d1xi’+d2xi’2+・・・+dk-1xi’k-1
次に、図61(B)を参照して、各サーバ(第1のサーバ14x1〜第nのサーバ14xm)が実行する復元処理を説明する。即ち、ステップ437で、Wd’(xi’)をサーバ14xi’に送信し、よって、ステップ439で、Wd’(xi)を受信する。
第1のサーバ14x1〜第nのサーバ14xmの内の、復元装置16から指示されたk個のサーバは、ステップ443で、Wd’(xi)+Wa’(xi)を復元装置16に送信する。
そして、復元装置16は、k個のサーバからWa’(xi)+Wd’(xi)を受信し、解いてαaを計算する。
この場合、Wd’(xi)+Wa’(xi)を新たな分散値として、秘匿演算を継続可能であることは明らかである。
秘匿更新4と5の特徴は、定数項を0としないk個の補正情報δj(xi)またはUj’から分散値の更新情報Σδj(xi)またはWj’を計算することであり、これによってk−1台の盗聴を行っても更新情報は得られない。このような手法は今まで提案されておらず、この特徴は請求項11に示される。
次に、秘匿検索について示す。ここでは秘密情報を持つオ−ナが、秘密情報に対応する検索IDを分散して秘密情報の分散値とともにサ−バシステムに保管し、ある秘密情報の検索を希望するユ−ザは秘密情報に対応する検索IDを分散して、分散値同志で検索を行う。
(秘匿検索1(基本形:検索サーバ18を用いない))
[分散]
第1のディーラ装置12Aでは、m個の秘密情報(前述した第1の実施の形態〜第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)としている。第1のディーラ装置12AのCPU22は、図62の分散処理を実行する。即ち、ステップ412で、検索IDごとの乱数rjを生成し、ステップ414で、下記の分散値Fj(xi)、Rj(xi)を計算する。
Fj(xi)=rj(kj+aj1xi+aj2xi 2+…+ajk−1xi k−1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2 +…+rjk−1xi k−1
各サ−バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始めるようになっている。
Fj’(xi)=q・kj’+bj1xi+bj2xi 2+…+bjk−1xi k−1(i=1,…,k)
第iのサ−バ14xi、即ち、第1のサ−バ14xi〜第kのサ−バ14xkの各CPU22は、図66の差tjの計算・送信処理を実行する。即ち、ステップ462で、分散値Fj’(xi)を受信し、ステップ464で、検索IDのjを設定する。本処理が最初に実行されるとき、ステップ464では、jには、m/2が設定される。ステップ466で、jに対応する分散値Fj(xi)、Rj(xi)を、記憶装置34から読み出し、ステップ468で、分散値F(xi)(i=1,…,k)をユ−ザの復元装置16に送信する。これにより、復元装置16は、図64のステップ424で、分散値Fj(xi)を受信する。
Fj(xi)=q・Fj(xi)+δ(xi)(i=1,…,k)
ステップ472で、k個の分散値Rj(xi)からrjを復元する。
ステップ474で、乱数tjを生成し、以下の差tj{Fj(xi)−rjFj’(xi)}を計算する。
tj{Fj(xi)−rjFj’(xi)}=tj・rj・q{(kj−kj’)+(aj1−bj1)xi+…+(ajk−1−bjk−1)xi k−1}
ステップ476で、差tj{Fj(xi)−rjFj’(xi)}を復元装置16に送信する。
[分散]
オ−ナの第1のディーラ装置12Aは、m個の秘密情報(前述した第1の実施の形態〜第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)とし、共通の乱数rと検索IDごとの乱数rjを生成して、下記分散値Fj(xi)、Rj(xi)を計算し、第iのサ−バ14xi(i=1,…,n)、即ち、第1のサ−バ14x1~第nのサ−バ14xnに分散保管させる(aji,rji,tjiも乱数)。よって、例えば、第1のサーバ14x1の記憶装置34には、図63(B)に示すように、各分散値Fj(xi)、Rj(xi)が記憶されている。さらに、検索IDに対応する秘密情報に対する分散値もFj(xi)、Rj(xi)と並んで保存されている。
Rj(xi)=r・rj+rj1xi+rj2xi 2+…+rjk−1xi k−1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
各サ−バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始める。
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk−1xi k−1(i=1,…,n)
rj・kj・Fu(xi)−r・rj・Fo(xi)=tj・r・rj・q{(kj−kj’)+(cj1−bj1)xi+…+(cjk−1−bjk−1)xi k−1}
また、最初のオーナまたは異なるオーナが検索IDを追加する場合、そのオーナをユーザとし、追加IDをユーザの検索IDとして検索する。一致するIDがあった場合、そのユーザはその検索IDを変える。なければ、最終位置の隣接ID(追加IDが検索ID中にない場合、最後まで一致はしないが、最終位置では隣接IDの検索結果の方向が逆になり、追加IDがその中間位置に入るべきであることがわかる)の中間位置に追加IDの分散値を追加する。ただし、最初のオーナーが追加を行う場合はこれでよいが、異なるオーナがデータの追加を行う場合、データは昇順に並んでも、オーナーの順番がバラバラとなるため、検索のたびにオーナーの許可が必要となる。よってこの場合、オーナーはシステムに検索を許可するユーザの条件を示し、検索の許諾をシステムに委託するなどすれば効率的となる。以上の特徴は請求項17に示される。
ところで、第1の実施の形態〜第4の実施の形態に示した例では、α=α1・・・αkを生成するが、αは秘密情報毎に異なる乱数であるので、α=rjとすれば秘匿検索におけるTj(xi)は秘匿演算のWa’(xi)などと同じ形式の式となる。ただし、秘匿検索に対してはr・rjに対する分散値Rj(x)が増えるので、秘密情報と検索ID間の相互検索を行えるようにするためには、各サ−バは秘匿演算のために第1の実施の形態〜第4の実施の形態の[分散]に示すように1つの秘密情報に対してk+1個の分散値、秘匿検索のためにRj(xi)に対応する分散値で、k+2個の分散値を保存する必要がある。これによって、秘匿演算と秘匿検索の2つが同時に実現できる。
秘匿乗算1’(非対称秘密分散対応)
文献[4]に示される非対称秘密分散に適した秘匿乗算法を以下に示す。ただし、hは1〜k−1までの整数のうち、小型化を実現するための鍵サ−バ数を示すとする。ここでは、オ−ナがその鍵サ−バを持つとする。以下に説明する秘匿乗算i’などは秘匿乗算iに対応する手法である。以下では、秘密情報aをもつオ−ナAがh個の鍵サーバの処理を第1のディーラ装置12Aによって実行する場合を示すが、鍵サーバは外部にあって、そこから乱数を得ても実行することも可能である。また、秘密情報bをもつオ−ナBの処理もディーラ装置12Bで行うが、鍵サーバが外部にあってそこから乱数を得ても実行することが可能である。また、ディーラ装置がh個の鍵サーバの処理を実行する場合、h個の鍵サーバが各々管理する鍵(全部でh個)をディーラ装置が管理する1つの鍵を用いて鍵サーバのIDを暗号化するなどして、それを各鍵サーバの鍵としてもよい。この場合、ディーラ装置は1つの鍵を管理するだけでh台分の鍵サーバの役割を果たすことができる(具体例は後述の特徴参照)。
秘密情報aをもつオ−ナAの第1のディーラ装置12AのCPU22は、図71の分散処理を実行する。即ち、ステップ572で、分散値Wa(x1)〜Wa(xh)(hはk−1以下の整数)として、管理する1つの鍵からh個の乱数を生成する。生成した乱数は、分散値Wa(x1)〜Wa(xh)として、第1のディーラ装置12Aの記憶装置34に記憶される。
Wa(xi)=a+a0,1xi+・・・+a0,k−1xi k−1(i=1,・・・,h)
Wa(xi)=a+a0,1xi+・・・+a0,k−1xi k−1(i=h+1,・・・,n)
第1のディーラ装置12AのCPU22は、図72の乗算処理を実行する。即ち、ステップ582で、k個の乱数αi(i=1,・・・,k)を生成し、ステップ584で、その積α=α1・α2・…αkを計算する。
Wab’(xi)=αa・β・Wb(xi)+δ(xi)
第1のディーラ装置12Aは、自身の第1のディーラ装置12A及び第2のディーラ装置12Bを含むk個のサ−バxj(j=1,・・・,k)にαjを送信する。第2のディーラ装置12Bは、自身の第2のディーラ装置12Bと第1のディーラ装置12Aを含むk個のサ−バxj(j=1,・・・,k)にβjを送信する。
実数による除算も以下のようにすれば実現できることも明らかである。以下では、b/aを計算する場合を説明する。
[分散]
図76を参照して、第1のディーラ装置12A、第2のディーラ装置12B、サーバxj及び復元装置16が実行する復元処理を説明する。なお、サーバxjには、後述する特定の1台のサーバxdが含まれる。
秘匿除算3’の[分散]は、非対称秘密分散対応(図71)と同様であるので、その説明を省略する。
第1のディーラ装置12Aは、ステップ642で、自身の第1のディーラ装置12Aが生成した実数αjを、k個のサーバxj(j=1,…,k)に各々送信する。
第2のディーラ装置12Bは、ステップ644で、自身の第2のディーラ装置12Bが生成した実数βjを、k個のサーバxj(j=1,…,k)に各々送信する。
各サ−バ14xj(j=1,…,k)は、ステップ646で、βj/αjを実数として計算し、ステップ648で、復元装置16にβj/αjを送信する。
実数演算に関して乗算や加算、積和にも同様に対応できることは明らかである。
演算の繰り返しに関して、秘匿積和は種々の演算に用いられるので、改めて非対称秘密分散を用いた場合を示す。これによって、かかる乱数が異なる秘匿分散値同士の和や乱数を変換した復元も同様に実現できることは明らかである。また、秘匿乗算2や秘匿除算2などの繰り返しも同様に実現できることは明らかである。
なお、以下では、a・b+cを計算する場合を説明する。
オ−ナA,B,Cの各指示に従って、各々の第1のディーラ装置12A〜第3のディーラ装置12Cは、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ−バ14x1〜14xnに分散保管する(i=1,…,n)。すなわち、第3のディーラ装置14CのCPU22も図71の分散処理を実行する。なお、a0,jはc0,jとなる。
Wa(xi)=a+a0,1xi+・・・+a0,k−1xi k−1
Wb(xi)=b+b0,1xi+・・・+b0,k−1xi k−1
Wc(xi)=c+c0,1xi+・・・+c0,k−1xi k−1
図77を参照して、第1のディーラ装置14A〜第3のディーラ装置14C、サーバxj、及び復元装置16のCPU22が実行する積和処理及び復元処理を説明する。即ち、秘匿乗算1’の[分散]及び[乗算](図71及び図72の処理)を実行する。サ−バ14xi(j=1,…,k)は、αaを受信し(図77のステップ602(図72も参照))、Wab’(xj)=αa・β・Wb(xi)+δ(xi)を得る(図77のステップ620参照)。
Wc’(xi)=γ・Wc(xi)+δ2(xi)
復元者の復元装置16は、ステップ701で、サーバxjからWabc’(xj)を得て、ステップ703で、μ(ab+c)を復元する。
復元装置16は、ステップ705で、サーバxjからμjを得て、ステップ707で、(ab+c)を計算する。
秘密情報として0を扱う秘匿乗算4に対しても以下のように変形すれば、秘匿乗算4’への対応も可能である。
秘匿乗算1’(図71)と同じであるので(図78のステップ578も参照)、その説明を省略する。
図78(ステップ672以降)を参照して、サーバxj及び復元装置16が実行する秘匿乗算(乗算及び復元)処理を説明する。
第1のディーラ装置12Aは、ステップ672で、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する。第2のディーラ装置12Bは、ステップ674で、k個の乱数βi(i=1,・・・,k)を生成し、その積βを計算する。
第1のディーラ装置12Aは、ステップ676で、k個のサーバxjから分散値Wa(xi)を集め、ステップ678で、サ−バIDn+xiに対応する分散値Wa(x(n+xi))を計算し、ステップ680で、その分散値Wa(x(n+xi))にαをかけた分散値Wa’(xi)をサーバxjに送信する。
第1のディーラ装置12Aは、ステップ690で、第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する。
サーバxj(j=1,…,k)は、ステップ694で、積αjβjを計算する。
サーバxj(j=1,…,k)は、ステップ696で、Wab(xj)とWab’(xj)とαjβjを復元者の復元装置16に送信する。
復元装置16は、ステップ700で、Wab(xj)とWab’(xj)/αβから2k−1個の分散値を用いてabを復元する。
秘匿乗算5に関しても演算中、αj,βjなどと同様にrj,qjを処理すればよい。[次数変換]に関しても、αj,βjを直接ディーラ装置からもらうようにすればよい。
秘匿更新1については以下のようにする。非対称秘密分散の特徴の1つはオ−ナが秘匿
秘匿検索に対しても、Tj(xi)とRj(xi)のうちh個をオ−ナが1つの鍵から生成できるため、h台のサ−バの削減ができる。また、各サ−バが保存する情報も秘密情報に相当するkjを秘匿化せずに秘密分散した分散値1つだけであるので、記憶容量は削減される。また、計算量もRj(xi)を解くことがないため削減される。
オ−ナの第1のディーラ装置12AのCPU22は、m個の秘密情報に対する検索IDをkj(j=1,…,m)として、第7の実施の形態の秘匿乗算1’(図71のステップ572〜578)の各処理を実行する。即ち、1つの鍵から下記の形を持つ自らの分散値Tj(x1)〜Tj(xh)を生成し、それらと秘密情報を用いて他のサ−バxh+1〜xnが持つ分散値Tj(xh+1)〜Tj(xn)を求め、各サ−バに送る(hはk−1以下の整数)。ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
Tj(xi)=kj+t’j1xi+t’j2xi 2+…+t’jk−1xi k−1
(i=1,…,n)
ユーザの復元装置16のCPU22は、図65のステップ482〜490の処理を実行し、オーナの第1のディーラ装置12AのCPU22は、図79の分散値の計算・送信処理を実行し、第iのサーバ14xiのCPU22は、図80の差の計算・送信処理を実行し、検索サーバ18のCPU22は、図81の検索処理を実行する。なお、図79の分散値の計算・送信処理のステップ502〜512は、図66のステップ502〜512とほぼ同様である。
Fo(xi)=tj・q・kj’+bj1xi+bj2xi 2+…+bjk−1xi k−1
よって、第iのサーバ14xiは、図80のステップ522で、分散値Fo(xi)を受信する。
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk−1xi k−1
よって、第iのサーバ14xiは、図80のステップ524で、分散値Fu(xi)を受信する。
ただし、rjはkj毎に定まる乱数であり、δ(xi)はδ(0)=0となるk−1次の多項式である。
第iのサーバ14xiは、図80のステップ531で、rj・kjを受信し、ステップ533で、以下の差を計算して、ステップ535で、差を検索サーバ18に送信する。
rj・kj・Fu(xi)−r・rj・Fo(xi)=tj・r・rj・q{(kj−kj’)+(cj1−bj1)xi+…+(cjk−1−bjk−1)xi k−1}
以後、検索サーバ18のCPU22は、ステップ551〜563の処理を実行する。なお、ステップ551〜563は、図68のステップ552〜564に対応するので、その説明を省略する。なお、検索サーバ18が、図81のステップ561、563でjを指示すると、第iのサーバ14xiは、jの指示を受信し、これにより、図80のステップ537だ肯定判定され、差の計算・送信処理はステップ525Aに戻る。
分散値の記憶容量を削減する手法としてランプ型秘密分散法が知られている。ランプ型秘密分散法は秘密情報SをL(≦k)個に分割してs1,・・・,sLとし、aL+1,・・・,ak-1を乱数としてk-1次多項式の係数とする。すなわち、以下の多項式を立て、W(xi)を第iのサーバ14xiの分散値とする。この場合、Sをdビットで素数p(>2d)未満の数とすると、siはd/Lビットで素数p’(>2d/L)未満の数となり、演算もp’を法として行えるので、分散値のサイズが1/Lになり記憶容量の削減が可能になる。
W(x)=s1+s2x+・・・+sLxL+aL+1xL+1+・・・+ak-1xk-1
この場合、k-L個までの分散値を集めても乱数aiが残るため秘密情報は漏洩しないが、k-L+1以上の分散値を集めると乱数であるai(i=L+1,・・・,k-1)が失われるので、si(i=1,・・・, L)間の関係がわかることから、情報が部分的に漏洩する。最後に、k個の分散値がわかるとすべてのsiが特定されて、秘密情報Sが復元されるという特徴をもつ。
秘匿乗算1に対応するランプ型秘密分散を用いた秘匿乗算を以下に示す。ただし、秘密情報a,bをe進数d桁で表される素数p(>ed)未満の整数とし、a,bをL分割したah,j,bh,j、パラメータα,β,αj,βjなどは素数p’(>e(d/L))未満の整数とし、秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)を法として行われる。以下に示す秘匿乗算1”において、上記以外は秘匿乗算1と同様である。よって、実数演算に対しても秘密情報a,b(実数)を整数表現してp以下の整数とすれば同様に対応できる。
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図82に示す分散処理を実行する。即ち、ステップ702で、素数p’未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
ステップ704で、素数p未満の秘密情報aをL分散して素数p’未満のa0,0,・・・,a0,L-1とし、以下の分散値を計算する。
Wa’(xi)=α(a0,0+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
β=β1・β2・・・βk
Wb’(xi)=β(b0,0+b0,1xi+・・・+b0,k-1xik-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xik-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xik-1
ただし、bh,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
図84を参照して、サーバシステムのサーバ及び復元装置16が実行する復元処理を説明する。サーバシステム内の1つの第dのサーバ14xdは、図84のステップ722で、他の第jのサーバ14xj(j=1,・・・,k)からWa’(xi)をk個集め、ステップ724で、q’を法としてαa0,j (j=0,・・・,k-1)を復元し、桁合わせを考慮してαa0,jを加算しながらαaを計算する。
(図82のステップ702)
k=2より、オーナAの第1のディーラ装置12Aは、2つの乱数をα1=2、α2=2としα=α1・α2=2×2=4を計算する。
a(=12)を2分割してa0,0=2,a0,1=1とし、Wa1,Wa2に用いる乱数をa1,1=3,a2,1=5とすると、以下が計算される。
Wa'(1)=4(2+1*1)=12
Wa'(2)=4(2+1*2)=16
Wa1(1)=2+3=5
Wa1(2)=2+3*2=8
Wa2(1)=2+5=8
Wa2(2)=2+5*2=12
β1=1,β2=2とし、β=β1・β2=1×2=2を計算する。
b(=20)を2分割してb0,0=0,b0,1=2とし、Wb1,Wb2に用いる乱数をb1,1=4,b2,1=6とすると、以下が計算される。
Wb'(1)=2(0+2*1)=4
Wb'(2)=2(0+2*2)=8
Wb1(x1)=1+4=5
Wb1(x2)=1+4*2=9
Wb2(x1)=2+6=8
Wb2(x2)=2+6*2=14
(図84のステップ722、724)
Wa'(1)=12=s1+s2、Wa'(2)=16=s1+s2*2より、Wa'(2)−Wa'(1)を計算し、4=s2=αa0,1、s1=12-4=8=αa0,0より、桁あわせをしてαa0,1*10+αa0,0=8+4*10=48を得る。
βb0,1=4、βb0,0=4-4=0を復元し、βb0,1*10+b0,0=4*10+0=40を得る。
第1のサーバ14x1は、α1=2、β1=1を復元し、第2のサーバ14x2は、α2=2、β2=2を復元する。
第1のサーバ14x1は、α1*β1=2*1=2を、第2のサーバ14x2は、α2*β2=2*2=4を計算し、復元装置16に送信する。
αa*βb=48*40=1920を復元装置16に送信する。
1920/(2*4)=240を計算する。
[分散]
(ランプ型拡張形)の秘匿乗算1”では、ランプ型基本形の図82のステップ702,706、図83のステップ712、716を実行するが、第1に、図82のステップ704に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wa’(xi)、Wr1(xi)を計算する。
Wa’(xi)=e_r1(αa0,0)+e_r1(αa0,1)xi+・・・+e_r1(αa0,k-1)xi k-1
Wr1(xi)=r1+r1,1xi+・・・+r1,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
第2に、図83のステップ714に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wb’(xi)、Wr2(xi)を計算する。
Wb’(xi)=e_r2(βb0,0)+e_r2(βb0,1)xi+・・・+e_r2(βb0,k-1)xi k-1
Wr2(xi)=r2+r2,1xi+・・・+r2,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
図85を参照して、サーバシステム内のサーバ、及び復元装置16が実行する復元処理を説明する。
サーバシステム内の1つの第dのサーバ14xdは、図85のステップ722’、726’のそれぞれで、他のサーバからWr1(xi)とWr2(xi)を各々k個集め、ステップ724’、728’で、r1とr2を復元する。
オーナAの第1のディーラ装置12Aは、秘密情報aをL分割してa0,0,・・・,a0,L-1とし、以下の分散値を計算する。ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1
Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xik-1
分散値Wa(xi)とWb(xi)を第1のサーバ14xi〜第nのサーバ14xnに送信する。
第iのサーバ14xi(i=1,・・・,n)は以下を計算する。
Wab(xi)=Wa(xi)+Wb(xi)=(a0,0+b0,0)+(a0,1+b0,1)xi+・・・+(a0,k-1+b0,k-1)xi k-1
復元装置16は第iのサーバ14xiの中のk個のサーバからk個の分散値の和Wab(xi)を集め、それを解いて(a0,0+b0,0),・・・,(a0,L+b0,L)を得る。
ab=(a0,0+a0,1e+・・・+a0,k-1ek-1)(b0,0+b0,1e+・・・+b0,k-1ek-1)=(a0,0b0,0)+(a0,0b0,1+a0,1b0,0)e+・・・+(a0,k-1b0,k-1)e2k-1となる。
よって、基本形の秘密分散では、Wa(x)=a0,0+a0,1x+・・・+a0,k-1xk-1、Wb(x)=b0,0+b0,1x+・・・+b0,k-1xk-1とすれば、その積はWa(x)Wb(x)=(a0,0+a0,1x+・・・+a0,k-1xk-1)(b0,0+b0,1x +・・・+b0,k-1xk-1)= (a0,0b0,0)+(a0,0b0,1+a0,1b0,0)x+・・・+(a0,k-1b0,k-1)x2k-1となり、各係数はそのまま積の各桁を表す。よって、以下のようにして秘匿乗算が実現できる。ただし、[復元]における桁合わせ(ステップ724”、728”)は上記のように各係数を各桁の値として扱うことである。
[分散]
秘匿乗算1”における図82のステップ704に、Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1、図83のステップ714に、Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xi k-1を計算する処理を追加する。
[乗算]
秘匿乗算3と同様であるので、その説明を省略する。
[復元]
第6の実施の形態にある秘匿検索では検索IDであるkjをL分割して各係数の一致不一致を確認すれば、以下のように部分検索が可能になる。
第1のディーラ装置12AのCPU22は、図86(A)の分散処理を実行する。即ち、ステップ752で、m個の秘密情報(上記各実施の形態における分散により分散されている)に対応するm個の検索IDを、kj(j=1,…,m)をL分割し、kj0,・・・,kjL-1とし、ステップ754で、kj毎の乱数rjを生成し、ステップ756で、下記分散値Tj(xi) 、Rj(xi)を計算する(rji,tjiも乱数)。
Tj(xi)=rj・(kj0+・・・+kjL-1xi L-1+tjLxi L+…+tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ステップ758で、分散値Tj(xi) 、Rj(xi)をサーバxi(i=1,…,n)に送信して、分散保管させる。
Fj'(xi)=q(k’j0+・・・+kjL-1xi L-1+bjLxi L+・・・+bjk-1xi k-1)(i=1,…,n)
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+(k’jL-1-kjL-1)xi L-1+(bjL-t’jL)xi L+・・・+(bjk-1- t’jk-1)xi k-1}
ただし、t’ji=tji+di/q
ステップ788で、下位の桁iの係数差分が0か否かを判断する、下位の桁iが0と判断された場合には、ステップ790で、検索IDをjとして本処理を終了する。下位の桁iが0と判断されなかった場合には、ステップ792で、下位の桁iにおけるkji-1の係数差分は正か否かを判断する。正と判断されれば、ステップ794で、検索位置jを1インクリメントし、負と判断されれば、ステップ796で、検索位置を1デクリメントする。
ステップ798で、前回と今回とのkjiの係数差分が0のままであるか否かを判断する。
[分散]
分散処理は、上記図86(A)と同様である。即ち、オーナの第1のディーラ装置12Aは、m個の秘密情報に対応するm個の検索IDを、kj(j=1,…,m)をL分割してkj0,・・・,
kjL-1とし(ステップ752)、kj毎の乱数rjとtを生成し(ステップ754)、下記分散値Tj(xi)を計算し(ステップ756)、分散値Tj(xi)、Rj(xi)を第iのサーバ14xi(i=1,…,n)に分散保管させる(rji,tjiも乱数)(ステップ758)。
Tj(xi)=rj・(kj0+・・・+tL-1kjL-1xi L-1+tLtjLxi L+…+tk-1tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
[検索]
Fj’(xi)=q(k’j0+・・・+tL-1kjL-1xi L-1+tLbjLxi L+・・・+tk-1bjk-1xi k-1)(i=1,…,n)
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+tL-1(k’jL-1-kjL-1)xi L-1+tL(bjL-t’jL)xi L+・・・+tk-1(bjk-1- t’jk-1)xi k-1} ただし、t’ji=tji+di/q
[分散]
秘密情報aをもつオーナAの第1のディーラ装置12Aは、管理する1つの鍵からh個の乱数を生成し、それを自身が持つ分散値Wa(x1)〜Wa(xh)とする(hはk-1以下の整数)(図71のステップ572)。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1 (i=1,・・・,h)
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1 (i=h+1,・・・,n)
第1のディーラ装置12Aは、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する(図72のステップ582、584)。
第1のディーラ装置12Aは、自身と第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する(図74のステップ622)。
第2のディーラ装置12Bは自身と第1のディーラ装置12Aを含むk個のサーバxj(j=1,・・・,k)にβjを送信する(ステップ624)。
上記k個のサーバxj(j=1,…,k)は積αjβjを計算する(ステップ626)。
サーバxj(j=1,…,k)はWab’(xj)とαjβjを復元装置16に送信する(ステップ628)。
復元装置16は、αjβj(j=1,・・・,k)をかけてαβを計算する(図75のステップ630、632)。
復元装置16は、αa・βb/αβを計算してabを得る(図75のステップ634)。
このように、第7の実施の形態の小型化と第8の実施の形態のランプ型による小型化は両立可能である。
(k,n)閾値秘密分散法における計算量を少なくする方式として、秘密情報をビット列として扱いXORによる演算だけで秘密分散を実現する手法(以降XOR法)が提案されている。このXOR法は準同型性を持たないため,秘匿計算に対応できないという問題がある。それに対してXOR法を拡張し、秘密情報をビット列ではなく多値の数値として扱い、XORの代わりに加減算のみで秘密分散が行える手法(以降、多値化法)を提案されている[5]。しかし、[5]の手法は法とする数が大きく効率的でない。さらに、この手法は秘密情報の分散法、復元法、及び加減算は提案されているが、乗算法は提案されていない。
S(<ed)を素数p未満のe進数d桁の整数とし、それをn-1分割したものをSi(<ed/(n-1))とし(i=1,・・・,n-1)、乱数ri jもSiと同サイズの整数とし、素数p’(<ed/(n-1))を法として演算が行われる([5]の手法はpを法として演算されている)。この特徴は請求項13に示される。
第9の実施の形態では、第nのサーバ14xnは、第0のサーバ14x0とする。
[分散]
第1のディーラ装置12AのCPU22は、図90の分散処理を実行する。即ち、ステップ832で、秘密情報Sを、次のようにn−1個の部分秘密情報に分割する。ただし、S0=0とする。
復元装置16のCPU22は、図91の復元処理を実行する。即ち、ステップ842で、復元に用いるk個の分散情報Wt0,…,Wtk-1(0≦t0≦…≦tk≦n-1)をk個のサーバから集める。ステップ844で、k個の分散情報Wt0,…,Wtk-1を、以下の部分分散情報に分割する。
を2進数の
に変形することにより、全ての部分秘密情報のベクトルS(k,n)を求める。
S(k,n)=G(k,n) ・R(k,n)
[分散]
以下に、上記に対する例として、k=3、n=5の場合について示す。秘密情報Sを、S=3582(0≦i≦4、0≦j≦3)とし、n-1個(桁毎)に分割する場合を考える。よって、S(<104)であり、Si(<10)となる。よって、演算はp’=11を法として行う([5]は104を超えるpを法としている)。
秘密情報S(=3582)は以下のように分割される(ステップ832)。
ただし、次の時にSj-iの符号を反転する。i=1かつj=2、3、i≧2かつj=1
部分分散情報の構成表
サーバP1の分散情報W1は、106910となる。
サーバP2の分散情報W2は、0103となる。
サーバP3の分散情報W3は、5592となる。
サーバP4の分散情報W0は、24610となる。
ユーザP0、P1、P2の分散情報W0、W1、W2が集まった場合(ステップ842)の復元処理を考える。
全ての部分分散情報を表すベクトルW(0,1,2),
は以下のようになる(ステップ844〜846)。
を、
次に、文献[5]に示される分散値同士の加算による秘密情報の秘匿加算について以下に示す。ただし、この場合、Siが素数p’(<ed/(n-1))未満の整数であるのでSi+Si’より大きな素数q(<ed/(n-1)+1)を法として演算が行われる。
秘密情報aをもつオーナの第1のディーラ装置12AのCPU22は多値化法[分散]の図90のステップ832〜ステップ840を実行する。即ち、秘密情報Sに代えて秘密情報aをn-1個の部分秘密情報に分割してA1,・・・,An-1を生成し、第iのサーバ14xiに対する分散値Wai=Wa(i,0),・・・,Wa(i,n-1)を計算し、第iのサーバ14xiに送信する。
第iのサーバ14xiは以下を計算する。
Wabi=Wai+Wbi=W(i,0),W(i,1),・・・,W(i,n-1)
ただし、W(i,j)=Wa(i,j)+Wb(i,j)
復元者の復元装置16のCPU22は、図92の復元処理を実行する。即ち、ステップ862で、Wabiを集め、ステップ864で、Wabjを用いて、以下の式に基づいて2進数ベクトルV(ti,j)を生成する。
以下にk=2,n=3,A=23,B=68の場合の例を示す。ここではA,Bとも2桁の値であるのでp=101とし、p’=11よりq=23とし、演算はqを法として行われるとする。
ユーザAの第1のディーラ装置12Aは保持している秘密情報A=23を2分割してA1=2,A2=3とし、多値化法により秘密分散する(ただし、A0=0)(図90のステップ832〜ステップ840)。ここでは、(k-1)n-1=2個の乱数をr0=5,r1=4とする。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(8)(4)を、第1のサーバ14x1へ送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(1)を、第2のサーバ14x2へ送信する。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(7)(14) を、第0のサーバ14x0へ送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(15)(8) を、第1のサーバ14x1へ送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(13)(0) を、第2のサーバ14x2へ送信する。
各サーバは以下を計算する。
第0のサーバ14x0は、Wab0を計算する。
Wab0=(Wa00+Wb00)(Wa01+Wb01)=(W00)(W01)= (5+7)(6+14)=(12)(20)
第1のサーバ14x1は、Wab1を計算する。
Wab1=(Wa10+Wb20)(Wa11+Wb21)=(W10)(W11)= (8+15)(4+8)=(0)(12)
W00=Wa00+Wb00=(A0+r0)+(B0+t0)=0・(A1+B1)+0・(A2+B2)+1・(r0+t0)+0(r1+t1)よりV00=(0010)となる。同様に、V01=(1001),V10=(0110),V11=(0001),V20=(1010),V21=(0-101) となるので、全体は以下のようになる。
次に、秘匿乗算を示す。
以降ではa,bをe進数d桁で、素数p(>ed)以下の整数とし、aをL分割してAi(i=1,・・・,L)としたとき、Aiは素数p’(>ed/L)以下の整数とする。秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)上で演算が行われる。まず、定数乗算が可能であることを示す。
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図93に示す分散処理を実行する。即ち、ステップ872で、素数q未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
β=β1・β2・・・βk
サーバシステム内の1つのサーバ14xdのCPU22は、多値化法[復元]の処理(図91のステップ842〜ステップ854)を実行する。即ち、他のk個のサーバからWa’iを集め、αaを復元する。そして、サーバ14xdは、αaを他のサーバ14xj(j=1,…,n)に送信する。
サーバ14xj(j=1,…,n)は自分がもつWb’jにαaをかけてWab’jを生成する。
Wab’j=Wab’(j,0),…,Wab’(j,n-1) ただし、Wab’(j,i)=αaWb’(j,i)
復元に参加するサーバ14xj(j=1,…,k)のCPU22は、図95のαjβjの計算送信処理を実行する。即ち、ステップ892で、Wαjiについて多値化法[復元]の処理(図91のステップ842〜ステップ854)を実行し、ステップ894で、Wβjiについて多値化法[復元]の処理(図88のステップ842〜ステップ854)を実行する。即ち、指定されたjに応じたWαjiとWβjiをk個集め(i=1,…,k)、多値化法[復元]により1サーバ当たりαjとβjを1つずつ復元する。
ユーザAの第1のディーラ装置12Aはα1=11,α2=2を生成し、α=α1・α2=22とする(図93のステップ872)。
Wa0=(Wa00)(Wa01)=(A0+r0)(A1+r1)=(4)(8)に、22をかけたWa’0=(88)(176) を、第0のサーバ14x0に送信する。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(6)(5) に、22をかけたWa’1=(132)(110) を、第1のサーバ14x1に送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(3) に、22をかけたWa’2=(154)(66) を、第2のサーバ14x2に送信する。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(37)(26)に、
3111をかけたWb’0=(115107=5030)(80886=830)を、第0のサーバ14x0に送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(43)(18) に、
3111をかけたWb’1=(133773=3682)(55998=5963) を第1のサーバ14x1に送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(45)(12) に、
3111をかけたWb’2=(139995=9904)(37332=7311) を第2のサーバ14x2に送信する。
サーバ14xdは下記によりWa’0とWa’1からαA1=66とαA2=44を復元し、αA2*10+αA1= 506=αaを計算する。
サーバ14x1はα1=11、β1=61を復元し、サーバ14x2はα2=2、β2=51を復元する。
サーバ14x1はα1β1=11*61=671を、x2はα2β2=2*51=102を計算する。
サーバ14x1はα1β1を、x2はα2β2を復元装置16に送信する。
復元装置16はα1β1α2β2より68442=8400(modq’)を得て、q’を法としたその逆数である1974を計算し、αa*βb=8416にかけてq’で法をとると、ab=1564が得られる。
以上は秘匿計算1に対応したものであるが、Shamirの秘密分散法の部分を多値化法に置き換えたものといえる。よって、Shamirの秘密分散法を多値化法に置き換えれば第1の実施の形態〜第8の実施の形態の各手法に対応できることは明らかである。
技術分野
[0001]
本発明は、分散装置、演算・復元装置、及びプログラムに関する。
背景技術
[0002]
近年、新たなネットワーク技術としてクラウドコンピューティングが注目されている。クラウドコンピューティングとはユーザの持つデータをクラウドと呼ばれるネットワーク上の複数のサーバにより構成される仮想の大容量ストレージに分散・保管し、そのデータをどこからでもネットワーク経由でユーザが必要に応じてアクセスすることを可能にする技術である。さらに、保管データを有効活用するために、単にデータをストレージするだけでなく、クラウド上に分散・保管されたデータを用いて個々のデータを秘匿しながら任意の計算を行う秘匿計算を実現する技術が求められている。
[0003]
この秘匿計算を実現する技術の1つとして秘密分散法の利用が注目されている。秘密分散法とは1個の秘密情報をn個に分散し、n個に分散した分散値のうち、k個(k≦n)を集めることで元の秘密情報が復元できるという技術である。また、k個未満の分散値からは一切秘密情報に関する情報を得ることができない。この秘密分散法として、Shamirによる(k,n)秘密分散法が良く知られている。Shamirの(k,n)秘密分散法を含む従来の秘密分散システムは分散値を保存するn台のデータサーバと、秘密情報を分散するディーラまたは秘密情報を復元する復元端末からなる。すなわち、秘密分散時にオーナは自分が所有する秘密情報の分散をディーラに依頼し、ディーラは秘密分散法を用いてn個の分散値を計算して、その値を各々n個のデータサーバに分散保管する。一般に、ディーラは秘密分散時のみ存在するとされる。一方、復元を希望するユーザは復元したい秘密情報に対する分散値をk個のデータサーバから復元端末
Claims (18)
- nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
k個以上の秘密情報の各々の分散値を計算する手段と、
前記k個以上の秘密情報から合成値を生成する手段と、
前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を生成する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
第1の秘匿化秘密情報に用いられた第1の乱数を構成する複数の乱数のうちの1部である第1の部分乱数の分散値と、第2の秘匿化秘密情報に用いられた第2の乱数を構成する複数の乱数うちの1部である第2の部分乱数の分散値とを集めて、前記第1の部分乱数と前記第2の部分乱数を復元する手段と、
前記復元した第1の部分乱数と第2の部分乱数を合成する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、
前記復元した秘匿化秘密情報と他の値とに基づいて所定の演算をする手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を復元する計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、
前記乱数を合成する手段と、
前記合成された乱数を用いて、前記復元された前記秘匿化秘密情報の秘匿化を解除する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報における第1の合成乱数と、第2の合成乱数を構成するk個以上の乱数とを組み合わせて、前記第1の合成乱数を変換する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
秘匿化されていない分散値に、別の秘匿化秘密情報を構成するk個以上の乱数を作用させて秘匿化する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
複数の新たな秘密情報を秘匿化して複数の分散値を計算する手段と、
前記複数の分散値の各々の並び順を、前記秘匿化する前の前記複数の新たな秘密情報の予め定められた並び順に応じて指定する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて検索する秘密情報を指定する計算装置であって、
検索用秘密情報に乱数を作用させ秘匿化する手段と、
前記システムから受信した値に前記乱数を作用させる手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて指定された秘密情報を検索する計算装置であって、
前記秘密情報に対応する第1の検索用秘密情報を第1の乱数で秘匿化すると共に、入力された第2の検索用秘密情報を第2の乱数で秘匿化する手段と、
前記秘匿化された前記第1の検索用秘密情報に基づく第1の値と前記秘匿化された前記第2の検索用秘密情報に基づく第2の値との差に基づいて、前記第1の検索用秘密情報と前記第2の検索用秘密情報との差を取得する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、
乱数で秘密情報が秘匿化されて得られた分散値に対して、新たな乱数を生成し、前記生成した新たな乱数を新たな分散値として保存する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、
k個以上の補正情報から秘密情報を更新する更新値を計算する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
生成されたh(1〜k−1までの整数)個の乱数を分散値として定め、前記h個の分散値と前記秘密情報とに基づいて、n−h個の分散値を計算する手段と、
k個以上の秘密情報から合成値を生成する手段と、
前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を計算する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
秘密情報をe進数d桁の数値としたとき、前記秘密情報をL(n−1)分割を行ってe進数d/L(n−1)桁の数値とする手段と、
前記数値とされた秘密情報の分散、復元、及び秘匿演算の少なくとも1つを、
より大きな素数を法として、乗算及び除算を加算及び減算に分解することなく、加算と減算だけで行う手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算または復元をする計算装置であって、
秘匿化され複数の桁に分割された秘匿化秘密情報の桁に合わせて所定の演算を行う手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
前記秘密情報をp1以下の整数、乱数をp2以下の整数として、それらを乗算したp1*p2以下の秘匿化秘密情報をp1*p2より大きな素数を法として秘密分散または復号する手段
を備える計算装置。 - nを整数、kをnより小さい整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおける秘匿演算または復元を行う計算装置であって、
乱数の加算によって秘密情報を秘匿した秘匿化秘密情報と、前記乱数が秘密分散された分散値とを加減算する手段を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報の格納位置を検索する計算装置であって、
第1の検索用秘密情報と第2の検索用秘密情報の差を取得する手段と、
前記差に応じて前記格納位置を定める手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k−L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を更新する計算装置であって、
秘密情報の分散値に、予め定められた第1の乱数を乗算しかつ予め定められた第2の乱数を加算する手段
を備える計算装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015025825 | 2015-02-12 | ||
JP2015025825 | 2015-02-12 | ||
PCT/JP2016/051934 WO2016129363A1 (ja) | 2015-02-12 | 2016-01-22 | 秘密分散を用いた秘匿演算システムに関する計算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2016129363A1 true JPWO2016129363A1 (ja) | 2018-01-11 |
Family
ID=56615198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016574708A Pending JPWO2016129363A1 (ja) | 2015-02-12 | 2016-01-22 | 分散装置、演算・復元装置、及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2016129363A1 (ja) |
WO (1) | WO2016129363A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018135563A1 (ja) * | 2017-01-20 | 2018-07-26 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、プログラム |
JP7027060B2 (ja) * | 2017-08-03 | 2022-03-01 | 株式会社日立製作所 | 秘密分散システム及びその方法 |
JP7240037B2 (ja) * | 2018-02-20 | 2023-03-15 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
JP7041951B2 (ja) * | 2018-02-20 | 2022-03-25 | 惠市 岩村 | 入力者装置、演算支援装置、及びプログラム |
US12010220B2 (en) * | 2019-06-10 | 2024-06-11 | Nippon Telegraph And Telephone Corporation | Secure division system, secure computation apparatus, secure division method, and program |
US20220399991A1 (en) * | 2019-11-28 | 2022-12-15 | Nec Corporation | Shuffle system, shuffle method, and program |
CN111246463B (zh) * | 2020-02-10 | 2023-04-18 | 浙江机电职业技术学院 | 基于alpha稳定分布随机过程偏斜度参数的隐蔽通信方法 |
CN112217706B (zh) * | 2020-12-02 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004287333A (ja) * | 2003-03-25 | 2004-10-14 | Oki Electric Ind Co Ltd | 分散計算装置及び分散計算システム |
JP2004341152A (ja) * | 2003-05-15 | 2004-12-02 | Oki Electric Ind Co Ltd | 秘密分散方法、秘密分散システム、及び分散演算装置 |
JP2014138349A (ja) * | 2013-01-18 | 2014-07-28 | Nippon Telegr & Teleph Corp <Ntt> | 秘密分散システム、データ分散装置、分散データ保有装置、秘密分散方法、およびプログラム |
-
2016
- 2016-01-22 JP JP2016574708A patent/JPWO2016129363A1/ja active Pending
- 2016-01-22 WO PCT/JP2016/051934 patent/WO2016129363A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004287333A (ja) * | 2003-03-25 | 2004-10-14 | Oki Electric Ind Co Ltd | 分散計算装置及び分散計算システム |
JP2004341152A (ja) * | 2003-05-15 | 2004-12-02 | Oki Electric Ind Co Ltd | 秘密分散方法、秘密分散システム、及び分散演算装置 |
JP2014138349A (ja) * | 2013-01-18 | 2014-07-28 | Nippon Telegr & Teleph Corp <Ntt> | 秘密分散システム、データ分散装置、分散データ保有装置、秘密分散方法、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2016129363A1 (ja) | 2016-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016129363A1 (ja) | 秘密分散を用いた秘匿演算システムに関する計算装置 | |
CN112989368B (zh) | 多方联合进行隐私数据处理的方法及装置 | |
JP6934963B2 (ja) | データを暗号化する方法およびシステム | |
US20210157932A1 (en) | Linking encrypted datasets using common identifiers | |
CN114661680B (zh) | 一种私有数据隐匿共享方法 | |
CN113987559B (zh) | 保护数据隐私的双方联合进行数据处理的方法及装置 | |
Gomathisankaran et al. | Ensure privacy and security in the process of medical image analysis | |
Mishra et al. | A medical image cryptosystem using bit-level diffusion with DNA coding | |
CN112182660A (zh) | 一种数据排序方法及装置 | |
CN107592298A (zh) | 一种基于单服务器模型的序列比较算法安全外包方法、用户终端和服务器 | |
CN115002291B (zh) | 基于p张量秘密共享和多个数据隐藏器的信息隐藏方法 | |
WO2021124520A1 (ja) | 秘密乱数生成システム、秘密計算装置、秘密乱数生成方法、およびプログラム | |
Kumbhar et al. | Privacy preserving mining of association rules on horizontally and vertically partitioned data: a review paper | |
JP7041951B2 (ja) | 入力者装置、演算支援装置、及びプログラム | |
CN113992325A (zh) | 一种隐私数据共享方法及装置 | |
JP4623623B2 (ja) | 復元制御型秘密情報分散装置 | |
Calviño et al. | Privacy-preserving distributed statistical computation to a semi-honest multi-cloud | |
Muthukumar et al. | Modified secret sharing algorithm for secured medical data sharing in cloud environment | |
KumaraSwamy et al. | Association rule sharing model for privacy preservation and collaborative data mining efficiency | |
Xuelong et al. | A symmetric cryptography based on extended cellular automata | |
Sujan | Securing Distributed Data Mechanism Based On Blockchain Technology | |
JP7396373B2 (ja) | 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム | |
Ling et al. | P 2 FRPSI: Privacy-Preserving Feature Retrieved Private Set Intersection | |
JP2004274320A (ja) | 秘密分散装置、秘密再構成装置、秘密分散再構成システム、秘密分散方法、及び秘密再構成方法 | |
JP2015108682A (ja) | 秘匿比較方法、プログラム、およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A529 | Written submission of copy of amendment under article 34 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A5211 Effective date: 20170810 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170824 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20190115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190702 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20200107 |