For starter, passing White-box testing is harder than Black-Box testing, so obviously Source Code, design and whitepaper are what people need to crack your website.
Agreed. On the way over the next few days!
So generation of random seed happened on client side? Javascript random rely on javascript engine, so it's possible the engine use broken/vulnerable algorithm for random function.
We use the Crypto.getRandomValues Cryptography API call which is generally regarded as a cryptographically secure pseudo-random number generator (CSPRNG) (
https://lwn.net/Articles/666407/). Relying on the javascript engine (which mostly rely on the OS crypto engine behind it) does suggest certain vulnerability but hardly any more than your average crypto-wallet. In fact, Metamask is using the exact same method (
https://metamask.zendesk.com/hc/en-us/articles/360020091432-How-does-MetaMask-Generate-Your-Keys-). We acknowledge the recommendation by W3 to refrain from using that method to generate keys (
https://www.w3.org/TR/WebCryptoAPI/#Crypto-method-getRandomValues) but we consider that relevant to only specific key types (RSA, Elliptic Curve, AES, etc) and not to our ElGamal based keys. For reference, OpenPGP also using that exact same function (
https://openpgpjs.org/openpgpjs/doc/crypto_random.js.html).
Additional read, if you're interested:
https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValueshttps://bitcointechweekly.com/briefs/vulnerabilities-in-numerous-javascript-cryptographic-libraries/https://medium.com/@dazcyril/generating-cryptographic-random-state-in-javascript-in-the-browser-c538b3daae50https://stackoverflow.com/questions/5651789/is-math-random-cryptographically-securehttps://adtmag.com/Blogs/Dev-Watch/2016/01/random-javascript-fix.aspxhttps://blog.rplasil.name/2016/10/digging-into-browser-csprng_17.html