Suppose everyone routinely mixes every coin they receive. A haven for money-launderers? Not if we don't want it to be...
TL;DR If a large enough % of people in a mix decide to secretly report their (input, output) mix pair to a chosen AML organisation, the organization can trace dirty money going through the mix. This can all be done automatically. This might lead to AML organizations encouraging model citizens to use mixers routinely to keep that % high.
ProtocolWhenever you make a payment to anyone with a freshly mixed coin, you generate a new Bitcoin address as a "notify" address for that coin. You sign the notify address with the address key you're paying from, and encrypt the result with Interpol's well-known public key (or it might be the UN, Bitcoin Foundation, etc).
You give this encrypted "notify" data to the person you've just paid.
If you haven't mixed your coin, you can forward any notify data you received with the coin to whoever you give your coin to, or you can decide you want to block the unmix and just don't pass on any data.
Now when Interpol sees the known proceeds of crime, address X, go into a mix, they wait for the mix outputs to hit well-known businesses like exchanges or Mike Hearn's whitelists in
"Decentralized crime fighting". They talk with the exchange and ask for some help tracing address X. The exchange gives them the notify data they have for each coin coming from address X.
Then Interpol makes a standard low-value Bitcoin payment (eg min tx fee) to each notify address, from their well-known Bitcoin address corresponding to their public key.
Your wallet is watching your notify address, and can automatically take some action when it detects the payment from Interpol's address.
You'll have set your wallet to only let Interpol do so many unmixes per year, so they can't abuse the system. If they're within quota, your wallet makes a Tor connection to Interpol's server and securely submits your mix (input, output) pair, with signatures for both the mix input key and mix output key.
So every person who decides to help out Interpol sends them part of the information needed to reverse the mix, enabling them to follow the criminal's money and catch him when he spends it with a well-known business/whitelist server.
http://bitprivacy.org/files/unmixing.pngIf it was a 100-person mix, and 90% decide to help Interpol, this system narrows their leads to 10 outputs. Interpol might actively encourage model citizens to routinely mix their coins, to push that percentage higher.
AdversariesThere can be any number of adversaries in a mix.
Adversaries can just be people who don't want to help that AML organization, or they may be malicious and colluding with each other and the criminal in order to implicate an honest participant.
By using the AML organization as a trusted 3rd party this algorithm is resilient to adversaries.
Why use a low-value Bitcoin transaction for notification, shouldn't this use a proper p2p messaging system like Bitmessage?You could, but every wallet owner would have to sync up with this other messaging system just to help out with AML - I don't think the incentive is really there, hence this lightweight protocol.
Also as Bitcoin transactions are public, everyone can see exactly how much unmixing the AML organization is trying to do, and could adjust their unmix quota for them accordingly.
This tells the AML organization where my coins came from! Isn't there a better way?Maybe. Here's what I've thought about so far:
- Broken Probabilistic Technique
Instead of submitting your mix input/output pair to the authority, you could submit your input + a set of m outputs containing your actual output. This hides which your exact output was, and statistical analysis on the data could be able to narrow down the criminal to a few candidates. Repeat the process until you've got them.
But if there are many malicious participants, they can now totally subvert the process, and completely implicate an innocent party. So we can't use this algorithm.
- Secure Multi-Party Computation
You might be able to use MPC to identify the criminal without leaking private data - I don't know enough about this to say.