0084 XLS-84d: Support for ES256 on the P-256 curve in Passkey Signatures #237
intelliot
started this conversation in
XLS Proposals
Replies: 1 comment 1 reply
-
|
Will it be possible to use the P-256 curve with a seed, like you can with secp256k1 and ed25519? |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Abstract
This specification proposes adding support for the COSE algorithms
-7(ECDSA with SHA-256 over P-256) and-8(EdDSA with Ed25519) in passkey signatures on the XRP Ledger. Building upon the foundational passkey support introduced in the Passkey Signature Support Specification, this document details the inclusion of these specific algorithms, ensuring compatibility with widely used and secure cryptographic methods. Possible COSE algorithm values include-7,-8,-35, and-36, but this specification clarifies that algorithms-35(ECDSA with SHA-384) and-36(ECDSA with SHA-512) are not supported by this spec. By supporting only-7and-8, the protocol achieves security and interoperability with common passkey implementations.1. Overview
We propose adding support for COSE cryptographic algorithms
-7and-8for passkey signatures.This feature will require an amendment, tentatively titled
featurePasskeyAlgoSupport.Dependency: This specification depends on the foundational passkey support introduced in the Passkey Signature Support Specification, which outlines the general framework for supporting passkey-generated signatures.
2. On-Ledger Object:
PasskeyListThe
PasskeyListledger object is used to store and manage registered passkey credentials associated with an account.2.1. Fields
LedgerEntryTypestringUInt16PasskeyList).AccountstringAccountIDPasskeyList.CredentialsarrayArray2.1.1.
CredentialsArray ElementsEach element in the
Credentialsarray represents a registered passkey credential:CredentialIDstringBlobPublicKeystringBlobSignCountnumberUInt32AuthenticatorData, used to prevent replay attacks.AlgorithmnumberInt32-7or-8in this spec).Algorithm:-7: ECDSA with SHA-256 over the P-256 curve (secp256r1)-8: EdDSA with Ed25519-35: ECDSA with SHA-384 over the P-384 curve-36: ECDSA with SHA-512 over the P-521 curveSignature Verification Process
The signature verification process for algorithms
-7and-8MUST follow these steps:CredentialIDcorresponds to a registered credential in the account'sPasskeyList.Algorithmassociated with theCredentialIDfrom thePasskeyList. Ensure it is-7or-8. If it is-35or-36, the transaction MUST fail with atemBAD_SIGNATUREerror.ClientDataJSON.AuthenticatorDataand theClientDataHash.Algorithmvalue:-7: ECDSA with SHA-256 over the P-256 curve.-8: EdDSA with Ed25519.Signatureover the concatenated signed data using thePublicKey.challengeinClientDataJSONmatches the transaction hash.SignCountfromAuthenticatorDatais greater than the storedSignCountand update it.6. Security Considerations
-7and-8, and explicitly not supporting-35and-36, the XRP Ledger ensures the use of widely accepted and secure cryptographic methods while avoiding unnecessary complexity.-7and-8enables compatibility with most authenticators.7. Compliance with WebAuthn Specification
-7and-8are supported.AuthenticatorData,ClientDataJSON,CredentialID) for proper verification.Beta Was this translation helpful? Give feedback.
All reactions