ring signatures monero
play

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


  1. Ring Signatures Monero Oct. 14, 2019

  2. Overview • Privacy Hierarchy • Monero • Secretly signing a transaction • Secretly receiving a transaction

  3. Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open

  4. Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open MimbleWimble Pseudonymous, amount secret

  5. Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open MimbleWimble Pseudonymous, amount secret Pseudonymous, amount open CoinJoin miner/coordinator does not know input output

  6. Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open MimbleWimble Pseudonymous, amount secret Pseudonymous, amount open CoinJoin miner/coordinator does not know input output amount open, transaction un-linkable Monero Secret receive/secret sending

  7. Privacy Hierarchy Everything open Bitcoin Pseudonymous, amount open MimbleWimble Pseudonymous, amount secret Pseudonymous, amount open CoinJoin miner/coordinator does not know input output amount open, transaction un-linkable Monero Secret receive/secret sending ZCash, ZeroCash, ZeroCoin amount secret, transaction un-linkable

  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 𝒯 = { T 1 , T 2 , …, T n } • Shows that one in signed the transaction 𝒯

  9. Anonymous Sending • Sending a transaction is one with a one-time ring-signature • o ne-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 of the corresponding private keys signed it

  10. Ring signature tx 9: (__, pk) tx 10: tx 2: tx 4: (__, pk) (__, pk) (__, pk) tx 1: tx 5: tx 12: (__, pk) (__, pk) tx 3: (__, pk) (__, pk) tx 8: tx 7: (__, pk) (sk, pk) tx 6: tx 13: tx 11: (__, pk) (__, pk) (__, pk)

  11. Ring signature tx 9: (__, pk) tx 10: tx 2: tx 4: (__, pk) (__, pk) (__, pk) tx 1: tx 5: tx 12: (__, pk) (__, pk) tx 3: (__, pk) (__, pk) tx 8: tx 7: (__, pk) (sk, pk) tx 6: tx 13: tx 11: (__, pk) (__, pk) (__, pk)

  12. Ring signature tx 3: tx 4: tx 5: tx 7: (__, pk) (__, pk) (__, pk) (sk, pk) tx 8: tx 10: tx 12: tx 13: (__, pk) (__, pk) (__, pk) (__, pk) document sign ( document , sk , { pk 3 , pk 4 , …, pk 13 }) Signature

  13. Ring signature pk 3 pk 4 pk 5 pk 7 pk 8 pk 10 pk 12 pk 13 document verify ( document , s , { pk 3 , pk 4 , …, pk 13 }) {True, False} Signature

  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

  15. Single ECC signature • common group element G • public/private key P = pG • Signature are 2 numbers s = ( c , d ), { c , d } ∈ ℤ • verify via c = ℋ ( document | G | cP + dG )

  16. Single ECC signature • common group element , public/private key G P = pG • s = ( c , d ), { c , d } ∈ ℤ • verify via c = ℋ ( document | G | cP + dG ) same value

  17. Single ECC signature • common group element G • public/private key P = pG • sign: • random r c = ℋ ( document | G | rG ) • • rG = ( cp + d ) G ⇒ d = r − cp c = ℋ ( document | G | cpG + dG ) c = ℋ ( document | G | cP + dG )

  18. 2 element ECC ring signature • common group element G • public keys { P 1 , P 2 } • signature s ring 2 = ( c 1 , c 2 , d 1 , d 2 ) c 1 + c 2 = ℋ ( document | G | c 1 P 1 + d 1 G | c 2 P 2 + d 2 G ) • Signer knows one of the private keys of { P 1 , P 2 }

  19. 2 element ECC ring signature • common group element G • own public/private key , other person’s key P 1 = p 1 G P 2 • sign: • random r , c 2 , d 2 c = ℋ ( document | G | rG | c 2 P 2 + d 2 G ) • • c 1 = c − c 2 ⇒ c 1 + c 2 = ℋ ( . . . ) rG = ( c 1 p 1 + d 1 ) G ⇒ d 1 = r − c 1 p 1 • c 1 + c 2 = ℋ ( document | G | c 1 p 1 G + d 1 G | c 2 P 2 + d 2 G )

  20. General ECC ring signature • common group element G • public keys { P 1 , P 2 , …, P n } • signature s ring 2 = ( c 1 , c 2 , …, c n , d 1 , d 2 , …, d n ) c i = ℋ ( document | G | c 1 P 1 + d 1 G | … | c n P 2 + d n G ) ∑ i • Signer knows one of the private keys of { P 1 , P 2 , …, P n }

  21. General ECC ring signature • common group element G • own public/private key , other keys P i = p i G P j • sign: • random (except ) r , c 1 , c 2 , …, c n , d 1 , d 2 , …, d n c i , d i c = ℋ ( document | G | c 1 P 2 + d 1 G | … | rG | … | c n P n + d n G ) • c i = c − ∑ c k ⇒ ∑ c k = ℋ ( . . . ) • k : k ≠ i k rG = ( c i p i + d i ) G ⇒ d i = r − c i p i • c i = ℋ ( document | G | … | … | ( c i p i + d i ) G | … | … ) ∑ i

  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

  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

  24. Unique Element: Key Image • We add values to the signature to detect double spending • Public/private key p , pG = P • Compute the “ key image ” I = p ℋ ( P ) ∈ ℤ • This value is unique to each key I • Given , neither the private key, nor the public key can I be inferred

  25. Unique Element: Key Image • Public/private key , “ key image ” p , pG = P I = p ℋ ( P ) ∈ ℤ • Signature: • s = ( I , c 1 , c 2 , …, c n , d 1 , d 2 , …, d n ) • For each public key: • L i = c i P i + d i G • R i = c i I + d i ℋ ( P i ) ∑ c i = ℋ ( document | G | I | L 1 | L 2 | … | L n | R 1 | R 2 | … | R n )

  26. One-Time ECC Ring Sign. • Create the signature (similar to before): • Random value for own public key r • L own = rG • R own = rI • Random for all other public keys c i , d i P i • L i = c i P i + d i G • R i = c i I + d i ℋ ( P i )

  27. One-Time ECC Ring Sign. • Given: • L i = c i P i + d i G R i = c i I + d i ℋ ( P i ) • L own = rG R own = rI c = ℋ ( document | G | I | L 1 | … | L n | R 1 | … | R n ) • c own = c − ∑ c i d own = r − c own p • i • L own = c own P + d own G

  28. One-Time ECC Ring Sign. • Signature: • s = ( I , c 1 , c 2 , …, c n , d 1 , d 2 , …, d n ) • Verify via • L i = c i P i + d i G R i = c i I + d i ℋ ( P i ) = ℋ ( document | G | I | L 1 | … | L n | R 1 | … | R n ) ? ∑ c i i

  29. One-Time ECC Ring Sign. • s = ( I , c 1 , c 2 , …, c n , d 1 , d 2 , …, d n ) = ℋ ( document | G | I | L 1 | … | L n | R 1 | … | R n ) ? ∑ c i • i • Properties: • Given a valid signature, we can not infer which private key was known • The key image is tied to the private key I • Two separate signatures using the same private key need to use the same key image I

  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

  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 𝒯 = { T 1 , T 2 , …, T n } • Shows that one in signed the transaction 𝒯

  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 pk money that is for f(pk,r) me! (r) ? (sk, pk)

  33. Keys in Monero • Each user has an address template, consisting of 2 keys • ( private key ) a , b ∈ ℤ a ≠ b • ( public key ) ( aG , bG ) = ( A , B ) • ( tracking key ) ( a , B )

  34. Receiving Money • Alice wants to send money to Bob • random value, one-time public key r R = rG • one-time public key as address P = ℋ ( rA ) G + B • Alice sends transaction Amount : 1234 XMR Public key: R Address : P

  35. Receiving Money • Alice wants to send money to Bob • Alice creates P = ℋ ( rA ) G + B • Bob sees Amount : 1234 XMR Public key: R Address : P • and can check if P = ℋ ( aR ) G + B • His key ( a , b ), ( aG , bG ) = ( A , B )

  36. Receiving Money • Alice creates P = ℋ ( rA ) G + B • Bob’s key: ( a , b ), ( aG , bG ) = ( A , B ) Alice can create this P = ℋ ( rA ) G + B = ℋ ( raG ) G + B = ℋ ( arG ) G + B = ℋ ( aR ) G + B Bob can create this

  37. Receiving Money • Alice creates P = ℋ ( rA ) G + B = ℋ ( aR ) G + B • Bob can detect payments directed to him • No one else can see that this is a payment for Bob

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend