Implementare il certificate pinning in un'applicazione mobile significa far sì che l'applicazione, in fase di instaurazione di una connessione HTTPS, non si accontenti della validità del certificato bensì verifichi che il certificato sia esattamente quello che si aspetta.

Ma cosa succede in fase di rinnovo del certificato? Per ovviare a questo problema è consigliabile effettuare il certificate pinning sul certificato intermedio della catena. Il certificato di ultimo livello in genere ha una validità annuale, il certificato intermedio invece ha una validità, in genere, dai 3 ai 10 anni. Ovviamente più si sale di livello più aumenta la durata ma più aumenta il numero di certificati emessi.

Ad ogni modo il certificato prima o poi scadrà, quindi è importante non aspettare la sua scadenza prima di rilasciare sul relativo store l'App aggiornata con il certificato nuovo. Una soluzione potrebbe essere anche quella di avere un meccanismo per avvisare gli utenti che l'App che si sta utilizzando fra alcuni mesi smetterà di funzionare, quindi si consiglia l'aggiornamento.

Infine sarebbe buona norma avere almeno un paio di certificati intermedi con scadenza sfalsata, in modo da poter effettuare lo switch del certificato sul server web dall'uno all'altro per gestire le applicazioni non aggiornate all'ultima versione.

Ma il certificate pinning, quindi, ci assicura che non sia possibile intercettare le comunicazioni dell'App?

Ovviamente no, tutto è possibile. Se un utente volesse, potrebbe decompilare la nostra applicazione e invece di andare ad analizzare tutto il codice, potrebbe cercare il punto in cui effettuiamo il certificate pinning e modificarlo con un certificato fraudolento, ricompilare l'App ed avviarla con un certificato self-signed. Per ovviare a questo tipo di attacco è buona norma, innanzitutto offuscare il codice dell'applicazione così da rendere più difficile l'analisi del decompilatore e, comunque, scrivere il codice in modo da non rendere facilmente individuabile o modificabile il punto in cui si effettua il pinning.

Insomma nell'informatica nulla è davvero sicuro, quello che possiamo fare però è cercare di rendere la vita sempre più difficile agli utenti malintenzionati.

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *