JP5531154B2 - 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム - Google Patents
秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム Download PDFInfo
- Publication number
- JP5531154B2 JP5531154B2 JP2013503601A JP2013503601A JP5531154B2 JP 5531154 B2 JP5531154 B2 JP 5531154B2 JP 2013503601 A JP2013503601 A JP 2013503601A JP 2013503601 A JP2013503601 A JP 2013503601A JP 5531154 B2 JP5531154 B2 JP 5531154B2
- Authority
- JP
- Japan
- Prior art keywords
- secret
- value
- function
- calculation
- random number
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/42—Anonymization, e.g. involving pseudonyms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/50—Oblivious transfer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Description
本発明は、秘密分散によりデータを秘匿しつつ、乗算及び加算からなる式の計算を、計算結果の正当性を保ちながら行う秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラムに関する。
従来、データを秘匿した状態で、計算結果の正当性を保証しつつ乗算及び加算を含む計算を行う技術として、非特許文献1の3パーティ秘匿関数計算がある。これは、分散された入力値を復元することなく、3パーティ(3計算主体)の協調計算によって算術/論理演算の結果を導くプロトコルである。3パーティ秘匿関数計算プロトコルでは、秘匿積和結合システムは、データをある定められた素数p未満の自然数として扱う。データを秘匿するときは、そのデータをaとすれば、aを以下の条件を満たすよう3つに分散する。
a=a0+a1+a2 mod p
実際には、秘匿積和結合システムは、乱数a1、a2を生成し、a0=a−a1−a2とする。そして3パーティX、Y、Zに対して、Xに(a0、a1)、Yに(a1、a2)、Zに(a2、a0)を送信する。すると、a1、a2が乱数であるため、X、Y、Zのいずれのパーティもaの情報を持たないが、いずれか2パーティが集まればaを復元することができる。
実際には、秘匿積和結合システムは、乱数a1、a2を生成し、a0=a−a1−a2とする。そして3パーティX、Y、Zに対して、Xに(a0、a1)、Yに(a1、a2)、Zに(a2、a0)を送信する。すると、a1、a2が乱数であるため、X、Y、Zのいずれのパーティもaの情報を持たないが、いずれか2パーティが集まればaを復元することができる。
この秘匿は加法的な分散であるため、可換性を有する。したがって、分散値を加算してから復元しても、復元してから加算しても結果は等しい。すなわち、加算と定数倍は分散したまま通信なしで行うことが可能である。また、乗算も通信及び乱数生成が必要となるが可能である。そのため、論理回路を構成でき、いかなる計算を実行することも可能である。以下、3パーティ秘匿関数計算の具体例を示す。なお、3パーティ秘匿関数計算プロトコルにおいて、計算結果はpで除した余りであるが、記載を簡略化するため、以下、"mod p"の記載を省略する。
(1)X、Y、Zに分散された秘匿データaの復元
Xは、Yにa0を送信し、Zにa1を送信する。Yは、Zにa1を送信し、Xにa2を送信する。Zは、Xにa2を送信し、Yにa0を送信する。
Xは、Yから受信したa2とZから受信したa2とが一致していれば、a0+a1+a2を計算してaを復元する。Yは、Xから受信したa0とZから受信したa0とが一致していれば、a0+a1+a2を計算してaを復元する。Zは、Xから受信したa1とYから受信したa1とが一致していれば、a0+a1+a2を計算してaを復元する。
(2)c=a+bの秘密計算
データbもデータaと同様な方法により、Xに(b0、b1)が、Yに(b1、b2)が、Zに(b2、b0)が、それぞれ分散されて秘匿されているとする。
このとき、Xは(c0、c1)=(a0+b0、a1+b1)を計算して記録し、Yは(c1、c2)=(a1+b1、a2+b2)を計算して記録し、Zは(c2、c0)=(a2+b2、a0+b0)を計算して記録する。
(3)c=a+αの秘密計算(αは既知の定数)
Xは、(c0、c1)=(a0+α、a1)を計算して記録し、Zは、(c2、c0)=(a2、a0+α)を計算して記録する。Yの処理は無い。
(4)c=a・αの秘密計算
Xは、(c0、c1)=(a0・α、a1・α)を計算して記録し、Yは、(c1、c2)=(a1・α、a2・α)を計算して記録し、Zは、(c2、c0)=(a2・α、a0・α)を計算して記録する。
(5)c=a・bの秘密計算(不正検知なし乗算)
まず、Xは、乱数r1、r2、c0を生成し、c1=(a0+a1)(b0+b1)−r1−r2−c0を計算し、Yに(r1、c1)を、Zに(r2、c0)を送信する。
続いて、Yは、y=a1・b2+b1・a2+r1を計算し、Zにyを送信する。また、Zは、z=a2・b0+b 2 ・a 0 +r2を計算し、Yにzを送信する。
続いて、YとZはそれぞれ、c2=y+z+a2・b2を計算する。
そして、Xは(c0、c1)を記録し、Yは(c1、c2)を記録し、Zは(c2、c0)を記録する。
(6) c=a・bの秘密計算(不正検知付き乗算)
Xは、Yにa0を送信し、Zにa1を送信する。Yは、Zにa1を送信し、Xにa2を送信する。Zは、Xにa2を送信し、Yにa0を送信する。
Xは、Yから受信したa2とZから受信したa2とが一致していれば、a0+a1+a2を計算してaを復元する。Yは、Xから受信したa0とZから受信したa0とが一致していれば、a0+a1+a2を計算してaを復元する。Zは、Xから受信したa1とYから受信したa1とが一致していれば、a0+a1+a2を計算してaを復元する。
(2)c=a+bの秘密計算
データbもデータaと同様な方法により、Xに(b0、b1)が、Yに(b1、b2)が、Zに(b2、b0)が、それぞれ分散されて秘匿されているとする。
このとき、Xは(c0、c1)=(a0+b0、a1+b1)を計算して記録し、Yは(c1、c2)=(a1+b1、a2+b2)を計算して記録し、Zは(c2、c0)=(a2+b2、a0+b0)を計算して記録する。
(3)c=a+αの秘密計算(αは既知の定数)
Xは、(c0、c1)=(a0+α、a1)を計算して記録し、Zは、(c2、c0)=(a2、a0+α)を計算して記録する。Yの処理は無い。
(4)c=a・αの秘密計算
Xは、(c0、c1)=(a0・α、a1・α)を計算して記録し、Yは、(c1、c2)=(a1・α、a2・α)を計算して記録し、Zは、(c2、c0)=(a2・α、a0・α)を計算して記録する。
(5)c=a・bの秘密計算(不正検知なし乗算)
まず、Xは、乱数r1、r2、c0を生成し、c1=(a0+a1)(b0+b1)−r1−r2−c0を計算し、Yに(r1、c1)を、Zに(r2、c0)を送信する。
続いて、Yは、y=a1・b2+b1・a2+r1を計算し、Zにyを送信する。また、Zは、z=a2・b0+b 2 ・a 0 +r2を計算し、Yにzを送信する。
続いて、YとZはそれぞれ、c2=y+z+a2・b2を計算する。
そして、Xは(c0、c1)を記録し、Yは(c1、c2)を記録し、Zは(c2、c0)を記録する。
(6) c=a・bの秘密計算(不正検知付き乗算)
上記(5)の方法によりc=a・bの乗算を行った上で、X、Y、Zのそれぞれに対して以下の処理を行う。なお、以下の処理においてPはX、Y、Zのそれぞれを意味し、PがXである場合は、P-はZ、P+はYを意味し、PがYである場合は、P-はX、P+はZを意味し、PがZである場合は、P-はY、P+はXを意味する。
まず、P-、P+だけで乱数rを生成して共有し、P-、P+はr・a0、r・a1、r・a2をr・aの秘匿値として各パーティに分散する。続いて、上記(5)の方法によりc’=(r・a)・bを計算する。そして、r・c−c’が0であるか否かを確認し、0でないことをもって不正を検知する。
また、不正検知付き乗算を備えない秘匿関数計算として、非特許文献2のShamirの秘密分散をベースとした秘匿関数計算(以下、「Shamir方式」という。)がある。
千田浩司、濱田浩気、五十嵐大、高橋克己、「軽量検証可能3パーティ秘匿関数計算の再考」、CSS2010、2010年
SecureSCM-Consortium, "D9.2 Security Analysis", Cryptographic Aspects, 2009, p19-26.
3パーティ秘匿関数計算では乗算は可能であるが、通信及び乱数生成を要する。そのため、乗算が計算処理におけるボトルネックとなり、秘匿関数計算の高速化を阻む要因となっていた。Shamir方式は、非特許文献1の方式と比べ、データ量が半分で済む。また、Shamir方式においては、計算装置が4個以上であっても構わない。しかし、Shamir方式は、莫大な計算コスト(例えば約1000倍程度)のかかる公開鍵暗号方式を用いた方法でしか不正検知を行う方法が知られていない。
本発明の目的は、秘匿関数計算において乗算を効率化し、従来より高速に秘匿関数計算が可能な秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラムを提供することにある。
本発明の秘匿積和結合システムは、n個の0以上p未満(pは素数)の任意の値A0、…、An−1の暗号化または秘密分散による秘匿値[A0]、…、[An−1]について、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つ以上の計算装置で協調して行うことにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]を計算する秘匿積和結合システムであって、各計算装置は乱数生成部と関数計算部と不正検知部とを備える。なお、[]は、[]内の値が暗号化または秘密分散により秘匿されていることを表す記号であり、秘匿されていない値と区別するための記号である。例えば、実際の値が秘密分散されているときには、[]は、[]内に示された実際の値の秘密分散された断片の集合を概念的に示している。そして、本発明の秘匿積和結合システムは、a,b,α,βを0以上p未満の任意の値とするときに、
[αa+β]=α[a]+β
[a+b]=[a]+[b]
[a・b]=[a]・[b]
が成り立つ。また、非特許文献1の技術を基に本発明を適用した場合は、秘匿積和結合システムは3つの計算装置で構成でき、Shamir方式を基に本発明を適用した場合は、秘匿積和結合システムは3つ以上の任意の数の計算装置で構成できる。
[αa+β]=α[a]+β
[a+b]=[a]+[b]
[a・b]=[a]・[b]
が成り立つ。また、非特許文献1の技術を基に本発明を適用した場合は、秘匿積和結合システムは3つの計算装置で構成でき、Shamir方式を基に本発明を適用した場合は、秘匿積和結合システムは3つ以上の任意の数の計算装置で構成できる。
乱数生成部は、他の2つ以上の計算装置の乱数生成部と協調して、1以上p未満の乱数rの秘匿値[r]を生成する。
関数計算部は、他の2つ以上の計算装置の関数計算部と協調して、前記秘匿値[A0]、…、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]、[C’]=[r・f([A0]、…、[An−1])]を計算する。
不正検知部は、他の2つ以上の計算装置の不正検知部と協調して、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する。
本発明の秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラムによれば、秘匿関数計算において乗算を効率的に行うことができ、よって、従来より高速に秘匿関数計算をすることが可能となる。
本発明において対象となる計算は、0以上p未満(pは素数)の任意の値a、bの暗号化または秘密分散による秘匿値[a]、[b]に対する、定数倍、定数加算及び秘匿値同士の加算・乗算により構成される。例えば次のような計算である。
[αa+β]=α[a]+β(定数倍・定数加算)
[a+b]=[a]+[b](加算)
[a・b]=[a]・[b](乗算)
ここで、αとβはそれぞれ0以上p未満の任意の値である。また、計算結果はpで除した余りであるが、記載を簡略化するため、"mod p"の記載は省略した。本明細書内の説明および請求項では記載を簡略化するため、"mod p"の記載は省略する。第1式は、(αa+β)の秘匿値を、aの秘匿値[a]に定数αを乗算し、定数βを加算することで求めることができることを示している。第2式は、(a+b)の秘匿値[a+b]を、aの秘匿値[a]とbの秘匿値[b]の加算で求めることができることを示している。第3式は、(a・b)の秘匿値を、aの秘匿値[a]とbの秘匿値[b]の乗算で求めることができることを示している。本発明の秘匿積和結合システムでは、上記の3つの式が成り立つように秘匿化と定数倍、定数加算及び秘匿値同士の加算・乗算が実行できることを前提としている。なお、非特許文献1の秘匿関数計算には、加算、乗算、定数和、定数倍が備えられている。そのため、非特許文献1の秘匿関数計算によっても、上記の各式を計算することができるが、本発明では、より高速に計算する方法を示す。
[a+b]=[a]+[b](加算)
[a・b]=[a]・[b](乗算)
ここで、αとβはそれぞれ0以上p未満の任意の値である。また、計算結果はpで除した余りであるが、記載を簡略化するため、"mod p"の記載は省略した。本明細書内の説明および請求項では記載を簡略化するため、"mod p"の記載は省略する。第1式は、(αa+β)の秘匿値を、aの秘匿値[a]に定数αを乗算し、定数βを加算することで求めることができることを示している。第2式は、(a+b)の秘匿値[a+b]を、aの秘匿値[a]とbの秘匿値[b]の加算で求めることができることを示している。第3式は、(a・b)の秘匿値を、aの秘匿値[a]とbの秘匿値[b]の乗算で求めることができることを示している。本発明の秘匿積和結合システムでは、上記の3つの式が成り立つように秘匿化と定数倍、定数加算及び秘匿値同士の加算・乗算が実行できることを前提としている。なお、非特許文献1の秘匿関数計算には、加算、乗算、定数和、定数倍が備えられている。そのため、非特許文献1の秘匿関数計算によっても、上記の各式を計算することができるが、本発明では、より高速に計算する方法を示す。
本発明では、乱数rを乗じた上で行った秘匿計算の結果と秘匿計算を行った上で乱数を乗じた結果とを比較する。乱数rの存在により2つの計算結果が等しくなるように不正を行うことができないので、2つの計算結果が等しくないことをもって不正を検知できるというものである。これは、加法と乗法が、法を素数pとする領域で行われる場合、乱数rが掛かっている方は計算結果が乱数となるので、乱数rが掛かっていない方と掛かっている方との辻褄が合うような不正はできないことに基づく。
具体的には、上記の3つの式が成り立つので、0以上p未満の任意の秘匿値[a]、[b]、及び[a’]=r・[a]、[b’]=r・[b]に対して、以下の対応関係が成り立つ。
r(α[a]+β)=α[a’]+r・β(定数倍・定数加算)
r([a]+[b])=[a’]+[b’](加算)
r([a]・[b])=[a’]・[b](乗算)
r([a]・[b])=[r・a]・[b](乗算)
すなわち、左辺の( )内の本来計算したい値(秘匿値[c])のr倍の値は、右辺の式で算出される(秘匿値[c’])。これにより、本来計算したい秘匿値[c]に対して、不正がなければ[r・c]=[c’]すなわち[r・c−c’]=[0]となるような[c’]を算出できる。これに対し、不正がある場合、すなわち左辺と右辺の計算結果が[c]と[c’]でなく、不正の値u、vの加算により[c+u]と[c’+v]に改竄された場合、[r(c+u)−c’−v]=[r(c+u)−r・c−v]=[0]となるには、u、vが[r・u−v]=[0]を満たす必要がある。しかし、rが乱数であるため攻撃者がこれを満たすようにすることができる確率は、rが非零乱数(1≦r≦p−1)である場合は1/(p−1)、rが一様乱数(0≦r≦p−1)である場合は1/pにすぎない。そのため、[c]と[c’]を計算し、[r・c−c’]が[0]かどうかをチェックすることで不正を検知できる。
r([a]+[b])=[a’]+[b’](加算)
r([a]・[b])=[a’]・[b](乗算)
r([a]・[b])=[r・a]・[b](乗算)
すなわち、左辺の( )内の本来計算したい値(秘匿値[c])のr倍の値は、右辺の式で算出される(秘匿値[c’])。これにより、本来計算したい秘匿値[c]に対して、不正がなければ[r・c]=[c’]すなわち[r・c−c’]=[0]となるような[c’]を算出できる。これに対し、不正がある場合、すなわち左辺と右辺の計算結果が[c]と[c’]でなく、不正の値u、vの加算により[c+u]と[c’+v]に改竄された場合、[r(c+u)−c’−v]=[r(c+u)−r・c−v]=[0]となるには、u、vが[r・u−v]=[0]を満たす必要がある。しかし、rが乱数であるため攻撃者がこれを満たすようにすることができる確率は、rが非零乱数(1≦r≦p−1)である場合は1/(p−1)、rが一様乱数(0≦r≦p−1)である場合は1/pにすぎない。そのため、[c]と[c’]を計算し、[r・c−c’]が[0]かどうかをチェックすることで不正を検知できる。
図1に秘匿積和結合システム100の構成例を、図2にその処理フロー例をそれぞれ示す。秘匿積和結合システム100は、3つの計算装置10x、10y、10zを備える。秘匿積和結合システム100は、n個の0以上p未満(pは素数)の任意の値A0、…、An−1の暗号化または秘密分散による秘匿値[A0]、…、[An−1]に対し、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つの計算装置10x、10y、10zで協調して行うことにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]を計算する。
計算装置10xは乱数生成部11xと関数計算部12xと不正検知部13xとを備え、計算装置10yは乱数生成部11yと関数計算部12yと不正検知部13yとを備え、計算装置10zは乱数生成部11zと関数計算部12zと不正検知部13zとを備える。
乱数生成部11x、11y、11zは協調して、非零乱数r(1以上p未満の整数からランダムに選ばれた乱数)の秘匿値[r]を生成する(S1)。具体的には例えば次のように生成する(図3参照)。まず、乱数生成部11xが非零乱数rzを生成して乱数生成部11yと共有し、乱数生成部11yが非零乱数rXを生成して乱数生成部11zと共有し、乱数生成部11zが非零乱数rYを生成して乱数生成部11xと共有する(S1−1)。続いて、非特許文献1で開示された秘匿方法によりrX、rY、rZの秘匿値[rX]、[rY]、[rZ]を生成する(S1−2)。そして、非特許文献1の不正検知付き乗算によりこれらを乗算して、秘匿値[r]=[rX・rY・rZ]を生成する(S1−3)。なお、ここでは乱数r,rX,rY,rzが非零乱数である場合を例示したが、一様乱数(0以上p未満の整数からランダムに選ばれた乱数)であっても構わない。一様乱数である場合には、S1の代わりに図6に示すS11を実行する。具体的には、乱数生成部11x、11y、11zがそれぞれ一様乱数rX,rY,rzを生成し(S11−1)、非特許文献1で開示された秘匿方法によりrX、rY、rZの秘匿値[rX]、[rY]、[rZ]を生成し(S11−2)、これらを加算して秘匿値[r]=[rX+rY+rZ]を生成する(S11−3)。
関数計算部12x、12y、12zは協調して、入力された秘匿値[A0]、…、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]、[C’]=[r・f([A0]、…、[An−1])]の各計算を行う(S2)。[C]と[C’]の計算は、並行して行うことで効率的に計算することができる。並行して計算するにあたり、定数、秘匿値、及び秘匿値のペアである秘匿ペアを組み合わた加算・乗算を定義する必要がある。定義される計算は12通りある。関数fは12通りの計算のいずれか又は複数が1回または複数回組み合わさって構成される。以下では、関数fの計算と12通りの定義される計算とを区別するときには、定義される12通りの計算を基本計算と呼ぶ。つまり、関数fは、1つの基本計算または複数の基本計算を組み合わせた関数である。
説明において[a]、[b]は、基本計算ごとの秘匿値を示し、[c]は基本計算ごとの乱数rを乗算していない計算結果の秘匿値、[c’]は基本計算ごとの乱数rを乗算した計算結果の秘匿値を示している。[a]、[b]は、0以上p未満の任意の値a、bの暗号化または秘密分散による秘匿値であり、[a’]=r・[a]、[b’]=r・[b]である。なお、関数fが複数の基本計算で構成される場合には、基本計算ごとに[c]、[c’]を算出する。例えば、[A0]と[A1]と[A2]との加算であれば、1回目の基本計算として、[A0]と[A1]との加算を行う。1回目の基本計算では[A0]が[a]であり、[A1]が[b]である。そして、1回目の基本計算の結果として[c]、[c’]を算出する。そして、2回目の基本計算では、1回目の結果[c]、[c’]を[a]、[a’]とし、[A2]を[b]として加算を行い、2回目の基本計算の結果である[c]、[c’]を求める。この例の場合、2回の加算の組合せなので、2回目の基本計算の結果[c]、[c’]が、関数fの関数値[C]、[C’]である。
なお、基本計算のうち、秘匿値同士の加算、秘匿値に対する定数加算・定数倍、定数同士の加算・乗算の5通りについては、非特許文献1の秘匿関数計算の加算・乗算を適用すればよい。ここでは、その他の7通りの基本計算について説明する。
・秘匿ペア([a]、[a’])の定数倍
([c]、[c’])が、秘匿ペア([a]、[a’])を定数倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに0以上p未満の任意の定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])に対する定数加算
([c]、[c’])が、秘匿ペア([a]、[a’])に定数を加算する関数により得られる関数値である場合、秘匿値[r]に0以上p未満の任意の定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の加算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の加算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とを非特許文献1の不正検知なし乗算により乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の乗算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の乗算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿値[a]と秘匿値[b]の乗算
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とを非特許文献1の不正検知なし乗算により乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])の定数倍
([c]、[c’])が、秘匿ペア([a]、[a’])を定数倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに0以上p未満の任意の定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])に対する定数加算
([c]、[c’])が、秘匿ペア([a]、[a’])に定数を加算する関数により得られる関数値である場合、秘匿値[r]に0以上p未満の任意の定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の加算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の加算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とを非特許文献1の不正検知なし乗算により乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の乗算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の乗算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿値[a]と秘匿値[b]の乗算
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とを非特許文献1の不正検知なし乗算により乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ非特許文献1の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
不正検知部13x、13y、13zは協調して、非特許文献1で開示された秘匿関数計算方法により、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する(S3)。秘匿値[r・C−C’]を計算する際には、秘匿値[r]をrに復元した上で行うと、計算をより効率的に行うことができる。なお、関数fを構成する基本計算の中に秘匿ペア同士(([a]、[a’])と([b]、[b’]))との乗算が含まれている場合には、その基本計算ごとに、その基本計算での[b]、[b’]を記録しておく。そして、ステップS3の処理に先立ち、不正検知部13x、13y、13zが協調して非特許文献1で開示された秘匿関数計算方法により、それぞれの[b]、[b’]に対して秘匿値[r・b−b’]を求める。そして、いずれかの[r・b−b’]が[0]でない場合にも、[C]を出力せずに不正検知を表す情報を出力する(S3’)。なお、[r・c−c']の値の非零性の確認は、秘匿ペア同士(([a]、[a’])と([b]、[b’]))との乗算を行うごとに実行してもよい。
以上のように構成した本発明の秘匿積和結合システム、秘匿積和計算方法による演算の効率を非特許文献1の不正検知つき演算の効率と比較する。非特許文献1における計算量は、ほとんどが乱数生成及び物理的セキュアチャネルを用意できない場合の通信の暗号化・復号に係るものであり、暗号化・復号に係る計算量は通信回数に比例する。そのため、乱数生成回数と通信回数を比較することで両者の効率を比較することができる。なお、以下の説明中の「ラウンド数」とは、同時には送受信できない通信の回数である。例えば、他の計算装置から何らかの情報を受信した後でなければ処理を進められないような状態が多いと、ラウンド数が多くなる。
・本発明においては、全体として乱数生成のオーバーヘッドがある。
・秘匿ペアの定数倍は秘匿値の定数倍と同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペアに対する定数加算は、秘匿値に対する定数加算に対して同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペア同士の加算は、秘匿値同士の加算と同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペアと秘匿値の加算に関しては、本発明の場合、不正検知なし乗算1回のオーバーヘッドがある。
・秘匿ペア同士の乗算に関しては、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算2回と不正検知の際の復元1回で済み、平均乱数生成回数が2回、平均通信回数が6回、ラウンド数が2である。従って、乱数生成回数が5倍、通信回数が3倍、ラウンド数が2倍効率的になっている。なお、平均乱数生成回数とは、各計算装置が行う乱数生成の回数の平均である。例えば、1つの計算装置が3回乱数を生成し、他の2つの計算装置は乱数を生成しなかった場合、平均乱数生成回数は1回である。
・秘匿ペアと秘匿値の乗算に関しても、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算2回で済み、平均乱数生成回数が2回、平均通信回数が4回、ラウンド数が2である。従って、乱数生成回数が5倍、通信回数が4.5倍、ラウンド数が2倍効率的になっている。
・秘匿値と秘匿値の乗算に関しても、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算3回で済み、平均乱数生成回数が3回、平均通信回数が6回、ラウンド数が2である。従って、乱数生成回数が約3倍、通信回数が3倍、ラウンド数が2倍効率的になっている。
・本発明においては、全体として乱数生成のオーバーヘッドがある。
・秘匿ペアの定数倍は秘匿値の定数倍と同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペアに対する定数加算は、秘匿値に対する定数加算に対して同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペア同士の加算は、秘匿値同士の加算と同等(乱数生成回数、通信回数、ラウンド数いずれも0)。
・秘匿ペアと秘匿値の加算に関しては、本発明の場合、不正検知なし乗算1回のオーバーヘッドがある。
・秘匿ペア同士の乗算に関しては、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算2回と不正検知の際の復元1回で済み、平均乱数生成回数が2回、平均通信回数が6回、ラウンド数が2である。従って、乱数生成回数が5倍、通信回数が3倍、ラウンド数が2倍効率的になっている。なお、平均乱数生成回数とは、各計算装置が行う乱数生成の回数の平均である。例えば、1つの計算装置が3回乱数を生成し、他の2つの計算装置は乱数を生成しなかった場合、平均乱数生成回数は1回である。
・秘匿ペアと秘匿値の乗算に関しても、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算2回で済み、平均乱数生成回数が2回、平均通信回数が4回、ラウンド数が2である。従って、乱数生成回数が5倍、通信回数が4.5倍、ラウンド数が2倍効率的になっている。
・秘匿値と秘匿値の乗算に関しても、非特許文献1の場合、平均乱数生成回数が10回、平均通信回数が18回、ラウンド数が4である。これに対し、本発明の場合、不正検知なし乗算3回で済み、平均乱数生成回数が3回、平均通信回数が6回、ラウンド数が2である。従って、乱数生成回数が約3倍、通信回数が3倍、ラウンド数が2倍効率的になっている。
以上より、本発明の場合、乗算以外において非特許文献1と同等もしくは非効率となる部分があるが、秘匿関数計算において主にボトルネックとなる乗算について大きく効率化されるため、全体として非特許文献1よりも効率的に計算を行うことができる。
実施例2では、実施例1において関数fが排他的論理和(XOR)、すなわち、入力[A0]、…、[An−1]に対し、関数値[C]を
ベースとなる秘匿計算は、非特許文献1の方法を用いる。まず、XORは次式のように変形することができる。
そのため、以下のように計算することができる。
1.乱数rの秘匿値[r]を生成する。
2.各i(i=0, …,n-1)について、[Ai−1/2]を計算する。
3.非特許文献1の不正検知なし乗算により、[c'0]=[r(A0−1/2)]を計算する。また、[c0]=[A0−1/2]とおく。
4.i=1からi=n−1まで、(a)、(b)を繰り返す。
(a) [ci]=[−2(ci-1−1/2)(Ai−1/2)+1/2]
(b) [c'i]=[−2(c'i-1−1/2)(Ai−1/2)+r/2]
5.秘匿値[r]を復元し、rを得る。
6.([cn-1],[c'n-1])に対して、[r・cn-1−c'n-1]を計算する。計算結果が[0]ならば、[cn-1]を出力して終了し、[0]でなければ不正検知を表す情報を出力して終了する。
なお、上記の1は実施例1のS1に、2〜4はS2に、5〜6はS3にそれぞれ相当する。
1.乱数rの秘匿値[r]を生成する。
2.各i(i=0, …,n-1)について、[Ai−1/2]を計算する。
3.非特許文献1の不正検知なし乗算により、[c'0]=[r(A0−1/2)]を計算する。また、[c0]=[A0−1/2]とおく。
4.i=1からi=n−1まで、(a)、(b)を繰り返す。
(a) [ci]=[−2(ci-1−1/2)(Ai−1/2)+1/2]
(b) [c'i]=[−2(c'i-1−1/2)(Ai−1/2)+r/2]
5.秘匿値[r]を復元し、rを得る。
6.([cn-1],[c'n-1])に対して、[r・cn-1−c'n-1]を計算する。計算結果が[0]ならば、[cn-1]を出力して終了し、[0]でなければ不正検知を表す情報を出力して終了する。
なお、上記の1は実施例1のS1に、2〜4はS2に、5〜6はS3にそれぞれ相当する。
非特許文献1の方法で同じ計算を行う場合、乗算をn−1回行い、平均乱数生成回数は定数を除いて10n回、平均通信回数は18n回、ラウンド数は4nとなる。これに対し、本実施例では不正検知なし乗算2回ずつでよいため、平均乱数生成回数は2n回、平均通信回数は4n回、ラウンド数は2nである。そのため、乱数生成回数は5倍、平均通信回数は4.5倍、ラウンド数は2倍効率的になっている。
<参考:不正検知の証明>
秘匿ペアは、加算及び乗算の結果に対応しているため、秘匿ペアごとに不正がなかった場合の正しい計算結果が1つ存在する。この不正がない場合の結果がaであるような秘匿ペアの集合をPaと書く。
補題
rを非零乱数を表す変数とするとき、秘匿ペア([c]、[c’])∈Paが、([a+u]、[r・a+v])で表されれば、[r・c−c’]=[0]をチェックすることで、1−1/(p−1)以上の確率で不正検知できる(u、vは不正値)。
証明
不正がない場合は、不正を検知できる必要がないため、不正値u、vについてu≠0またはv≠0と仮定してよい。
秘匿ペアは、加算及び乗算の結果に対応しているため、秘匿ペアごとに不正がなかった場合の正しい計算結果が1つ存在する。この不正がない場合の結果がaであるような秘匿ペアの集合をPaと書く。
補題
rを非零乱数を表す変数とするとき、秘匿ペア([c]、[c’])∈Paが、([a+u]、[r・a+v])で表されれば、[r・c−c’]=[0]をチェックすることで、1−1/(p−1)以上の確率で不正検知できる(u、vは不正値)。
証明
不正がない場合は、不正を検知できる必要がないため、不正値u、vについてu≠0またはv≠0と仮定してよい。
u≠0のとき、[r・c−c’]=[r(a+u)−r・a−v]=[r・u−v]となり、rが1以上p未満の一様な乱数でかつx≠0であるため、[r・u−v]=[0]となる確率、すなわち不正が検出されない確率は、攻撃者から見て1/(p−1)である。逆に検出される確率は、1−1/(p−1)である。
u=0のとき、v≠0でなければならず、[r・u−v]≠[0]であるため、必ず不正が検出される。
上記のような([a+u]、[r・a+v])の集合をRa(={([a+u]、[r・a+v])|u,v∈Z/pZ})と書く。次に、実施例1の関数計算部12x、12y、12zにおいて定義した算法(12通りのいずれか)を行った回数kに関する帰納法により、次の条件を示す。
条件:([b]、[b’])の集合について不正があれば、1−1/(p−1)以上の確率で検知され、そうでなければ上記算法によって生成されるPaに属する秘匿ペアがすべてRaに属する。
k=0のとき、([b]、[b’])は生成されておらず不存在であるため、条件は満たされている。
k=m+1のとき、k=mまでで条件が成り立つと仮定すると、m+1回目の演算について、それぞれ以下が成り立つ。
・秘匿ペアの定数倍:
([a+u]、[r・a+v])∈Raと仮定すれば
(α[a+u]、α[r・a+v])=
([α・a+α・u]、[r・α・a+α・v])∈Rαa
・秘匿ペアに対する定数加算:
([a+u]、[r・a+v])∈Raと仮定すれば
([a+u]+β、[r・a+v]+[r・β])=
([a+β+u]、[r(a+β)+v])∈Ra+β
・秘匿ペア同士の加算
([a+u]、[r・a+v])∈Ra、([b+u’]、[r・b+v’])∈Rbと仮定すれば、
([a+u]+[a’+u’]、[r・a+v]+[r・b+v’])=
([a+b+u+u’]、[r(a+b)+v+v’])∈Ra+b
・秘匿ペアと秘匿値の加算
秘匿ペア同士の加算と同じ。
([a+u]、[r・a+v])∈Raと仮定すれば
(α[a+u]、α[r・a+v])=
([α・a+α・u]、[r・α・a+α・v])∈Rαa
・秘匿ペアに対する定数加算:
([a+u]、[r・a+v])∈Raと仮定すれば
([a+u]+β、[r・a+v]+[r・β])=
([a+β+u]、[r(a+β)+v])∈Ra+β
・秘匿ペア同士の加算
([a+u]、[r・a+v])∈Ra、([b+u’]、[r・b+v’])∈Rbと仮定すれば、
([a+u]+[a’+u’]、[r・a+v]+[r・b+v’])=
([a+b+u+u’]、[r(a+b)+v+v’])∈Ra+b
・秘匿ペアと秘匿値の加算
秘匿ペア同士の加算と同じ。
・秘匿ペア同士の乗算
([a+u]、[r・a+v])∈Ra、([b+u’]、[r・b+v’])∈Rbと仮定すれば、v’=0が成り立つ場合、
([a+u][b+u’]、[r・a+v][b+v’])=
([a・b+a・u’+b・u+u・u’]、[r・a・b+r・a・v’+b・v+v・v’])∈Rab
・秘匿ペアと秘匿値の乗算
([a+u]、[r・a+v])∈Raで、[b]が秘匿値のとき、
([a+u][b]、[r・a+v][b])=
([a・b+b・u]、[r・a・b+b・v])∈Rab
・秘匿値と秘匿値の乗算
[a]、[b]が秘匿値のとき、
([a][b]、[r・a][b])=([a・b]、[r・a・b])∈Rab
このとき、([b]、[b’])の集合のm番目の要素までに不正があれば、仮定より1−1/(p−1)以上の確率で検知され、条件を満たす。m+1番目が秘匿ペア同士の乗算であった場合に、([b]、[b’])の集合に([b+u’]、[r・b+v’])に加わるが、仮定よりこの秘匿ペアはRbに属するため、これに対する不正があった場合、1−1/(p−1)以上の確率で検知される。([b+u’]、[r・b+v’])に対する不正がない場合、v’=0であるから、上記各演算に関する性質より、m+1番目の演算結果の秘匿ペアはPaに属せばRaに属する。
([a+u]、[r・a+v])∈Ra、([b+u’]、[r・b+v’])∈Rbと仮定すれば、v’=0が成り立つ場合、
([a+u][b+u’]、[r・a+v][b+v’])=
([a・b+a・u’+b・u+u・u’]、[r・a・b+r・a・v’+b・v+v・v’])∈Rab
・秘匿ペアと秘匿値の乗算
([a+u]、[r・a+v])∈Raで、[b]が秘匿値のとき、
([a+u][b]、[r・a+v][b])=
([a・b+b・u]、[r・a・b+b・v])∈Rab
・秘匿値と秘匿値の乗算
[a]、[b]が秘匿値のとき、
([a][b]、[r・a][b])=([a・b]、[r・a・b])∈Rab
このとき、([b]、[b’])の集合のm番目の要素までに不正があれば、仮定より1−1/(p−1)以上の確率で検知され、条件を満たす。m+1番目が秘匿ペア同士の乗算であった場合に、([b]、[b’])の集合に([b+u’]、[r・b+v’])に加わるが、仮定よりこの秘匿ペアはRbに属するため、これに対する不正があった場合、1−1/(p−1)以上の確率で検知される。([b+u’]、[r・b+v’])に対する不正がない場合、v’=0であるから、上記各演算に関する性質より、m+1番目の演算結果の秘匿ペアはPaに属せばRaに属する。
よって、帰納法の仮定より、上記条件は実施例1の関数計算部12x、12y、12zにおいて定義した算法の任意の組み合わせについて成り立つ。すなわち、([b]、[b’])の集合の要素に不正が一つでもあれば1−1/(p−1)以上の確率で検知され、不正が一つもなければ任意の秘匿ペアの不正は1−1/(p−1)以上の確率で検知される。
結論として、([b]、[b’])の集合の要素の不正検知処理、及び出力となる秘匿ペア[c]、[c’]の不正検知処理を行えば、これら出力となる秘匿ペアの不正は1−1/(p−1)以上の確率で検知される。
実施例1では、非特許文献1に示される不正検知付き乗算を備える秘匿関数計算を基礎とする構成を説明したが、実施例3では、Shamir方式を前提とした構成を説明する。当該実施例3では、実施例1における乱数生成を一様乱数生成に限定することで不正検知付き乗算を不要にし、Shamir方式への適用を可能にする。これにより、高速かつ安全に算術演算を行うことが可能となり、かつ、非特許文献1の方式と比べデータ量を半分に抑えることができる。更に、実施例3の秘匿積和結合システムはShamir方式を前提としているので、計算装置が4個以上であっても構わない。
Shamir方式によるデータの秘匿方法及び復元方法を説明する。Shamir方式においては、計算装置がq個(q≧3)であるとき、その全部又は一部であるt+1個の計算装置で秘密を復元できる。ここで、Jを選択されたt+1個の計算装置の番号iの集合とする。Jに属するt+1個の計算装置でデータs(0≦s≦p−1)を秘匿するには、一様乱数をt個(r1, …,rt)を生成し、各i番目の計算装置に、si=s+r1・i+…+rt・itを分散する。このようにt+1個の計算装置に分散されたデータsの秘匿値[s](t+1個の断片siの集合)は、各計算装置に分散された断片siから、次式を計算することにより復元できる。
Shamir方式は、秘匿が加法的な分散であるため、可換性から、分散値を加算してから復元しても、復元してから加算しても結果は等しい。すなわち、加算と定数倍は、分散したまま通信なしで行うことが可能である。また、乗算も、通信及び乱数生成が必要となるが可能である。したがって、上述の
[αa+β]=α[a]+β(定数倍・定数加算)
[a+b]=[a]+[b](加算)
[a・b]=[a]・[b](乗算)
の3つの式を成り立たせることができる。そのため、論理回路を構成でき、いかなる計算を実行することも可能である。以下、データa、bが、それぞれ3個の計算装置X、Y、Zに分散されて秘匿されている場合(q=3)のShamir方式による秘匿関数計算の具体例を示す。すなわち、データaの秘匿値[a]の断片a1、a2、a3とデータbの秘匿値[b]の断片b1、b2、b3は、計算装置Xに(a1、b1)が、計算装置Yに(a2、b2)が、計算装置Zに(a3、b3)が、それぞれ分散されている。なお、t=1(いずれか2個の計算装置で秘密を復元可能)とする。
(1)c=a+bの秘匿関数計算
各計算装置が、[a]と[b]との和である[c]の断片cj(j=1、…、q)を、cj=aj+bjにより計算することにより得る。この例では、q=3である。そして、計算装置Xがc1=a1+b1を計算し、計算装置Yにおいてc2=a2+b2を計算し、計算装置Zがc3=a3+b3を計算する。
(2)c=a+αの秘匿関数計算(αは既知の定数)
各計算装置が、[a]と定数αとの和である[c]の断片cjをcj=aj+αにより計算することにより得る。この例では、計算装置Xがc1=a1+αを計算し、計算装置Yがc2=a2+αを計算し、計算装置Zがc3=a3+αを計算する。
(3)c=a・αの秘匿関数計算
各計算装置が、[a]と定数αとの積である[c]の断片cjをcj=aj・αにより計算することにより得る。この例では、計算装置Xがc1=a1・αを計算し、計算装置Yがc2=a2・αを計算し、計算装置Zがc3=a3・αを計算する。
[αa+β]=α[a]+β(定数倍・定数加算)
[a+b]=[a]+[b](加算)
[a・b]=[a]・[b](乗算)
の3つの式を成り立たせることができる。そのため、論理回路を構成でき、いかなる計算を実行することも可能である。以下、データa、bが、それぞれ3個の計算装置X、Y、Zに分散されて秘匿されている場合(q=3)のShamir方式による秘匿関数計算の具体例を示す。すなわち、データaの秘匿値[a]の断片a1、a2、a3とデータbの秘匿値[b]の断片b1、b2、b3は、計算装置Xに(a1、b1)が、計算装置Yに(a2、b2)が、計算装置Zに(a3、b3)が、それぞれ分散されている。なお、t=1(いずれか2個の計算装置で秘密を復元可能)とする。
(1)c=a+bの秘匿関数計算
各計算装置が、[a]と[b]との和である[c]の断片cj(j=1、…、q)を、cj=aj+bjにより計算することにより得る。この例では、q=3である。そして、計算装置Xがc1=a1+b1を計算し、計算装置Yにおいてc2=a2+b2を計算し、計算装置Zがc3=a3+b3を計算する。
(2)c=a+αの秘匿関数計算(αは既知の定数)
各計算装置が、[a]と定数αとの和である[c]の断片cjをcj=aj+αにより計算することにより得る。この例では、計算装置Xがc1=a1+αを計算し、計算装置Yがc2=a2+αを計算し、計算装置Zがc3=a3+αを計算する。
(3)c=a・αの秘匿関数計算
各計算装置が、[a]と定数αとの積である[c]の断片cjをcj=aj・αにより計算することにより得る。この例では、計算装置Xがc1=a1・αを計算し、計算装置Yがc2=a2・αを計算し、計算装置Zがc3=a3・αを計算する。
(4)c=a・bの秘匿関数計算(不正検知なし乗算)
[a]と[b]との積[c]は、次のように求める。
(i)各計算装置が、di=ai・bi(i=1、…、2t+1)を計算する。この例では、計算装置Xがd0=a0・b0を計算し、計算装置Yがd1=a1・b1を計算し、計算装置Zがd2=a2・b2を計算する。
(ii) 上記のShamir方式によるデータの秘匿方法によりd1、d2、d3の秘匿値[d1]、[d2]、[d3]を生成する。この例では、[d1]の断片をd1,0、d1,1、d1,2、[d2]の断片をd2,0、d2,1、d2,2、[d3]の断片をd3,0、d3,1、d3,2とする。そして、計算装置Xがd1,0、d2,0、d3,0を記録し、計算装置Yがd1,1、d2,1、d3,1を記録し、計算装置Zがd1,2、d2,2、d3,2を記録することで、d1、d2、d3を秘匿する。
(iii) 各計算装置が、[a]と[b]との積[c]の断片cjを、次式により計算して得る。この例では、計算装置X、Y、Zがそれぞれc1、c2、c3を計算する。
[a]と[b]との積[c]は、次のように求める。
(i)各計算装置が、di=ai・bi(i=1、…、2t+1)を計算する。この例では、計算装置Xがd0=a0・b0を計算し、計算装置Yがd1=a1・b1を計算し、計算装置Zがd2=a2・b2を計算する。
(ii) 上記のShamir方式によるデータの秘匿方法によりd1、d2、d3の秘匿値[d1]、[d2]、[d3]を生成する。この例では、[d1]の断片をd1,0、d1,1、d1,2、[d2]の断片をd2,0、d2,1、d2,2、[d3]の断片をd3,0、d3,1、d3,2とする。そして、計算装置Xがd1,0、d2,0、d3,0を記録し、計算装置Yがd1,1、d2,1、d3,1を記録し、計算装置Zがd1,2、d2,2、d3,2を記録することで、d1、d2、d3を秘匿する。
(iii) 各計算装置が、[a]と[b]との積[c]の断片cjを、次式により計算して得る。この例では、計算装置X、Y、Zがそれぞれc1、c2、c3を計算する。
図4に、Shamir方式に基づく秘匿積和結合システム200の構成例を、図5にその処理フロー例を示す。秘匿積和結合システム200は、q個の計算装置を備える。ここでは、実施例1と同様、計算装置が3個の場合(計算装置20x、20y、20z)で説明する。
秘匿積和結合システム200は、n個の0以上p未満の任意の値A0、…、An−1の秘密分散による秘匿値[A0]、…、[An−1]に対し、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つの計算装置20x、20y、20zで協調して行うことにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]を計算する。
計算装置20xは乱数生成部21xと関数計算部22xと不正検知部23xとを備え、計算装置20yは乱数生成部21yと関数計算部22yと不正検知部23yとを備え、計算装置20zは乱数生成部21zと関数計算部22zと不正検知部23zとを備える。
乱数生成部21x、21y、21zは協調して、一様乱数rの秘匿値[r]を生成する(S11)。具体的には例えば次のように生成する(図6参照)。まず、乱数生成部21xが一様乱数rXを、乱数生成部21yが一様乱数rYを、乱数生成部21zが一様乱数rZをそれぞれ生成する(S11−1)。続いて、上記のShamir方式によるデータの秘匿方法によりrX、rY、rZの秘匿値[rX]、[rY]、[rZ]を生成する。具体的には[rX]の断片をrX,0、rX,1、rX,2、[rY]の断片をrY,0、rY,1、rY,2、[rZ]の断片をrZ,0、rZ,1、rZ,2とする。そして、乱数生成部21xがrX,0、rY,0、rZ,0を記録し、乱数生成部21yがrX,1、rY,1、rZ,1を記録し、乱数生成部21zがrX,2、rY,2、rZ,2を記録する(S11−2)。このように断片を分散して記録することで秘匿する。そして、乱数生成部21xがr0=rX,0+rY,0+rZ,0を計算し、乱数生成部21yがr1=rX,1+rY,1+rZ,1を計算し、乱数生成部21zがr2=rX,2+rY,2+rZ,2を計算することで、秘匿値[r]の断片r0、r1、r2を得る(S11−3)。
関数計算部22x、22y、22zは協調して、入力された秘匿値[A0]、…、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、…、[An−1])]、[C’]=[r・f([A0]、…、[An−1])]の各計算を行う(S12)。[C]と[C’]の計算は、並行して行うことで効率的に計算することができる。並行して計算するにあたり、定数、秘匿値、及び秘匿値のペアである秘匿ペアを組み合わた加算・乗算を定義する必要がある。なお、定義すべき計算が、実施例1で説明した基本計算に相当する。つまり、実施例3でも関数fは、1つの基本計算または複数の基本計算を組み合わせた関数である。
定義すべき加算・乗算のうち、秘匿値同士の加算、秘匿値に対する定数加算・定数乗算については、上記のShamir方式の秘匿関数計算方法の加算・乗算を適用すればよい。そこで、ここでは、その他の計算について説明する。説明において[a]、[b]は、0以上p未満の任意の値a、bの暗号化または秘密分散による秘匿値であり、[a’]=r・[a]、[b’]=r・[b]であるとする。なお、関数fが複数の基本計算で構成される場合には、基本計算ごとに[c]、[c’]を算出する。例えば、[A0]と[A1]と[A2]との加算であれば、1回目の基本計算として、[A0]と[A1]との加算を行う。1回目の基本計算では[A0]が[a]であり、[A1]が[b]である。そして、1回目の基本計算の結果として[c]、[c’]を算出する。そして、2回目の基本計算では、1回目の結果[c]、[c’]を[a]、[a’]とし、[A2]を[b]として加算を行い、2回目の基本計算の結果である[c]、[c’]を求める。この例の場合、2回の加算の組合せなので、2回目の基本計算の結果[c]、[c’]が、関数fの関数値[C]、[C’]である。
・秘匿ペア([a]、[a’])の定数倍
([c]、[c’])が、秘匿ペア([a]、[a’])を定数倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに0以上p未満の任意の定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])に対する定数加算
([c]、[c’])が、秘匿ペア([a]、[a’])に定数を加算する関数により得られる関数値である場合、秘匿値[r]に0以上p未満の任意の定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の加算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の加算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とをShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の乗算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’']と秘匿値[b]を、それぞれShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の乗算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿値[a]と秘匿値[b]の乗算
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とをShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれShamir方式によるデータの秘匿方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])の定数倍
([c]、[c’])が、秘匿ペア([a]、[a’])を定数倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに0以上p未満の任意の定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])に対する定数加算
([c]、[c’])が、秘匿ペア([a]、[a’])に定数を加算する関数により得られる関数値である場合、秘匿値[r]に0以上p未満の任意の定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の加算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の加算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とをShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とする。
・秘匿ペア同士(([a]、[a’])と([b]、[b’]))の乗算
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’']と秘匿値[b]を、それぞれShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿ペア([a]、[a’])と秘匿値[b]の乗算
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
・秘匿値[a]と秘匿値[b]の乗算
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とをShamir方式による秘匿関数計算方法の不正検知なし乗算により乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれShamir方式によるデータの秘匿方法の不正検知なし乗算により乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とする。
不正検知部23x、23y、23zは協調して、Shamir方式による秘匿関数計算方法により、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する(S13)。秘匿値[r・C−C’]を計算する際には、秘匿値[r]をrに復元した上で行うと、計算をより効率的に行うことができる。なお、関数fを構成する基本計算の中に秘匿ペア同士(([a]、[a’])と([b]、[b’]))との乗算が含まれている場合には、その基本計算ごとに、その基本計算での[b]、[b’]を記録しておく。そして、ステップS13の処理に先立ち、不正検知部23x、23y、23zが協調してShamir方式による秘匿関数計算方法により、それぞれの[b]、[b’]に対して秘匿値[r・b−b’]を求める。そして、いずれかの[r・b−b’]が[0]でない場合にも、[C]を出力せずに不正検知を表す情報を出力する(S13’)。なお、[r・c−c']の値の非零性の確認は、秘匿ペア同士(([a]、[a’])と([b]、[b’]))との乗算を行うごとに実行してもよい。
以上説明した本発明の秘匿積和結合システム、秘匿積和計算方法における各処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本発明の秘匿積和結合システムの各構成要素の機能は必要に応じ、併合・分割しても構わない。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。本発明の各実施例の秘匿積和結合システム、計算装置をコンピュータによって実現する場合、装置及びその各部が有す機能の処理内容はプログラムによって記述される。そのプログラムは、例えば、ハードディスク装置に格納されており、実行時には必要なプログラムやデータがRAM(Random Access Memory)に読み込まれる。その読み込まれたプログラムがCPUにより実行されることにより、コンピュータ上で各処理内容が実現される。
Claims (10)
- pを素数とし、n個の0以上p未満の任意の値A0、・・・、An−1の暗号化または秘密分散による秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つ以上の計算装置で協調して行うことにより、秘匿された関数値[C]を[C]=[f([A0]、・・・、[An−1])]のように計算する秘匿積和結合システムであって、
[]は、値が暗号化または秘密分散により秘匿されていることを表す記号であり、
当該秘匿積和結合システムは、a,b,α,βを0以上p未満の任意の値とするときに、
[αa+β]=α[a]+β
[a+b]=[a]+[b]
[a・b]=[a]・[b]
が成り立ち、
前記計算装置は、
他の少なくとも2つの計算装置の乱数生成部と協調して、0以上p未満の乱数rの秘匿値[r]を生成する乱数生成部と、
他の少なくとも2つの計算装置の関数計算部と協調して、前記秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、・・・、[An−1])]、[C’]=[r・f([A0]、・・・、[An−1])]を計算する関数計算部と、
他の少なくとも2つの計算装置の不正検知部と協調して、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する不正検知部と、
を備える
ことを特徴とする秘匿積和結合システム。 - 請求項1に記載の秘匿積和結合システムであって、
前記関数計算部は、
[a’]=r・[a]、[b’]=r・[b]であるとき、
([c]、[c’])が、秘匿ペア([a]、[a’])を定数α倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])に定数βを加算する関数により得られる関数値である場合、秘匿値[r]に定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とを乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a']と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とを乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
前記不正検知部は、([c]、[c’])が秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合には、更に、他の2つの計算装置の不正検知部と協調して秘匿値[r・b−b’]を求め、[r・b−b’]が0でない場合にも、[C]を出力せずに不正検知を表す情報を出力する
ことを特徴とする秘匿積和結合システム。 - 請求項1又は2に記載の秘匿積和結合システムであって、
秘匿関数計算を協調して行う前記計算装置は、計算装置X、計算装置Y、及び計算装置Zの3つであり、
計算装置Xの乱数生成部は、1以上p未満の乱数rzを生成して計算装置Yの乱数生成部と共有し、
計算装置Yの乱数生成部は、1以上p未満の乱数rXを生成して計算装置Zの乱数生成部と共有し、
計算装置Zの乱数生成部は、1以上p未満の乱数rYを生成して計算装置Xの乱数生成部と共有し、
前記3つの計算装置の各乱数生成部は協調して、秘匿値[rX]、[rY]、[rZ]を生成し、これらを乗算して秘匿値[r]=[rX・rY・rZ]を生成する
ことを特徴とする秘匿積和結合システム。 - 請求項1又は2に記載の秘匿積和結合システムであって、
秘匿関数計算を協調して行う前記計算装置は、計算装置X、計算装置Y、及び計算装置Zの3つであり、
計算装置Xの乱数生成部は、0以上p未満の乱数rzを生成して計算装置Yの乱数生成部と共有し、
計算装置Yの乱数生成部は、0以上p未満の乱数rXを生成して計算装置Zの乱数生成部と共有し、
計算装置Zの乱数生成部は、0以上p未満の乱数rYを生成して計算装置Xの乱数生成部と共有し、
前記3つの計算装置の各乱数生成部は協調して、秘匿値[rX]、[rY]、[rZ]を生成し、これらを乗算して秘匿値[r]=[rX+rY+rZ]を生成する
ことを特徴とする秘匿積和結合システム。 - pを素数とし、n個の0以上p未満の任意の値A0、・・・、An−1の暗号化または秘密分散による秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つ以上の計算装置で協調して行うことにより、秘匿された関数値[C]を[C]=[f([A0]、・・・、[An−1])]のように計算する秘匿積和結合システムを構成する前記計算装置であって、
[]は、値が暗号化または秘密分散により秘匿されていることを表す記号であり、
前記秘匿積和結合システムは、a,b,α,βを0以上p未満の任意の値とするときに、
[αa+β]=α[a]+β
[a+b]=[a]+[b]
[a・b]=[a]・[b]
が成り立ち、
他の少なくとも2つの計算装置の乱数生成部と協調して、0以上p未満の乱数rの秘匿値[r]を生成する乱数生成部と、
他の少なくとも2つの計算装置の関数計算部と協調して、前記秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、・・・、[An−1])]、[C’]=[r・f([A0]、・・・、[An−1])]を計算する関数計算部と、
他の少なくとも2つの計算装置の不正検知部と協調して、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する不正検知部と、
を備える計算装置。 - pを素数とし、n個の0以上p未満の任意の値A0、・・・、An−1の暗号化または秘密分散による秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fによる秘匿関数計算を3つ以上の計算装置で協調して行うことにより、秘匿された関数値[C]を[C]=[f([A0]、・・・、[An−1])]のように計算する秘匿積和結合方法であって、
[]は、値が暗号化または秘密分散により秘匿されていることを表す記号であり、
当該秘匿積和結合方法では、a,b,α,βを0以上p未満の任意の値とするときに、
[αa+β]=α[a]+β
[a+b]=[a]+[b]
[a・b]=[a]・[b]
が成り立ち、
前記3つ以上の計算装置で協調して、0以上p未満の乱数rの秘匿値[r]を生成する乱数生成ステップと、
前記3つ以上の計算装置で協調して、前記秘匿値[A0]、・・・、[An−1]について、加算若しくは乗算又はその両方からなる関数fにより、秘匿された関数値[C]=[f([A0]、・・・、[An−1])]、[C’]=[r・f([A0]、・・・、[An−1])]を計算する関数計算ステップと、
前記3つ以上の計算装置で協調して、秘匿値[r・C−C’]を求め、[r・C−C’]が[0]であれば[C]を出力し、[0]でなければ不正検知を表す情報を出力する不正検知ステップと、
を実行する秘匿積和結合方法。 - 請求項6に記載の秘匿積和結合方法であって、
前記関数計算ステップは、
[a’]=r・[a]、[b’]=r・[b]であるとき、
([c]、[c’])が、秘匿ペア([a]、[a’])を定数α倍する関数により得られる関数値である場合、秘匿ペア([a]、[a’])のそれぞれに定数αを乗算して得られた秘匿ペア(α・[a]、α・[a’])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])に定数βを加算する関数により得られる関数値である場合、秘匿値[r]に定数βを乗算して秘匿値[r・β]を求め、秘匿値[a]に定数βを、秘匿値[a’]に秘匿値[r・β]をそれぞれ加算して得られた秘匿ペア([a]+β、[a’]+[r・β])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を加算する関数により得られる関数値である場合、秘匿値[a]に秘匿値[b]を、秘匿値[a']に秘匿値[b']をそれぞれ加算して得られた秘匿ペア([a]+[b]、[a’]+[b’]) を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを加算する関数により得られる関数値である場合、秘匿値[b]と秘匿値[r]とを乗算して秘匿値[b’]を求め、秘匿値[a]に秘匿値[b]を、秘匿値[a’]に秘匿値[b’]をそれぞれ加算して得られた([a]+[b]、[a’]+[b’])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a']と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
([c]、[c’])が、秘匿ペア([a]、[a’])と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
([c]、[c’])が、秘匿値[a]と秘匿値[b]とを乗算する関数により得られる関数値である場合、秘匿値[a]と秘匿値[r]とを乗算して秘匿値[a’]を求め、秘匿値[a]と秘匿値[b]、秘匿値[a’]と秘匿値[b]を、それぞれ乗算して得られた秘匿ペア([a]・[b]、[a’]・[b])を([c]、[c’])とし、
前記不正検知ステップは、([c]、[c’])が秘匿ペア同士(([a]、[a’])と([b]、[b’]))を乗算する関数により得られる関数値である場合には、更に、前記3つの計算装置で協調して秘匿値[r・b−b’]を求め、[r・b−b’]が0でない場合にも、[C]を出力せずに不正検知を表す情報を出力する
ことを特徴とする秘匿積和結合方法。 - 請求項6又は7に記載の秘匿積和結合方法であって、
秘匿関数計算を協調して行う前記計算装置は、計算装置X、計算装置Y、及び計算装置Zの3つであり、
前記乱数生成ステップは、
計算装置Xが1以上p未満の乱数rzを生成して計算装置Yと共有し、計算装置Yが1以上p未満の乱数rXを生成して計算装置Zと共有し、計算装置Zが1以上p未満の乱数rYを生成して計算装置Xと共有する断片共有サブステップと、
前記3つの計算装置で協調して、秘匿値[rX]、[rY]、[rZ]を生成する断片秘匿サブステップと、
前記3つの計算装置で協調して、秘匿値[rX]、[rY]、[rZ]を乗算することにより、秘匿値[r]=[rX・rY・rZ]を生成する断片結合サブステップと、
を実行する
ことを特徴とする秘匿積和結合方法。 - 請求項6又は7に記載の秘匿積和結合方法であって、
秘匿関数計算を協調して行う前記計算装置は、計算装置X、計算装置Y、及び計算装置Zの3つであり、
前記乱数生成ステップは、
計算装置Xが0以上p未満の乱数rzを生成して計算装置Yと共有し、計算装置Yが0以上p未満の乱数rXを生成して計算装置Zと共有し、計算装置Zが0以上p未満の乱数rYを生成して計算装置Xと共有する断片共有サブステップと、
前記3つの計算装置で協調して、秘匿値[rX]、[rY]、[rZ]を生成する断片秘匿サブステップと、
前記3つの計算装置で協調して、秘匿値[rX]、[rY]、[rZ]を乗算することにより、秘匿値[r]=[rX+rY+rZ]を生成する断片結合サブステップと、
を実行する
ことを特徴とする秘匿積和結合方法。 - 請求項1乃至4のいずれかに記載の秘匿積和結合システム又は請求項5記載の計算装置としてコンピュータを機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013503601A JP5531154B2 (ja) | 2011-03-10 | 2012-03-08 | 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011053284 | 2011-03-10 | ||
JP2011053284 | 2011-03-10 | ||
JP2011142715 | 2011-06-28 | ||
JP2011142715 | 2011-06-28 | ||
JP2013503601A JP5531154B2 (ja) | 2011-03-10 | 2012-03-08 | 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム |
PCT/JP2012/055974 WO2012121333A1 (ja) | 2011-03-10 | 2012-03-08 | 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5531154B2 true JP5531154B2 (ja) | 2014-06-25 |
JPWO2012121333A1 JPWO2012121333A1 (ja) | 2014-07-17 |
Family
ID=46798288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013503601A Active JP5531154B2 (ja) | 2011-03-10 | 2012-03-08 | 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US9064123B2 (ja) |
EP (1) | EP2667370B1 (ja) |
JP (1) | JP5531154B2 (ja) |
CN (1) | CN103403781B (ja) |
WO (1) | WO2012121333A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523422B2 (en) * | 2013-01-17 | 2019-12-31 | Nippon Telegraph And Telephone Corporation | Tampering detection device, tampering detection method and program |
WO2014112548A1 (ja) * | 2013-01-17 | 2014-07-24 | 日本電信電話株式会社 | 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム |
CN103294959B (zh) * | 2013-05-29 | 2015-11-25 | 南京信息工程大学 | 一种抗统计分析的文本信息隐藏方法 |
CN104618332B (zh) * | 2014-12-30 | 2017-10-24 | 桂林电子科技大学 | 基于符号边值二叉决策图的安全两方计算方法和系统 |
JP5968484B1 (ja) * | 2015-03-18 | 2016-08-10 | 日本電信電話株式会社 | シェア復旧システム、シェア復旧方法、およびプログラム |
WO2017038761A1 (ja) * | 2015-08-31 | 2017-03-09 | 日本電気株式会社 | 秘密計算システム、秘密計算装置、および、秘密計算方法 |
EP3364398B1 (en) * | 2015-10-13 | 2020-05-06 | Nippon Telegraph And Telephone Corporation | Secret random number synthesizing device, secret random number synthesizing method, and program |
JP6467063B2 (ja) * | 2015-10-13 | 2019-02-06 | 日本電信電話株式会社 | 秘密認証符号付加装置、秘密認証符号付加方法、およびプログラム |
JP6585846B2 (ja) * | 2016-07-06 | 2019-10-02 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム |
JP6534778B2 (ja) * | 2016-07-06 | 2019-06-26 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム |
WO2018008543A1 (ja) * | 2016-07-06 | 2018-01-11 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム |
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 |
CN110088756B (zh) * | 2016-12-19 | 2023-06-02 | 三菱电机株式会社 | 隐匿化装置、数据分析装置、隐匿化方法、数据分析方法以及计算机能读取的存储介质 |
WO2018135511A1 (ja) * | 2017-01-18 | 2018-07-26 | 日本電信電話株式会社 | 秘密計算方法、秘密計算システム、秘密計算装置、およびプログラム |
US11164484B2 (en) * | 2017-01-20 | 2021-11-02 | Nippon Telegraph And Telephone Corporation | Secure computation system, secure computation device, secure computation method, and program |
WO2018135566A1 (ja) * | 2017-01-20 | 2018-07-26 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、プログラム |
CN110800034B (zh) * | 2017-07-05 | 2023-05-02 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、程序以及记录介质 |
AU2018338249B2 (en) * | 2017-09-21 | 2020-11-26 | Nippon Telegraph And Telephone Corporation | Secure reading apparatus, secure writing apparatus, method thereof, and program |
US11508262B2 (en) * | 2017-09-21 | 2022-11-22 | Nippon Telegraph And Telephone Corporation | Secure reading and writing apparatus, secure reading and writing method, and program |
CN111837170A (zh) * | 2018-03-12 | 2020-10-27 | 日本电信电话株式会社 | 秘密计算装置、秘密计算方法、程序、以及记录介质 |
US11354317B2 (en) * | 2018-05-08 | 2022-06-07 | Nippon Telegraph And Telephone Corporation | Safety assessment apparatus, safety assessment method, and program |
CN112805768B (zh) * | 2018-10-04 | 2023-08-04 | 日本电信电话株式会社 | 秘密s型函数计算系统及其方法、秘密逻辑回归计算系统及其方法、秘密s型函数计算装置、秘密逻辑回归计算装置、程序 |
CN111857649B (zh) * | 2020-06-22 | 2022-04-12 | 复旦大学 | 一种用于隐私保护机器学习的定点数编码及运算系统 |
CN112688779B (zh) * | 2021-03-09 | 2021-07-13 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0373990A (ja) * | 1989-05-18 | 1991-03-28 | Toshiba Corp | 分散型情報処理装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1218284C (zh) * | 1997-01-28 | 2005-09-07 | 松下电器产业株式会社 | 信息复原型署名装置 |
JP2007124612A (ja) * | 2006-06-14 | 2007-05-17 | Chiba Univ | 鍵生成プログラム |
AU2007351552B2 (en) * | 2006-11-07 | 2010-10-14 | Security First Corporation | Systems and methods for distributing and securing data |
US20100091986A1 (en) * | 2006-11-10 | 2010-04-15 | Laputa, Inc. | Information Management System and Encryption System |
-
2012
- 2012-03-08 JP JP2013503601A patent/JP5531154B2/ja active Active
- 2012-03-08 WO PCT/JP2012/055974 patent/WO2012121333A1/ja active Application Filing
- 2012-03-08 CN CN201280011766.9A patent/CN103403781B/zh active Active
- 2012-03-08 US US14/003,637 patent/US9064123B2/en active Active
- 2012-03-08 EP EP12754230.6A patent/EP2667370B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0373990A (ja) * | 1989-05-18 | 1991-03-28 | Toshiba Corp | 分散型情報処理装置 |
Non-Patent Citations (2)
Title |
---|
JPN6012017105; D. Bogdanov et al.: 'Sharemind: a framework for fast privacy-preserving computations' Cryptology ePrint Archive Report 2008/289, 20080703 * |
JPN6012017108; 五十嵐大,他: '軽量検証可能3パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理' 2011年暗号と情報セキュリティシンポジウム予稿集 , 20110125, 2C3-6 * |
Also Published As
Publication number | Publication date |
---|---|
CN103403781A (zh) | 2013-11-20 |
WO2012121333A1 (ja) | 2012-09-13 |
US20130339728A1 (en) | 2013-12-19 |
CN103403781B (zh) | 2016-01-20 |
EP2667370A4 (en) | 2015-03-04 |
JPWO2012121333A1 (ja) | 2014-07-17 |
US9064123B2 (en) | 2015-06-23 |
EP2667370A1 (en) | 2013-11-27 |
EP2667370B1 (en) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5531154B2 (ja) | 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム | |
CN109255247B (zh) | 多方安全计算方法及装置、电子设备 | |
Asharov et al. | More efficient oblivious transfer and extensions for faster secure computation | |
CN114338045B (zh) | 基于区块链和联邦学习的情报数据安全共享方法及系统 | |
JP6034927B1 (ja) | 秘密計算システム、秘密計算装置、およびプログラム | |
Gélin et al. | Loop-abort faults on supersingular isogeny cryptosystems | |
JP2020532168A (ja) | 閾ボールトを生成する、コンピュータにより実施される方法 | |
JP2020531893A (ja) | 閾値デジタル署名方法及びシステム | |
EP2947642B1 (en) | Secret computation system, arithmetic unit, secret computation method and program | |
CN110545279A (zh) | 兼具隐私和监管功能的区块链交易方法、装置及系统 | |
JP5450839B2 (ja) | 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム | |
US20180351752A1 (en) | Device and system with global tamper resistance | |
EP4167213B1 (en) | Secret computation method, secret computation system, secret computation apparatus, and program | |
US11575501B2 (en) | Preserving aggregation using homomorphic encryption and trusted execution environment, secure against malicious aggregator | |
WO2020165932A1 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
Rong et al. | Toward fault-tolerant and secure frequent itemset mining outsourcing in hybrid cloud environment | |
WO2023072504A1 (en) | Threshold signature scheme | |
KR100699836B1 (ko) | 스칼라 곱에서 dfa 대책을 위한 장치 및 방법 | |
KR20240045231A (ko) | 디지털 서명 셰어의 생성 | |
CN114398662A (zh) | 基于安全多方计算的隐私保护机器学习推理方法及系统 | |
Shim et al. | Lite-Rainbow: lightweight signature schemes based on multivariate quadratic equations and their secure implementations | |
Raj et al. | A security architecture for cloud data using hybrid security scheme | |
JP6881588B2 (ja) | 秘密計算装置、秘密計算方法、プログラム、および記録媒体 | |
JP6799012B2 (ja) | 秘匿決定木計算システム、装置、方法及びプログラム | |
Somsuk | The Improvement of Elliptic Curve Factorization Method to Recover RSA’s Prime Factors. Symmetry 2021, 13, 1314 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20140415 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140421 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5531154 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |