Slides

advertisement
Privacy-Preserving
Authentication: A Tutorial
Anna Lysyanskaya
Brown University
What is Authentication?
Today’s news?
Who are you? Do you have a
subscription?
It’s Bond. James Bond. Here’s
my subscription.
projo.com
What is Authentication?
Today’s news?
Who are you? Do you have a
subscription?
Identification
It’s Bond. James Bond. Here’s
my subscription.
Digital
signature
projo.com
Signature Schemes
Signature Schemes
• Setup: I run a setup algorithm to obtain my public
key PK and secret key SK
PK
SK
PK
Signature Schemes
• Setup: I run a setup algorithm to obtain my public
key PK and secret key SK
• Now I can sign (using SK):
– Sign(SK,m)  σ
(denoted σPK(m) )
• And you can verify it
(using PK)
– Verify(PK,m,σ)  Yes/No
PK
Signature Schemes
• Security: no adversary can forge a
signature even after seeing sigs on
messages of his choice
m
m21
m,σPK(m)
...
σPK(m1)
σPK
(m )
... 2
Secure if this is unlikely
PK
History of Signature Schemes
• 1970s: invention of PK crypto, DH, RSA, Lamport, Merkle
• Definition & first provably secure construction: GMR84
• Random-oracle-based constructions: Fiat-Shamir, Schnorr, GQ,
Bellare-Rogaway, ...
• Lattice-based [GGH97], NTRU
• Minimal assumptions: Naor-Yung, Rompel (OWF)
• Stateless and provably secure
– under SRSA: Gennaro-Halevi-Rabin’99, Cramer-Shoup’99
– under BDH: Boneh-Boyen [Eurocrypt 2004]
• Other flavors: group sigs, blind sigs [Chaum]
• This talk: signatures that allow you to prove that you have a
signed document, efficiently, without revealing (too much) about
the contents of the document [...,L02,CL04,CL05,...,BL12].
Using Signature Schemes
I am James Bond. Please
give me a cert that I have
a ProJo subscription.
σ=σProJo(James Bond)
Today’s news?

Digital
signature
Let me check
that you have
a valid subscription. Who are you?
Identification
James Bond. My σ.
projo.com
PKProJo
Certification
authority (CA)
projo.com
Using Signature Schemes
I am James Bond. Please
give me a cert that I have
a ProJo subscription.
PKJB
σ=σProJo(James Bond)
Today’s news?
PKJB

Identification

Digital
signature
Let me check
that you have
a valid subscription. Who are you?
PKJB. My σ.
projo.com
PKProJo
Certification
authority (CA)
projo.com
That’s how authentication
with identification is done.
Why do you want to do it
without?
How do you do it without?
Anonymous Access
Today’s news?
Who are you? Do you have a
subscription?
I can tell you, but then I’ll
It’s Bond. James Bond.
have to kill you...
projo.com
Anonymous Access
Today’s news?
Show me your subscription.
Subscription #76590
projo.com
Anonymous Access
Today’s news?
Prove that you are authorized.
Here is a zero-knowledge proof
projo.com
Zero-Knowledge Proof [GMR]
Let L be a language.
A zero-knowledge (ZK) proof system for L is a
protocol between a prover P (can be computationally
unbounded) and a verifier V (poly-time TM) such that:
(Completeness) For an x in L, P convinces V
(Soundness 1-ε) For any x not in L, no malicious P’ can
cause V to accept with more than ε probability
(Zero-knowledge - informal) Everything V learns as a
result of talking to P, he can learn without talking to P.
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Example: The Set of 3-Colorable
Graphs
1. Each vertex
colored red, green
or blue
2. No
monochromatic
edges
Is every graph 3-colorable?
Is every graph 3-colorable?
Is every graph 3-colorable?
Is every graph 3-colorable?
No...
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
You are just
trying to trick me!
This graph is not
3-colorable!
ZK Proof of 3-Colorability
You are just
trying to trick me!
This graph is not
3-colorable!
ZK Proof of 3-Colorability
You are just
trying to trick me!
This graph is not
3-colorable!
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
If you’re
cheating, I have
1 in 11 chance
to catch you.
ZK Proof of 3-Colorability
I want better
odds!
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
ZK Proof of 3-Colorability
If we repeat
100 times and you
are lying, I’ll
surely catch you!
[GMW86]
Zero-Knowledge: A Crash Course
Theorem [GMW87]: every L in NP has a
zero-knowledge proof system.
Proof. Reduce the language at hand to graph
3-colorability (recall that 3-col is NP-complete). Use:
Lemma: 3-colorability has a zero-knowledge proof
system.
Zero-Knowledge: A Crash Course
Theorem [GMW]: every language in NP has a
zero-knowledge proof system.
Theorem [FLS]: every language in NP has a
non-interactive ZK proof system (NIZK).
ZK POK: a ZK proof of knowledge, ie V accepts
if the prover knows a value that satisfies an NP relation,
e.g. a valid 3-coloring of a graph.
Accessing a Resource
I need access to SIAM
J on Computing, 17:2
PKJS
User
Prove to me that you have
a valid subscription!
Sure! Here’s a zero-knowledge
proof: ...
Online library
Using Credentials Anonymously
I am PKJS. Please
give me a cert that I go to
High School.
PKJS
PKJS
σCA=σCA(PKJS, High School)
PKCA
Certification
authority (CA)
I need access to SIAM
to me that
you have a
JProve
on Computing,
17:2
Zero-knowledge
that
validproof
subscription!
I know SK, PK and σ such that:
(1) PK corresponds to SK
(2) Verify(PKCA,(PK. High School),σ).
Online library
Using Credentials Anonymously
I am PKJS. Please
give me a cert that I go to
Moses Brown School.
PKJS
We already know that we can do it!
Just reduce the problem at hand
PKCA
σ
=σ
(PK
,
Moses
Brown)
JS
CA and
CA run
to graph 3-col,
a ZK
Certification
proof!
authority (CA)
Would be nice to do that more
I need access to SIAM
efficiently.
PKJS
to me that
you have a
JProve
on Computing,
17:2
Zero-knowledge
that
validproof
subscription!
I know SK, PK and σ such that:
(1) PK corresponds to SK
(2) Verify(PKCA,(PK. High School),σ).
Online library
Obtaining Credentials Anonymously
PKJS
PKJS
I am PKJS. Please
I
need
to SIAM
give me aaccess
cert that
I go to
Prove
to
me
that
you have a
J
on
Computing,
17:2
Moses Brown School.
Zero-knowledge
that
validproof
subscription!
I know SK, PK and σ such that:
(1) PK corresponds to SK
σCA=σ
(PKJS, Moses Brown)
CASchool),
(2) Verify(PKCA,(PK.
High
σ).
You are such a good customer,
I want to also give you a credential!
PKCA
Certification
authority (CA)
Online library
Anonymous credential = signature issued to a hidden
value PK/SK: the library never sees the value it is signing
Secure 2PC: A Crash Course
Theorem [Yao]: every function f(x,y) can be computed
via a protocol between Alice holding input x, and Bob
holding input y such that (informally):
(1) Alice receives output f(x,y) (even if Bob deviates
from the protocol, she receives f(x,y) for some welldefined y known to Bob in advance)
(2) Even if Alice maliciously deviates, she cannot learn
more than f(x,y) for some well-defined x known to her
in advance
(3) Even if Bob maliciously deviates, he cannot learn
anything about x.
Secure 2PC: A Crash Course
x
y
2PC
Alice
f(x,y)
Bob
Obtaining Credentials Anonymously
PKJS
PKJS
I am PKJS. Please
I
need
to SIAM
give me aaccess
cert that
I go to
Prove
to
me
that
you have a
J
on
Computing,
17:2
Moses Brown School.
Zero-knowledge
that
validproof
subscription!
I know SK, PK and σ such that:
(1) PK corresponds to SK
σCA=σ
(PKJS, Moses Brown)
CASchool),
(2) Verify(PKCA,(PK.
High
σ).
You are such a good customer,
I want to also give you a credential!
PKCA
Certification
authority (CA)
Online library
Anonymous credential = signature issued to a hidden
value PK/SK: the library never sees the value it is signing
Signature Schemes with
Efficient Protocols
•
WE WANT a signature scheme
that is
– efficient, provably secure
– has an efficient ZK proof of
knowledge of a sig.
– has a secure two-party protocol
for signing a hidden value
•
WHY: applications for
authentication without
identification, as well as group
signatures, blind signatures, fair
exchange of digital signatures, ...
Roadmap for This Talk
• Building blocks 
• Main idea of off-line ecash [CFN89 + CL02]
• Main idea of compact ecash [CHL05]
• Extensions [CHL06,CHKLM06]
• Technical details: how to instantiate generalized
ecash [CL02,...BL12]
• Extending to more complicated anonymous
credentials
Warning: there might be a pop quiz...
Anonymity + Accountability: Use Money!
BANK
TWO
Rivest
DOLLARS
TWO
TWO
Rivest
Alice
DOLLARS
Rivest
Spend $$$
Merchant
DOLLAR
The Money Cycle
BANK
Spend $$$
Alice
Merchant
• Three protocols: Withdraw, Spend, Deposit
• Desirable properties:
- can’t forge/copy money
- can’t trace how cash was spent
Electronic Version
BANK
Spend $$$
Alice
?
Merchant
• Three protocols: Withdraw, Spend, Deposit
• Desirable properties:
- can’t forge/copy money
- can’t trace how cash was spent
Electronic Version
BANK
Spend $$$
Alice
• Preventing copying/forgery:
Merchant
- money is represented by data, data can be copied
- not an issue if do electronic checks
- but electronic checks provide no privacy
• Online e-cash [Chaum]:
- Bank maintains records of past transactions
- Withdraw and Spend are unlinkable
- during Deposit, test if the coin is unspent
Off-Line Ecash [CFN89]
BANK
Spend $$$
Alice
Merchant
• Algs: Setup, Withdraw, Spend, Deposit,
Identify
- Setup sets up everyone’s keys (separately)
- Identify: if Alice spends more than she withdrew,
her identity is discovered once the Merchant
deposits the money (Merchant need not do this
right away).
• Privacy: colluding B&M can’t trace how a coin is spent.
History
• Chaum’82: invented blind signatures,
makes on-line ecash possible
• [CFN,Brands]: off-line e-cash
Main Idea of Off-Line Ecash
• Recall: digital signatures, secure 2-party computation, ZK proofs of
knowledge
Main Idea of Off-Line Ecash
• Recall: digital signatures, secure 2-party computation, ZK proofs of
knowledge
• SETUP: Signature key pair for Bank (pk,sk).
Assume a PKI for all the users.
Large prime Q.
PKI, Q, pk
• WITHDRAW:
Alice’s SK x
• SPEND:
Random A,B < Q
 =pk(x,A,B)
2PC
sk
BANK
0 < “new” R < Q
e.g. R=H(contract, rand)
A (the coin’s serial number)
T =x+RB mod Q (double-spending equation)
NIZKPOK of (x,B,) such that
1. T = x+RB
2. VerifySig(pk,(x,A,B), ) = TRUE
Deposit: submit
(A,R,T,proof)
to the Bank
Main Idea of Off-Line Ecash
• Recall: digital signatures, secure 2-party computation, ZK proofs of
Suppose a coin is spent twice.
knowledge
Same coin => same A
• SETUP: Signature key pair for Bank (pk,sk).
Privacy
for
Alice:
Spent
twice:
R’s,
Assume
a PKI
for alltwo
the
users.
with
prob,
R ≠ R’
A,T:
random,
Large prime
Q.high
T = x+RB
mod Q,
= x+R’Bmod Q
proofs
is T’ZK!
• WITHDRAW:
solve for
Alice’s
SKx,xid and punish Alice
• SPEND:
Random A,B < Q
 =pk(x,A,B)
2PC
sk
BANK
0 < “new” R < Q
e.g. R=H(contract, rand)
A (the coin’s serial number)
T =x+RB mod Q (double-spending equation)
NIZKPOK of (x,B,) such that
1. T = x+RB
2. VerifySig(pk,(x,A,B), ) = TRUE
Deposit: submit
(A,R,T,proof)
to the Bank
Compact Ecash
BANK
Spend $$$
Alice
Merchants
• Algs: Setup, Withdraw, Spend, Deposit, Identify
• Withdraw: a wallet with N coins
• Spend, deposit: just one coin
• Want: complexity of protocols O(log N), not O(N)
Compact Ecash: Main Idea [CHL05]
•
WITHDRAW $N:
Suppose spent >N coins PKI, Q, pk
=> repeating
Alice’s
SK xA = Fs(i) for some i
A spent twice:
twofor
random
sk
Privacy
Alice: R’s,
2PC
Random s,t
withAhigh
R ≠ R’
and Tprob,
are pseudorandom,
BANK
 =pk(x,s,t)
Proofs
ZK t(i)
T = x+RFt(i),
T’ =are
x+R’F
and punish Alice
• SPEND $1 for the ithsolve
time:for
Letx,
F(id
)( ) be a pseudorandom function family
new R < Q
A = Fs(i) (the coin’s serial number)
T = x+RFt(i) mod Q (double-spending equation)
NIZKPOK of (i,x,s,t,) such that
1. 1 ≤ i ≤ N
2. A = Fs(i)
3. T = x+RFt(i)
4. VerifySig(pk,(x,s,t), ) = TRUE
•
TBA: how to instantiate using practical building blocks.
Deposit: submit
(A,R,T,proof)
to the Bank
ATTENTION:
POP QUIZ COMING UP!!!!
Generalized Ecash
•
WITHDRAW:
Alice’s SK x
Random
Random
s1,...,s
s,t L
 ==
pk(x,s
pk(x,s,t)
1,...,sL)
•
2PC
sk
BANK
newRR1,...,R
< QM
new
SPEND:
PRF evaluations A1=Fsj(i1),...,A15=Fsz(i15)
Any
linear
combinations
A = Fset
(i) of
(the
coin’s
serial number)
s
Q
T =Tx+RF
(i)Rmod
Qj) (mod
double-spending
equation)
1 = x+t∑
k Fsj(i
...
Deposit: submit
’
NIZKPOK
ofR(i,x,s,t,)
such that
({Ai},{Ri},{Ti},proof)
T10 = x+∑
k’ Fsj’(ij ) mod Q
1. 1 ≤ i ≤ N
to the Bank
2. A = Fof
s(i)(i,x,s ,...,s ,i ,...,i , ... ,) s.t.
NIZKPOK
1
L 1
15
3.
T
=
x+RF
(i)
t
1. A1,...,A15,T1,...,T10 computed correctly
4.
TRUE
2. VerifySig(pk,(x,s,t),
VerifySig(pk,(x,s ,...,s)),=)
= TRUE
1
L
POP QUIZ:
Each user is allowed to spend
only up to 100 coins with the
Cheshire Cat. How to
instantiate Generalized Ecash
to guarantee this?
Hint: use multiple serial numbers
Preventing Money Laundering [CHL06]
•
•
WITHDRAW $N:
Suppose spend >N coins
Alice’s
SK x
=> repeating
A1, catch Alice!
sk
Suppose spend
>100
with
CheshCat
2PC
s1,t1,s2,t2
Privacy
for Alice
=> repeating
A21,t=1,s
F2s2,t(CheshCat,j)
 =pk(x,s
2)
catch Alice.
BANK
SPEND the ith coin; this is the jth time with this Merchant
new R < Q
A1 = Fs1(i), A2 = Fs2(CheshCat,j)
T1 = x+RFt1(i), T2 = x+RFt2(CheshCat,j)
Deposit: submit
NIZKPOK of (i,x,s1,t1,j,s2,t2,) such that
(A1,A2,R,T1,T2,proof)
1. 1 ≤ i ≤ N, 1 ≤ j ≤ 100
to the Bank
2. A1 = Fs(i), A2 = Fs2(CheshCat,j)
3. T1 = x+RFt(i), T2 = x+RFt2(CheshCat,j)
4. VerifySig(pk,(x,s1,t1,s2,t2), ) = TRUE
•
Cannot be done with physical cash! Was an open problem too, for a while.
POP QUIZ 2:
A user is allowed to spend up to
100 coins (tokens) per day.
Each morning, her wallet is
reset. How to do this?
Hint: use a PRF with two inputs, Fs(i,j)
Compact E-Tokens [CHKLM06]
•
WITHDRAW:
Alice’s
SK x
Suppose
spend
>100 coins on day j
=> repeating
A=Fs(i,j)
for2PC
some i
Privacy
for
Random
s,t Alice:
same
as
in(x,s,t)
compact ecash
=> catch
Alice!

=pk
•
sk
BANK
SPEND the ith token on Day j
new R < Q
A = Fs(i,j)
T = x+RFt(i,j)
NIZKPOK of (i,x,s,t,) such that
1. 1 ≤ i ≤ 100
2. A = Fs(i,j)
3. T = x+RFt(i,j)
4. VerifySig(pk,(x,s,t), ) = TRUE
•
Deposit: submit
(A,R,T,proof)
to the Bank
A simple solution to the uncloneable group identification problem [DDP06]
POP QUIZ 3:
If you double-spend < 4 e-tokens,
these e-tokens are linked, but your
identity cannot be traced. If you
double-spend 4 times, you are
identified and your SK is computed.
Hint: use multiple R1, ..., RL
Glitch Protection [CHKLM06]
•
•
WITHDRAW:
Suppose spend N+4 coins
=> repeating A=Fs(i) for some i
(possibly for i1, i2, i3, i4)
=> L pops out of repeating A
using T, T’, R, R’
Alice’s
SKtogether!
x
=> link them
=> Fu(i)s,t,u,v,L,z
pops out of
repeating A
1,z2,z3
Y, Y’, R, R’
 using
=pk(x,s,t,u,v,L,z
1,z2,z3)
=> each overspending gives
x + r1z1 + r2z2 + r3z3 = Z-Fu(i)
th
SPEND $1 for the i time:
2PC
R, r1, r2, r3
A = Fs(i)
T = L+RFt(i)
Y = Fu(i)+RFv(i)
Z = x + r1z1 + r2z2 + r3z3 + Fu(i)
NIZKPOK of (i,x,s,t,u,v,L,z1,z2,z3,) such that
1. 1 ≤ i ≤ N
2. A = Fs(i), T = L+RFt(i), Y = Fu(i)+RFv(i)
3. Z = x + r1z1 + r2z2 + r3z3 + Fu(i)
4. VerifySig(pk,(x,s,t,u,v,L,z1,z2,z3), )
sk
BANK
Roadmap for This Talk
• Building blocks 
• Main idea of off-line ecash [CFN89 + CL02]
• Main idea of compact ecash [CHL05]
• Extensions [CHL06,CHKLM06]



• Technical details: how to instantiate generalized
ecash
Compact Ecash with CL Sigs
•
Pedersen and Fujisaki-Okamoto commitments:
•
CL sigs [CL01,L02,CL02,CL04,...,CL50]:
– If G is a group with generators g1,g2, …, gn, h commit to x1,x2,…xn:
C = g1x1g2x2…gnxnhr for random r < |G|
– [Brands99,Camenisch98]: ZKPOKs of committed values w algebraic and Boolean props
– Efficient, provably secure sig (Strong RSA [CL02], LRSW or SDHI [CL04])
– Efficient protocol for getting a sig on a set of Ped- & FO-committed values (x1,x2,...,xn)
– Efficient protocol for proving knowledge of a sig on a set of committed values
•
WITHDRAW:
Alice’s SK x
seeds s,t
 =pk(x,s,t)
•
SPEND:
new R <
A = Fs(i), T = x+RFt(i) mod Q
Ci,Cx,Cs,Ct : commitments to i,x,s,t
ZKPOK of (i,x,s,t,) such that
0. They correspond to Ci,Cx,Cs,Ct
1. 1 ≤ i ≤ N
Standard techniques
2. A = Fs(i) [DY05]: Fs(i) = g1/(s+i+1)
3. T = x+RFt(i)
??????
4. VerifySig(pk,(x,s,t), ) = TRUE
CL
2PC
Q
CL
sk
BANK
Compact Ecash with CL Sigs
Suppose i’th coin is spent twice.
Same coin => same A
Spent twice: two random R’s,
with high prob, R1 ≠ R2
T1 = gx(Ft(i))R1, T2 = gx(Ft(i))R2
solve for Ft(i) = (T1/T2)1/(R1-R2)
solve for gx = T1/(Ft(i)R1)
•
•
WITHDRAW:
SPEND:
Alice’s SK x
seeds s,t
 =pk(x,s,t)
A = Fs(i), T = gx(Ft(i))R
Ci,Cx,Cs,Ct : commitments to i,x,s,t
ZKPOK of (i,x,s,t,) such that
0. They correspond to Ci,Cx,Cs,Ct
1. 1 ≤ i ≤ N
Standard techniques
2. A = Fs(i) [DY05]: Fs(i) = g1/(s+i+1)
3. T = gx(Ft(i))R
4. VerifySig(pk,(x,s,t), ) = TRUE
CL
2PC
CL
sk
BANK
First Signature Scheme
• (Sig scheme for messages of length
ℓ(m), security parameter k)
• Key generation:
n = pq = (2p’+1)(2q’+1) of length ℓ(n)
a, b, c  QRn
• Signing m:
e  PRIMESℓ(m)+2 , s  {0,1} ℓ(n)+ℓ(m)+k
solve for v such that ve = ambsc mod n
• Verification of {m, σ = (s,e,v)}:
check that ve = ambsc mod n
check the lengths of m,s,e
Provable Security
• Under the Strong RSA assumption
– hard, on input an RSA modulus n, and a
value u, to compute (v,e) such that e > 1 and
ve=u
• I will skip the proof of security
And Now the Two Protocols
• Signature on a committed value
• ZK proof of knowledge of a signature
But First: Some Known Tools
• Commitment scheme [Ped92,FO97]:
– PK: N = (2P’+1)(2Q’+1), g, h  QRN
– Commit(x,r) = gxhr mod N
• ZK proof of knowledge of representations [S91]
– protocol between a “prover” P and a “verifier” V
– common input is some value C in some group where the discrete
logarithm problem is hard, and some generators g1, g2, ..., g15
– P knows how to represent C in terms of g1, g2, ..., g15 :
C = g1x1g2x2...g15x15.
– P can convince V that he knows x1, x2, ..., x15 s.t. V learns nothing
about them
– but with access to the P’s algorithm, can extract the
representation.
• ZK proofs of equality of representations & other relations
[S91,Brands99,CM99]
• ZK proof that a committed number lies in an integer
interval [B00].
Signature on a Committed Value
1. Commit to m:
Cm= ambr mod n
2. Prove knldge
of rep of Cm
and correct
lengths
4. Output
s = r+t, e, v
Cm
Proof of
knowledge
Alice
t,e,v
3. Pick random t, e.
Solve for v in
Signer
ve = Cmbtc mod n
Send (t,e,v)
Proof of Knowledge of a Signature
• Imagine that you are the PROVER! 
– Have m, σ = (v,e,s), s.t. ve = ambsc
– For a random r, let u = vbr.
– Note that ue= ambs+rec
• so (u,e,s+re) is also a sig on m
– Then c = uea-mb-s-re
– Give u to the verifier and prove knowledge
of representation of c in bases u,a,b; prove
that these discrete logs are of the right
length
• (this version of this protocol due to [CG04])
Signature for Blocks of Messages
• Wish to sign a block of messages, (m1,...,mL)
– normally just use a hash function:
• M = H(m1,...,mL), then sign M
– not in this case: want efficient protocols
• Variant of the other scheme:
– Public key: n of length ℓ(n) same as before
a1, ..., aL, b, c  QRn
– Signing (m1,...,mL): random e and s as before
solve for v such that
ve = a1m1... aLmLbsc mod n
– Verification of {m1,...,mL, σ = (s,e,v)} : check ve and
lengths, as before
• Security follows from first scheme
Signature on a Committed Block
1. Commit to m1,...,mL :
Cm= a1m1...aLmLbr mod n
2. Prove knldge
of rep of Cm
and correct
lengths
4. Output
s = r+t, e, v
Cm
Proof of
knowledge
Alice
t,e,v
3. Pick random t, e.
Solve for v in
Signer e
v = Cmbtc mod n
Send (t,e,v)
Proof of Knowledge of a Signature
• Imagine that you are the PROVER! 
–
–
–
–
–
–
Have m1,...,mL, σ = (v,e,s), s.t. ve = a1m1...aLmLbsc
For a random r, let u = vbr.
Note that ue= a1m1...aLmLbs+rec
so (u,e,s+re) is also a sig on m1,...,mL
Then c = uea1-m1...aL-mLb-s-re
Give u to the verifier and prove knowledge of
representation of c in bases u,a1,...,aL,b; prove
that these discrete logs are of the right
length
Anonymous Credentials
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x)
P, pk
• Obtain cred:
opening of P
 =pk(x)
2PC
• Anonymously prove possession of credential:
ZKPOK of (x,) such that
VerifySig(pk,x,) = TRUE
sk
BANK
Anonymous Credentials
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x)
P, pk
• Obtain cred:
opening of P
 =pk(x)
2PC
sk
BANK
• Anonymously prove possession of credential for pseudonym P’ (not
the same as pseudonym P):
ZKPOK of (x,R,) such that
1. VerifySig(pk,x, ) = TRUE
2. P’ = Commit(x;R)
Anonymous Credentials w. Identity Escrow
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = EncryptCA(user’s real SK x)
P, pk
• Obtain cred:
opening of P
 =pk(x)
2PC
sk
BANK
• Anonymously prove possession of credential for pseudonym P’ (not
the same as pseudonym P):
ZKPOK of (x,R,) such that
1. VerifySig(pk,x, ) = TRUE
2. P’ = Commit(x;R)
Anonymous Ecash Credentials
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x)
P, pk
• Obtain cred:
opening of P
same as ecash
2PC
sk
• Spend under pseudonym P’ (not the same as pseudonym P):
same as ecash, must prove that the
secret x is inside the pseudonym was
signed
BANK
Anonymous Credentials with Attributes
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x, attr A1,...An)
P, pk
• Obtain cred:
opening of P
 =pk(x,A1,...,An)
2PC
sk
BANK
• Anonymously prove possession of credential for pseudonym P’ (not the
same as pseudonym P):
ZKPOK of (x,A1,...,An,R,) such that
1. VerifySig(pk,(x,A1,...,An),) = TRUE
2. P’ = Commit(x;R)
3. Attributes satisfy desired
relation
Anonymous Credentials “Light” [BL12]
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x)
P, pk
• Obtain cred:
opening of P
P’ = Commit(x;R’),
R’,  =pk(P’)
2PC
sk
BANK
• Anonymously prove possession of credential (can only do it once!):
Reveal P’ and 
Anonymous Credentials “Light” [BL12]
• SETUP: Signature key pair for Issuer (pk,sk).
The user is anonymous, but known to the issuer under a
pseudonym P = Commit(user’s real SK x)
P, pk
• Obtain cred:
opening of P
P’ = Commit(x;R’),
R’,  =pk(P’)
2PC
sk
BANK
• Anonymously prove possession of credential (can only do it once!)
under pseudonym P’’ (not the same as P or P’):
Reveal P’ and 
ZK Prove that P’ and P’’ are commitments
to the same value
Download