| Internet-Draft | witnessd Enrollment | February 2026 |
| Condrey | Expires 11 August 2026 | [Page] |
This document specifies a trust anchor bootstrap protocol for the witnessd Proof of Process framework. The protocol defines how new devices enter the witnessd ecosystem, how device keys are provisioned and verified, and how Verifiers discover and validate device trust anchors.¶
Three enrollment modes are defined: self-sovereign mode for individual users, organizational mode for enterprise deployments, and public registry mode for federated trust ecosystems.¶
This note is to be removed before publishing as an RFC.¶
This is a companion document to draft-condrey-rats-pop, which defines the core Proof of Process evidence framework. This document addresses the bootstrapping problem: how do Verifiers know which device keys to trust?¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 11 August 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Proof of Process (PoP) specification [I-D.condrey-rats-pop] defines how Attesters generate Evidence during document authorship. Evidence packets are signed with device keys, but the core specification does not define how these keys are provisioned or how Verifiers establish trust in them.¶
This document addresses the trust anchor bootstrap problem by defining:¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
In self-sovereign mode, users generate their own device keys and manually provide trust anchors to Verifiers they wish to work with. This mode provides maximum privacy but requires out-of-band trust establishment.¶
Workflow:¶
Use cases: Individual authors, privacy-conscious users, testing environments.¶
In organizational mode, device keys are signed by an organization's Certificate Authority (CA). The organization publishes its CA certificate, and Verifiers trust devices whose keys chain to the organization's CA.¶
Workflow:¶
Use cases: Enterprises, academic institutions, publishing houses.¶
Organizations SHOULD publish device trust information at:¶
/.well-known/witnessd-devices¶
This endpoint returns a signed JSON document listing:¶
In public registry mode, devices register with a public discovery service, similar to ACME for TLS certificates. This enables federated trust without requiring prior relationship establishment.¶
Workflow:¶
Use cases: Open ecosystems, cross-organization verification, consumer applications.¶
The device enrollment protocol establishes trust between a new device and the enrollment authority. The protocol uses a challenge-response flow to verify device identity and key possession.¶
Devices initiate enrollment by submitting a request containing:¶
enrollment-request = {
device-public-key: bstr, ; Device's public key (COSE_Key)
user-identifier: tstr, ; Email, domain, or opaque ID
enrollment-mode: mode-type,
? device-attestation: bstr, ; TPM/Secure Enclave attestation
? proof-of-possession: bstr, ; Signature over challenge
nonce: bstr, ; Freshness nonce
timestamp: time
}
mode-type = &(
self-sovereign: 0,
organizational: 1,
public-registry: 2
)
¶
For organizational and public registry modes, the enrollment authority issues a challenge:¶
enrollment-challenge = {
challenge-nonce: bstr,
verification-method: verification-type,
? verification-uri: tstr, ; For email/web verification
expires: time
}
verification-type = &(
email-link: 0,
domain-txt: 1,
organizational-approval: 2,
device-attestation-only: 3
)
enrollment-response = {
challenge-nonce: bstr,
challenge-signature: bstr, ; Signed by device private key
verification-token: tstr, ; From email/domain verification
timestamp: time
}
¶
Upon successful verification, the authority issues a device certificate:¶
device-certificate = {
device-id: bstr, ; Unique device identifier
public-key: bstr, ; COSE_Key
user-identifier: tstr,
issuer: tstr, ; Authority identifier
issued-at: time,
expires-at: time,
? constraints: [* constraint],
signature: bstr ; Authority signature
}
constraint = &(
max-evidence-per-day: uint,
allowed-document-types: [* tstr],
geographic-restriction: tstr
)
¶
Certificates MUST be valid for no more than 1 year. Devices MUST re-enroll before certificate expiration.¶
Verifiers must discover and maintain trust anchors for device certificate validation. This section defines discovery mechanisms and caching policies.¶
Verifiers discover trust anchors through:¶
Verifiers SHOULD cache trust anchors to reduce latency and network load. Caching policies:¶
Verifiers MUST refresh cached trust anchors before expiration. Stale cache entries MUST NOT be used for verification.¶
Trust anchor discovery integrates with revocation checking:¶
Certificate revocation and Evidence revocation are independent. A revoked certificate invalidates all Evidence signed by that device. Evidence may be revoked even if the certificate remains valid.¶
Device keys have a lifecycle from generation through retirement. This section defines key management operations.¶
Devices SHOULD rotate signing keys periodically to limit exposure from potential compromise. Key rotation workflow:¶
key-rotation-notice = {
old-device-id: bstr,
new-device-id: bstr,
old-public-key: bstr,
new-public-key: bstr,
rotation-time: time,
grace-period-end: time,
old-key-signature: bstr, ; Proves control of old key
new-key-signature: bstr ; Proves control of new key
}
¶
Evidence signed during the grace period MAY use either key. After the grace period, only the new key is valid.¶
When users migrate to a new device, Evidence continuity must be maintained. Migration is treated as key rotation with additional verification:¶
Migration without old device access requires stronger verification to prevent unauthorized device takeover.¶
When a device key is compromised:¶
Hardware-backed keys (TPM, Secure Enclave) reduce compromise risk and are RECOMMENDED for high-security deployments.¶
Devices MUST renew certificates before expiration. Renewal may use the existing key (if not compromised) or coincide with key rotation. Renewal workflow:¶
Devices SHOULD initiate renewal at least 7 days before certificate expiration to allow for processing delays.¶
The enrollment protocol considers the following threats:¶
The impact of various compromises:¶
Organizational deployments SHOULD use Hardware Security Modules (HSMs) for CA key protection. Public registries MUST implement multi-party controls for certificate issuance.¶
Implementations MUST:¶
Implementations SHOULD:¶
Device identifiers enable tracking across Evidence packets. To protect user privacy:¶
Self-sovereign mode provides the strongest privacy as no central authority learns about device enrollment. Public registry mode has the weakest privacy as the registry sees all enrolled devices.¶
Enrollment authorities collect metadata during device registration. To minimize privacy impact:¶
Enrollment authorities MUST publish a privacy policy describing data collection, retention, and sharing practices.¶
Public registries MAY offer privacy modes:¶
Users SHOULD select the privacy mode appropriate for their use case. The default mode is deployment-specific.¶
This document requests registration of the following well-known URI:¶