Czy certyfikat SSL z podpisem własnym to fałszywe poczucie bezpieczeństwa?

30

Czy certyfikat SSL z podpisem własnym to fałszywe poczucie bezpieczeństwa?

Jeśli zostaniesz podsłuchany, użytkownik po prostu zaakceptuje certyfikat, tak jak zawsze.

Andre
źródło

Odpowiedzi:

25

Ciekawe pytanie, zależy moim zdaniem od zastosowania. Nadal jesteś chroniony, ponieważ sesja jest zaszyfrowana, ale nie możesz powiedzieć, czy jest to prawidłowy certyfikat SSL przedstawiony, chyba że rozpowszechnisz certyfikat główny CA wśród użytkowników / klientów. W przypadku wewnętrznych testów / projekcji deweloperskich działałoby to świetnie, generujesz certyfikat głównego urzędu certyfikacji, którego używasz rozpowszechniać wśród użytkowników (można to zrobić za pomocą Zasad Grupy w systemie Windows i wiersza poleceń openssl w Linux / BSD), a następnie użyć tego certyfikatu głównego dla podpisywanie CSR. Użytkownicy nie zobaczą ostrzeżenia ani nic, a wiesz, że certyfikat jest podpisany przez wewnętrzny urząd certyfikacji.

W przypadku witryn zewnętrznych, w których nie możesz tego zapewnić, nadal twierdzę, że samopodpisany certyfikat jest lepszy niż brak protokołu SSL, jeśli wysyłasz hasła lub inne poufne informacje przez połączenie.

Jednak z drugiej strony istnieje wiele bardzo tanich „komercyjnych” wystawców certyfikatów, wśród których jest GoDaddy . Możesz uzyskać certyfikat za około 40 euro rocznie. GoDaddy oferuje nawet bezpłatne certyfikaty na stronach internetowych projektu OpenSource.

HampusLi
źródło
Właśnie to robimy. Bądź ostrożny, jednak z tanimi certyfikatami. Niektóre mają raczej dziwne główne urzędy certyfikacji i nie wszystkie z nich znajdują się w kolekcji certyfikatów głównego urzędu certyfikacji, które są dostarczane ze wszystkimi przeglądarkami.
wolfgangsz
4
+1, z wyjątkiem tego, że „certyfikat z podpisem własnym jest lepszy niż brak protokołu SSL” - jeśli zweryfikujesz, że jest to Twój certyfikat, a nie certyfikat dostarczony przez MITM. Szczerze mówiąc, kiedy ostatni raz zrobił to normalny użytkownik? (Podejrzewam, że odpowiedź dotyczyłaby niebieskiego księżyca i latających świń). Innymi słowy, używając samopodpisanego certyfikatu SSL bez przekazywania certyfikatów CA użytkownikom, znieczulasz użytkowników na przerażające ostrzeżenia, które otrzymają - nauczą się kliknąć to, ponieważ „no cóż, kazali mi zignorować ostrzeżenie na mysite.example.com, abym mógł zignorować to wszędzie; spójrz, ikona kłódki!” Voila, fałszywe poczucie bezpieczeństwa!
Piskvor
7
@Piskvor, tak naprawdę to wina przeglądarek. Po pierwsze, przeglądarki zazwyczaj nie zapewniają możliwości „trwałego akceptowania” wcześniej nieznanych samopodpisanych certyfikatów, aby użytkownik nie narażał się na niebezpieczeństwo przy każdym logowaniu. Po drugie, przeglądarki nie zniechęcają do korzystania ze starego zwykłego protokołu HTTP, tworząc również fałszywe poczucie bezpieczeństwa. Tak więc HTTP jest zawsze gorszy niż HTTPS, zarówno pod względem bezpieczeństwa, jak i świadomości użytkowników (przynajmniej dostają ostrzeżenie!).
Rotsor,
1
@Rotsor: Po pierwsze, Opera ma wbudowaną funkcję, którą opisujesz, FF ma Patrol Certyfikacji (który przynajmniej ostrzega przed zmianą certyfikatu). Pamiętaj również, że nie wszystko w SSL jest przeglądarką (IMAPS itp.). Po drugie, w jaki sposób istniejąca ogromna liczba stron HTTP tylko powoduje błąd przeglądarki? (i nie, przeglądarki tylko HTTPS nigdy się nie przyłapały, właśnie dlatego, że istniała znacznie mniejsza sieć do przeglądania z nimi). Po trzecie, „otrzymają ostrzeżenie” byłyby przydatne, gdyby tylko użytkownicy je przeczytali - i nie ślepo kliknęli „zaakceptuj”, aby je odejść. „Kliknięcie„ zaakceptuj oznacza zrozumienie ”to wspólne złudzenie programistów.
Piskvor
1
@Piskvor, dobrze wiedzieć, że niektóre przeglądarki zapewniają tę funkcję. Jeśli chodzi o HTTP, nie mogę powiedzieć, co należy zrobić (oczywiście nie można wykluczyć HTTP), ale posiadanie większej liczby ostrzeżeń związanych z bezpieczeństwem z samopodpisanym SSL niż bez SSL jest zdecydowanie błędne i jest to wina!
Rotsor
12

Nie będę się zgadzać, raz z przyczyn technicznych, a raz z przyczyn ogólnych.

Wąską podstawą techniczną jest to, że OP pytał o certyfikaty z podpisem własnym, a kilka innych odpowiedzi dotyczy certyfikatów podpisanych przez prywatne urzędy certyfikacji, co jest nieco inną kwestią. Ale nie bardzo inaczej, więc tak naprawdę jest to tylko nuta przemijająca.

Głównym zastrzeżeniem jest to, że uważam, że dopóki certyfikaty podpisane w celach handlowych są czymś więcej niż trywialnym wydatkiem - a 40 USD rocznie nie jest trywialnym wydatkiem dla wielu ludzi na tej planecie - certyfikaty z podpisem własnym mają do odegrania ważną rolę w bezpieczeństwie internetowym, pod warunkiem rozpoznania ich ograniczeń .

Samopodpisany certyfikat jest jak klucz ssh z mojego known_hostspliku. Bez niezależnej weryfikacji nie może mnie zapewnić, że rozmawiam z systemem, który moim zdaniem jest; ale może mnie zapewnić, że system, z którym rozmawiam, to ten sam system, z którym rozmawiałem ostatnim razem, kiedy myślałem, że rozmawiam z nim. Cały czas przechowujemy w pamięci podręcznej klucze ssh i nigdy jeszcze nie spotkałem administratora systemu, który niezależnie weryfikowałby więcej niż ułamek kluczy publicznych w swoim known_hostspliku.

Certyfikaty z podpisem własnym (i, w tym zakresie, certyfikaty podpisane przez nieważne urzędy certyfikacji) są znacznie lepsze niż brak protokołu SSL, pod warunkiem, że ludzie zdadzą sobie sprawę, że dopóki ich nie zweryfikują, zapewnią komunikację tylko sobie, serwerowi na drugim końcu rekordu DNS i wszystkich środkowych ludzi aktualnie w linii. Jeśli niezależnie zweryfikują certyfikat, uwierzytelnianie i szyfrowanie są co najmniej tak silne, jak w przypadku certyfikatu podpisanego przez uznany urząd certyfikacji.

Ponadto ci, którzy chcą zaprezentować korzysta z certyfikatów podpisanych przez uznaną CA jako jeden i tylko panaceum bezpieczeństwa internetowego może trzeba myśleć intensywnie o kwestiach takich jak włączenie rządu chińskiego podpisywania CA w standardowym Mozilla wiązki i fałszywe certyfikaty SSL podpisane przez Comodo .

MadHatter obsługuje Monikę
źródło
Niestety, model „zaufanego urzędu certyfikacji” jest rzeczywiście zepsuty (i ma go od lat); niestety nie zniknie (i nie ma nic lepszego, aby go zastąpić). Jak zawsze SSL i zaufane urzędy certyfikacji nie są magicznym pyłkiem bezpieczeństwa; użytkownik musi aktywnie utrzymywać bezpieczeństwo - co w większości jest raczej szalonym założeniem.
Piskvor
2
Czy Twoi użytkownicy są w stanie dokonać wykształconej oceny poziomu zaufania do integralności ich ścieżki do bieżącego serwera DNS (w tym możliwości zatrucia pamięci podręcznej) i urządzenia, na które uderzają? Mój nie wie, co to jest DNS, a tym bardziej być w stanie podejmować wykształcone decyzje bezpieczeństwa dotyczące ich połączenia z serwerem w innym stanie, połączonym z inną witryną za pośrednictwem MPLS, która jest połączona z użytkownikiem za pośrednictwem klienta VPN, którym są na za pośrednictwem nieszyfrowanego Wi-Fi w kawiarni. Unikaj powierzenia im tej odpowiedzialności.
Shane Madden
2
@Shane Madden: Jednym z obszarów, w którym jest to możliwe, są interfejsy administracyjne - np. PhpMyAdmin (lub, w mniejszym stopniu, SVN przez HTTPS). Zwykle jest ograniczona liczba użytkowników i zawierają oni znaczną część wskazówek . Nie spodziewałbym się, że mój pradziadek wyda ostrzeżenie lub certyfikat SSL, ale zdecydowanie oczekuję tego od innego administratora systemu, szczególnie jeśli jest to serwer pod kontrolą hir. Użytkownik odmiany ogrodu nie ma pojęcia, do known_hostsczego odwołuje się @MadHatter.
Piskvor
8

W przypadku witryn zewnętrznych, w których użytkownicy nie mają zainstalowanego certyfikatu CA (co jest najczęstszym przypadkiem), tak, certyfikat z podpisem własnym daje fałszywe poczucie bezpieczeństwa , a zatem jest gorszy niż bezużyteczny:

  • Po pierwsze, w jaki sposób użytkownik nie ma wstępnie zainstalowanego certyfikatu CA, czy rzeczywiście pochodzi on od Ciebie, a nie od osoby atakującej? Oczywiście dopasowując pola certyfikatu (CN, odciski palców itp.) - ale wbrew czemu? Więc teraz trzeba kanał boczny do weryfikacji certyfikatu - aw nielicznych przypadkach Widziałem, że operatorzy linii wsparcia (kto powinien służyły jako kanału bocznego w celu weryfikacji) nie mają pojęcia, co to ma znaczyć; ponadto działanie takiego kanału bocznego jest o rząd wielkości droższe niż uzyskanie certyfikatu z zaufanym certyfikatem CA, więc użytkownik musi ci ślepo ufać.

  • Po drugie, przerażający alert, który otrzymuje użytkownik, jest przerażający z dobrego powodu: ponieważ użytkownik nie może / nie zweryfikuje przedstawionego certyfikatu, może on bezpiecznie przesyłać dane do Elbonian Haxx0r D00dz.

  • Po trzecie, a co najgorsze, znieczulasz użytkowników : „powiedzieli mi, że powinienem zignorować to ostrzeżenie na https://mysite.example.com/ , a kowadło nie spadło mi na głowę, a moje złota rybka też nie umarła, więcoooo, oznacza to, że jest to po prostu kolejne okno alarmowe bez żadnego rzeczywistego znaczenia, więc mogę zignorować to okno za każdym razem, gdy go napotkam - i tak dostaję fajną ikonę kłódki, a to ważne. ”

Innymi słowy, poziom ochrony jest porównywalny do zwykłego HTTP (z wyjątkiem wąchania w sieci: chociaż dane są szyfrowane podczas przesyłania, jest to raczej anemiczna funkcja bez weryfikacji punktu końcowego), ale poczucie ochrony jest nieuzasadnione wysokie . Zła analogia samochodu: „Mam ABS, więc mogę teraz jeździć bezpieczniej w złych warunkach” - tyle, że ABS istnieje tylko w broszurze sprzedaży samochodu, ale w rzeczywistości nie jest obecny w samochodzie.

Sugerowana lektura: Najlepsze praktyki OWASP SSL

TL; DR: Używając samopodpisanych certyfikatów w publicznych witrynach, czynisz sieć gorszym miejscem, jeden nieświadomy użytkownik na raz.

Piskvor
źródło
2
@ downvoter: Byłbym wdzięczny, gdybyś wskazał, gdzie moja odpowiedź jest nieprawidłowa pod względem faktycznym („niepoprawna” w przeciwieństwie do „niewygodnej, niewygodnej i trudnej do wdrożenia”). Bezpieczeństwo jest trudne, a „la la la la I cię nie słyszę” nic nie naprawi.
Piskvor
2
Mimo że nie głosowałem za twoją odpowiedzią, tekst podpowiedzi na strzałce w dół wskazuje głosowanie w dół bez żadnego innego powodu niż to, że odpowiedź nie jest przydatna. Wydaje mi się, że fałszywe poczucie bezpieczeństwa wahadła może się również odwrócić. Niedawne naruszenia RA w Comodo dowodzą, że „złoczyńca” nie jest wcale trudny do uzyskania całkowicie uzasadnionego certyfikatu.
mahnsc
@mahnsc: Dziękujemy za przypomnienie; Mam tego świadomość :-) „Czy certyfikat SSL z podpisem własnym to fałszywe poczucie bezpieczeństwa?” „Tak, z następujących powodów ...” brzmi użytecznie, nie? Byłem więc ciekawy, dlaczego tak nie jest: mogłem nauczyć się czegoś z przeciwnego punktu widzenia; z przegłosowania, nie tyle.
Piskvor
1
@mahnsc: Dobra uwaga na temat zagrożonych urzędów certyfikacji. Nie twierdzę, że lista głównych urzędów certyfikacji jest solidna i nie do zhakowania - doskonałe bezpieczeństwo nie istnieje; ale przełamanie tego wymaga znacznie więcej wysiłku niż skonfigurowanie przechwytywania proxy SSL w bramie sieciowej.
Piskvor
1
@mahnsc: Miałem na myśli, że łatwiej jest skonfigurować proxy SSL i mam nadzieję, że użytkownik kliknie ostrzeżenia, niż skonfigurować proxy SSL i mam nadzieję, że fałszywe żądanie certyfikatu przejdzie przez proces weryfikacji urzędu certyfikacji. Jest to możliwe, jak widzieliśmy, ale ten pierwszy jest znacznie łatwiejszy do zrobienia (i trudniejszy do wykrycia później, ponieważ użytkownicy przeglądarki zwykle nie przechowują ścieżek audytu).
Piskvor
8

Zależy. Jeśli uważasz, że dzięki temu jesteś bardziej bezpieczny, to zwiększa ryzyko, gdy robisz bardziej ryzykowne rzeczy z fałszywym poczuciem bezpieczeństwa. Jeśli potraktujesz to funkcjonalnie jako odpowiednik HTTP, to powiedziałbym, że jesteś nieco bardziej bezpieczny.

Bez protokołu SSL / HTTPS każdy, kto ma wireshark w Twojej sieci (lub w lokalnej sieci każdego logującego się użytkownika), może w prosty sposób nasłuchiwać i przechwytywać nazwy użytkownika / hasła wysłane jako zwykły tekst.

Dzięki samopodpisanemu protokołowi SSL nie mogą po prostu nasłuchiwać, ale teraz muszą sfałszować witrynę, potencjalnie zmienić DNS, aby wykonać atak typu man it the middle (MITM). Jest to nadal zagrożenie, ale znacznie trudniejsze do osiągnięcia.

Innym problemem związanym z korzystaniem z samopodpisanego protokołu SSL jest to, że wiele przeglądarek traktuje certyfikaty z podpisem własnym jako poważne zagrożenie bezpieczeństwa i ostrzega przed wejściem (np. Chrome) z wielką czerwoną stroną. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Może to być poważna niedogodność.

Podsumowując, jeśli prowadzisz coś, co nie musi być szczególnie bezpieczne (np. Brak danych karty kredytowej, brak numeru ubezpieczenia społecznego) i nie stać cię na odpowiedni certyfikat, certyfikat z podpisem własnym może mieć sens (aby uniemożliwić innym użytkownikom sieci wąchanie ich danych logowania).

dr jimbob
źródło
0

Zależy to, co masz na myśli przez „bezpieczeństwo” i jaki jest zakres.

Na przykład twoja przeglądarka ma domyślnie akceptowany zestaw urzędów certyfikacji. Oznacza to, że każdy certyfikat wydany przez ten urząd certyfikacji jest akceptowany przez Twoją przeglądarkę (dopóki nie pasuje do nazwy dns). Teraz wyobraź sobie, że jakiś zły rząd ma urząd certyfikacji lub może zmusić go do wydania certyfikatu dla odwiedzanej witryny. Następnie wykonanie MITM jest bardzo łatwe: mogą proxy Twojego połączenia, wysyłając do przeglądarki certyfikat, który mają, a Twoja przeglądarka go zaakceptuje, ponieważ pochodzi on od „zaufanego” urzędu certyfikacji. Dopóki nie będą przezroczyste dla DNS (co stanowi podstawę dla MITM), jest to w porządku.

Tak więc „lista zaakceptowanych urzędów certyfikacji” jest zasadniczo wielką dziurą w zabezpieczeniach, dopóki jeden z tych urzędów nie będzie współpracować z jakimś złym rządem. Posiadanie własnego CA jest znacznie lepsze.

Oczywiście możesz to zrobić w swojej firmie lub na serwerze domowym, ponieważ możesz zainstalować własny certyfikat CA w kliencie, który również kontrolujesz. Na serwerze publicznym nie możesz poradzić sobie z żadnym użytkownikiem, prosząc go o dodanie wyjątku lub dodanie certyfikatu.

Zależy to zatem od tego, co masz na myśli, mówiąc o „bezpieczeństwie” i zasięgu. JEŚLI jesteś właścicielem klientów, NA PEWNO, samopodpisany jest bezpieczniejszy, dopóki sam nie zainstalujesz certyfikatu własnego urzędu certyfikacji.

Oczywiście nie możesz tego zrobić na publicznej stronie internetowej, ponieważ nie jesteś właścicielem wszystkich klientów. Będziesz więc narażony na ryzyko różnych zachowań, co nie jest bezpieczne.

użytkownik2402192
źródło