秘匿マルチパーティ計算
MPCにおいて、所定の参加者数p1, p2, ..., pN各々が有する個人データをそれぞれd1, d2, ..., dNとする。参加者達は、自分の入力を秘匿したままその個人データで公開関数の値F(d1, d2, ..., dN)を計算したいとする。
例えば、青山、石井、宇野の参加者3名にそれぞれの給与を示す入力 x, y, zがあると想定しよう。彼らは、自分達が各々どのくらい稼ぐのかを互いに明かすことなく、3者のうち最も高い給料を見つけたいとする。数学的にこれは次の計算式に変換される。
F(x, y, z) = max(x, y, z)
信頼できる外部関係者(例えば、秘密を口外しない事で知られる共通の友人トニー)がいれば、彼らはトニーに自分達の給与額を伝えることが可能で、彼が最大値を計算してその数値を彼ら全員に伝えることができる。MPCの目的は、青山と石井と宇野が友人トニーに頼ることなく、つまり誰がいくら稼いでいるかを明 かさずにF(x, y, z)が分かるようなプロトコルを設計することにある。彼らは、不正をしない完全に信頼できるトニーとのやりとりから分かる以上の事を、同プロトコルに携わって知るべきではない。
ここで参加者達が知りうる全ての事は、その出力と自身の入力から知りうる事である。したがって上の例だと、出力がzなら宇野は自分のzが最大値であることを知り、青山と石井は(仮にx, y, zの数値が異なるとすれば)自分の入力が最大値ではなく、誰の給料なのか秘密保持された最大値がzであることを知る。