SSH y la secuencia de conexión
En esta oportunidad un breve post aclarando las dudas de Mauricio, un alumno del curso de SSH, sobre los principales pasos criptográficos en el proceso de conexión.
Hemos hablado largo y tendido sobre SSH en este blog, claves diferenciales, reenvío de túnel, ssh agent, otros usos, etc.
Lo que no hemos profundizado mucho es sobre el protocolo en si, la secuencia de encriptación del túnel, generación de claves de cifrado, algoritmos, etc.
Hoy les voy a comentar algunos detalles, más adelante podemos profundizar si les interesa el tema, aprovechando que Mauricio, alumno del curso de SSH de cero a experto, realizó una consulta muy interesante 🙂
Autenticación vs privacidad
SSH sabemos que permite varios mecanismos de autenticación de los usuarios remotos: por contraseña, con par de claves pública y privada, añadido de token de 2SV, etc.
Ahora bien, muchas veces pensamos que la autenticación del usuario, independientemente de si se usa contraseña, clave pública y privada, etc., se realiza antes de establecer el túnel cifrado, pero esto no es tan así.
En pocas palabras, primero se crea un túnel cifrado de manera simétrica, dado que los algoritmos de cifrado simétricos son mucho más eficientes que los asimétricos, y luego, mediante este túnel cifrado, se intercambian los datos de la autenticación del usuario.
Veamos esto con un poquito más de detalle.
Proceso de conexión de SSH (brevemente)
Cuando un cliente se intenta autenticar con un servidor de SSH, se llevan a cabo los siguientes pasos:
- Obviamente, como SSH corre sobre TCP, primero se realiza el handshake de conexión TCP 😛
- Luego, los nodos inicial el protocolo Diffie-Hellman. En pocas palabras, ambos nodos intercambian valores numéricos, y mediante operaciones matemáticas, obtienen un mismo valor en ambos lados, sin haberlo intercambiado directamente.
- Tomando ese valor de clave compartida, ambos nodos utilizan una función de derivación de clave de algún algoritmo simétrico (AES-256 por ejemplo), y ambos obtienen la misma clave simétrica de cifrado. A partir de este momento, todo el tráfico posterior viaja cifrado por el túnel.
- Dentro de ese túnel cifrado, los nodos intercambian los datos de autenticación (claves de host, claves públicas, hashes, etc), para permitir la autenticación del usuario y los equipos.
Si la autenticación del usuario resulta satisfactoria, se podrá utilizar el túnel SSH para el propósito que se creó (terminal remota, intercambio de archivos, sshfs, vpn, etc).
Notas finales
Hemos visto un breve resumen de los pasos principales que se llevan a cabo durante la creación del túnel SSH y la autenticación del usuario.
En otra oportunidad ampliaré estos conceptos para entender a fondo todo el intercambio de datos que se lleva a cabo para la creación del túnel seguro.
Lo publicaré aquí, y también estará disponible en formato video en el curso de SSH para que puedan aprovecharlo.
Otro tema interesante es el de los intercambios criptográficos, Diffie-Hellman, la obtención de la clave compartida, las funciones de derivación de clave para los algoritmos simétricos, y la autenticación asimétrica dentro del canal.
¿Les interesaría un curso de criptografía aplicada para profundizar estos temas? Podríamos trabajar con OpenSSL, GnuPG y demás, y estaríamos un rato largo jugando con comandos, claves y archivos cifrados o/
Cualquier duda, consulta o sugerencia, saben que pueden sumarse a nuestro grupo en Telegram, donde encontrarán un topic sobre «Criptografía y seguridad«, así que quedan invitados a participar!
Hasta la próxima!