brenty (toromei) wrote:
Yubikey is an excellent complement to a memorized password for multifactor authentication, but in most cases it isn't usable for strictly local validation. The strength of Yubikey is that -- due to its non-local validation -- the database is not vulnerable to a local brute-force attack. The host machine sends a query to a remote database validation server, and simply gets a response as to whether the OTP is valid or not. In order to validate without a remote connection, the database would have to be stored locally. To my mind, this would not be unlike the CSS keysets for decrypting DVD content being stored in the players in all of our living rooms in order to decode video for playback: given enough time and determination, anyone with direct access to secure data can break it.
The hard part would be supporting iOS devices with YubiKey. We don't just make software for OS X, you know.
Multi-factor authentication is already present in the mobile apps by the very fact that they run on "something you have."
Thanks for the very kind words, getraf, and welcome to both you and Slobodan for joining our forums! We appreciate knowing that the posters on this thread each see some value in this approach.
We're keeping an open mind, but just to set the proper expectations: this is not something that's being actively worked on at this time. As Khad said, stay tuned to our normal announcement channels should there be any developments (hehe) in this area.
I would really love a feature whereby whilst my USB "key" (don't really care what kind) is inserted in my Mac/PC/whatever that 1password could be configured to remain unlocked while it was there (or at least allow me to set an extended unlock period if the key was present). On removal, lock 1Password. This would be SOOOOOOO great and save me having to enter my absolutely massively overly complex 1password password multiple times a day.
Love your product and recommend it on almost a daily basis - where's my free lunch
Hi Glenn (@ContinuIT)
Thanks for the kind words and support! I've merged your request with an already existing discussion. It hasn't seen a lot of action lately, but our developers are certainly keeping this idea on their radar.
Please do keep in mind that as Jeff mentioned above (way back in August 2011) for MFA to work it would need to be required on all platforms. A USB key gets a lot trickier on mobile devices.
If like to add my voice to those requesting yubikey support. I love 1password and everyone at AB. I recommend 1P to everyone and everywhere, but recently our company decided on another solution (rhymes with fastpass ) because it supported physical tokens and that was a requirement.
I totally understand the issues around 1password and a physical token, especially with mobiles, but having support for it would make the product a better contender.
Keep up the great work, you all rock!
Thanks for your kind words and support, @root!
Multistep authentication has clear and obvious security benefits. So it is more than natural for people to ask why 1Password doesn’t employ it. We're planning to write a more detailed explanation of our developing thoughts on it, but let's discuss the difference between authentication and decryption.
When you connect to some service, like Dropbox, you or your system has to prove that it really has the rights to log in as you. That process is called “authentication”. It is the process of proving to the Dropbox servers in this case that you are really you. You can do this through a username and password; you can do this through a username, password, and code sent to your phone; you can do this by having a particular “token” stored on your computer. Authentication always involves (at least) two parties talking to each other. One party (the client) is under your control; the other (the server) is under someone else’s control.
1Password, however, involves the 1Password application (under your control) talking to your 1Password data (under your control) on your local disk (again, under your control). This is not an authentication process. So 1Password doesn’t even do one-step authentication. It does no authentication at all. 1Password doesn’t gain its security through an authentication process. Instead the security is through encryption. Your data on your disk is encrypted. To decrypt it you need your 1Password master password.
There are great advantages to this design: Your data and your decryption of it doesn’t require our participation in any way once you have 1Password. Your data is yours. Even if AgileBits were to get abducted by aliens tomorrow, you would still have access to your data since we never store it on our servers.
However, one disadvantage of this design is that the kinds of techniques used for multi-step authentication are entirely inapplicable to 1Password. Those techniques are designed to add requirements to an authentication process, but unlocking your 1Password data is not an authentication process at all. Because there is no 1Password "server", there are no (additional) steps we can insist on as part of a (non-existent) login process.
1Password is decrypting data stored locally on your system, it is not authenticating against some service. So in truth, we don't even have 1 factor authentication, as there is no authentication in the first place. So typical approaches to MFA won’t work.
However that doesn't mean that it is impossible for us to do something that looks like MFA. There are roughly two approaches (each simpler than PKI). One of them is key splitting. That is the result of processing your Master Password doesn't actually get you a working key to decrypt further, instead that result would need to be XORed with another 128-bit key. So it is simply a case of storing that other "half" of the key on some other device. 1Password would need to be able to read that device, which may be tricky on iOS, but it isn't insoluble.
The other approach would be to move the keyfile. 1Password (on the desktop) has a file called encryptionKey.js. That file contains an encrypted key, which is what gets decrypted by the key derived from your master password. That file (and some backups of it) are part of your 1Password.agilekeychian (which is actually a folder bundle, which looks like a single file on the Mac). It would be possible for us to allow that file (and its backups) to reside on some device or location. Both that file and the Master Password are required to get any further.
We are more inclined to do key splitting rather than having a movable keyfile.
The real technical difficulty is getting this to work on every platform. Again, because this is all about data decryption and not authentication, we can't just implement this on one platform (if it were to be anything other than just for show). So while this isn't insurmountable it means that even the "simple" approaches that I described would be tricky.
But the real reasons that we haven't put in substantial effort in that direction is because for every case where someone reports that their computer or device has been stolen, we get probably a hundred more of "I forgot my Master Password" or "I damaged my data and didn't have usable backups". My fear is that key splitting or keyfile moving wouldn't just double the rate of people getting locked out, but would increase it much more. The threat of data lose becomes very substantial.
Again, because we aren't running a system that people authenticate against, there is nothing we can do the help people recover their data if they damage a key or forget their Master Passwords.
Now of course we could make it an advanced option with lots of warnings, but we know that people will always dial up security settings to 11 whether it is in their interest or not. Remember that 1Password is a mass market product. It's great that security geeks use and respect it, but we don't want to give our users rope to hang themselves with.
I'm just spelling out why, to date, we have resisted calls for MFA. It's harder to get right for a decryption system than for an authentication system, and we think that it might do more harm than good.
None of this is written in stone. The threat landscape, patterns of usage, and device capabilities change. So while there are no immediate plans add this, we are leaving the door open in the design of our new data format.
You are using the wrong terminology. Authentication is about verifying that you are who say you are. Authorisation is about being granted access to data you are allowed to access. While 1Password doesn't do authentication, it does do authorisation. It grants you access to your datastore via a password. Since the datastore is also encrypted it does another thing: decrypt it so you can read and write. For this discussion the decryption part is irrelevant.
The problem with 1Password is that there is only 1 layer of security: a password. Those can be weak. People here want to use something like a YubiKey or whatever to add an additional layer of security. The password for the datastore alone isn't enough, it requires the correct response to some kind of challenge code. There are quite some reasons to do it this way (device gets stolen, somebody is using your account to do some work, pull up a website; setting a different password for 1Password than for your user account for the computer helps in the latter but it doesn't take away the concerns in the former scenario).
The real question is: how can 1Password be made more secure by adding some an additional security layer without breaking usability too much? And the answer to that could simply be "we are not going to because it is not our intent to be a full fledged max security product, we only want to make it easier to manage your passwords for the forums you visit". You could also be a lot more vocal about people setting up strong passwords (you guys did that via your blog in the past but it is too techy for the masses). Until then, 1Password isn't a professional/high end security product and should not be treated as such (you may have to ask yourself the question if you should use it to store things like bank and creditcard accounts).