Hoy iba, como todos los días, a trabajar con entusiasmo en mi P.F.C., pero le han cambiado el dominio a las máquinas del departamento, y los certificados X.509 no sirven, así que no puedo hacer nada útil allí, así que en lugar de eso, les hablaré de X.509.
X.509 es un sistema de cifrado/firma digital mediante clave pública; es el que se emplea en las páginas web “seguras”, y en ciertas modalidades de correo electrónico firmado o cifrado. Y otras cosas, claro.
En el sistema hay tres elementos fundamentales:
El certificado identifica a un usuario/ordenador/página web (de ahora en adelante, un “recurso”); puede utilizarse para cifrar un mensaje dirigido a ese “recurso”, o para comprobar que un mensaje procede realmente de él.
El cifrado funciona así: si yo le quiero enviar un mensaje al “recurso”, lo cifro utilizando una clave que aparece en el certificado. Este mensaje cifrado sólo se puede descifrar utilizando la llave que sólo posee el “recurso”; es imposible descifrarlo conociendo el certificado. Esto se hace mediante criptografía de clave pública.
El “recurso” también puede firmar mensajes, cuya firma puedo comprobar con el certificado. Lo que hace es calcular un número (“resumen”) a partir del contenido del mensaje, y cifrarlo con una clave que tiene en su llave; este número cifrado es la firma. Luego me envía el mensaje, junto con la firma; yo calculo el número resumen del mensaje que recibí, y utilizando el certificado descifro la firma; si coinciden, el mensaje que recibí es el mismo que me envió.
Para calcular el número “resumen” hay técnicas estándar, que producen números muy grandes; es muy difícil construir dos mensajes con el mismo número de resumen.
El papel que la CA tiene en todo esto es de “garantía”. Sirve, en pocas palabras, para que yo pueda estar seguro de que un certificado pertenece, realmente, a quien dice pertenecer. Para asegurar esto, la CA comprueba la identidad del “recurso”, y si ésta es correcta, firma el certificado de este recurso; después, yo puedo comprobar la firma de este certificado, y si la firma es correcta y confío en la CA, puedo confiar en el certificado.
Por supuesto, las CAs tienen sus propios certificados, que firman… ellas mismas. En teoría, confirmar la validez del certificado de una CA es algo bastante peliagudo. En la práctica, los navegadores incluyen certificados de las CAs más “importantes”, a los que se les supone validez (como el valor a los soldados).
Y por último: ¿cómo funciona una página web “segura”? Fácil: el servidor web tiene su certificado, firmado por una CA de confianza. Cuando Vd. accede a la página segura, el servidor le envía su certificado, su navegador comprueba su validez, y si es correcta, su navegador elige una clave y se la envía, cifrada con ese certificado, al servidor. Después, todos los datos que se transmitan entre el navegador y el servidor y viceversa irán cifrados con esa clave (asegurando, así, que nadie pueda “ver” el tráfico); los datos procedentes del servidor irán, además, firmados con el certificado de éste (asegurando que nadie está suplantando al servidor).