Verifica delle firme APK: come garantire che la tua app sia sicura
Il sideload delle app su Android offre libertà e flessibilità, ma comporta un grosso rischio: applicazioni manomesse. Gli autori malintenzionati spesso modificano le app più diffuse per includere spyware o adware prima di ridistribuirle su siti non ufficiali. Come puoi essere sicuro che l'APK che hai appena scaricato sia esattamente lo stesso caricato dallo sviluppatore su Google Play?
La risposta si riduce a Firme digitali APK. Di seguito, tratteremo come funziona effettivamente la firma delle app e vedremo come utilizzare il nostro Verificatore APK online per verificare l'hash e il certificato di un APK prima di decidere di fidarti di esso.
La versione da 60 secondi:
Android firma ogni APK con una chiave editore. Il telefono rifiuta un "aggiornamento" la cui firma non corrisponde all'installazione esistente; questa è la principale difesa anti-impersonificazione del sistema operativo. Per verificare un APK trasferito localmente, calcola il suo hash SHA-256 e l'impronta digitale del certificato di firma, quindi confronta entrambi con i valori di cui ti fidi (l'installazione esistente del Play Store, l'impronta digitale pubblicata dallo sviluppatore o una copia precedente nota e valida). Una corrispondenza significa che il file è identico in byte e firmato dallo stesso editore; una mancata corrispondenza significa non installare.
Cos'è una firma APK?
Una firma digitale è una prova crittografica di identità. Quando uno sviluppatore termina un'app, la "firma" utilizzando una chiave privata (keystore). Android utilizza quindi la chiave pubblica corrispondente incorporata nell'APK per garantire:
- Integrità: Il file non è stato modificato da quando è stato firmato.
- Autenticità: Lo sviluppatore è chi dice di essere.
- Aggiornamenti: Solo gli APK firmati con la stessa chiave possono aggiornare un'app esistente sul tuo telefono.
Evoluzione della firma: V1, V2, V3 e V4
Google ha costantemente migliorato la sicurezza dell'APK nel corso degli anni:
- V1 (Firma del barattolo): Firma le singole voci nel ZIP. Lento e vulnerabile a determinati attacchi.
- V2 (schema di firma APK): Firma l'intero blocco di file. Molto più veloce da verificare e più sicuro. (Android 7.0+)
- V3 (rotazione chiave): Consente agli sviluppatori di modificare la chiave di firma mantenendo gli aggiornamenti dell'app. (Android 9.0+)
- V4 (Streaming): Ottimizzato per installazioni incrementali su ADB. (Android 11+)
Come verificare le firme APK online
Il nostro Strumento di verifica APK non si limita a calcolare gli hash; esegue un controllo crittografico completo della catena di certificati. Ecco come usarlo:
Passaggi per verificare:
- Passare alla pagina Verificatore APK.
- Seleziona il tuo file APK o XAPK.
- Il nostro strumento analizza la directory META-INF/ ed estrae i dati del certificato (.RSA, .DSA o .EC).
- Attendi il completamento dell'analisi (ci vogliono solo pochi secondi).
- Esamina Informazioni sul certificato: nome dello sviluppatore, organizzazione e paese di origine.
- Controlla Hash: confronta il codice SHA-256 visualizzato sul nostro sito con il valore pubblicato dall'editore sul proprio sito ufficiale, sulla pagina di rilascio del progetto o sul manifest della firma.
Avviso di sicurezza
Se il verificatore mostra un "Certificato di debug" o un'entità "autofirmata" sconosciuta per un'app importante come Facebook o WhatsApp, NON INSTALLARLO. Quasi certamente è compromesso.
Comprendere i checksum (MD5, SHA-1, SHA-256)
I checksum sono stringhe di lunghezza fissa che rappresentano l'intero file. Se modifichi un singolo pixel nell'icona di un'app, l'hash SHA-256 cambierà completamente.
| Tipo di hash | Livello di sicurezza | Note |
|---|---|---|
| MD5 | Eredità | Vulnerabile alle collisioni. Non per la sicurezza. |
| SHA-1 | Moderare | Ancora ampiamente utilizzato per ricerche rapide. |
| SHA-256 | Eccellente | Lo standard moderno per la verifica delle app. |
Cosa ti dice realmente un certificato di firma
Quando il verificatore restituisce un certificato, le parti che contano per la sicurezza del sideload non sono i bit colorati dei metadati X.509 ma una piccola manciata di campi. In termini pratici:
- Impronta digitale SHA-256 del certificato. Questo è il valore più importante: un hash di 64 caratteri esadecimali che identifica in modo univoco la chiave di firma. Due APK con la stessa impronta digitale SHA-256 sono stati firmati con la stessa chiave privata. Questo è ciò che significa "continuità della firma" nella logica di aggiornamento del sistema operativo.
- Nome distinto del soggetto. Spesso qualcosa come CN=Some App, O=Example Inc., C=US. Utile come suggerimento, non come prova di identità, poiché un utente malintenzionato può inserire qualsiasi stringa desideri nel DN del proprio certificato autofirmato. Fai sempre un controllo incrociato sull'impronta digitale, non sul nome.
- Periodo di validità. La maggior parte delle chiavi di pubblicazione legittime vengono generate con una validità di circa 25 anni (la raccomandazione storica è di 10.000 giorni). Un certificato che scade il mese prossimo, o uno la cui validità si sovrappone già al passato, è un segnale di allarme.
- Algoritmo di firma. Le app moderne utilizzano SHA256withRSA o SHA256withECDSA. MD5 è rotto; SHA1withRSA è deprecato. Un APK firmato solo con v1/SHA-1 è sospetto nel 2026.
Hash vs firma: la differenza che la maggior parte dei tutorial salta
Le persone spesso confondono "hash" e "firma". Hanno scopi molto diversi e una verifica sicura necessita di entrambi:
- Uno hash (SHA-256 dell'intero APK) ti dice se i byte del file sono identici a una copia di riferimento. Se il tuo hash corrisponde all'hash pubblicato dall'editore, il file non è stato modificato da quando è stato calcolato quell'hash. Un controllo hash da solo non dice nulla su chi ha creato i byte.
- Un firma dimostra chi ha creato i byte e precisamente che il detentore della chiave privata abbinata al certificato di firma ha prodotto questo file. Un solo controllo della firma non dice nulla sul fatto che il file sia stato manomesso dopo la firma (il sistema operativo lo rileverà e lo rifiuterà, ma il certificato stesso non "conosce" il contenuto del file).
Per un APK con trasferimento laterale, la garanzia più efficace combina le due cose: l'impronta digitale del certificato corrisponde all'impronta digitale nota dell'editore E lo SHA-256 del file corrisponde al valore pubblicato dall'editore per quella build esatta.
Dove ottenere un'impronta digitale di riferimento affidabile
La parte più difficile della verifica è conoscere il valore giusto con cui effettuare il confronto. Alcuni approcci affidabili, in ordine approssimativo di confidenza:
- Il sito web o la pagina di rilascio dell'editore. Molti progetti open source e fornitori attenti alla sicurezza pubblicano l'impronta digitale SHA-256 del loro certificato di firma insieme ai download. Questo è il gold standard.
- Un'installazione esistente del Play Store. Se l'app è già installata su un dispositivo gestito da Play, l'impronta digitale del suo certificato è l'impronta digitale dell'editore per definizione. Confronta l'impronta digitale dell'APK caricato localmente con quella. Strumenti come Apk Analyser (in Android Studio) o apksigner verify --print-certs lo leggono direttamente da un APK installato.
- Il primo APK che hai installato di questa app. Se usi l'app da un po' e non hai mai ricevuto un messaggio di "mancata corrispondenza della firma", puoi utilizzare una qualsiasi delle tue copie precedenti come riferimento. Gli aggiornamenti successivi dello stesso editore devono utilizzare la stessa chiave (o ruotare tramite v3, nel qual caso la catena continua a verificare).
- Uno snapshot pubblico archiviato. Internet Archive e servizi simili conservano occasionalmente le vecchie pagine di rilascio degli APK insieme ai relativi hash dichiarati. Utile per build molto vecchie in cui la pagina originale dell'editore è scomparsa.
Errori comuni di verifica
- Confrontando il campo sbagliato. "MD5 del file APK" non è uguale a "MD5 del certificato". Utilizzare lo stesso campo per il file candidato e il riferimento.
- Fidarsi dei metadati del file. Un APK può includere qualsiasi stringa di versione, qualsiasi etichetta di pacchetto, qualsiasi tag di autore nel suo manifest. Nessuno di questi è crittografico. Il blocco della firma è l'unica cosa effettivamente verificata dal sistema operativo.
- Ho saltato la verifica perché il file è stato inviato da un amico. Un amico che dice "questo è l'APK ufficiale" non lo ha verificato più di quanto tu abbia fatto. Insisti su una fonte che pubblichi un'impronta digitale che puoi controllare.
- Trattare un campo corrispondente come sufficiente. Corrisponde sia all'impronta digitale SHA-256 del file che all'impronta digitale SHA-256 del certificato; la corrispondenza dell'uno ma non dell'altro è un segno che i byte sono alterati o che la fonte sta impersonificando l'editore.
- Disattivare Play Protect per "convenienza". Play Protect è uno scanner di seconda opinione, non un sostituto della verifica della firma, ma rileva malware reali che la verifica della firma non può, perché Protect riconosce i pacchetti notoriamente dannosi in base al contenuto, non alla chiave di firma. Lascialo acceso.
La tua app è sicura?
Non indovinare. Verifica i tuoi APK trasferiti localmente rispetto ai certificati ufficiali degli sviluppatori in pochi secondi.
Avvia la verifica dell'APKDomande frequenti (FAQ)
Perché Android mi impedisce di installare un APK modificato?
Perché la firma del nuovo APK non corrisponde a quella già installata. Ciò impedisce agli hacker di "sovrascrivere" la tua vera app bancaria con una falsa.
Posso firmare nuovamente un APK dopo averlo modificato?
Sì, ma utilizzerai uno chiave diversa. L'app verrà comunque installata su un telefono "pulito", ma non riceverà più aggiornamenti dallo sviluppatore originale.
Cos'è il blocco del certificato?
Si tratta di una funzionalità di sicurezza avanzata in cui un'app controlla esplicitamente un certificato specifico prima di comunicare con i suoi server, rendendo inutili le app manomesse anche se installate correttamente.
Rendi la verifica della firma parte di ogni sideload
Le firme svolgono gran parte del lavoro pesante nella moderna sicurezza Android. Trascorrere qualche secondo in più per eseguire un file tramite uno Verificatore APK è un modo economico per tenere un'app manomessa lontana dal tuo dispositivo prima che venga installata.