Etiqueta: asp.net

Plugtest de XAdES – Firmas electrónicas avanzadas para documentos en formato XML

26 mar 2012

Como anunciábamos en el post de PAdES, el ETSI (Instituto Europeo para la Normalización de las Telecomunicaciones – European Telecommunications Standards Institute) ha organizado un nuevo evento “Plugtest” para firmas con formato XAdES (firma avanzada para ficheros XML) el cual está en activo desde el 14 de Marzo y finalizará el 28 de este mismo mes.

Este evento tiene como objetivo la validacióna distancia según los test propuestos por ETSI en las firmas XAdEs ( TS 101 903) y el perfil de referencia XAdES (TS 103 171).
Estas pruebas proveerán una cobertura completa de las dos especificaciones citadas incluyendo la prueba de la evolución de las firmas, simulando situaciones reales.

El evento “Plugtest” permitirá a los participantes realizar 4 tipos de tests (interoperabilidad y conformidad):

  • Tests de generación y verficación cruzada (positivo)
  • Tests de solo verificación (negativo)
  • Tests de actualización de firma.
  • Test de conformidad en el perfil de referencia de firma en XAdES.


Plugtest XAdES

El propósito del evento es:

  • Permitir a los participantes asegurar el nivel de interoperabilidad de XAdES.
  • Identificar temas adicionales que deberían tenerse en cuenta en futuras actividades de estandarización de XAdES.
  • Mejorar la calidad de las especificaciones XAdES.
  • Facilitar la introducción de las firmas XAdES, proveyendo los medios para solucionar los problemas de interoperabilidad antes del lanzar el despliegue…

Se puede obtener mayor información del evento en el portal de plugtests para firma electrónica:  http://xades-portal.etsi.org/pub/index.shtml

Al igual que en nuestra web, podemos dar una pequeña descripción de los perfiles según el nivel de protección ofrecido. Cada perfil incluye y extiende al previo:

  • XAdES-BES, forma básica que simplemente cumple los requisitos legales de la Directiva para firma electrónica avanzada.
  • XAdES-EPES, forma básica a la que se la ha añadido información sobre la política de firma.
  • XAdES-T (timestamp), añade un campo de sellado de tiempo para proteger contra el repudio.
  • XAdES-C (complete), añade referencias a datos de verificación (certificados y listas de revocación) a los documentos firmados para permitir verificación y validación off-line en el futuro (pero no almacena los datos en sí mismos).
  • XAdES-X (extended), añade sellos de tiempo a las referencias introducidas por XAdES-C para evitar que pueda verse comprometida en el futuro una cadena de certificados.
  • XAdES-X-L (extended long-term), añade los propios certificados y listas de revocación a los documentos firmados para permitir la verificación en el futuro incluso si las fuentes originales (de consulta de certificados o de las listas de revocación) no estuvieran ya disponibles.
  • XAdES-A (archivado), añade la posibilidad de timestamping periódico (por ej. cada año) de documentos archivados para prevenir que puedan ser comprometidos debido a la debilidad de la firma durante un periodo largo de almacenamiento.

Para aquel que esté interesado, hay disponible una serie de kit’s de integración de descarga gratuita para java, .NET y php en nuestro portal para desarrolladores  developers.viafirma.com para firmar electrónicamente en formato XAdES.

PAdES – Firmas electrónicas avanzadas para documentos en formato PDF

14 mar 2012

El pasado mes de Noviembre, Viafirma participó en el PAdES Remote plugtest Event organizado por el Instituto Europeo de Estándares de Telecomunicaciones (ETSI). Estos eventos son realizados de forma remota y tienen como objetivo la realización de pruebas de interoperabilidad e interpretación del estándar definido por ETSI para las firmas electrónicas avanzadas como XAdES,  CAdES, PAdES y ASIC.

La norma define una serie de perfiles para PAdES – firmas electrónicas avanzadas para documentos en formato PDF que cumplan con los requisitos que la Directiva Europea establece para un marco comunitario de firma electrónica (Directiva 1999/93/CE).

En concreto, los test fueron llevado a cabo sobre el estándar PAdES (ETSI TS 102 778 – PDF Advanced Electronic Signature) que permite firmar electrónicamente documentos en formato PDF.

Definiremos brevemente los perfiles definidos por PAdES (ETSI TS 102 778):

  • PAdES Basic – Profile based on ISO 32000-1. Perfil básico qie cumple con los requisitos especificados en la norma ISO 32000-1.
  • PAdES Enhanced – PAdES-BES profile. Este perfil especifica una firma PDF avanzada basada en CAdES-bes e incorpora opción de incluir en la firma un sello de tiempo (CADES-T).
  • PAdES Enhanced – PAdES-EPES profile. Este perfil especifica una firma PDF avanzada basada en CAdES-EPES. Este perfil es el PAdES-BES Profile añadiendole un identificador de política de firma y, opcionalmente, una referencia al tipo de compromiso adquirido.
  • Long Term – PAdES-LTV Profile. Es el formato de firma longeva. Este perfil permite prorrogar por tiempo indefinido la validez de las firmas en formato PDF. Puede ser usado en conjunción con el PAdES-CMS, PAdES-BES o perfiles PADES-EPES. Este perfil es utilizado para garantizar la validación tras muchos años después de la realización de la firma. Es decir, garantiza la validación a largo plazo.

En nuestro portal para desarrolladores developers.viafirma.com tenéis disponibles para su descarga  kit’s de integración para java y .NET con métodos para firmar electrónicamente en formato PAdES. Próximamente también estará disponible en PHP.

Hoy comienza el XAdES 2012 Plugtests en el que también participamos y que tiene como objetivo llevar a cabo casos de prueba para el estándar XAdES (TS 101 903), incluyendo el XAdES (TS 103 171).

Os mantendremos informados sobre nuestros avances ;)

Pruebas estrés sobre la plataforma Viafirma

14 ene 2009

Para comprobar el rendimiento de nuestra plataforma de firma, hemos realizado una serie de pruebas de estrés sobre el API Web Service de Viafirma. El objetivo de estas pruebas ha sido obtener métricas de comportamiento y limites de carga para los diferentes servicios ofrecidos, para determinar el rango de operaciones en los que el servicio es estable.

Para las pruebas se han realizado firmas en servidor XAdES de ficheros xml de 20k, utilizando como sistema de custodia ficheros y firmando con un certificado de Firma Profesional en software.

Se han realizado en dos tipos de entornos, el primero bastante precario en recursos y el segundo un entorno de producción real. En ambos casos pudimos comprobar que el comportamiento de Viafirma, ante un gran numero de peticiones fue más que aceptable.

Rendimiento de Viafirma con los requisitos Mínimos de Hardware

El entorno donde se realizaron las pruebas  es un portátil con un procesador Turion a 2 GHz y 2 gigas de RAM, con el servidor de aplicaciones  configurado para permitir 200 hilos concurrentes y con un máximo de 512 MB asignados.

Las pruebas se realizaron configurando un grupo de hilos simulando 100 peticiones por segundo en un bucle infinito.

A continuación se muestran los resultados obtenidos en la misma máquina y misma configuración en un entorno Windows y en un entorno Linux.

Pruebas sobre Windows XP SP 3 en JRE 6.0.11 de Sun

Prueba sobre Windows XP

Como se observa en la gráfica, Viafirma mantuvo la cantidad constantes de 1.200 peticiones por minuto con una media de cerca de 5 segundos desde la entrada de la petición hasta su resolución y respuesta.  Mientras se realizaros las pruebas, Jconsole marcó en todo momento un consumo de memoria estable.

Pruebas sobre Ubuntu 8.10 en JRE 6.0.10 de Sun

Prueba sobre Ubuntu

Repetimos las pruebas en un entorno Unix, y observando que el rendimiento es algo mayor. Respondiendo una media de 2.100 peticiones por minuto.

Rendimiento de Viafirma con la configuración de Hardware recomendada

Después de haber hecho estas pruebas “de andar por casa”, hemos repetido la misma batería de pruebas sobre un entorno de producción, un  Ubuntu Server con 8 nucleos, 6 Gb de memoria y una configuración optimizada de la JVM 6.

Rendimiento firma digital con viafirma

Como podemos observar,  el comportamiento es excelente, alcanzando casi más de 7.500 firmas por minuto, manteniéndose totalmente estable la JVM y con el procesador nunca superando el 50% ( debido a los tiempos de espera impuestos por la red).

Firmando digitalmente en Windows 7

08 ene 2009

Estos últimos días hemos estado realizando pruebas para comprobar el comportamiento de Viafirma en el nuevo sistema operativo de Microsoft, y los resultados no han podido ser mejores, el sistema se comporta perfectamente en Internet Explorer 8 sobre el nuevo Windows 7!!!.

Os dejo algunas capturas de pantalla:

  • En caso de que el usuario no tenga instalado Java en su sistema, la detección de componentes inicial corrige esta situación e instala automáticamente la JRE.

Detección de componentes para firma Digital con Viafirma en Windows 7

  • El componente de firma busca los certificados instalados en el sistema, detecta  los certificados presentes (en este caso un certificado de la FNMT) y nos permite realizar sin problemas la firma digital del documento.

Buscando certificados digitales instalados en el sistemaCertificado digital de la fnmt encontrado con Viafirma y firmando

C# / ASP.NET : Firma digital y autenticación con Viafirma (II)

29 nov 2008

En este artículo muestran los pásos a seguir para utilizar los servicios de firma digital ( XAdes, Facturae, …), autenticación (FNMT, Firma Profesional, ANCERT, …) y verificación de validez de certificados ( OCSP, CRLs, …) desde aplicaciones ASP.NET gracias a Viafirma.

1- Añadir las dependencias necesarias

Es necesario que incorporemos al proyecto las siguientes dlls incluidas en el kit de desarrollo de Viafirma:  DotNetOpenId.dll, log4net.dll y ViafirmaClientDotNet.dll.

Añadir referencias para firma digital Añadir referencias para firma digital ( openid , viafirmaClient, log4net)

Por otro lado también necesitaremos añadir el  directorio “viafirma” y que contiene los ficheros:

  • Default.aspx: con los métodos que deben ser sobreescritos con el comportamiento específico a ejecutar cuando finalice el proceso de firma.
  • viafirmaStyle.css: con la apariencia que viafirma adoptara para el proceso de autenticación o firma. Este css puede ser adaptado a la identidad corporativa de la aplicación cliente.
  • xrds.aspx: necesario para el correcto funcionamiento de la comunicación OpenID.

2- Creamos una página de ejemplo desde la que realizar la firma

Creamos una primera página aspx en la que simplemente colocaremos un botón de acción asociado a un controlador de página que utilizará el API de Viafirma para firmar digitalmente un fichero de ejemplo con el certificado digital al usuario.

El código de la aplicación de ejemplo queda como el siguiente:

<%@ Page Language=”C#” Inherits=”AplicacionEjemploClienteViafirma.Default” %>
<html>
<body>
<h2>Ejemplo de integración Viafirma con .Net</h2>
<form id=”form1″ runat=”server”>
<p>Pruebe la autenticación</p>
<asp:button id=”firmarButton” runat=”server” text=”Firmar un documento de ejemplo con Viafirma” onClick=”FirmarButton_Click” />
</form>
</body>
</html>

3- Implementar el método  FirmarButton_Click

En este método simplemente indicaremos al cliente de viafirma cuál es la url pública de acceso a Viafirma, cuál es la url de acceso al servicio web de Viafirma, y registraremos un fichero para su firma.

public void FirmarButton_Click(object sender, EventArgs e){

    // Configuramos el cliente de viafirma ( En una aplicación real esto se realiza al iniciar la aplicación)
    ViafirmaClientFactory.Init("http://viafirma.viavansi.com/viafirma", http://viafirma.viavansi.com/viafirma);
    // Recuperamos / Generamos el contenido del documento a firmar. ( Como ejemplo generamos un txt ) 
    byte[] datos_a_firmar = System.Text.ASCIIEncoding.ASCII.GetBytes("Contenido del documento firmado");
    // Enviamos a firmar el documento
     ViafirmaClient clienteViafirma = ViafirmaClientFactory.GetInstance();
    // Registramos el documento que deseamos firmar. Obteniendo un identificador temporal.
    string idTemporalFirma = clienteViafirma.PrepareFirmaWithTypeFileAndFormatSign("FicheroEjemplo.txt", typeFile.txt, typeFormatSign.XADES_EPES_ENVELOPED, datos_a_firmar);
    System.Console.Write("idTemporalFirma: " + idTemporalFirma);
    // Iniciamos el proceso de firma redireccionando al usuario a Viafirma interactuando con el usuario..
    clienteViafirma.Sign(idTemporalFirma);
}

    

Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice Viafirma para que sea ésta la responsable de solicitar, validar, recuperar el certificado o DNI electrónico del usuario y firmar el documento digitalmente.  En este ejemplo se ha realizado la firma de un fichero de texto utilizando en formato XADES, pero de una forma muy similar se podría haber optado por realizar la firma de un pdf o de una factura electrónica.

Una vez que el proceso termine, Viafirma devolverá el control a la aplicación ASP.NET retornando todos los datos obtenidos del certificado, junto con el identificador de firma asociado al documento firmado.

Obtener los datos de respuesta

Una vez que Viafirma obtenga los datos del certificado de usuario invocará al método ProcessResponseSign, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos de la firma del objeto FirmaInfoViafirma.
En este ejemplo, si la firma ha sido correcta, redireccionamos al usuario a una página de destino.

override public void ProcessResponseSign(Viafirma.Estado estado,Viafirma.FirmaInfoViafirma firma){

    Viafirma.Log.Debug("Firma Viafirma realizada correctamente.");
    // Aquí ya tenemos todos los datos asociados al cliente y a su firma.    
    //redireccionamos al usuario a la p gina destino considerando el usuario ya ha finalizado la firma.
    if(Viafirma.Estado.OK== estado){
       Session["resultadoFirma"]= firma;
       Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/resultadoFirma.aspx"));
       HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    } else{
      // Hay problemas al firmar.
    }
}

A continuación se muestran algunas capturas de pantalla de la aplicación de ejemplo ASP.NET en acción:

Página inicial de la aplicación de ejemplo: ( contenida en el Kit de desarrollo de Viafirma)

Ejemplo de firma desde ASP.NET 1

La aplicación ASP.NET interactuando con Viafirma para realizar la firma.

Ejemplo de firma desde ASP.NET 2

La aplicación ASP.NET muestra algunos de los datos retornados tras el proceso de firma.

Ejemplo de firma desde ASP.NET 3 retornando los resultados de la firma


C# / ASP.NET : Firma digital y autenticación con Viafirma (I)

24 nov 2008

Aunque Viafirma ofrece todos sus servicios mediante métodos estándar ( Servicios Web y OpenID), hemos desarrollado un cliente para .Net que permite de una forma muy sencilla integrar aplicaciones desarrolladas en esta tecnología con los servicios que ofrece Viafirma.

En este artículo mostraremos cómo añadir las dlls necesarias al proyecto y cómo hacer uso de los diferentes servicios de firma digital (XAdES, Facturae, PDF sign, etc… ), autenticación (FNMT, Camerfirma, Firma profesional, DNIe, etc…),  custodia (integridad, etc…)  y verificación (CRLS, OCSP, etc…).

1- Añadir las dependencias necesarias

Es necesario que incorporemos al proyecto las siguientes dlls incluidas en el kit de desarrollo de Viafirma:  DotNetOpenId.dll, log4net.dll y ViafirmaClientDotNet.dll.

Por otro lado también necesitaremos añadir el  directorio “viafirma” y que contiene los ficheros:

  • Default.aspx: con los métodos que se ejecután cuando el proceso de autenticación o firma finalice.
  • viafirmaStyle.css: con la apariencia que viafirma adoptara para el proceso de autenticación o firma.
  • xrds.aspx: necesario para el correcto funcionamiento de la comunicación OpenID.

2- Creamos la página de acceso a la autenticación.

Creamos una primera página aspx en la que simplemente colocaremos un botón de acción asociado a un controlador de página que utilizará el API de Viafirma para autenticar con certificado digital al usuario..

El código de la aplicación de ejemplo queda como el siguiente:

<%@ Page Language="C#" Inherits="AplicacionEjemploClienteViafirma.Default" %>
<html>
<body>
<h2>Ejemplo de integración Viafirma con .Net</h2>
<form id="form1" runat="server">
<p>Pruebe la autenticación</p>
<asp:button id="autenticarButton" runat="server" text="Autenticar al usuario con certificado o dnie" onClick="autenticarButton_Click" />
</form>
</body>
</html>

3- Implementar el evento  autenticarButton_Click

En este método simplemente indicaremos al cliente de viafirma cuál es la url pública de acceso a Viafirma y cuál es la url de acceso al servicio web de Viafirma.

public void autenticarButton_Click(object sender,EventArgs e){
    // Configuramos el cliente de viafirma ( En una aplicación real esto se realiza al iniciar la aplicación)
    ViafirmaClientFactory.Init("http://pruebas.viavansi.com/viafirma","http://pruebas.viavansi.com/viafirma");
    // Obtenemos una instancia del cliente e iniciamos la autenticación
   ViafirmaClient clienteViafirma=ViafirmaClientFactory.GetInstance();
   clienteViafirma.Autenticate();
}

Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice Viafirma para que sea ésta la responsable de solicitar, validar y recuperar el certificado o DNI electrónico del usuario. Una vez que el proceso termine, Viafirma devolverá el control a la aplicación ASP.NET retornando todos los datos obtenidos del certificado.

Obtener los datos de respuesta

Una vez que Viafirma obtenga los datos del certificado de usuario invocara al método ProcessResponseAutenticacion, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos del certificado del objeto UsuarioGenericoViafirma.
En este ejemplo si la autenticación ha sido correcta redireccionamos al usuario a una página de destino.

override public void ProcessResponseAutenticaction(Viafirma.Estado estado,Viafirma.UsuarioGenericoViafirma usuario){
    Viafirma.Log.Debug("Autenticación Viafirma realizada correctamente. Resultado:"+ estado);
    // Aquí ya tenemos todos los datos asociados al cliente. y redireccionar al usuario a la página destino
    // considerando el usuario ya autenticado.
    if(Viafirma.Estado.OK== estado){
        Session["resultadoAutenticacion"]= usuario;
        Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/resultadoAutenticacion.aspx"));
        HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    }else{
        // Hay problemas al validar.
    }
}

Próximamane: C# / ASP.NET : Firma digital y autenticación con Viafirma (II)