If gmaxwell is referring to what I think he is, the way it works is roughly:
1. Parties connect to the server over an anonymous connection (e.g. over Tor) and request a
blind signature on their outputs; they also submit their inputs.
2. From a fresh anonymous (e.g. over a new Tor circuit) connection, they send their real output. The server sees its signature and knows that this is one of the blinded ones from step (1).
3. They repeat step (2) for each of their outputs.
Once the server has as many unblinded outputs as it signed blinded ones, it can construct the merged transaction and submit it to the original parties from step (1) for signing.
Can you explain the blind signatures in detail? I mean I can name a bunch of cryptographic algorithms too, but it makes no sense unless I explain what I'm doing with it and when.
Some mathematical functions can be executed on encrypted data and when decrypting the result you will get the actual result. HOWEVER is ECDSA one such function?
If it is, how does this help you?
You say the participants submit to the server their outputs... right there; a bitcoin output is your address - so if that is what you submitted, the server will know exactly where each participant wants their money to go.
It won't matter WHERE it comes from to the FBI.
It won't matter if the other participants don't know where they sent their money (due to blind sigs) if the server knows. An attacker could set up and run a bunch of mixing servers and voila all coinjoins are unmasked.
This is why I suggest switching WHO is the mixing server from round to round.