Perché utilizzare HTTPS nel protocollo DP-3T?
Sto discutendo sulla trasparenza del protocollo HTTPS su un'app di rilevamento COVID-19 specifica. Gli oppositori sostengono che l'uso di HTTPS offuschi l'app, che l'app dovrebbe comportarsi in modo trasparente e inviare tutto il traffico su HTTP in modo che possano vedere cosa stanno inviando, perché i dati sono comunque "anonimi".
Dopo alcune indagini ho scoperto che questa parte segue rigorosamente il protocollo DP-3T , che afferma che "L'app apre una connessione TLS crittografata al server e invia il codice di autorizzazione [...]". So per certo che non hanno letto l'intero protocollo (nemmeno io, solo alcune parti di esso), ma anche con questo in mente, continuano a dire che non c'è motivo per non iniziare a utilizzare il semplice HTTP rimuovendo HTTPS. Vanno oltre e affermano che se appare nel protocollo, allora è mal progettato.
Quindi quali sarebbero i motivi per utilizzare HTTPS in un protocollo anonimo come DP-3T?
Risposte
Le connessioni TLS hanno 3 proprietà importanti e distinte:
- privacy, ovvero protezione dalle intercettazioni
- autenticazione, per assicurarsi che le parti che comunicano siano davvero chi fingono di essere
- integrità, ovvero i dati non possono essere modificati durante la trasmissione
Sembra che i tuoi avversari discutano solo contro il primo, ma gli altri due sono fondamentali per la maggior parte delle applicazioni. Per DP-3T in particolare, la mancanza di autenticazione significherebbe che un utente malintenzionato potrebbe intercettare una trasmissione e rilasciarla mentre l'applicazione penserebbe che il codice sia stato trasmesso correttamente.
E più in generale, TLS oggigiorno è economico e facile da configurare. Avresti bisogno di un ottimo motivo per non usarlo piuttosto che uno per usarlo. Infatti, almeno per iOS, è esplicitamente richiesto che un'app utilizzi la sicurezza del trasporto e le eccezioni devono essere giustificate.
Insieme ai criminali informatici disposti a eseguire intercettazioni telefoniche su reti wireless, le complicate reti odierne trasportano in genere un gran numero di centralini di sorveglianza diversi per scopi diversi . Questi dispositivi non solo intercettano, ma a volte possono modificare i dati trasmessi in modi arbitrari, intenzionalmente o meno.
Ad esempio, è possibile configurare un'apparecchiatura DPI installata da un ISP per sostituire l'annuncio del sito Web con gli annunci dell'ISP. Se configurata in modo errato, questa apparecchiatura sostituirebbe anche parti non correlate di codice Javascript o XML nei flussi di dati trasmessi da app mobili o siti Web.
Questo è solo un esempio.
Pertanto, il modello di minaccia contemporaneo per i siti Web e le app mobili presume solo HTTPS crittografato come trasporto. HTTPS è piuttosto facile da configurare in questi giorni, viene fornito gratuitamente ed elimina un numero così grande di minacce opache e complesse e potenziali bug che è più facile e molto più affidabile - dal punto di vista operativo - impostarlo che non farlo.
Gli oppositori sostengono che l'uso di HTTPS offuschi l'app, che l'app dovrebbe comportarsi in modo trasparente e inviare tutto il traffico su HTTP in modo che possano vedere cosa stanno inviando, perché i dati sono comunque "anonimi".
Assumerò che il "loro" in grassetto si riferisca all'utente finale e non agli sviluppatori (perché se si riferisce agli sviluppatori, allora questo è un semplice problema di non utilizzare tecniche di debug appropriate come la registrazione lato server ).
Realisticamente, quanti dei tuoi utenti finali eseguiranno Wireshark o un software simile? Di quelli che sono tecnicamente sufficientemente competenti per eseguire Wireshark, quanti troveranno seriamente sospetto il traffico HTTPS? È molto probabilmente il secondo protocollo più popolare (livello 7) al mondo (dopo SMTP, tenderei a immaginare) e, come dici tu, il protocollo DP-3T richiede esplicitamente il suo utilizzo. Chiunque lo trovasse sospetto è improbabile che sappia abbastanza sulla tecnologia di rete per utilizzare Wireshark in primo luogo. A mio parere, è più probabile che l'uso di HTTP non protetto susciti sospetti rispetto all'uso di HTTPS.
D'altra parte, è del tutto possibile nascondere i dati in flussi di rete non crittografati utilizzando un numero qualsiasi di forme diverse di steganografia (in questo caso, nascondendo alcuni dati negli ID temporanei presumibilmente "casuali" utilizzati da DP-3T, e / o nella chiave segreta quando viene caricata per un rapporto di infezione; entrambi sono blocchi opachi di dati binari senza una struttura significativa che l'utente possa esaminare). Quindi il fatto che l'utente finale tecnico sia in grado di monitorare il traffico della tua app in realtà non aiuta molto con la fiducia comunque.
In ogni caso, possiamo vedere chiaramente che:
- Questo non convince gli utenti non tecnici di nulla.
- È improbabile che sia efficace nel convincere gli utenti tecnici che la tua app è sicura e potrebbe convincerli che la tua app non è sicura o almeno mal progettata.
- Come descritto in molte altre risposte, TLS fa altre cose oltre alla riservatezza e ciò potrebbe compromettere la sicurezza della tua implementazione in altri modi.
Oltre agli ottimi punti espressi nelle altre risposte, la crittografia dei soli dati in cui la privacy è preoccupante indica agli avversari che si tratta di dati in cui la privacy è fonte di preoccupazione e consente loro di concentrare i propri sforzi sulla decrittografia di questi dati.
In altre parole, anche se la privacy è la tua unica preoccupazione, dovresti crittografare tutto in modo che gli avversari non sappiano dove guardare. Ciò significa utilizzare HTTPS, piuttosto che HTTP, ove applicabile.
Ecco un riferimento che ho trovato. Anche se si tratta di protocolli diversi, l'idea di base è la stessa. Autodifesa e-mail :
Più puoi crittografare i tuoi messaggi, meglio è. Se si crittografano le e-mail solo occasionalmente, ogni messaggio crittografato potrebbe sollevare una bandiera rossa per i sistemi di sorveglianza. Se tutta o la maggior parte della tua posta elettronica è crittografata, le persone che si occupano della sorveglianza non sapranno da dove iniziare.