Documentation · Markdown source · Edit on GitHub · CC0 1.0

VRP Threat Model (v0.1)

A short, STRIDE-oriented threat model for the core Vacation Rental Protocol. It covers the four things that decide whether an AI agent can trust a stay offer:

  1. Ed25519 signing of verified stay offers,
  2. the JWKS that publishes the verification keys,
  3. host-domain control as the source of truth, and
  4. what happens when a host signing key is compromised.

It does not model OTA, marketplace, ranking, or payment-processor scenarios — VRP has none of those (see ADR 0002). The normative rules referenced here live in spec §3–§9; this document only makes the trust boundaries and attacker goals explicit.

Trust root

The root of trust is domain control (did:web): a VRP node's signing keys are whatever the host-owned domain serves at its JWKS. There is no central issuer, registry, or accreditation authority to appeal to. Consequently:

Assets

AssetWhy it matters
Host private signing keyWhoever holds it can mint offers that verify as official.
JWKS (/.well-known/jwks.json)The *only* revocation authority — a key is valid exactly while it is present here.
Discovery document (/.well-known/vacation-rental.json)Points agents at the JWKS and the offer endpoint.
Signed stay offerCarries the quoteable facts (price, availability, valid_until, booking URL).

Actors

STRIDE

Spoofing — "pretend to be the host"

Tampering — "change price, dates, or the booking URL"

Repudiation — "deny having offered these terms"

Information disclosure — "leak the key or private data"

Denial of service — "make verification fail or flood the node"

Elevation of privilege — "get a bad offer treated as official"

Central scenario: compromised host key

An attacker who steals the private signing key (but does not control the domain) can mint fresh, well-formed offers with a future valid_until — so freshness alone does not stop them. The only thing that de-trusts them is the key being absent from the JWKS the verifier holds. This drives two protocol controls:

Handling is detailed in KEY_ROTATION.md and INCIDENT_RESPONSE.md.

Explicitly out of scope