it-swarm-eu.dev

Qual è la differenza tra SSH e IPsec?

Sembra che ci sia una crittografia simile in entrambi. Entrambi usano asimmetrici (RSA, curve ellittiche, ecc.) Per lo scambio iniziale di chiavi, quindi passano ad alcuni protocolli simmetrici (AES, Blowfish, ecc.). Mi chiedo se qualcuno qui potrebbe avere un momento per spiegare la differenza tra i 2 e come apparirebbero in modo diverso all'utente (velocità, applicazioni in cui sono presenti, ecc.).

16
stackuser

La risposta di @ Graham-Hill è corretta in generale ma breve e pedantemente errata, quindi mi espanderò su di essa.

SSH è a livello di applicazione: puoi pensarlo come SSH/TCP/IP o SSH-over-TCP-over-IP. TCP è il livello di trasporto in questo mix, IP è il livello di Internet. Altri protocolli "Applicazione" includono SMTP, Telnet, FTP, HTTP/HTTPS ...

IPSec è implementato utilizzando due trasporti separati - ESP ( Encapsulating Security Payload per la crittografia) e AH ( Authentication Header per autenticazione e integrità). Quindi, supponiamo che sia stata stabilita una connessione Telnet su IPSec, in genere è possibile immaginarla come Telnet/TCP/ESP/AH/IP.

(Solo per rendere le cose interessanti, IPSec ha due modalità: Transport (delineato sopra) e Tunnel. In modalità tunnel, il livello IP è incapsulato all'interno di IPSec e quindi trasmesso (di solito) un altro livello IP. Quindi finiresti con Telnet/TCP/IP/ESP/AH/IP!)

Quindi - chiedi "spiega la differenza tra i due" -

SSH è un'applicazione e IPSec è un trasporto. Quindi SSH porta "un" tipo di traffico e IPSec può trasportare "qualsiasi" tipo di TCP o traffico UDP. * Ciò ha implicazioni descritte di seguito:

Chiedete "come apparirebbero diversamente all'utente" -

Poiché IPSec è un livello di trasporto, dovrebbe essere invisibile all'utente, così come il livello TCP/IP è invisibile all'utente di un browser Web. Infatti, se si utilizza IPSec, è invisibile allo scrittore del browser Web e del server Web - non devono preoccuparsi impostazione o meno impostazione di IPSec; questo è il lavoro dell'amministratore di sistema. Contrastalo con HTTPS, dove il server necessita di una chiave privata e di un certificato correttamente abilitati, librerie SSL compilate e codice scritto; il browser del client ha compilato le librerie SSL e scritto il codice e ha la chiave pubblica CA appropriata o urla ad alta voce (intromettendosi nell'applicazione) se non è presente.

Quando IPSec è impostato, poiché agisce a livello di trasporto, può supportare più applicazioni senza problemi. Una volta configurato IPSec tra due sistemi, è una differenza davvero minima tra lavorare per 1 o 50 applicazioni. Allo stesso modo, IPSec crea un semplice wrapper per protocolli che utilizzano connessioni multiple come FTP (controllo e dati possono essere connessioni separate) o H.323 (non solo connessioni multiple, ma più trasporti (TCP e UDP)!).

Dal punto di vista dell'amministratore, tuttavia, IPSec è più pesante di SSH o SSL. Richiede una maggiore configurazione in quanto funziona a livello di sistema anziché a livello di applicazione. Ogni relazione (da host a host, da host a rete o da rete a rete) deve essere impostata individualmente. D'altra parte, SSH e SSL sono generalmente opportunistici - usando un modello PKI (CA) o web of trust, rendono ragionevolmente facile fidarsi dell'altra estremità della connessione senza molta configurazione in anticipo. IPSec può essere opportunistico, ma generalmente non viene utilizzato in questo modo, in parte perché la configurazione di una connessione IPSec richiede spesso tentativi ed errori. L'interoperabilità tra diversi fornitori (Linux, Checkpoint, Cisco, Juniper, Etc) non è semplice; la configurazione utilizzata per rendere Cisco <-> Checkpoint è probabilmente diversa dalla configurazione utilizzata per rendere Cisco <-> Juniper. Contrastalo con SSH: al server OpenSSH non importa davvero se stai eseguendo PuTTY, OpenSSH (* nix o Cygwin) SSH o Tectia SSH.

Per quanto riguarda la velocità - non ho buoni numeri da darti e parte della risposta è "dipende" - se è coinvolto IPSec, è probabile che l'effettiva elaborazione IPSec venga scaricata su un firewall o un concentratore VPN con hardware veloce dedicato, che lo rende più veloce di SSH che è quasi sempre crittografato utilizzando la stessa CPU per uso generico che esegue anche il sistema operativo del server e le applicazioni. Quindi non è davvero da mele a mele; Scommetto che potresti trovare casi d'uso in cui una delle due opzioni è più veloce.


* Questo non è rigorosamente vero. SSH supporta un'applicazione terminale, un'applicazione di copia file/ftp e TCP. Ma in realtà è solo un'applicazione davvero ricca, non un trasporto - il suo tunneling non è un sostituto del trasporto IP.

22
gowenfawr

SSH è a livello di applicazione di TCP/IP mentre IPSEC è a livello di trasporto.

2
Graham Hill

Ci può essere una grande differenza quando si esegue TCP su un TCP come SSH rispetto a un sistema di consegna di pacchetti non garantito come IPsec in cui si verifica una significativa perdita di pacchetti Vedi http://sites.inka.de/bigred/devel/tcp-tcp.html per ulteriori dettagli e un esempio del mondo reale.

Nota a margine: ho eseguito TCP su SSH da alcuni decenni perché è conveniente e non ho riscontrato il problema, passerò a una soluzione che gestisce meglio la perdita di pacchetti ma è più difficile per installare la soluzione solo se necessario.

0
iheggie