-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decryption on foreign computer #7
Comments
Wife's computer or a more of your computers should be fairly easy, just grab Dropbox or any similar service, since the unencrypted data are never committed to the filsystem. Unless I can't read source code that is. Library computer is worse. I like your idea in general though I'm not sure how good would AES in javascript be. It also seems kind of redundant -- you are already using SSL to protect yourself from network sniffing (and you presumably have your server's fingerprint on a paper with you). It makes sense however if you really don't want to have both data and key on any computer for a long time. Another way would be to use one time passwords -- generate asymmetrically encrypted data and use OTP to acces it (through SSL and http-basic) and when you session is done, press a button that makes the switch to the next OTP. That requires the remote computer to have the data in plain however. |
The idea of doing part of the decryption on the server (AES) is that it should defeat any browser caching / logging. It it's just in HTML the browser might write the page to the disk - browsers cache HTTPS content just like HTTP content. I love the idea of one-time passwords. Maybe a combination of a passphrase and a one-time PIN code. "Web-based methods" here looks possible: http://en.wikipedia.org/wiki/One-time_password#Web-based_methods |
cherokee admin is using onetime password to secure the admin. as the side note there is a gpg an attempt to write GPG client in in On Fri, Mar 30, 2012 at 7:31 PM, Graham King <
|
Another option is, at the web cafe, download putty.exe, ssh to your server, and just run kip (with --print option) there. (some time later, having though about it)... but then the web cafe (which we assume is running a key logger) has your ssh password. Double plus bad. |
Some thoughts:
|
It sounds like javascript encryption doesn't add much security over SSL, like wrb mentioned. See Javascript Cryptography Considered Harmful. We can set headers to ask the browser not to cache the page. Interesting discussion about key loggers at security.stackexchange.com. In short if you can't trust the client (web cafe machine), you shouldn't log in. That said, there seems to be two ways to have secure login from an untrusted computer:
Unless we can come up with an elegant way of making one-time passwords, I think we should drop the requirement to be secure on an insecure client (web cafe), and focus on allowing access on a trusted machine (wife's laptop, friends house) which doesn't have kip / gpg on it. That's a much simpler scenario. As long as we're over SSL, we can ask for the secret key's passphrase. GPG allows you to change your passphrase without changing your secret key, the passphrase just encrypts your secret key. |
Pull request in #11 |
I would like to address the "wife's laptop" problem: I'm not at my computer, I'm at my wife's laptop, or at a library computer, or on a friends iPad, and I need my password.
Things that probably won't work
This only works if I can get to the USB port of the machine. At my library the computer might be locked down. My iPad does not have a USB port.
Idea
I think using HTTP / a browser is the simplest and most widely available interface.
We should definitely use SSL, although we can probably leave that for external tools, such as stunnel (or any SSL and proxy capable web server).
We could decrypt everything server-side before you go travelling, and re-encrypt it with a "disposable" symmetric cipher, which also has a JS implementation, such as AES.
We add a
kip server
command which waits for a glob as the url path, and sends you the AES encrypted file, along with some JS. On the client the JS asks you for the passphrase and decrypts the file.We can also use HTTP basic-auth to discourage people more.
Once you get back home you stop the
kip server
and delete the symmetric files. You're only at risk during your travels.I would probably forget to do this before I leave, so setup must be simple enough that I can talk a friend through it on the phone ("Turn on my computer and type
ssh remote_machine
, now typekip server
, ok enter this as the passphrase, that's it thanks!")I think using SSL will protect us from network caches, and doing decryption in JS will protect us from the browser's cache.
This requires you to have an Internet visible server you can run stuff on.
What if there is a key logger on the machine I'm using?
Once we have a basic plan I can ask for feedback on a crypto forum.
@yml, @sethtrain, @WRB What do you think?
The text was updated successfully, but these errors were encountered: