Ring Signatures Monero
- Oct. 14, 2019
Ring Signatures Monero Oct. 14, 2019 Overview Privacy Hierarchy - - PowerPoint PPT Presentation
Ring Signatures Monero Oct. 14, 2019 Overview Privacy Hierarchy Monero Secretly signing a transaction Secretly receiving a transaction Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open Privacy Hierarchy
Everything open Pseudonymous, amount open
Bitcoin
Everything open Pseudonymous, amount open Pseudonymous, amount secret
Bitcoin MimbleWimble
Everything open Pseudonymous, amount open Pseudonymous, amount secret Pseudonymous, amount open miner/coordinator does not know input output
Bitcoin MimbleWimble CoinJoin
Everything open Pseudonymous, amount open Pseudonymous, amount secret Pseudonymous, amount open miner/coordinator does not know input output amount open, transaction un-linkable Secret receive/secret sending
Bitcoin MimbleWimble CoinJoin Monero
Everything open Pseudonymous, amount open Pseudonymous, amount secret Pseudonymous, amount open miner/coordinator does not know input output amount open, transaction un-linkable Secret receive/secret sending amount secret, transaction un-linkable
Bitcoin MimbleWimble CoinJoin Monero ZCash, ZeroCash, ZeroCoin
signed the transaction
π― = {T1, T2, β¦, Tn} π―
same key can be detected: Prevents double spend
tx 1: (__, pk) tx 2: (__, pk) tx 3: (__, pk) tx 4: (__, pk) tx 5: (__, pk) tx 6: (__, pk) tx 7: (sk, pk) tx 10: (__, pk) tx 12: (__, pk) tx 11: (__, pk) tx 9: (__, pk) tx 13: (__, pk) tx 8: (__, pk)
tx 1: (__, pk) tx 2: (__, pk) tx 3: (__, pk) tx 4: (__, pk) tx 5: (__, pk) tx 6: (__, pk) tx 7: (sk, pk) tx 10: (__, pk) tx 12: (__, pk) tx 11: (__, pk) tx 9: (__, pk) tx 13: (__, pk) tx 8: (__, pk)
tx 3: (__, pk) tx 4: (__, pk) tx 5: (__, pk) tx 7: (sk, pk) tx 10: (__, pk) tx 12: (__, pk) tx 13: (__, pk) tx 8: (__, pk)
document
sign(document, sk, {pk3, pk4, β¦, pk13})
Signature
pk 3 pk 4 pk 5 pk 7 pk 10 pk 12 pk 13 pk 8
document
verify(document, s, {pk3, pk4, β¦, pk13})
Signature {True, False}
G P = pG s = (c, d), {c, d} β β€ c = β (document|G|cP + dG)
, public/private key
G P = pG s = (c, d), {c, d} β β€
same value
P = pG r c = β (document|G|rG) rG = (cp + d)G β d = r β cp c = β (document|G|cpG + dG) c = β (document|G|cP + dG)
G {P1, P2} sring2 = (c1, c2, d1, d2) c1 + c2 = β (document|G|c1P1 + d1G|c2P2 + d2G) {P1, P2}
, other personβs key
P1 = p1G P2 r, c2, d2 c = β (document|G|rG|c2P2 + d2G) c1 = c β c2 β c1 + c2 = β( . . . ) rG = (c1p1 + d1) G β d1 = r β c1p1 c1 + c2 = β (document|G|c1p1G + d1G|c2P2 + d2G)
G {P1, P2, β¦, Pn} sring2 = (c1, c2, β¦, cn, d1, d2, β¦, dn) β
i
ci = β (document|G|c1P1 + d1G|β¦|cnP2 + dnG) {P1, P2, β¦, Pn}
, other keys
(except )
Pi = piG Pj r, c1, c2, β¦, cn, d1, d2, β¦, dn ci, di c = β (document|G|c1P2 + d1G|β¦|rG|β¦|cnPn + dnG) ci = c β β
k:kβ i
ck β β
k
ck = β( . . . ) rG = (cipi + di) G β di = r β cipi β
i
ci = β (document|G|β¦|β¦|(cipi + di)G|β¦|β¦)
send it twice
be inferred
p, pG = P I = pβ(P) β β€ I I
, βkey imageβ
I = pβ(P) β β€ s = (I, c1, c2, β¦, cn, d1, d2, β¦, dn) Li = ciPi + diG Ri = ciI + diβ(Pi) β ci = β (document|G|I|L1|L2|β¦|Ln|R1|R2|β¦|Rn)
for all other public keys
Lown = rG Rown = rI ci, di Pi Li = ciPi + diG Ri = ciI + diβ(Pi)
Ri = ciI + diβ(Pi) Lown = rG Rown = rI c = β (document|G|I|L1|β¦|Ln|R1|β¦|Rn) cown = c β β
i
ci down = r β cownp Lown = cownP + downG
Li = ciPi + diG Ri = ciI + diβ(Pi) β
i
ci
?
= β (document|G|I|L1|β¦|Ln|R1|β¦|Rn)
known
same key image
s = (I, c1, c2, β¦, cn, d1, d2, β¦, dn) β
i
ci
?
= β (document|G|I|L1|β¦|Ln|R1|β¦|Rn) I I
detected
can detect double-spending
signed the transaction
π― = {T1, T2, β¦, Tn} π―
(sk, pk)
(r)
money for f(pk,r)
that is me!
a, b β β€ a β b (aG, bG) = (A, B) (a, B)
r R = rG P = β(rA)G + B
Amount : 1234 XMR Public key: Address :
R P
P = β(rA)G + B P = β(aR)G + B (a, b), (aG, bG) = (A, B)
Amount : 1234 XMR Public key: Address :
R P
P = β(rA)G + B (a, b), (aG, bG) = (A, B) P = β(rA)G + B = β(raG)G + B = β(arG)G + B = β(aR)G + B
Alice can create this Bob can create this
P = β(rA)G + B = β(aR)G + B
signed the transaction
π― = {T1, T2, β¦, Tn} π―
, so that
P P P = β(rA)G + B p = β(rA) + b pG = P
Amount : 1234 XMR Public key: Address :
R P
and publishes
(a, b) (aG, bG) = (A, B) r
Amount: 1234 XMR Public key: Address:
R P
This is for me!
P = β(aR)G + B
p = β(aR)G + b I = pβ(P)
Amount : .. XMR Public key: Address :
R2 P2
Amount : .. XMR Public key: Address :
R2 P2
Amount : .. XMR Public key: Address :
R2 P2
Amount : .. XMR Public key: Address :
R2 P2
Amount : .. XMR Public key: Address :
R2 P2
Amount : .. XMR Public key: Address :
R2 P2
i