Ring Signatures Monero Oct. 14, 2019 Overview Privacy Hierarchy - - PowerPoint PPT Presentation

β–Ά
ring signatures monero
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Ring Signatures Monero

  • Oct. 14, 2019
slide-2
SLIDE 2

Overview

  • Privacy Hierarchy
  • Monero
  • Secretly signing a transaction
  • Secretly receiving a transaction
slide-3
SLIDE 3

Privacy Hierarchy

Everything open Pseudonymous, amount open

Bitcoin

slide-4
SLIDE 4

Privacy Hierarchy

Everything open Pseudonymous, amount open Pseudonymous, amount secret

Bitcoin MimbleWimble

slide-5
SLIDE 5

Privacy Hierarchy

Everything open Pseudonymous, amount open Pseudonymous, amount secret Pseudonymous, amount open miner/coordinator does not know input output

Bitcoin MimbleWimble CoinJoin

slide-6
SLIDE 6

Privacy Hierarchy

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

slide-7
SLIDE 7

Privacy Hierarchy

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

slide-8
SLIDE 8

Monero

  • Anonymously receiving
  • Address is created from public key
  • Not possible to link target address to public key
  • Anonymous sending
  • Owner selects an anonymity set
  • Shows that one in

signed the transaction

𝒯 = {T1, T2, …, Tn} 𝒯

slide-9
SLIDE 9

Anonymous Sending

  • Sending a transaction is one with a
  • ne-time ring-signature
  • one-time: signing a transaction more than once with the

same key can be detected: Prevents double spend

  • ring-signature: Given a set of public keys, show that one
  • f the corresponding private keys signed it
slide-10
SLIDE 10

Ring signature

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)

slide-11
SLIDE 11

Ring signature

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)

slide-12
SLIDE 12

Ring signature

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

slide-13
SLIDE 13

Ring 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}

slide-14
SLIDE 14

Ring Signature

  • A signature that uses an anonymity set of public keys
  • The signer hides his/her identity in this set
  • Verifier can check whether someone of that set signed it
  • Verifier cannot identify who exactly signed it
  • Possible application: whistleblowing
slide-15
SLIDE 15

Single ECC signature

  • common group element
  • public/private key
  • Signature are 2 numbers
  • verify via

G P = pG s = (c, d), {c, d} ∈ β„€ c = β„‹ (document|G|cP + dG)

slide-16
SLIDE 16

Single ECC signature

  • common group element

, public/private key

  • verify via

G P = pG s = (c, d), {c, d} ∈ β„€

c = β„‹ (document|G|cP + dG)

same value

slide-17
SLIDE 17

Single ECC signature

  • common group element
  • public/private key
  • sign:
  • random
  • G

P = pG r c = β„‹ (document|G|rG) rG = (cp + d)G β‡’ d = r βˆ’ cp c = β„‹ (document|G|cpG + dG) c = β„‹ (document|G|cP + dG)

slide-18
SLIDE 18

2 element ECC ring signature

  • common group element
  • public keys
  • signature
  • Signer knows one of the private keys of

G {P1, P2} sring2 = (c1, c2, d1, d2) c1 + c2 = β„‹ (document|G|c1P1 + d1G|c2P2 + d2G) {P1, P2}

slide-19
SLIDE 19

2 element ECC ring signature

  • common group element
  • own public/private key

, other person’s key

  • sign:
  • random
  • G

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)

slide-20
SLIDE 20

General ECC ring signature

  • common group element
  • public keys
  • signature
  • Signer knows one of the private keys of

G {P1, P2, …, Pn} sring2 = (c1, c2, …, cn, d1, d2, …, dn) βˆ‘

i

ci = β„‹ (document|G|c1P1 + d1G|…|cnP2 + dnG) {P1, P2, …, Pn}

slide-21
SLIDE 21

General ECC ring signature

  • common group element
  • own public/private key

, other keys

  • sign:
  • random

(except )

  • G

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|…|…)

slide-22
SLIDE 22

ECC Ring Signature

  • We have now a method to sign a message anonymously
  • We pick a set of public keys
  • The verifier can not determine who exactly signed it
  • It only knows β€œone of this group”, but not more
slide-23
SLIDE 23

One-Time ECC Ring Sign.

  • Assuming we have one key for each transaction
  • We can send a transaction
  • No one knows which one was send
  • We can show that it was valid
  • What keeps us from double spending?
  • If no one knows which transaction was send, why not

send it twice

slide-24
SLIDE 24

Unique Element: Key Image

  • We add values to the signature to detect double spending
  • Public/private key
  • Compute the β€œkey image”
  • This value is unique to each key
  • Given , neither the private key, nor the public key can

be inferred

p, pG = P I = pβ„‹(P) ∈ β„€ I I

slide-25
SLIDE 25

Unique Element: Key Image

  • Public/private key

, β€œkey image”

  • Signature:
  • For each public key:
  • p, pG = P

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)

slide-26
SLIDE 26

One-Time ECC Ring Sign.

  • Create the signature (similar to before):
  • Random value for own public key
  • Random

for all other public keys

  • r

Lown = rG Rown = rI ci, di Pi Li = ciPi + diG Ri = ciI + diβ„‹(Pi)

slide-27
SLIDE 27

One-Time ECC Ring Sign.

  • Given:
  • Li = ciPi + diG

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

slide-28
SLIDE 28

One-Time ECC Ring Sign.

  • Signature:
  • Verify via
  • s = (I, c1, c2, …, cn, d1, d2, …, dn)

Li = ciPi + diG Ri = ciI + diβ„‹(Pi) βˆ‘

i

ci

?

= β„‹ (document|G|I|L1|…|Ln|R1|…|Rn)

slide-29
SLIDE 29

One-Time ECC Ring Sign.

  • Properties:
  • Given a valid signature, we can not infer which private key was

known

  • The key image is tied to the private key
  • Two separate signatures using the same private key need to use the

same key image

s = (I, c1, c2, …, cn, d1, d2, …, dn) βˆ‘

i

ci

?

= β„‹ (document|G|I|L1|…|Ln|R1|…|Rn) I I

slide-30
SLIDE 30

One-Time ECC Ring Sign. Summary

  • A user choses an anonymity set of public keys
  • Signs a transaction, so that
  • It is impossible to identify who signed it
  • Signing more than once with same private key can be

detected

  • If each transaction has its own public/private key, we

can detect double-spending

slide-31
SLIDE 31

Monero

  • Anonymously receiving
  • Address is created from public key
  • Not possible to link target address to public key
  • Anonymous sending
  • Owner selects an anonymity set
  • Shows that one in

signed the transaction

𝒯 = {T1, T2, …, Tn} 𝒯

slide-32
SLIDE 32

Anonymous receiving

  • Create a unique address from a user’s public key
  • No outside observer can link the address with the key
  • User can identify which payment are send to him/her

(sk, pk)

pk

(r)

money for f(pk,r)

that is me!

?

slide-33
SLIDE 33

Keys in Monero

  • Each user has an address template, consisting of 2 keys
  • (private key)
  • (public key)
  • (tracking key)

a, b ∈ β„€ a β‰  b (aG, bG) = (A, B) (a, B)

slide-34
SLIDE 34

Receiving Money

  • Alice wants to send money to Bob
  • random value, one-time public key
  • one-time public key as address
  • Alice sends transaction

r R = rG P = β„‹(rA)G + B

Amount : 1234 XMR Public key: Address :

R P

slide-35
SLIDE 35

Receiving Money

  • Alice wants to send money to Bob
  • Alice creates
  • Bob sees
  • and can check if
  • His key

P = β„‹(rA)G + B P = β„‹(aR)G + B (a, b), (aG, bG) = (A, B)

Amount : 1234 XMR Public key: Address :

R P

slide-36
SLIDE 36

Receiving Money

  • Alice creates
  • Bob’s key:

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

slide-37
SLIDE 37

Receiving Money

  • Alice creates
  • Bob can detect payments directed to him
  • No one else can see that this is a payment for Bob

P = β„‹(rA)G + B = β„‹(aR)G + B

slide-38
SLIDE 38

Monero

  • Anonymously receiving
  • Address is created from public key
  • Not possible to link target address to public key
  • Anonymous sending
  • Owner selects an anonymity set
  • Shows that one in

signed the transaction

𝒯 = {T1, T2, …, Tn} 𝒯

slide-39
SLIDE 39

Taking ownership of a transaction

  • The transaction’s address can be seen as a key
  • Everybody knows
  • Alice knows how to construct
  • Only Bob knows secret

, so that

P P P = β„‹(rA)G + B p = β„‹(rA) + b pG = P

Amount : 1234 XMR Public key: Address :

R P

slide-40
SLIDE 40

Lifetime of a Monero Tx

  • Bob has secret

and publishes

  • Alice as secret

(a, b) (aG, bG) = (A, B) r

(A, B)

Amount: 1234 XMR Public key: Address:

R P

This is for me!

P = β„‹(aR)G + B

slide-41
SLIDE 41

Lifetime of a Monero Tx

p = β„‹(aR)G + b I = pβ„‹(P)

slide-42
SLIDE 42

Lifetime of a Monero Tx

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

  • ther tx found on the Blockchain

𝒯 = {P, P2, P3, p4, …, Pn} s = (I, c1, c2, …, cn, d1, d2, …, dn)

slide-43
SLIDE 43

Lifetime of a Monero Tx

𝒯 = {P, P2, P3, p4, …, Pn} s = (I, c1, c2, …, cn, d1, d2, …, dn)

tx is valid

βˆ‘

i

ci = β„‹ (tx|G|I|L1|…|Ln|R1|…|Rn)

slide-44
SLIDE 44

A complete transaction

slide-45
SLIDE 45

Problems with Monero

  • Amounts are open
  • User choses anonymity set
  • Dust attack