2012-06-09 40 views
16

Większość artykułów wiki opisuje, w jaki sposób przeglądarka klienta wykorzystuje klucz publiczny (certyfikat), szyfruje poufne dane (takie jak nazwa użytkownika/hasło) i wysyła te zaszyfrowane dane do serwera. Serwer użyje klucza prywatnego do odszyfrowania go. Dostaję tę część. Ale nie ma jasnych informacji mówiących o tym, jak serwer szyfruje dane i odsyła je do przeglądarki.W jaki sposób SSL szyfruje dane z serwera do klienta?

Użyj mojego bankowości internetowej jako przykład:

(0) Ja już zaakceptowane zaufany certyfikat (klucz publiczny) z moim internetowym bankowości.

(1) Poprzez URL SSL Moja wizyta przeglądarka https://myonlinebanking.com

(2) Wpisałem nazwę użytkownika/hasło, aby się zalogować. Te dane są zaszyfrowane, więc człowiek-w-środku może zobaczyć tylko bezsensowne dane.

(3) Serwer internetowy banku odebrał moje zaszyfrowane dane i użył klucza prywatnego do jego odszyfrowania i uwierzytelnienia mojego konta.

Teraz tutaj są moje pytania:

Jak Bank wysyła z powrotem moje dane? Bank szyfruje dane odpowiedzi, jaki klucz? Jeśli bank jest zaszyfrowany przy użyciu "klucza publicznego", osoba w środku może je zobaczyć tak, jak to widzę. Więc człowiek-w-środku nie zna mojej nazwy użytkownika/hasła, ale wciąż może zobaczyć saldo mojego konta?

Dziękuję za pomoc.

+1

To jest nietypowe. Jeśli masz pytania dotyczące programowania, stackoverflow jest doskonały. Jeśli masz pytania związane z bezpieczeństwem lub kryptografią, istnieje strona stosu zmian dla twoich potrzeb. Nie wspominasz o artykułach wiki, które czytałeś, ale [artykuł w Wikipedii na temat TLS] (http://en.wikipedia.org/wiki/Transport_Layer_Security) z pewnością odpowiada na twoje pytania. –

+0

@ Simon to jest idealne pytanie, które miałem zadać (w rzeczywistości wygląda na to pytanie zadałem). Ale nie do końca zrozumiałam, że odpowiedź, którą zaakceptowałeś, odpowiedziała na twoje pytanie: "Jeśli bank jest zaszyfrowany" kluczem publicznym ", człowiek-w-środku może to zobaczyć, tak jak ja to widzę. t znać swoją nazwę użytkownika/hasło, ale wciąż może zobaczyć stan mojego konta? " Jeśli uważasz to za poprawne, Czy możesz pomóc mi wyjaśnić następujące stwierdzenie z odpowiedzi? "Twoja przeglądarka sprawdza, czy certyfikat jest powiązany z hostem, z którym rozmawia." – Darshan

Odpowiedz

7

Proces TLS handshake konfiguruje symetryczny klawisz między obu stron, potencjalnie używając kryptografii asymetrycznej w procesie (szczegóły zależą od dokładnych algorytmów, które zostały wynegocjowane między klient/serwer). W ten sposób komunikacja jest szyfrowana w obie strony, nie tylko w jedną stronę.

Rzeczą, która ostatecznie chroni Cię przed MITM, jest fakt, że twoja przeglądarka ma jakąś formę sprawdzania poprawności nazwy hosta. Certyfikat przedstawiony przez serwer w uzgadnianiu jest najpierw sprawdzany pod kątem jego ważności. Jeśli to się uda, przeglądarka sprawdzi, czy certyfikat jest powiązany z hostem, z którym rozmawia. Gdyby ta kontrola została pominięta, atak MITM nadal by się powiódł, nawet jeśli reszta komunikacji ściśle przestrzegała protokołu, w tym wszystkich elementów kryptograficznych. Atakujący może po prostu udawać, że jest jakimkolwiek gospodarzem i posłusznie wykonywać resztę protokołu, nie znałby różnicy.

+3

Czy mógłbyś bardziej szczegółowo wyjaśnić, w jaki sposób szyfrowana odpowiedź serwera TLS zapewnia szyfrowanie? A jeśli tak, w jaki sposób klient odszyfruje? – supertonsky

6

Masz jakieś błędne założenia:

  • Dane HTTP nie zawsze jest szyfrowane za pomocą klucza publicznego serwera, aby wysłać go do serwera
  • Klucz publiczny serwera jest tylko używane na początku (protokół uzgadniania) w celu ustanowienia bezpiecznego klucza, dla bezpiecznego szyfrowania klucza (szyfrowanie symetryczne)
  • Cała komunikacja odbywa się za pomocą tajnego klucza lub szyfrowania klucza symetrycznego, w którym klient (przeglądarka) i serwer używają tego samego tajnego klucza szyfrować i odszyfrowywać dane.

Protokół TLS (Transport Layer Secuirty) wykorzystuje kombinację szyfrowania asymetrycznego (klucz publiczny) i szyfrowania symetrycznego (klucz zabezpieczający). Główna komunikacja z bankiem odbywa się za pomocą szyfrowania symetrycznego, dla którego klucze sesji (bezpieczny klucz) są bezpiecznie ustanawiane podczas uzgadniania TLS, z wykorzystaniem szyfrowania asymetrycznego.

Jest to wszystko w uścisku dłoni TLS (Transport Layer Security), który jest bardzo dobrze wyjaśniony w tym linku here.

+0

Klucz sesji nigdy nie jest szyfrowany i nigdy nie jest wysyłany. Jest zawsze negocjowany. RFC 2246 # 8.1. – EJP

Powiązane problemy