Trust model

Verify, don’t trust.

The Anulum portal and Hub are designed so that the server does not have to be trusted. Every scientific claim is sealed, every seal is verified in the browser, and every key is pinned out of band.

The root

Offline root ceremony

The Studio root key is a hybrid Ed25519 + ML-DSA-65 key pair produced in an offline ceremony on 2026-07-02. The private halves never leave the offline vault. The public halves are pinned directly in the Hub shell source code.

Root key ID: anulum:studio-root-2026

Published evidence key ID: sha256:8e59ea1452e127dd32e886b3e634cb68064f9c326c9f74682eb81389901d92bc

The keyring

Signed well-known keyring

The Hub publishes a signed keyring at /.well-known/scpn-keyring.json. The keyring lists the evidence-signing keys the Hub uses to seal benchmarks, databanks, and federation manifests. It is signed by the pinned root, and every key inside it is addressed by the SHA-256 digest of its own public-key material.

1. Fetch the keyring

Download /.well-known/scpn-keyring.json from this origin.

2. Verify the root signature

Check the root_signature against the pinned root public key (anulum:studio-root-2026).

3. Check content-addressed keys

Each key_id must equal the SHA-256 digest of the key it identifies, so a key cannot be swapped inside the signed document.

Verification

How to verify an artifact

Every published artifact — a benchmark databank, a federation manifest, or a transparency checkpoint — carries a studio.publication-seal.v1 envelope. The envelope signs the canonical digest of the document under the published evidence key.

1. Download the artifact

For example, /federation.json or /benchmark/databank.json.

2. Extract the seal

Signed artifacts are wrapped as {"federation": <doc>, "seal": <seal>}. The seal contains content_digest, artifact_kind, and a signature.

3. Recompute and check

Canonicalise the inner document with RFC 8785, hash it with SHA-256, and compare to content_digest. Then verify the signature against the published evidence key.

Trust flow

From root key to browser verifier

The root key signs the well-known keyring; the keyring contains the evidence-signing key; that key seals every artifact; and the browser verifier checks the seal before rendering.

Transparency

Append-only log

The Hub maintains a transparency log at /transparency/log.jsonl. It is a Merkle tree of published artifact digests, with signed checkpoints and inclusion/consistency proofs. The browser verifier re-checks the log on every load, so a silently altered artifact would break the proof.

Open verifier

Run the verifier yourself

The @anulum/verify package is the same verifier the Hub shell uses. You can run it from the command line or import it in your own tools.

npx anulum-verify https://www.anulum.org/benchmark/databank.json