"Posso dimostrarti che conosco la combinazione della cassaforte senza aprirla né dirti il numero."
— Questa è la promessa. Quello che non posso fare è dimostrarti che dentro la cassaforte non c'è niente di rubato senza aprirla. E questo è il problema.
Le proof a conoscenza zero (Zero-Knowledge Proofs, ZKP) sono, insieme all'FHE, l'altra grande promessa tecnica che appare nei dibattiti su Chat Control. L'idea è che un utente potrebbe dimostrare che il suo messaggio non contiene CSAM senza rivelare il contenuto del messaggio.
Sembra perfetto. Il diavolo è nei dettagli.
Cos'è una proof a conoscenza zero?
Una ZKP è un protocollo crittografico che permette a un dimostratore (prover) di provare a un verificatore (verifier) che un'affermazione è vera, senza rivelare alcuna informazione aggiuntiva oltre alla validità dell'affermazione.
Formalmente, un protocollo ZKP per un linguaggio deve soddisfare:
- Completezza: se l'affermazione è vera, il dimostratore onesto convince il verificatore
- Solidità: se l'affermazione è falsa, nessun dimostratore disonesto può convincere il verificatore (con probabilità non trascurabile)
- Conoscenza zero: il verificatore non apprende nulla oltre alla validità dell'affermazione
Prover: "Ho una prova che M ∉ B (CSAM)"
│
│ ███████████████████████
│ █ Protocollo ZKP ███████
│ ███████████████████████
│
▼
Verifier: ✓ "M non è in B" (senza vedere M)
Intersezione privata di insiemi (PSI)
Una variante rilevante è l'intersezione privata di insiemi (Private Set Intersection, PSI), dove due parti possono determinare l'intersezione dei loro insiemi senza rivelare gli elementi non condivisi.
Nel contesto di CSAR, l'idea sarebbe:
- Utente: ha un insieme di messaggi
- Piattaforma/autorità: ha un insieme di hash di CSAM noto
- PSI: determina se senza che nessuna parte riveli il proprio insieme completo
Utente: M₁, M₂, M₃, ... Mₙ
\
PSI → Intersezione non vuota? → sì/no
/
Autorità: h₁, h₂, h₃, ... hₖ (hash di CSAM)
Se sì → l'utente ha almeno un messaggio CSAM (ma non si sa quale)
Se no → l'utente non ha nessun messaggio CSAM
I problemi pratici
1. CSAM non noto non viene rilevato
Il PSI rileva solo corrispondenze con un database preesistente. Ma la maggior parte del CSAM che viene rilevato oggi è materiale nuovo —immagini e video che non erano in nessun database perché non erano stati segnalati in precedenza.
Un sistema basato su PSI:
- Rileva CSAM già noto (hash esistenti)
- Non rileva CSAM nuovo (non si può fare l'hash di ciò che non si conosce)
- Richiede aggiornamento costante del database
2. Il classificatore non è un hash
Il rilevamento di CSAM nuovo richiede classificatori basati sul contenuto (reti neurali, embedding percettivi). Un classificatore di questo tipo non è una funzione che può essere eseguita efficientemente all'interno di una ZKP.
Le ZKP moderne (zk-SNARKs, zk-STARKs, Bulletproofs) possono provare calcoli complessi, ma il costo di generare una prova per una rete neurale di medie dimensioni rimane proibitivo:
| Tipo di prova | Costo di generazione | Costo di verifica | Applicabile a CNN |
|---|---|---|---|
| zk-SNARK | O(log n) | O(1) | Sì, ma costo enorme |
| zk-STARK | O(n log n) | O(log² n) | Sì, prove grandi |
| Bulletproofs | O(n) | O(n) | Solo calcoli piccoli |
| PSI (ECDH) | O(n) | O(n log n) | Solo hash |
3. Il problema dell'aggiornamento
Anche se fosse fattibile eseguire un classificatore all'interno di una ZKP, rimarrebbe il problema dell'aggiornamento del classificatore. Se l'autorità può aggiornare remotamente il modello di classificazione, allora:
Istante t: Classificatore C₁ → ZKP → "M non è CSAM"
Istante t+1: Classificatore C₂ → ZKP → "M è CSAM" (per lo stesso M)
L'utente non può sapere se il nuovo classificatore cerca CSAM o qualsiasi altra cosa. E poiché le prove sono verificabili, l'autorità può rivalutare messaggi passati con nuovi classificatori.
4. Falsi positivi e privacy
Un falso positivo in un sistema ZKP è qualitativamente diverso da un falso positivo in un sistema tradizionale. In un sistema tradizionale, l'operatore esamina manualmente il contenuto e scarta il falso positivo. In un sistema ZKP:
- Se la ZKP dice "CSAM rilevato", l'operatore non può esaminare il contenuto (è crittografato)
- L'operatore deve fidarsi della ZKP o chiedere la chiave di decifratura per verificare
- Se chiede la chiave, la ZKP diventa irrilevante
- Se non chiede la chiave, accetta come veri tutti i verdetti del classificatore
ZKP dice "CSAM rilevato":
├→ Chiedere chiave → M viene decifrato → non c'è più privacy
└→ Fidarsi della ZKP → accettare il verdetto → e se è falso positivo?
Il vicolo cieco
Le ZKP e il PSI sono strumenti crittografici potenti per problemi ben definiti:
| Problema | ZKP/PSI lo risolve |
|---|---|
| Dimostrare che conosci un hash senza rivelarlo | Perfetto |
| Dimostrare che un messaggio non è in una lista di hash | Fattibile |
| Dimostrare che un'immagine non contiene CSAM nuovo | No |
| Classificare un'immagine con rete neurale senza rivelare nulla | Tecnicamente possibile, non fattibile |
| Prevenire la sorveglianza retrospettiva | No |
| Evitare l'espansione del classificatore | No |
La conclusione è simile a quella dell'FHE: le ZKP non possono risolvere il problema del rilevamento di CSAM in comunicazioni crittografate senza rompere la privacy, perché:
- Non possono rilevare materiale non catalogato (che è la maggior parte del CSAM)
- Non possono eseguire classificatori complessi su larga scala
- Non impediscono la rivalutazione retrospettiva
- Non risolvono il problema dell'espansione del classificatore
Il paradosso di fondo è che la crittografia può dimostrare qualsiasi cosa tranne che un contenuto che non è stato visto è sicuro. E questa è, precisamente, la dimostrazione che la legge richiede.
Documenti correlati:
