Garbled Circuit

松岡 航太郎

Garbled Circuitとは

  • GCと略されることが多いがGarbage Collectionではない
  • 主にはAESなどの普通の暗号を使って秘密計算をやる仕組み
  • 準同型暗号と並べて扱われることも多い
  • 名前の通り論理演算を行う

Garbled Circuitの基本的発想

  • AESなどでは暗号文と鍵とがほぼ同じ形式になっている
  • AESだとブロック長が128bitで鍵が256bitなので2ブロックと対応
  • ということは暗号文を秘密鍵として解釈し直すことができる
  • 出力を入力の暗号文を鍵として暗号化してやれば正しい組のときだけ復号できる

Garbled Table

  • 前のスライドのアイデアをNANDを例として具体的に書くと下の図のようになる
  • 実際はこの表(Garbled Table)はどういう論理ゲートかを隠すためにランダムに並び替える
  • Enc(p,sk,r)\rm{Enc}(p,sk,r)ppが平文、skskが秘密鍵、rrがある乱数の暗号文
  • A1:=Enc(1,sk,a1)A_1:=\rm{Enc}(1,sk,a_1)のように定義する
A1A_1 A0A_0
B1B_1 Enc(Enc(C0,B1,b11),A1,a11)\rm{Enc}(\rm{Enc}(C_0,B_1,b_{11}),A_1,a_{11}) Enc(Enc(C1,B1,b10),A0,a10)\rm{Enc}(\rm{Enc}(C_1,B_1,b_{10}),A_0,a_{10})
B0B_0 Enc(Enc(C1,B0,b01),A1,a01)\rm{Enc}(\rm{Enc}(C_1,B_0,b_{01}),A_1,a_{01}) Enc(Enc(C1,B0,b00),A0,a00)\rm{Enc}(\rm{Enc}(C_1,B_0,b_{00}),A_0,a_{00})

Garbled Circuit の高速化

Garbled Circuitの問題点

  • もしあり得る入力すべてにアクセスできると関数と平文がバレる
  • それを避けるのに紛失通信が使われる
  • 複数回評価することができない

参考文献

page_number: true