Kunzisoft / Kunzisoft/KeePassDX

Request for clarification: when using YubiKey's chalresp, are there individual challenges for every stored password?

Open
#2,026 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Kotlin
Stars
7.3k
Forks
403
Avg merge
2d 10h
Merged PRs (30d)
1

Description

As far as I understand how the Challenge-Response-Applet on the YubiKey works is: if you provide the YubiKey with the same challenge, you receive the same response.

I don't know exactly how KeePassDX handles things, but I assume during creation of the database, it concatenates (and probably hashes) the to be entered password and the response to a static challenge (probably randomly generated string stored on Android device? Plaintext? In its hardware wallet / enclave?). At least that's how for example dm-crypt/cryptsetup/luks does it when being used with a YubiKey.

That means: once $entity became aware of the response received from the HSM/YubiKey (assuming the challenge is a static string), the second factor is known and decrypting credentials from this very database does not need the HSM/YubiKey itself anymore.

It obviously could be, that there is its very own challenge generated and saved for every saved password, which would significantly improve things. But I didn't find any information about it.

Documentation/FAQ speaking of "master key" and "Yes, It is currently possible to unlock a database using your Yubikey." suggest, though, that this isn't the case.

Pointers and clarification would be highly appreciated! Respective documentation even more! Thanks! :)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with KeePassDX's YubiKey chalresp handling and the existing documentation/FAQ. Determine whether the challenge is static or individually generated for each stored password, then document how the master key and YubiKey are used and whether the stated security concern applies.

Written by the indexing model from the issue text.

Assessment

Tech stack
android
Domain
authentication, documentation, security
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.