L'intera ragione per cui SSL e SSH sono stati definiti era precisamente per impedire attacchi passivi e attivi da qualsiasi posizione tra i due punti finali. In particolare, i tuoi router R1 e R2:
- non può apprendere i dati trasferiti da A a B ( riservatezza );
- non può alterare i dati trasferiti ( integrità );
- non può impersonare A o B ( autenticità ).
Nel caso specifico di inserimento di nuovi dati all'interno del tunnel, vediamo come viene evitato nel caso di SSL (SSH è simile): in SSL / TLS , i dati vengono inviati come successivi record . Ogni record contiene fino a 16 kB di dati. Una volta che l'iniziale handshake ha avuto luogo (questo è dove avvengono i certificati e la crittografia asimmetrica), entrambi gli endpoint condividono una chiave di sessione K (chiamata "chiave master" in SSL terminologia), da cui calcolano alcune chiavi utilizzate per crittografare e autenticare il record. In particolare, per ogni record è calcolato un codice di autenticazione dei messaggi , che può essere visualizzato come una sorta di hash con chiave; il mittente calcola il MAC e il ricevitore lo ricalcola. La proprietà crittografica del MAC è che, senza la conoscenza della chiave MAC, non è possibile forgiare una coppia (d, m) tale che m sia il MAC per dati d .
Il MAC è calcolato sulla concatenazione dei dati del record e, soprattutto, un numero di sequenza del record. A causa del MAC, gli attaccanti non possono inserire record extra, riprodurre vecchi record, rimuovere record o modificare l'ordine dei record, perché ciò richiederebbe la ricalcolo del MAC per i nuovi dati o il numero di sequenza - e, senza la chiave, è un no go .
Si noti che i router R1 e R2 possono ancora modificare i dati o bloccarli; le alterazioni sono rilevate in modo affidabile dal ricevitore, ma se l'attaccante vuole semplicemente tagliare i fili, beh, può farlo. Niente in SSL (o SSH) prova a recuperare dalle alterazioni.