en En profundidad

¿Qué es SSL y TLS?

Un protocolo es un acuerdo de funcionamiento entre dos partes. Por ejemplo, cuando vemos esa imagen en la pista de un aeropuerto de un individuo moviendo unas banderitas delante de un A390, está usando un protocolo que también conoce el piloto. Si alguno de los dos no conociera el protocolo no sería bueno para los pasajeros. Los idiomas se podrían considerar como protocolos light, son formas de comunicación, pero no implican acciones como los protocolos

Los ordenadores son iguales. Necesitan establecer algún tipo de mecanismo o acuerdo de funcionamiento para entenderse entre ellos. Pueden ser todo lo «tontos» o «listos» que la persona que diseña el protocolo quiera. Entre ordenadores, un protocolo se parecería a lo siguiente

  • PC-1: Hola, soy un PC con Windows 10
  • PC-2: Hola, soy un PC con Linux. ¿PC-1, estás preparado para recibir algo que te quiero mandar?
  • PC-1: Si
  • PC-2: Comienzo trasmisión de paquete 1 de 200
  • PC-2: Lanzo el 1 de 200
  • PC-1: Recibido
  • PC-2: Lanzo el 2 de 200
  • PC-1: Recibido
  • PC-2: Lanzo el 3 de 200
  • PC-1: Error de checksum (o sea, lo ha recibido mal)
  • PC-2: Me anoto reenviar el paquete 3 cuando tenga un rato
  • ——–
  • … y así hasta que……..
  • PC-2: Fin de la transmisión, 200 paquetes originales, 5 erróneos, 205 enviados en total
  • PC-1: OK, fin de transmisión

… y dicho esto, ¿Para que sirven SSL y TLS?

Para cifrar un canal de comunicación entre dos máquinas, es decir, evitar que si alguien “pincha” el cable y lee el tráfico, no sea capaz de entender nada.

Una vez establecido ese canal cifrado ya se puede usar HTTP «por encima» y entonces pasará a ser HTTPS, se puede usar FTP sobre SSL/TLS y pasará a ser SFTP y así con todo protocolo que se ponga sobre alguno de los dos (algún día hablaremos de «capas» dentro de las pilas de protocolos)

Cuando digo que HTTP está «por encima» de SSL o TLS es un «encima» funcional. Realmente ambos son nivel 4 (Application Layer) de modelo TCP

Vamos con los «ruegos y preguntas»

¿Cuál es más seguro?: TLS

TLS que actualmente está en su versión 1.2 (1.3 en borrador) es la evolución de SSL. Ya hace tiempo se encontraron diversas vulnerabilidades en el protocolo SSL lo que hace recomendable deshabilitarlo en el navegador y/o en las opciones de internet

¿Puede un ordenador usar SSL y el otro TLS?: No

Las diferencias entre ambos no son excesivamente grandes, pero son lo suficiente para que no puedan hablar entre si

¿Vale mi certificado de la FNMT para cualquier de ellos?: Si (y pongo de la FNMT porque son conocidos, pero la pregunta aplica a cualquier certificado)

El certificado (de una máquina o una persona) es independiente del protocolo. No hay certificados para SSL o para TLS

¿Qué tiene que ver el puerto y el protocolo?: Pues algo y nada

Existen una serie de puertos denominados «seguros» que son los que son porque es un estándar, pero podrían ser otros. Un puerto seguro y bien conocido es el 443 que es el de HTTPS. Cuando el navegador se dirige a un servidor «atacando» su puerto 443 significa que el cliente ya sabe que el servidor tiene un certificado y directamente y la conexión es segura desde el primer instante. Es decir, dirigiendo el tráfico a un puerto seguro se inicia una conexión segura desde el principio

Otra forma de «atacar» el servidor es por protocolo. En este caso la sesión se inicia sin cifrar con un simple «hola que tal». Luego son las máquinas las encargadas de «negociar» el protocolo que se va a utilizar estableciendo un mecanismo de cifrado en común

Hay sitios donde se dice que las conexiones por puerto son SSL y por protocolo son TLS. Yo no estoy muy de acuerdo con eso pero esto no es importante

Si quieres ampliar esto mira estos enlaces. El primero es especialmente bueno

https://www.ecured.cu/TLS

http://profesores.elo.utfsm.cl/~agv/elo322/1s14/projects/reports/G5/Informe%20TLS.pdf

https://www.rediris.es/tcs/doc/ccncert/CCN-CERT_BP-01-17_Recomendaciones_implementacion_HTTPS.pdf