Skip to content

Default relationship communication to pairwise R-DIDs and govern P-DID fallback #241

Description

@stormer78

Surfaced by an external RAHP/DRARM assessment of the Cypress release
(sankarshanmukhopadhyay/rahp-toolkit#18, finding OVTC-RAHP-04). Confirmed as
reported.

Problem

Pairwise relationship identity is opt-in, and the fallback is the persona DID.

  • TUI request form: generate_r_did defaults to false
    (openvtc/src/state_handler/relationship_actions.rs:1056); the user has to
    find and toggle the checkbox on field 3 to get privacy.
  • TUI inbox accept: a accepts without an R-DID, A accepts with one
    (openvtc/src/ui/pages/main/mod.rs:914-930). The convenient key is the
    linkable one.
  • CLI: requires --generate-did (docs/relationships-vrcs.md:60-66), which
    states plainly that without an R-DID, subsequent communication uses the P-DID.

So the safe path is the one the operator has to know to ask for, on a decision
whose consequences are invisible at the moment they make it.

Why this is worse here than the generic pattern

The assessment scores this as stable-identifier correlation. In our case the
stable identifier is a published, resolvable did:webvh that frequently
carries a verified agent name. Two counterparties do not need traffic analysis
to correlate the same persona across contexts — they compare a string, and can
then resolve it to a named identity. The linkage is not merely possible, it is
a lookup.

That argues for flipping the default rather than warning on the fallback.

Proposed change

  1. Default generate_r_did to true on the request form and make the
    R-DID-generating accept the primary key binding in the inbox. Keep the
    P-DID path available, deliberately chosen, and labelled with what it costs.
  2. CLI: make R-DID generation the default and introduce an explicit opt-out
    flag rather than an opt-in one. --generate-did becomes a no-op that warns,
    for one release, so existing scripts do not silently change meaning in the
    other direction.
  3. No silent revert. Once a relationship has an R-DID, subsequent messages
    must not fall back to the P-DID — define the bootstrap-to-pairwise migration
    point and assert it. A fallback that can re-expose the P-DID mid-relationship
    defeats the default.
  4. Test: given two relationships established from the same persona, assert
    that protocol-visible identifiers do not permit the two counterparties to
    correlate them.
  5. Docs: update docs/relationships-vrcs.md — the current text presents the
    R-DID as an optional privacy extra rather than the norm.

Upstream question

Whether VTC should require pairwise identifiers for relationship
communication rather than leaving it to client defaults is a protocol question
for verifiable-trust-infrastructure. If it does, this issue reduces to
conformance. Raising it there separately; this change stands either way.

Acceptance

  • A new relationship request and a new relationship acceptance both mint an
    R-DID with no extra keystroke.
  • Choosing the P-DID path is possible and states the linkability cost at the
    point of choice.
  • A relationship with an R-DID never emits the P-DID on a subsequent message.

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

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions