Skip to content

Signed challenge for /api/identity, once Provider signs its responses #354

Description

@jorgecuesta

Follow-up to #337, which is explicit that the endpoint is not proof of possession.

GET /api/identity echoes the compressed public key derived from APP_IDENTITY. Governance CI compares it against the identity declared in the registry PR, which catches a registry entry pointing at an instance running a different key, or at nothing at all. It cannot catch impersonation: the value is already published in the registry, so a static file or a proxy to another operator's instance satisfies the check equally well.

Proving possession needs the instance to sign something the caller chooses. The Provider does not sign anything with APP_IDENTITY today — it only derives a public key from it — so this waits on the Provider gaining a signing path in general. When it does:

  • accept a caller-supplied nonce, return a signature over a domain-prefixed payload (e.g. igniter-identity-attestation:<nonce>), and let CI verify it with the existing verifySignature;
  • keep the domain prefix so a public endpoint can never be used to sign arbitrary payloads;
  • the current response shape does not have to change to add this.

Note that APP_IDENTITY is documented as a key that must hold no funds, which is what makes a signing endpoint acceptable in the first place.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions