General

¿Que es la firma electrónica?

La firma electrónica consiste en un proceso de encriptación de información que, por medio de una transmisión de confianza, identifica con garantías al dueño de la firma realizada, y asegura la integridad del contenido firmado.

Para realizar dicha codificación se emplea la infraestructura de clave pública (PKI), que consiste en una forma asimétrica de encriptar y desencriptar información, es decir, que en lugar de utilizar una contraseña única, existen dos claves, una de carácter público y otra privada, que se complementan. Lo codificado con clave privada sólo puede ser decodificado con la clave pública correspondiente y viceversa.

En la firma electrónica, el emisor utiliza su clave privada para codificar los datos a firmar, envía el resultado al receptor y éste procede a validarla empleando la clave pública del emisor, que va adjunta en la propia firma. Partiendo de la premisa de que la clave original es privada, se demuestra que los datos fueron firmados realmente por el emisor, que está identificado mediante el certificado que está asociado a las claves.

La entidad que emitió el certificado garantiza la veracidad de éste. Así pues, el receptor de un documento firmado, para validarlo completamente, debe comprobar que el contenido criptográfico corresponde, y a continuación reconstruir la cadena de confianza (se trata de una cadena de firmas electrónicas) hasta alcanzar un punto en el cual decide confiar, ya que se le ofrecen suficientes garantías. Por ejemplo, porque ha alcanzado hasta el certificado raíz del DNIe y confía en la DGP.

Los objetivos que se alcanzan de éste modo son:

  • Autenticidad: El receptor del mensaje puede asegurar la identidad del emisor gracias al mecanismo de par de claves, encriptando datos mediante la clave privada, de forma que cualquiera lo pueda desencriptar con la clave pública para comparar si el resultado coincide con el contenido firmado.
  • Integridad: El sistema asegura que la información no fue alterada desde el momento en el que el emisor lo firmó, gracias a los mecanismos de huella, con los cuales, si se produce una alteración, la huella o hash cambia.
  • No repudio: Garantía de que el emisor o el receptor no rechazan la información, gracias a la asociación que existe entre el par de claves y el certificado emitido por una autoridad certificadora.
  • Política de firma: Es posible que la firma incluya una política de firma. Dicha política consiste en una serie de criterios extra que la firma debe cumplir, definidos en otros contextos.

En resumen, para construir una firma electrónica, se requiere:

  • Disponer de los datos originales a firmar. Por ejemplo, un fichero de texto o una imagen.
  • Disponer de un certificado electrónico asociado a un par de claves criptográficas que haya sido emitido por una autoridad certificadora que sea de confianza para el receptor de la firma. Por ejemplo, el DNIe.
  • Disponer de las herramientas que posibilitan la firma. Por ejemplo, la aplicación eCoFirma.

Certificados compatibles y entidades emisoras

La aplicación eCoFirma es compatible con cualquier certificado que se ajuste al estándar X.509 V3, como por ejemplo, el DNIe. Técnicamente, para que el certificado pueda ser empleado para realizar una firma electrónica éste debe encontrarse dentro del periodo de validez (no debe estar caducado), estar habilitado para la realización de firmas, encontrarse junto a su clave privada y admitir el algoritmo de firma "RSAwithSHA1".

Los ficheros que contienen la parte pública de un certificado suelen tener la extensión .cer. Se debe tener en cuenta que estos ficheros no contienen la clave privada asociada al certificado, necesaria para los procesos de firma. Las claves privadas son información sensible que estan protegidas mediante formatos seguros que, usualmente, tienen extensión .p12 ó .pfx, entre otras.

Puede ver cuáles son las autoridades certificadoras que ha realizado la comunicación de actividades prevista en la ley de firma electrónica en la siguiente página web:https://sedeaplicaciones2.minetur.gob.es/prestadores/busquedaPrestadores.jsp.

Puede encontrar más información en la ley 59/2003 (BOE) sobre firma electrónica y autoridades de certificación en España.


Cómo acceder al administrador del almacén e importar un certificado

La aplicación eCoFirma es una aplicación diseñada para permitir generar firmas electrónicas de tipo XAdES empleando los certificados electrónicos que obren en poder del usuario, que deben estar contenidos en alguno de los repositorios de certificados compatibles:

  • El repositorio de certificados de IExplorer.
  • El repositorio de certificados de Firefox.
  • El llavero de Mac.
  • El almacén propietario.

El proceso a seguir para importar un certificado electrónico en el almacén correspondiente es el siguiente:

  • Almacén de Windows: Arranque el navegador Internet Explorer y acceda a la opción de menú "Herramientas". Seleccione "Opciones de Internet" y haga clic sobre la pestaña "Contenido". A continuación haga clic sobre el botón "Certificados". Se abrirá una ventana donde puede observar el contenido del almacén de certificados. Dentro de la pestaña "Personal" pulse sobre el botón "Importar".
  • Almacén de Firefox: Arranque el navegador Mozilla Firefox y acceda a la opción de menú "Herramientas/Opciones" y pulse en Avanzado. Acceda a la pestaña llamada "Cifrado" y finalmente pulse sobre el botón "Ver certificados". Se abrirá una ventana donde puede observar el contenido del almacén de certificados, junto a un botón llamado "Importar" que lanza un asistente para el importación del certificado.
  • Almacén de Mac: Acceda a "Aplicaciones", a continuación vaya a "Utilidades" y pulse sobre la opción "Acceso a llaveros". Seleccione la categoría "Mis Certificados". Acceda a la opción de menú llamada "Archivo" y finalmente pulse sobre "Importar elementos".
  • Almacén propietario: Arranque la aplicación eCofirma, acceda a la opción de emnú "Configuración/Almacén de certificados" y pulse el botón "Administrar almacén". En la pestaña principal, llamada "Certificados propios" pulse sobre el botón "Añadir" e indique la ruta al fichero.
  • PKCS#11: En caso de que su certificado se encuentre contenido dentro de un dispositivo Hardware, tendrá que tener instalados los drivers del lector y el software que acompañara a su dispositivo criptográfico, de forma que quede accesible desde algún almacén de los mencionados anteriormente.


Confianza y estado de revocación de un certificado. OCSP

Para realizar una firma electrónica, el emisor utiliza su clave privada. Para validar dicha firma, se recuperan los datos encriptados empleando la clave pública que va adjunta y se comparan con los datos firmados. Dicha clave esta asociada a un certificado electrónico donde aparece la identidad del firmante.

El conjunto "certificado-clave pública" esta firmado por la Autoridad de Certificación que lo expide, conformando una cadena de firmas llamada "cadena de confianza" en la cual, en teoría, es posible alcanzar hasta un punto en el que el receptor decide confiar, ya que se le ofrecen suficientes garantías. Por ejemplo, porque se ha alcanzado el certificado raíz del DNIe y se confía de la DGP. En caso contrario, el certificado no será de confianza y se mostrará un aviso para que el propio usuario valore si confía o no.

Dichas autoridades son las encargadas de gestionar los certificados que expiden, garantizando su veracidad y manteniendo la seguridad del sistema durante toda su vida útil.

Es posible para cualquier usuario solicitar la revocación de sus certificados si cree que la seguridad ha sido comprometida o simplemente los desea dar de baja, de forma que para la realización de una validación completa de una firma electrónica básica sea necesario comprobar contra la autoridad emisora el estado de revocación del certificado.

La aplicación permite realizar consultas sobre el estado de revocación de un certificado mediante el estándar OCSP (RFC 2560). Por defecto, la aplicación sólo contiene la ruta hacia el servicio de validación para el DNIe, pero es posible incluir otras. Para ello, configure eCoFirma en la opción de menú “Configuración/Validadores OCSP” e indique la dirección del OCSP que corresponda según el emisor del certificado. Estos servicios no siempre son gratuítos.


No aparece el botón verde llamado "Descargar" en la página de descarga de eCoFirma.

Cuando se carga la página web se debe cargar un applet Java que permite la descarga de la aplicación. Si dicho applet no se carga puede deberse a que:

  • No tiene habilitado Java en su PC.
  • Por políticas de seguridad, no se permite la ejecución del applet: Se mostrará una barra de diálogo en la parte superior de la página donde podrá dar permiso de ejecución activamente.
Si no puede acceder a dicha página, le informamos de que puede descargar la aplicación directamente haciendo uso del siguiente link: http://oficinavirtual.mityc.es/javawebstart/soc_info/ecofirma/launcher_ecofirma.jnlp


Realizar una consulta técnica o reportar un error

Para realizar una consulta técnica escriba un correo a ctecnologia_planavanza@minetur.es.

Para posibilitar un eficaz soporte técnico es de ayuda que se aporte la mayor cantidad de información posible sobre el problema. Sugerimos que se nos remitan pantallazos que ilustren el proceso, descripciones pormenorizadas del error, y las trazas que la aplicación genera. Para obtener dichas trazas, configure Java para que se abra la consola cuando se inicia una aplicación. Acceda al administrador y vaya a la pestaña "Avanzados". En la opción "Consola de Java" seleccione "Ver Consola".

Si es posible adjúntenos también el fichero resultante de ejecutar la batería de test que podrá realizar desde el menú "Ayuda" pulsando la opción "Generar informe de test".

Adicionalmente, para que podamos ubicarnos dentro de una coyuntura, sería de ayuda que nos indicaran los datos del entorno dónde se está ejecutando la aplicación, es decir, que sistema operativo tienen, que arquitectura (si es de 32 o de 64 bits), cual es la versión de la máquina virtual de Java y qué tamaño tiene el fichero que ha seleccionado para firmar.

En caso de que su consulta se refiera a una firma electrónica en concreto, le sugerimos que nos la remita para que procedamos a validarla.

Como posibles soluciones generales, recomendamos que se actualice la versión de Java a la última disponible visitando la dirección http://www.java.com/es/download/.

También sugerimos que se vacíe la caché de Java para forzar una descarga nueva y completa de la aplicación eCoFirma.

Puede observar la caché de la máquina virtual del siguiente modo. Abra el administrador de Java, seleccione la pestaña "General" y haga clic en el botón "Ver". Se abrirá un diálogo donde se muestra todo lo que la caché de Java tiene cargado. Puede eliminar componentes cacheados seleccionándolos y haciendo clic en el aspa roja que hay en la parte superior. Una vez quede limpia la caché proceda a descargar de nuevo la aplicación.

También puede borrar la configuración de eCoFirma si elimina la carpeta llamada ".eCoFirma" contenida en la raíz de su usuario (algo como C:\Document and Settings\SuUsuario\.eCoFirma).


Ejecutar eCoFirma sin conexión a Internet

Cuando se descarga código firmado por medio de un lanzador JNLP, se ejecuta el sistema de descarga Java Web Start, que a través de la configuración indicada en un fichero JNLP, descarga la aplicación y todas sus dependencias de una forma enriquecida y segura.

Para ejecutar la aplicación sin conexión a internet, compruebe que la descarga se realizó correctamente. Para ello, abra el administrador de Java. Vaya a la pestaña "General" y haga clic en el botón "Ver". Se abrirá una ventana de diálogo que muestra todo lo que la caché de java ha descargado. En la columna de la derecha se indica si es posible ejecutar la aplicación sin conexión, y dispone de una aspa roja en la parte superior de la ventana que le permite eliminar la aplicación que en ese momento este seleccionada.

En caso de que no se pueda ejecutar sin conexión, vaya a la pestaña "General" y haga uso del botón "Configuración". Finalmente, marque la opción "Conservar los archivos temporales en mi equipo".


No aparece ningún certificado disponible

Para realizar un proceso de firma digital es requisito disponer de un certificado electrónico compatible. Puede obtener más información en el punto "Certificados compatibles y entidades emisoras"

Compruebe que ha configurado correctamente la aplicación eCoFirma en la opción de menú "Configuración/Almacén de certificados".

Compruebe que el certificado se encuentra dentro del almacén configurado:

  • Internet Explorer: Abra el navegador IExplorer y pulse sobre la opción de menú "Herramientas/Opciones de Internet/Contenido/Certificados".
  • Mozilla Firefox: Abra el navegador Firefox y pulse sobre la opciÖn de menú "Herramientas/Opciones/Avanzado/Cifrado/Ver certificados".
  • Almacén de Mac: Acceda a "Aplicaciones", a continuación a "Utilidades" y pulse sobre la opción "Acceso a llaveros". Seleccione la categoría "Mis Certificados". Compruebe que aparece el certificado, que está dentro del período de validez y que tiene asociado una clave privada. Para ello pulse sobre el triángulo a la izquierda del certificado y verá un icono con una llave en caso de que exista.
  • Almacén propietario: En eCoFirma, acceda a "Configuración/Almacén de certificados" y pulse sobre el botón "Administrar almacén".

Puede realizar una batería de test sobre el certificado en cuestión con una herramienta de test disponible en https://oficinavirtual.mityc.es/ecotest/runtest.aspx. Para ello, cuando le solicite el navegador un certificado para testear, seleccione el correspondiente.


No se ejecuta. Aparecen errores sobre contenido no firmado o conflictos de versiones

Cuando se descarga código firmado por medio de un lanzador JNLP, se ejecuta el sistema de descarga Java Web Start, que a través de la configuración indicada en un fichero JNLP, descarga la aplicación y todas sus dependencias de una forma enriquecida y segura.

En caso de que este sistema falle, le sugerimos que limpie la caché de Java. Puede observar la caché de la máquina virtual del siguiente modo. Abra el administrador de Java, seleccione la pestaña "General" y haga clic en el botón "Ver". Se abrirá un diálogo donde se muestra todo lo que la caché de Java tiene cargado. Puede eliminar componentes cacheados seleccionándolos y haciendo clic en el aspa roja que hay en la parte superior. Una vez quede limpia la caché proceda a descargar de nuevo la aplicación.

Es posible que se interponga una dependencia dentro de la carpeta endorsed de Java, que es un directorio donde se incluyen paquetes que se consideran de uso común para todas las aplicaciones Java (normalmente se encuentra dentro de la carpeta de Java, usualmente en “C:\Archivos de Programa\Java\jre6\lib\ext”). Si en dicha carpeta aparecen paquetes no firmados o que pertenezcan a una versión distinta de la requerida por eCoFirma, entonces se utilizará ésta obteniendo como resultado que no se encuentre lo que se esperaba encontrar. Elimínelo.


¿Qué es el almacén propietario?

Es un almacén de certificados desarrollado por el MINETUR que permite independizar eCoFirma de la plataforma en la que se ejecuta. La opción de menú se encuentra accesible en “Configuración/Almacén de certificados” y el nombre del almacén es “Almacén propietario”.

Este almacén está basado en el estándar PKCS#12. Es un estándar para el almacenamiento de claves privadas, certificados, información secreta y extensiones que permite importar, exportar y emplear un conjunto de informaciones, protegidas con un identificador personal.

El administrador del almacén es una interfaz que haciendo uso de una ventana de diálogo, permite importar, exportar, actualizar o borrar certificados, así como configurar la protección que se desea. Su funcionamiento es el siguiente: En primer lugar, es preciso levantar la instancia del almacén. Para ello se debe proveer de un fichero de configuración. Dicho almacén emplea internamente el proveedor propio de SUN para la clase KeyStore, llamado “JCEKS”. Puede consultar la información sobre dicha clase en el API de Java. Si el almacén no existe y se autogenera, se pedirá al usuario que introduzca la nueva contraseña de protección que se pedirá en futuros accesos al almacén.

Una vez que se ha accedido al almacén, se muestra su contenido en dos tablas. Está la tabla de certificados propios, que son certificados de firma, con clave privada asociada, y las autoridades de confianza, solo con clave pública. Cada tabla tiene tres botones asociados para realizar las tareas comunes, es decir, hay un botón para importar un certificado, borrarlo o actualizarlo.

Si se desea añadir un certificado al almacén, haga clic en el botón “Añadir”. Se mostrará un diálogo para que indique la ruta del fichero que contiene el certificado, que podrá ser un fichero “.p12” (para certificados con clave privada, según PKCS 12) o un “.cer”. Si el contenedor del certificado está protegido con contraseña, se pedirá que la indique. Es posible que el acceso a la clave privada también esté protegido por una contraseña adicional.

A continuación, se mostrará el diálogo que le permite indicar cual es el contexto de seguridad a aplicar en los futuros accesos a claves privadas. En él puede establecer que el acceso se proteja mediante una contraseña, o que no se proteja de ningún modo. También puede simplemente indicar que se avise en su uso.


No se puede instalar. Certificado de firma de código del MINETUR

Cuando se descarga código firmado por medio del lanzador JNLP, el certificado firmante del código es validado empleando el repositorio de certificados de confianza de Java. Para un correcto funcionamiento, su repositorio de certificados debe contener al certificado firmante o a su emisor. Le sugerimos que incluya el certificado de Camerfirma como una CA de confianza para la máquina virtual de Java.

Para configurar la confianza de Java:

  • En entorno Windows: acceda al "Panel de control" (Inicio/Configuración/Panel de control, seleccione la vista clásica). Ahí encontrará un icono llamado "Java". Haga doble clic sobre él para que se abra un cuadro de diálogo, vaya a la pestaña "Seguridad" y haga clic en el botón "Certificados". Se abrirá una ventana de diálogo con los certificados precargados en la máquina virtual. Le sugerimos que incluya el certificado haciendo uso del botón "Importar". Se abrirá un asistente que le guiará por todos los pasos necesarios para incluir el certificado.
  • En un entorno Macintosh, se puede acceder al administrador de Java abriendo el Finder y dirigiéndose a “Aplicaciones/Utilidades/Java/Preferencias de Java”.
  • En un entorno Linux, abra la ventana de terminal y diríjase al directorio de instalación de Java introduciendo el comando "cd /java/jre1.6.0_24" (Cambiando el nombre del directorio por aquel donde haya instalado Java). Una vez ubicado dentro de dicho directorio escriba "./ControlPanel". También puede abrir el panel de control de Java desde el propio navegador abriendo el archivo "ControlPanel.html" que se encuentra normalmente en dicho directorio "$JAVA_HOME/jre/".

Puede descargar el certificado de Camerfirma en la dirección http://www.camerfirma.com/camerfirmaPublic/index/Area-Usuario/Claves-Publicas.html

Por otro lado, dentro de la pestaña "Avanzado" puede ver la configuración de seguridad de su máquina virtual. Le sugerimos que se compruebe las opciones "Comprobar la revocación del certificado del editor" y "Habilitar la validación de certificados en línea". Asegúrese de que en el parámetro "Seguridad/General" está habilitada la opción "Permitir al usuario aceptar las peticiones de seguridad de JNLP".

Si el problema persiste, compruebe que no exista un firewall u otro sistema de seguridad bloqueando la instalación.


Conexión a elementos remotos a través de un servidor Proxy

Si su conexión a internet pasa por un servidor Proxy, deberá configurar la aplicación para que se le permita el acceso. Para comprobar estos datos, es posible abrir el navegador y comprobar cómo esta configurado:

  • IExplorer: Opción de menú "Herramientas/Opciones de internet", seleccione la pestaña llamada "Conexiones" y haga clic sobre el botón llamado "Configuración de LAN". Se abrirá una ventana en la que se informa del tipo de conexión que existe. Este mecanismo estará habilitado si aparece marcada la opción "Usar un servidor proxy para LAN ...".
  • Firefox: Opción de menú "Editar", aparecerá la opción "Preferencias". Haga click sobre la pestaña llamada "Avanzado" y seguidamente seleccione la pestaña "Red". Finalmente, haga click sobre el botón "Configuración". Se abrirá una nueva ventana donde aparecerá una opción llamada "Configuración manual de proxy".

Uso del DNI electrónico con eCoFirma

La aplicación eCoFirma es una aplicación diseñada para permitir generar firmas empleando los certificados electrónicos que estén contenidos en alguno de los repositorios de certificados compatibles, que pueden ser:

  • El repositorio de certificados de IExplorer.
  • El repositorio de certificados de Firefox.
  • El llavero de Mac.
  • El almacén propietario.

Para dotar de acceso al repositorio escogido, es requisito disponer de:

Para poder validar su DNIe, puede utilizar la herramienta de test disponible en https://oficinavirtual.mityc.es/ecotest/runtest.aspx, o utilizar las máquinas disponibles en las comisarías para tal efecto. Algunos de los servicios que requieren el uso del DNIe los podrá encontrar listados en la siguiente dirección: http://www.dnie.es/servicios_disponibles/index.html.

Puede encontrar más información sobre su DNI electrónico, y las nuevas funciones que incorpora en la dirección www.dnielectronico.es.


Qué es un sello de tiempo y como configurar su uso

Un sello de tiempo es una firma electrónica emitida por una entidad oficial. En dicho sello, la entidad emplea su certificado digital para firmar los datos a sellar junto a la fecha y hora tomadas de un servidor de tiempo indubitado (por ejemplo, empleando el reloj de la armada española).

Este servicio de sellado suele estar publicado bajo una dirección web a la cual, un eventual usuario, remitirá los datos a sellar para obtener el sello de la entidad como respuesta, y demostrar consecuentemente que los datos ya existían en el momento en el que tuvo lugar el proceso. Dicho de otro modo, si en una firma electrónica aparece un sello de tiempo, existe una garantía sobre "antes de cuándo" se realizó dicha firma.

En cambio, con el tipo de firma básico XAdES-BES, el tiempo de validez de la firma queda acotado al tiempo de vida del certificado, ya que no se puede asegurar que la firma no se haya realizado con un certificado caducado.

Un sello de tiempo reconocido debe cumplir una serie de requisitos de forma que el sello proporcionado ofrezca las suficientes garantías. Por ello, los servicios de TSA reconocidos no suelen ser servicios gratuitos.

Puede configurar el servidor de TSA en eCoFirma en la opción de menú "Configuración/Firma".

Puede obtener más información en el siguiente enlace: http://www.sinadura.net/wik/-/wiki/sinadura/TSAServers.


Windows.- Asociar la extensión XSIG con eCoFirma y mostrar item en el menú contextual

Si desea que su sistema operativo Windows ejecute con eCoFirma los ficheros cuya extensión sea XSIG, de forma que se pueda lanzar la validación de una firma directamente haciendo doble clic sobre el fichero, puede:

  • Asociar la extensión desde el instalador JNLP. Para ello haga clic sobre el botón "Aceptar" cuando aparezca el díalogo de confirmación.
  • Utilizar la opción de menú "Configuración/Asociar extensión Alt+L".

Si realiza clic con el botón secundario del ratón sobre un fichero con extensión XSIG, se mostrará una opción llamada "eCoFirma- Validar fichero de firma".


Dónde descargar los componentes de firma Java en los que se basa eCoFirma

Los componentes de firma que emplea eCoFirma están basados en el estándar de firma XAdES ( http://uri.etsi.org/01903/v1.3.2/). Puede acceder a los repositorios de código, ejemplos de uso y demás documentación en la dirección http://oficinavirtual.mityc.es/componentes/.

Los componentes están escritos en lenguaje Java para posibilitar su ejecución independientemente de la plataforma donde se encuentren, y se publican gratuitamente bajo licencia LGPL (http://www.es.gnu.org/modules/content/index.php?id=9).

Como decimos, los componentes de firma permiten realizar firmas XAdES 1.1.1, 1.2.2 y 1.3.2 en formato enveloped, enveloping o dettached. Permite el uso de cualquier certificado electrónico que se ajuste al estándar X509 V3, permite accesos mediante CSP de navegadores tales como IExplorer, Mozilla Firefox, llaveros en Mac e incluye un almacén de certificados propietario. Realiza firmas electrónicas mediante el algoritmo RSAwithSHA1. Permite el uso de algoritmos de Digest SHA1 ó SHA256, entre otros.

Concretamente, puede descargar el código fuente o las librerías compiladas en la dirección http://oficinavirtual.mityc.es/componentes/downloads.html.

Puede acceder al API de la librería XADES (librería principal) en la dirección http://oficinavirtual.mityc.es/componentes/MITyCLibXADES/apidocs/index.html.

Puede visualizar ejemplos de uso en la ruta http://oficinavirtual.mityc.es/componentes/MITyCLibXADES/integrator-guide/sign-formats.html.


Firma de documentos grandes y ampliacíon de la memoria asignada a Java

Dada la naturaleza de las firmas XAdES envolventes existe un límite superior en el tamaño que la herramienta es capaz de firmar, ya que la construcción del XML que contiene la firma incluye una copia en Base64 de los datos, y por lo tanto, durante el levantamiento del DOM se consume una gran cantidad de recursos de memoria.

Para evitar este problema, es posible amplíar la memoria disponible para la máquina virtual de Java. Puede observar un ejemplo claro aqui. También es posible configurar los componentes de firma para que realicen firmas "dettached", que no presentan esta limitación ya que la firma y los datos estan separados.