Alessandro Chiesa UC Berkeley
1
Zero Knowledge Succinct Arguments: an Introduction Alessandro - - PowerPoint PPT Presentation
Zero Knowledge Succinct Arguments: an Introduction Alessandro Chiesa UC Berkeley 1 Motivation 2 3 cryptography is a powerful tool for building secure systems 3 cryptography is a powerful tool for building secure systems much of the
Alessandro Chiesa UC Berkeley
1
2
3
3
3
3
Alice Bob
m
3
Alice Bob
Enc(m)
3
Alice Bob
Alice Bob m Enc(m)
3
Alice Bob
Alice Bob m Enc(m) Sig(m)
3
Alice Bob
Alice Bob
m Enc(m) Sig(m)
3
Alice Bob
Alice Bob
m Enc(m) Sig(m)
3
Alice Bob
Alice Bob
m Enc(m) Sig(m)
4
4
a powerful defense against malicious behavior especially in distributed protocols
4
1980s a powerful defense against malicious behavior securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
4
1980s a powerful defense against malicious behavior
passive security
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
4
1980s a powerful defense against malicious behavior
passive security
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
Key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
I know x s.t. y=F(x)
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
I know x s.t. y=F(x) proof
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
I know x s.t. y=F(x) proof
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties Additional key properties
4
1980s 2010s a powerful defense against malicious behavior
passive security
I know x s.t. y=F(x) proof
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties Additional key properties zk-SNARK
4
1980s 2010s a powerful defense against malicious behavior
passive security
I know x s.t. y=F(x) proof
securely compute y=F(x1,…,xn) via a multi-party protocol especially in distributed protocols
active security
[GMW87]
blockchain technology
Key properties Additional key properties zk-SNARK
5
6
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
[GMR85]
6
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’, Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x)
simulator
[GMR85]
[GMR85]
7
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]
7
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]: ZKPs for certain number-theoretic problems (QR,QNR)
[GMR85]
7
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
If one-way functions exist: [GMR85]: ZKPs for certain number-theoretic problems (QR,QNR)
[GMR85]
7
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMW86]: ZKPs for all poly-time computable functions F If one-way functions exist: [GMR85]: ZKPs for certain number-theoretic problems (QR,QNR)
[GMR85]
7
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMW86]: ZKPs for all poly-time computable functions F If one-way functions exist: [BGGHKMR88]: ZKPs for all poly-space computable functions F [GMR85]: ZKPs for certain number-theoretic problems (QR,QNR)
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
communication complexity & verification complexity are proportional to time(F)
[GMR85]
8
“I know x s.t. y=F(x)”
F function y claimed output x private input F function y claimed output
rover erifier
communication complexity & verification complexity are proportional to time(F) for typical F size(F) ≪ time(F)
9
[Kilian92][Micali94]
9
“I know x s.t. y=F(x)”
[Kilian92][Micali94]
9
“I know x s.t. y=F(x)” completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’ Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x) succinctness
V(F,y) runs in time proportional to |F|+|y| (not time(F)+|y|)
[Kilian92][Micali94]
9
“I know x s.t. y=F(x)” completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’ Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x) succinctness
V(F,y) runs in time proportional to |F|+|y| (not time(F)+|y|)
[Kilian92][Micali94]
9
“I know x s.t. y=F(x)” completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’ Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x) succinctness
V(F,y) runs in time proportional to |F|+|y| (not time(F)+|y|)
[Kilian92][Micali94]
9
“I know x s.t. y=F(x)” completeness
∃ x: y=F(x) → Pr[P(F,y,x) convinces V(F,y)]=1
soundness
∄ x: y=F(x) → ∀ P’ Pr[P’ convinces V(F,y)]≃0
zero knowledge ∃ x: y=F(x) → ∀ V’, S(V',F,y) ≃ view of V' with P(F,y,x) succinctness
V(F,y) runs in time proportional to |F|+|y| (not time(F)+|y|)
[Kilian92][Micali94]
10
10
Zero Knowledge Succinct Proof
10
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
[Kilian92]
Zero Knowledge Succinct Proof
COM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q
[Kilian92]
Zero Knowledge Succinct Proof
COM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
10
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
COM
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
COM
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
Q
COM
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
Q
COM DECOM
Random Oracle
(SHA-256)
(the first)
11
Probabilistically Checkable Proof
Q D
[BFLS91][FGLSS96][AS92][ALMSS92]
Q D
[Kilian92]
Zero Knowledge Succinct Proof
COM DECOM
[Micali94]
Zero Knowledge SNARK
Q D
COM DECOM
Random Oracle
(SHA-256)
(the first)
12
13
13
Negative result: constructing them "requires strong assumptions" [GW11]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] based on PCPs [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions Linear-Only Encryption/Encoding [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] based on PCPs [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions Linear-Only Encryption/Encoding [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] [G 10] [L 12] [BCIOP 13] [GGPR 13] [PGHR 13] [BCGTV 13] [BCTV 14a] [DFGK 14] [WSRBW 15] [BBFR 15] [BCTV 14b] [CTV 15] [CFHKKNPZ 15] [BISW 17] ⁞ based on PCPs [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions Linear-Only Encryption/Encoding Generic Group Model [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] [G 10] [L 12] [BCIOP 13] [GGPR 13] [PGHR 13] [BCGTV 13] [BCTV 14a] [DFGK 14] [G 16] [WSRBW 15] [BBFR 15] [BCTV 14b] [CTV 15] [CFHKKNPZ 15] [BISW 17] ⁞ based on PCPs [D 92]
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions Linear-Only Encryption/Encoding Generic Group Model [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] [G 10] [L 12] [BCIOP 13] [GGPR 13] [PGHR 13] [BCGTV 13] [BCTV 14a] [DFGK 14] [G 16] [WSRBW 15] [BBFR 15] [BCTV 14b] [CTV 15] [CFHKKNPZ 15] [BISW 17] ⁞ based on PCPs based on linear PCPs [D 92]
strike a different tradeoff…
13
Negative result: constructing them "requires strong assumptions" [GW11] Positive results (under strong assumptions):
Knowledge of Exponent Extractable Hash Functions Linear-Only Encryption/Encoding Generic Group Model [BCCT 12] [DFH 12] [GLR 12] [BC 12] [BCCT 13] [BCCGLRT 16] [G 10] [L 12] [BCIOP 13] [GGPR 13] [PGHR 13] [BCGTV 13] [BCTV 14a] [DFGK 14] [G 16] [WSRBW 15] [BBFR 15] [BCTV 14b] [CTV 15] [CFHKKNPZ 15] [BISW 17] ⁞ based on PCPs based on linear PCPs [D 92]
14
14
Linear PCP
[IKO07][BCIOP13]
Q D
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Q D
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
pk vk
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc Hom Eval
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc Enc Hom Eval
h~ ↵, ·i
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc Enc Hom Eval
h~ ↵, ·i
D
14
Linear PCP
[IKO07][BCIOP13]
[BCIOP13]
Zero Knowledge SNARK
Q D
h~ ↵, ·i
pk vk
linear-only encodings
Q
pk vk
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
15
15
+
⨉
+
⨉
arithmetic circuit
C
15
Setup
+
⨉
+
⨉
arithmetic circuit
C
15
Q Setup
+
⨉
+
⨉
arithmetic circuit
C
15
Q
pkC vkC
Enc Enc
Setup
+
⨉
+
⨉
arithmetic circuit proving key verification key
C
15
Q
pkC vkC
Enc Enc
Setup
+
⨉
+
⨉
arithmetic circuit
Prover
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
15
Q
pkC vkC
Enc Enc
h~ ↵, ·i
Setup
+
⨉
+
⨉
arithmetic circuit
Prover
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
Setup
+
⨉
+
⨉
arithmetic circuit
Prover
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
libsnark's implementation
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0
3 group elts (128 bytes) libsnark's implementation
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0 3 pairings (3 ms)
3 group elts (128 bytes) libsnark's implementation
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0 3 pairings (3 ms)
3 group elts (128 bytes) 0.1ms / gate 1KB / gate libsnark's implementation
15
Q
pkC vkC
Enc Enc Hom Eval
h~ ↵, ·i
ZeroTest D
Setup
+
⨉
+
⨉
arithmetic circuit
Prover Verifier
proving key verification key
C
input x witness w Given public C,x ∃ secret w s.t. C(x,w)=0 3 pairings (3 ms)
3 group elts (128 bytes) 0.1ms / gate 1KB / gate
FFT MULTIEXP
libsnark's implementation
16
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
FFT MEXP FFT
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
3 pairings (3ms)
3 group elts (128 bytes)
FFT MEXP FFT
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
trapdoor no trapdoor
3 pairings (3ms)
3 group elts (128 bytes)
FFT MEXP FFT
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
no trapdoor
3 pairings (3ms)
3 group elts (128 bytes)
[BCGTV15]
FFT MEXP FFT
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
no trapdoor
3 pairings (3ms)
3 group elts (128 bytes)
[BCGTV15]
ceremony
FFT MEXP FFT
16
Linear PCP
Q
D
h~ ↵, ·i
V Setup
pk vk
PCP
V
RO
no trapdoor
3 pairings (3ms)
3 group elts (128 bytes)
[BCGTV15]
ceremony
FFT MEXP FFT
deployed today
17
18
18
x
18
Hash
h
x
18
Setup C
pkC vkC
Hash
h
x
18
Setup C
pkC vkC
Hash
h
x
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h
18
V Setup C
pkC vkC
Hash
h
x
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h
18
V Setup C D Setup
pkC vkC pkD vkD
Hash
h
x
V
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h Given public D,h ∃ secret x,w s.t. D(x,w)=0 & Hash(x)=h
18
V Setup C D Setup
pkC vkC pkD vkD
Hash
h
x
V
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h Given public D,h ∃ secret x,w s.t. D(x,w)=0 & Hash(x)=h
18
V Setup C D Setup
pkC vkC pkD vkD
Hash
h
x
V
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h Given public D,h ∃ secret x,w s.t. D(x,w)=0 & Hash(x)=h
18
V Setup C D Setup
pkC vkC pkD vkD
Hash
h
x
V
Given public C,h ∃ secret x,w s.t. C(x,w)=0 & Hash(x)=h Given public D,h ∃ secret x,w s.t. D(x,w)=0 & Hash(x)=h
19
19
PCP
V
RO
19
PCP
V
RO
Looks solid.
19
Linear PCP
Q
D
h~ ↵, ·i
PCP
V
RO
V Setup
pk vk
Looks solid.
19
Linear PCP
Q
D
h~ ↵, ·i
PCP
V
RO
V Setup
pk vk
Looks solid.
Based on hardness of DLOG in EC groups.
19
Linear PCP
Q
D
h~ ↵, ·i
PCP
V
RO
V Setup
pk vk
Looks solid.
[BISW EUROCRYPT '17] Based on hardness of DLOG in EC groups.
V Setup
pk vk
19
Linear PCP
Q
D
h~ ↵, ·i
PCP
V
RO
V Setup
pk vk
Looks solid.
[BISW EUROCRYPT '17] Based on hardness of DLOG in EC groups. Lattice-based privately-verifiable ZK-SNARK
V Setup
pk vk
19
Linear PCP
Q
D
h~ ↵, ·i
PCP
V
RO
V Setup
pk vk
Looks solid.
[BISW EUROCRYPT '17] Based on hardness of DLOG in EC groups. Lattice-based privately-verifiable ZK-SNARK
OPEN: public?
V Setup
pk vk
20
20
PCP
ZK-SNARK
V
RO
20
PCP
ZK-SNARK
V
RO
20
PCP
ZK-SNARK
V
RO
20
PCP
ZK-SNARK
V
RO
20
PCP
ZK-SNARK
V
RO
20
PCP
ZK-SNARK
V
RO
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
21
[BCS16][RRR16]
22
22
Probabilistically Checkable Proof
V
RO [ M i c a l i 9 4 ]
Zero Knowledge SNARK
22
Probabilistically Checkable Proof
V
RO
Interactive Oracle Proof
[ M i c a l i 9 4 ] [ B C S 1 6 ]
Zero Knowledge SNARK
22
Probabilistically Checkable Proof
V
RO
Interactive Oracle Proof
[ M i c a l i 9 4 ] [ B C S 1 6 ]
Q: any efficiency gains?
Zero Knowledge SNARK
23
23
23
best proof length without ZK
23
best proof length without ZK quasilinear
[BS08][Din07]
23
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
23
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK
23
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK polynomial
[KPT97]
23
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK polynomial
[KPT97]
quasilinear
[BCGV16]
23
cheaper ZK… [BCFGRS16][BCFS17]
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK polynomial
[KPT97]
quasilinear
[BCGV16]
23
cheaper ZK… [BCFGRS16][BCFS17]
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK polynomial
[KPT97]
quasilinear
[BCGV16]
Encouraging progress, and it already improved working prototypes.
23
cheaper ZK… [BCFGRS16][BCFS17]
best proof length without ZK quasilinear
[BS08][Din07]
linear
[BCGRS16]
best proof length with ZK polynomial
[KPT97]
quasilinear
[BCGV16]
Encouraging progress, and it already improved working prototypes. Still more research is needed for practical deployment.
24
24
24
Mathematics
low-degree testing additive combinatorics Fourier analysis algebraic geometry coding theory
24
Mathematics Complexity Theory
low-degree testing additive combinatorics Fourier analysis algebraic geometry coding theory interactive proofs probabilistically checkable proofs zero knowledge
24
Mathematics Complexity Theory Cryptography
low-degree testing additive combinatorics Fourier analysis algebraic geometry coding theory interactive proofs probabilistically checkable proofs zero knowledge function commitments linear-only encryption privacy-preserving payments
24
Mathematics Complexity Theory Cryptography Security
low-degree testing additive combinatorics Fourier analysis algebraic geometry coding theory interactive proofs probabilistically checkable proofs zero knowledge function commitments linear-only encryption cryptocurrencies privacy-preserving payments
25
I know x s.t. y=F(x) proof
26
27
Q D
h~ ↵, ·i
Def: The language L consists of tuples (p1,…,pm) where each pi is a quadratic polynomial
assignment w=(w1,…,wn) such that p1(w) = … = pm(w) =0.
Theorem: The language L has a linear PCP with
If p1(!) = · · · = pm(!) = 0 then Pm
i=1 ripi(!) = 0 with probability 1.
If 9j 2 [m] s.t. pj(!) 6= 0 then Pm
i=1 ripi(!) = 0 with probability 1/|F|.
If p1(!) = · · · = pm(!) = 0 then Pm
i=1 ripi(!) = 0 with probability 1.
If 9j 2 [m] s.t. pj(!) 6= 0 then Pm
i=1 ripi(!) = 0 with probability 1/|F|.
P 9 2 6 P |
the linear function: ~ ↵ := B B B B B @ 1 !1 !2 . . . !n !1 !2
1
!1!2 . . . !1!n !2 !2!1 !2
2
. . . !2!n . . . . . . . . . ... . . . !n !n!1 !n!2 . . . !2
n
1 C C C C C A .
~ ↵ = ↵0,0 ↵0,1 ↵0,2 . . . ↵0,n ↵1,0 ↵1,1 ↵1,2 . . . ↵1,n ↵2,0 ↵2,1 ↵2,2 . . . ↵2,n . . . . . . . . . ... . . . ↵n,0 ↵n,1 ↵n,2 . . . ↵n,n . and thinks of each quadratic polynomial pi as pi = pi,0,0 pi,0,1 pi,0,2 . . . pi,0,n pi,1,1 pi,1,2 . . . pi,1,n pi,2,2 . . . pi,2,n . . . . . . . . . ... . . . . . . pi,n,n .
If p1(!) = · · · = pm(!) = 0 then Pm
i=1 ripi(!) = 0 with probability 1.
If 9j 2 [m] s.t. pj(!) 6= 0 then Pm
i=1 ripi(!) = 0 with probability 1/|F|.
P 9 2 6 P |
the linear function: ~ ↵ := B B B B B @ 1 !1 !2 . . . !n !1 !2
1
!1!2 . . . !1!n !2 !2!1 !2
2
. . . !2!n . . . . . . . . . ... . . . !n !n!1 !n!2 . . . !2
n
1 C C C C C A .
~ ↵ = ↵0,0 ↵0,1 ↵0,2 . . . ↵0,n ↵1,0 ↵1,1 ↵1,2 . . . ↵1,n ↵2,0 ↵2,1 ↵2,2 . . . ↵2,n . . . . . . . . . ... . . . ↵n,0 ↵n,1 ↵n,2 . . . ↵n,n . and thinks of each quadratic polynomial pi as pi = pi,0,0 pi,0,1 pi,0,2 . . . pi,0,n pi,1,1 pi,1,2 . . . pi,1,n pi,2,2 . . . pi,2,n . . . . . . . . . ... . . . . . . pi,n,n .
Verifier (cont’d). The verifier samples r1, . . . , rm 2 F and s0, . . . , sn 2 F at random and then generates three queries: ~ q1 := Pm
i=1 ripi;
~ q2 := (s0, s1, . . . , sn) ⌦ (1, 0, . . . , 0); ~ q3 := (s0, s1, . . . , sn) ⌦ (s0, s1, . . . , sn). Upon receiving answers a1 := h~ ↵, ~ q1i, a2 := h~ ↵, ~ q2i, a3 := h~ ↵, ~ q3i, check that a1 = 0 and a2
2 = a3 .
If p1(!) = · · · = pm(!) = 0 then Pm
i=1 ripi(!) = 0 with probability 1.
If 9j 2 [m] s.t. pj(!) 6= 0 then Pm
i=1 ripi(!) = 0 with probability 1/|F|.
P 9 2 6 P |
the linear function: ~ ↵ := B B B B B @ 1 !1 !2 . . . !n !1 !2
1
!1!2 . . . !1!n !2 !2!1 !2
2
. . . !2!n . . . . . . . . . ... . . . !n !n!1 !n!2 . . . !2
n
1 C C C C C A .
~ ↵ = ↵0,0 ↵0,1 ↵0,2 . . . ↵0,n ↵1,0 ↵1,1 ↵1,2 . . . ↵1,n ↵2,0 ↵2,1 ↵2,2 . . . ↵2,n . . . . . . . . . ... . . . ↵n,0 ↵n,1 ↵n,2 . . . ↵n,n . and thinks of each quadratic polynomial pi as pi = pi,0,0 pi,0,1 pi,0,2 . . . pi,0,n pi,1,1 pi,1,2 . . . pi,1,n pi,2,2 . . . pi,2,n . . . . . . . . . ... . . . . . . pi,n,n .
Verifier (cont’d). The verifier samples r1, . . . , rm 2 F and s0, . . . , sn 2 F at random and then generates three queries: ~ q1 := Pm
i=1 ripi;
~ q2 := (s0, s1, . . . , sn) ⌦ (1, 0, . . . , 0); ~ q3 := (s0, s1, . . . , sn) ⌦ (s0, s1, . . . , sn). Upon receiving answers a1 := h~ ↵, ~ q1i, a2 := h~ ↵, ~ q2i, a3 := h~ ↵, ~ q3i, check that a1 = 0 and a2
2 = a3 .
If p1(!) = · · · = pm(!) = 0 then Pm
i=1 ripi(!) = 0 with probability 1.
If 9j 2 [m] s.t. pj(!) 6= 0 then Pm
i=1 ripi(!) = 0 with probability 1/|F|.
P 9 2 6 P |
the linear function: ~ ↵ := B B B B B @ 1 !1 !2 . . . !n !1 !2
1
!1!2 . . . !1!n !2 !2!1 !2
2
. . . !2!n . . . . . . . . . ... . . . !n !n!1 !n!2 . . . !2
n
1 C C C C C A .
29