TRAIL (Trust Registry for AI Identity Layer) ist ein offenes, dezentrales Identitätsprotokoll für KI-Agenten und autonome Systeme, basierend auf W3C Decentralized Identifiers v1.1 [DID-CORE] und Verifiable Credentials 2.0 [VC-DATA-MODEL]. Das Protokoll definiert eine neue DID-Methode (did:trail), eine HMAC-SHA256-basierte Fingerprinting-Architektur mit client-seitigem PEPPER, sowie eine dezentrale Zertifizierungsstellen-Infrastruktur (CA-Netz) zur Ausstellung von Vertrauensnachweisen. TRAIL zielt darauf ab, die fehlende Vertrauensschicht zwischen KI-Infrastruktur (LLMs, Agenten, Automatisierungsplattformen) und menschlichen Entscheidungsträgern zu schließen — rechtskonform nach EU AI Act Art. 13/14 und datenschutzkonform nach DSGVO.
TRAIL (Trust Registry for AI Identity Layer) is an open, decentralised identity protocol for AI agents and autonomous systems, built on W3C Decentralized Identifiers v1.1 [DID-CORE] and Verifiable Credentials 2.0 [VC-DATA-MODEL]. The protocol defines a new DID method (did:trail), an HMAC-SHA256-based fingerprinting architecture with client-side PEPPER, and a decentralised Certificate Authority infrastructure for issuing trust credentials. TRAIL addresses the missing trust layer between AI infrastructure (LLMs, agents, automation platforms) and human decision-makers — compliant with EU AI Act Art. 13/14 and GDPR by design.
Die Proliferation autonomer KI-Agenten im B2B-Umfeld — insbesondere im Bereich der Outreach-Automatisierung, der Entscheidungsunterstützung und der agentenbasierten Prozessautomation — erzeugt ein fundamentales Vertrauensproblem: Es gibt keinen standardisierten Weg, zu verifizieren, wer oder was hinter einem KI-System steht.
The proliferation of autonomous AI agents in B2B contexts — particularly in outreach automation, decision support, and agent-based process automation — creates a fundamental trust problem: there is no standardised mechanism to verify who or what is behind an AI system.
Konkret ergeben sich drei Problemkategorien:
Specifically, three problem categories emerge:
| ProblemProblem | Heutiger ZustandCurrent State | KonsequenzConsequence |
|---|---|---|
| AnonymitätAnonymity | KI-Agenten agieren ohne überprüfbare IdentitätAI agents act without verifiable identity | Phishing, Social Engineering, HaftungsvakuumPhishing, social engineering, liability vacuum |
| IntransparenzOpacity | Keine Offenlegung, ob mit KI oder Mensch kommuniziert wirdNo disclosure of whether communication is human or AI | Täuschung, EU AI Act-Verstoß (Art. 52)Deception, EU AI Act violation (Art. 52) |
| ZentralisierungCentralisation | Vertrauenssilos pro Plattform (OpenAI, Anthropic, …)Trust silos per platform (OpenAI, Anthropic, …) | Kein plattformübergreifendes Vertrauen möglichNo cross-platform trust possible |
TRAIL adressiert primär die Ebene der Agenten-zu-Mensch (A2H) und Agenten-zu-Agenten (A2A) Interaktionen. Es ersetzt keine bestehenden Authentifizierungsstandards, sondern ergänzt diese um eine vertrauenszertifizierte Identitätsebene.
TRAIL primarily addresses Agent-to-Human (A2H) and Agent-to-Agent (A2A) interaction layers. It does not replace existing authentication standards but augments them with a trust-certified identity layer.
TRAIL ist nach folgenden nicht-verhandelbaren Anforderungen entworfen:
TRAIL is designed according to the following non-negotiable requirements:
Die did:trail-Methode folgt der formalen ABNF-Syntax gemäß [DID-CORE §8.1]:
The did:trail method follows the formal ABNF syntax per [DID-CORE §8.1]:
trail-did = "did:trail:" trail-specific-id
trail-id = 8HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 12HEXDIG
trail-tag = 1*(ALPHA / DIGIT / "-") ; optional agent type label
; Example: did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f
; Example: did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f#agent-type=sales-sdr
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://trailprotocol.org/ns/v1"
],
"id": "did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f",
"verificationMethod": [{
"id": "did:trail:3a8f7c21...#key-1",
"type": "JsonWebKey2020",
"controller": "did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9OQoVv",
"y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI"
}
}],
"authentication": ["did:trail:3a8f7c21...#key-1"],
"assertionMethod": ["did:trail:3a8f7c21...#key-1"],
// TRAIL-specific extensions
"trail:agentType": "sales-sdr", // agent classification
"trail:registeredAt": "2026-03-01T00:00:00Z",
"trail:caIssuer": "did:trail:ca:founding-ca-001",
"trail:status": "active", // active | suspended | revoked
"trail:fingerprint": "hmac-sha256:a7f4..." // see §5
}
| Operation | Method | Endpoint | BeschreibungDescription |
|---|---|---|---|
| Create | POST | /v1/dids | Registrierung eines neuen did:trail IdentifiersRegister a new did:trail identifier |
| Read | GET | /v1/dids/{did} | Auflösung des DID-DokumentsResolve the DID document |
| Update | PATCH | /v1/dids/{did} | Key-Rotation, Status-Update — nur durch InhaberKey rotation, status update — owner-only |
| Deactivate | DELETE | /v1/dids/{did} | Soft-Delete: Status auf "revoked" setzenSoft-delete: set status to "revoked" |
Der TRAIL-Fingerprint ist eine HMAC-SHA256-Signatur über einen definierten Satz von Agenten-Attributen, ergänzt durch einen client-seitig generierten PEPPER. Dieses Design verhindert Wörterbuch-Angriffe auf den Fingerprint, da der PEPPER niemals server-seitig gespeichert wird.
The TRAIL fingerprint is an HMAC-SHA256 signature over a defined set of agent attributes, augmented by a client-generated PEPPER. This design prevents dictionary attacks on the fingerprint, as the PEPPER is never stored server-side.
// Step 1: Assemble canonical attribute string
canonical = "{did}|{agentType}|{caIssuer}|{registeredAt}|{publicKeyThumbprint}"
// Step 2: Derive signing key using client-side PEPPER
// PEPPER is a 256-bit random value — NEVER leaves client, NEVER stored by registry
signingKey = HKDF(
ikm = clientPrivateKey,
salt = PEPPER, // client-side only
info = "trail-fingerprint-v1",
length = 32
)
// Step 3: Compute HMAC-SHA256
fingerprint = HMAC-SHA256(key = signingKey, message = canonical)
// Step 4: Encode and store
trail:fingerprint = "hmac-sha256:" + base64url(fingerprint)
// Verification: re-compute with same PEPPER + canonical string → deterministic
valid = (computed_fingerprint === stored_fingerprint)
Der PEPPER verlässt niemals den Client. Weder TRAIL Registry noch CA-Partner speichern den PEPPER. Ein kompromittiertes Registry kann daher keine Fingerprints fälschen. Dieser Ansatz folgt dem Prinzip des zero-knowledge proof of possession.
The PEPPER never leaves the client. Neither the TRAIL Registry nor CA partners store the PEPPER. A compromised registry therefore cannot forge fingerprints. This approach follows the principle of zero-knowledge proof of possession.
Eine CA stellt einem registrierten KI-Agenten ein Verifiable Credential aus, das die Identität und den Vertrauensstatus bestätigt:
A CA issues a Verifiable Credential to a registered AI agent confirming its identity and trust status:
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://trailprotocol.org/ns/credentials/v1"
],
"type": ["VerifiableCredential", "TrailAgentCredential"],
"id": "https://registry.trailprotocol.org/credentials/vc-a4f92b1c",
"issuer": {
"id": "did:trail:ca:founding-ca-001",
"name": "TRAIL Founding CA"
},
"validFrom": "2026-03-01T00:00:00Z",
"validUntil": "2027-03-01T00:00:00Z", // annual renewal
"credentialSubject": {
"id": "did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f",
"trail:agentType": "sales-sdr",
"trail:trustLevel": "verified", // basic | verified | certified
"trail:operatorDID": "did:web:acme-corp.example.com",
"trail:auditLog": "https://registry.trailprotocol.org/audit/3a8f7c21",
"trail:euAiActScope": ["art13", "art14"],
"trail:fingerprint": "hmac-sha256:a7f4c9e2b1d8..."
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "ecdsa-rdfc-2019",
"created": "2026-03-01T00:00:00Z",
"verificationMethod": "did:trail:ca:founding-ca-001#key-1",
"proofPurpose": "assertionMethod",
"proofValue": "z58DAdFfa9MzHUxPeVXVKTJnnJBkv..."
}
}
TRAIL verwendet ein zweistufiges, dezentrales CA-Modell — analog zu X.509 PKI, jedoch ohne Single-Root-of-Trust:
TRAIL uses a two-tier, decentralised CA model — analogous to X.509 PKI, but without a single root of trust:
| CA-TypCA Type | AnforderungenRequirements | Ausstellbare VCsIssuable VCs |
|---|---|---|
| Founding CA | TrailSign AI GmbH-Audit, technische ZertifizierungTrailSign AI GmbH audit, technical certification | basic, verified |
| Accredited CA | WebTrust oder ETSI EN 319 401, EU-AkkreditierungWebTrust or ETSI EN 319 401, EU accreditation | basic, verified, certified |
Die TRAIL Registry exponiert eine REST-API mit OpenAPI 3.0-Spezifikation. Basis-URL: https://registry.trailprotocol.org/v1
The TRAIL Registry exposes a REST API with an OpenAPI 3.0 specification. Base URL: https://registry.trailprotocol.org/v1
| Endpoint | Method | BeschreibungDescription | Auth |
|---|---|---|---|
/dids/{did} | GET | DID-Dokument auflösen (öffentlich)Resolve DID document (public) | — |
/dids | POST | Neue DID registrierenRegister new DID | CA-Key |
/verify | POST | VC-Präsentation verifizierenVerify VC presentation | API-Key |
/credentials/{id} | GET | VC-Status prüfen (aktiv/widerrufen)Check VC status (active/revoked) | — |
/audit/{did} | GET | Öffentliches Audit-Log (Hash-only)Public audit log (hash-only) | — |
POST /v1/verify
Content-Type: application/json
X-API-Key: <api-key>
{
"presentation": {
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiablePresentation"],
"holder": "did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f",
"verifiableCredential": ["..."] // compact JWT or JSON-LD
}
}
// Response
{
"verified": true,
"did": "did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f",
"agentType": "sales-sdr",
"trustLevel": "verified",
"status": "active",
"validUntil": "2027-03-01T00:00:00Z"
}
Das Trust Badge Widget ermöglicht die 1-Zeilen-Integration von TRAIL-Vertrauensstatus in beliebige Web-Frontends:
The Trust Badge Widget enables 1-line integration of TRAIL trust status into any web frontend:
<script src="https://cdn.trailprotocol.org/badge.js"
data-did="did:trail:3a8f7c21-b19e-4d02-a7f3-9c1e2b4d8a6f"
data-theme="dark"
data-lang="de"></script>
Das Widget holt den aktuellen Vertrauensstatus live vom Registry und rendert ein standardisiertes Badge (SVG). Parameter:
The widget fetches the current trust status live from the registry and renders a standardised badge (SVG). Parameters:
| Parameter | Type | BeschreibungDescription | PflichtRequired |
|---|---|---|---|
data-did | string | did:trail Identifier des AgentenAgent's did:trail identifier | ✓ |
data-theme | light|dark | Visuelles Theme des BadgesVisual theme of badge | — |
data-lang | de|en | Sprache des Badge-LabelsBadge label language | — |
data-compact | boolean | Minimalmodus (nur Icon)Compact mode (icon only) | — |
data-callback | function | JS-Callback bei Status-ÄnderungJS callback on status change | — |
| NormRegulation | Artikel / AnforderungArticle / Requirement | TRAIL-UmsetzungTRAIL Implementation | Status |
|---|---|---|---|
| EU AI Act | Art. 13 — Transparenz (Hochrisiko-KI)Transparency (high-risk AI) | KI-Agenten-Typ im DID-Dokument · öffentlich auflösbarAI agent type in DID document · publicly resolvable | ✓ Design |
| EU AI Act | Art. 14 — Menschliche AufsichtHuman oversight | Audit-Log-URL im VC · Operator-DID verknüpftAudit log URL in VC · Operator DID linked | ✓ Design |
| EU AI Act | Art. 52 — Offenlegungspflicht (Chatbots)Disclosure obligation (chatbots) | Trust Badge Signal: "Diese Nachricht kommt von KI-Agent [DID]"Trust Badge signal: "This message is from AI agent [DID]" | → Q3 2026 |
| DSGVO | Art. 5 — DatensparsamkeitData minimisation | Kein Personenbezug im DID-Dokument. PEPPER bleibt client-seitig.No personal data in DID document. PEPPER remains client-side. | ✓ Design |
| DSGVO | Art. 25 — Privacy by DesignPrivacy by design | Fingerprint-Schema ermöglicht Verifikation ohne DatenweitergabeFingerprint scheme enables verification without data disclosure | ✓ Design |
| eIDAS 2.0 | EUDIW-KompatibilitätEUDIW compatibility | VC 2.0-Profil kompatibel mit EUDIW-VC-SpezifikationVC 2.0 profile compatible with EUDIW VC specification | → Evaluation |
| BedrohungThreat | AngriffsvektorAttack Vector | TRAIL-GegenmaßnahmeTRAIL Countermeasure |
|---|---|---|
| IdentitätsfälschungIdentity forgery | Angreifer gibt sich als registrierten Agenten ausAttacker impersonates a registered agent | HMAC-Fingerprint kann ohne PEPPER nicht reproduziert werdenHMAC fingerprint cannot be reproduced without PEPPER |
| Registry Compromise | Angreifer kompromittiert das zentrale RegistryAttacker compromises the central registry | Dezentrale CA-Signaturen; kompromittiertes Registry kann VCs nicht fälschenDecentralised CA signatures; compromised registry cannot forge VCs |
| Replay Attack | Wiederverwendung eines alten, gültigen VCsReuse of an old, valid VC | VCs enthalten validUntil und Challenge-Nonce in der PresentationVCs contain validUntil and challenge nonce in presentation |
| CA-KompromittierungCA Compromise | Rogue CA stellt ungültige VCs ausRogue CA issues invalid VCs | Kein Single Root of Trust; Community kann CA aus vertrautem Set entfernenNo single root of trust; community can remove CA from trusted set |
| DID HijackingDID Hijacking | Angreifer übernimmt eine DID-IdentitätAttacker takes over a DID identity | Kontrolle über DID erfordert privaten Schlüssel + PEPPER (zwei unabhängige Faktoren)Control over DID requires private key + PEPPER (two independent factors) |
TRAIL-DID-Dokumente enthalten keinerlei personenbezogene Daten. Der Fingerprint erlaubt Verifizierung ohne Offenlegung zugrundeliegender Attribute. Pseudonyme Identitäten sind vollständig unterstützt.
TRAIL DID documents contain no personal data whatsoever. The fingerprint allows verification without disclosing underlying attributes. Pseudonymous identities are fully supported.
Folgende Privacy-Eigenschaften sind im Protokolldesign verankert:
The following privacy properties are anchored in the protocol design: