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é
[email protected]
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