Un dispositivo sul campo apre una connessione verso un servizio e la domanda di progettazione arriva come scelta tra VPN e TLS. Questa impostazione è sbagliata, perché i due fanno lavori diversi. TLS autentica l’estremità dell’applicazione e protegge la conversazione; mentre una VPN controlla la raggiungibilità e protegge i pacchetti tra pari. Seguite la connessione dal dispositivo verso l’esterno e ogni livello ha la propria risposta.

Se non sapete dire dove termina TLS, non sapete dire di cosa si fida davvero l’applicazione.

Trovate dove termina davvero TLS

Partite dall’applicazione del dispositivo e seguite la connessione fino al processo che completa l’handshake. Se un proxy termina TLS prima del mainframe, il percorso protetto finisce al proxy. Il salto restante ha bisogno della propria protezione documentata.

Chiamarlo end-to-end per ipotesi è il modo in cui una revisione di progettazione approva una lacuna. Disegnate il punto di terminazione e l’ancora di fiducia sullo stesso diagramma.

TLS trasporta richieste e risposte in entrambe le direzioni, quindi un’applicazione bidirezionale non ha intrinsecamente bisogno di una VPN al posto di TLS. Vale anche il contrario: un’implementazione può aver ancora bisogno di una VPN per altri protocolli sullo stesso dispositivo.

Decidete cosa deve autenticare il dispositivo

Configurate la convalida dell’identità del server e le radici di fiducia previste. Se ogni dispositivo deve dimostrare la propria identità, scegliete un modello di autenticazione client supportato e registrate una credenziale distinta per dispositivo. Le credenziali condivise trasformano un solo dispositivo rubato in un problema per l’intera flotta.

Pianificate la protezione delle chiavi, il rinnovo, la revoca e il ripristino prima della spedizione. Un dispositivo sul campo che non può essere registrato di nuovo dopo un rinnovo fallito diventa un intervento in loco, e quel costo plasma la progettazione più dell’handshake.

Usate una libreria supportata e le linee guida attuali. Linee guida moderne per il deployment di TLS vietano di negoziare TLS 1.0 e 1.1, e un riferimento a TLSv1 in una vecchia nota di progetto non è un requisito.

Chiudete quando l’handshake fallisce

Un handshake fallito o un controllo di identità fallito non deve tornare in silenzio al protocollo in chiaro originale. Quel ritorno è la vulnerabilità che il lavoro su TLS doveva chiudere. Rendete visibile il fallimento all’operatore del dispositivo e al servizio, e richiedete il canale protetto per le operazioni sensibili. Poi lasciate che l’autorizzazione dell’applicazione decida cosa può fare un dispositivo autenticato.

Definite la durata della connessione, il framing, i timeout e il comportamento di ripetizione come parte del contratto. La crittografia non rende sicuro un comando ripetuto, e un nuovo tentativo dopo un’operazione precedente incerta richiede una risposta a livello applicativo.

Scrivete la regola di ritorno. «Si riconnette senza TLS se l’handshake fallisce» è una decisione di progetto, e dovrebbe essere esplicita.

Date alla VPN solo il lavoro che può fare

Una VPN può limitare la raggiungibilità e proteggere i pacchetti fino al proprio pari. TLS protegge la relazione dell’applicazione con l’estremità scelta. I loro punti di terminazione possono differire, e nessuno dei due mette in sicurezza i dati memorizzati dell’estremità o l’accesso amministrativo.

Misurate il costo dell’handshake, la messaggistica stabile e la riconnessione sul dispositivo reale invece di supporre che un meccanismo sia più veloce. Poi provate i quattro casi che contano: lo scambio previsto, un’identità server errata, un dispositivo non autorizzato e una riconnessione dopo un’operazione incerta. Annotate il risultato per ogni caso, compreso l’errore che il dispositivo mostra.

Articoli correlati