I see that some projects like KeepassXC use CR based OTP to provide some additional security. While this is discussed quite controversial my opinion is that - for quite some cases (e.g. most non-targeted attacks as of today) - it can provide additional security over having "only" a secure master password.

However: if at one point in time the attacker has access to both, the response and the version of the data encrypted with it, then obviously this adds no additional security to the encryption. So, for targeted attacks or speciallized tools any local OTP method I could find (CR based or certificate based) add no additional security. They all share the same design-flaw: if an attacker has access to all local data (including memory) at some point in time it's not much better then a simple secure master password. It only rises the attack complexity a bit.

I wonder if there are things in the works to eliminate this last ("design-wise") attack surface so even if a system is completely compromised we can rely on physical dongles like Yubikey to protect the most sensitive data and have features like physical presence dection for actual encryption (not only authentication) at hand.

Obviously I make alot of assumtions here e.g.: that the transport between the hardware dongle and the CPU as well as any memory in between is "secure". But that's not my question.

So, just out of interest: are there any projects that aim for such things? E.g. by implementing asymetric encryption for local files where the encryption and decryption is completely offloaded to a plug-and-play hw dongle like Yubikey, possibly even using a OTP derived from the private key on the dongle?

Are there other methods / areas of research that discuss this topic or even working solutions?

  • One-Time Passwords are dynamic by nature, while data encryption is static by nature. It is impossible, by design, to use a one-time password for data encryption.
    – MechMK1
    Oct 9 '19 at 14:17
  • That's true. But it's completely possible to change the static key with every access to the encrypted data, effectivly resulting in an "OTP" for static encryption. The generation can follow a challenge-response pattern so different devices that hold the master-key can generate the encryption-key based on the challenge. The master-key can then be protected by e.g. a cryptographic hardware device that provides a well defined interface for the CR mechanism. That's what I outlined when I mentioned the "OTP" implementation of KeepassXC.
    – omni
    Oct 12 '19 at 10:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.