zitadel / zitadel

ZITADEL - Identity infrastructure, simplified for you.
https://zitadel.com
Apache License 2.0
8.2k stars 510 forks source link

Store Webauthn Attestation on registration #4758

Open coelho opened 1 year ago

coelho commented 1 year ago

Description

Zitadel should store the Webauthn Attestation for future audits. Follow up on: https://github.com/zitadel/zitadel/discussions/4429

Acceptance criteria

Future Work

hifabienne commented 1 year ago

Hi @coelho Thanks for creating the issue, we will have a look at it in our next planning and prioritize it.

udf2457 commented 4 months ago

@hifabienne I was doing some research on ZITADEL and using the Yubikey attestation is on my checklist. Has there been any movement on this feature since 2022 ?

hifabienne commented 4 months ago

Hei @udf2457 At the moment there is not progress on this issue. If there is a significant demand from customers/community, we will carefully consider implementing the feature. Currently, the issue is added to our product backlog to collect feedback.

coelho commented 4 months ago

@hifabienne

Hei @udf2457 At the moment there is not progress on this issue. If there is a significant demand from customers/community, we will carefully consider implementing the feature. Currently, the issue is added to our product backlog to collect feedback.

FYI this feature is 2-fold:

  1. Collect the data (tiny scope) (<- this issue)
  2. Use the data (larger scope, but users can already utilize via SQL audits)

When 1. is complete, a customer would have to remove every security key, and have users re-enroll, to collect the data. It is not clear why Zitadel is not already collecting this data, even though it receives it.

We decided to not consider a migration to Zitadel without this feature due to: a. security posture requiring us to use and audit security keys. b. migrating our users, enrolling security keys manually, and then having to do it all over again (when/if this is implemented) to collect and input the data into the ledger.

hifabienne commented 4 months ago

@livio-a @muhlemmer what is your take on this?

udf2457 commented 4 months ago

@hifabienne @coelho Thank you for your detailed reply.

However I should perhaps point out that whilst you may see Passkeys as a suitable alternative, they really are not for security conscious environments.

This is because there is no attestation available with Passkeys, this is (sadly !) by design. This means that:

  1. You have no way of knowing if a Passkey was generated insecurely in software emulation or securely in an enclave
  2. You have no attestation validation options to validate the devices the Passkeys are being used on

This is why Yubikey attestation has a place in the world, because:

  1. Through attestation, you can validate it was securely generated on a Yubikey in non-exfilterable form
  2. If you wish, you can go one level further and verify it was on a specific Yubikey hardware family, or indeed a user-specific Yubikey.

None of that can be done on Passkeys.

Passkeys have their place, but only in low assurance environments. They are not suitable for high assurance environments where you need a high degree of certainty that the user authenticating is the owner of the authenticator and the credential is hardware-bound to prevent impersonation.

coelho commented 4 months ago

@hifabienne By "Security key" in my reply, I mean "YubiKey"/"HSM".