Esistono applicazioni di mobile banking che utilizzano il canale SMS per comunicare con il proprio server. Alcuni di questi offrono sia canali internet che sms che il cliente può scegliere.
Anche se ci sono molti dati sulla comunicazione sicura via internet (come implementare TLS, pinning dei certificati, ecc.) da parte di OWASP, Enisa, Gartner e altre organizzazioni sembra mancare guide ed esercitazioni su come trasmettere i dati in modo sicuro via SMS canale.
Mi vengono in mente varie opzioni sull'architettura sicura per la trasmissione di dati via SMS:
-
Sistema simile a PGP in cui la chiave pubblica del server è in bundle con l'applicazione e risiede sui telefoni dei clienti. L'applicazione utilizza questa chiave e una chiave simmetrica per crittografare i suoi dati.
-
Sistema simile a HTTPS in cui ogni volta che il client e il server comunicano, concordano su una chiave di sessione e i dati vengono crittografati utilizzando tale.
Altre soluzioni in cui la chiave simmetrica viene archiviata o generata sul lato client e non viene utilizzata la crittografia a chiave pubblica sono generalmente insicure.
Gli SMS hanno una lunghezza limitata, quindi uno dei nostri obiettivi in questo sistema deve essere mantenere i messaggi il più brevi possibile, quali sono alcuni modi in cui possiamo raggiungere questo obiettivo senza perdere la sicurezza del sistema. (Rende la prima opzione proposta (simile a PGP) più adatta?)
In questo scenario i dati vengono crittografati sia dal server che dai client, anche qui l'integrità è la nostra preoccupazione e vogliamo mantenere il numero / lunghezza dei messaggi trasmessi il più breve possibile per ridurre al minimo il tempo di andata e ritorno e il numero di messaggi di testo inviato.