So, this paper http://ifca.ai/fc14/papers/fc14_submission_71.pdf got me thinking about the current rules for transaction rebroadcasting:
Once a transaction has been broadcast, you stop rebroadcasting. Unless you own txins or txouts in the transaction.
So, you use the paper’s techniques. But you can be much more speculative than they are, and get a low-likelihood but possible IP match for an address, connect your client up, and issue a transaction paying yourself and a small amount to the address you’re interested in, just over the dust amount.
The transaction should be constructed so it’s unlikely to be mined.
The transaction traverses the network, then it stops being rebroadcast, except by the recipient and you. If your client is connected to the wallet that owns the address, it will see rebroadcasting for some time, providing a very strong link between the two.
This seems like a bad outcome.
I speculate that the 1Sochi transactions may have this motivation – mapping addresses to determine IPs at large in Bitcoin.
It seems like the simplest thing would be to not re-re-broadcast to clients you’ve already spoken to, but I’ll wait for smarter people than me to work out the right fix.