Un tema que mencione en mi artículo de Ciberseguridad – HTTPS – Día 4 es sobre los certificados digitales.
¿Qué son? Básicamente, un certificado digital es una referencia que confirma la identidad de una entidad digital o dispositivo.
Es muy básico, tal como funcionan los certificados físicos, donde una entidad (Por ejemplo, un gobierno) emite a nombre de un individuo que él tiene ciertas características.
Un pasaporte es emitido por un gobierno, y contiene los datos de dicha persona a nombre de quien fue emitido. Los pasaportes para evitar falsificaciones tienen medidas de protección, validación, y sistemas complementarios.
Lo mismo sucede con los certificados digitales, una entidad, normalmente las llamamos “Root CA”, son compañías que se encargan de emitir certificados a individuos u otras compañías. Y utiliza un sistema de llave pública/privada.
Los algoritmos de llave pública/privada es bastante sencillo, se genera dos “llaves” Todos los valores que se cifren con la llave privada, solo pueden ser leídos por la llave pública y viceversa. La idea es compartir la llave pública para que te puedan enviar mensajes y leer los que tú envíes con la llave privada.
Las RootCA compiten por existir por defecto dentro de los sistemas operativos y browsers. De forma que el usuario final no tiene que hacer ninguna configuración de confianza. Si alguien paga por un certificado a un ente certificador. Y su certificado tiene un bloque que puede ser leído por las llaves públicas preinstaladas, entonces el certificado es validó.
Y al ser validó, significa que fue emitido a la persona que lo solicito al certificador.
Una compañía puede decidir ser su propio ente certificador, pero debe instalar su RootCA en todos los dispositivos de su compañía, para evitar algunas de las alertas comunes.
Los certificados pueden tener bastante información, llaves públicas o privadas, direcciones IPs, nombres de dominio, información del registrador, mensajes, etc. El certificado solo es un mensaje firmado por el RootCA e intermedio con sus llaves privadas respectivamente, y en fragmentos que les permite descifrarlo.
Cuando menciono firmado, es que no toda la información del certificado está cifrada, solo una parte. Con el fin de realizar las validaciones.
Los certificados tienen diferentes extensiones, las más comunes son .der, .cer, y .pfx. Cada formato tiene un uso diferente y algunas configuraciones:
- .der: Normalmente, es un formato binario para ser leído por programas especializados.
- .cer: Normalmente, se puede leer en editores de texto.
- .pfx: Es un formato de Windows que está protegido por una contraseña simétrica.
El uso más básico de los certificados es HTTPS, que son configuraciones de servidor a cliente.
Pero también existen certificados de cliente, estos son complejos de usar y distribuir normalmente, pero es en el caso donde el servidor emite un certificado y el cliente lo instala localmente, y lo envía para poder realizar operaciones, como un login (o los tokens digitales que se utilizan en muchas aplicaciones bancarias). Normalmente, se usa una estrategia con llaves privadas, pero la estrategia de certificado es más interesante, ya que se emite a nombre de un cliente especifico, y diferentes servicios podrían usar el mismo certificado para autenticar al mismo usuario.
Y bien, eso es todo por hoy, simples conceptos básicos que espero ayuden a alguien en el futuro.