Pytanie:
Jaka jest różnica między SSL a SSH? Który jest bezpieczniejszy?
Am1rr3zA
2011-01-13 15:40:18 UTC
view on stackexchange narkive permalink

Jaka jest różnica między SSH a SSL? Który z nich jest bezpieczniejszy, jeśli możesz je porównać razem?
Który ma więcej potencjalnych luk?

To nie jest prawdziwe pytanie. Porównujesz jabłka i pomarańcze. Pomocne może być wyjaśnienie, dlaczego chcesz wiedzieć - ponieważ może to pomóc w uzyskaniu odpowiedzi. np. czy chcesz wdrożyć bezpieczne rozwiązanie dostępu i szukasz najłatwiejszego do zabezpieczenia?
@Rory Nie sądzę, ponieważ wiem, że obaj wykonują podobną pracę (nie porównuję jabłek i pomarańczy), ale może się mylę, więc jestem wdzięczny, jeśli społeczność pokaże mi mój błąd.
@Am1rr3zA, to nie do końca w porządku, że wykonują podobną pracę. W praktyce SSL i SSH są zwykle używane do różnych celów: SSH jest najczęściej używany do zdalnego logowania, SSL do szyfrowanego dostępu do sieci.
@D.W. Wygląda na to, że czasami są używane do tego samego celu, np. ** SFTP ** wydaje się być oparty na * SSH *, podczas gdy ** FTPS ** jest oparty na * SSL *.
Jeśli rozwodzimy sensowne użycie tych dwóch protokołów, tak, pytanie jest związane z jego intencją. Analogia. Który jest bezpieczniejszy? 1.) Bezpieczny bank deibold z magnetycznymi zabezpieczeniami bezpieczeństwa 2.) 26-znakowe hasło, które zmienia się codziennie i jest szyfrowane 1024-bitowo? Większość ludzi zrzuciłaby klęskę na jabłka i pomarańcze. IGNORUJ, że jedno służy do ochrony dostępu do urządzenia elektronicznego, a drugie jest fizyczne i ma na celu ochronę gotówki. KTÓRE WYMAGA WIĘKSZEGO WYSIŁKU I CZASU DO WYKONANIA KOMPROMISÓW. O to naprawdę prosi. Jeśli odpowiemy z takim nastawieniem, można odpowiedzieć.
W swoim żywiole każdy ma siłę. Więc spójrz na to z perspektywy hacka. Które z hacków wolałbyś raczej zhakować? Należy również zadać pytanie „Co jest bezpieczniejsze do celów… XYZ” Ponieważ zadał to pytanie bez podania celu, w którym wszyscy się rozłączyli. Mój przykład z sejfem vs. logon ma dwa różne cele (czyli kiedy ludzie mówili „Hej, te dwa protokoły i ich zabezpieczenia zazwyczaj nie pełnią tej samej funkcji w użyciu” i jest to absolutnie poprawne. Jeden może być nadal „bezpieczniejszy” niż drugi.
Osiem odpowiedzi:
Thomas Pornin
2011-01-13 20:55:15 UTC
view on stackexchange narkive permalink

SSL i SSH zapewniają elementy kryptograficzne do budowy tunelu do transportu poufnych danych ze sprawdzoną integralnością. W tym przypadku używają podobnych technik i mogą cierpieć z powodu tego samego rodzaju ataków, więc powinny zapewniać podobne bezpieczeństwo (tj. Dobre zabezpieczenia), zakładając, że oba są prawidłowo zaimplementowane. To, że oba istnieją, jest rodzajem syndromu NIH: programiści SSH powinni ponownie użyć SSL dla części tunelu (protokół SSL jest wystarczająco elastyczny, aby pomieścić wiele odmian, w tym nie używać certyfikatów).

Różnią się tym, co dzieje się wokół tunelu. SSL tradycyjnie używa certyfikatów X.509 do ogłaszania kluczy publicznych serwera i klienta; SSH ma swój własny format. Ponadto SSH zawiera zestaw protokołów dla tego, co dzieje się wewnątrz tunelu (multipleksowanie kilku transferów, przeprowadzanie uwierzytelniania opartego na hasłach w tunelu, zarządzanie terminalami ...), podczas gdy w SSL nie ma czegoś takiego a dokładniej, gdy takie rzeczy są używane w SSL, nie są uważane za część SSL (na przykład podczas uwierzytelniania HTTP opartego na haśle w tunelu SSL mówimy, że jest to część „HTTPS”, ale to naprawdę działa w sposób podobny do tego, co dzieje się z SSH).

Koncepcyjnie możesz wziąć SSH i zastąpić część tunelu częścią z SSL. Możesz także wziąć HTTPS i zastąpić SSL przez SSH-with-data-transport i hook, aby wyodrębnić klucz publiczny serwera z jego certyfikatu. Nie ma naukowej niemożliwości, a jeśli zostanie wykonana prawidłowo, bezpieczeństwo pozostanie takie samo. Nie ma jednak żadnego powszechnego zestawu konwencji ani istniejących narzędzi do tego.

Więc nie używamy SSL i SSH do tych samych celów, ale to z powodu narzędzi, które historycznie pojawiały się wraz z implementacjami tych protokołów, nie z powodu różnicy związanej z bezpieczeństwem. A kto wdraża SSL lub SSH, powinien przyjrzeć się, jakiego rodzaju ataki próbowano na obu protokołach.

Dobra robota. W rzeczywistości, ponieważ SSH jest łatwiejsze do skonfigurowania niż SSL, wiele osób tuneluje http (nie https) w SSH, np. do zdalnej administracji systemem za pomocą narzędzia internetowego GUI, takiego jak ebox lub webmin.
Wystarczy zaznaczyć, że nie jest do końca prawdą, że faceci z SSH „* powinni *” używali SSL: SSH zostało zaprojektowane bardzo specjalnie, aby mieć niewielką powierzchnię ataku i być bardzo bezpieczne. SSHv2 nie ma żadnych problemów i pułapek związanych z SSL / TLS, więc idąc z mniejszą rzeczą, którą dobrze zrozumieli, z mniejszą złożonością, wyszli z czymś znacznie lepiej dopasowanym do ich sytuacji. To zależy od tego, jak bardzo jesteś paranoikiem: SSL nie jest bezużyteczny, w zależności od aplikacji, ale projekt SSH sprawia, że ​​jest akceptowalny w sytuacjach / społecznościach bezpieczeństwa, w których SSL po prostu nie jest zaufany.
@NicholasWilson "Projekt _SSH sprawia, że ​​jest akceptowalny w sytuacjach / społecznościach bezpieczeństwa, w których SSL po prostu nie jest zaufany_", takich jak ...
SSL i SSH zostały opracowane równolegle (oba zostały wydane w 1995 roku), więc nie jest jasne, czy SSH nawet _ mógł_ korzystać z SSL. To, czy _ powinien_ korzystać ze współczesnego SSL 2.0, też jest bardzo wątpliwe :-)
Cóż, SSH 2.0 było całkowitym przepisaniem protokołu i pojawiło się około 1999 roku, tak że można było ponownie użyć SSL 3.0 lub nawet TLS 1.0. Ale oczywiście TLS _ wydaje się_ być powiązany z X.509, co odstrasza programistów.
@ThomasPornin, SSL pojawił się przed SSH?
@NicholasWilson, Wow, więc mówisz, że ** bezpieczeństwo SSH przewyższa SSL **?A co z odpowiedzią użytkownika185 poniżej, która stanowi całkowite przeciwieństwo?
Tak, myślę, że warstwa transportu / szyfrowania SSH jest lepsza niż SSL - z powodów podanych powyżej przez różnych ludzi (# 1 nadmierna złożoność SSL ze względu na ogromną liczbę poprawek do protokołu, aby złagodzić wady projektowe. Nawet do TLS1.1 jest mnóstwo rzeczy, które po prostu nie są najlepszymi praktykami, a SSH 2.0 naprawił swoje problemy przez lata, zachowując przejrzysty projekt. # 2 X.509 daje ogromną powierzchnię mocowania dla TLS).
user185 wysyła, aby porównać SSL z protokołem aplikacji SSH, co nie jest sprawiedliwe.SSH ma warstwowy model protokołu, którego tylko dolna warstwa jest porównywalna z SSL i każdego dnia pokonałaby go pod względem rozmiaru i prostoty implementacji.
@NicholasWilson: Bardzo dziękuję za ten wgląd.Obecnie poszukuję najlepszych praktyk do zbudowania kilku wiecznie bezpiecznych kryptograficznie systemów enkapsulacji w niektórych długoterminowych projektach - jeden jest formatem archiwum ze podpisem (tekst jawny), a drugi jest warstwą szyfrowania protokołu przewodowego do przesyłania wiadomościsystem.Od dawna zastanawiałem się również nad skonstruowaniem błyskawicznego zamiennika SSH jako gigantycznego eksperymentu.Chciałem wspomnieć o tych kontekstach na wypadek, gdybyś znał kilka dobrych punktów wyjścia.
Wydaje się, że TLS jest niezwykle ciężkim systemem z bogatą historią i wieloma warstwami złożoności w celu zapewnienia wstecznej kompatybilności i interoperacyjności.W pełni spodziewam się, że nie potrzebuję tego wszystkiego do stworzenia dobrego zabezpieczenia, ale moja trudność polega na zidentyfikowaniu wzajemnej kompatybilności i elementów „biurokratycznych” przy jednoczesnym zachowaniu ważnych części maszyn, które przyczyniają się do bezpieczeństwa systemu.Myślę, że mówię, że TLS jest rozpoznawane jako „po prostu użyj TLS i wszystko będzie w porządku”, ale nie ma zbiorowych pomysłów na to, które komponenty niskiego poziomu są równie dobre / bezpieczne / skuteczne / itp.
Myślę, że moje ostatnie pytanie brzmiałoby, biorąc pod uwagę poziom szczegółowości, który próbuję osiągnąć (i nie boję się osiągnąć), które części składowe SSH są zasadniczo lepsze niż TLS?OK, więc SSH nie ma X.509.Jakie są inne różnice / zalety / wady?- Dziękuję bardzo za poświęcony czas.
Dlaczego nie przeczytać specyfikacji RFC - a kod źródłowy OpenSSH jest również bardzo czytelny.Kilka rzeczy, na które należy zwrócić uwagę: definicja PRF, uwierzytelnianie hosta, konstrukcja MAC.Zamiast konstruować własny protokół, po prostu użyj SSH.Możesz po prostu pobrać warstwę transportową OpenSSH i skończyć z wywołaniem kodu o tej samej złożoności, co użycie TLS z OpenSSL (ale prostszy protokół przewodowy).
Fascynująca odpowiedź od @ThomasPornin, jak zwykle.Byłoby interesujące porównanie / zestawienie metod uwierzytelniania klienta opartych na kluczach używanych odpowiednio przez SSL i SSH - tj. Certyfikaty klienta używane przez SSL i uwierzytelnianie za pomocą klucza publicznego używane przez SSH.
user185
2011-01-13 15:58:16 UTC
view on stackexchange narkive permalink

To nie jest rozsądne porównanie. SSL to ogólna metoda ochrony danych przesyłanych w sieci, podczas gdy SSH to aplikacja sieciowa do logowania się i udostępniania danych komputerowi zdalnemu.

Ochrona warstwy transportowej w SSH jest podobna do SSL, więc to, które jest „bezpieczniejsze”, zależy od tego, do czego odwołuje się Twój model zagrożeń i czy implementacje każdego z nich rozwiązują problemy, z którymi próbujesz sobie poradzić.

SSH ma wtedy warstwę uwierzytelniania użytkownika, której brakuje SSL (ponieważ tego nie potrzebuje - SSL musi tylko uwierzytelnić dwa łączące się interfejsy, co może również zrobić SSH). W grafice UTF-8:

  SSL SSH + ------------- + + ----------------- + | Nic | | RFC4254 | Multipleksowanie połączeń + ------------- + + ----------------- + | Nic | | RFC4252 | Uwierzytelnianie użytkownika + ------------- + + ----------------- + | RFC5246 | | RFC4253 | Szyfrowany transport danych + ------------- + + ----------------- +  

Odnośnie problemu których potencjalnych ataków jest więcej, wydaje się jasne, że SSH ma większą powierzchnię ataku. Ale to tylko dlatego, że SSH ma wbudowaną całą aplikację: powierzchnia ataku SSL + dowolnej aplikacji, którą musisz dostarczyć , nie może być porównana, ponieważ nie mamy wystarczających informacji.

-1 To rozsądne porównanie. Błędnie zakładasz, że OP porównuje SSL z programem unixowym [ssh (1)] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1). W rzeczywistości SSH jest kolejnym protokołem zapewniającym ochronę warstwy transportowej, który ma specjalne przepisy dotyczące zdalnych powłok i zdalnego wykonywania.
+1 @jpillora Chociaż zgadzam się, że porównanie tych dwóch ma sens, termin SSH nie jest zwykle używany w odniesieniu do podzbioru protokołu SSH, który obsługuje zabezpieczenia warstwy transportowej, które byłyby bezpośrednio porównywalne z SSL / TLS. Jest używany prawie wyłącznie w odniesieniu do protokołu warstwy aplikacji, który różni się od SSL / TLS sposobem opisanym w tej odpowiedzi.
@freb sposób, w jaki są ogólnie określani, nie zmienia prawdy w tej sprawie. SSH to protokół używany jako warstwa transportowa dla narzędzia ssh. Przyjęta i najczęściej głosowana odpowiedź odzwierciedla ten fakt.
@jpillora Chodziło mi tylko o to, że nie sądzę, by protokół warstwy transportowej SSH był tym, co większość ludzi miałaby na myśli, biorąc pod uwagę sformułowanie pytania. Jednak biorąc pod uwagę odpowiedź, która została zaakceptowana jako poprawna, musiał o to pytać OP.
@freb Prawda, większość ludzi uważa, że ​​biorąc pod uwagę sformułowanie, jeszcze ważniejsze jest poprawienie tego powszechnego błędnego przekonania.
[SSL / TLS] (http://security.stackexchange.com/a/40038/29832) zawiera przepisy, których można użyć do [uwierzytelnienia klienta] (https://en.wikipedia.org/wiki/Transport_Layer_Security# Client-authentication_TLS_handshake). Należy pamiętać, że protokół SSL jako taki został wycofany [czerwiec 2015 r.] (Https://tools.ietf.org/html/rfc7568) i zastąpił TLS.
@WarrenT, Myślę, że on mówi o uwierzytelnianiu ** użytkownika ** (loginu), podczas gdy to, co podłączyłeś, mówi o uwierzytelnianiu interfejsu.
„SSH ma wtedy warstwę uwierzytelniania użytkownika, której brakuje SSL”, to nieprawda, możesz uwierzytelnić użytkownika za pomocą certyfikatu lub kluczy publicznych w TLS
Halberdier
2013-05-09 21:03:42 UTC
view on stackexchange narkive permalink

Ze ścisłego kryptograficznego punktu widzenia oba zapewniają uwierzytelnione szyfrowanie, ale na dwa różne sposoby.

SSH używa tak zwanego Encrypt-and-MAC, to znaczy zaszyfrowanej wiadomości jest zestawiona z kodem uwierzytelniania wiadomości (MAC) przejrzystej wiadomości w celu dodania integralności. Nie udowodniono, że jest to zawsze w pełni bezpieczne (nawet jeśli w praktycznych przypadkach powinno wystarczyć).

SSL używa MAC-then-Encrypt: adres MAC jest zestawiony z czystym tekstem, a następnie oba są zaszyfrowane . To też nie jest najlepsze, ponieważ w przypadku niektórych trybów szyfru blokowego części MAC można odgadnąć i ujawnić coś na szyfrze. Doprowadziło to do powstania luk w zabezpieczeniach TLS 1.0 (atak BEAST).

Obie mają więc potencjalne teoretyczne słabości. Najsilniejszą metodą jest Encrypt-then-MAC (dodaj MAC zaszyfrowanej wiadomości), która jest zaimplementowana np. W IPsec ESP.

Binarny protokół pakietowy SSH to encrypt-and-MAC, gdzie dla każdej wiadomości w postaci zwykłego tekstu (m) wysyła tekst zaszyfrowany E (m) ++ MAC (m) (łączy zaszyfrowaną wiadomość z MAC), w porównaniu z SSL, który robi E (m ++ MAC (m)). Jednak SSH to znacznie więcej niż tylko binarny protokół pakietowy (zarządzanie kluczami, zdalny klient / serwer powłoki, transfer plików itp.), Podczas gdy SSL (obecnie nazywany TLS) to tylko protokół warstwy transportowej, który jest używany w innych protokołach, które dodają w niezbędnej funkcjonalności (np. HTTPS, FTPS, IMAPS itp.). Zobacz także porównanie EtM, E&M, MtE na: http://crypto.stackexchange.com/questions/202
W pełni się zgadzam, jest o wiele więcej niż to, co napisałem; to właśnie miałem na myśli mówiąc o moim _incipit_ „ze ścisłego kryptograficznego punktu widzenia”.
BEAST nie jest powiązany z MtE i jest spowodowany znanym IV z CBC (w SSL3 i TLS1.0) - co SSH2 również robi i nie poprawia, chociaż otrzymał CTR jako alternatywę, zanim zarówno on, jak i TLS otrzymały AEAD = GCM(TLS również CCM) (i oba ChaCha / Poly) jako lepsza alternatywa.Ataki MtE + CBC oparte na wypełnieniu to POODLE i Lucky13.
Mam rozwiązanie, które sprawia, że MAC-then-Encrypt jest bezpieczny dla każdego szyfru, który ma rozmiar wyjściowy = rozmiar wejściowy i nie ma słabego wejścia danych do rdzenia szyfrującego.
ta odpowiedź jest nieaktualna, ponieważ nie jest to to, co robi dzisiaj TLS.
Sam Moore
2015-06-16 02:25:25 UTC
view on stackexchange narkive permalink

Myślę, że jest jeden aspekt tego porównania, który został przeoczony. user185 był blisko, ale nie do końca tam dotarł. Zgadzam się, że są to jabłka i pomarańcze i czuję, że lepsze jabłka do jabłek to HTTPS i SSH. HTTPS i SSH wykorzystują różne warstwy modelu OSI i dlatego szyfrują dane w różnych momentach transmisji. Wtedy prawdziwe pytania, które należałoby zadać, dotyczyłyby tego, kiedy dane te są szyfrowane i niezaszyfrowane podczas transmisji. To ujawni potencjalne powierzchnie ataku. W przypadku protokołu HTTPS, gdy pakiet zostanie odebrany przez urządzenie w sieci docelowej (serwer WWW, router Border, system równoważenia obciążenia itp.), Jest on niezaszyfrowany, a resztę podróży spędza w postaci zwykłego tekstu. Wielu twierdzi, że nie jest to wielka sprawa, ponieważ ruch jest w tej chwili wewnętrzny, ale jeśli ładunek zawiera poufne dane, jest przechowywany w postaci niezaszyfrowanej w plikach dziennika każdego urządzenia sieciowego, przez które przechodzi, dopóki nie dotrze do ostateczny cel. W przypadku protokołu SSH zwykle określa się urządzenie docelowe, a transmisja jest szyfrowana, dopóki nie dotrze do tego urządzenia. Istnieją sposoby ponownego zaszyfrowania danych HTTPS, ale są to dodatkowe kroki, o których większość zapomina podczas implementacji rozwiązania HTTPS w swoim środowisku.

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

ssh jest jak klucz (prywatny), a zamek (publiczny)

ssl jest jak drzwi i cegły.

ssl zapewnia bezpieczne połączenie między dwoma serwerami komputerowymi . np. Twój i ten, z którym się łączysz.

ssh to sposób, w jaki łączący się komputer może zweryfikować się i uzyskać dostęp.

W ogóle nie wyjaśniasz komentarza „drzwi i cegły”.SSL ma również klucze publiczne i prywatne.SSL może być również używany do uwierzytelniania klienta.SSH zapewnia również bezpieczne łącze między klientem a serwerem.
Gobbly
2014-08-05 03:52:56 UTC
view on stackexchange narkive permalink

SSL to warstwa protokołu wyodrębniona z tunelowanej treści. SSH to bezpieczna wersja powłoki (SH), nie została zaprojektowana do umieszczania pod nią warstwy abstrakcyjnej, została zaprojektowana specjalnie do przenoszenia ruchu powłoki. Więc chociaż operacje kryptograficzne są używane w obu przypadkach, a te operacje kryptograficzne mogą być nawet takie same, cel i ogólny projekt są zupełnie inne.

Należy pamiętać, że istnieją pewne różnice (jak wspomniano powyżej ), ale większość, jeśli nie wszystkie, różnice wynikają z przeznaczenia różnych protokołów.

-1 Błędnie zakładasz, że OP porównuje SSL z programem unixowym [ssh (1)] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1 ). W rzeczywistości SSH jest kolejnym protokołem zapewniającym ochronę warstwy transportowej, który ma specjalne przepisy dotyczące zdalnych powłok i zdalnego wykonywania.
Stanley Hutchinson
2013-12-13 05:19:22 UTC
view on stackexchange narkive permalink

Problem jest dwojaki, nie chodzi tylko o siłę i słabość szyfrowania. Ale to łatwość i wygoda dostawy. Z punktu widzenia biznesu SSL / TLS jest więc wygodniejszy i łatwiejszy, ponieważ wymaga tylko przeglądarki i publicznego lub prywatnego certyfikatu.

A SSH wymaga zainstalowania aplikacji lub cienkiego klienta, aby z niego korzystać. Jest to większy problem z punktu widzenia i obsługi klienta internetowego użytkownika.

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

Jeśli naprawdę szukasz połączenia SSH z SSL (TLS), odpowiedzią jest SSH.

Jednym z powodów, dla których SSH wygrywa nad SSL, jest sposób przeprowadzania uwierzytelniania. Z tego powodu podczas korzystania z FTP należy używać protokołu SSH (SFTP) zamiast FTPS (FTP przez SSL).

SSH jest używany w sieciach korporacyjnych do:

  • zapewnienie bezpiecznego dostępu dla użytkowników i zautomatyzowanych procesów
  • interaktywne i automatyczne przesyłanie plików
  • wydawanie poleceń zdalnych

źródło: https://www.ssh.com/ssh/protocol/#sec-Typical-uses-of-the-SSH-protocol

„Z jednego powodu SSH wygrywa z SSL to sposób, w jaki przeprowadza uwierzytelnianie” Czy masz źródło lub wyjaśnienie tego twierdzenia?
W SSH mamy dwie możliwości podłączenia serwera.W przypadku opcji uwierzytelniania opartego na kluczach należy najpierw wygenerować klucz prywatny SSH i klucz publiczny.To niewiele dodatkowej pracy.Należy również wziąć pod uwagę najlepsze praktyki bezpieczeństwa.SSL ma tak wiele wersji, że najnowsza to TLS1.2.Co oznacza, że nie jest jeszcze tak bezpieczny, ale jest w trakcie ulepszania.
TLS ma również certyfikaty po stronie klienta.Nie wyjaśniasz, dlaczego SSH „wygrywa”.
Jeśli masz zamiar kopiować / wklejać skądś, upewnij się, że cytujesz swoje źródło.
„SSL ma tak wiele wersji” Zatem 6 wersji to „tak wiele”?OpenSSH działa w wersji 7.7.„Co oznacza, że nie jest jeszcze tak bezpieczne, ale jest w trakcie ulepszania”.Twoja logika nie ma tu sensu.
Mogę użyć TLS i REST API, aby wykonać wszystko na twojej liście i tak naprawdę jest teraz obsługiwanych wiele funkcji administracyjnych.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...