§ Verifica indipendente

Non devi fidarti di LOCUS.
Puoi verificare tutto da solo.

Ogni acquisizione è un pacchetto autoportante e verificabile da terzi — anche dalla controparte, anche offline, con strumenti standard e aperti. Questa pagina spiega, passo passo, come confermare (o contestare) l'autenticità di un bundle LOCUS.

LOCUS — verifica del bundle: BagIt, hash tripli, marca RFC 3161 e firma Ed25519

Il principio

Verifica senza fiducia

La solidità di una prova digitale non può dipendere dalla parola di chi l'ha prodotta. Per questo LOCUS non chiede di credergli: usa solo standard aperti e pubblici — BagIt (RFC 8493), SHA-256/512 (FIPS 180-4), firma Ed25519 (RFC 8032), marca temporale RFC 3161, sidecar CASE/UCO — che chiunque può ricalcolare con strumenti di terze parti, senza alcun software LOCUS.

Riproducibile

Gli stessi controlli danno lo stesso esito su qualunque computer, oggi e fra anni.

Indipendente dal produttore

La marca temporale è di una Autorità terza (Sectigo / InfoCert), non di LOCUS.

Tamper-evident

Qualsiasi modifica, anche di un byte, rompe i sigilli ed è rilevata in verifica.

Cosa ricevi

Anatomia del bundle

Il bundle è un normale file .zip conforme a BagIt RFC 8493. Dentro, ogni file ha un ruolo; due «sigilli» (manifest e tag-manifest) ne garantiscono l'integrità e una marca temporale di terza parte ne fissa la data.

LOCUS-<uuid>.zip pacchetto BagIt RFC 8493 SIGILLI (radice) manifest-sha256.txt → hash di ogni file in data/ tagmanifest-sha256.txt → hash dei file di sigillo + metadata tagmanifest-sha256.txt.tsr → marca temporale RFC 3161 (TSA terza) verify.sh · verify.bat · tsa-ca.pem data/ (contenuto firmato) manifest.json → firmato Ed25519 (device-bound) media.jpg / .mp4 / .wav → il contenuto reale della prova tsa.tsr → marca RFC 3161 sul media original.jpg · histogram.png report.pdf · interactive.html → report + verifica integrata in-browser camera.json · device.json metadata/ evidence.case.jsonld — CASE/UCO Catena dei sigilli: media + file → manifest-sha256 → firma Ed25519 sul manifest → tagmanifest → marca RFC 3161. Toccare un solo byte rompe l'anello successivo e rende la manomissione evidente.
Figura 1 — Struttura di un bundle LOCUS e catena dei sigilli.

Cinque strade indipendenti

Come validare, dal più semplice al più rigoroso

Tre di questi strumenti viaggiano dentro il bundle stesso: la verifica non dipende dalla disponibilità del nostro sito né di alcun software esterno.

online

1 Pagina pubblica di verifica

Apri /verify/<codice> su questo sito e inserisci il codice a 6 caratteri (o l'UUID). Ricalcola hash, marche RFC 3161 e firma in tempo reale. Zero strumenti, accessibile a chiunque — anche al giudice dal browser.

nel bundle · offline

2 interactive.html

Dentro data/. Aprilo con un doppio clic in qualsiasi browser, senza connessione: ricalcola gli hash dei file localmente (Web Crypto del browser, nessun upload) e li confronta con quelli firmati nel manifest. Mostra esito, dettagli e impronte percettive per ogni elemento.

nel bundle · offline

3 verify.sh · verify.bat

Script di auto-verifica nel bundle. Su macOS/Linux ./verify.sh, su Windows doppio clic su verify.bat. Controllano integrità del payload, completezza (file non dichiarati), integrità dei sigilli e — con openssl — le marche RFC 3161. Usano strumenti di sistema (shasum/sha256sum, certutil, openssl), non codice LOCUS.

app desktop · offline

4 Locus Validator

App desktop autonoma (macOS · Windows · Linux), senza login né telemetria. Trascini il .zip e ottieni un referto a semaforo con tutti i controlli + un PDF di validazione. Pensata per CT e periti che vogliono un esito firmato e ripetibile.

zero software LOCUS

5 Comandi manuali (la prova definitiva)

Per chi non vuole fidarsi di alcuno strumento — nostro o altrui — i sigilli si verificano a mano con utility standard. È il metodo che azzera ogni dubbio sul produttore: vedi la sezione qui sotto.

Cosa viene verificato

I controlli, e cosa dimostra ciascuno

  • Integrità del payloadOgni file in data/ ha l'hash SHA-256 dichiarato nel manifest. Una modifica al media → mismatch.
  • Completezza BagItNessun file «infiltrato»: ogni file presente in data/ è elencato nel manifest (RFC 8493).
  • Integrità dei tagIl tagmanifest sigilla i file di servizio e il sidecar CASE/UCO: copre tutto ciò che è fuori da data/.
  • Terna di hash del mediaMD5 + SHA-256 + SHA-512 del media coincidono con quelli firmati nel manifest.
  • Marca RFC 3161 sul mediaUna TSA terza (Sectigo / InfoCert) attesta che quel media esisteva a quella data. Verificabile con la sua CA pubblica.
  • Marca RFC 3161 sul tagmanifestChiude la catena di custodia: fissa nel tempo l'intero pacchetto sigillato, non solo il media.
  • Firma Ed25519Il manifest è firmato con una chiave legata al dispositivo (TOFU): lega contenuto, dispositivo e operatore.
  • Impronte percettive + istogrammaaHash/dHash/pHash e istogramma firmati: rappresentano il media senza rivelarlo e si ricalcolano dal bundle.
  • Sidecar CASE/UCOMetadati forensi in standard CASE 1.3 / UCO, coerenti con il manifest e dentro il sigillo.
  • Coerenza temporaleLa cattura precede il sigillo; il tempo NTP precede la marca RFC 3161. Incoerenze → segnalazione.

A mano, senza software LOCUS

Verifica manuale passo passo

Estrai lo .zip ed entra nella cartella. Servono solo shasum/sha256sum e openssl (su Windows certutil), già presenti nei sistemi operativi.

  1. Integrità del payload
    # ricalcola e confronta gli hash dei file in data/
    shasum -a 256 -c manifest-sha256.txt # Linux: sha256sum -c manifest-sha256.txt → tutti OK
  2. Integrità dei sigilli (tag)
    shasum -a 256 -c tagmanifest-sha256.txt
  3. Marca temporale RFC 3161 sul media
    openssl ts -verify -data data/media.jpg \
      -in data/tsa.tsr -CAfile tsa-ca.pem # → Verification: OK
  4. Marca temporale sul tagmanifest
    openssl ts -verify -data tagmanifest-sha256.txt \
      -in tagmanifest-sha256.txt.tsr -CAfile tsa-ca.pem
  5. Firma Ed25519 e impronte percettive

    Il manifesto firmato è in data/manifest.json (campo signature + chiave pubblica del dispositivo). Il modo più semplice di verificarla è aprire interactive.html o usare il Locus Validator, che ricalcolano firma e impronte percettive e ne confermano la corrispondenza.

Nota: il nome del media (media.jpg/.mp4/.wav) è indicato in manifest-sha256.txt. Gli stessi comandi sono incapsulati in verify.sh/verify.bat.

Perché regge

La catena di fiducia

Media foto/video/audio SHA-256/512 impronta digitale Ed25519 firma del dispositivo RFC 3161 TSA terza · data certa Chiunque ricalcola e conferma Ogni anello è verificabile con standard pubblici: la fiducia non si concentra mai su LOCUS.
Figura 2 — La fiducia è distribuita su standard aperti e una terza parte indipendente.

Per la controparte

Se pensi di poter contestare LOCUS

Bene: è esattamente ciò per cui è progettato. Ecco le obiezioni più comuni e come chiunque può risolverle in autonomia.

«La data potrebbe essere stata falsificata.»

La marca temporale è emessa da una TSA terza (Sectigo, o InfoCert qualificata eIDAS) secondo RFC 3161 e si verifica con la CA pubblica dell'Autorità — non con materiale fornito da noi. La marca qualificata eIDAS ha valore legale in tutta l'UE (Reg. 910/2014).

«Il software LOCUS potrebbe mentire sull'esito.»

Puoi verificare senza alcun software LOCUS: shasum/openssl sono utility standard di terze parti. Se i loro esiti coincidono, l'autenticità non dipende dalla nostra parola.

«La foto potrebbe essere stata ritoccata.»

Qualsiasi modifica al media rompe la terna di hash, la firma Ed25519 e la marca RFC 3161: la verifica la rileva e segnala il bundle come alterato. Non esiste modifica «silenziosa».

«Il contenuto non è sui vostri server: come fidarsi?»

È una scelta di riservatezza (privacy by design): l'autorità della prova è il bundle sigillato in mano all'utente, non una copia su un server. Sul server restano comunque istogramma e impronte percettive firmati, che legano il media; la verifica completa si fa sul bundle.

«La provenance non è C2PA standard.»

Vero, e lo dichiariamo apertamente: è un contenitore proprietario «ispirato a C2PA/JUMBF», non leggibile con c2patool. Non è un overclaim: il valore probatorio poggia su hash, firma e marca temporale, non sulla provenance.

«È un JPEG «computazionale», non un dato grezzo.»

La pipeline di cattura è dichiarata e firmata nel manifest (oggetto capture): sorgente, API di cattura, assenza di editing IA. La trasparenza sulla fedeltà è parte della prova, non nascosta.