Trust Center, audit-keys

Publika nycklar för audit-bundle-verifiering.

Audit-keys-mekanismen låter externa revisorer ladda ner Ed25519 public keys per kund, oberoende av Kapaciti, och verifiera att audit-bundles inte manipulerats. Nycklar publiceras enligt .well-known-konvention. Listan nedan visar nycklar som är publicerade idag.

Algoritm Ed25519. Public keys är 32-byte hex-kodade. Endpoint returnerar plain text default, JSON vid Accept: application/json. Just nu publiceras en demo-fixture (Acme Bank), riktiga kundnycklar tillkommer per pilot.

Audit-chain live Hämta index (JSON)
01 / Publicerade nycklar

Aktiva public keys.

Varje org får ett Ed25519-nyckelpar som signerar audit-entries i den orgens chain. Public key publiceras här och via .well-known-endpointen, privat nyckel lämnar aldrig customer keyspace. Listan nedan innehåller en demo-fixture, produktionskunder publiceras vid go-live per pilot.

acme-bank

Acme Bank

Fiktiv svensk SME-bank, demo-fixture för Kapaciti audit-chain. Inga riktiga kunder.

Algoritmed25519Public key
34cd58b018c65a20d5c2d0e480f3530fbe25789d0d64573ef58edff08851efb4
Fingerprint
sha256:362a86ea4b2bd495e76519d3b0e9e5673bfa98733370eb1df2bf5f507b8a298c
EndpointUtfärdad2026-05-18T00:00:00ZBundledemo.kapaciti.se/audit/acme-bank
02 / Verifiering

Så verifierar en extern revisor.

Tre kommandon räcker. Hämta key, hämta bundle, verifiera Ed25519-signaturer och hash-länkning. Inga proprietära verktyg, ingen Kapaciti-runtime.

Steg 1, hämta public key

# Plain text, 32-byte hex public key
curl https://kapaciti.se/.well-known/audit/acme-bank

# JSON med fingerprint och metadata
curl -H 'Accept: application/json' \
  https://kapaciti.se/.well-known/audit/acme-bank

Steg 2, hämta audit-bundle

# Sanitiserad demo-bundle, samma format som production
curl https://kapaciti.se/audit-evidence/acme-bank-sample.json \
  -o acme-bank.json

Steg 3, verifiera

Iterera varje entry, kontrollera att prev_hash matchar föregående entrys this_hash, och verifiera signature med Ed25519 mot org public key. Genesis-entry har prev_hash = 64 nollor.

# Node, Python eller valfri Ed25519-lib fungerar
node -e "
const nacl = require('tweetnacl');
const fs = require('fs');
const bundle = JSON.parse(fs.readFileSync('acme-bank.json'));
const pk = Buffer.from('98381a87...3ea0a9f6', 'hex');
for (const e of bundle.entries) {
  if (!e.signature) continue;
  const msg = Buffer.from(e.this_hash, 'hex');
  const sig = Buffer.from(e.signature, 'hex');
  const ok = nacl.sign.detached.verify(msg, sig, pk);
  if (!ok) throw new Error('TAMPERED entry ' + e.seq);
}
console.log('chain valid, ' + bundle.entries.length + ' entries');
"
03 / Format

Endpoint-format och konventioner.

Endpointen följer .well-known-konvention enligt RFC 8615. Plain text default, JSON-content-negotiation via Accept-header. CORS-tillåtet för audit-tooling i browser.

Path

https://kapaciti.se/.well-known/audit/<org-id>

Default response

Content-Type text/plain. Body är 32-byte hex public key, en rad, avslutad med newline.

JSON response

Med Accept: application/json. Returnerar org_id, algorithm, public_key, fingerprint (sha256), issued_at, verification_url, verification_doc, bundle_url.

CORS

Access-Control-Allow-Origin: *. Audit-tooling i browser kan hämta utan proxy.

Caching

Cache-Control public, max-age 300 vid edge, 3600 vid CDN. Rotation propagerar inom en timme.

Index

Discovery av alla keys via /.well-known/audit/ (JSON-listning) eller /.well-known/audit-keys-index.json (statisk).

Vill ni se en audit-bundle live?

Verifiera audit-chainen själv på trust/audit-chain.

Femton sanitiserade entries från Acme Bank-fixture, hash-länkade, EU AI Act-artikel-mappade. Samma format som production.

Se audit-chain Bädda in audit-badge

● Nyhetsbrev

EU AI Act, sandbox-status och svensk AI-infrastruktur.

En sammanfattning ungefär en gång i månaden. Vad förändrats i regelverket, vilka pilot-cases vi sett och vilka vendor-shifts som påverkar svenska bolag. Skickas av oss, inte av en automation som låtsas vara oss.

Uppgifterna används endast för nyhetsbrevet. Inga utskick utöver det utan separat samtycke. Avregistrera när som helst via länk i mailet.