Firma electrónica y accesibilidad web

En las listas de AccesoWeb de SIDAR mantuvimos en 2005 una interesante discusión sobre la compatibilidad entre los puntos de verificación de accesibilidad de WAI y la firma electrónica, que requiere realizar procesos en cliente con tecnologías obviamente ejecutadas en cliente (Javascript + Applet Java o Active X). En tres años ha habido realmente poca evolución a este respecto, y considero que la discusión se puede mantener vigente.

Sobre la firma electrónica 

No confundamos firma electrónica con autenticación con certificado. Podemos acceder (login) a una aplicación web con nuestro certificado, y que sea accesible. En lo que se refiere a la firma electrónica en una aplicación web, hay sin embargo una serie de conceptos claros. El proceso técnico es más o menos como el que sigue (ahorrando varios pasos para no hacer un post tipo Biblia):

  1. El usuario introduce los datos que debe firmar. Esto puede ser de muchas formas; rellenar un formulario HTML, adjuntar un fichero, etc.
  2. El navegador del usuario debe generar un resumen (digest) con un algoritmo hash (tipo MD5 o SHA-1) de la información a firmar.
  3. El navegador debe utilizar la clave privada del certificado digital del cliente para encriptar esta información. Esta encriptación es simétrica; lo que se encripta con la clave privada podrá ser desencriptada con la clave pública, y sólo con esta. Para realizar esta operación, el navegador debe consultar de alguna forma el almacén de certificados del cliente, hacerle escoger el certificado con el que quiere firmar, y utilizar la clave privada almacenada en el certificado escogido para encriptar ese hash. Ya tenemos la firma: es el hash encriptado.
  4. El navegador envía al servidor de firma todos los datos necesarios: el hash encriptado y la clave pública del certificado digital del cliente. Ahora éste lo almacena con el formato que se considere más oportuno. En cualquier momento se puede verificar la validez de esa firma con una sencilla operación: desencriptando la firma con la clave pública del certificado, y comparándola con el resultado de realizar el hash Almacenar el documento original con su firma (el hash encriptado). De esta forma, si algún día se quiere comprobar que lo que introdujo el usuario (el documento original) no ha sido modificado maliciosamente (lo que le confiere validez legal), se puede realizar una sencilla operación de comprobación de firma, consistente en desencriptar la firma con la clave pública del certificado digital, obteniendo el hash, y aplicando el algoritmo de hash sobre el documento original. Si ambos hash coinciden, la firma es válida.

El problema es que los pasos 2 y 3 deben realizarse en cliente, es decir, en el navegador. Esto se totalmente necesario y obligatorio; precisamente, uno de los puntos clave para mantener la seguridad del proceso se basa en que la clave privada del certificado del cliente nunca sale de la máquina del cliente. Hay un número finito de tecnologías para ejecutar esto en un navegador web: lo más normal son applets Java (como el conocido OpenOCES, que utilizamos en Viafirma y que usan otras plataformas como la de Safelayer) o clientes Active X, invocados desde Javascript. De hecho, éste es uno de los puntos claves para que un trámite telemático sea lo más universal y usable posible: la calidad del componente cliente. Por ejemplo, la semana pasada tardé dos horas, experimentos en 3 máquinas diferentes (ya varios navegadores en cada una, aunque con Opera o Safari no llegas muy lejos) y un buen número de reinstalaciones de componentes para conseguir cambiar a mi mujer de médico de cabecera, debido a la infame calidad de los applets Java de firma de la plataforma @Firma. Si a mí me costó tanto, no quiero imaginar qué le ocurrirá a un usuario de a pie. El mayor problema es que funciona muy mal con el JRE Java 6, pero debería tenerse en cuenta que, salvo que se configure de forma diferente, el JRE se autoactualiza automáticamente, con lo que a estas alturas hasta el panadero de la esquina tiene instalado Java 6 en su máquina.

Sobre la accesibilidad web 

En lo que se refiere a la accesibilidad web, las pautas WAI te exigen que para acceder a tu contenido web no sea imprescindible el uso de applets o javascript. En concreto, la pauta 6.3 dice que “Asegúrese de que las páginas sigan siendo utilizables cuando se desconecten o no se soporten los scripts, applets u otros objetos programados. Si esto no es posible, proporcione información equivalente en una página alternativa accesible”.

Según esta pauta entendemos que no podemos tener una calificación AA de accesibilidad si utilizamos javascript y applets, ya que deberíamos tener una página alternativa. El problema es que no podemos tener una página alternativa ya que la operación que realizamos no se puede realizar de otra forma de forma legal.

Sobre las Administraciones Públicas 

Por último, las Administraciones Públicas exigen por regla general que sus portales web, incluyendo sus oficinas virtuales, alcancen un nivel AA de accesibilidad, esto es, cumplan todos los puntos de verificación de prioridad 1 y 2.

Pero también exigen que para que una operación telemática sea legal, se haga utilizando firma electrónica que, como hemos visto, tiene problemas insalvables de accesibilidad porque hoy por hoy no es posible firmar sin ejecutar lógica de cliente que no todos los navegadores o dispositivos de usuario tienen por qué soportar. Por ello, la alternativa legal que podemos dar a nuestra web con firma electrónica es que el usuario se vaya a la institución físicamente.

¿No es un contrasentido? Se piden dos cosas incompatibles entre sí.

Una conclusión: quedarse en medio.

Bajo mi punto de vista, no debemos olvidar que las pautas WAI se refieren al acceso al contenido. Una Oficina Virtual está mucho más cerca de una aplicación web que de un portal, por lo que debe plantearse si las pautas aplican con la misma restrictividad. En todo caso, siempre se puede tratar de que toda la web sea accesible realmente, y sacar la zona dotada de firma electrónica de la declaración de accesibilidad. Y esperar a que la tecnología avance para superar estos escollos.

Comentarios

  1. Hola Javier:

    Coincido contigo en gran parte de los puntos que has expuesto. Precisamente hace algunas semanas escribía [1] sobre una situación muy similar.

    Personalmente creo en la necesidad de distinguir entre contenido web y aplicación web. Y la principal diferencia está en los requisitos para el agente de usuario. Sin embargo, la norme UNE correspondiente se debe aplican tanto a un documento que explique cómo solicitar una subvención como a un cliente GIS.

    Un saludo

    [1] http://www.manuelrecena.com/blog/archives/121

  2. El problema principal es cuánta gente se da cuenta de esta incompatibilidad (he visto tu post y estamos en la misma línea, ¿qué pasa con un cliente GIS?)… y si alguno de ellos está entre los que redactan las leyes 🙂 Porque con los pliegos de condiciones en las manos, en cualquier concurso público pueden obligarte a hacer lo imposible: que esa aplicación con firma digital, con un cliente rico GIS, etc., alcance un nivel AA (cuando no te ponen AAA). A ver si las posteriores versiones de WCAG son sensibles a este tipo de dicotomías. Porque por otro lado, los agentes de usuario evolucionan muy rápido: hoy por hoy interpreta javascript estándar mi teléfono móvil, el iPhone que me quiero comprar, e incluso algunos lectores de pantalla… y no me extrañaría que estos últimos fueran capaces de realizar operaciones básicas con clientes GIS. Por ello confío en la evolución de WCAG (2.0 aún no es recomendación oficial, aunque está en Last Call), UNE, etc. Porque lo que ayer era inaccesible, con evolución de los agentes de usuario y las innovaciones técnicas hoy es accesible.

  3. Este contrasentido se debe a la imposibilidad de hacerlo directamente sobre los navegadores.

    Los navegadores no han evolucionado hacia la seguridad, si podemos poner firma digital utilizando directamente los apis del navegador, no nos haria falta los js, los applet o los active X.

    Respecto al uso de GIS es tambien otra falta de soporte de los navegadores a una web rica.

  4. Efectivamente, cuando estaba redactando el post lo pensé y se me pasó… los agentes de usuario también pueden evolucionar hacia el soporte de este tipo de tecnologías. Al fin y al cabo, en lo que se refiere a la firma electrónica, es un proceso más.
    Legalmente, el servidor de firma debería seguir realizando sus propias operaciones (por ejemplo, validar que el certificado no esté caducado ni revocado), pero la lógica de cliente estaría soportada por el browser, del mismo modo que le pedimos a un navegador que rendee una imagen, un SVG, el javascript…

  5. Relacionado con esto, Tino hace unos días, nos mando http://www.sidar.org/ponencias/2008/egyrs/expansion/leyes_accesibilidad.pdf.

    Y extraido directamente de la ponencia…

    …De acuerdo con lo establecido en la disposición adicional novena de la Ley 59/2003, de 19 de diciembre, de firma electrónica, los servicios, procesos, procedimientos y dispositivos de firma electrónica deberán ser plenamente accesibles a las personas mayores y personas con discapacidad, las cuales no podrán ser, en ningún caso, discriminadas en el ejercicio de sus derechos y facultades por causas basadas en razones de discapacidad o edad avanzada.(UNE139802 y UNE139803)…

    Esto lo dice todo, actualmente el “estado del arte” nos hace imposible poder cumplir la ley.

  6. Respecto a las Administraciones públicas, quien hace la ley hace la trampa: (Observar el último excepcionalmente)

    CAPÍTULO II

    Modificaciones legislativas para el impulso de la sociedad de la información y de las comunicaciones electrónicas

    Artículo 4. Modificaciones de la Ley 34/2002, de 11 de julio, de Servicios de la Sociedad de la Información y de Comercio Electrónico.

    Se modifica la Ley 34/2002, de 11 de julio, de Servicios de la Sociedad de la Información y de Comercio Electrónico, en los siguientes aspectos: …

    Dieciocho. Se da nueva redacción al párrafo segundo del apartado uno de la disposición adicional quinta, con el texto siguiente:

    «A partir del 31 de diciembre de 2008, las páginas de Internet de las Administraciones Públicas satisfarán, como mínimo, el nivel medio de los criterios de accesibilidad al contenido generalmente reconocidos. Excepcionalmente, esta obligación no será aplicable cuando una funcionalidad o servicio no disponga de una solución tecnológica que permita su accesibilidad.»

  7. Hola Javier,
    Cuando dices que estuviste dos horas para usar lo de @firma de la Junta de Andalucía, ¿estabas en Window o en Linux?
    Yo, en linux, todavia no he encontrado la manera de poder firmar con el dichoso cliente, pero si conseguí dejar caos el firefox :), hasta el punto que ni reinstalandolo, tuve que reinstalar unos paquetes del sistema… en fin historia q mejor no contar para no quitarle toda la dignidad a los de la Junta de Andalucía.
    Cuando dices q no funciona bien con el JRE Java 6… el hecho de q me diga que “no hay certificados”, ¿ Podría estar relacionado con la version de Java o no tiene nada q ver? Sólo me ocurre en ubuntu, en window si los encuentra con la version 6.
    Sería muy importante para mí cualquier dato q me pudieras dar.
    Muchas gracias.

  8. Maribel, soy un desastre, acabo AHORA MISMO de leer tu comentario 🙁
    Fue en Windows XP… lo de no hay certificados en Firefox… ¿has probado a importarlos específicamente en Firefox? Ten en cuenta que éste no interactúa directamente con el contenedor general de certificados del S.O. (sí debería con el certificado en tarjeta)… coméntame tus condiciones y tal vez te pueda decir algo. Eso sí, con Linux suele estar complicado 🙁

  9. A Olga, felicidades por tu blog 😀 Unas semanas después alguien me pasó tu enlace…

  10. Muy interesante, estoy haciendo una tesis al respecto, pero en au parte legal, pero todos estos tecnicismos me sirven, si alguien más quiere aportar a mi tesis se agradece de antemano, y si alguien me puede decir si sería fácil frnquear los sistemas de seguridad de una firma electrónica

  11. Pingback: Joalgoca Blog » Archivo del Fotolog » Firma electrónica

Comments are closed.