7 ms·
Show HN: Cyph – Encrypted chat in 30 seconds
- spolu 12y agoReally cool execution. Love the cyphertext view. The key exchange seems a little non-secure given the length of the sharing URL? How does it work?
- buu700 12y agoThanks! As far as the crypto, right now it's just straight OTR (https://arlolra.github.io/otr/ https://arlolra.github.io/otr/), but we have some cooler stuff in the works for non-intrusive non-ephemeral encryption. I think the way we handle the URL mitigates a lot of potential issues (the design goal there was to make it as resistant to someone brute forcing the address space as possible, within reason): * It expires after 10 minutes, at which point it's immediately recycled * It's also immediately recycled the second the other guy connects to the cyph (meaning that, hypothetically, two unrelated pairs of people could be cyphing each other at the same URL) That isn't perfect on its own, but it's good enough for almost any use case. That said, in a few weeks we're also rolling out a two-factor auth feature to verify your friend via her phone number or email address, for when you really need to be sure. (We'll flesh this out a bit more later on, e.g. possibly integrating with Google Authenticator.)
- sweis 12y agoPeople can't trust that the site is actually serving the right JS crypto implementation. It can be broken at any time, which would allow the site to intercept communications. It needs client-side code to do it correctly, for example, something like the e2e Chrome extension.
- buu700 12y agoAgreed that it's not a perfect solution (you still have to trust that I'm not brazenly serving up backdoored crypto), but it's a lot better than nothing. (And practically speaking, before building Cyph, Josh and I pretty much avoided having to use encryption except in cases where there was no alternative.) But I definitely agree that we'll have to come up with a clever solution to this problem. Off the top of my head (haven't thought this through — could be totally stupid), we may be able to do something clever with html5 appcache and notifying users when the hash of the code changes (and giving them the option to stay on their known good version). Of course, once we have our native app out this issue will be trivial to avoid for people who really need to. Edit: To clarify, I should correct you on that we are definitely performing the end-to-end encryption from the client — anything else would kinda defeat the purpose of Cyph...
- Iburinoc 12y agoThis looks cool really cool! I like the site, however it can be hard to read the text with the flashy background. Perhaps have the flashy background scroll up with the first "panel"? On the crypto side of things, are there any plans to create native clients? While I don't doubt that you guys are trustworthy, it would be nice if I didn't have to trust that the javascript I was being served didn't change between visits. All in all it looks good, albeit with some trust issues...
- buu700 12y agoThanks! We have some ideas about solving the trust issue — https://news.ycombinator.com/item?id=8660233 https://news.ycombinator.com/item?id=8660233 — but yep, native apps are definitely on the way. Still playing around with the site, I'll set aside some time to dig into readability issues (I was noticing the same effect at certain parts of the video).
- upperechelon 12y agoYeah... this is a really dangerous and fundamentally flawed idea. Anyone with a basic grasp of cryptography will realize how obviously broken this is: 1. It uses JS encryption, which is essentially useless as you could modify it any time to intercept the messages. 2. You claim to be using 'OTR' but there is no key verification, which means it is trivial to intercept. Therefore there is no point at all to using OTR. In addition the point of OTR is to prevent server operators from intercepting communications, which you are still able to do. 3. You've rolled your own crypto library, which hasn't been audited and isn't even known to work correctly or interoperate (i.e: with XMPP OTR clients) with verified implementations. 4. You're using cloudflare which means cloudflare also holds a copy of your TLS key, which means they could also intercept the messages. If you get hacked, if your TLS key gets broken or if one of your employees wakes up on the wrong side of the bed, it's game over. In a nutshell, this is marginally more secure than logging into facebook or gmail over HTTPS and sending each other. In fact in some aspects it's probably less secure because Facebook or Google have strong security teams to monitor intrusions into their servers.
- buu700 12y agoSorry about the confusion; should have some details up on the site soon! 1 and 2) See https://news.ycombinator.com/item?id=8660233 https://news.ycombinator.com/item?id=8660233 — acknowledged that it's not perfect or 100% trustless yet, but we have some ideas to address that in the future, and for now it's still better than nothing (which is important in cases where you'd have otherwise used nothing). 3) We haven't rolled our own crypto. We're using the JS OTR implementation recommended by cypherpunks.ca (which hasn't been formally audited as far as I know, but is understood to be pretty good). 4) Not using CloudFlare for SSL or CDN, only for DNS management. Our CA is DigiCert (same CA as Facebook and GitHub) and we're running on Google App Engine; it'd be a pretty big deal if either one of those were hacked.
- upperechelon 12y ago1. This is not about being perfect, this is about being trustworthy or secure. Right now this is very dangerous to be promoting as even remotely private, as you claim on both your website and twitter. This is no more secure than chatting over facebook. There is no 'clever solution' to get around crypto in the browser, it's always bad. 2. There is absolutely no point to using end-to-end crypto in this setup because it can all be intercepted. Not to mention there is no key verification, so even if you're JS wasn't interceptable it's still trivial to intercept messages. It's a red herring at best and at worst deceptive . 3. I stand corrected, although JS (regardless of whether it's in the browser or not) is usually considered terrible for crypto implementations because of it's math bugs. 4. You might want to check yourself, https://www.ssllabs.com/ssltest/analyze.html?d=www.cyph.com&s=104.28.19.46 https://www.ssllabs.com/ssltest/analyze.html?d=www.cyph.com&... you're pointed to cloudflare's SNI server. I think what you fail to understand is you're relying entirely on TLS for all of your security, which means a LOT of different people are able to read these messages. It's not just your CA that could be compromised to hack you, its ANY CA. So for example the chinese government decides they want to read everyone's messages, all they need to do is publish a cert with your domain. Or any of your staff. Or anyone at cloudflare. Or anyone with access to your server. Or access to your home computers which have login credentials.
- pepon 12y agoI don't now how secure this is, but the look&feel of the site is awesome. If you happen to fail in this project, I encourage you to try another one, since you clearly have talent to make really cool web apps.
- buu700 12y agolol, thanks! We're definitely trying to make Cyph the dopest chat app out there ("dopest encrypted chat" just doesn't sound like a terribly high bar to me).
- weitzj 12y agoI would like to share the link on an iPad. But I guess you were too smart. When I tap on the link to select and copy it, some JS code autoselects the whole link. This is a nice idea and should save me some work. But the copy mode on the ipad breaks. So I cannot copy the link and share it.
- buu700 12y agoWell that sucks; thanks for letting us know! Chrome and Android have definitely gotten the most attention so far, though this is the first I'd heard of iOS having issues with that. I had run into a similar issue on Windows Phone (and successfully fixed it), but I'll have to revisit iOS. As a temporary workaround, does it work when you try a second time? On mobile it should stop trying to grab the link for you after the first time.
- mey 12y agohttps://www.cyph.com/privacypolicy https://www.cyph.com/privacypolicy Your second to last bullet point is not really possible.
- buu700 12y agoIgnoring the semantics of the phrasing (that's just a temporary placeholder), the intent is to say that we won't ever willfully send a decrypted copy of our users' encrypted data to our servers.
- mey 12y agoA court order is a simple thing, are you implying that the operators of the site are willing to go to jail for denying a legitimate order on a free service?
- srean 12y agoCould the designers indicate what would be the class of entities that this is supposed to protect my chats from ? the guy on the same wifi ? isp ? routers on the way ? govt entities ? In a number of threads it was claimed that this is better than nothing or better than https, could you (all) elaborate on why that would be so. If I am just locking one door of my car leaving the rest open, I sure would like to know and at the moment this is what it sounds like but I am quite the ignoramus so please correct my misapprehensions. EDIT @buu700 Thanks for replying.
- buu700 12y agoSure, we can clarify that on the site. (Thanks for the feedback! It's become pretty clear that our supporting content/documentation needs a lot of work.) The intent isn't to protect from certain classes of entities, so much as to absolutely protect with a certain degree of confidence. That is to say, Cyph is a convenient tool that probably keeps your secrets from, say, China; but if you're in a life and death situation you should consider carefully whether you have better options. That being said, now that I think about it, there isn't an obviously better alternative in such a circumstance that I could recommend. Pidgin OTR is probably what I would have chosen a few years ago, and for now it's maybe still what I'd pick, but based on what I've been seeing in the OTR mailing lists and the Vice article I linked in another comment, it's really not a great option. TextSecure might be a good alternative if using it on a phone isn't too big a problem. There's always tried and true PGP, though where applicable the OTR protocol has much more interesting security properties IMO. tl;dr: There's really no silver bullet, but Cyph has as good a chance as just about any alternative of protecting your secrets. I wouldn't stake my life on it quite yet, but I wouldn't stake my life on any existing alternative either. If things go as planned and we execute well on the next steps, it shouldn't be too long before I'd consider Cyph strictly better than any alternative.