Skip to content

Support for SLIP-0022 #113

@danimoh

Description

@danimoh

Hello there,

what do you think about generating credentials following Satoshilab's SLIP-0022?
This is the standard that Trezor devices are using for their Fido2 implementation. I think interoperability between different hardware signers would be great and make a lot of sense, just as interoperability of seed words makes a lot of sense. Deriving credentials from the seed is also in line with your OpenPGP app having switched to deriving keys from the seed.

This would also show a clear way forward for a format that resident passkeys could be exported as, and potentially even stored in on device. SLIP-0022 encodes all information that is needed for recovering a credential into the credential id, in encrypted fashion, which seems like a reasonably elegant solution.

Trezor already supports export and import of passkeys via SLIP-0022, such that passkeys from Trezor could easily be transferred to a Ledger.

I think now that resident keys are not enabled in the Security Key app yet, and thus no such keys exist on user's devices yet, is a reasonable time to still consider switching to SLIP-0022, without the need to handle resident keys in a legacy format in the future. Non resident keys could either continue using the current/legacy format, as for non-resident keys the data format doesn't matter that much, or be switched to SLIP-0022 too.

If non-resident keys would switch standards, it would then require being able to distinguish between both formats. Distinguishing between SLIP-0022 and Ledger's current format is very straight forward though, as SLIP-0022 credential ids start with a fixed 4 byte version string and include an authentication tag. I.e. if the version string matches and the authentication tag can be verified, it's SLIP-0022, otherwise try Ledger's format, and otherwise it's a passkey belonging to a different seed phrase.

What do you think?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions