Un usuario malintencionado no puede explotar una huella digital conocida públicamente de una clave pública, porque la verificación no se limita a comparar la huella digital con un valor fijo.
El servidor presenta dos datos a un cliente:
- una clave pública
- un mensaje cifrado con su clave privada (que existe solo en el servidor legítimo)
En el lado del cliente, el mensaje se descifra con la clave pública y se verifica su contenido.
El usuario tiene la opción de comparar manualmente la huella digital de la clave pública con un valor conocido.
Al comparar la huella digital de la clave pública, el usuario se asegura de que pertenezca al servidor al que desea conectarse. Al descifrar el mensaje, la aplicación cliente garantiza que el servidor "contenga" la clave privada correspondiente.
El conocimiento de la clave pública o su huella digital no le proporciona al atacante ninguna información sobre la clave privada del servidor (ese es el principio más básico de la criptografía de clave pública).
Si el atacante instaló un servidor malicioso, aún necesitaría usar una clave privada para cifrar la comunicación con el cliente. La comunicación cifrada con esta clave privada requeriría descifrado con una clave pública correspondiente (diferente a la legítima).
El usuario puede comparar la huella digital de la clave pública utilizada con la del servidor legítimo tal como se publicó.
Por supuesto, si un atacante modificó la información sobre la clave pública del servidor y la reemplazó con la suya, ese ataque funcionará. Por lo tanto, el usuario debe evaluar el nivel de confiabilidad del medio del cual aprendió la huella digital. En palabras sencillas: si la información de huellas dactilares se proporciona en un sitio HTTP sin cifrar o a través de un canal comprometido, no se puede confiar.
Históricamente, la huella digital predeterminada se presentó como hash MD5 de 128 bits en forma de valores hexadecimales separados por dos puntos:
43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8
El valor predeterminado se cambió más tarde a SHA-256 escrito como:
xrcV3g7R6sp8DVZGDEAhCL9s4TD9GFyrCbLCzHXi5iA
Un cliente OpenSSH permite solicitar un hash específico mediante la opción FingerprintHash
especificada en .ssh/config
o directamente en el comando:
ssh -o FingerprintHash=md5 example.com