Download Autenticación web con DNIe - Asociación de Usuarios de Internet
Document related concepts
no text concepts found
Transcript
Autenticación web con DNIe Albert Solana Berengué asb@c3po.es C3PO, S.L. http://www.c3po.es C/Bertran, 113 08023 Barcelona, España Tel. +34 93 417 99 55, Fax: +34 93 253 12 80 RESUMEN: En esta ponencia se detallará qué cambios será necesario aplicar, tanto en la parte del servidor como en el cliente, para poder realizar una autenticación web de usuarios utilizando la tarjeta del DNI electrónico, también conocido como DNIe. Se describirán las diferentes posibilidades de implementación en servidores web (Apache, IIS), navegadores y sistemas operativos compatibles con el DNIe, además de los requisitos (tarjeta, lector y librerías) para poder usarlo. 1. ¿Qué es el DNIe? Antes de nada, y ya que la herramienta de trabajo será el DNI electrónico vamos a describirlo para saber de qué se trata. Citando directamente la página del DNI electrónico1: “El Documento Nacional de Identidad electrónico es el documento que acredita física y digitalmente la identidad personal de su titular y permite la firma electrónica de documentos.” La parte que nos interesa en nuestro caso es la que acredita digitalmente la identidad personal de su titular ya que este es el objetivo que pretendemos cubrir. Para poder realizar una autenticación remota del titular, el DNIe dispone de un certificado digital x509, con su respectiva clave pública y privada, destinado solamente a este propósito. 2. Requisitos para usar el DNIe Si pretendemos trabajar con el DNIe en una máquina cliente necesitaremos al menos tres componentes esenciales para ello: a) tarjeta DNI electrónico b) lector de tarjetas chip: dispositivo que permite la lectura de tarjetas chip, como el DNI electrónico y transmite la información hacia el host al cual está conectado (usualmente un PC). En C3PO disponemos de lectores compatibles con el DNI electrónico. Más información en nuestra página web2. c) librerías criptográficas del DNIe: aunque el lector es quien físicamente lee la tarjeta del DNIe, éste actúa tan sólo como vehículo de intercambio de información entre el host y la tarjeta. De modo que, se precisa de un componente adicional que sepa como comunicarse con 1 http://www.dnielectronico.es 2 http://www.c3po.es el lector para poder extraer la información necesaria para las aplicaciones pertinentes. Este componente se denomina librería criptográfica y para el caso del DNI electrónico está disponible para múltiples sistemas operativos: Microsoft Windows con sus interfaces para CryptoAPI y PKCS#11, GNU/Linux, Mac OS y Solaris. CryptoAPI es una API criptográfica desarrollada por Microsoft para permitir a las aplicaciones disponer de características de seguridad. En el caso de querer trabajar con tarjetas chip es necesario disponer además de un Proveedor de Servicios Criptográficos (CSP) para cada tarjeta. Este componente tiene implementado todas las funcionalidades soportadas por la tarjeta y son las aplicaciones, mediante la CryptoAPI, quienes se comunican con este componente. Por otra parte, PKCS#11 es una API desarrollada por RSA que define una interfaz genérica para acceder a los tokens criptográficos (como el DNIe). La ventaja de esta API es que es multiplataforma y puede utilizarse en Microsoft Windows, GNU/Linux, Mac OS, Solaris, etc. En este caso, se dispone de una librería que tiene todas las funcionalidades de la tarjeta implementadas y exporta una interfaz PKCS#11 para que las aplicaciones que soporten esta API puedan utilizar la tarjeta. 3. ¿Qué es la autenticación web? Otro concepto que sería conveniente tener claro sería la autenticación. La autenticación es el proceso por el cuál se garantiza que un usuario que se identifica es quien dice ser. En el caso de una autenticación web, este proceso se realiza a través de un sistema web cliente-servidor. La problemática en un acceso remoto radica en la dificultad de saber con certeza si el usuario que está accediendo es realmente quien dice ser. El proceso de autenticación viene a solucionar esta carencia. Existen varios métodos de autenticación web: autenticación nula, con usuario-password, con certificado digital, etc. La forma tradicional utilizada es la de usuariopassword, mediante la cual cada usuario dispone de un identificador y de una contraseña. Uno de los problemas de este método radica en que toda la seguridad de este método se basa en la contraseña. Una vez conocida, se puede suplantar la identidad fácilmente. Si la autenticación en ambos sentidos es satisfactoria el proceso de autenticación web se da por finalizado quedándose el canal de comunicación cifrado hasta terminar la conexión. 4. Requisitos para una autenticación web con DNIe La autenticación web con DNIe soluciona este inconveniente ya que se dispone de dos puntos fuertes de seguridad: el certificado en tarjeta y la protección por PIN del uso de las claves. Aunque alguien se apodere de nuestra tarjeta, todavía debe descubrir el PIN de la misma (el cuál bloquea la tarjeta a los 3 intentos fallidos). Otra ventaja del uso de certificado en tarjeta es el hecho que la clave privada asociada al certificado nunca puede ser exportada de la tarjeta, por lo que sólo puede ser utilizada en conjunción con la tarjeta La autenticación web suele implementarse mediante SSL (Secure Socket Layer) de forma que permite cubrir dos propósitos: a) autenticación del servidor por parte del cliente: mediante el uso de un certificado servidor SSL se consigue crear un canal seguro de comunicación entre el servidor y el cliente de modo que todos los datos que se envíen por este canal viajarán siempre cifrados, y además el cliente puede autenticar al servidor comprobando la validez del certificado del servidor. b) autenticación del cliente por parte del servidor: se puede configurar el servidor para restringir el acceso a una zona determinada de la web sólo a aquellos que dispongan de un certificado. En este caso el servidor será quien comprobará la validez del certificado del cliente. Si queremos realizar una autenticación web con DNI electrónico, lo usual sería disponer de un sistema clienteservidor, en el cuál los usuarios accederían a un servicio web ofrecido por el servidor, mediante distintas máquinas cliente. Para poder llevar a cabo la implementación de dicho sistema, será necesario la configuración de ambas partes del sistema cliente-servidor. 4.1.configuración servidor Dando por supuesto que ya se dispone de una página web montada deberemos modificar la configuración del servidor para que solicite el certificado de AUTENTICACIÓN a los usuarios que deseen acceder al contenido. En este documento se describirá de forma teórica las configuraciones a realizar en el servidor. Existen diversas páginas donde se detalla el proceso práctico acerca de cómo configurar un servidor Internet Information Server (IIS) de Microsoft3 o Apache4. Los pasos de configuración a seguir consisten en: a) instalar certificado raíz del DNIe: este paso es 3 http://msdn2.microsoft.com/enus/library/aa292114(VS.71).aspx http://www.microsoft.com/technet/prodtechnol/WindowsS erver2003/Library/IIS/19e94706-66a9-4b0c-b173a242692eea7a.mspx?mfr=true 4 http://www.dartmouth.edu/~pkilab/pages/Web_Access _Control.html http://httpd.apache.org/docs/1.3/howto/auth.html necesario para realizar una primera comprobación de la validez del certificado. Existen dos certificados raíz para el DNIe y aunque ambos son válidos, uno está generado con un algoritmo de hash SHA1 y el otro con SHA256. Sería mejor utilizar el de SHA256 pero los servidores Microsoft Windows no tienen implementado este algoritmo de hash, a excepción de Vista. En sistemas UNIX se puede utilizar la librería OpenSSL que sí que se encuentra implementado. b) restringir acceso a una zona de la página requiriendo autenticación con certificado: en este punto se deberá configurar el servidor para restringir el acceso a una zona de la página web (ya sea, directorio o algunas páginas, etc.) permitiendo sólo el acceso a aquellos usuarios que se hayan autenticado correctamente con su certificado del DNI electrónico. c) solicitar un certificado de servidor SSL: En este punto se debe adquirir un certificado de servidor SSL e instalarlo en el propio servidor. Es necesario destacar que en el caso que el cliente no disponga del certificado raíz del Prestador de Servicios de Certificación, aparecerá una advertencia informando sobre la imposibilidad de validar el certificado del servidor, por lo que sería preferible instalarlo en dichas máquinas cliente. d) mapear certificado a usuario: Como es muy probable que no se desee que las páginas del servidor estén disponibles para todo el mundo que tenga un DNIe, es lógico que se disponga de una base de datos de los usuarios dados de alta en el sistema. Para ello, se deberá mapear algún atributo del certificado del cliente para que corresponda a un usuario del sistema. De modo que, una vez realizada la autenticación, se proceda a parsear el certificado para comprobar si ese usuario que está accediendo está presente en nuestra base de datos. Para más información acerca de este proceso, consultar esta página web sobre IIS5 o Apache6. e) configurar la validación de certificados: Ya por último, queda configurar el método para validar los certificados del DNIe del el cliente, es decir, comprobar que el certificado no esté caducado o revocado, etc. El protocolo utilizado para validar los certificados del DNIe es el OCSP (Online Certificate Status Protocol). Este protocolo consiste en realizar una petición de validez al servidor OCSP, quien verifica el certificado del usuario y emite un comprobante de esta verificación. Dependiendo de la configuración del servidor, puede ser necesario implementar una solución en PHP o Java para solicitar la petición de OCSP en los servidores pertinentes. 5 http://www.microsoft.com/windows/windows2000/en/ advanced/help/sag_CSprocs_CertMapIIS.htm 6 http://authzldap.othello.ch/index.html 4.2.configuración cliente En el caso de la parte cliente, también se requiere una instalación de los componentes necesarios para utilizar la tarjeta del DNIe. Por lo que, para cada máquina cliente deberá estar correctamente configurada o, en caso contrario, no podrá realizarse la autenticación web. Los pasos a seguir consisten en: a) instalación lector de tarjetas chip: la instalación dependerá en función de la conectividad del lector y del tipo de host al cual se conecta. Aunque, la forma más usual es un lector USB conectado a un PC. En este caso, en la mayoría de sistemas, sólo consiste en “conectar y listo”, ya que el propio sistema ya incorpora un driver genérico para lectores de tarjeta chip por puerto USB siguiendo el estándar USB CCID. En caso que el sistema no disponga de dicho driver sería necesario contactar con el fabricante del lector para obtener el driver específico para el sistema cliente. b) instalación de librerías criptográficas para DNIe: para instalar las librerías necesarias para el DNI electrónico sólo es necesario ejecutar el propio instalador que incorpora las librerías, el cual puede encontrarse en la sección de descargas7 de la página del DNI electrónico. c) visualización de los certificados en el navegador: para comprobar que todo el sistema cliente está debidamente configurado se puede proceder a visualizar los certificados de un usuario en el navegador. Para poder utilizar la tarjeta del DNI electrónico es necesario disponer de navegadores compatibles con API PKCS#11, como por ejemplo Firefox, o compatibles con CryptoAPI, como por ejemplo Internet Explorer. d) testeo del sistema: una vez esté configurado tanto la parte servidor como cliente ya podremos proceder a testear todo el sistema. INFORMACIÓN CURRICULAR: Ponente: Albert Solana Berengué Empresa: C3PO, S.L. Cargo: Responsable de proyectos software Ingeniero Informático por la Universidad Politécnica de Barcelona. Experto en proyectos de firma electrónica. Jefe de proyectos de C3PO en múltiples proyectos: ● Colaboración en el proyecto de desarrollo de librerías criptográficas para el DNIe en UNIX (GNU/Linux, Mac OS, Solaris) ● Colaboración en el proyecto de desarrollo de librerías criptográficas para la tarja TIF en Microsoft Windows y UNIX ● Implantación de sistema de logon con tarjeta CERES en múltiples sistemas para Ayuntamiento de Madrid Impartidos varios cursos y seminarios sobre utilización del DNI electrónico en múltiples sistemas. 7 http://www.dnielectronico.es/descargas/index.html