2010-10-14 17 views
9

Mam małe zamieszanie na uzgadniania SSL pomiędzy przeglądarką a serwerem w typowym scenariuszu https internetowej:jaki sposób przeglądarka generuje klucz symetryczny podczas SSL handshake

Co mam rozumieć tak daleko, że w procesie uzgadniania SSL klient (w tym przypadku przeglądarka) szyfruje losowo wybrany klucz symetryczny za pomocą klucza publicznego (certyfikat otrzymany z serwera). Jest on wysyłany z powrotem do serwera, serwer odszyfrowuje go (klucz symetryczny) za pomocą klucza prywatnego. Ten symetryczny klucz jest teraz używany podczas reszty sesji do szyfrowania/odszyfrowywania wiadomości na obu końcach. Jednym z głównych powodów takiego działania jest szybsze szyfrowanie za pomocą kluczy symetrycznych.

Pytania 1) W jaki sposób przeglądarka wybiera i generuje ten "losowo" wybrany klucz symetryczny?

2) Czy deweloperzy (i/lub użytkownicy przeglądarki) mają kontrolę nad tym mechanizmem generowania kluczy symetrycznych?

+0

Klient nie generuje klucza sesji; nie szyfruje go; i nie przekazuje go. Klucz sesji jest uzyskiwany za pomocą protokołu klucza. Twój opis jest w zasadzie niepoprawny. Twoje pytanie opiera się na fałszywym założeniu. – EJP

Odpowiedz

8

Here to bardzo dobry opis działania połączenia HTTPS. dam podsumowanie jak klucz sesji został nabyty przez obie strony (klient i serwer), proces ten jest znany jako „kluczowy umowy protokół”, oto jak to działa:

  1. Klient generuje 48 bajt „pre- master secret "losowa wartość.
  2. Klient podkłada te bajty losowymi danymi, aby wprowadzić dane równe 128 bajtom.
  3. Klient szyfruje go za pomocą klucza publicznego serwera i wysyła go na serwer.
  4. Następnie Master Key jest produkowany przez obie strony w następujący sposób:

    master_secret = PRF(
        pre_master_secret, 
        "master secret", 
        ClientHello.random + ServerHello.random 
    ) 
    

PRF jest „Pseudo-Random Function”, który jest również zdefiniowane w specyfikację i jest bardzo mądry. Łączy on sekret, etykietę ASCII i dane o nasieniu, które przekazujemy za pomocą wiadomości z kluczem Hash Message (HMAC) obu funkcji skrótu MD5 i SHA-1 . Połowa wejścia jest wysyłana do każdej funkcji skrótu. Jest sprytny, ponieważ jest dość odporny na ataki, nawet w przypadku słabości MD5 i SHA-1. Ten proces może przekazywać informacje o sobie i iterować na zawsze, aby wygenerować tyle bajtów, ile potrzebujemy.

Po wykonaniu tej procedury uzyskujemy 48-bajtowy "klucz główny".

+0

Klient nie generuje klucza sesji; nie szyfruje go; i nie przekazuje go. Klucz sesji jest uzyskiwany za pomocą protokołu klucza. – EJP

+0

@EJP masz rację, moja odpowiedź była całkowicie niepoprawna, przepisałem ją. Sprawdź to i powiedz, czy uważasz, że teraz jest lepiej. – Andrey

Powiązane problemy