Hash, firme, build riproducibili e audit rispondono a domande diverse.
Il codice aperto consente di esaminare il codice, ma da solo non dimostra che l’app installata corrisponda a quel codice o che non contenga vulnerabilità. Per valutare un’app di messaggistica, conviene distinguere diversi tipi di prova: codice sorgente, processo di compilazione, firma del file, test del protocollo e rapporto di audit.
Che cosa dimostra esattamente ogni prova?
| Prova | Contributo principale | Che cosa non dimostra da sola |
|---|---|---|
| Codice sorgente leggibile | Consente di esaminare progettazione e implementazione | Corrispondenza con il file d’installazione o assenza di tutti i bug |
| Build riproducibile | Consente di confrontare il risultato ottenuto da sorgente e ambiente specificati | La sicurezza del codice stesso |
| Firma APK | Verifica la firma e il collegamento del file a una chiave di firma fidata | Che il comportamento dell’app sia innocuo |
| Hash SHA-256 | Rileva differenze nei byte rispetto a un digest fidato | L’autenticità quando un aggressore ha sostituito insieme file e digest |
| Vettore di test | Verifica un comportamento specifico per determinati input e output | La copertura di tutti gli stati e percorsi di esecuzione |
| Audit indipendente | Risultati dell’esame di un ambito e di una versione definiti | Una garanzia permanente per tutte le versioni future |
Una build riproducibile non equivale a scaricare un file con hash corrispondente
Secondo la definizione di Reproducible Builds, la riproducibilità riguarda la produzione di un risultato identico da sorgente, ambiente e istruzioni specificati. Se confronti soltanto il file scaricato con l’hash pubblicato dallo sviluppatore, hai effettuato un controllo di integrità; non hai ancora compilato personalmente il file a partire dal codice.
Per valutare un’affermazione di riproducibilità, chiedi la versione del codice, le dipendenze, le istruzioni di compilazione e il resoconto di un’altra persona che abbia riprodotto il risultato. Dire «il sorgente è disponibile su GitHub» non sostituisce queste prove.
Come interpretare correttamente la verifica di un APK?
- Ottieni il file dalla fonte ufficiale e per una versione specifica.
- Ottieni il digest e le informazioni sul firmatario da una fonte della cui autenticità ti fidi.
- Calcola l’hash del file e confrontalo con quello della stessa versione.
- In una verifica tecnica, convalida anche la firma; lo strumento ufficiale apksigner consente di farlo.
- Se trovi una discrepanza, interrompi l’installazione e chiariscine la causa; non firmare nuovamente il file per aggirare l’errore.
Esempio di comando di verifica per una persona esperta che disponga degli Android SDK Build Tools:
apksigner verify --verbose --print-certs app.apk
Il nome app.apk è soltanto un esempio. Il successo del comando non elimina la necessità di conoscere la chiave fidata dell’editore.
Qual è il ruolo di Proof Lab?
Il Proof Lab di Livara fornisce strumenti per verifiche specifiche. Leggi l’ambito di ogni test: hash di un file, esempio di accordo su una chiave o rifiuto di dati manomessi rispondono a domande differenti. Una dimostrazione crittografica riuscita non è un audit dell’intera app installata, del server, degli aggiornamenti o della gestione degli account.
Anche il modello di minaccia di Livara precisa che, se un aggressore sostituisce sia il file APK sia il digest visualizzato, la corrispondenza dell’hash non dimostra da sola l’autenticità. È un limite generale della verifica degli hash, non una caratteristica di una particolare app di messaggistica.
Che cosa chiedere leggendo un rapporto di audit?
- Quali organizzazioni o persone hanno svolto l’esame e dove si trova il rapporto pubblico?
- Quale versione e quale commit sono stati esaminati?
- Quali parti erano fuori dall’ambito dell’esame?
- Come sono stati corretti e nuovamente testati i problemi importanti rilevati?
- La versione che hai installato è la stessa oppure comprende quelle correzioni?
Non trarre conclusioni definitive da parole come «approvato» senza risposte a queste domande. Anche utilizzare un algoritmo standard non equivale alla certificazione dell’intero prodotto secondo uno standard.
Conseguenze per la scelta di un’app di messaggistica
Codice aperto e verificabilità non sono concorrenti: sono prove complementari. Preferisci un prodotto le cui affermazioni siano precise, tracciabili e chiaramente delimitate. Estendi poi lo stesso esame alla tua specifica modalità d’uso, come gruppi, versione web, backup e dispositivi collegati, anziché dedurre una sicurezza assoluta da un singolo test riuscito.



