Support multiple master key configurations per database #3597
Replies: 15 comments 8 replies
-
This is not how encryption works. |
Beta Was this translation helpful? Give feedback.
-
OMG, I hope you're not treating all your users like this. Let's just say we had a bad start and I'll explain with a different example: When using disk encryption with multiple user accounts you have a single password protected key for each user. This user key is then used to decrypt the disk encryption key from a user specific cipher text so that every user can decrypt the same disk without knowing anything from the other users. This is not a problem of encryption, just a matter of key management. Would it be possible to add such key management to the Keepass DB? |
Beta Was this translation helpful? Give feedback.
-
Ok that makes more sense, you store multiple encrypted versions of the master key with the various credentials. Here is my personal issue with this from a database perspective. If you are able to decrypt with JUST the password, your key file is totally irrelevant and does not provide any additional protection. So just don't use it. Sorry for the blunt response. |
Beta Was this translation helpful? Give feedback.
-
Just be more creative: What about password+Challenge/Response that can be used as alternative to smart card+PIN? Both variants have a similar security level allowing me to use whatever I am carrying with me... |
Beta Was this translation helpful? Give feedback.
-
According to the documentation, KDBX 4 at least has some room to store custum data for plugins. That could be a fit for alternative decryption credentials... |
Beta Was this translation helpful? Give feedback.
-
Where this does lower security (especially if you allow password-only in lieu of Challenge-Response/Key File) it also allows for multiple users of the same database with different passwords (also "dead man switch"). There is some value in supporting this feature, but it would be KeePassXC only supported (not portable) and carries risk that must be communicated to the user. This also complicates the master key setup. |
Beta Was this translation helpful? Give feedback.
-
What's the status of interoperability? Which KDBX features are supported across different implementations? |
Beta Was this translation helpful? Give feedback.
-
We are fully interoperable with KeePass 2.x, all active clones, and several KeePass plugins. The only KeePass KDBX feature we don't support yet is tags. Supporting multiple credentials would certainly be an outlier in that model. |
Beta Was this translation helpful? Give feedback.
-
After storyboarding this for a little bit I came up with a couple gotchas:
This discussion is very similar to the "give the FBI a master key" concept. Having multiple pathways to an encrypted resource ultimately reduces the security of that resource. |
Beta Was this translation helpful? Give feedback.
-
I like this proposal a lot, I think there are use-cases where this would not lower security, but rather improve it. Consider a user who secures the database using only a strong password, rather than a weaker password with a keyfile, such that the database is self-contained and can be unlocked just with the password. If he'd like to automatically unlock the database when logging into/unlocking the computer, he might be tempted to use a simpler, less secure password, since it has to be typed regularly. With the proposed feature, it might be possible to have two variants of accessing the database: with a strong password, or with a weaker password and a keyfile that is present only on the computer with the associated login. |
Beta Was this translation helpful? Give feedback.
-
IMHO, if the primary reason to a tool such as KeepassXC is the user's inability to remember it's passwords, why do believe that he can have better chances at this with the master one? Therefore an alternate authentication feature should be available for the master password to let him have a chance if he needs to. An interesting implementation could for example take advantage of Shamir's secret sharing algorithm in order to securely take account of a subset of user conditions to validate the database opening (the regular master password, the key file or even the yubikey token being some of them). |
Beta Was this translation helpful? Give feedback.
-
It's really a shame that this never went anywhere. LUKS was right to have slots and time has proven that this does not weaken the net security model of the user, especially given that the average user won't use this feature and thus the attack surface remains the same. If someone decides to tackle this, I'd be willing to pay a bounty. |
Beta Was this translation helpful? Give feedback.
-
I would also enjoy this feature a lot. |
Beta Was this translation helpful? Give feedback.
-
I just got a new Yubikey and wanted to set this up:
I was catched by surprised that KeePassXC does not support this and would love to use this feature 👍 |
Beta Was this translation helpful? Give feedback.
-
Adding another use case: |
Beta Was this translation helpful? Give feedback.
-
Summary
When creating (or unlocking) a DB, keepassxc allows specifying what's known as composite key in keypass2, e.g. a master password with a key file. All those credentials seem to be required when unlocking the DB.
Desired Behavior
Ideally, I'd like to use the the key file if it is available. If it is not available, I'd like to use the master password. So the question is whether it is possible to unlock the DB with a single credentials from many possible credentials. Would that be possible or is this already implemented?
Possible Solution
In essence, we're not creating a composite key anymore, instead we're creating a key from each credential which independently unlock the DB.
Context
Think of the way Pluggable Authentication Modules (PAM) can be stacked, combined or used separately, for example.
Beta Was this translation helpful? Give feedback.
All reactions