¿Que son los certificados digitales? SSL y TLS

By | 2020-06-08

En varios post sobre seguridad les hable sobre la importancia de comprobar que las comunicaciones se realicen bajo algún tipo de cifrado, actualmente dentro de los mas utilizados existe el SSL o TLS (la evolución del primero). Para comenzar a entender su funcionamiento tenemos que hablar sobre el cifrado asimétrico el cual usualmente también se define como el cifrado de llave pública y llave privada (ya vamos a explicarlo). Antes que nada, saben a que nos referimos con cifrado (también llamado encripción) ? En caso que no, te voy a explicar muy brevemente (a los interesados en profundizar en los temas que voy a tratar en este post, los cuales voy a resumir para no aburrir, voy a dejar varios vínculos al final del post para que puedan leer más sobre el tema):

El cifrado es un proceso matemático sobre los datos que vamos a enviar el cual resulta en datos incomprensibles para cualquiera de las personas que tomen ese resultado sin conocer varios datos, un ejemplo:

Yo quiero enviarle “hola” a un amigo, entonces quiero cifrar los datos para que si alguien captura esos datos no puedan saber que estoy saludando a mi amigo. Entonces unas semanas antes le dije a mi amigo, cuando nos encontramos a tomar algo, que íbamos a usar una metodología para la comunicación, la cual iba a ser pasar las letras de nuestros comunicados a un valor numérico que correspondería a la posición en el abecedario español estándar actualizado al 2014. Por ende “hola” lo vamos a enviar como 8-16-12-1; se lo enviamos y él deberá hacer el trabajo contrario para entender el mensaje (pasar de números a letras). A este concepto también se lo llama cifrado simétrico, ya lo vamos a ver más adelante en detalle.

Ahora bien, ya aprendimos que es el cifrado y para qué nos sirve, vamos a hablar de entender los diferentes tipos de cifrados, ya que esto nos llevara a comprender como trabajan los certificado en una comunicación con cifrado asimétrico (ja, otro concepto más !).

Volvamos al caso anterior, somos aún más desconfiados y sabemos que la metodología que aplicamos con mi amigo es bastante simple, entonces que hacemos ? Bueno, concordamos con mi amigo que a todos los números le vamos a sumar el año de nacimiento de la madre de alguno (1900, para que sea fácil), esto viene a ser una password o contraseña que agregamos a la metodología del cifrado, entonces cuando le enviemos el mensaje pasara a ser 1908-1916-1912-1901. Entonces el que interfiera estos datos no solo va a tener que adivinar que metodología utilizamos (pasar las letras a números dependiendo su posición) sino que también va a tener que adivinar cual es la password (el número que le sumamos).

¿Se acuerdan que les dije que esto era cifrado simétrico? Se llama así porque utilizamos la misma clave para cifrar y descifrar; el problema que se presenta acá es que yo debería acordar la contraseña y la metodología de antemano con todos mis amigos si es que quiero hablar de forma privada, con un amigo se puede llegar a hacer, pero se imaginan si lo tenemos que hacer con todos nuestros amigos ? Para eso se desarrollo el cifrado asimétrico, otro de los conceptos que ya les mencioné, este tipo de cifrado trabaja con dos llaves (pedazos de código) llamadas pública (la que le vamos a entregar a la otra parte) y privada (solamente nosotros la vamos a tener). Ahora bien, para que se produzca una comunicación cifrada bajo el cifrado asimétrico lo que tiene que pasar es que las partes se pongan de acuerdo en la metodología de cifrado (el algoritmo, la forma de como se van a hacer el cifrado), en el caso de internet esto se hace por un estándar no es necesario que las personas interactúen. Para comenzar con el envío del mensaje lo primero que tiene que pasar es que la otra parte nos tiene que enviar su clave pública, la cual vamos a utilizar nosotros para cifrar los datos que le queremos enviar, una vez realizado ese proceso, el de cifrado, vamos a enviarle la salida del mismo a la otra parte la cual deberá utilizar su clave privada para poder descifrar el mensaje (observen que el descifrado no se hace con la misma clave que se cifra, por eso el tema de la asimetría), el resultado del procesamiento de la clave privada y los datos enviados nos van a dar como resultado el mensaje original.

Volviendo al tema central de este post, certificados digitales, vamos a tener que saber antes lo siguiente:

– Navegador o software cliente: es el software que esta instalado en la máquina del usuario, el cual va a recibir información y nos la va a mostrar. Este software como estándar va a utilizar TLS 1.2.

– Servidor web o software servidor: es el software que esta instalado en los servidores donde nosotros nos conectemos (por ej. www.elblogdesepa.com.ar) dicho software podría tener la posibilidad de presentar páginas web bajo el protocolo HTTP que utiliza el estándar de cifrado TLS 1.2 (HTTPS).

Notas:

Tanto el software cliente como el software servidor deberán tener la posibilidad de utilizar la misma versión de cifrado (en los casos comentados anteriormente ambos utilizan TLS 1.2 que vendría a ser la metodología que utilizan para cifrar).

TLS es la evolución de SSL (SSL 3.0 es TLS 1.0, versiones que ya están obsoletas, la más moderna es TLS 1.3).

Y para finalizar vamos al último ejemplo que es la utilización de los certificados digitales (perdón si es largo, pero no se me ocurre forma más fácil y resumida para hacerlo):

Entonces estoy sentado en el sillón, con la notebook o el celular, y quiero entrar a un sitio (www.elblogdesepa.com.ar) y para ingresar al mismo tengo que poner un usuario y contraseña, los cuales claramente no quiero que se entere nadie; estos dos valores van a viajar entre mi dispositivo y el servidor, cualquiera podría querer capturarlos (imagínense si es un acceso a una cuenta bancaria…). Pero como leí alguno de los post que escribió Sepa entendí que debería cifrar dicha información para que nadie que capture los datos que yo envío entre mi navegador y el servidor pueda hacerse con esos datos y provocarme un daño (si es la del homebanking el daño claramente sería económico, pero en cualquier otro podría ser el daño a nuestra privacidad). Ahora bien, por suerte el navegador que utilizo esta actualizado y soporta el uso de TLS, entonces en vez de entrar a https://www.elblogdesepa.com.ar ingreso a https://www.elblogdesepa.com.ar (véase que se cambia el protocolo HTTP a HTTPS, esto activa la comunicación cifrada); una ventaja adicional que nos da el cifrado asimétrico es que nos deja verificar la autenticidad del emisor de la clave pública (en el caso de mi amigo, podría llamarlo y preguntarle si la clave que le voy a leer -la pública de él- es la que corresponde) para eso me puedo dirigir al candado que casi siempre esta del lado izquierdo de la url (https://www.elblogdesepa.com.ar) y verificar algunos datos como por ejemplo el nombre del emisario, la fecha de validez y otros datos (estos los dejamos para los más curiosos en los vínculos al final); como todo esto puede ser engorroso para hacerlo por cada sitio que entremos los navegadores lo resuelven por nosotros utilizando servidores de confianza (también dejo lo vínculos de esto porque suma más complejidad a la comunicación), para ello la mayoría de los navegadores nos suelen poner el candado antes mencionado en verde (que todas las comprobaciones de validez fueron correctas). Aunque ustedes no hayan hecho nada más que ingresar al sitio nuestro navegador se encargo de crear nuestras dos claves (1 pública – 1 privada), le envío la clave pública al servidor y cuando el servidor nos respondió con la información cifrada con nuestra llave pública se encargo también en descifrar dichos datos con la llave privada y mostrárnoslos por pantalla como información (página web). Como verán, si si están cansados de leerme, pero les aseguro que lo que están aprendiendo es súper útil; todo este proceso es complejo pero tanto nuestro navegador y el servidor del otro lado hicieron todo este trabajo en décimas de segundo, asegurandoles a ustedes una navegación segura sin la posibilidad de que un tercero se haga con información o datos que solo ustedes y el servidor (de mi blog o el banco) tienen que saber.

Y para ir cerrando, les dejo los ejemplos de cómo los navegadores actuales presentan una conexión segura:

Firefox

Google Chrome

Microsoft Edge

En caso que en alguna parte les aparezca algo en rojo (el texto o el candado) o que aparezca una página de advertencia vuelvan a probar ingresando la url a mano y si les vuelva a pasar, no ingresen al sitio (dichos errores significan que podrían estar interfiriendo nuestra comunicación o que el cifrado no se realiza de forma valida).

Y ahora si, el fin del post, los vínculos con más información:

* https://es.wikipedia.org/wiki/Criptograf%C3%ADa_sim%C3%A9trica

* https://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica

* https://es.wikipedia.org/wiki/Seguridad_de_la_capa_de_transporte

* https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/

Desde ya les agradezco haberse tomado el tiempo en leer este post y espero que todo esto les sirva para poder navegar más seguros por Internet, también para estar más tranquilos que nadie tome lo que no es suyo 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.