What are the technical advantages of Ring Signatures (CryptoNote) compared to CoinJoin?
Which privacy technology provides a higher level of privacy and why?
What is the difference between "passive" and "active" participation in mixing?
Monero Stack Exchange is a question and answer site for developers and users of the secure, private and untraceable cryptocurrency Monero. It only takes a minute to sign up.Sign up to join this community
Note: this is based on darkcoin's use of Coinjoin, and Coinjoin itself is not necessarily vulnerable to spying by third parties (see the comment below by gmaxwell).
The main difference is whether you are trusting third parties to do the mixing for you, or not. Coinjoin relies on third parties, while cryptonote allows you to do the mixing yourself locally.
In the Coinjoin case, you have to trust the third parties to not log, to perform the mixing, and to be available when needed. In the Cryptonote case, once you have the blockchain, you can mix locally, with cryptographic proof.
In both cases, if you mix an output of yours with N other outputs, the ideal case is that each output is equiprobably mapped to the real output. For Coinjoin, getting more information that equiprobability depends on the above (whether the third parties were honest, kept logs, etc). In the Crptonote case, it depends on cracking the ring signature algorithm, wihch is well understood peer reviewed cryptography.
Other ways to get information over equiprobability typically apply to both Coinjoin and Cryptonote (ie, newer coins are more likely to move).
If we go beyond privacy, then a difference between Coinjoin and Cryptonote mixing is that Coinjoin needs others to mix with you when you do. If nobody else wants to mix coins on friday when you want/need to mix some, you can't mix. With Cryptonote, you can mix alone without interacting with any third party.
Ring Signatures provide mixing on-chain.
CoinJoin requires you to trust the operator of the service.
Ring Sigs provide a higher level of privacy since the mixing is baked into the protocol.