Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin
On the Effectiveness of Clustering Jonas Nick March 15, 2016
Privacy in Bitcoin Jonas Nick 1/34
Privacy in Bitcoin On the Effectiveness of Clustering Jonas Nick - - PowerPoint PPT Presentation
Bitcoin Clustering P2P wallet leak Analysis Conclusion Privacy in Bitcoin On the Effectiveness of Clustering Jonas Nick March 15, 2016 Privacy in Bitcoin Jonas Nick 1/34 Bitcoin Clustering P2P wallet leak Analysis Conclusion Privacy
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 1/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 2/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Anonymity ◮ ”Silkroad, anonymous market” - Bitcoin drug
Privacy in Bitcoin Jonas Nick 2/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Anonymity ◮ ”Silkroad, anonymous market” - Bitcoin drug
◮ ”... the major advantage they [Bitcoin] are
Privacy in Bitcoin Jonas Nick 2/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Anonymity ◮ ”Silkroad, anonymous market” - Bitcoin drug
◮ ”... the major advantage they [Bitcoin] are
◮ ”... usually not very anonymous.” - Bitcoin wiki Privacy in Bitcoin Jonas Nick 2/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Anonymity ◮ ”Silkroad, anonymous market” - Bitcoin drug
◮ ”... the major advantage they [Bitcoin] are
◮ ”... usually not very anonymous.” - Bitcoin wiki Privacy in Bitcoin Jonas Nick 2/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Why? ◮ Privacy and fungibility essential characteristics of
◮ What? ◮ Anonymity + Selective Transparency Privacy in Bitcoin Jonas Nick 3/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Why? ◮ Privacy and fungibility essential characteristics of
◮ What? ◮ Anonymity + Selective Transparency ◮ Good news: That’s possible Privacy in Bitcoin Jonas Nick 3/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Why? ◮ Privacy and fungibility essential characteristics of
◮ What? ◮ Anonymity + Selective Transparency ◮ Good news: That’s possible ◮ This talk: There’s a long road road ahead Privacy in Bitcoin Jonas Nick 3/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Bitcoin is pseudonymous ◮ entities (persons, companies, etc.) are
◮ unbounded number of public keys per entity Privacy in Bitcoin Jonas Nick 4/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Bitcoin is pseudonymous ◮ entities (persons, companies, etc.) are
◮ unbounded number of public keys per entity ◮ sender public keys, recipient public keys and
Privacy in Bitcoin Jonas Nick 4/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Bitcoin is pseudonymous ◮ entities (persons, companies, etc.) are
◮ unbounded number of public keys per entity ◮ sender public keys, recipient public keys and
◮ unknown which public keys belong to an entity Privacy in Bitcoin Jonas Nick 4/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Bitcoin is pseudonymous ◮ entities (persons, companies, etc.) are
◮ unbounded number of public keys per entity ◮ sender public keys, recipient public keys and
◮ unknown which public keys belong to an entity ◮ Clustering: Given public key, use blockchain to
Privacy in Bitcoin Jonas Nick 4/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 5/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
1 bitcoin
Privacy in Bitcoin Jonas Nick 5/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
1 bitcoin
Privacy in Bitcoin Jonas Nick 5/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ balance-based vs. UTXO model Privacy in Bitcoin Jonas Nick 6/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ balance-based vs. UTXO model ◮ balance-based (f.e. Ethereum) ◮ Blockchain state
Privacy in Bitcoin Jonas Nick 6/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ balance-based vs. UTXO model ◮ balance-based (f.e. Ethereum) ◮ Blockchain state
◮ Transaction: Alice
1 coin
Privacy in Bitcoin Jonas Nick 6/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ balance-based vs. UTXO model ◮ balance-based (f.e. Ethereum) ◮ Blockchain state
◮ Transaction: Alice
1 coin
◮ new Blockchain state
Privacy in Bitcoin Jonas Nick 6/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ UTXOs (Unspent Transaction Outputs) ◮ Bitcoin’s model
◮ Balance implicit ◮ Cash analogy
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ UTXOs (Unspent Transaction Outputs) ◮ Bitcoin’s model
◮ Balance implicit ◮ Cash analogy Privacy in Bitcoin Jonas Nick 7/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 8/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ spend tx outputs
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs ◮ change
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs ◮ change
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs ◮ change
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs ◮ change ◮ multi-input tx Privacy in Bitcoin Jonas Nick 8/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ user U, merchant M ◮ spend tx outputs
◮ inputs ◮ change ◮ multi-input tx ◮ pay-to-pubkey-hash Privacy in Bitcoin Jonas Nick 8/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 9/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Given pubkey, use blockchain to find pubkeys
◮ make assumptions about wallet behavior ◮ heuristics Privacy in Bitcoin Jonas Nick 10/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 11/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 11/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 11/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 12/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 12/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 13/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 13/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Jonas Nick 13/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Jonas Nick 13/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 13/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 14/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 14/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 14/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 14/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ How to quantify privacy on the blockchain? ◮ Requires data... Privacy in Bitcoin Jonas Nick 15/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ simplified payment verification (SPV): light
Privacy in Bitcoin Jonas Nick 16/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ simplified payment verification (SPV): light
◮ Some SPV wallets implement BIP37:
◮ used for learning about new transactions
Privacy in Bitcoin Jonas Nick 16/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ simplified payment verification (SPV): light
◮ Some SPV wallets implement BIP37:
◮ used for learning about new transactions
◮ Examples: Android Bitcoin Wallet, MultiBit,
Privacy in Bitcoin Jonas Nick 16/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ simplified payment verification (SPV): light
◮ Some SPV wallets implement BIP37:
◮ used for learning about new transactions
◮ Examples: Android Bitcoin Wallet, MultiBit,
Privacy in Bitcoin Jonas Nick 16/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 17/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Purpose: efficiently testing if element is
Privacy in Bitcoin Jonas Nick 17/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Purpose: efficiently testing if element is
◮ Operations: insert and query Privacy in Bitcoin Jonas Nick 17/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Purpose: efficiently testing if element is
◮ Operations: insert and query ◮ False positive rate: Pr(query|not inserted) Privacy in Bitcoin Jonas Nick 17/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Purpose: efficiently testing if element is
◮ Operations: insert and query ◮ False positive rate: Pr(query|not inserted) ◮ No false negatives Privacy in Bitcoin Jonas Nick 17/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 18/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Filter has space and time advantage Privacy in Bitcoin Jonas Nick 19/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Filter has space and time advantage ◮ fp-rate: bandwidth/privacy trade-off Privacy in Bitcoin Jonas Nick 19/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Filter has space and time advantage ◮ fp-rate: bandwidth/privacy trade-off ◮ Most wallets: 8000 false positives Privacy in Bitcoin Jonas Nick 19/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Idea: query both pubkey and hash(pubkey) ◮ then
Privacy in Bitcoin Jonas Nick 20/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Idea: query both pubkey and hash(pubkey) ◮ then
◮ = fp-rate2 Privacy in Bitcoin Jonas Nick 20/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Idea: query both pubkey and hash(pubkey) ◮ then
◮ = fp-rate2 ◮ most wallets: 1 false positive Privacy in Bitcoin Jonas Nick 20/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Idea: query both pubkey and hash(pubkey) ◮ then
◮ = fp-rate2 ◮ most wallets: 1 false positive ◮ 20 crawlers collected 37,585 filters ◮ need to be picked up by seed nodes Privacy in Bitcoin Jonas Nick 20/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 21/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 22/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ A general fix requires substantial modification
Privacy in Bitcoin Jonas Nick 23/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ A general fix requires substantial modification
◮ Alternatives ◮ a central server that learns all of the client’s
◮ full node Privacy in Bitcoin Jonas Nick 23/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Collected filters allow to reconstruct all
◮ Can apply clustering and evaluate clustering
Privacy in Bitcoin Jonas Nick 24/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ precision: Pr(in wallet|heuristic) ◮ recall: Pr(heuristic|in wallet) Privacy in Bitcoin Jonas Nick 25/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ precision: Pr(in wallet|heuristic) ◮ recall: Pr(heuristic|in wallet)
4
Privacy in Bitcoin Jonas Nick 25/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 26/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion Privacy in Bitcoin Jonas Nick 27/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
Privacy in Bitcoin Jonas Nick 28/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ captured pubkeys of 37, 000 wallets from the
Privacy in Bitcoin Jonas Nick 29/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ captured pubkeys of 37, 000 wallets from the
◮ introduced two new clustering strategies Privacy in Bitcoin Jonas Nick 29/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ captured pubkeys of 37, 000 wallets from the
◮ introduced two new clustering strategies ◮ evaluated performance of clustering using
Privacy in Bitcoin Jonas Nick 29/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ captured pubkeys of 37, 000 wallets from the
◮ introduced two new clustering strategies ◮ evaluated performance of clustering using
◮ modern wallets: 70% recall Privacy in Bitcoin Jonas Nick 29/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering ◮ do not reuse addresses Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering ◮ do not reuse addresses ◮ other parties play a role Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering ◮ do not reuse addresses ◮ other parties play a role ◮ separate Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering ◮ do not reuse addresses ◮ other parties play a role ◮ separate ◮ openbitcoinprivacyproject.org Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ keep your wallet up to date ◮ do not use wallets with Bloom filtering ◮ do not reuse addresses ◮ other parties play a role ◮ separate ◮ openbitcoinprivacyproject.org ◮ altcoins? Privacy in Bitcoin Jonas Nick 30/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ coin selection Privacy in Bitcoin Jonas Nick 31/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ coin selection ◮ coinjoin
Jonas Nick 31/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ coinjoin
Privacy in Bitcoin Jonas Nick 32/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ coinjoin
◮ trustless, but ◮ UI, exact protocol challenging ◮ Confidential transactions Privacy in Bitcoin Jonas Nick 32/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Joinmarket Privacy in Bitcoin Jonas Nick 33/34
Bitcoin Clustering P2P wallet leak Analysis Conclusion
◮ Questions? ◮ Contact ◮ nickler.ninja ◮ slides: nickler.ninja/slides/
2016-zurich-meetup.pdf
◮ thesis: nickler.ninja/papers/thesis.pdf ◮ jonas@blockstream.com Privacy in Bitcoin Jonas Nick 34/34