Przy nawiązywaniu połączenia z serwerem za pomocą protokołu SSH dochodzi do uwierzytelnienia pomiędzy klientem i serwerem, w taki sposób, że serwer po zainicjowaniu połączenia udostępni klientowi swoje odciski klucza publicznego, aby klient mógł zweryfikować tożsamość serwera.
Wiarygodność i bezpieczeństwo połączenia zależy więc od tego, czy użytkownik faktycznie dokona porównania udostępnionych przez serwer odcisków palców z oczekiwanymi odciskami palców publicznego klucza serwera.
Wprowadzeniem rekordu DNS SSHFP (RFC 4255) dla klientów SSH powstaje nowy sposób uwierzytelniania polegający na porównaniu fingerprinta udostępnionego przez serwer z fingerprintem zapisanym w strefie DNS domeny dla serwera FQDN. Przy porównaniu muszą być zgodne wszystkie parametry rekordu SSHFP – algorytm użyty do wygenerowania klucza, algorytm użyty do wygenerowania odcisków klucza i wreszcie sam odcisk klucza.
Korzystanie z DNS SSHFP ma sens tylko w przypadku, że rekord ten jest podpisany technologią DNSSEC, która gwarantuje, że dany rekord nie może być sfałszowany.
Format rekordu SSHFP
Rekord SSHFP składa się z trzech części:
- Algorithm Number Specification – algorytm używany do generowania klucza publicznego
- 0 – wartość zarezerwowana
- 1 – RSA
- 2 – DSA
- 3 – ECDSA
- 4 – ED25519
- Fingerprint Type Specification – message-digest algorytm użyty do wygenerowania fingerprinta
- 0 – wartość zarezerwowana
- 1 – SHA-1
- 2 – SHA-256
- Fingerprint – fingerprint publicznego klucza serwera
Przykład rekordu DNS SSHFP
Poniższy przykład ilustruje rekord SSHFP niosący fingerprint serwera z FQDN ssh.domena.tld
HOST TTL RR type RR value
---------------------------------------------------------------------------------
ssh.domena.tld. 1800 IN SSHFP 2 1 123456789abcdef67890123456789abcdef67890