Documentos de Académico
Documentos de Profesional
Documentos de Cultura
“DNIE FIRMA”
V 1.0
1 ÍNDICE DEL DOCUMENTO.
El interfaz con contactos permite mantener la compatibilidad hacia atrás, es decir el uso del
DNIe mediante un lector de tarjetas inteligentes, conectado a un puerto del ordenador,
mientras que el interfaz sin contactos (contactless) es el que permite incluir las mismas
funcionalidades, pero para dispositivos con tecnología NFC.
Además, el DNIe tiene una estructura de datos equivalente al pasaporte. Así que puede
realizar funciones de Documento de Viaje, y se permite su uso en los Pasos Rápidos de
Frontera (ABC systems) de forma totalmente equivalente a el pasaporte electrónico actual.
Para información relativa a los certificados X509 incluidos en el DNIe 3.0, véase [1] RFC
2459. Internet X.509 Public Key Infrastructure. Certificate and CRL Profile. En cuanto a
la conexión por radiofrecuencia entre dispositivos, ver [2] ISO 14443 - Tarjetas de
Identificación. Tarjetas sin contacto. Tarjetas de proximidad.
Los cambios a realizar para nuevos desarrollos serían mínimos, ya que prácticamente
bastaría con modificar la interfaz de la aplicación y reutilizar la parte que interese de firma de
documentos PDF.
También está incluido al final del documento un Anexo con código fuente de ejemplo para la
realización de las operaciones básicas con el DNI electrónico:
- Carga de Certificados,
- Firma de datos,
- Verificación de firma.
La autenticación del usuario para el acceso a servicios del Ayuntamiento se realiza mediante
el uso del DNI electrónico v3.0. Este DNIe funciona mediante NFC, (Near Field
Communication, ver [3] NFC Forum Type Tags - White Paper v1.0. NXP
Semiconductors) lo que permite a cualquier dispositivo que disponga de esta tecnología,
actuar como lector de tarjetas.
Para facilitar el uso del DNI electrónico en plataformas Android se ha adaptado la librería
DNIeDroid, que se incluye como librería externa dentro del proyecto de ejemplo. Este
middleware existía previamente para el uso en Java de las versiones de DNIe con
contactos. Ahora se ha adaptado para su correcto funcionamiento en Android y el interfaz
sin contactos vía NFC.
En el siguiente apartado se incluye una breve descripción del componente. Para más
información puede consultarse el “Manual de Usuario para Apps DNIe 3.0”.
En esta parte del documento describiremos la arquitectura lógica de una aplicación Android
y su utilización del middleware DNIeDroid. Como ejemplo tomaremos la app de ejemplo
DNIe Firma, desarrollada para la firma de documentos PDF mediante DNI electrónico.
En esta figura podemos ver las partes que integran la aplicación. Dado que nuestro ejemplo
se trata de una aplicación Android, el punto de contacto con el usuario son las Activities. El
componente DNIeHelper está disponible para todas ellas, y gestiona la interacción con el
DNIe y los cuadros de diálogo que se muestran al usuario durante esta interacción.
Por otro lado, aquellas Activities que requieran el uso del DNIe para la firma y la
autenticación en servidores de terceros, se pone a su disposición el componente
DroidHTTPClient, que gestiona esta problemática y que también se apoya en el
componente de interacción con el DNIe.
La aplicación utilizada como ejemplo, DNIe Firma, debe estar instalada en un dispositivo
Android con tecnología NFC (Smartphone o Tablet). De esta manera la conexión entre el
smartphone o tablet con el DNIe se realizará mediante proximidad.
También sería posible desarrollar la aplicación para trabajar con DNIe y un lector de tarjetas
USB conectado a él mediante un adaptador USB-OTG. En este documento nos centraremos
sólo en la versión para DNIe v3.0 y tecnología NFC.
Para el acceso a los servicios al ciudadano será necesaria la conexión segura mediante
protocolo https con los servidores del proveedor de servicios correspondiente. Esa conexión
requerirá la autenticación con el DNIe del ciudadano mediante el uso de la tecnología NFC.
El ejemplo que detallaremos en este documento, “DNIe Firma”, consiste en una aplicación
de firma de documentos PDF mediante DNI electrónico 3.0.
Tal y como se describió anteriormente, en este ejemplo partimos de la idea de que el centro
escolar enviaría las notificaciones a los usuarios dados de alta en su sistema. De este modo,
los documentos serían descargados automáticamente por la propia aplicación, que revisa el
correo electrónico configurado por el usuario.
En de cada uno de los documentos disponibles podemos pulsar el botón de “Abrir PDF”
para abrir la vista previa del original.
Una vez seleccionado el documento que queremos firmar, la aplicación nos solicita el CAN
(Card Access Number) del documento con el que queremos hacerlo.
Este identificador es un número de 6 dígitos que aparece en el anverso del documento físico
del DNIe y se utiliza para establecer canal cifrado PACE entre el documento y el dispositivo.
El canal PACE es obligatorio para poder establecer una conexión inalámbrica cifrada con
el documento pero en ningún caso sustituye al código PIN ni da permisos de uso de las
claves de firma y/o autenticación del ciudadano.
Es una medida adicional de seguridad que pretende evitar que alguien pueda realizar
lecturas de datos públicos sin conocimiento del ciudadano.
Si intentásemos leer un DNIe con un CAN incorrecto, fallaría la construcción del canal
PACE, por lo que no sería posible la comunicación entre documento y dispositivo.
Para más información sobre el establecimiento del canal PACE (Password Authenticated
Connection Establishment) ver [5] Technical Guideline TR-03110-2.Advanced Security
Mechanisms for Machine Readable Travel Documents –P2.
Por motivos hardware y de seguridad la distancia máxima soportada por NFC es,
dependiendo del dispositivo, de alrededor de un centímetro. Esta conexión es muy sensible
a la distancia y al movimiento, por lo que para el correcto funcionamiento se requiere la
mayor cercanía y estabilidad posibles.
Una vez realizadas las operaciones básicas de lectura de certificados se solicitará el PIN
(Personal Identification Number) del usuario. La presentación del PIN autentica al usuario
contra el DNIe y le concede permisos de acceso a las claves.
El ciudadano podrá entonces realizar operaciones que requieran el uso de las claves, ya sea
para realizar una firma de documentos, establecer una conexión segura con el servidor del
prestador de servicios, etc.
[1] RFC 2459. Internet X.509 Public Key Infrastructure. Certificate and CRL Profile
[2] ISO 14443 - Tarjetas de Identificación. Tarjetas sin contacto. Tarjetas de proximidad
[3] NFC Forum Type Tags - White Paper v1.0. NXP Semiconductors
[4] CWA 14890-1: Application Interface for smart cards used as Secure Signature Creation
Devices
[5] Technical Guideline TR-03110-2.Advanced Security Mechanisms for Machine Readable
Travel Documents –Part 2
[6] ISO/IEC 7816-4. Identification cards – Integrates circuit cards. Part 4: Organization, security
and commands for interchange.
[7] ISO/IEC18092 Information technology — Telecommunications and information exchange
between systems — Near Field Communication — Interface and Protocol
(NFCIP-1)
[8] Android.NFC. http://developer.android.com/reference/android/nfc/package-summary.html
[9] UIT-T X.509 (11/2008) – Open systems interconnection: Public-key and attribute certificate
frameworks