Esta va a ser mi primera entrada en este blog y he decidido escoger un tema que me ha estado preocupando recientemente y que es el uso de seguridad basada en certificados en un servicio WCF. Por claridad (y espacio) he decidido que esta primera entrada se dedicará a aclarar los conceptos más importantes sobre certificados y en siguientes entradas, como crearlos, administrarlos y utilizarlos para securizar sitios web.
Para empezar hay que asumir que base de conocimientos tiene el lector. En este caso voy a asumir que cualquier persona que esté buscando información sobre el uso de certificados de seguridad en servicios WCF tendrá al menos una vaga idea de que es un certificado y para que se utiliza. Por ejemplo en las páginas web de bancos, tiendas o de páginas de correo aparece un candado amarillo que informa que la página está utilizando un protocolo de comunicaciones seguro (https), lo que garantiza que la información que envía dicha página (contraseña, número de tarjeta de crédito o cualquier otro dato) viaja encriptada por internet hasta el servidor. El candado amarillo también sirve para verificar la identidad del dueño de la página, para que el usuario pueda comprobar la identidad de a quién manda realmente los datos.Este ejemplo muestra lo que es un certificado digital, un documento digital en el que un tercero garantiza la asociación entre una entidad (generalmente una organización o una persona) y una clave pública (de un algoritmo de criptografía asimétrica). La tercera parte anteriormente nombrada recibe el nombre de autoridad de certificación (CA). Por tanto un certificado consta de tres partes: el sujeto (la entidad real), la clave pública (la entidad digital) y la relación entre las dos partes anteriores validada por un tercero: la autoridad de certificación. Para dar validez e integridad al certificado, la CA firma el documento digital (genera un hash del contenido y lo encripta con una clave privada propia, la clave pública asociada es expuesta a todo el mundo para que cualquiera pueda comprobar la validez del certificado). Es decir, la CA dispone de un certificado con el que firma los certificados que emite.
Esto lleva a un nuevo problema ¿quién da validez al certificado de una CA? Generalmente otra CA (en cuyo caso solo hemos trasladado el problema) o un organismo público. Las Cas reconocidas por un organismo público emiten un certificado (llamado certificado de raíz) con el que firman su propio certificado que las identifica.En resumen un certificado digital es un documento digital firmado con la clave pública de la CA (para asegurar la integridad de la información) y que contiene información descriptiva de una entidad y una clave pública. Los usos típicos de un certificado son:
- Identificación. Es el ejemplo trivial, un certificado emitido por una CA, permite confiar en la identidad de quién expone el certificado.
- Encriptación. Se utiliza la clave pública para encriptar la información. Nótese que la información solo se puede recuperar con la clave privada, que es custodiada por la entidad en cuestión.
- Integridad. Se puede utilizar la clave pública para firmar un hash de la información que se va a enviar y asegurar de esta forma que la información entre los dos extremos de comunicación no ha sido modificada.
De esta forma, un certificado digital es un medio de identificación en transacciones electrónicas que permite garantizar la autenticidad de la información recibida. Una analogía en el mundo no digital de un certificado es el DNI, que permite identificar a las personas pues se confía en el emisor del documento (el estado). No sorprenderá a nadie el hecho de que el DNI electrónico consista en un certificado digital emitido por la Fábrica Nacional de Moneda y Timbre.

