はじめに
この記事では、Witness Encryptionとよばれる暗号方式を紹介します。
計算複雑性理論的に解くことが難しいとされているNP問題に属する問題と答えの組は、平文を暗号化するための暗号鍵と復号鍵として扱えるという話です。ざっくり言えば、「与えられた鍵を正しく組み合わせると復号のための鍵になるが、正しい組み合わせ方を見つけるのがNP完全であるような問題」を考えます。
まず、Exact Cover Problemを説明し、Witness Encryptionの基礎になっているExact Cover Problemを用いたスキームを説明します。その後記号の定義、Witness Encryptionの概要、Multilinear mapsの詳細について述べます。
Exact Cover Problem
まず、Exact Cover Problemの説明をします。
ある集合X
の部分集合の集合S
が与えられて、そのS
の部分集合であるようなS∗
において、X
に含まれる要素全てがS∗
の中にひとつだけ含まれるとき、S∗
はExact Coverであると言います。
たとえば、集合 X={1,2,3,4}
だとします。そして集合S={A,B,C,D}
として、A,B,C,D
は以下のようであるとします。
A={1,2,3}
B={1,4}
C={2,3}
D={2,3,4}
このとき、S∗={B,C}
はExact Coverです。なぜなら集合B,C
は共通要素を持たず、これらの和集合は {1,2,3,4}
でありX
と等しいからです。
しかし、S∗={A,D}
はExact Coverではありません。なぜなら、これらの和集合は{1,2,3,4}
になりX
と等しくなりますが、A
とD
では要素2
と3
が共通しているからです。
Exact Cover Problemを用いたスキーム
今回は、NP完全問題である3-Exact Cover problemを扱います。
3-Exact Cover problemとは[n]
の部分集合で、要素数が3である部分集合T1,...,Tl
に対して、Exact CoverであるTi1,...,Tit
を見つける問題です。
これは、[n]
の(n3)
通りの部分集合であるT
と別のパーティーPT
を対応させる秘密分散スキームに対応しています。
この秘密分散スキームでは、それぞれのパーティーPT
の秘密シェアλT
から秘密x
を構成します。
この秘密分散スキームには2つの条件があります。
- efficient recovery
PTi1,...,PTit
の集合がexact coverを知っていたら、これらのパーティーはそれぞれの秘密シェアλTi1,...,λTit
から秘密x
を効率的に回復できる。
- privacy
PTi1,...,PTit
がexact coverを含んでいなければ、秘密x
とx′
の区別ができない。
記号の定義
Exact Cover Problemのインスタンスは、n
とT1,...,Tl⊂[n]
から成り立ちます。
[n]
の分割である{Ti:i∈I}
のもと、Witnessは集合I⊆[l]
です。
n
-多線形性族は、位数p
,
生成元g1,...,gn
の群G1,...,Gn
と
i+j≤n
に対してei,j(gia,gjb)=gi+jab
を満たすようなMultilinear mapsei,j:Gi×Gj→Gi,j
から構成されます。
Multilinear mapsは以下のように書き換えられます。
i1+...+it≤n
に対して、
e(gi1a1,...,gitat)=(gi1+...+it)a1+...+at
を満たすような
e:Gi1×...×Git→Gi1+...+it
Witness Encryptionの概要
ユーザは、メッセージM
を特定の問題インスタンスx
に暗号化して、暗号文を生成することができます。
暗号文の受信者は、x
が言語にあり、受信者が解wを知っていて、R(x,w)
が成立する場合、メッセージを復号することができます。
もしx
が言語L
になければ、同じ長さのメッセージを受信者は区別できません。
また、受信者は、x
が実際に言語L
に含まれているかどうかわからないかもしれません。
Witness Encryptionの詳細
もしもI
がWitnessならばパズルピースとも言える{Ti:i∈I}
はパズル[n]
の答えに対応しています。
Witnessは複数いることが想定されるので、パズルを解けるピースは複数あるといえます。
Witness Encryptionではmultilinear(多重線形性) mapsを用いて、パズルピースの乗算をできるようにします。
Exact Coverインスタンス(n,T1,...,Tl)
とn
-多線形性族に対して、Witness Encryptionを以下のように定義します。
M∈Gn
を暗号化するのに、ランダムにスカラーa1,...,an∈Zp
を生成し、C=M⋅gna1⋅⋅⋅an
とi∈[l]
に対するパズルピースCi=(g∣Ti∣)∏j∈naj
から構成される暗号文を作成して復号者に送ります。
もし復号者が、[n]
の分割である{Ti:i∈I}
に対するWitnessI={i1,...,it}⊆[l]
を知っていれば多重線形性写像を用いて復号できます。特にM
を復号するために、gna1⋅⋅⋅an=e(Ci1,...,Cit)
を計算し、C
からこの値を分割します。
直観的には、gna1⋅⋅⋅an
を作ることが、[n]
のExact Coverを見つけることです。
このアルゴリズムは、“Decision Multilinear No-Exact-Cover Problem”の困難性に基づいて安全性を保証します。
これは、直観的には、解のないExact Coverのインスタンスx
が与えられた場合、r
がランダムかつ他の変数に対して独立だとしたとき(C1,...,Cl,gna1⋅⋅⋅an)
分布と(C1,...,Cl,gnr)
分布を区別するのは困難であるというものです。
Multilinear mapsの詳細
Diffie-HellmanからMultitilinear mapsへ
Diffie-Hellmanの鍵交換方式では、
生成元g
、位数q
の巡回群G
でa,b∈{0,...,q−1}
に対し、
アリスがA=ga
を、ボブがB=gb
を送り合い、互いにgab=Ab=Ba
を計算する。
[Jou04]では、1ラウンドで3人の鍵交換をするために以下のスキームが考案された。
生成元g
、位数q
の巡回群G
、非退化な二重線形写像e:G×G→GT
、a,b,c∈{0,...,q−1}
に対しアリスがA=ga
を、ボブがB=gb
を、チャーリーがC=gc
を送り合い、e(g,g)abc=e(A,B)C=e(B,C)a=e(C,A)b
を算出する。
Multilinear mapsの定義
あらゆるa1,...,an∈Z
とg1,...,gn∈G
に対して、e(gi1a1,...,ginan)=e(gi1+...+in)a1...an
が成り立ち、かつ、 G
の生成元g
に対してe(gg,...,g)
がGT
の生成元のうえで、e
が非退化であるとき、
巡回群G
と素位数q
のGT
に対するmap(写像)e:Gn→GT
はn-linear mapまたはnを省略して Multilinear mapといいます。
非退化の定義
対称双一次形式β:V×V→R
が非退化であるとは、次の条件が成り立つときをいう。
∀v∈V[(任意のw∈Vに対しβ(v,w)=0)ならばv=0]
双一次形式の定義
V,W
を体K
上のベクトル空間とする。β:V×W→K,(v,w)↦β(v,w)
がV×W
上の双一次形式(双線型形式)(a bilinear form)とは片側の変数を固定した時、線形である時をいう。
すなわちv,v′∈V,w,w′∈W,k∈K
に対して
・β(v+v′,w)=β(v,w)+β(v′,w),β(kv,w)=kβ(v,w)
・β(v,w+w′)=β(v,w)+β(v,w′),β(v,kw)=kβ(v,w)
・β(v,w+w′)=β(v,w)+β(v,w′),β(v,kw)=kβ(v,w)
さらにβ(v,w)=β(w,v)
が成り立つ時、V
上の対称双一次形式という。
出典: http://www.rimath.saitama-u.ac.jp/lab.jp/Fukui/lectures/Linear_algebra.pdf
今回のスキーム
暗号文の加算と乗算を任意の回数行える完全準同型暗号(FHE)の暗号文と、Multilinear mapsの群要素の指数とが似ているという直感から以下の[GGH13a]スキームは生まれました。
素位数q
の巡回群Gi
の生成元gi
がgi+j=e(gi,gj)
を満たす時、加法gia⋅gib=gia+b∈Gi
かつ乗法i+j≤n
に対してe(gia,gjb)=gi+ja⋅b∈Gi+j
が成り立ちます。
この写像は以下のように書き換えられます。
i1+...+it≤n
に対して、
e(gi1a1,...,gitat)=(gi1+...+it)a1+...+at
を満たすような
e:Gi1×...×Git→Gi1+...+it
この写像こそが今回Witness Encryptionで扱ったMultilinear mapsです。
まとめ
Witness EncryptionはExact Cover ProblemとMultinlinear mapsを活用した暗号方式になっています。Exact Cover ProblemはNP完全問題なので、クラスNPに属する任意の問題はこのスキームを用いて暗号鍵に変換することができると言えます。
興味を持たれた方は、ぜひ論文を読んでみて下さい。
参考サイト
https://eprint.iacr.org/2013/258.pdf

Knuth's Algorithm XとDancing Linksの解説 - TopCoderとJ言語と時々F#
Exact Cover Problem 今回解説するKnuth's Algorithm Xは、Exact Cover Problemという問題を解くためのアルゴリズムです。Exact Cover Problemについてはうまい日本語訳が分からない(「敷き詰め問題」とか?)ので英語のまま書いています。数学で言うと、ある集...
http://www.rimath.saitama-u.ac.jp/lab.jp/Fukui/lectures/Linear_algebra.pdf
https://www.cryptrec.go.jp/exreport/cryptrec-ex-2603-2016.pdf
[Jou04] http://cgi.di.uoa.gr/~aggelos/crypto/page4/assets/joux-tripartite.pdf
[GGH13a] https://eprint.iacr.org/2012/610.pdf