Llevo ya un tiempo queriendo escribir algunas palabras sobre esto por dos motivos. El primero, debido a la gran importancia que a día de hoy debería de ser mantener las comunicaciones seguras entre los equipos de los usuarios y los servidores remotos, y en segundo lugar por lo que, desde mi opinión claro está, es la gran labor que han llevado a cabo y están realizando todos los que están detrás del proyecto de “Let’s Encrypt”.
Como es costumbre, vamos a hacer una pequeña introducción para explicar en primer lugar un poquito de todo esto para quienes no sepan de ello, y para los que sepan y aun estén recelosos clarar algunas dudas.
¿Que es Let’s Encrypt?
La versión corta y reducida es la que podemos encontrar en su propia web: https://letsencrypt.org/:
“Let’s Encrypt is a new Certificate Authority: It’s free, automated, and open” (Let’s Encyrpt es una nueva Autoridad de Certificación. es gratuito, automatizado y abierto).
Internet no se construyó en su origen para ser seguro, de tal modo que en su versión simplista se trataba de poder enviar información desde un punto a otro. Los años, y más los tiempos que corren, demostraron que eso está muy bien, pero se hacía necesario algún sistema de cifrado punto-a-punto que asegurase dicha comunicación. Los cifrados punto-a-punto se denominan así (ahora de moda con las aplicaciones de mensajería instantánea) porque el contenido se cifra/descifra en los extremos, es decir… se cifra en nuestros dispositivos y circula de ese modo hasta llegar al destino, haciendo que sea, en teoría siempre, poder “leer” dicho tráfico si alguien intercepta la comunicación en cualquier punto de dicha travesía. De este modo tan solo el origen y el destino de dicha comunicación podrían entender lo que están enviando/recibiendo. Esto fue vital para Internet, y así nació HTTPS, que todos estamos hartos de ver.
HTTPS se fundamenta en el uso de los protocolos TLS y SSL, los cuales a su vez su funcionamiento radica en el uso de lo que llamamos certificados digitales para poder crear un entorno de cifrado asimétrico (ya sea RSA, ECC…). Esto ya hablé bastante en su día, así que no voy a repetir el grueso de todo aquello, quien le interese, creo que estaba en el artículo de Seguridad: Encriptación y Autentificación (cap 4). Abreviando mucho, digamos que, al menos, el servidor al cual los usuarios se conectan para iniciar su comunicación de forma segura debe de poseer un certificado digital que será enviado al cliente al iniciar la conexión y que le dará a este toda la información necesaria para realizar esa conexión, como la clave pública que usará el cliente para cifrar la clave simétrica de sesión, los algoritmos a usar para el cifrado… e igualmente importante, los datos necesarios para que el usuario PUEDA VERIFICAR LA CORRECTA IDENTIDAD DEL SERVIDOR AL QUE SE CONECTA, empezando por el CA (Autoridad de Certificación) que emite dicho certificado.
El cifrado es esencial si queremos que nuestras comunicaciones no puedan ser leídas en ningún punto hasta su destino (evidentemente sobre todo cuando estamos transmitiendo información que pueda ser confidencial o importante como usuarios/contraseñas, tarjetas de créditos, datos personales..). Esto no es un problema para TLS/SSL, y a día de hoy si la implementación TLS/SSL es buena y usando las versiones más actuales y otros, el cifrado es, en la práctica, imposible … Leer Más...