Plain web text offenders: sending my location over HTTP when HTTPS was possible
blog.jgc.org
blog.jgc.org
Good idea.
This app would like to use HTTPS
This app would like to use HTTP
This app would like full internet access
From a security point of the view the app realistically should also pin it's certificate as well - the app developer knows the certificates that the app should expect to prevent Charles proxy working.- This app would like to transmit secured data over the internet.
- This app would like to transmit unsecured data over the internet. Transmitting unsecured data could result in it being intercepted by unauthorized third parties for unintended purposes such as monitoring or tracking of your communications or identity theft. This information could also be used to gain unauthorized access to your devices or accounts.
Of course, even if it is secured... it could still be used for such by anyone who can acquire the private key of the server, then you're pretty much hooped.
I guess ultimately, it just needs to warn the user that data is being communicated with the internet. It's probably being tracked and monitored by someone and probably not for the purpose the user intended. Use with caution.
"This app would like to send data over the internet insecurely."
There would be a nice stampede to get SSL coverage for API endpoints if we called it what it really is.
http://www.cnet.com/news/how-web-mail-providers-leave-door-o... "A survey of top mail providers shows that Google is alone in using strong encryption, known as SMTP-TLS... Facebook, Hotmail, Yahoo Mail, and AOL Mail do not accept incoming e-mail in SMTP-TLS encrypted form..."
I hope things have improved since. (Some enterprising journalist might want to do a followup.)
I don't know off the top of my head if it's possible to package two certs into one, so that one could have a certificate signed by one's own trusted root for one's own API client to trust, and a certificates signed by a CA for web browsers to trust, but that might make folks feel better about using it for an API endpoint: the own-trusted-root might have a different expiration period (risky), or an automatic renewal, or whatever. At the least it'd be self-managed to the point that the technical staff could handle it, rather than having to work through purchasing.
It does make me wonder, though... why don't web servers have options to warn their admins (via logging or email or what-have-you) that the certs they are using are near expiration? Or do they?
Alternatively, some good samaritan could set up a service to scan the known SSL web for near-expired certs and email webmaster@ or other scraped addresses of the issue.
And no, I'm not talking about using geoip information, I mean using data bought through 3rd parties selling location data collected through $yourfreeinstalledapp.
Humble opinion: If someone really wanted to send sensitive information over the internet, they could do better than HTTPS. Moreover, in the event the user is curious what is being sent, doing an experiment like the one here with a proxy becomes unnecessarily more complicated when the app is using HTTPS.
Humble opinion: Anything that makes it more difficult for the user to see what information an app is sending is not in the user's best interests.
Fact: Are there any alternatives to the scheme used by HTTPS for transmitting and receiving sensitive information? en.wikipedia.org/wiki/NaCl_(software) works pretty good and the code can fit in a Tweet. Suprisingly, its use seems to be spreading; unlike SSL, it does not encourage reliance on untrusted commercial third parties such as SSL cert vendors, "secure" content delivery networks, etc.
Fact: Incidentally NaCl compiles without using make. It requires only /bin/sh and (opinion:) the short scripts are easier to edit than makefiles.
CA issued certs are only used in websites, because you don't have a secure channel with which to transmit the pinned cert, but they're redundant for apps.
The word "require" was in quotes for a reason. I have changed the sentence to say "encourage".
In practice many people using SSL do rely on third parties. In my opinion this is where many problems arise.
My opinion is that most people are not aware SSL can be set up without using third parties, and even among those who are, the whole scheme is so cumbersome and error-prone that such persons are content to pay untrusted vendors, or to allow browser authors, to manage their "security".
"... they're redundant for apps."
OK, that's a fair point. My comments on third party vendors are only applicable to websites. My comments on the other problems with OpenSSL apply to both apps and websites.
But NaCl can't be (securely) used on sites at all, so there's no alternative to SSL there anyway.
It is possible.
See curvecp.org/httpcurve.html
If you want a working example, see curveprotect.org
NaCl can only replace the second one, which is a nonsensical idea to propose because it's not an issue (and it's the easier problem to solve anyway)
tinysshd (see tinyssh.org) coupled with curvecpserver is a working example.
Possibly.
- Client makes DNS request to example.com.
- DNS server (we hope the legitimate one) sends IP addr in response.
- Client connects to server IP.
- TLS negotiation including certs.
- Bunch of bytes that look like noise.
- Disconnect.