KDBX Standard Discussion #6229
Replies: 124 comments 118 replies
-
Looping in @keepassium @mmcguill @PhilippC |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
-
Correct, I am trying to avoid implementing a multitude of "minor" interim solutions. That creates significant code bloat with exceptions and workarounds depending on which version of the standard you are on. The myriad of plugins made for KeePass over the years demonstrates why this is not a good thing. They all made their own unique standards. |
Beta Was this translation helpful? Give feedback.
-
Example from Enpass for tags : Here they are user defined and the developers from Enpass using a pre defined “Apple Watch” Tag to display all entries on the watch which get tagged with this . In my eyes “pinning” should be in the standard and tags only for special things a developer decide |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
This comment has been hidden.
-
KeePassDX, the alternative KeePass client for Android, recently added multiple URL formats that are incompatible with Keepass2Android. The app uses Given the popularity of Keepass2Android, it's reasonable for KeePassXC to support its vendor prefix at this time, but I'd like to see this feature standardized with a common prefix in the future. |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
-
In line with KeePassXC's usage, Strongbox will also start using the property "KnownBad" to mark items that are to be excluded from Audit/Health Reports. Currently Strongbox stores this data outside of the database. Unless there are objections, I think it's best just to use the existing KeePassXC convention: Entry Custom Data ["KnownBad"] = true (standard boolean) Usually these are items like 4 digit PIN codes (which are detected as weak) which users have no choice but to use... etc |
Beta Was this translation helpful? Give feedback.
-
One more thing I would like to propose here is deprecating entries in the root group. I know that some users store information there, but it leads to a (visually) unnecessarily complex group tree. If we could instead just skip the root group, we could render the first-level folders as a simple flat list. If someone still wants to put all their passwords into one big "catch-all" group, they can easily create a second-level "root" group and it will look the same. |
Beta Was this translation helpful? Give feedback.
-
Graph instead of tree structure (one item can belong to multiple groups, makes tagging somewhat redundant) Currently, entries can be organized using the group tree and tags. The group tree allows to organize entries hierarchically, whereas tags allow to mark certain entries independent of a hierarchy. Both the group tree and tags have unique advantages and disadvantages; they complement each other. Combining a tree with tags is a common approach (e.g. most e-mail programs store e-mails in folders and allow to assign tags, Firefox organizes bookmarks in folders and allows to assign tags, ...). Allowing an entry to have multiple parent groups would induce problems. When an entry/group has at most one parent group, properties can be inherited (e.g. an entry/group inherits the 'Searching entries in this group' setting and the default auto-type sequence of its parent group). If an entry/group could have multiple parent groups, it would be unclear from which parent group a certain property is inherited. One could allow users to specify a primary parent group for each entry, but this would be hard to manage for users (and the primary parent groups would form a tree again). Furthermore, the behavior of various operations would become non-obvious (for example, would moving an entry into the recycle bin also remove it from all other groups?). A different extension would be a tag graph/hierarchy, i.e. allowing tags to include other tags. Unfortunately, this could encourage some users to use tags only, by which they'd lose the benefits of inheritable properties (and get other problems). Furthermore, I think that the diameter of the tag graph would be very low for most users and the overtags would not really be useful for an entry search. KeePass already supports searching for multiple tags (e.g. 'A or B') at once; in fact, the search function allows complex queries (e.g. finding entries having the tags 'A or (B and C)'), and such queries can be saved as search profiles (to quickly perform the same search again at a later time). The group tree and tags (and the search function) should be sufficient for most users to organize their entries. As mentioned, the two extension ideas above aren't unproblematic; I currently prefer to not implement them. |
Beta Was this translation helpful? Give feedback.
-
Built-in Quick Unlock Specification I think that a quick unlock feature should be configurable using application settings, not database settings.
|
Beta Was this translation helpful? Give feedback.
-
Hi all. If I understand correctly, XC currently supports various TOTP systems:
If this is correct, as first thing I suggest to actually EXPLAIN it to the users: As end-user, I think the best solution would be use the KDBX system, as, I suppose it's going to be the most common\de facto standard, with whatever wrap-around to manage other stuff and systems. My own experience is quite simple but an effective example: Still, I do believe it's better to be as much as retro\wide-compatible as possible: you never know when you only have access to a Keepass version that doesn't support a non-standard system. So, yeah. Sorry for the wall of text. |
Beta Was this translation helpful? Give feedback.
-
Password Modification Datetime I'm not planning to add a separate field for this. Adding/editing an entry doesn't always coincide with changing a password. For example, consider a user who creates or imports an entry for an account that already exists for a while; the last password change happened before the creation/import of the entry. Another example is a failed attempt to change a password; if the password change time would be updated automatically, it could become incorrect in this scenario. So, a way for manually editing the password change time would be required. In order to have correct times, the user would need to carefully maintain them (when entering/editing a password). Users who don't want to put that much time into maintaining these times would have potentially incorrect times in their database, making them unreliable. One could make saving the time optional (per entry), but there are also problems with this (option turned off for entries where you could need the times, users forgetting to maintain the time when the option is turned on, etc.). In general, most users probably wouldn't want to maintain this manually; they'd like the time to be updated automatically when changing the password of the entry. In this case, the saved password change time is equivalent to the last modification time of the entry or one of its history entries, i.e. it's usually redundant. KeePass supports a column 'Last Password Modification Time (Based on History)' in the main window (activatable in 'View' → 'Configure Columns'), which determines the last password change time based on the last modification times. Of course, when history entries are deleted, the determined password change time may be incorrect, but the default history limits should usually be sufficient. |
Beta Was this translation helpful? Give feedback.
-
Feature Request to consider: Instead of turning on "Auto-Submit" globally and allowing entries to opt-out with "Skip Auto-Submit for this entry", allow auto-submit only on specific entries that "opt-in". If I've misunderstood the purpose of this thread, sorry! |
Beta Was this translation helpful? Give feedback.
-
Is there any documentation, that documents the outcome of the standardization? A document that describes the format? |
Beta Was this translation helpful? Give feedback.
-
Hi all. I would like to know why kdbx format is in xml and not json-scheme. Have you all ever thought about having a kdbx format in json-schema? like as kdbx-samplejson-scheme.json? Why?
What do you think about this idea? |
Beta Was this translation helpful? Give feedback.
-
PasskeysHi all, I thought it might be a good idea to mention/discuss and possibly standardize "Passkeys" within the KeePass world. I was just speaking with Wolfram separately about this and thought this might be the right place to bring it up with the developers of KeePassXC and other clients. We'd love to find a way to support passkeys in Strongbox and it seems there's already sort of a de facto implementation in KeePassXC already (see #8825). This stores (correct me if I'm wrong @varjolintu ) the key pair as a PEM file attachment called "webauthn.pem" with the webauthn generated username in the password field. Without having done any implementation on the Strongbox side yet, this seems fine to me so far... e.g. We could display a list of Passkeys by scanning entries for this attachment name. The purpose of this comment is just so that we're all aware of this de facto implementation and can try to standardize/agree on this convention early rather than individually coming up with our own solutions. Hope that makes sense, passkeys seem like a pretty exciting new development. 😀 |
Beta Was this translation helpful? Give feedback.
-
Disabling AutoFill Suggestion for an EntryHi all, I just wanted to give a heads up about an extension to KeePass format that I'm implementing in Strongbox after some fairly regular requests from users. It is a simple way for a user to specify that they don't want a particular entry "Suggested" to them in AutoFill, for example in the Dropdown suggestions menu in the browser. To do this I'm using a CustomData key/value pair like this:
Where the value is the standard KeePass boolean string "True". Here is what the KeePass XML entry looks like:
It'd be cool if this could be available on other platforms and Apps but I understand it might not make sense for some. Hope that makes sense! Cheers, |
Beta Was this translation helpful? Give feedback.
-
Hi all. I suggest adding Zstandard (RFC 8878) as a compression algorithm, or replacing the existing gzip with this. This was designed to give a compression ratio comparable to that of the gzip format, but faster, especially for decompression. Also, when the compression speed is comparable to gzip, the compression ratio of this is better than gzip. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone, |
Beta Was this translation helpful? Give feedback.
-
@droidmonkey wrote:
So far, I just seen entry-level history; is there any documentation that mentions global history? |
Beta Was this translation helpful? Give feedback.
-
Placeholder for KeePass Database (KDBX) standard discussion. This post will be edited to include a list of features and upgrades we would like to bring to Dominik for consideration in the next KDBX format update.
Must Haves:
Built-in Quick Unlock SpecificationNice To Haves:
Graph instead of tree structure (one item can belong to multiple groups, makes tagging somewhat redundant)Beta Was this translation helpful? Give feedback.
All reactions