Jaka jest różnica między kluczami RSA, DSA i ECDSA używanymi przez ssh?

13

W moim /etc/ssh/katalogu widzę trzy, że mam trzy różne typy kluczy ssh:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Jakie są różnice między kluczami RSA, DSA i ECDSA ssh i czy potrzebuję wszystkich trzech?

czterolistny
źródło

Odpowiedzi:

9

Są to klucze generowane przy użyciu różnych algorytmów szyfrowania. Podczas korzystania z SSH możesz wybrać różne formy szyfrowania, nieco podobne do możliwości wyboru różnych metod szyfrowania dla Wi-Fi (WPA2, WPA, WEP itp.).

SSH korzysta z szyfrowania klucza publicznego, co oznacza, że ​​kiedy łączysz się z serwerem SSH, rozgłasza klucz publiczny, którego możesz użyć do zaszyfrowania dalszego ruchu wysyłanego na ten serwer. Jeśli serwer jest skonfigurowany do korzystania z RSA, będzie to klucz generowany przez algorytm RSA.

Komputer wysyła swój własny publiczny klucz RSA z pliku klucza wymienionego w pytaniu. Serwer potrzebuje tego klucza, aby połączyć się z tobą i odpowiedzieć.

Wszystkie trzy klucze istnieją na twoim komputerze, ponieważ dowolny serwer SSH, z którym się łączysz, może być skonfigurowany do użycia dowolnego z tych algorytmów. Twój komputer odeśle unikalny klucz pasujący do typu używanego przez serwer, ponieważ Twój klucz został wygenerowany na twoim komputerze przez ten sam algorytm.

Oto kilka innych zasobów:

/security/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_(alameterm)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

Zoasterboy
źródło
2
Krótko mówiłeś o tym, dlaczego wszystkie trzy są, cel klucza ssh i co klucze mają ze sobą wspólnego: klucze używają algorytmów szyfrowania. To, o czym nie mówiłeś, jaka jest różnica między kluczami RSA, DSA i ECDSA.
Enkouyami
6

Potrzebujesz ich wszystkich?
Nie, twój serwer ssh potrzebuje tylko jednego, a klient musi obsługiwać tylko jeden typ klucza dla połączeń ssh.


RSA, DSA, ECDSA, EdDSA i Ed25519 są używane do podpisywania cyfrowego, ale tylko RSA może być również używany do szyfrowania.

RSA ( Rivest – Shamir – Adleman ) jest jednym z pierwszych kryptosystemów z kluczem publicznym i jest szeroko stosowany do bezpiecznej transmisji danych. Bezpieczeństwo opiera się na rozkładzie liczb całkowitych , więc bezpieczny RNG (generator liczb losowych) nigdy nie jest potrzebny. W porównaniu z DSA, RSA jest szybszy do weryfikacji podpisu, ale wolniejszy do generowania.

DSA ( algorytm podpisu cyfrowego ) to federalny standard przetwarzania informacji dla podpisów cyfrowych. Bezpieczeństwo opiera się na dyskretnym problemie logarytmicznym . W porównaniu do RSA, DSA jest szybszy do generowania sygnatur, ale wolniejszy do sprawdzania poprawności. Zabezpieczenia mogą zostać naruszone, jeśli zostaną użyte generatory złych liczb .

ECDSA ( eliptyczny algorytm podpisu cyfrowego ) to implementacja krzywej eliptycznej DSA (algorytm podpisu cyfrowego). Kryptografia krzywych eliptycznych jest w stanie zapewnić względnie taki sam poziom bezpieczeństwa jak RSA z mniejszym kluczem. Ma również tę wadę, że DSA jest wrażliwa na złe RNG.

EdDSA ( algorytm podpisu cyfrowego według krzywej Edwardsa ) to schemat podpisu cyfrowego wykorzystujący wariant podpisu Schnorra oparty na krzywych Twisted Edwards . Tworzenie sygnatur jest deterministyczne w EdDSA, a jego bezpieczeństwo opiera się na trudnych do rozwiązania problemach z dyskretnym logarytmem, więc jest bezpieczniejsze niż DSA i ECDSA, które wymagają wysokiej jakości losowości dla każdej sygnatury.

Ed25519 , to schemat podpisu EdDSA, ale wykorzystujący SHA-512/256 i Curve25519 ; jest to bezpieczna krzywa eliptyczna, która oferuje lepsze bezpieczeństwo niż DSA, ECDSA i EdDSA, a ponadto ma lepszą wydajność (niewyczuwalnie ludzką).


Inne uwagi
Klucze RSA są najczęściej używane, a zatem wydają się najlepiej obsługiwane.

ECDSA (wprowadzony w OpenSSH v7.7 ) jest obliczeniowo lżejszy niż DSA, ale różnica nie jest zauważalna, chyba że masz maszynę o bardzo niskiej mocy obliczeniowej.

Począwszy od OpenSSH 7.0 , SSH nie obsługuje już domyślnie kluczy DSA (ssh-dss). Klucz DSA działał wszędzie, zgodnie ze standardem SSH (RFC 4251 i kolejne).

Ed25519 został wprowadzony w openSSH 6.5 .

Enkouyami
źródło
1
Czy to EdDSA lub ECDSA ?
mur
@muru To ECDSA. Zaktualizuję odpowiedź z informacjami na temat obu i naprawię link.
Enkouyami
Nie mogłem znaleźć, kiedy EdDSA został wprowadzony w OpenSSH.
Enkouyami
Czy komputer kwantowy może je wszystkie złamać?
Kjeld Flarup
@KjeldFlarup, Tak; na podstawie odpowiedzi i komentarzy na security.stackexchange.com/questions/211587 /... komputer kwantowy może je wszystkie złamać.
Enkouyami,