Domanda:
Qual è la differenza tra SSL e SSH? Quale è più sicuro?
Am1rr3zA
2011-01-13 15:40:18 UTC
view on stackexchange narkive permalink

Qual è la differenza tra SSH e SSL? Qual è il più sicuro, se puoi confrontarli insieme?
Quale ha più potenziali vulnerabilità?

Questa non è una vera domanda. Stai confrontando mele e arance. Ciò che potrebbe aiutare è se potessi spiegare perché vuoi sapere, poiché questo potrebbe guidare le risposte. ad esempio, stai cercando di implementare una soluzione di accesso sicuro e stai cercando la più facile da proteggere?
@Rory Non la penso così, perché so che entrambi fanno un lavoro simile (non sto confrontando mele e arance), ma forse mi sbaglio, quindi sono grato se la comunità mi mostra il mio errore.
@Am1rr3zA, non è esattamente giusto che facciano un lavoro simile. In pratica, SSL e SSH vengono generalmente utilizzati per scopi diversi: SSH viene spesso utilizzato per l'accesso remoto, SSL per l'accesso Web crittografato.
@D.W. Sembra che a volte siano usati per la stessa cosa, ad es. ** SFTP ** sembra essere basato su * SSH *, mentre ** FTPS ** è basato su * SSL *.
Se divorziamo dall'uso significativo di questi due protocolli, sì, la domanda è pertinente al suo intento. Un'analogia. Quale è più sicuro? 1.) Una banca deibold con cassaforte magnetica? 2.) Una password di 26 caratteri che cambia quotidianamente ed è crittografata a 1024 bit? La maggior parte delle persone aruge la debacle delle mele e delle arance. IGNORARE che uno serve a proteggere l'accesso a un dispositivo elettronico e l'altro è fisico e ha lo scopo di proteggere il denaro. CHE RICHIEDE IL MAGGIORE LIVELLO DI SFORZO E TEMPO PER REALIZZARE IL COMPROMESSO. Questo è davvero quello che sta chiedendo. Se rispondiamo con quella mentalità, si può rispondere.
Ognuno ha un punto di forza nel proprio elemento. Quindi guardalo da una prospettiva hacker. Quale preferiresti hackerare? Inoltre, la domanda dovrebbe essere posta "Che è più sicuro allo scopo di ... XYZ" Dato che ha posto la domanda senza fornire lo scopo è lì che tutti sono rimasti bloccati. Il mio esempio con la cassaforte vs. logon mostra due scopi diversi (che è dove le persone affermavano "Ehi, questi due protocolli e la loro sicurezza in genere non svolgono la stessa funzione in uso" ed è assolutamente corretto. Uno potrebbe ancora essere "più sicuro" dell'altro.
Otto risposte:
Thomas Pornin
2011-01-13 20:55:15 UTC
view on stackexchange narkive permalink

SSL e SSH forniscono entrambi gli elementi crittografici per costruire un tunnel per il trasporto di dati riservati con integrità verificata. Per quella parte, usano tecniche simili e possono subire lo stesso tipo di attacchi, quindi dovrebbero fornire una sicurezza simile (cioè una buona sicurezza) assumendo che siano entrambe correttamente implementate. Che entrambi esistano è una sorta di sindrome di NIH: gli sviluppatori SSH avrebbero dovuto riutilizzare SSL per la parte tunnel (il protocollo SSL è abbastanza flessibile da adattarsi a molte varianti, incluso il non utilizzo di certificati).

Differiscono nelle cose che si trovano intorno al tunnel. SSL utilizza tradizionalmente i certificati X.509 per annunciare le chiavi pubbliche del server e del client; SSH ha un proprio formato. Inoltre, SSH viene fornito con una serie di protocolli per ciò che va all'interno del tunnel (multiplexing di diversi trasferimenti, esecuzione dell'autenticazione basata su password all'interno del tunnel, gestione del terminale ...) mentre non esiste nulla di simile in SSL o, più precisamente, quando tali cose vengono utilizzate in SSL non sono considerate come parte di SSL (ad esempio, quando si esegue l'autenticazione HTTP basata su password in un tunnel SSL, diciamo che fa parte di "HTTPS", ma funziona davvero in un modo simile a quello che accade con SSH).

Concettualmente, potresti prendere SSH e sostituire la parte tunnel con quella da SSL. Puoi anche prendere HTTPS e sostituire la cosa SSL con SSH-with-data-transport e un hook per estrarre la chiave pubblica del server dal suo certificato. Non c'è impossibilità scientifica e, se fatto correttamente, la sicurezza rimarrebbe la stessa. Tuttavia, non esiste un insieme diffuso di convenzioni o strumenti esistenti per questo.

Quindi non usiamo SSL e SSH per le stesse cose, ma è a causa di quali strumenti storicamente venivano forniti con le implementazioni di quei protocolli, no a causa di una differenza relativa alla sicurezza. E chiunque implementa SSL o SSH farebbe bene a controllare che tipo di attacchi sono stati tentati su entrambi i protocolli.

Buon lavoro. E infatti, poiché SSH è più facile da configurare rispetto a SSL, molte persone eseguono il tunneling http (non https) all'interno di SSH, ad es. per eseguire l'amministrazione del sistema remoto con uno strumento Web GUI come ebox o webmin.
Solo per sottolineare, non è del tutto vero che i ragazzi di SSH "* avrebbero dovuto *" aver usato SSL: SSH è stato progettato in modo molto specifico per avere una piccola superficie di attacco ed essere molto sicuro. SSHv2 non ha nessuno dei problemi e delle insidie ​​in SSL / TLS, quindi andando con una cosa più piccola che hanno capito bene, con meno complessità, sono usciti con qualcosa di molto più adatto alla loro situazione. Dipende da quanto sei paranoico: SSL non è inutilizzabile, a seconda dell'applicazione, ma il design di SSH lo rende accettabile in situazioni / comunità di sicurezza in cui SSL semplicemente non è affidabile.
@NicholasWilson "Il design di _SSH lo rende accettabile in situazioni / comunità di sicurezza in cui SSL semplicemente non è affidabile_" come ...
SSL e SSH sono stati sviluppati in parallelo (entrambi rilasciati nel 1995), quindi non è chiaro se SSH possa aver usato SSL. Anche se _dovrebbe_ aver usato il contemporaneo SSL 2.0 è molto dubbio :-)
Bene, SSH 2.0 è stata una riscrittura completa del protocollo ed è apparso intorno al 1999, in modo che si potesse riutilizzare SSL 3.0 o anche TLS 1.0. Ma, ovviamente, TLS _ sembra_ essere legato a X.509, il che spaventa gli sviluppatori.
@ThomasPornin, SSL è venuto prima di SSH?
@NicholasWilson, Wow, quindi stai dicendo che ** la sicurezza di SSH batte SSL **?E la risposta di user185 di seguito che afferma il completo opposto?
Sì, penso che il livello di trasporto / crittografia di SSH sia preferibile a SSL - per i motivi che varie persone hanno indicato sopra (# 1 eccessiva complessità di SSL a causa del vasto numero di patch al protocollo, per mitigare i difetti di progettazione. Anche fino a TLS1.1 ci sono tonnellate di cose che semplicemente non sono le migliori pratiche e SSH 2.0 ha risolto i suoi problemi con gli anni pur mantenendo un design chiaro.
user185 invia per confrontare SSL con il protocollo dell'applicazione SSH, il che non è davvero giusto.SSH ha un modello di protocollo a più livelli, solo il livello inferiore del quale è paragonabile a SSL, e lo batterebbe ogni giorno per dimensioni e semplicità di implementazione.
@NicholasWilson: Grazie mille per questa intuizione.Attualmente sto cercando le migliori pratiche da utilizzare per creare un paio di sistemi di incapsulamento crittograficamente sicuri sempreverdi in alcuni progetti a lungo termine: uno è un formato di archivio firmato (in chiaro) e l'altro è il livello di crittografia di un protocollo cablato per una messaggisticasistema.Mi sono anche chiesto a lungo di costruire un sostituto fulmineo per SSH come esperimento gigante.Volevo menzionare questi contesti nel caso ti fosse capitato di conoscere alcuni buoni punti di partenza.
TLS sembra essere un sistema estremamente pesante con una storia leggendaria e molti livelli di complessità al fine di fornire compatibilità e interoperabilità con le versioni precedenti.Mi aspetto assolutamente di non aver bisogno di tutto ciò per creare una buona sicurezza, ma la mia difficoltà è identificare la compatibilità incrociata e le parti "burocratiche" mantenendo le parti importanti dei macchinari che contribuiscono alla sicurezza del sistema.Immagino che quello che sto dicendo è che TLS è riconosciuto come "usa solo TLS e starai bene", ma non ci sono idee collettive su quali componenti di basso livello siano altrettanto buoni / sicuri / efficaci / ecc.
Immagino che la mia ultima domanda sarebbe, considerando il livello di dettaglio che sto cercando di raggiungere (e non ho paura di arrivarci), quali componenti di SSH sono fondamentalmente migliori di TLS?Ok, quindi SSH non ha X.509.Quali altre differenze / pro / contro ci sono?- Grazie mille per il tuo tempo.
Perché non leggere le RFC - e anche il codice sorgente di OpenSSH è altamente leggibile.Alcune cose a cui prestare attenzione: definizione PRF, autenticazione host, costruzione MAC.Invece di costruire il tuo protocollo, usa semplicemente SSH.Puoi semplicemente prendere il livello di trasporto OpenSSH e finire con il codice di chiamata della stessa complessità dell'uso di TLS da OpenSSL (ma un protocollo cablato più semplice).
Affascinante risposta di @ThomasPornin, come al solito.Sarebbe interessante confrontare / confrontare i metodi di autenticazione client basati su chiave utilizzati rispettivamente da SSL e SSH, ovvero i certificati client utilizzati da SSL e l'autenticazione con chiave pubblica utilizzata da SSH.
user185
2011-01-13 15:58:16 UTC
view on stackexchange narkive permalink

Questo non è un confronto ragionevole da fare. SSL è un metodo generale per proteggere i dati trasportati su una rete, mentre SSH è un'applicazione di rete per l'accesso e la condivisione di dati con un computer remoto.

La protezione del livello di trasporto in SSH è simile per capacità a SSL, quindi quale sia "più sicuro" dipende da ciò che richiede il tuo modello di minaccia specifico e se le implementazioni di ciascun indirizzo i problemi che stai cercando di affrontare.

SSH ha quindi un livello di autenticazione utente che manca a SSL (perché non ne ha bisogno - SSL ha solo bisogno di autenticare le due interfacce di connessione che anche SSH può fare). Nella grafica UTF-8:

  SSL SSH + ------------- + + ----------------- + | Niente | | RFC4254 | Collegamento multiplexing + ------------- + + ----------------- + | Niente | | RFC4252 | Autenticazione utente + ------------- + + ----------------- + | RFC5246 | | RFC4253 | Trasporto dati crittografato + ------------- + + ----------------- +  

In merito al problema di cui ci sono più potenziali attacchi contro, sembra chiaro che SSH ha una superficie di attacco più ampia. Ma è solo perché SSH ha un'intera applicazione incorporata: la superficie di attacco di SSL + qualunque applicazione tu debba fornire non può essere confrontata perché non abbiamo abbastanza informazioni.

-1 È un confronto ragionevole. Si presume erroneamente che OP stia confrontando SSL con il programma unix [ssh (1)] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1). SSH è in realtà un altro protocollo che fornisce sicurezza a livello di trasporto, che ha disposizioni speciali per le shell remote e l'esecuzione remota.
+1 @jpillora Anche se sono d'accordo che ha senso confrontare i due, il termine SSH non è tipicamente usato per riferirsi al sottoinsieme del protocollo SSH che gestisce la sicurezza del livello di trasporto che sarebbe direttamente paragonabile a SSL / TLS. È quasi esclusivamente utilizzato in riferimento al protocollo del livello dell'applicazione che differisce da SSL / TLS nel modo descritto in questa risposta.
@freb il modo in cui vengono indicati in generale non cambia la verità della questione. SSH è un protocollo utilizzato come livello di trasporto per l'utilità ssh. La risposta accettata e più votata riflette questo fatto.
@jpillora Volevo semplicemente dire che non credo che il protocollo del livello di trasporto SSH sia ciò che la maggior parte delle persone vorrebbe dire data la formulazione della domanda. Tuttavia, data la risposta che è stata accettata come corretta, deve essere stato quello che chiedeva OP.
@freb Giusto, la maggior parte delle persone pensa che, dato il fraseggio, è ancora più importante correggere questo malinteso comune.
[SSL / TLS] (http://security.stackexchange.com/a/40038/29832) dispone di disposizioni che possono essere utilizzate per [autenticare il client] (https://en.wikipedia.org/wiki/Transport_Layer_Security# Client-authenticated_TLS_handshake). Tieni presente che SSL, di per sé, è stato deprecato [giugno 2015] (https://tools.ietf.org/html/rfc7568), a favore di TLS ..
@WarrenT, Credo che stia parlando dell'autenticazione dell '** utente ** (il login) mentre quello che hai collegato sta parlando dell'autenticazione dell'interfaccia.
"SSH ha quindi un livello di autenticazione utente che manca a SSL" non è vero, puoi autenticare l'utente con certificato o chiavi pubbliche in TLS
Halberdier
2013-05-09 21:03:42 UTC
view on stackexchange narkive permalink

Da un punto di vista crittografico rigoroso, entrambi forniscono la crittografia autenticata, ma in due modi diversi.

SSH utilizza il cosiddetto Encrypt-and-MAC, ovvero il messaggio cifrato è giustapposto a un codice di autenticazione del messaggio (MAC) del messaggio in chiaro per aggiungere integrità. Non è dimostrato che sia sempre completamente sicuro (anche se in casi pratici dovrebbe essere sufficiente).

SSL utilizza MAC-then-Encrypt: un MAC è giustapposto al testo in chiaro, quindi sono entrambi crittografati . Anche questo non è il massimo, poiché con alcune modalità di cifratura a blocchi parti del MAC possono essere indovinate e rivelare qualcosa sul codice. Ciò ha portato a vulnerabilità in TLS 1.0 (attacco BEAST).

Quindi hanno entrambi potenziali punti deboli teorici. Il metodo più efficace è Encrypt-then-MAC (aggiungi un MAC del messaggio cifrato), che è implementato, ad esempio, in IPsec ESP.

Il protocollo dei pacchetti binari di SSH è criptato e MAC dove per ogni messaggio in chiaro (m) invia il testo cifrato E (m) ++ MAC (m) (concatena il messaggio crittografato con MAC), contro SSL che fa E (m ++ MAC (m)). Tuttavia, SSH è molto più del suo protocollo di pacchetto binario (gestione delle chiavi, client / server shell remoto, trasferimento di file, ecc.), Mentre SSL (ora chiamato TLS) è solo il protocollo del livello di trasporto utilizzato in altri protocolli che aggiungono nelle funzionalità necessarie (es. HTTPS, FTPS, IMAPS ecc.). Vedi anche il confronto tra EtM, E&M, MtE su: http://crypto.stackexchange.com/questions/202
Pienamente d'accordo, c'è molto di più di quello che ho scritto; questo è ciò che intendevo con il mio _incipit_ "da un punto di vista crittografico rigoroso".
BEAST non è correlato a MtE ed è dovuto al noto-IV con CBC (in SSL3 e TLS1.0) - che anche SSH2 fa e non ha corretto, sebbene abbia ottenuto CTR come alternativa prima che sia esso e TLS ottenessero AEAD = GCM(TLS anche CCM) (ed entrambi ChaCha / Poly) come alternativa migliore.Gli attacchi basati sul padding MtE + CBC sono POODLE e Lucky13.
Ho una soluzione che rende MAC-then-Encrypt sicuro per qualsiasi cifra con dimensione di output = dimensione di input e nessun input di dati debole nel core di crittografia.
questa risposta è obsoleta poiché non è ciò che fa TLS oggi.
Sam Moore
2015-06-16 02:25:25 UTC
view on stackexchange narkive permalink

Penso che un aspetto di questo confronto sia stato trascurato. user185 si è avvicinato ma non ci è riuscito. Sono d'accordo che queste sono mele e arance e sento un confronto migliore tra mele e mele per essere HTTPS e SSH. HTTPS e SSH utilizzano diversi livelli del modello OSI e quindi crittografano i dati in momenti diversi della trasmissione. Quindi le vere domande che ci si dovrebbe porre sarebbero sulla falsariga di quando questi dati vengono crittografati e non crittografati durante la trasmissione. Questo rivelerà le tue potenziali superfici di attacco. Con HTTPS, una volta che il pacchetto viene ricevuto da un dispositivo nella rete di destinazione (Web Server, Border Router, load balancer, ecc ...) non viene crittografato e trascorre il resto del suo viaggio in testo normale. Molti sostengono che questo non è un grosso problema poiché il traffico è interno in questo momento, ma se il payload contiene dati sensibili, viene archiviato non crittografato nei file di registro di ogni dispositivo di rete attraverso cui passa fino a quando non arriva al suo destinazione finale. Con SSH, in genere, viene specificato il dispositivo di destinazione e la trasmissione viene crittografata finché non raggiunge questo dispositivo. Esistono modi per crittografare nuovamente i dati HTTPS, ma si tratta di passaggi aggiuntivi che la maggior parte dimentica di eseguire durante l'implementazione di una soluzione HTTPS nel proprio ambiente.

datsusarachris
2015-01-19 21:17:45 UTC
view on stackexchange narkive permalink

ssh è come una chiave (privata) e la serratura (pubblica)

ssl è come la porta e i mattoni.

ssl fornisce un collegamento sicuro tra i due server del computer . ad esempio, il tuo e quello a cui ti connetti.

ssh è il modo in cui il computer che si connette può verificare se stesso e ottenere l'accesso.

Non spieghi affatto il commento "porta e mattoni".SSL ha anche chiavi pubbliche e private.SSL può essere utilizzato anche per l'autenticazione del client.SSH fornisce anche un collegamento sicuro tra il client e il server.
Gobbly
2014-08-05 03:52:56 UTC
view on stackexchange narkive permalink

SSL è un livello di protocollo astratto dal contenuto sottoposto a tunneling. SSH è una versione sicura della shell (SH), non è stata progettata per contenere uno strato astratto sottostante, è stata progettata specificamente per trasportare il traffico della shell. Quindi, sebbene le operazioni crittografiche siano utilizzate in entrambe, e tali operazioni crittografiche potrebbero anche essere le stesse, lo scopo e quindi il design complessivo sono abbastanza diversi.

Tieni presente che ci sono differenze specifiche (come è stato citato sopra ), ma la maggior parte se non tutte queste differenze sono radicate nello scopo dei diversi protocolli.

-1 Si presume erroneamente che OP stia confrontando SSL con il programma unix [ssh (1)] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1 ). SSH è in realtà un altro protocollo che fornisce sicurezza a livello di trasporto, che ha disposizioni speciali per le shell remote e l'esecuzione remota.
Stanley Hutchinson
2013-12-13 05:19:22 UTC
view on stackexchange narkive permalink

Il problema è duplice, non è solo la forza e la debolezza della crittografia. Ma è la facilità e la comodità della consegna. Quindi, dal punto di vista aziendale, SSL / TLS è più conveniente e più semplice perché richiede solo un browser e un certificato pubblico o privato.

E SSH richiede l'applicazione o il thin client installato per usarlo. Questo è più un problema dal punto di vista e dal supporto del client Internet dell'utente.

Deep
2018-01-04 21:23:11 UTC
view on stackexchange narkive permalink

Se stai davvero cercando SSH vs SSL (TLS), la risposta è SSH.

Per una ragione per cui SSH vince su SSL è il modo in cui esegue l'autenticazione. Per questo motivo, quando si utilizza FTP, utilizzare il protocollo SSH (SFTP) anziché FTPS (FTP su SSL).

SSH viene utilizzato nelle reti aziendali per:

  • fornire accesso sicuro agli utenti e processi automatizzati
  • trasferimenti di file interattivi e automatizzati
  • emissione di comandi remoti

fonte: https://www.ssh.com/ssh/protocol/#sec-Typical-uses-of-the-SSH-protocol

"Per un motivo SSH vince su SSL è il modo in cui esegue l'autenticazione" Hai una fonte o una spiegazione per questa affermazione?
In SSH si hanno due opzioni per connettere il server.Con l'opzione di autenticazione basata su chiave, sarà prima necessario generare in anticipo una chiave privata SSH e una chiave pubblica.Che non è molto lavoro aggiuntivo.Questo è anche considerare le migliori pratiche di sicurezza.SSL ha così tante versioni l'ultima è TLS1.2.Il che significa che non è ancora così sicuro, ma in procinto di migliorare.
TLS ha anche certificati lato client.Non spieghi perché SSH "vince".
Se hai intenzione di copiare / incollare da qualche parte, assicurati di citare la tua fonte.
"SSL ha così tante versioni" Quindi, 6 versioni è "così tante"?OpenSSH è nella versione 7.7."Il che significa che non è ancora così sicuro, ma in procinto di migliorare".La tua logica non ha senso qui.
Posso usare TLS e un'API REST per eseguire tutto sul tuo elenco e, in effetti, è così che ora vengono gestite molte funzioni di amministrazione.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...