Firma digital estandarizada de la UE para datos de formulario

4

Problema

Estoy intentando identificar si existen estándares (aceptados por la UE) con respecto a la firma digital del formulario del cliente antes de que se envíe.

Así que las restricciones son:

  • saber estándar
  • aceptado por la UE
  • del lado del cliente (necesitamos prueba de origen, no a prueba de falsificaciones)
  • basado en javascript y / o en el complemento del navegador (cualquier idioma)
  • puede trabajar con contenido relacionado con formularios web (k / v pares de datos)
  • la salida del proceso debe ser legible por máquina (ej .: form-urlenc, JSON, bson, msgpack)
  • el formato de salida no debería tener problemas de ambigüedad (lo que significa que no es un XML sangriento *, tal vez tampoco forme urlenc)

Mi lectura sobre el tema hasta ahora

XMLDSIG es malo, ya que XML puede ser canonicalizado de mil maneras diferentes haciendo que la firma no sea válida o, peor aún, un XSD o XSLT adjunto (o incluso CSS) puede alterar la representación visible (dependiendo de la herramienta de visualización) del contenido de datos, lo que significa que puede alterar su significado exponiendo a los usuarios a posibles estafas.

PAdES ya se está utilizando en nuestra administración pública y el alcance de nuestro proyecto puede cubrir la necesidad de crear archivos PDF con formularios integrados y firma digital.

PGP / GPG o S / MIME podría ser un candidato válido para el papel, pero identifíquese si están oficialmente reconocidos o estandarizados por las leyes de la UE. Por otro lado, ambos llevan sus firmas adjuntas a los datos.

Fondo:

Estoy investigando para un proyecto gubernamental (en Rumania) que intenta implementar firmas digitales en formularios web simples.

Sé que Estonia, Bélgica, Francia y Alemania ya cuentan con sistemas similares para tarjetas de identidad electrónicas y firmas digitales de documentos de hardware, así como algunos marcos / herramientas que utilizan (por ejemplo, hwcrypto.js).

Pero me gustaría entender su proceso completo, por ejemplo, ¿firman digitalmente documentos completos o solo algunos datos sin procesar en un formato legible por máquina (como se describe anteriormente)?

¿Requieren tarjetas de identificación electrónica o pueden usarse con un archivo de certificado que tenga en el disco?

    
pregunta Mihai Stancu 12.10.2016 - 21:38
fuente

2 respuestas

3

La firma digital en la UE se rige por REGULACIÓN No 910/2014 sobre identificación electrónica y servicios de confianza . Es directamente aplicable en todos los territorios sin transposición

No encontrará ninguna referencia a estándares sobre formato o tecnología, pero el cumplimiento requerirá:

  • Certificados digitales X509 emitidos por un proveedor de servicios de confianza calificado. Debe estar presente en lista de confianza de la UE (TSL)
  • Formato XAdES, CAdES, PAdES o ASiCs para la interoperabilidad entre administraciones públicas

Certificados digitales en el navegador

Los certificados se emiten a los usuarios en archivos de software o tokens criptográficos (tarjeta de identificación). Este es el mayor obstáculo. Debido a las restricciones de Java en los navegadores, no puede usar el Key Store nativo del SO (marque this y this )

Hay algunas alternativas

  • Use WebCryptographyApi para cargar el certificado. Consulte enlace

  • Usa la API de mensajería de Chrome (Estonia). Consulte enlace

  • Use una aplicación local conectada a través de javascript (España) Consulte enlace

Formato AdES

Este no es un requisito derivado de la regulación 910/2014, pero el uso de eGoverment tiene una legislación adicional para la interoperabilidad. Esto no es obligatorio en las empresas privadas

ETSI XAdES, CAdES y PAdES no son adecuados para entornos web. Las bibliotecas conocidas como forge o pkijs no son compatibles eso. XAdES se basa en XMLDsig (lo has definido ...) y CAdES / PAdES utiliza codificación binaria ASN.1.

Desafortunadamente, JWS (JsonWebSignature) aún no tiene un estándar AdES de ETSI.

En la web & los dispositivos móviles utilizan una técnica llamada 'firma de tres pasos' para evitar mover las bibliotecas de firmas digitales complejas al dispositivo.

  1. Prepare el hash para iniciar sesión en el servidor utilizando el certificado público del usuario y los datos para firmar (un documento o los datos del formulario)

  2. Señal de hash en el lado del cliente

  3. Complete el formato de firma en el servidor

Solo el segundo paso se realiza en el lado del cliente. El SD-DSS marco europeo (opensource) proporciona a las administraciones un marco completo de firmas digitales, incluido el soporte a TSL, firma y verificación

    
respondido por el pedrofb 13.10.2016 - 08:43
fuente
0

Puedes realizar:

  • Firma y verificación S / MIME,
  • firma y verificación de PDF,

En Javascript usando PKIjs, aquí es un ejemplo de S / MIME.

Puede hacer firmas XAdES en Javascript usando XAdESjs .

El problema más importante es acceder a una tarjeta inteligente desde el navegador, hoy en día la única forma en que se puede hacer prácticamente es a través de un complemento como el proporcionado por el proyecto de identificación nacional de Estonia. que en una interfaz de estilo WebCrypto para usar las bibliotecas anteriores.

    
respondido por el Ryan Hurst 02.02.2017 - 05:35
fuente

Lea otras preguntas en las etiquetas