Trasmissione sicura dei dati dell'applicazione tramite il canale SMS

7

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.

    
posta Silverfox 15.04.2016 - 07:25
fonte

5 risposte

4

Il TextSecure Messenger (ora chiamato Signal) forniva sms crittografati basati su uno schema di crittografia a chiave pubblica. Tuttavia, hanno abbandonato la funzione un anno fa . Secondo il blogpost, i motivi per abbandonare il supporto sono stati l'impossibilità di farlo correttamente con gli iPhone e la cattiva sicurezza degli SMS in generale.

Questo è ovviamente solo un esempio - ma mostra un possibile approccio per crittografare il contenuto e proteggere l'integrità dei messaggi SMS.

Non posso aiutarti con i dettagli della crittografia in questione - ma forse vale la pena esaminare la documentazione e il codice sorgente di Textsecure / Signal / Silence ( Forcella Textsecure) .

    
risposta data 25.04.2016 - 11:38
fonte
2

Non esiste una trasmissione sicura dei dati tramite SMS. I dati sono esposti a una grande varietà di minacce alla divulgazione di informazioni da e attraverso la telco, da strumenti che sincronizzano i tuoi SMS con e-mail (come Exchange e Google Voice).

Come dice Lukas, è estremamente difficile crittografare i tuoi dati e poi inviarli via SMS. Se hai intenzione di creare un'app, allora perché utilizzare SMS come livello di trasferimento? Se non hai intenzione di creare un'app, allora gli SMS non sono sicuri.

    
risposta data 26.04.2016 - 21:16
fonte
1

Non sono a conoscenza di tecnologie esistenti che lo facciano. Mi sembra che qualsiasi tipo di PKI implichi l'invio di dati attraverso vettori non fidati e sembra generalmente pieno di pericoli. Inoltre, le lunghezze delle chiavi che vorresti utilizzare per la tua chiave pubblica potrebbero non adattarsi nemmeno all'interno di un singolo SMS a causa della lunghezza e dei diversi possibili protocolli di codifica dei caratteri.

L'unica soluzione che mi viene in mente è di usare qualcosa come Diffe-Hellman per generare una chiave condivisa e quindi usare la crittografia simmetrica su SMS, che di nuovo potrebbe incorrere in problemi con la codifica dei caratteri. Come hai detto, questa chiave sarebbe stata memorizzata sul dispositivo come una chiave per conversazione (SIM-SIM), che poteva essere estratta dal dispositivo e utilizzata per decifrare una conversazione.

SMS è stato utilizzato per quasi 30 anni a questo punto e semplicemente non è stato progettato pensando alla sicurezza. La maggior parte degli altri protocolli che affrontano questo problema devono essere sostituiti da una versione più sicura o avvolti da qualche altra sicurezza. è possibile che la sicurezza MMS sia più probabile, ma non ne so molto.

    
risposta data 26.04.2016 - 20:28
fonte
1

Per farla breve: Per motivi preesistenti, non è possibile criptare SMS nel suo complesso. Ma per quanto riguarda il messaggio stesso?

Ora non sto dicendo che dovresti farlo, ma potresti facilmente usare una chiave per crittografare il messaggio che vuoi inviare, quindi inviare il messaggio codificato in alcuni testi con le meta informazioni per collegarli insieme. Quindi hai solo bisogno di un altro modo per inviare la chiave in modo sicuro e privato all'altra persona. Questa è la vera domanda.

Ovviamente questo mostra la vera domanda a cui dovresti pensare invece: Perché dovrei utilizzare SMS per inviare dati protetti? E la risposta è che non dovrebbe .

    
risposta data 27.04.2016 - 00:59
fonte
0

Potrei sembrare paranoico e deludente, ma se i tuoi clienti sono su firmware di borsa / spywares / crapwares o - peggio ancora - su iOS, allora non hai altra opzione che un decryptor / firmatario di messaggi esterni, uno offline basato su sistema sigillato con chiave pre-testata, o - almeno - un gettone basato sul tempo OTP. PGP, RSA, SSL, e.t.c. sono buoni a meno che non siano compromessi dal firmware . Nessun ulteriore commento da aggiungere, purtroppo.

    
risposta data 27.04.2016 - 02:10
fonte

Leggi altre domande sui tag