This doesn't look especially safe. In addition to the fact that the crypto is delivered by the server, and so every browser/server transaction is an opportunity for the server to surreptitiously backdoor the crypto operations, the underlying crypto here appears to be CBC+HMAC where the payloads are decrypted before the HMAC is checked.
Without looking deeper into the app ... The WebCrypto standard makes a lot of assumptions in terms of underlying security and is dangerous (if not negligent) without proper security headers (XSS, CSRF, CSP), in place[0]. Since this site positions itself as a security relevant app, mistakes like these are incredibly worrying.<p><a href="https://securityheaders.io/?q=https%3A%2F%2Fdarkwire.io%2FSkhYJzHGf&followRedirects=on" rel="nofollow">https://securityheaders.io/?q=https%3A%2F%2Fdarkwire.io%2FSk...</a>
Neat app, but curious why you aren't using WebRTC p2p?<p>I've always thought something like this using WebRTC + a (simple) way to independently check that no data is being sent elsewhere would be really cool.<p>Btw you could declare a content security policy for just your site since you don't load anything off domain <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP</a> Good luck!
For those who do not want to talk to themselves: <a href="https://darkwire.io/Bkhi21HMz" rel="nofollow">https://darkwire.io/Bkhi21HMz</a>
Quick response to some of the comments here:<p>- WebRTC is great in theory, terrible in practice (doesn't work very well), and still needs a bootstrapping server. So it is better to have a reliable websocket based server as the default/fallback, and WebRTC progressively enhanced.<p>- Signal and Whatsapp, as others have pointed out, are far from being comfortable as being private (they already know too much, phone number, etc.), and don't have the convenience of a browser based app.<p>- Yes, this app should be using the Web Crypto API (it is what we switched over to, for our P2P cryptographic user accounts: <a href="https://github.com/amark/gun/wiki/auth" rel="nofollow">https://github.com/amark/gun/wiki/auth</a> ) to reduce dependency on the server. You can use the `integrity` attribute to help out with this, but ultimately unless somebody installs it as an Electron app or something, browser based crypto has its limitations.
The name makes it sound dodgy: "dark" reminds me of "dark web" and all the negative connotations. Not great for trustworthiness which is especially important for crypto.
Kudos for working in this space...but why not just contribute to something like matrix?<p>See: <a href="https://matrix.org/docs/guides/faq.html#what-is-matrix" rel="nofollow">https://matrix.org/docs/guides/faq.html#what-is-matrix</a>
How does it differ from wire.com in terms of privacy? Besides, wouldn't you have to transfer the chatroom name over another chat service since it changes all the time and users have no identity of their own?
You could give the option to the owner of the room to set a password for anyone wanting to join. And maybe you could use the password to encrypt further communication.
I understand the benefits from instant web chat, but I think it's not too difficult to access the signal protocol through Whatsapp or Signal's desktop app.