Szyfrowanie symetryczne w SSH

0

W jednym artykule: https://www.redhat.com/sysadmin/ssh-secure-communication przeczytałem, że do szyfrowania komunikacji po SSH używa się szyfrowania symetrycznego.
Both client and server agree upon a single method and generate a shared key, which is of course never disclosed to a third party, and hence it is used to send shared/secret key messages. The most interesting part about this method is that the key is never exchanged between a client and a server. Instead, each machine calculates the shared key independently using a method agreed upon earlier. Even if a third-party machine captures the data, it’s unable to decrypt because the method used to encrypt the data is unknown.

Jak to jest możliwe, że klucz nie jest wymieniany między klientem i serwerem, tylko każdy z nich generuje go sam, a osoba podsłuchująca komunikację od początku nie jest go w stanie wygenerować?

5

Lekcja na dziś: Diffie Hellman Key Exchange :)
W skrócie:

  1. Wybieramy sobie liczbę g jakąś, oraz liczbę pierwszą p
  2. Ja losuje swój "sekret" a i wysyłam do ciebie g^a mod p
  3. Ty losujesz swój sekret b i wysyłasz do mnie g^b mod p
  4. Teraz ja mogę wiadomość od ciebie podnieść do potęgi a dostając w efekcie g^ab mod p
  5. Ty możesz analogicznie podnieść moją wiadomość do potęgi b dostając g^ab mod p

Voila, każdy z nas zna wartość g^ab mod p ale ktoś podsłuchujący całą komunikacje nie jest w stanie tej liczby odtworzyć, bo problem logarytmu dyskretnego jest trudny obliczeniowo i na podstawie mojego g^a mod p nie da się łatwo policzyć a i analogicznie w przypadku b.

To oczywiście nadal jest podane na ataki man in the middle, bo nigdzie nie mamy jak zweryfikować czy rozmawiamy z tym z kim myślimy że rozmawiamy, więc w praktyce dodatkowo opakowane jest to przez RSA, więc mamy przynajmniej pewność, że komunikujemy się z kimś kto posiada klucz prywatny RSA pasujacy do klucza publicznego naszego oczekiwanego odbiorcy.

0

Even if a third-party machine captures the data, it’s unable to decrypt because the method used to encrypt the data is unknown.

To stwierdzenie jest bez sensu. Metod używanych jest niewiele, zawsze można by było wszystkie przeenumerować. To co się liczy, to że klucz szyfrujący nie jest znany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1