Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a Webauthn Passkey Registry Signer #229

Open
nlordell opened this issue Jan 25, 2024 · 0 comments
Open

Implement a Webauthn Passkey Registry Signer #229

nlordell opened this issue Jan 25, 2024 · 0 comments

Comments

@nlordell
Copy link
Collaborator

nlordell commented Jan 25, 2024

Passkeys do not allow credential reuse across relying parties (i.e. Dapps). If a Safe user wants to represent as single device as a Safe owner using passkeys in a way that they can control their Safe from multiple interfaces, this would require either:

  • Adding multiple owners to a Safe. In the context of n of m Safes where n > 1 this has negative security implications as a single device could technically produce more than one signature and cause the ownership policy to not work as intended
  • Use nested Safes, where the child Safe would have multiple WebAuthn signer owners, one for each passkey credential from each relying party. This has compatibility implications with 4337 which does not allow nested Safe structures.

As a work-around, a "passkey registry" Safe owner could be implemented including a mapping(bytes => mapping(address => PublicKey)) where the keys are the credential ID and the Safe account address (which is needed to make this an associated storage access in the context of 4337).

This would allow the following ownership structure:

flowchart TD
    A{Safe} --> B(Web3Auth Owner)
    A --> C{Passkey Registry}
    C -->|app.safe.global| D(Webauthn Owner)
    C -->|cow.swap| E(Webauthn Owner)
    C -->|...| F(Webauthn Owner)
Loading

The expected outcome of this issue is a passkey registry PoC along with test(s) to demonstrate its functionality.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant