No Client Identity
Create one to connect to servers
Create Identity

Anatomy of a Per-Request Proof

Every KYA-OS request carries its own stateless holder-of-key proof - no session, no handshake. Step through the v1 model: canonical request, structured-field hash, detached JWS, then verify the server's response proof and try to tamper with it.

Profile org.kya-os/proof.v1 · no session, no handshake
Bind
Prove
Verify
Bind · Step 1

Capture the Request

One JSON-RPC call, one proof. The covered request is { method, params } with params._meta removed - the proof rides _meta, so _meta can never be part of the signed material.

What gets covered

requestHash binds the proof to exactly this operation: { method, params }.

The top-level params._meta member is stripped first (SPEC-ENTITY-CARD §8.3). It carries the proof itself and intermediary-added keys, so hashing it would be circular - and an intermediary may add _meta members without breaking the proof.

Any mutation of method or the other params members invalidates the proof by construction.

RFC 8785

JSON Canonicalization ensures identical data produces identical bytes across any system.

RFC 7515 + RFC 9421

Detached JWS signs the envelope; the request hash travels as an RFC 9421 Content-Digest structured field.

Ed25519

High-performance elliptic curve signatures with compact 64-byte output.

Create identityError decoderJWS Spec