jueves, febrero 10, 2011

OpenDNIe es una realidad

—Tú no existes —me dice a menudo Saranna, después de hacer el amor—, no puedes ser real.

Sé lo que quiere decir, pero yo lo veo de otro modo, pues, por todos los planes e intenciones que tracé antes de actuar, sé que he sido moldeado más por las circunstancias que por mi propia voluntad. Y a veces me pregunto si no seré, después de todo, una pieza en el juego de algún otro jugador, que sigue ciegamente los grandes designios de éste sin ser consciente de que mi paso por el tablero es tan solo una finta, mientras que los asuntos importantes son jugados en otro lugar por otros jugadores.

Pero me importa muy poco la posibilidad de la existencia de algún otro designio más grande. Mi única esperanza era esta: ver lo que se podía hacer, y creer que se podía hacer, y luego hacerlo; y conseguí llegar hasta el final, sin que importara el precio.

Y cuando una vida termina como la mía habrá de terminar, nadie puede persuadirme de que el coste no ha sido más bajo de lo que finalmente he obtenido a cambio
.

Orson Scott Card: "Un planeta llamado Traición"

Mientras escribo estas líneas no puedo sino recordar casi 10 años atrás en el tiempo, cuando un amigo y socio de HispaLinux me vino comentando un problema... Resulta que en su empresa habían hecho un trabajito para la Fabrica Nacional de Moneda y Timbre: un driver Linux para su reciente y flamante tarjeta criptográfica... y se encontraban al borde de un problemón legal y empresarial: Habían utilizado código de un proyecto europeo llamado OpenSC, y violando la licencia de copyright no habían publicado el código fuente.... como resultado, la FNMT había tirado el proyecto abajo y estaban planteandose entablar demandas judiciales...

Yo entonce era (aún) más pardillo que ahora, y no me lo pensé dos veces: No disponía de los fuentes, pero afortunadamente, podía extraer la tabla de símbolos del código, y discriminar qué funciones eran copia y cuales no... y escribí un parche para separar una parte de otra, de manera que el driver para la tarjeta Ceres-FNMT se convertía en una suerte de "plugin" para OpenSC

Curiosamente, mi parche fue admitido en el proyecto OpenSC, lo que me permitió darme a conocer y zambullirme en los procelosos mares de la criptografía de clave pública y las tarjetas criptográficas. OpenSC es el standard de facto de manejo de tarjetas criptográficas pkcs#15 en el Mundo Linux, y si una tarjeta no está soportada por dicho proyecto, a todos los efectos no existe.

De ahí hasta la actualidad, mi vida profesional (al margen de mi trabajo oficial en la Universidad) transcurre a salto de mata de aplicación en aplicación criptográfica:
- Aplicaciones de voto electrónico
- Módulos de autenticación single-sign-on para Linux
- Aplicaciones de validación de certificados en servidores
- Análisis de diversas pruebas de voto electrónico...
- Y finalmente llegó a mí el último molaware: el DNI electrónico

Con el DNI electrónico ocurrió algo similar a la historia de la tarjeta Ceres: está basada en un plugin de OpenSC, y en un primer momento no se disponía del código fuente...

Al final pasó lo que tenía que pasar: la gente de OpenSC se "mosqueó" y decidió que las nuevas versiones de su software no facilitarían la carga de plugins. Fue la sentencia de muerte para el nuevo y flamante DNI electrónico en Linux.. ¿o no?

Nunca sabremos la historia real, ni los verdaderos motivos que impulsaron a la Dirección General de la Policía y la Guardia civil a finalmente publicar el código fuente del plugin... bajo una licencia de copyright que impedía en la práctica utilizar dicho código. Pero el caso es que dicha publicación se realizó. Poco despues la DGPGC publicó un "Manual" para programar el DNIe, y con ello quedó abierta la puerta a la posibilidad de integrar el soporte del DNIe electrónico en OpenSC

De esto hace cuatro meses... Yo me dije "¿Y por qué no?", y dicho y hecho. Me lié la manta a la cabeza, y me lancé de ídem a lo que ha sido una apasionante aventura

Hoy me siento feliz y orgulloso de poder presentar mi criatura: un driver de código abierto para el manejo del DNI electrónico en equipos con Sistema Operativo Linux; escrito desde cero bajo licencia LGPL libre y compatible con la del proyecto OpenSC, con vistas a ser integrado en dicho proyecto.

Mi driver ha pasado toda la batería de test y verificaciones y puedo por fin presentarlo en sociedad. Tanto la autenticación como la firma funcionan sin problemas en la web de validación del DNI electrónico de la DGP, y puede tanto realizar como validar firmas digitales en documentos OpenOffice. Lo he probado con éxito en distribuciones Linux Fedora 13 y 14 (32 bits). Además cuenta con todos los parabienes legales -a falta de certificación- (aka. pasta gansa) y la "bendición" de todas las partes implicadas, desde la policía hasta la gente de OpenSC

Más de uno preguntará: ¿y por qué te metes en estos berenjenales?.
Hay varias posibles respuestas:

- La políticamente correcta:

* Trabajo en la administración pública, y me debo a quienes me pagan el sueldo
* Quiero lo mejor para mi país: la situación actual en lo que atañe al DNI electrónico difícilmente puede calificarse de simplemente "chapuza".

- La sentimental:
* Me siento en cierto modo "padre" y "culpable" de la existencia de la criatura. Tenía el deber moral de hacer que siguiera adelante
* Creo de verdad en las bondades del software libre, y que la administración tiene mucho que dar y ofrecer en dicho campo
* Quisiera que este esfuerzo sirviera de ejemplo y aliciente a los muchos desarrolladores de sofware libre que hay en España, y animarles a que arrimen el hombro

- Las que posiblemente sean las razones reales:
* Tengo cuarenta y tantos y empiezo a notar mi declive como programador. Esta era una de mis últimas oportunidades de seguir montado en el tren
* Estoy recien divorciado en segundas nupcias y con una depresión de caballo. Necesito un choque de hiperactividad para no caer.
* Mi hija está a punto de ser mayor de edad, empiezo a sentirme solo y necesito desesperadamente encontrar una justificación a mi vida

Sea cual sea la verdadera razón, desde un altruísmo "pata negra" hasta un egoísmo exacerbado, el resultado final es el mismo. Como ya dije en mi blog en su día: los motivos me importan un bledo; lo que cuenta es el resultado

Ahora tocan los agradecimientos y las reflexiones:

Mis agradecimientos a:

- A la gente de OpenSC por el apoyo y ayuda con el proyecto. Especialmente a Martin Paljak como coordinador, y a Andre Zepezauer por su ayuda con la capa de emulación pkcs15
- A Malcom Baim de la Free Software Foundation por su asesoría legal
- A la Oficina Técnica del DNI Electrónico, y especialmente a Santiago Suárez, por su tutela, sugerencias, y garantias legales
- A la gente de Cenatic, especialmente a Jorge Martín
- A Jose Manuel Gómez por su especial deferencia -y paciencia- conmigo en Kriptópolis
- A Fernando Acero, por su apoyo y trabajo en la sombra. Un afectuoso abrazo
- A mi hija, a quien despues de 17 años de duro trabajo he conseguido convencer para que nunca, nunca busque un empleo como programadora... de hecho está estudiando música -y con aprovechamiento- :-)
- A Vicky. Espero que algún día puedas perdonarme.

Y en general, a toda la gente que de una u otra forma ha colaborado con el proyecto. Gracias

La reflexión:
Ahora que acabo de escribir esto de "toda la gente", me he dado cuenta de que han sido realmente muy pocos los que han tirado para adelante. Realmente, con el código solo me han ayudado Martin y André. Eso sí, gente que hacía paquetes Debian han salido hasta debajo de las piedras... No dejo de pensar lo mucho que se habla de la "Comunidad del Software Libre", y lo poco que a la hora de la verdad esas palabras significan. Nos hemos acostumbrado al "que inventen ellos", que nosotros envolvemos el paquete y estiramos la mano para cobrar la subvención, mientras nos reímos de los "libeggales" afines a la extrema derecha mediática... Realmente tenemos lo que nos merecemos

En fin: ha llegado el momento de hacer público el anuncio, y permitirme un baño en loor de multitudes. Os presento a mi nueva criatura:
http://forja.cenatic.es/frs/download.php/1153/opensc-opendnie-0.12.1-svn.tar.gz

Todavía hay mucho trabajo por hacer, pero eso lo dejaré para otro momento. De momento y por si acaso, pongo el "usual disclaimer"

EXCEPTO CUANDO SE DECLARE LO CONTRARIO POR ESCRITO, LOS TITULARES DE LOS DERECHOS DE AUTOR Y/O DEMÁS PARTES OFRECEN EL PROGRAMA "TAL CUAL", SIN GARANTÍAS DE NINGÚN TIPO, YA SEAN EXPRESAS O TÁCITAS, INCLUIDAS, A TÍTULO ENUNCIATIVO AUNQUE NO LIMITATIVO, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN FIN EN PARTICULAR. USTED ASUME TODOS LOS RIESGOS RELATIVOS A LA CALIDAD Y AL RENDIMIENTO DEL PROGRAMA. EN CASO DE QUE EL PROGRAMA RESULTE DEFECTUOSO, USTED ASUME EL COSTE DE TODOS LOS SERVICIOS, REPARACIONES O CORRECCIONES NECESARIOS.

EN NINGÚN CASO, A MENOS QUE LO EXIJA LA LEGISLACIÓN APLICABLE O SE ACUERDE POR ESCRITO, NINGÚN TITULAR DE LOS DERECHOS DE AUTOR, NI NINGUNA OTRA PARTE QUE PUEDA MODIFICAR Y/O REDISTRIBUIR EL PROGRAMA SEGÚN SE PERMITE ANTERIORMENTE, SERÁN RESPONSABLES ANTE USTED POR LOS DAÑOS, INCLUIDOS LOS DAÑOS GENERALES, ESPECIALES, INCIDENTALES O CONSECUENTES QUE SURJAN DEL USO O DE LA INCAPACIDAD DE USO DEL PROGRAMA (INCLUIDAS, A TÍTULO ENUNCIATIVO AUNQUE NO LIMITATIVO, LA PÉRDIDA DE DATOS O LA INEXACTITUD DE LOS DATOS O LAS PÉRDIDAS SUFRIDAS POR USTED O TERCEROS O LA IMPOSIBILIDAD DE HACER FUNCIONAR EL PROGRAMA CON OTROS PROGRAMAS), INCLUSO SI SE HA INFORMADO A DICHO TITULAR O TERCERO DE LA POSIBILIDAD DE DICHOS DAÑOS.


Vamos, que mientras no se diga lo contrario, si presentando la declaración de hacienda se os cae el navegador, no vengáis a quejaros al maestro armero :-)

Que ustedes lo autentiquen con salud.

Juan Antonio Martínez < jonsito en terra punto es >

Pero el camino verdadero para conseguir la felicidad pasa por hacer felices a los demás. Intentad dejar este mundo un poco mejor de como os lo encontrasteis y, cuando os llegue la hora de morir, podréis morir felices sintiendo que de ningún modo habréis perdido vuestro tiempo sino que habréis hecho todo lo posible. Así, estad “Siempre Listos” para vivir felices y morir felices: aferraos siempre a vuestra promesa Scout, aun cuando hayáis dejado de ser muchachos, y que Dios os ayude a hacerlo así.


Sir Lord Robert Baden-Powel. Testamento Scout