6 ms·
4) So they can redirect all users to a non-HTTPS site. That's interesting. What youre saying is ridiculous, it's nothing to do with "completely" trustless, you
by upperechelon 12y ago
4) So they can redirect all users to a non-HTTPS site. That's interesting.
What youre saying is ridiculous, it's nothing to do with "completely" trustless, you're not trustworthy at all. The "we promise we wont serve malicious code" is the same securi
Basically your users have to trust:
-You
-Your staff
-Cloudflare
-Google
-Any computer used to design, build or login to your web app
-Anyone with access to any of these computers
-Every single CA in existence (including the US and Chinese government)
-Anyone with resources to spoof a CA SHA-1 signature (anyone with ~$700,000 [0])
-The authors of the JS OTR library and any other code you use
Do you see the problem here? There are literally millions of people in your trust chain.
Libpurple sucks, but browsers are the #1 target for exploit writers, not to mention the HUGE attack surface they pose. There are just so many angles of attack for your service. Anything hosted on a shared server is not secure. The word cloud and security should not be in the same sentence. No offense, but you guys really do not seem like cryptography experts and there are so many pitfalls here that I would not recommend trying to promote this until you completely re-design everything.
As far as WebCrypto.. I'm just going to leave this here:
http://tonyarcieri.com/whats-wrong-with-webcrypto http://tonyarcieri.com/whats-wrong-with-webcrypto
http://matasano.com/articles/javascript-cryptography/ http://matasano.com/articles/javascript-cryptography/
[0] https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html https://www.schneier.com/blog/archives/2012/10/when_will_we_...
- williamcotton 12y agoOh, so an argument to authority? First off, that Matasano article was written before the Web Crypto API and is out of date. Second, Tony's article does make a good point... can you trust that the web site is going to be serving up code that won't spy on you? Well, can you trust that ANY code on any platform won't spy on you? People offer that Javascript doesn't have code-signing. Well, that's fucking bullshit. All that needs to happen is someone needs to just, sign all the checksums of the code served to the browser and publish it somewhere. You can then have a third-party site verify that the code is still what it says it is. Personally, I use this pattern internally. I run my server-side APIs on a different host than my static front-end code. My server-side API then checksums the front-end code and makes sure it is legit before proceeding in certain situations. Your arguments are weak and out of date.
- schoen 12y agoI tried to submit an "Ask HN" item (motivated by this debate today) about what kinds of tools and best practices there are for doing this, but it didn't get voted onto the front page. I'm concerned about the "third-party site verify that the code is still what it says it is" if an important part of the threat model is that an attack would be deployed against only some users, not all. How can the third-party site tell if the site is attacking an individual user? How can the individual user compare the version of the web app they received with the version that the third-party server thinks is appropriate or current? I don't mean to dismiss this goal, because I really want infrastructure like this to work and become ubiquitous, I just think it might require a slightly more elaborate architecture with the addition of some kind of client-side component, if you're including the original developer in your threat model, and not just someone compromising the servers that host someone's copy of jQuery and giving everyone a backdoored copy.
- williamcotton 12y agoLet's talk about targeting specific users in the scenario where you've kept your server-side API separate from your static front-end code. The compromised front-end code server would need to know that specific users host and client in order to target a specific user. Users are logging in to the server-side API. They all get the same front-end code. If a third party site tested from a variety of hosts using a variety of spoofed client information it would be very probable for it to detect code that targeted broader user fingerprints. You're right in that this wouldn't protect against targeted individuals. But neither does an executive order from the state. Web applications are an orchestration of two separate pieces of software that can work together using multi-factor authorization and signature schemes to offer a substantial amount of enhanced security when client-side crypto is properly utilized.
- schoen 12y agoIn this threat model it seems unreasonable to me to rely on a particular front-end/back-end separation architecture as a main thing that protects users. If the two are not separated this way, or the back-end can cause redirects or can inject Javascript at all, the users won't be protected. I like the "test from a variety of hosts" approach better, and I wonder what kinds of tools exist or will exist that will facilitate this -- and whether some web app developers are willing to commit that their architectures will support it (that the front-end code doesn't do an eval, that the front-end actually architecturally treats the back-end as untrusted, and that users can expect to get consistent page contents every time they visit the service, even with a different user-agent or from a different netblock). I'm not trying to make fun; I want to see this happen. It seems like a big change from existing practice!
- williamcotton 12y agoExplain to me the trust chain of a crypto messaging app that you DO think is safe and secure. Seriously, pick one, let's talk about it. Let's compare and contrast. Or would you prefer to parrot the same tired old arguments that pop up on the HN comments every time the concepts "web browser" and "cryptography" are used together?
- chpp 12y agoThinking about the answer to this hurts my brain. Ultimately, with the amount of money and resources available to the "bad guys", I can't imagine something as truly uncrackable. But I am just a lowely infrastructure guy that builds VPNs, lots of smart folks out there :)
- williamcotton 12y agoHere, I'll speed it up for you with this conclusion: Unless people are downloading from source, verifying signed checksums, and building their crypto applications from source they are just as susceptible to any of the issues that browser crypto is. Prebuilt executable? Can't be trusted. A modified version could have been substituted at download time for a particular user. Web site where signed checksums are published? Can't be trusted. It could have been hacked or altered. Checksum embedded in executable which checks itself at run time? Can't be done. Trust is the issue. Trust NEVER goes away. The only way to know for sure is if you compile all your own code. But wait, remember Ken Thompson on Trusting Trust? You had better be building your own compilers as well... So basically you're saying that no one but computer experts who build their entire toolchain from scratch should be using any sort of application that uses cryptography.
- schoen 12y agoThose problems are quite serious. A positive step is that they've been increasingly recognized as serious by people who develop and publish software, so there are significant transparency efforts underway now to try to make it possible to meaningfully tell where software came from, whether it corresponds to published code, and whether it's the same thing everybody else is using. (Along with Mike Perry from the Tor Project, I gave a talk about some of these issues at Mozilla recently, which was pretty well-received. Tor has been very interested in making sure that compromises of their infrastructure won't compromise the software their users get, and that the developers can't be coerced into giving users backdoored versions; see Perry's "Deterministic Builds Part One: Cyberwar and Global Compromise", for example.) To look at this from another angle, all of these issues are terrible gaps in software security, and terribly exciting opportunities for people to add backdoors (maybe more likely bugdoors), but now we have some tools and ideas that can start to address them!