DNIe: A vueltas con el DNI electrónico

Aunque ya se ha hablado del tema previamente , I wanted to give another lap to the issue DNIe under Linux. And what the hell! After spending one day and a half on the subject, I wanted to leave the tutorial available somewhere, if I have to do it again.

Cuando empecé con el tema lo que me recomendaron fue que primero lo intentara en Windows y luego que ya si eso, que me comiera la cabeza en Linux. Y aunque seguí el consejo, resulta que soy infinitamente más patosa en Windows que en Linux (acabé teniendo que reinstalarlo de cero), así que volví a intentarlo en donde me sentía cómoda y entendía lo que hago.

Fundamentalmente me he guiado por tres entradas de blogs:
* DNIe en Ubuntu
*
Linux DNIe Squeeze
*
DNIe en Ubuntu

Check your base libraries

Lo primero que descubrí es que no hay que confiar en las librerías de los repositorios (utilizo Debian Squeeze). Así que instalé a mano tanto las dependencias de OpenSC como las librerías que utiliza.

Lo primero es descargar las ultimas librerías disponibles en la página del dnielectronico, en mi caso:

$ wget https://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc-dnie_1.4.8_amd64_lenny.tar 
 $ tar xvf opensc-dnie_1.4.8_amd64_lenny.tar
 $ cd opensc-dnie_1.4.8_amd64_lenny 

Y descargamos también las dependencias que ya no están disponibles para Debian Squeeze:

$ wget https://ftp.es.debian.org/debian/pool/main/libt/libtool/libltdl3_1.5.26-4+lenny1_amd64.deb

$ wget https://ftp.es.debian.org/debian/pool/main/o/openct/libopenct1_0.6.14-3_amd64.deb 

Installing the dnie drivers

Hecho esto, podemos empezar a instalar:

 # dpkg-i *. deb libltdl3

# dpkg-i *. deb libopenct

# dpkg-i *. deb libopensc2

# dpkg-i *. deb opensc_

# apt-get install pinentry-qt4

# dpkg-i *. deb opensc-dnie 

Y a continuación nos aseguramos de no meter la pata en futuras actualizaciones, bloqueando las librerias:

 # echo libopenct1 hold | dpkg - set-selections

# echo opensc hold | dpkg - set-selections

# echo libopensc2 hold | dpkg - set-selections 

Ahora viene la parte bonita, en la que comprobamos que todo funciona...o no:

 $ sudo apt-get install pcscd pcsc-tools

$ pcsc_scan

PC / SC device scanner

V 1.4.16 (c) 2001-2009, Ludovic Rousseau

Compiled with PC / SC lite version: 1.5.5

Scanning present readers ...

0: Gemplus GemPC Twin 00 00 
Mon Sep 5 20:01:11 2011
Reader 0: Gemplus GemPC Twin 00 00
Card state: Card inserted,
[...]
Electronic DNI (Spanish electronic ID card)
https://www.dnielectronico.es
$ opensc-tool-l
 [opensc-tool] ctx.c: 367: load_dynamic_driver: dynamic library '/ usr/lib64/libopensc-dnie.so': invalid module version
[Opensc-tool] ctx.c: 467: load_card_drivers: Unable to load 'dnie'.
Readers Known about:
Driver Name Nr
Pcsc 0 00 00 Gemplus Twin GemPC
$ opensc-tool-a
 [opensc-tool] ctx.c: 367: load_dynamic_driver: dynamic library '/ usr/lib64/libopensc-dnie.so': invalid module version
[Opensc-tool] ctx.c: 467: load_card_drivers: Unable to load 'dnie'.
Using With A card reader: Gemplus GemPC Twin 00 00
[Opensc-tool] reader-pcsc.c: 239: pcsc_transmit: unable to transmit
[Opensc-tool] apdu.c: 394: do_single_transmit: unable to transmit APDU
3b: 7f: 38:00:00:00:6 a: 44:4 e: 49:65:10:02:4 c: 34:01:13:03:90:00
Delawar @ FZ18E: ~ $ opensc-tool-n
 [opensc-tool] ctx.c: 367: load_dynamic_driver: dynamic library '/ usr/lib64/libopensc-dnie.so': invalid module version
[Opensc-tool] ctx.c: 467: load_card_drivers: Unable to load 'dnie'.
Using With A card reader: Gemplus GemPC Twin 00 00
[Opensc-tool] reader-pcsc.c: 239: pcsc_transmit: unable to transmit
[Opensc-tool] apdu.c: 394: do_single_transmit: unable to transmit APDU
Unidentified card

Not that easy

At this point, we learn that we have screwed up somewhere in the installation. Now OpenSC is waiting for a version of the module that is not what we have installed. Do not panic, there is a solution . We “only” have to create a module that uses the module installed. But deceiving OpenSC by saying it is another version.

Mi versión del módulo es la 1.0.4 y la de opensc la 0.11.13-1.1, tenéis que cambiarla por la vuestra:

 $ mkdir / tmp / dnie
 $ cd / tmp / dnie
 $ cp / usr/lib/libopensc-dnie.so.1.0.4 libopensc-dnie.so.1.0.4_orig

Editamos un fichero:

 $ vi patch.c
 char * version_maligna = "0.11.13-1.1";
 sc_driver_version char * () {
 version_maligna return;
 }

Parcheamos la librería y lo colocamos donde le corresponde:

$ gcc-fpic -g-c-Wall patch.c

$ objcopy - redefine-sym-libopensc sc_driver_version = orig_sc_driver_version libopensc-dnie.so.1.0.4 dnie.so.1.0.4_orig

$ chmod + x libopensc-dnie.so.1.0.4

$ gcc-shared-Wl,-soname, libwrapper-dnie.so libopensc-dnie.so.1.0.4 patch.o-o-dnie.so.1.0.0 libwrapper

$ sudo cp-dnie.so.1.0.0 libwrapper libopensc-dnie.so.1.0.4 / usr / lib

$ sudo ldconfig

Ahora que tenemos la librería, avisamos a opensc de que la use en el fichero /etc/opensc/opensc.conf, sustituyendo la línea module = / usr / lib / libopensc-dnie.so, by < em> module = / usr / lib / libwrapper-dnie.so, .

Ahora opensc ya reconoce nuestro DNI electrónico:

$ opensc-tool -l Known Readers about: Driver Name Nr Pcsc 0 00 00 Gemplus Twin GemPC

El cómo utilizarlo específicamente en el navegador o en una aplicación para firmar, eso ya viene ampliamente descrito en otros manuales, incluidas las páginas oficiales del DNI electrónico.

The importance of open data

I’ve been thinking for a while about writing about the importance of open data, but is with the advertising given to Google Map Maker when I really understood the urgency of the matter.

¿Os imagináis un país cuyos datos geográficos sean tan pobres que ni siquiera se sepa oficialmente qué ciudades y pueblos contiene? ¿Cómo podría invertir en carreteras, alfabetización o siquiera en agua potable cuando no sabe que hay gente que vive allí? ¿Cómo podría cobrar impuestos o... ¡¡contar los votos en las elecciones!!? ¿Os imaginais que un batallón de soldados se equivoca por utilizar mapas erróneos y acaba estableciendo una base en el país de al lado? Una absurdez a lo Gila que ocurrió hace poco en la frontera entre Nicaragua y Costa Rica , lo que por poco no provoca un conflicto internacional.

Public Data

Si las instituciones publican sus datos y dejan que sean de libre acceso, cualquiera puede comprobar la veracidad de dichos datos y podrá sugerir modificaciones o correcciones. Pero mientras estos datos permanezcan encerrados en archivadores llenos de polvo, seguirán cometiéndose una y otra vez los mismos errores. No hablamos de datos delicados para la seguridad nacional, hablamos de datos que cualquiera que esté presente físicamente en el lugar puede comprobar si son o no correctos.

But it is important not only that the open data is freely available. It is also important to be free in their use. I gain nothing by looking at a map on page X of the Public Service if I can not use the data I am seeing. Seeing the traffic before you leave home can help you, but if my GPS can not use that information to guide me through the best path, it is useless.

Bueno, dirá más de uno, pues hagamos que las Administraciones Públicas ofrezcan todo tipo de servicios y nosotros los usaremos, no puede haber tantos. Es no es suficiente. ¿Por qué? Because open data may have myriad of uses. Es todo un mercado recién abierto y por explorar.

Private Map Providers

Pero y de todo esto, ¿cómo se beneficia el proveedor de mapas privado? ¿Pretendemos que pongan servidores y se ofrezcan datos libres sin cobrar por su uso? ¿La cultura del todo gratis? Por supuesto que no, a nadie en su sano juicio se le ocurriría pedir esto. El proveedor privado (aparte de cobrar por los servicios basados en los datos) puede obtener grandes ventajas liberando sus datos:

La primera ventaja es directa: si consigue una comunidad amplia, el coste de actualización y ampliación de sus datos se verá muy reducido. Proveedores como TomTom o Nokia empiezan a entender la importancia de estas actualizaciones por parte de sus propios usuarios. OpenStreetMap es otro ejemplo claro y directo del poder de los usuarios: una fuente de datos geográficos capaz de competir (y ganar) a Google Maps o Bing creada entera y únicamente por una combinación de datos libres aportados por sus usuarios.

La segunda ventaja quizás es más compleja de entender porque no es tan directa. Obviando todas las clásicas ventajas de la liberación,aún queda algo más: Siempre puedes cobrar por su uso comercial o intensivo. Aunque al principio no obtengas beneficios directos, si tus datos son buenos, tarde o temprano llegará alguien que le sepa dar utilidad. .

Google Map Maker

Algún espabilado habrá que, llegados a este punto, diga ¿y no es esto al final lo que hace Google Map Maker? ¿Recoger actualizaciones de usuarios, dar un servicio gratuito y cobrar sólo por uso intensivo o comercial? Pues no. Para empezar sus datos no son libres. Esto quiere decir que si yo colaboro con Google Map Maker y actualizo sus mapas y el día de mañana quiero utilizar esos datos para montar un servicio comercial, no podría hacerlo sin pasar por una serie de farragosas licencias de uso. Sin embargo, si en vez de colaborar con Google Map Maker colaboro con una plataforma libre de datos geográficos, no tendría ningún inconveniente para poder utilizar estos datos en mi servicio comercial.

¿Quiere decir esto que no creo que Google Map Maker sirva para nada? Tampoco. Algún uso tendrá. Pero sea cual sea el uso que quieras darle, siempre podrás obtener al menos la misma funcionalidad con OpenLayers , OpenStreetMap y los datos libres del PNOA y el Catastro Entonces, ¿por qué usar una plataforma privativa pudiendo utilizar una plataforma libre muchísimo más potente?

Pero Google es bueno, dirá más de uno, ofrece datos gratuitos y de calidad. Claro, y no lo dudo. Pero nunca hay que olvidar que Google, por muy buenas intenciones que se traiga, sigue siendo una empresa. Y al final, la prioridad máxima de una empresa es generar negocio para sobrevivir. Y si va a tener que aplicar medidas clásicas privativas que el día de mañana sean incompatibles con tu negocio, lo hará. De hecho, es que ya lo hace. .