Cryptographic Protocol

Don’t trust our claims. Verify the evidence.

WSD evidence does not depend on a logo, screenshot, database entry or assertion from We Secure Data. Each evidence bundle cryptographically binds protected content to its recorded provenance.

The WSD application creates the evidence. Standard cryptography verifies it.

Published protocol

Public algorithms. Proprietary application.

WSD’s application source code remains proprietary. The algorithms, evidence structure and verification procedure are documented so third parties can reproduce the checks. Private keys and customer key material remain secret.

ComponentImplementation
Content cipherAES-256-GCM using browser WebCrypto
File keyFresh random 256-bit data-encryption key for each file encryption
Chunk authentication128-bit GCM authentication tag and canonical JSON authenticated data
Key protectionFile keys wrapped using a separate Google Cloud KMS content-encryption key
Provenance signatureECDSA using NIST P-256 and SHA-256
Signature encodingDER ASN.1 ECDSA
CanonicalisationDeterministic compact UTF-8 JSON with sorted keys
Key discovery/.well-known/wsd-keys.json on the issuing WSD service
Audit evidenceSigned daily Merkle anchors and inclusion proofs, when available
Content encryption

Authenticated encryption begins in the browser.

For encrypted file workflows, the browser generates a new random 32-byte data-encryption key and encrypts the file with AES-256-GCM. Files are processed in chunks, normally 4 MiB.

01

Generate

Browser WebCrypto generates the file key and a random 8-byte IV base.

02

Construct IVs

Each chunk receives a distinct 12-byte IV: the IV base followed by its big-endian 32-bit chunk index.

03

Bind metadata

Authenticated data binds the version, object key, chunk index, chunk size, plaintext size and IV base.

04

Encrypt

AES-GCM produces ciphertext and a 128-bit authentication tag for each chunk.

05

Wrap the key

The file key is wrapped by KMS with context binding it to its message, document and version.

Changing encrypted bytes, an authentication tag or authenticated metadata causes decryption authentication to fail. WSD stores encrypted content, encryption metadata and the wrapped file key for online-key workflows.

Key separation

Encryption keys and signing keys have different jobs.

Content encryptionProtects file keys.

The content-encryption KMS key wraps and unwraps per-file data-encryption keys.

Provenance signingSigns evidence.

The provenance key signs canonical evidence. It does not encrypt customer content.

Audit signingSigns public anchors.

A separate audit-signing key signs deployment-wide daily Merkle roots.

Signed provenance

How the proof chain is created.

01

Hash content

SHA-256 fingerprints identify the exact content represented by the evidence.

02

Build the record

The record binds relevant hashes, object identifiers, recorded identities and recorded UTC times.

03

Canonicalise

Signing excludes signature, bundle_manifest, bundle_artifacts and public_anchor, then encodes the remaining record deterministically.

04

Sign in KMS

KMS signs the SHA-256 digest of the canonical bytes using ECDSA P-256.

05

Identify the key

The evidence records the organisation key ID, exact key version, algorithm and DER-encoded signature.

Independent verification

Verification is a reproducible mathematical check.

Once the relevant public key has been obtained from an authenticated WSD key endpoint or another trusted source, the evidence can be verified without the WSD application, access to the original WSD account, or reliance on a WSD database response.

Verification procedure

  1. Establish trust in the organisation’s public key or retained key fingerprint.
  2. Recalculate SHA-256 for each supplied protected file.
  3. Reconstruct the canonical unsigned provenance payload.
  4. Verify its DER ECDSA signature with the trusted P-256 public key.
  5. Check the bundle manifest for missing or changed artifacts.
  6. When present, verify the audit-event hash, Merkle path and signed public anchor.

The trust root matters

A public key merely included inside an otherwise untrusted bundle proves only that the bundle is internally consistent. It does not, by itself, prove WSD origin.

Origin requires the relevant key to be obtained from the authenticated key endpoint or another trusted source, such as a previously retained public key or fingerprint.

Portable evidence

What an evidence bundle contains.

A bundle can contain the protected files, signed provenance.json, public-key material, a SHA-256 manifest, independent-verification instructions and an offline HTML verifier. Where a valid daily anchor is available, it also contains the signed audit anchor and Merkle inclusion proof. If anchoring is still pending, the bundle records that state instead of claiming failure or completion.

The HTML verifier is a convenience interface, not the source of truth. Another implementation can verify the JSON evidence directly.

What the result means

Cryptography proves specific facts—not every surrounding claim.

It can proveIntegrity and key possession.

The supplied content matches the signed hashes, the record has not changed, and the signature corresponds to the trusted organisation’s public key.

It recordsIdentity and UTC time.

The signature protects the sender identity and UTC time recorded by WSD. It does not independently validate a person’s real-world identity.

It does not provideAn independent trusted timestamp.

The current evidence records a signed WSD time; it does not contain a third-party timestamp-authority token.

Inspect the evidence, not its appearance.

Verification is not a request for WSD to confirm its own database record.

Explore provenance