Back

Integrity proof for recordings

An integrity proof helps you show that an original recording existed at a specific time and has not changed since.

What it is

When this feature is enabled for your account, Nodl creates a tamper-evident archive for new recordings. The archive contains the original recording and a small certificate file with the details needed to check it later.

How it works

  1. Nodl calculates a digital fingerprint of the original recording. Even a tiny change would create a different fingerprint.

  2. Nodl sends only that fingerprint to an independent trusted timestamp service. The recording itself stays in Nodl.

  3. The timestamp service signs the fingerprint and returns a proof that is saved with your recording.

What the archive contains

The ZIP archive contains the original recording and an integrity certificate in JSON format. The certificate lists the fingerprint, timestamp service, signed proof, and whether the bundled recording still matches the stored fingerprint.

How it can be checked

You can verify the proof independently of Nodl, using the audio file and the JSON certificate from the integrity archive. The steps below are for technically minded reviewers.

Technical verification step by step

The integrity archive (ZIP) contains the original audio file and integrity-certificate.json. Together they support two checks: whether the file is unchanged and whether an independent service confirmed the fingerprint at a specific point in time.

For technically minded users

This guide is for people with a technical background who want to verify the proof themselves and present evidence to third parties.

  1. Extract the archive

    Unzip the archive. You will find the original audio file (see original_filename) and integrity-certificate.json.

  2. Verify the audio fingerprint

    Calculate SHA-256 over the audio file and compare the result with integrity_hash_sha256 in the certificate. If they match, the file is unchanged. The field integrity_hash_matches_exported_file should be true. Nodl already performs this check when creating the export. If it is false, the bundled file does not match the stored fingerprint.

  3. Extract the timestamp proof

    integrity_tsa_proof_blob contains the RFC 3161 timestamp as Base64 text. Decode it into a .tsr file to inspect or cryptographically verify the proof.

  4. Verify the timestamp cryptographically

    With OpenSSL you can display the timestamp and verify it against the certificate chain of the service named in integrity_tsa_authority. Download the required CA files from that timestamp provider (for example freetsa.org).

Important fields in integrity-certificate.json

original_filename
Filename of the bundled original audio file in the archive.
integrity_hash_sha256
SHA-256 fingerprint of the original file, for direct comparison with your own calculation.
integrity_hash_algorithm
Hash algorithm used (currently sha256).
integrity_tsa_timestamp
Trusted timestamp time in UTC.
integrity_tsa_authority
Hostname of the independent timestamp service.
integrity_tsa_proof_blob
Base64-encoded RFC 3161 timestamp proof.
integrity_hash_matches_exported_file
true if the bundled audio matches the stored fingerprint; false if it differs.

Example commands

Replace original-call.mp3 with the actual filename from your archive. Cryptographic timestamp verification requires CA certificates from the named timestamp provider.

# 1) Calculate the audio fingerprint
shasum -a 256 original-call.mp3

# 2) Compare with integrity_hash_sha256 from the certificate
jq -r '.integrity_hash_sha256' integrity-certificate.json

# 3) Extract the timestamp proof from the certificate
jq -r '.integrity_tsa_proof_blob' integrity-certificate.json | base64 --decode > proof.tsr

# 4) Display the proof
openssl ts -reply -in proof.tsr -text

# 5) Verify the timestamp cryptographically (CA files from the provider)
openssl ts -verify -data original-call.mp3 -in proof.tsr -CAfile tsa-root.pem -untrusted tsa-intermediates.pem

Good to know

This is a technical integrity proof, not legal advice and not a guarantee for any specific dispute.