- Can't be resistant to quantum computing nor mathematical advance (as the NSA did with differential crypto-analysis in the 1970s and 80s and no one knew they were cracking us) and it can't be retroactively hardened. Once you put all your faith in that, you are screwed if such an advance comes. Whereas, with Lamport signatures instead of ECDSA at least our normal transactions in an altcoin will be safe (the detailed reason is explained in one of the above linked posts). If someone redesigns Zerocoin to use only cryptographic hash functions, then this weakness will be fixed. This does not appear to be easy to do, as I haven't yet found any research attempting to do so. All the research I've found on zero-knowledge proofs involves some algebraic trap-door.
I am agnostic toward specific encryption algos used, I just need public/private key functionality.
You mean to say you need Zero-knowledge proof functionality. As far as I know, currently there are no ZKPs which don't use algebraic trap-doors (i.e. they
don't use
only cryptographic hashing).
- It doesn't obscure your IP address, thus it is useless tsuris without such. And Tor+VPNs is likely compromised by the NSA et al.
I believe embedding the source of funds and destination of funds inside the encrypted data eliminates the need for obscuring IP address. Everybody is broadcasting to blockchain, so everybody is communicating with everybody else. No information leaked.
As I wrote in my prior post, kudos you are remarkably close to the correct solution on this, but not quite there.
- The timing and amounts of inputs and outputs to the mixer can be analyzed and much of the anonymity can be crack with such timing and pattern analysis. This is especially worsened if you change it to allow specific amounts in/out as you propose. The amounts should rather always be the same, e.g. 1 BTC.
All payments are sent at the same time by synchronizing the beginning and ending of sessions. There will need to be some delays to fit the transactions into the blocks, but that will be done randomly. No information leaked.
It is possible to correlate inputs into the Zerocoin to outputs coming about the other side because the amounts of each such pair are (usually) different from all the other such in/out pairs.
- The verification time is very slow, thus it encourages further centralization of mining (which already a critical problem with Bitcoin). This makes it very costly to deal with denial-of-service attacks.
Not an issue with NXTmixer
Please explain why so I can critique.
- At least the first iteration (and perhaps the re-designed one linked below) required a trusted party to sign the initial input values to the accumulator (each time the accumulator is reset), which is the antithesis of decentralized currency. This trusted party could steal all the coins.
Not an issue with NXTmixer, but initial implementation is centralized on one server at least for the mixing. The point to point is fully decentralized. Also, there is every reason to believe that NXTmixer can be ported to Automated Transactions when that comes out.
Huh? The Zerocoin proof requires the accumulator to have a pre-generated n,p,q when the accumulator is first initialized. Who ever created these values could steal all the coins. This is a fundamental flaw in Zerocoin. Have you fixed it? Or did the latest Zerocoin paper fix it?
- This is very complex new crypto and thus the likelihood of someone finding a weakness and cracking it is very high. For example, to prevent double-spends the design requires the solution C to be a prime. That may be (I haven't studied enough yet to form an opinion) a potential number theoretic hole for double-spends.
I am a simple C programmer and I designed something I can understand.
Then apparently you don't understand the inner workings of Zerocoin crypto library that you are using.
Most interested in how NXTmixer is vulnerable
I would have to dig into the design and I don't have time for that. But I already see one flaw "synchronize clients". But I am not going to tell you, because then I give away my secret design.
I will critique some of the details, if you provide more. I can't quickly (and I am lacking time) follow what you've written so far about it. Perhaps you can explain your algorithms in English text. I am a C programmer but I am not going to try to gleem a high-level flowchart from C structures.