SHARE THE PERSPECTIVE
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?

  1. Ottieni il file dalla fonte ufficiale e per una versione specifica.
  2. Ottieni il digest e le informazioni sul firmatario da una fonte della cui autenticità ti fidi.
  3. Calcola l’hash del file e confrontalo con quello della stessa versione.
  4. In una verifica tecnica, convalida anche la firma; lo strumento ufficiale apksigner consente di farlo.
  5. 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.

Verifica l’hash del file d’installazione Android in Livara
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗