Client-Side Encryption: The Right Security Model for the Cloud
blog.balboa.io
blog.balboa.io
Not really a new idea, I don't think, but not one that gets surfaced much when people talk about client-side crypto.
https://css.csail.mit.edu/mylar/
https://css.csail.mit.edu/cryptdb/
Microsoft also released a homomorphic encryption project for bioinformatics last week:
http://research.microsoft.com/apps/pubs/default.aspx?id=2584...
(https://developer.chrome.com/native-client vs. http://nacl.cr.yp.to)
It would likely be safer than hamfisted attempts at JS cryptography which can be compromised down the wire.
Unfortunately so far things are moving in the opposite direction. After Chrome dropped Java support it appears there's no cross-browser way to do reasonably reliable crypto right now.
2. client certificate distribution is still a mess. At a minimum, there should be a standard way for servers to generate certificates and install them in the browser (with user visibility but without requiring user interaction).
2) You mean something like keygen[1]? (yes, I know it was removed from the standard.)
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ke... (
2) Exactly. I don't follow the standard process these days, but it's sad that we're not really making any progress in such a critical area. We now have pretty progress bars, but we're still as vulnerable as 20 years ago.
...and now a brief word from our corporate sponsors...
Haha, not really :) I'm just trying to get the thing that I've been working on "out there". It's an operating system that runs in a web browser. How's that for client-side awesomeness? The current project I'm hawking is called "The Native Client Proving Ground", in order to get people to see the inherent awesomeness of running arbitrary computational logic on the client. So yeah, encryption is definitely do-able, though not extremely interesting IMO.
I posted this here a couple days ago, and actually got it onto the front page for a brief minute. So fire up your Chrome browsers and check out the infinite potential that exists on the client-side: https://nacl-pg.appspot.com/desk?intro=the-shaker
If you didn't know, Native Client (NaCl) is the plugin architecture for Chrome so you can run arbitrary C/C++ code inside of a sandboxed runtime.
Join the revolution!
And for that matter, will you be at Chrome Dev Summit tomorrow?
https://github.com/ereyes01/cryptohelper
As far as the secure part, I'd appreciate eyes on the code (which there isn't a whole lot of) to verify this works well. This library could also possibly be enhanced to support other encryption methods, such as AES. An easy interface with sensible defaults to Go's AES interfaces would be nice.
Imagine a client-side-encrypted version of google docs that always encrypts your document before sending it back to the google servers. Any time you visit the site google could send you a modified version of the site javascript (possibly at the request of security services) that just uploads the document without encrypting it first. Browsers currently have no way to prevent that or even notifying you that it's happening.
If you want to do client side crypto you need to do it in native apps. The web is just too technically limited to support building platforms on top of it that have different trust models.
The project I am working on aims to facilitate these kinds of apps. It is a native app which have both a CLI interface and (used to before I broke it) an HTTP interface. The idea is that websites gets proxied through the app. All data gets stripped out and encrypted before being sent anywhere.
Websites must be aware that this is going to happen for them to work. Unaware sites won't work. All or nothing.
The project site is https://www.selectiveshare.com. I am currently working on a second project which uses the CLI interface. The HTTP interface will remain broken for some time.