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.
org.kya-os/proof.v1 · no session, no handshakeCapture 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.
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.