Two-Sided Malicious Security for Private Intersection-Sum with Cardinality(CRYPTO2020)を読んだ
どういう論文か
Private Intersection-Sum with Cardinalityに関する研究である。
Private Intersection-Sum with Cardinality(以下PI-SCA)
共通集合の濃度と同時に、共通集合に属する要素に関連づけられた値の和を算出するPSIのバリアントである。例えば、集合と集合であればである。ここでがに関連づけられていることをと書くことにすると、
のように対応していればそのIntersection-Sumはである。このIntersection-Sumはpaillier暗号のような加法準同型性を持つ暗号で実現できる。
関連技術
Σプロトコル
3-move honest-verifier zero-knowledge プロトコルである。Proverがコミットして、Verifierがチャレンジして、Proverがレスポンスを返す。この流れを3-moveという。つまり以下の流れになる
- ProverがVerifierにコミットメントtを送る
- VerifierがProverにランダムなチャレンジcを送る
- VerifierがProverにレスポンスsをおくる
OPRF(Oblivious Psuedo-Randomness Function)
OPRFとはが鍵を持っており、が入力を持っているとき擬似ランダム関数を評価するプロトコルのことである。数式で表すと以下のようになる。
つまり擬似ランダム関数をの情報を漏らさずに評価し、その出力はのみが得られる。
PSI-CA(Private Set Intersection CArdinality)
PSI-CAとはPSIのバリアントで共通集合の要素の情報を漏らさず、その濃度だけを出力するプロトコルのこと。
共有鍵(key share)
共有鍵とは秘密鍵を秘密分散したシェアのこと。例えばを共有鍵にするとのように秘密分散し、をが、をが持つ。
新規性
以前はPI-SCAのMalicious Securityなモデルでは、受信者と送信者のうちで片方向、例えば受信者のみが出力を得るような方法しか存在しなかった。
この研究でTwo-Sided Malicious Security、つまり両方向出力をしつつもをMalicious Securityを保証するプロトコルを提案する。これにより両方が出力得たいようなシナリオに対応することができる。
PI-SCAで初めてMalicious Securityと同時に線形の通信量と計算量を達成している。
手法
まずこのPI-SCAプロトコルが何をやろうとしているのかの概要図を紹介する。(なお、コミットメントや証明などはまだよくわかっていないため省略)
まず、両方向出力にするためには、まず受信者が得た出力が正確なものであることを証明しなければならない。そのため、プロトコルを役割を入れ替えて並行実行する手法をとる。(1,2の並行実行)
手法の中心となるのはDOPRF(Distrubuted Oblivious Psuedo-Randomness Function)である。これは共有鍵を用いてOPRFをすることを可能にするプロトコルであり、並行実行されたOPRFの出力を並び替えることができる(shuffled)。
Semi-honest SecurityなPI-SCAの構成方法
- DOPRFを利用してPSIを構成する。
- shuffled DOPRFプロトコルを構成し、PSI-CAに拡張する。
- 関連づけられた値をre-randomizable(つまり確率暗号)な加法準同型暗号を使ってPI-SCAを構成する。
ここでPSI-CAにDOPRFでなくてshuffled DOPRFを使うのは、ミックスネットのように暗号文と平文の対応をわからなくすることが目的である。対応関係がわからなくなれば平文そのものの情報が漏れることがなくその濃度だけを得られる。
Note 関連づけられた値をre-radomizeする必要があるのはビットパターンを平文を変えることなく変更する目的がある。
Malicious SecurityなDOPRFの構成
まずはDOPRFをSemi-honest Securityで実現する。
Semi-honest SecurityなPRFをq-DH仮定のもとで成立させる。
PRFの鍵を共有鍵にすることで、DOPRFプロトコルを構成することが可能である
先行研究で利用されていたDH仮定ベースのDOPRFでは困難であるとされるため、q-DH仮定で定義しなおしている。 次にMalicious SecurityなDOPRF実現する。 そのために
暗号化(準同型)のCorrectness
Consistency(二つの値の内部で使われている値が一致していること)
をCamenish-Shoup暗号を使いΣプロトコルによってゼロ知識証明する。これによりMalicious Securityを達成する。
Malicious SecurityなPI-SCAの構成
これらのプロトコルは全て出力を双方向に得ることを目標としていることに注意されたい。
Malicious SecurityなDOPRF→PSI
Malicious SecurityなPSIを構成する。
問題 PSIプロトコルで使用するDOPRFで出力を得た受信者が出力を送り返すとともに暗号文とPRF値のCorectnessを証明する必要がある。
手法 この証明はΣプロトコルによって実現できる。
DOPRF→shuffled DOPRF
Malicious Securityな PSI-CAを構成するためにDOPRFをshuffled DOPRFへ拡張する。
問題 shuffled DOPRFは送り返す前に出力をシャッフルできるが、このシャッフルのCorrectnessを証明する必要がある。
手法 平文と暗号文の集合が与えられた時、平文がある暗号文を並び替えたものの復号に対応することが効率的にゼロ知識証明できるプロトコルを使う。[BG12]
PSI→PSI-CA
Malicious Securityな PSI-CAを構成する。
問題 Malicious Securityにするには二つのPSI-CAを役割を逆にして並行に実行しなければならない。この時、各プロトコルの共有鍵の一貫性( Consistency)を証明する必要がある。
手法 各パーティは最初に共有鍵をコミットしてから一貫性の証明を行う。この証明にはΣプロトコルを利用する。
PSI-CA→PI-SCA
Malicious Securityな PI-SCAを構成する。
問題 PRFとそれに関連づけられた値に対してシャッフルを行うとき、をre-randomizeしつつシャッフルするが、そのがPRFに対するシャッフルと対応しているか証明する必要がある。また得られた暗号文を共有鍵を用いてhalf-decryptできるが、この復号のCorrectnessを証明する必要がある。
手法 前者の証明は[BG12]で実現できる。後者はΣプロトコルを使う必要がある。
指数領域への拡張
ここまでの議論では多項式サイズの入力でしかプロトコル成立しなかったが、緩めた選択的安全性を定義しPI-SCAが多項式サイズのみならず指数サイズの入力でも安全であることが示せる。
バッチ処理
今回のプロトコルは効率化のためにバッチ処理を提案する。今回のプロトコルでは重要な構成要素である以下の3つをバッチ処理している。
- Pedersen コミットメント
- CS暗号
- Σプロトコル
これらのテクニックにより通信量を低減することができている。独立した関心事なのではないかと思われる。
まとめ
双方向通信やhalf-decryptで双方向で出力を得る仕組みがとても面白いと思った。コミットメントや安全性証明の理解度が浅いため、読みながら理解を深めたい。
参考文献
Two-Sided Malicious Security for Private Intersection-Sum with Cardinality
Efficient Zero-Knowledge Argument for Correctness of a Shuffle Stephanie(BG12)
PSIとPSUについて調べた
PSIとPSU、そしてactiveな敵に対して安全なプロトコルについて簡単に調べたのでメモを残しておきます。以下の論文はgoogle scholarで出ます。
Extending Oblivious Transfers Efficiently(2003)
Y Ishai, J Kilian, K Nissim ,E Petrankの研究。
概要 この研究では1回のOTが安全なら複数回のOTが安全であることを証明しています。
より形式的にはOTを OTに帰着します。が安全なら、それをブラックボックス的に用いたも安全であるという事実を示しています。
まず、一方向性関数が存在すれば、疑似ランダム関数が存在するということが知られています。しかし、一方向性関数からOTへの帰着は困難です。 しかし、Beaverの定理によれば一方向性関数と小さなOTが存在すれば、大きなOTが存在すること(拡張の存在)が分かりました。
この研究でやられたことは主に
- 一方向性関数から疑似ランダム関数を構成し、ランダムオラクルモデルにおけるOTを効率的に拡張するプロトコルを提案。
- Correlational robustnessという性質を定義した。疑似ランダム性のような性質で、疑似ランダム関数族を得るのに使える。
です。
Efficient Private Matching and Set Intersection(2004)
M J. Freedman,K Nissim, B PinkasnによるPSIの概念や他の応用方法(PSI-CAやマルチパーティ型PSI)が提案された研究です。
Private Set IntersectionまたはPrivate Set Unionとはサーバーとクライアントの持つ各々の集合について共通集合または和集合を計算し、その結果をクライアントが得る。サーバーは何も得られないというプロトコルです。データベース上の計算において集合演算は幅広く活用されています。もともとはTTPを用いた方法や安全性のない平文でのやりとりが行われていましたが、PSIはそれを解決しています。
この論文でPSIは
Oblivious Polynomial Evaluation (OPE,1999)
paillier暗号などの加法準同型性を持つ暗号
を用いて与えられました。
Privacy Preserving Set Operations(2005)
L Kissner , D Song の研究。
和集合、共通集合、element reduction(要調査)に対するマルチパーティ計算プロトコルを提案しました。PPT-bounded adversaryモデルにおいても、passiveとactiveに対する安全性が保証されます。ここで提案されたプロトコルは、のちにMPSIやMPSUと呼ばれています。
Keyword Search and Oblivious Pseudorandom Functions(2005)
M J. Freedman, Y Ishai, B Pinkas, O Reingoldの研究。OPRFとはOPEの鍵付き疑似ランダム関数版のことです。
送信者は鍵を入力し、受信者はを入力する。
受信者は を得られる。送信者の鍵の情報も受信者の入力の値も漏れない。
OTやOPE同様にPSIに利用されます。
Honest-Verifier Private Disjointness Testing without Random Oracles (2006)
Susan Hohenberger Stephen A. Weisの研究。
PSI-CAを初めて正式に定義しました。 PSI-CAとは共通集合や部分集合の要素集合ではなく、その大きさ(つまり濃度)しか学習しないプロトコルです。つまり、サーバーが集合、クライアントが集合を入力したとき、を出力します。 実装は困難であり、PSIやPSUでは情報量が多すぎるような場合に利用するPSIのより発展的な研究です。計算量が[tex:O(n2)]です。
Efficient Oblivious Pseudorandom Function with Applications to Adaptive OT and Secure Computation of Set Intersection(2009)
Stanisław Jarecki and Xiaomin Liuの研究です。プロトコルにOPRFを用いて、通信ラウンド数が一定かつコミット型という特徴を持ちます。
Linear-Complexity Private Set Intersection Protocols Secure in Malicious Model(2010)
E D Cristofaro, J Kim, G Tsudikの研究。ここで初めてAPSI(Authorized Private Set Intersection)が定義されました。DDH仮定のもと、ランダムオラクルモデルで安全性が証明されます。CRSモデルを使わず、計算複雑性と通信複雑度が線形である初めての研究です。
ディジタル署名での認証とPSIの合わせ技で、PPIT(Privacy Policy based Information Transfer)と関連している。PPITとはクライアントが取得権限を持っている情報しか得られないプロトコルです。APSIは、共通集合のうちユーザーが権限を持っている情報しか得られません。
Semi-homomorphic Encryption and Multiparty Computation(2011)
R Bendlin, I Damg˚ard, C Orlandi,S Zakariasの研究です。BDOZとも呼ばれています。加法準同型性を活用して、効率的にactiveな敵に対して安全なマルチパーティ計算プロトコルを提案しました。 このプロトコルのプリプロセスの考え方はSPDZに活用されています。
Fast and Private Computation of Cardinality of Set Intersection and Union(2012)
E D Cristofaro,P Gasti,G Tsudikの研究。初めて線形時間で動作するPSI-CAとPSU-CAのプロトコルを実現しました。
Phasing: Private set intersection using permutation-based hashing(2015)
M Zohner,G Segev,T Schneider,B Pinkasの研究。 Permutation based-hashingを活用し、この2015年時点で最速のPSIを実現しました。
MASCOT: Faster Malicious Arithmetic Secure Computation with Oblivious Transfer (2016)
M Keller, E Orsiniの研究。activeな敵に対して安全かつ高速なマルチパーティ計算プロトコルです。オンラインフェーズはSPDZのものと全く同じですが、プリプロセスにおけるトリプルの生成が高速化されています。
この研究より前にFredriskenは、SPDZのプリプロセスにおけるトリプルの生成を二元体上で高速化しました。MASCOTでは任意の大きな有限体において、OTを使用したプリプロセスの実行を可能にしました。トリプルの生成には2つのk-bitの積を計算するgilboaの提案したプロトコルを利用します。
まとめ
認識に間違いがありましたら、コメント等で教えてください!何卒よろしくお願いします!
参考
Privacy Preserving Set Operations
Fast and Private Computation of Cardinality of Set Intersection and Union
Extending Oblivious Transfers Efficiently
Efficient Private Matching and Set Intersection
Faster Private Set Intersection Based on OT Extension
Practical Private Set Intersection Protocols with Linear Complexity
Honest-Verifier Private Disjointness Testing without Random Oracles
Phasing: Private Set Intersection using Permutation-based Hashing
MASCOT: Faster Malicious Arithmetic Secure Computation with Oblivious Transfer
なんとなく分かってもらうためのSPDZ解説(プリプロセスフェーズ編)
SPDZはsomewhat準同型暗号(以下SHE)を使うことで高い効率性と安全性を実現したマルチパーティ計算プロトコルです。
SHEによる効率的なプリプロセスフェーズの実現。
semi-honest secureよりも高い、active secureの効率的な実装。
active secureなので、n個のパーティのうちn-1がcorruptされていてもUC安全性が保障される。
のような性質を持っています。これについて解説します。
はじめに
ここから登場する記号は太字の場合はすべてである有限体上の次元ベクトルです。 そうでなければである有限体の要素です。
SHEとは加算と乗算に対して準同型性を持つが、計算回数が制限されたものです。SHEのなかでもBVというスキームを活用します。BVでは暗号文のまま十分な数と加算と1回の乗算を行うことが出来ます。暗号文での乗算が1回を超すと、正しく復号できなくなることに注意してください。
SPDZではSHEの準同型性を生かし、平文を暗号化し、暗号文の状態でブロードキャストや計算を行います。この時、
暗号文なので平文の情報は漏れない。
SHEの準同型性によって暗号文のまま計算ができる。
となります。こうして、プリプロセスフェーズで必要な情報を各パーティが使用可能な状態にしておくことで、オンラインフェーズでの計算量を減少させます。
加算と乗算
オンラインフェーズでも述べますが、加算と乗算の方法について説明します。 秘密分散方式として、加法的秘密分散を使っています。をを満たすようなに分割します。このことをと書き、各のことをシェアということにします。
例えばとして、とすると、
が明らかです。更にそのまま加算を行うこともできます。がにを足したい場合は、にを足します。実際、
なので加算できています。
乗算の場合はMultiplication Triplesを使います。Multiplication Triplesについては以下のサイトが参考になります。
ここではMultiplication Triplesのことをトリプルと呼ぶことにします。
MACでの認証
さて、SPDZには二つの値表現が登場します。SPDZではシェアをパーティの持つ秘密鍵やグローバル鍵で認証してあげることで、不正を検出します。この認証に使う認証子をMAC(Message Authentication Code)と呼ぶことにします。
はMACで認証されたシェアです。この値は単一の値を表現しているわけではなく、以下のような状態を表します。
は各パーティが個人で所持している値です。はすべてのパーティが参照できる値です。
なお、このMACはがないとチェックできないので計算が全て終わってからでないと誰かが不正したことを検出できません。
は秘密鍵で認証された値です。この値も単一の値を表現しているわけではなく、以下のような状態を表します。論文や図では〚〛を使用していますが、texで出す方法が分からないので以降は[]で代用しています。
は計算は各パーティの所持するシェアです。
はその計算における不正を検証するためのMACです。
この状態では、ブロードキャストしあってシェアを集めることでに認証されたを復元できます。例えば、下の図の赤く囲われた部分をブロードキャストしあって集めることでに認証されたを復元できます
を持っているなら値の正しさを検証できます。以外のについても同様です。
との違いはなしにを手にいられることです。そのため、オンラインフェーズでを公開するより前に値が必要な時に利用されています。
この表現はMACの認証に使用するグローバル鍵の公開を遅らせるために存在しています。各パーティががなければMACを確認することができないませんが、があると偽造できてしまいます。偽装を防ぐために各パーティの秘密鍵で認証させて、の公開を遅らせます。
サブプロトコル
プリプロセスフェーズでは同じような処理を繰り返し行う部分があるため、それを一般化したものを定義します。のようになっていますが、は各パーティのローカルに保持する値であることに注意してください。
平文のゼロ知識証明
任意の平文に対する正しい暗号文を共有するために以下の処理を行います。これをとしましょう。
各パーティはメッセージ空間からを選ぶ。各パーティの生成した平文の和はとなる。
各パーティがのように暗号化してブロードキャストする。
各パーティは暗号文に対応する平文を知っていることを証明する。
各パーティはを計算する。
暗号文に対応する平文を知っていることを証明する。
この処理によりを正しく共有し、を入手できます。
PAngle
は任意の平文に対するシェアを生成するために以下の処理を行います。これをとしましょう。
暗号文と、平文のシェアを入力にを生成する。各パーティはグローバル鍵の暗号文との積を計算し、を計算します。はで認証したMACの暗号文であり、これをReshareすればMACを共有できます。暗号文での乗算回数は1回です。
PBracket
は任意の平文に対するシェアを生成するために以下の処理を行います。これをとしましょう。
暗号文と、平文のシェアを入力にを生成します。各パーティは秘密鍵の暗号文との積を計算し、を計算します。はで認証したMACの暗号文であり、これをReshareすればMACを共有できます。暗号文での乗算回数は1回です。
Reshare
は暗号文からシェアを生成するプロトコルです。
暗号文に対応する平文のシェアを秘密分散します。第二引数にのコマンドを入力されると、平文を暗号化しているが暗号文のような暗号文も同時に生成します。暗号状態での乗算回数は0回です。
は乗算を1回も行わないので、やと組み合わせても乗算回数が1回を超えることがありません。
プリプロセス(オフライン)フェーズ
サブプロトコルを活用して平文の情報を一切明かすことなく、プロトコルの初期化やトリプルとペアの共有を行うことができます
具体的にはオンラインフェーズで利用する