Archivo de la categoría: Normalización

FprEN 16931-1 Facturación electrónica – Parte 1: Modelo de datos semántico de los elementos básicos de una factura electrónica


e-invoicingYa está disponible en las tiendas on-line de estándares el borrador de la norma FprEN 16931-1 Electronic invoicing – Part 1: Semantic data model of the core elements of an electronic invoice

Esta Norma Europea establece un modelo de datos semántico de los elementos centrales de una factura electrónica. El modelo semántico incluye sólo los elementos esenciales de información que una factura electrónica necesita para garantizar el cumplimiento legal (incluido el fiscal) y permitir la interoperabilidad para el comercio transfronterizo, transversal y para el comercio interior.

El modelo semántico puede ser utilizado por las organizaciones de los sectores público y privado para la facturación en un contexto de contratación pública.

También puede utilizarse para la facturación entre empresas del sector privado. Esta norma europea cumple al menos los siguientes criterios:

  • es tecnológicamente neutra;
  • es compatible con las normas internacionales de aplicación en materia de facturación electrónica;
  • tiene en cuenta las necesidades de protección de datos de carácter personal de conformidad con la Directiva 95/46 / CE, un enfoque de «protección de datos por diseño» y los principios de proporcionalidad, minimización de datos y limitación de objetivos; es compatible con las disposiciones de aplicación de la Directiva 2006/112 / CE;
  • permite el establecimiento de sistemas de facturación electrónica prácticos, fáciles de utilizar, flexibles y rentables;
  • tiene en cuenta las necesidades especiales de las pequeñas y medianas empresas, así como de los poderes adjudicadores subcentrales y las entidades adjudicadoras del sector público;
  • es apto para ser utilizado en transacciones comerciales entre empresas

Sin embargo, no recoge el elemento semántico que permita indicar el mecanismo de autenticidad e integridad previsto en la Directiva 2010/45/UE del Consejo, de 13 de julio de 2010, por la que se modifica la Directiva 2006/112/CE relativa al sistema común del Impuesto sobre el Valor Añadido, en lo que respecta a las normas de facturación.

OJO. No confundir esta norma con la ISO 19631 (2009) Animal and vegetable fats and oils. Determination of polymerized triacylglycerols by high-performance size- exclusion chromatography (HPSEC)

En español UNE-EN ISO 16931:2010 Aceites y grasas de origen animal y vegetal. Determinación de triacilgliceroles polimerizados mediante cromatografía de exclusión de tamaño de alta resolución (HPSEC). (ISO 16931:2009)

PSD2, Thrid Party Payment Service Providers, directiva antiblanqueo y #eIdAS


El 23 de diciembre de 2015, se publicó en el Diario Oficial de la Unión Europea la nueva Directiva UE 2015/2366  de 25 de noviembre de 2015 sobre servicios de pago en el mercado interior (PSD2, por sus siglas en inglés), tras el acuerdo alcanzado con el Parlamento Europeo en los trílogos  en mayo de 2015. La PSD2 conlleva cambios fundamentales en la industria de pagos al dar a los proveedores de servicios de pago terceros (TPP, por las siglas en inglés de Thrid Party Payment Service Providers) acceso a la infraestructura de los bancos.

Según la PSD2, los TPP (proveedores de servicios de pago terceros, básicamente, servicios iniciadores de pagos «payment initiation services PIS» y agregadores de información «account information services – AIS«). ), deberán tener acceso a las cuentas de clientes bancarios a través de mecanismos de programación (APIS y Servicios Web), lo que les permitirá ofrecer sus servicios como extensiones de la funcionalidad que ofrecen las propias entidades financieras, haciendo uso de la infraestructura de los bancos, a petición de sus clientes que sean también clientes de estos bancos.

Todavía están pendiente de clarificación  aspectos de la relación entre los bancos y los TPP, pues el texto determina explícitamente que no se requerirá un contrato entre las partes, pero los bancos deberán proporcionar el acceso a terceros sin discriminación, una vez autorizados por el cliente. Por tanto, los TPP se beneficiarían de la infraestructura de pagos de los bancos sin contraprestaciones, al tiempo que ofrecen servicios que mejoran la oferta que los clientes reciben de sus entidades. El resultado puede suponer una simbiosis en algunos casos, pero las entidades temen que se trate más frecuentemente de un actividad parásita que saque provecho de la infraestructura que a ellas les suponen costes, sin contribuir a su sostenimiento.

Ya están surgiendo las primeras soluciones técnicas del sector a través de las API (Interfaz de Programación de Aplicaciones), aunque no hay unos estándares fijos que garanticen la interoperabilidad.

La Autoridad Bancaria Europea (ABE, EBA por sus siglas en inglés: European Banking Authority) se ha comprometido a proporcionar directrices y establecer estándares técnicos relacionados con la autorización de entidades de pago, protocolos de seguridad y comunicación entre las partes, así como relaciones empresariales y cuestiones de responsabilidad.

Para septiembre de 2018, la ABE actualizará las guías que ha publicado recientemente sobre la seguridad de los pagos en Internet (guías que se desarrollaron antes de la PSD2 y que se aplican a partir del 1 de agosto de 2015), ampliando su alcance a las nuevas entidades y cubriendo los nuevos requerimientos de la PSD2.

La autorización como entidad de pagos, otorgada por las autoridades competentes del estado miembro de origen, permitirá la provisión de servicios de pago en toda la Unión Europea, en virtud del «Pasaporte Comunitario«.

En lo que respecta a la supervisión, en la práctica las entidades de pago están sujetas a la supervisión  tanto de las autoridades competentes del país de origen como las del país en el que pretende prestar servicios, pues la directiva permite a estas últimas exigir informes periódicos sobre las actividades llevadas a cabo en su territorio.

En caso de incumplimiento normativo, será responsabilidad de los organismos supervisores del país de origen la adopción de las medidas apropiadas, incluidas las sancionadoras, aunque también los del país de prestación de servicios  pueden adoptar medidas cautelares en situaciones perentorias.

Dado el régimen de cooperación entre los organismos de supervisión nacionales, el correcto funcionamiento del mercado único para los pagos electrónicos dependerá de cómo se desarrolle esa cooperación. Las directrices y estándares de la ABE jugarán un papel fundamental a este respecto.

En España, el Banco de España y el Ministerio de Economía no acaban de ponerse de acuerdo sobre la forma de gestionar la adopción de directrices que en bastante casos tendrán carácter técnico.

Lo que sí parece que está fuera de toda duda, es que los servicios de gestión de identidades y los conexos Servicios Electrónicos de Confianza definidos en el Reglamento UE 910/2014 (EIDAS) serán de importancia capital en el marco de los servicios Thrid Party Payment Service Providers, tal como evidencia un documento de trabajo publicado el 8 de diciembre de 2015 por la EBA, sobre los futuros desarrollos técnicos previstos en la PSD2, en relación con la autenticación fuerte de clientes («Discussion Paper on future Draft Regulatory Technical Standards on strong customer authentication and secure communication under the revised Payment Services Directive -PSD2-«).

La necesidad de autenticación fuerte de clientes que resuelve EIDAS también queda patente en la Directiva UE 2015/849 de 20 de mayo de 2015 relativa a la prevención de la utilización del sistema financiero para el blanqueo de capitales o la financiación del terrorismo publicada el 5 de junio del 2015 en el Diario Oficial de la Unión Europea.

De momento los desarrollos sobre sistemas de identificación mediante videoconferencia han quedado expéditos para el sector financiero por la Autorización de procedimientos de identificación no presencial mediante videoconferencia del SEPBLAC, que como servicios proporcionados por terceros caen directamente en la categoría de los sistemas sometidos a la supervisión de la SESIAD (Secretaria de Estado de Sociedad de la Información y Agenda Digital) del MINETAD (Ministerio de Energía, Turismo y Agenda Digital).

La esperada publicación de una nueva Ley que derogue la Ley 59/2003 sobre firma electrónica contemplará la normativa nacional sobre sistemas de identificación mediante videoconferencia y otros que el Reglamento UE 910/2014 menciona en su artículo 24.

En efecto, en este artículo se indica que «Al expedir un certificado cualificado para un servicio de confianza, un prestador cualificado de servicios de confianza verificará, por los medios apropiados y de acuerdo con el Derecho nacional, la identidad y, si procede, cualquier atributo específico de la persona física o jurídica a la que se expide un certificado cualificado.

Y entre las formas de verificar la identidad, se admite que esta verificación puede hacerse utilizando otros métodos de identificación reconocidos a escala nacional que aporten una seguridad equivalente en términos de fiabilidad a la presencia física. La seguridad equivalente será confirmada por un organismo de evaluación de la conformidad.

Algunos de los aspectos que podría cubrir la nueva Ley de Servicios de Confianza Digital (si se confirma un mayor uso del término «digital» en detrimento del término «electrónico«) se dejan entrever en la reciente consulta realizada por el MINETAD, y reflejados en este documento: Ley de servicios de confianza digital

Aplicabilidad del Reglamento Europeo UE 910/2014 (EIdAS)


A diferencia de la Directiva 93/1999 /CEE del Consejo, el Reglamento (UE)  nº 910/2014 del Parlamento Europeo y del Consejo, de 23 de julio de 2014, relativo a la identificación electrónica y los servicios de confianza para las transacciones electrónicas en el mercado interior y por la que se deroga la Directiva 1999/93/CE (denominado reglamento eIDAS por las iniciales de Electronic Identificatiom Authentication and Signature) que entró en vigor el 17 de septiembre de 2014, tendrá un impacto directo y, en algunos casos,  supondrá la derogación de las leyes nacionales vigentes en los Estados miembros.

El Reglamento se aplicará gradualmente en los próximos meses con plazos de entrada en vigor escalonados que concluirán el 01 de julio 2016, con la derogación de la Directiva 93/1999 / CEE.

Desde su entrada en vigor el 17 de septiembre de 2014, ya son de aplicación las disposiciones contenidas en los artículos 9.5, 17.8, 19.4, 20.4, 21.4, 24.5, 27.4, 28.6, 29.2, 30.3, 30.4, 31.3, 32.3, 33.2, 34.2, 37.4, 38.6, 42.2, 44.2, 45.2, 47 y 48. El resto de las disposiciones, a excepción de los artículos 7, 8.1, 8.2, 9, 10, 11 y 12.1, que se aplicará a partir del 18 septiembre de 2015, deben ser implementadas a partir del 1 de julio de 2016. Sólo el  artículo 6 se aplicará a partir del 18 de septiembre 2018.

Desde 01 de julio de 2016 en adelante:

  • Los Dispositivos de Creación de Firma (denominados antes Dispositivos Seguros de Creación de Firma y ahora Dispositivos Cualificados de Creación de Firma) que tuvieran la consideración de tales según  el artículo 3.4  de la Directiva 93/1999 /CEE,  mantendrán su reconocimiento tras la nueva norma (Reglamento eIdAS).
  • Los certificados reconocidos expedidos a personas físicas de acuerdo con la Directiva 93/1999 /CEE se consideran hasta su vencimiento certificados cualificados de acuerdo con la nueva norma (Reglamento eIdAS).
  • Para ser considerados prestadores de servicios de confianza digital cualificados de acuerdo con el Reglamento eIDAS, los Prestadores de Servicios de Certificación que emitían  ​​certificados reconocidos de acuerdo con la Directiva 93/1999 / CEE deben presentar a partir del 01 de julio de 2017 un informe de evaluación sobre el cumplimiento de la normativa técnica y organizativa aplicable al órgano de supervisión (Minetur, en el caso de España).

La aplicación del Reglamento eIdAS, implica la puesta en marcha de 7 actos de ejecución que deben adoptarse en un  año:

  • 3 actos de ejecución relativos a la identificación y autenticación digital (eID)
  • 4 actos de ejecución en materia de servicios de confianza digital
    • Formatos de firma electrónica (artículo 27.4)
    • Formatos de sellos electrónicos (artículo 37.4)
    • Listas de confianza (artículo 22.5)
    • Marca de confianza de la UE (artículo 23.3)

En los más de 16 años de vigencia de la Directiva 93/1999 /CEE del Consejo, cada Estado miembro la ha desarrollado en su legislación nacional adoptando, en algunos casos normas técnicas de organismos como ETSI y CEN. En España, entre otras normas la Ley 59/2003, con disposiciones sobre firmas electrónicas en la Ley 11/2007 y en la Ley 18/2011.

El impacto revolucionario del Reglamento, sin embargo, cambia todos los paradigmas existentes anteriormente, que pueden considerarse los causantes de la falta de interoperabilidad transnacional en el mercado único europeo. El nuevo modelo, destinado a facilitarla, todavía tiene que demostrar su utilidad en un contexto internacional en el que los mayores avances se han producido a partir de la adopción de incoativas de la industria a través del CAB Forum, solo para el ámbito de los certificados para servidores web, en un modelo como en norteamericano de escasa regulación.

Proyecto e-Ark, un arca para preservar archivos digitales y conocimiento


El Proyecto e-Ark (European Archival Records and Knowledge Preservation) es un proyecto multinacional de 6 Millones de euros y de 3 años de duración cofinanciado por la Comisión Europea en el marco de Programa de Soporte de Políticas TIC (ICT Policy Support Programme) y del programa de Competitividad e Innovación (Competitiveness and Innovation Framework Programme – CIP) y se extenderá desde el 1 de febrero de 2014 hasta el 31 de enero de 2017. En el proyecto participa el DLM Forum.

Los Archivos proporcionan un componente indispensable del ecosistema digital por salvaguardar la información y permitir el acceso a la misma. Se requiere la armonización de diferentes enfoques de archivo actualmente fragmentados para lograr economías de escala necesarias que permitan la adopción general de soluciones de extremo a extremo. Existe una necesidad crítica de establecer una metodología general para abordar retos operativos y de negocio y diseñar soluciones técnicas que permitan la captura, preservación y reutilización de documentos electrónicos.

En cooperación con los proveedores de sistemas comerciales, E-ARK creará y sostendrá en su fase piloto una metodología paneuropea para el archivado de documentos electrónicos, sintetizando las mejores prácticas nacionales e internacionales existentes, para mantener los registros y bases de datos auténticos y utilizables a lo largo del tiempo.

La metodología se aplicará en un piloto abierto en varios contextos nacionales, utilizando herramientas existentes o prototipos, y servicios desarrollados por los socios. Esto proporcionará a las instituciones encargadas de preservar la memoria documental y a sus usuarios (tanto del sector público como privado) una base para evaluar, en un contexto operacional, la idoneidad de esas tecnologías de última generación.

El Foro DLM también ayudará a extender los resultados del proyecto más allá de la fecha de terminación del proyecto en febrero de 2017. Utilizando el modelo de licencia abierta Apache, los proveedores comerciales podrán incorporar los resultados de los proyectos (en particular, las interfaces abiertas para pre-ingesta, ingesta, archivado, acceso y reutilización) en sus propios sistemas, mejorando su longevidad. Los organismos de archivos nacionales que ejecuten instancias piloto de E-ARK servirán como ejemplos para otros que quieren adoptar el nuevo sistema abierto de archivo electrónico.

 

REGLAMENTO DE EJECUCIÓN (UE) 2015/806 DE LA COMISIÓN de 22 de mayo de 2015 por el que se establecen especificaciones relativas a la forma de la etiqueta de confianza «UE» para servicios de confianza cualificados


Se acaba de publicar el REGLAMENTO DE EJECUCIÓN (UE) 2015/806 DE LA COMISIÓN de 22 de mayo de 2015 por el que se establecen especificaciones relativas a la forma de la etiqueta de confianza «UE» para servicios de confianza cualificados con arreglo al artículo 23, apartado 3, del Reglamento (UE) no 910/2014 del Parlamento Europeo y del Consejo relativo a la identificación electrónica y los servicios de confianza para las transacciones electrónicas en el mercado interior (Texto pertinente a efectos del EEE)

REGLAMENTO DE EJECUCIÓN (UE) 2015/806 DE LA COMISIÓN de 22 de mayo de 2015 por el que se establecen especificaciones relativas a la forma de la etiqueta de confianza «UE» para servicios de confianza cualificados

(Texto pertinente a efectos del EEE)

LA COMISIÓN EUROPEA,

Visto el Tratado de Funcionamiento de la Unión Europea,

Visto el Reglamento (UE) no 910/2014 del Parlamento Europeo y del Consejo, de 23 de julio de 2014, relativo a la identificación electrónica y los servicios de confianza para las transacciones electrónicas en el mercado interior y por la que se deroga la Directiva 1999/93/CE (1), y, en particular, su artículo 23, apartado 3,

Considerando lo siguiente:

(1)

El Reglamento (UE) no 910/2014 establece que los proveedores de servicios de confianza cualificados podrán utilizar una etiqueta de confianza para los servicios de confianza cualificados a fin de reforzar la confianza y la conveniencia para los usuarios. Esta etiqueta de confianza distingue claramente los servicios de confianza cualificados de los demás servicios de confianza, contribuyendo así a la transparencia en el mercado y fomentando por ende la confianza en los servicios en línea y la conveniencia de estos, aspectos esenciales para que los usuarios los aprovechen plenamente y confíen sin reservas en los servicios electrónicos.

(2)

La Comisión organizó un concurso para estudiantes de arte y diseño de los Estados miembros, a fin de recibir propuestas sobre un nuevo logotipo. Un jurado de expertos seleccionó las tres mejores propuestas sobre la base de los criterios especificados en el pliego de condiciones técnicas y de diseño de la «e-Mark U Trust Competition». Se celebró una consulta en línea entre el 14 de octubre y el 14 de noviembre de 2014. El logotipo propuesto, elegido por la mayoría de los visitantes del sitio web durante dicho período y respaldado por una decisión final del jurado, debe ser ahora adoptado como nueva etiqueta de confianza «UE» para servicios de confianza cualificados.

(3)

A fin de que el logotipo pueda utilizarse tan pronto como sea aplicable con arreglo a la legislación de la Unión y de garantizar el funcionamiento efectivo del mercado interior y la competencia leal y proteger los intereses de los consumidores, la nueva etiqueta de confianza «UE» para servicios de confianza cualificados ha sido registrada como marca colectiva en la Oficina de Propiedad Intelectual del Reino Unido, por lo que está en vigor, es utilizable y está protegida. El logotipo será registrado también en los registros de la Unión e internacionales.

(4)

Las medidas previstas en el presente Reglamento se ajustan al dictamen del Comité establecido por el artículo 48 del Reglamento (UE) no 910/2014.

HA ADOPTADO EL PRESENTE REGLAMENTO:

Artículo 1

La etiqueta de confianza «UE» para servicios de confianza cualificados será de la forma que se indica en los anexos I y II, sin perjuicio de lo dispuesto en el artículo 2.

Artículo 2

1.   Los colores de referencia de la etiqueta de confianza «UE» para servicios de confianza cualificados serán Pantone no 654 y no 116; o azul (100 % cian + 78 % magenta + 25 % amarillo + 9 % negro) y amarillo (19 % magenta + 95 % amarillo), en caso de utilizarse la cuatricromía; cuando se utilicen colores RGB, los colores de referencia serán azul (43 rojo + 67 verde + 117 azul) y amarillo (243 rojo + 202 verde + 18 azul).

2.   La etiqueta de confianza «UE» para servicios de confianza cualificados podrá utilizarse solo en blanco y negro, según se muestra en el anexo II, si no resulta práctico utilizar el color.

3.   Si la etiqueta de confianza «UE» para servicios de confianza cualificados se utiliza sobre fondo oscuro, podrá utilizarse en formato negativo empleando el mismo color de fondo, tal como se muestra en los anexos I y II.

4.   Si la etiqueta de confianza «UE» para servicios de confianza cualificados se utiliza en color sobre un fondo coloreado que dificulte su visualización, podrá utilizarse una línea de delimitación alrededor de dicha etiqueta a fin de mejorar el contraste con los colores del fondo.

Artículo 3

La etiqueta de confianza «UE» para servicios de confianza cualificados tendrá una dimensión mínima que garantice la conservación de los atributos visuales y formas clave, pero su tamaño no será inferior a 64 × 85 píxeles 150 dpi.

Artículo 4

La etiqueta de confianza «UE» para servicios de confianza cualificados se utilizará de una manera que permita reconocer claramente los servicios cualificados que corresponden a la etiqueta. La etiqueta de confianza podrá ir acompañada de elementos gráficos o textuales que indiquen claramente los servicios de confianza cualificados para los que se utiliza, a condición de que no modifiquen la naturaleza de la etiqueta de confianza «UE» para servicios de confianza cualificados ni alteren el vínculo con las listas de confianza aplicables a que se refiere el artículo 23, apartado 2, del Reglamento (UE) no 910/2014.

Artículo 5

El presente Reglamento entrará en vigor el vigésimo día siguiente al de su publicación en el Diario Oficial de la Unión Europea.

El presente Reglamento será obligatorio en todos sus elementos y directamente aplicable en cada Estado miembro.

Hecho en Bruselas, el 22 de mayo de 2015.

Por la Comisión

El Presidente

Jean-Claude JUNCKER


(1)  DO L 257 de 28.8.2014, p. 73.


ANEXO I

Etiqueta de confianza «UE» para servicios de confianza cualificados en color

confianza-ue-color

 


ANEXO II

Etiqueta de confianza «UE» para servicios de confianza cualificados en blanco y negro

confianza-ue-negro

 

Se publican más borradores de las normas de ETSI sobre firma electrónica


Los pasados 16, 17 y 19 de febrero se han añadido en el servidor de ETSI un nuevo lote de documentos «drafts» (borradores) relativos al esfuerzo de normalización de la firma electrónica bajo el Mandato M460, necesario también para aplicar el Reglamento UE 910/2014.

El mapa descriptivo del nuevo modelo de normalización se describe en tr_119000v003-rationalised_framework_document_COMPLETE-draft.pdf

Están  abiertos a comentarios por parte de los especialistas, con la vista puesta en su mejora antes de que se publiquen como definitivos. Para enviar comentarios se puede usar la siguiente plantilla: Template-for-comments.doc

16 de febrero de 2015

17 de febrero de 2015

19 de febrero de 2015

Servicios OCSP de FNMT abiertos y gratuitos


Casi dos años después de que se propusiera como medida de la Comisión para la Reforma de las Administraciones Públicas (CORA), el Consejo de Ministros ha autorizado el pasado 27 de octubre de 2014  la financiación necesaria para una encomienda global entre la Administración General del Estado (AGE) y la Fábrica Nacional de Moneda y Timbre- Real Casa de la Moneda (FNMT-RCM), para la prestación de los servicios de certificación electrónica.

La nota de prensa completa se puede leer aquí. Esta es su transcripción:

Encomienda entre la Administración General del Estado y la FNMT para servicios de certificación electrónica

El Consejo de Ministros ha autorizado la financiación necesaria para una encomienda global entre la Administración General del Estado (AGE) y la Fábrica Nacional de Moneda y Timbre- Real Casa de la Moneda (FNMT-RCM), para la prestación de los servicios de certificación electrónica.

Esta encomienda se enmarca dentro del Informe de la Comisión para la Reforma de las Administraciones Públicas (CORA), y será de aplicación en los órganos, organismos y entidades pertenecientes a la Administración General del Estado.

Además, aquellos organismos que no formen parte de la AGE, así como otras instituciones y poderes del Estado y/o sociedades estatales que ejerzan funciones públicas, podrán sumarse a la encomienda, previa vinculación del presupuesto correspondiente.

Con esta encomienda global se persigue reducir el esfuerzo, tiempo y recursos de los departamentos, organismos encomendantes y de la propia FNMT – RCM. Además, supondrá un ahorro de costes para la Administración General del Estado y la posibilidad de extender los servicios de firma electrónica a otros organismos.

La contraprestación a percibir por la FNMT-RCM para el ejercicio 2015 será de 2,79 millones de euros, inferior al gasto actual realizado por los organismos que quedan incluidos en el ámbito de la encomienda. Debe tenerse en cuenta además que el ámbito de aplicación es mayor que el de las encomiendas actuales.

La entrada en vigor será el 1 de noviembre de 2014 con la prestación de servicios a los servicios centrales del Ministerio de Hacienda y Administraciones Públicas, y el 1 de enero de 2015 para el resto de los departamentos y organismos incluidos en su ámbito de aplicación, con una vigencia hasta el 31 de diciembre de 2015, pudiendo prorrogarse por años naturales.

Con esta encomienda y este presupuesto, no tiene sentido mantener la anomalía que supone que los servicios de certificación digital de la FNMT no ofrecen servicios OCSP abiertos y gratuitos para cualquier servicio público o privado que quiera admitir el uso de los certificados de la FNMT.

Yo creo que los aspectos claves de la encomienda de gestión y los que justifican su elevado coste son los que tienen que ver con el mantenimiento de múltiples sistemas de emisión de certificados y gestión de RA (Registration Authority» para funcionarios, empleados que trabajan al servicio de las administraciones públicas y de la administración de justicia y ciudadanos que pueden solicitar sus certificados en múltiples organismos públicos cuyos funcionarios se han de formar, auditar y administrar.

Seguro que también supone un esfuerzo la tarea (no lograda a día de hoy) de que los certificados de la FNMT se incluyan en los repositorios de confianza de los sistemas operativos, de los navegadores y de los lectores de ficheros PDF, y dejen de aparecer los avisos de «este certificado no es de confianza»

También supone un esfuerzo redactar y mantener las políticas y prácticas de certificación y sus declaraciones.

Supone un esfuerzo asesorar a las diferentes administraciones públicas respecto a la forma de integrar sistemas que hacen uso de los certificados de la FNMT, en su emisión o aceptación.

Hay muchos costes que merecen compensación. Pero no es uno de ellos el mantenimiento de los servidores OCSP que con el último Reglamento Europeo EU 910/2014 han de ser abiertos y gratuitos para todos los prestadores de servicios de confianza digital que expiden certificados cualificados.

Esperamos que quienes negocien la encomienda de gestión tengan en cuenta estos aspectos que parecen obvios pero no se han resuelto en los más de 15 años desde que se inició el proyecto CERES (Certificación Española) en la FNMT.

Por cierto, la disponibilidad abierta y gratuita de los servicios OCSP debe ir acompañada de una correcta codificación de los certificados de la FNMT que en la actualidad siguen siendo una anomalía en la aplicación de la normativa técnica. Entre los aspectos que deben incluir destaca el que ha de servir para saber si un certificado es válido: la inserción en elcampo AIA (Authority Information Access) de la información relativa a la dirección URL en la que está diponible el servicio OCSP abierto y gratuito.

Veremos si finalmente priman los principios de la Comisión para la Reforma de las Administraciones Públicas o si se preservan intereses espúreos, ajenos a los interese de la sociedad española.

100 entradas gratis para el Exchange Summit el 6 y 7 de octubre de 2014 en Barcelona


El organizador de la Cumbre de las Interconexiones Empresariales (Exchange Summit) ofrece un centenar de entradas gratuitas para el evento que tendrá lugar  el 6 y 7 de octubre de 2014 en Barcelona.

Podrán optar a estas entradas los asistentes que cumplan los siguientes criterios:

  • Que procedan de organizaciones con más de 250 empleados 
  • Que dichas organizadciones sean remitentes o destinatarias de facturas electrónicas, o puedan llegar a serlo.
  • Que tengan un papel de cierta influencia en la toma de decisiones sobre selección de prestadores
  • No hayan asistido con anterioridad a un evento de los precedentes (EXPP Summit)

Nota:: No podrán optar a este tipo de entradas gratuitas  los consultores, y los prestadores de aplicaciones o de servicios de facturación electrónica. Su asignación será decidida por el organizador de 

 La distribución de las entradas gratuitas se está determinando y llevó a cabo-por el organizador de la Cumbre  de las Interconexiones Empresariales.

Más información en la Web del evento

EBML: Extensible Binary Markup Language


EBML,  Extensible Binary Meta-Language (o Extensible Binary Meta Language) es un nuevo lenguage de marcado de información conceptualmente semejante al XML pero diseñado para ser más compacto y codificar datos binarios.

Muchos lo ocnsideran una variante del concepto de «reinventar la rueda» puesto que  esta necesidad está tradicionalmente cubierta con la notación ASN.1 Abstract Syntax Notation One (notación sintáctica abstracta 1).

Sin embargo es interesante conocerla, por lo que se incluye seguidamente un borrador de la especcificación:

 

RFC v1.0

 
Draft                                                       M. Nilsson
Document: ebml-1.0.txt                                 15th March 2004
 
 
		  Extensible Binary Markup Language
 
Copyright
 
   Copyright (C) Martin Nilsson 2004. All rights reserved.
 
 
Abstract
 
   The extensible binary markup language, EBML, is a binary language
   for storing hierarchical, typed in data in a compact, yet easily
   parsed format.
 
 
About this document
 
   This document is currently in its draft stage and is subject to
   changes. The contents should not be relied upon for
   implementational purposes.
 
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
   this document are to be interpreted as described in RFC 2119
   [RFC2119].
 
   The definitions in this document uses ABNF [ABNF]. Note that string
   terminals are case insensitive in ABNF. The interpretation of
   binary values has been slightly altered so that every bit must be
   explicitly printed, e.g. %b0 is one zero bit while %b000 represents
   three zero bits. The following (re)definitions are used throughout
   this document.
 
     BIT  = %b1 / %b0
     BYTE = OCTET
     WSP  = SP / HTAB / CR / LF
 
 
1.  Introduction
 
   The Extensible Binary Markup Language EBML was designed to be a
   simplified binary version of XML for the purpose of storing and
   manipulating data in a hierarchical form with variable field
   lengths. Specifically EBML was designed as the framework language
   for the video container format Matroska. Some of the advantages of
   EBML are:
 
   - Possibility for compatibility between different versions of
     binary languages defined in EBML. A rare property of binary
     format that otherwise often needs careful consideration
     beforehand.
 
   - Unlimited size of data payload.
 
   - Can be both generated and read as a stream, without knowing the
     data size beforehand.
 
   - Often very space efficient, even compared to other binary
     representations of the same data.
 
   Some of the EBML disadvantages are:
 
   - No references can be made between EBML files, such as includes or
     inherits. Every EBML document is a self contained entity. The
     data stored in EBML may of course reference other resources.
 
   - No compositioning process to merge two or more EBML languages
     currently exists.
 
   This document describes the EBML binary syntax, its semantic
   interpretation and the syntax of a textual document type definition
   format used to define the rules and constraints of an EBML
   language. BNF is used throughout this document to augment the
   description and make it more formalized. It must however be noted
   that two different formats are described in this document, with two
   different BNFs. One for the binary format in chapter 2 and one for
   the document type definition in the rest of the document. To avoid
   confusion different token names has been chosen. The BNFs can be
   viewed in full in the appendices.
 
 
2.  Structure
 
   Syntactically an EBML document is a list of EBML elements. Each
   element has three parts; an element ID, a size descriptor and the
   element data payload. The element data payload is then either data,
   implicitly typed by the element ID, or a list of EBML elements.
 
     EBML       = *ELEMENT
     ELEMENT    = ELEMENT_ID SIZE DATA
     DATA       = VALUE / *ELEMENT
     ELEMENT_ID = VINT
     SIZE       = VINT
 
   EBML uses big endian/network order byte order, i.e. most
   significant bit first. All of the tokens above are byte aligned.
 
 
2.1.  Variable size integer
 
   For both element ID and size descriptor EBML uses a variable size
   integer, coded according to a schema similar to that of UTF-8
   [UTF-8] encoding. The variable size integer begins with zero or
   more zero bits to define the width of the integer. Zero zeroes
   means a width of one byte, one zero a width of two bytes etc. The
   zeroes are followed by a marker of one set bit and then follows the
   actual integer data. The integer data consists of alignment data
   and tail data. The alignment data together with the width
   descriptor and the marker makes up one ore more complete bytes. The
   tail data is as many bytes as there were zeroes in the width
   descriptor, i.e. width-1.
 
     VINT           = VINT_WIDTH VINT_MARKER VINT_DATA
     VINT_WIDTH     = *%b0
     VINT_MARKER    = %b1
     VINT_DATA      = VINT_ALIGNMENT VINT_TAIL
     VINT_ALIGNMENT = *BIT
     VINT_TAIL      = *BYTE
 
   An alternate way of expressing this is the following definition,
   where the width is the number of levels of expansion.
 
     VINT = ( %b0 VINT 7BIT ) / ( %b1 7BIT )
 
   Some examples of the encoding of integers of width 1 to 4. The x:es
   represent bits where the actual integer value would be stored.
 
   Width  Size  Representation
     1    2^7   1xxx xxxx
     2    2^14  01xx xxxx  xxxx xxxx
     3    2^21  001x xxxx  xxxx xxxx  xxxx xxxx
     4    2^28  0001 xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx
 
 
2.2.  Element ID
 
   The EBML element ID is encoded as a variable size integer with, by
   default, widths up to 4. Another maximum width value can be set by
   setting another value to EBMLMaxIDWidth in the EBML header. See
   section 5.1. IDs are always encoded in their shortest form, e.g. 1
   is always encoded as 0x81 and never as 0x4001. This limits the
   number of IDs in every class with the number of IDs in the previous
   classes. Furthermore, values with all data bits set to 1 and all
   data bits set to 0 are reserved, hence the effective number of IDs
   are as follows for different widths. Note that the shortest
   encoding form for 127 is 0x407f since 0x7f is reserved.
 
   Class  Width  Number of IDs
     A      1    2^7-2     =         126
     B      2    2^14-2^7  =      16 256
     C      3    2^21-2^14 =   2 080 768
     D      4    2^28-2^21 = 266 338 304
 
 
2.3.  Element data size
 
   The EBML element data size is encoded as a variable size integer
   with, by default, widths up to 8. Another maximum width value can
   be set by setting another value to EBMLMaxSizeWidth in the EBML
   header. See section 5.1. There is a range overlap between all
   different widths, so that 1 encoded with width 1 is semantically
   equal to 1 encoded with width 8. This allows for the element data
   to shrink without having to shrink the width of the size
   descriptor.
 
   Values with all data bits set to 1 means size unknown, which allows
   for dynamically generated EBML streams where the final size isn't
   known beforehand. The element with unknown size MUST be an element
   with an element list as data payload. The end of the element list is
   determined by the ID of the element. When an element that isn't a
   sub-element of the element with unknown size arrives, the element
   list is ended.
 
   Since the highest value is used for unknown size the effective
   maximum data size is 2^56-2, using variable size integer width 8.
 
 
2.4.  Values
 
   Besides having an element list as data payload an element can have
   its data typed with any of seven predefined data types. The actual
   type information isn't stored in EBML but is inferred from the
   document type definition through the element ID. The defined data
   types are signed integer, unsigned integer, float, ASCII string,
   UTF-8 string, date and binary data.
 
     VALUE = INT / UINT / FLOAT / STRING / DATE / BINARY
 
 
     INT = *8BYTE
 
   Signed integer, represented in two's complement notation, sizes
   from 0-8 bytes. A zero byte integer represents the integer value 0.
 
 
     UINT = *8BYTE
 
   Unsigned integer, sizes from 0-8 bytes. A zero byte integer
   represents the integer value 0.
 
 
     FLOAT = *1( 4BYTE / 8BYTE / 10BYTE )
 
   IEEE float [FLOAT], sizes 0, 4, 8 or 10 bytes. A zero byte float
   represents the float value 0.0.
 
 
     PADDING = %x00
     STRING  = *BYTE *PADDING
 
   UTF-8 [UTF-8] encoded Unicode [UNICODE] string. A string MAY be
   zero padded at the end. Note that a string can be of zero length.
 
 
     DATE = 8BYTE
 
   Signed, 64-bit (8 byte) integer describing the distance in
   nanoseconds to the beginning of the millennium (2001-01-01 00:00:00
   UTC).
 
 
     BINARY = *BYTE
 
   Binary data, i.e. not interpreted at the EBML level.
 
 
3.  Semantic interpretation
 
   Every element has several properties defined in the document type
   definition, which are needed for the correct syntactical and
   semantic handling of the information. These properties are name,
   parent, ID, cardinality, value restrictions, default value, value
   type and child order.
 
   To syntactically parse EBML data we need to know the element value
   types, and to semantically interpret that data we also need to know
   the element IDs and element names. Elements can have a default
   value, so for the final presentation of the parsed EBML data
   elements that wasn't stored in the data may show up. Finally
   elements may have restrictions in terms of which parent or parents
   they may have, the number of times they may occur in the EBML data,
   their order in the document and various additional restrictions of
   their data payload.
 
 
3.1.  Name property
 
   The name is the symbolic identifier of an element and has a 1:1
   mapping to the element ID. Only alphanumeric characters and
   underscores may be used for the name. It may not start with a
   number. Names are treated case insensitive, i.e. "Name" is the same
   identifier as "name".
 
     NAME = [A-Za-z_] 1*[A-Za-z_0-9]
 
 
3.2.  Value type property
 
   There is no way of knowing whether or not to look for sub elements
   with only the information presented in the EBML data. Hence the
   element value type is the most important information in the EBML
   DTD. In addition to the value types defined in section 2.4 an
   element can also be of the type "container", which simply means
   that its content is more elements.
 
 
3.3.  ID property
 
   Every element must have an ID associated, as defined in section
   2.2.  These IDs are expressed in the hexadecimal representation of
   their encoded form, e.g. 1a45dfa3.
 
     ID = 1*( 2HEXDIG )
 
 
3.4.  Default value property
 
   Every non-container MAY be assigned a default value. If so, its
   value will be added to the interpretation of the EBML data if no
   element with another value exists in the data.
 
   As an example, consider this EBML DTD:
 
   Weight := 4101 {
     WeightValue := 41a1 uint;
     WeightUnit  := 41a2 string [ def:"kilogram" ];
   }
 
   If the Weight element only contains the WeightValue element, the
   WeightUnit element with value "kilogram" will be added when the
   information is semantically processed. A WeightUnit element with
   another value would of course override the default.
 
   The default value can also be a symbol referring back to a
   previously seen symbol. If however no such symbol has been seen,
   i.e. it has not been encoded into the EBML data and has no default
   value, the element will not be added as a child on the semantic
   level.
 
   Weight := 4101 {
     WeightValue := 41a1 uint;
     WeightUnit  := 41a2 string [ def:WeightUnit ];
   }
 
   In this example all Weight elements will use the same weight unit
   as the previous one. To ensure that the first one has a value its
   cardinality should be set to "1". See section 3.6.
 
     DEFAULT = INT_DEF / UINT_DEF / FLOAT_DEF / STRING_DEF /
               DATE_DEF / BINARY_DEF / NAME
 
     DATE_VALUE = *1DIGIT 2DIGIT 2DIGIT
                  *1(%x54 2DIGIT ":" 2DIGIT ":" 2DIGIT
                     *1( "." *1DIGIT ))
 
     INT_DEF    = *1"-" 1*DIGIT
     UINT_DEF   = 1*DIGIT
     FLOAT_DEF  = INT "." 1*DIGIT *1( "e" *1( "+"/"-" ) 1*DIGIT )
     DATE_DEF   = INT_DEF / DATE_VALUE
 
     STRING_DEF = ("0x" 1*( 2HEXDIG )) / ( %x22 *(%x20-7e) %x22 )
     BINARY_DEF = STRING_DEF
 
   The date default value is either described as the integer in its
   encoded form or in the ISO short format; YYYYMMDD followed by the
   string literal T, the time as HH:MM:DD and finally and optionally
   the fractions as .F with an optional numbers of F for
   precision. Some examples:
 
     ExampleInt := c0 int [ def:-114; ]
     ExampleUInt := c1 uint [ def:0; ]
     ExampleFloat := c2 float [ def:6.022E23 ]
     ExampleDate := c3 date [ def:20011224T15:00:03.21; ]
     ExampleBinary := c5 binary [ def:0x4944337632; ]
     ExampleString := c6 string [ def:"Sweden"; ]
 
 
3.5.  Parent property
 
   To place the elements in a hierarchical structure we need
   relational information about the elements. In the EBML DTD this is
   expressed as the possible parents an element may have. This can be
   expressed in two ways: an explicit list of allowed parents or a
   generic definition of allowed insertion depth.
 
     PARENTS = NAME / ( NAME "," PARENTS )
     LEVEL   = 1*DIGIT *1( ".." *DIGIT )
 
   An element with neither parents nor level defined is assumed to
   exist on the top level in the EBML document. An element can not
   have both a parent and a level property.
 
   The following example contains two elements, Envelope and
   Letter. The Letter must, if it exists in the document, be a child
   of Envelope and Envelop must, if it exists in the document, reside
   at the top level.
 
     Envelope := a0 container;
     Letter := b0 string [ parent:Envelope; ]
 
   The following example expresses the exact same relationships, but
   in an abbreviated syntax.
 
     Envelope := a0 container {
       Letter := b0 string;
     }
 
   The following example shows that the abbreviated syntax can't be
   used to solve all relations. Here the Letter element can be a child
   in both the Envelope element and the Trashcan element. The explicit
   parent information is merged with the one expressed with the
   abbreviated syntax.
 
     Envelope := a0 container {
       Letter := b0 string [ parent:Trashcan; ];
     }
     Trashcan := a1 container;
 
   The following example demonstrates the usage of level instead of
   parent. The element Void may occur at any place in the EBML
   document.
 
     Void  := ec binary [ level:1..; card:*; ]
 
   This is an example similar to the one above, but using containers
   instead. The children of the parent to the SHA1 element may be
   pushed down to the level where "%children;" is, i.e. if used with
   the first Letter-Envelope example the Envelope may contain an SHA1
   element which may contain an SHA1Content element which may contain
   a Letter element. A container element with a level property MUST
   NOT use undefined size as described in section 2.3, since then the
   end of the element can not be determined in all cases.
 
     SHA1 := 190babe5 container [ level:1..; card:*; ] {
        SHA1Content := 20110f container {
          %children;
        }
        SHA1Hash := 20110e binary;
     }
 
 
3.6.  Cardinality property
 
   The cardinality of an element declares how many times an element
   may occur in its current scope. By default an element may only
   occur at most once in a scope, e.g. if the element Weight has been
   defined as a child to Brick, no more than one Weight element can be
   used in every Brick element. The cardinality can however be altered
   from the default to any of the following. Note that this affects
   all scopes that the element can be inserted into.
 
     Symbol   Interpretation
       *      Zero or more occurrences.
       ?      Zero or one occurrence (default).
       1      Exactly one occurrence.
       +      One or more occurrences.
 
     CARDINALITY = "*" / "?" / "1" / "+"
 
 
3.7.  Child order property
 
   The child order property only applies to container elements. It
   simply declares if the children of the element must appear in the
   order they are defined in or not. By default this restriction is
   imposed on all children to all elements. The advantage of ordered
   elements in combination with default values is that the EBML
   decoder will know immediately once an element is skipped and can
   output the appropriate default value instead.
 
     YES     = "yes" / "1"
     NO      = "no" / "0"
     ORDERED = YES / NO
 
 
3.8.  Value restriction properties
 
   Every element may impose additional constraints upon its
   value. These constraints are only used to validate data during
   encoding and makes no difference for the decoding or interpretation
   of the encoded data. The available constraints and syntax differs
   between different types of elements.
 
 
3.8.1.  Range
 
   The range of an element value determines the allowed values that
   the element value may have. The range is expressed as one or more
   specific values or spans of allowed values, with the exception of
   floats and dates where only spans are allowed.
 
     RANGE_LIST = RANGE_ITEM / ( RANGE_ITEM S "," S RANGE_LIST )
     RANGE_ITEM = INT_RANGE / UINT_RANGE / FLOAT_RANGE /
                  STRING_RANGE / DATE_RANGE / BINARY_RANGE
 
   For integers the range is a list of values and open or closed
   ranges, e.g. "0,1", "1..5" and "..-1,1..". The final allowed range
   is a union of all listed ranges. If a value matches any of the
   listed ranges it is considered valid.
 
     INT_RANGE = INT_DEF / ( INT_DEF ".." ) / ( ".." INT_DEF ) /
                 ( INT_DEF ".." INT_DEF )
 
   Unsigned integers is similar, but can not have its range open to
   the left.
 
     UINT_RANGE  = UINT_DEF *1( ".." UINT_DEF )
 
   Floats can have both inclusive and exclusive end points of its
   ranges.
 
     FLOAT_RANGE = ( ("<" / "<="/ ">" / ">=") FLOAT_DEF ) /
                   ( FLOAT_DEF "<"/"<=" ".." "<"/"<=" FLOAT_DEF )
 
   Date ranges has the same syntax and semantics as integer ranges,
   except that the actual date can be described either as an integer
   or in ISO short format.
 
     DATE_RANGE = ( DATE_DEF ".." ) / ( ".." DATE_DEF ) /
                  ( DATE_DEF ".." DATE_DEF )
 
   String and binary ranges limits the range for each character/byte
   in the string. Note that in the string case this is for the
   unencoded unicode data, i.e. the possible range is larger than
   0-255, which is the bounding range for binary data.
 
     STRING_RANGE = UINT_RANGE
     BINARY_RANGE = UINT_RANGE
 
 
3.8.2.  Size
 
   The size of an element value is simply the number of bytes it
   occupies in its encoded form. That means that the size of a string
   element value need not be the same as the string length.
 
     SIZE_LIST = UINT_RANGE / ( UINT_RANGE S "," S SIZE_LIST )
 
 
4.  Document Type Definition
 
   The EBML document type definition, EDTD, is an ASCII based language
   that allows for the constraints and relations described in chapter
   3 to be described in a way that is both human and computer
   readable. Syntactically it consists of blocks, not unlike most
   programming languages, which contains definitions/declarations
   similar to BNF. The format is largely whitespace insensitive, case
   insensitive and supports both C-style (LCOMMENT) and C++-style
   (BCOMMENT) comments. The BNF lines in this chapter is somewhat
   simplified for readability compared to the complete BNF in Appendix
   B.
 
     COMMENT = LCOMMENT / BCOMMENT
     S       = *WSP / ( *WSP COMMENT *WSP ) ; Optional white spaces
 
   On the top level of the EDTD only three different blocks are
   currently defined, header declarations, type definitions and
   element definitions.
 
     DTD     = *( S / HBLOCK / TBLOCK / EBLOCK )
 
 
4.1.  Header declarations
 
   The meaning of the header declaration is to declare what values
   should be put into the elements of the header, should they differ
   from the default values. The header declaration block is written as
   "declare header" followed by curly brackets that encloses the block
   of statements. The actual statements are very straightforward, the
   element name followed by ":=" followed by the value, as described
   in section 3.4, followed by ";". There MUST only be one header
   declaration block in a DTD.
 
     HBLOCK    = "declare" WSP "header" S "{" *(S / STATEMENT) "}"
     STATEMENT = NAME S ":=" S DEFS S ";"
 
   Since the DocType element has no default value it MUST be declared
   in the EDTD. It is RECOMMENDED that the EBMLVersion is also
   declared. Such a declaration could look like this:
 
     declare header {
       DocType := "xhtml";
       EBMLVersion := 1;
     }
 
 
4.2.  Type definitions
 
   Type definitions is a way to create types with more mnemonic names,
   making the DTD both smaller and easier to read. The type
   definitions block is written as "define types" followed by a block
   of statements enclosed in curly brackets. Each statement is a type
   name followed by ":=" followed by the type on which this type
   should be based on, optionally followed by a list of properties,
   enclosed in angle brackets. The type names follows the same rules
   as element names, but lives in another namespace, i.e. there may be
   an element with the same name as a type.
 
     TBLOCK = "define" S WSP "types" S "{" *(S / DTYPE) "}"
     DTYPE  = NAME S ":=" S TYPE S (PROPERTIES S *1";")/";"
 
   The base type may be another defined type, as long as the
   definitions are made in order, as shown in the following example.
 
     define types {
       digits := int;
       number := digits;
     }
 
   The type definition then both allows for types as described in
   section 2.4 and NAME, which refers to types previously defined in
   the document.
 
     TYPE  = VTYPE / CTYPE
     VTYPE = "int" / "uint" / "float" / "string" / "date" /
     	     "binary" / NAME
     CTYPE = "conainer" / NAME
 
   If the type definition has no list of properties, the statement is
   ended with ";". If the it has a property list, ending the statement
   with ";" is optional.
 
     PROPERTIES = "[" S 1*PROPERTY S "]"
     PROPERTY   = PROP_NAME S ":" S PROP_VALUE S ";"
 
   Some examples:
 
     crc32 := binary [ size:4; ]
     sha1  := binary [ size:20; ]
     bool  := uint [ range:0..1; ]
     us_printable := binary [ range:32..126; ]
 
 
4.2.  Element definitions
 
   The element definitions is the real purpose of the DTD. The element
   definitions block is written as "define elements" followed by a
   block of statements enclosed in curly brackets. Each statement can
   be either a simple statement similar to the type definition
   statements, or a block statement, containing more statements.
 
     EBLOCK   = "define" WSP "elements" S "{" *(S / ELEMENT) "}"
     DELEMENT = VELEMENT / CELEMENT / "%children;"
 
   The simple statements are typically used for value elements and
   consists of a name followed by ":=", id, type and optionally
   properties.
 
     VELEMENT = NAME S ":=" S ID WSP S TYPE S (PROPERTIES S *1";")/";"
 
   The block version of the element statements are only used to
   express parent-children relations. See section 3.5.
 
     CELEMENT = NAME S ":=" S ID WSP S "container" S *1PROPERTIES S
                ("{" *DELEMENT "}")/";"
 
 
5.  EBML standard elements
 
   EBML defines a small set of elements that can be used in any EBML
   application. An EBML document MUST begin with an EBML header
   consisting of the EBML element. Generally speaking it would be
   possible to define default values to all elements in the EBML
   element in the document type definition for an application, and
   thus being able to represent the entire header without have a
   single byte written. However, in order to be able to identify EBML
   documents between applications it is REQUIRED that all EBML
   elements whose values differs from the standard defaults in this
   document, are written in EBML data. In practice that means that at
   least the DocType is always stored in all EBML documents.
 
5.1.  EBML
 
   The EBML element is a container for the EBML header.
 
     EBML := 1a45dfa3 container [ card:+; ]
 
 
5.1.1.  EBMLVersion
 
   EBMLVersion is the version of EBML to which the document conforms
   to.
 
     EBMLVersion := 4286 uint [ def:1; parent:EBML; ]
 
 
5.1.2.  EBMLReadVersion
 
   The minimum EBML version a parser has to support in order to read
   the document.
 
     EBMLReadVersion := 42f7 uint [ def:1; parent:EBML; ]
 
 
5.1.3.  EBMLMaxIDWidth
 
   The maximum width of the IDs used in this document. It is
   RECOMMENDED to not have wider IDs than 4. EBMLMaxIDWidth may be
   larger than any actual width used in the document.
 
     EBMLMaxIDWidth := 42f2 uint [ def:4; parent:EBML; ]
 
 
5.1.4.  EBMLMaxSizeWidth
 
   The maximum width of the size descriptors used in this document. It
   is RECOMMENDED to not have wider size descriptors than 8.
   EBMLMaxSizeWidth may be larger than any actual width used in the
   document.
 
     EBMLMaxSizeWidth := 42f3 uint [ def:8; parent:EBML; ]
 
 
5.1.5.  DocType
 
   An ASCII string that identifies the type of the document.
 
     DocType := 4282 binary [ range:32..126; parent:EBML; ]
 
 
5.1.6.  DocTypeVersion
 
   DocTypeVersion is the version of document type to which the
   document conforms to.
 
     DocTypeVersion := 4287 uint [ def:1; parent:EBML; ]
 
 
5.1.7.  DocTypeReadVersion
 
   The minimum DocType version an interpreter has to support in order
   to read the document.
 
     DocTypeReadVersion := 4285 uint [ def:1; parent:EBML; ]
 
 
5.2.  CRC32
 
   The CRC32 container can be placed around any EBML element or
   elements. The value stored in CRC32Value is the result of the
   CRC-32 [CRC32] checksum performed on the other child elements.
 
     CRC32 := c3 container [ level:1..; card:*; ] {
       %children;
       CRC32Value := 42fe binary [ size:4; ]
     }
 
 
5.3.  Void
 
   The void element can be used as padding to prepare for more data,
   or to fill space when data has been removed. It should simply be
   ignored when the document is interpreted.
 
     Void  := ec binary [ level:1..; card:*; ]
 
 
6.  References
 
   [ABNF] D. Crocker, P. Overell, 'Augmented BNF for Syntax
   Specifications: ABNF', RFC 2234, November 1997.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc2234.txt>
 
   [CRC32] International Organization for Standardization, 'ISO
   Information Processing Systems - Data Communication High-Level Data
   Link Control Procedure - Frame Structure", IS 3309, October 1984,
   3rd Edition.
 
   [FLOAT] Institute of Electrical and Electronics Engineers, 'IEEE
   Standard for Binary Floating-Point Arithmetic', ANSI/IEEE Standard
   754-1985, August 1985.
 
   [RFC2119] S. Bradner, 'Key words for use in RFCs to Indicate
   Requirement Levels', RFC 2119, March 1997.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt>
 
   [UNICODE] International Organization for Standardization,
   'Universal Multiple-Octet Coded Character Set (UCS), Part 1:
   Architecture and Basic Multilingual Plane', ISO/IEC 10646-1:1993.
 
      <url:http://www.unicode.org>
 
   [UTF-8] F. Yergeau, 'UTF-8, a transformation format of ISO 10646',
   RFC 3629, November 2003.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc3629.txt>
 
 
Appendix A.  EBML BNF
 
     EBML    = *ELEMENT
     ELEMENT = ELEMENT_ID SIZE DATA
     DATA    = VALUE / *ELEMENT
 
     VINT = ( %b0 VINT 7BIT ) / ( %b1 7BIT )
 
     ; A more annotated but less correct definition of VINT
     ;
     ; VINT           = VINT_WIDTH VINT_MARKER VINT_DATA
     ; VINT_WIDTH     = *%b0
     ; VINT_MARKER    = %b1
     ; VINT_DATA      = VINT_ALIGNMENT VINT_TAIL
     ; VINT_ALIGNMENT = *BIT
     ; VINT_TAIL      = *BYTE
 
     ELEMENT_ID   = VINT
     SIZE         = VINT
 
     VALUE = INT / UINT / FLOAT / STRING / DATE / BINARY
 
     PADDING = %x00
 
     INT    = *8BYTE
     UINT   = *8BYTE
     FLOAT  = *1( 4BYTE / 8BYTE / 10BYTE )
     STRING = *BYTE *PADDING
     DATE   = 8BYTE
     BINARY = *BYTE
 
 
Appendix B.  EBML DTD BNF
 
   ; NOTE: This BNF is not correct in that it allows for more freedom
   ; than what is described in the text. That is because a 100%
   ; correct BNF would be almost unreadable. To be correct CELEMENT
   ; would be split into one ELEMENT token for every value type, and
   ; then each and every one of them would have their own PROPERTIES
   ; definition which points out only the DEF and RANGE for that value
   ; type. Some other shortcuts are noted in comments.
 
   LCOMMENT = "//" *BYTE (CR / LF) ; *BYTE is string without CR/LF
   BCOMMENT = "/*" *BYTE "*/" ; *BYTE is string without "*/"
   COMMENT  = LCOMMENT / BCOMMENT ; Line comment / Block comment
   S        = *WSP / ( *WSP COMMENT *WSP ) ; Optional white spaces
 
   DTD      = *( S / HBLOCK / TBLOCK / EBLOCK )
   HBLOCK   = "declare" S WSP "header" S "{" *(S / STATEMENT) "}"
   EBLOCK   = "define" S WSP "elements" S "{" *(S / DELEMENT) "}"
   TBLOCK   = "define" S WSP "types" S "{" *(S / DTYPE) "}"
 
   DELEMENT = VELEMENT / CELEMENT / "%children;"
   VELEMENT = NAME S ":=" S ID WSP S TYPE S (PROPERTIES S *1";")/";"
   CELEMENT = NAME S ":=" S ID WSP S "container" S *1PROPERTIES S
              ("{" *DELEMENT "}")/";"
 
   NAME     = [A-Za-z_] 1*[A-Za-z_0-9]
 
   ID       = 1*( 2HEXDIG )
 
   TYPE     = VTYPE / CTYPE
   VTYPE    = "int" / "uint" / "float" / "string" / "date" /
              "binary" / NAME
   CTYPE    = "conainer" / NAME
 
   PROPERTIES = "[" S 1*PROPERTY S "]"
   PROPERTY   = PARENT / LEVEL / CARD / DEF / RANGE / SIZE
 
   PARENT   = "parent" S ":" S PARENTS S ";"
   PARENTS  = NAME / ( NAME S "," S PARENTS )
 
   LEVEL    = "level"  S ":" S 1*DIGIT *(".." *DIGIT) S ";"
   CARD     = "card"   S ":" S ( "*" / "?" / "1" / "+" ) S ";"
 
   ORDERED  = "ordered" S ":" S ( YES / NO ) S ";"
   YES      = "yes" / "1"
   NO       = "no" / "0"
 
   DEF      = "def"    S ":" S DEFS S ";"
   DEFS     = ( INT_DEF / UINT_DEF / FLOAT_DEF / STRING_DEF /
                DATE_DEF / BINARY_DEF / NAME )
 
   RANGE    = "range" S ":" S RANGE_LIST S ";"
   RANGE_LIST = RANGE_ITEM / ( RANGE_ITEM S "," S RANGE_LIST )
   RANGE_ITEM = INT_RANGE / UINT_RANGE / FLOAT_RANGE /
                STRING_RANGE / DATE_RANGE / BINARY_RANGE
 
   SIZE       = "size" S ":" S SIZE_LIST S ";"
   SIZE_LIST  = UINT_RANGE / ( UINT_RANGE S "," S SIZE_LIST )
 
   ; Actual values, but INT_VALUE is too long.
   INT_V   = *1"-" 1*DIGIT
   FLOAT_V = INT "." 1*DIGIT *1( "e" *1( "+"/"-" ) 1*DIGIT )
   ; DATE uses ISO short format, yyyymmddThh:mm:ss.f
   DATE_V  = *1DIGIT 2DIGIT 2DIGIT
             *1(%x54 2DIGIT ":" 2DIGIT ":" 2DIGIT *1( "." *1DIGIT ))
 
   INT_DEF    = INT_V
   UINT_DEF   = 1*DIGIT
   FLOAT_DEF  = FLOAT_V
   DATE_DEF   = INT_DEF / DATE_V
   STRING_DEF = ("0x" 1*( 2HEXDIG )) / ( %x22 *(%x20-7e) %x22 )
   BINARY_DEF = STRING_DEF
 
   INT_RANGE   = INT_V / ( INT_V ".." ) / ( ".." INT_V ) /
                  ( INT_V ".." INT_V )
   UINT_RANGE  = 1*DIGIT *1( ".." *DIGIT )
   FLOAT_RANGE = ( ("<" / "<=" / ">" / ">=") FLOAT_DEF ) /
                   ( FLOAT_DEF "<"/"<=" ".." "<"/"<=" FLOAT_DEF )
   DATE_RANGE   = (1*DIGIT / DATE_V) *1( ".." *(DIGIT / DATE_V) )
   BINARY_RANGE = UINT_RANGE
   STRING_RANGE = UINT_RANGE
 
   STATEMENT = NAME S ":=" S DEFS S ";"
 
   ; TYPE must be defined. PROPERTIES must only use DEF and RANGE.
   DTYPE     = NAME S ":=" S TYPE S (PROPERTIES S *1";")/";"
 
 
Appendix C.  EBML Standard definitions
 
   define elements {
     EBML := 1a45dfa3 container [ card:+; ] {
       EBMLVersion := 4286 uint [ def:1; ]
       EBMLReadVersion := 42f7 uint [ def:1; ]
       EBMLMaxIDLength := 42f2 uint [ def:4; ]
       EBMLMaxSizeLength := 42f3 uint [ def:8; ]
       DocType := 4282 string [ range:32..126; ]
       DocTypeVersion := 4287 uint [ def:1; ]
       DocTypeReadVersion := 4285 uint [ def:1; ]
     }
 
     CRC32 := c3 container [ level:1..; card:*; ] {
       %children;
       CRC32Value := 42fe binary [ size:4; ]
     }
     Void  := ec binary [ level:1..; card:*; ]
   }
 
 
Appendix D.  Matroska DTD
 
   declare header {
     DocType := "matroska";
     EBMLVersion := 1;
   }
   define types {
     bool := uint [ range:0..1; ]
     ascii := string [ range:32..126; ]
   }
   define elements {
     Segment := 18538067 container [ card:*; ] {
 
       // Meta Seek Information
       SeekHead := 114d9b74 container [ card:*; ] {
         Seek := 4dbb container [ card:*; ] {
           SeekID := 53ab binary;
           SeekPosition := 53ac uint;
         }
       }
 
       // Segment Information
       Info := 1549a966 container [ card:*; ] {
         SegmentUID := 73a4 binary;
         SegmentFilename := 7384 string;
         PrevUID := 3cb923 binary;
         PrevFilename := 3c83ab string;
         NextUID := 3eb923 binary;
         NextFilename := 3e83bb string;
         TimecodeScale := 2ad7b1 uint [ def:1000000; ]
         Duration := 4489 float [ range:>0.0; ]
         DateUTC := 4461 date;
         Title := 7ba9 string;
         MuxingApp := 4d80 string;
         WritingApp := 5741 string;
       }
 
       // Cluster
       Cluster := 1f43b675 container [ card:*; ] {
         Timecode := e7 uint;
         Position := a7 uint;
         PrevSize := ab uint;
         BlockGroup := a0 container [ card:*; ] {
           Block := a1 binary;
           BlockVirtual := a2 binary;
           BlockAdditions := 75a1 container {
             BlockMore := a6 container [ card:*; ] {
               BlockAddID := ee uint [ range:1..; ]
               BlockAdditional := a5 binary;
             }
           }
           BlockDuration := 9b uint [ def:TrackDuration; ];
           ReferencePriority := fa uint;
           ReferenceBlock := fb int [ card:*; ]
           ReferenceVirtual := fd int;
           CodecState := a4 binary;
           Slices := 8e container [ card:*; ] {
             TimeSlice := e8 container [ card:*; ] {
               LaceNumber := cc uint [ def:0; ]
               FrameNumber := cd uint [ def:0; ]
               BlockAdditionID := cb uint [ def:0; ]
               Delay := ce uint [ def:0; ]
               Duration := cf uint [ def:TrackDuration; ];
             }
           }
         }
       }
 
       // Track
       Tracks := 1654ae6b container [ card:*; ] {
         TrackEntry := ae container [ card:*; ] {
           TrackNumber := d7 uint [ range:1..; ]
           TrackUID := 73c5 uint [ range:1..; ]
           TrackType := 83 uint [ range:1..254; ]
           FlagEnabled := b9 uint [ range:0..1; def:1; ]
           FlagDefault := 88 uint [ range:0..1; def:1; ]
           FlagLacing  := 9c uint [ range:0..1; def:1; ]
           MinCache := 6de7 uint [ def:0; ]
           MaxCache := 6df8 uint;
           DefaultDuration := 23e383 uint [ range:1..; ]
           TrackTimecodeScale := 23314f float [ range:>0.0; def:1.0; ]
           Name := 536e string;
           Language := 22b59c string [ def:"eng"; range:32..126; ]
           CodecID := 86 string [ range:32..126; ];
           CodecPrivate := 63a2 binary;
           CodecName := 258688 string;
           CodecSettings := 3a9697 string;
           CodecInfoURL := 3b4040 string [ card:*; range:32..126; ]
           CodecDownloadURL := 26b240 string [ card:*; range:32..126; ]
           CodecDecodeAll := aa uint [ range:0..1; def:1; ]
           TrackOverlay := 6fab uint;
 
           // Video
           Video := e0 container {
             FlagInterlaced := 9a uint [ range:0..1; def:0; ]
             StereoMode := 53b8 uint [ range:0..3; def:0; ]
             PixelWidth := b0 uint [ range:1..; ]
             PixelHeight := ba uint [ range:1..; ]
             DisplayWidth := 54b0 uint [ def:PixelWidth; ]
             DisplayHeight := 54ba uint [ def:PixelHeight; ]
             DisplayUnit := 54b2 uint [ def:0; ]
             AspectRatioType := 54b3 uint [ def:0; ]
             ColourSpace := 2eb524 binary;
             GammaValue := 2fb523 float [ range:>0.0; ]
           }
 
           // Audio
           Audio := e1 container {
             SamplingFrequency := b5 float [ range:>0.0; def:8000.0; ]
             OutputSamplingFrequency := 78b5 float [ range:>0.0;
                                                     def:8000.0; ]
             Channels := 94 uint [ range:1..; def:1; ]
             ChannelPositions := 7d7b binary;
             BitDepth := 6264 uint [ range:1..; ]
           }
 
           // Content Encoding
           ContentEncodings := 6d80 container {
             ContentEncoding := 6240 container [ card:*; ] {
               ContentEncodingOrder := 5031 uint [ def:0; ]
               ContentEncodingScope := 5032 uint [ range:1..; def:1; ]
               ContentEncodingType := 5033 uint;
               ContentCompression := 5034 container {
                 ContentCompAlgo := 4254 uint [ def:0; ]
                 ContentCompSettings := 4255 binary;
               }
               ContentEncryption := 5035 container {
                 ContentEncAlgo := 47e1 uint [ def:0; ]
                 ContentEncKeyID := 47e2 binary;
                 ContentSignature := 47e3 binary;
                 ContentSigKeyID := 47e4 binary;
                 ContentSigAlgo := 47e5 uint;
                 ContentSigHashAlgo := 47e6 uint;
               }
             }
           }
         }
       }
 
       // Cueing Data
       Cues := 1c53bb6b container {
         CuePoint := bb container [ card:*; ] {
           CueTime := b3 uint;
           CueTrackPositions := b7 container [ card:*; ] {
             CueTrack := f7 uint [ range:1..; ]
             CueClusterPosition := f1 uint;
             CueBlockNumber := 5378 uint [ range:1..; def:1; ]
             CueCodecState := ea uint [ def:0; ]
             CueReference := db container [ card:*; ] {
               CueRefTime := 96 uint;
               CueRefCluster := 97 uint;
               CueRefNumber := 535f uint [ range:1..; def:1; ]
               CueRefCodecState := eb uint [ def:0; ]
             }
           }
         }
       }
 
       // Attachment
       Attachments := 1941a469 container {
         AttachedFile := 61a7 container [ card:*; ] {
           FileDescription := 467e string;
           FileName := 466e string;
           FileMimeType := 4660 string [ range:32..126; ]
           FileData := 465c binary;
           FileUID := 46ae uint;
         }
       }
 
       // Chapters
       Chapters := 1043a770 container {
         EditionEntry := 45b9 container [ card:*; ] {
           ChapterAtom := b6 container [ card:*; ] {
             ChapterUID := 73c4 uint [ range:1..; ]
             ChapterTimeStart := 91 uint;
             ChapterTimeEnd := 92 uint;
             ChapterFlagHidden := 98 uint [ range:0..1; def:0; ]
             ChapterFlagEnabled := 4598 uint [ range:0..1; def:0; ]
             ChapterTrack := 8f container {
               ChapterTrackNumber := 89 uint [ card:*; range:0..1; ]
               ChapterDisplay := 80 container [ card:*; ] {
                 ChapString := 85 string;
                 ChapLanguage := 437c string [ card:*; def:"eng";
                                               range:32..126; ]
                 ChapCountry := 437e string [ card:*; range:32..126; ]
               }
             }
           }
         }
       }
 
       // Tagging
       Tags := 1254c367 container [ card:*; ] {
         Tag := 7373 container [ card:*; ] {
           Targets := 63c0 container {
             TrackUID := 63c5 uint [ card:*; def:0; ]
             ChapterUID := 63c4 uint [ card:*; def:0; ]
             AttachmentUID := 63c6 uint [ card:*; def:0; ]
           }
           SimpleTag := 67c8 container [ card:*; ] {
             TagName := 45a3 string;
             TagString := 4487 string;
             TagBinary := 4485 binary;
           }
         }
       }
     }
   }

EN 319 162 Associated Signature Containers (ASiC)


La norma TS 102 918 ahora pasa a denominarse EN 319 162 tras la armonización normativa propiciada por el Mandato 460.

El comercio electrónico se está convirtiendo en la forma en la que tendrán lugar en el futuro de los negocios entre las empresas a través de área local, amplia y redes globales. La confianza en esta forma de hacer negocios es esencial para el éxito y el desarrollo continuo del comercio electrónico .

Por tanto, es importante que las empresas que utilizan este medio electrónico en su actividad empresarial tengan controles de seguridad adecuados y mecanismos para proteger sus transacciones y garantizar la confianza  con sus socios comerciales. En este sentido, la firma electrónica es un componente de seguridad importante que se puede utilizar para proteger la información y proporcionar la confianza en el comercio electrónico y en las gestiones con las administraciones públicas.

La Directiva Europea sobre un marco comunitario para la firma electrónica [ i.3 ] define la firma electrónica como : «Los datos en formato electrónico que se adjuntan o se asocian lógicamente a otros datos electrónicos y que sirve como Método de autenticación «.

Las normas EN 319 122-1  ( CAdES ) y EN 319 132-1  ( XAdES ) definen formatos para la firma electrónica en línea con esta definición . Estos formatos incluyen modos de uso mediante los cuales la firma se disocia de los datos a los que se aplica. La norma EN 319 162 especifica el uso de estructuras de contenedores para vincular firmas disociadas («detached»), tanto Firmas CAdES como firmas XAdES  o  sellos de tiempo (RFC 3161), con uno o más objetos firmados a de los que se derivan las firmas.

Conviene recordar la denominación anterior de estas normas:

  • CAdES: EN 319 122 anteriormente TS 101 733. Firmas electrónicas avanzadas usando sintaxis ASN.1 y basado en el formato CMS
  • XAdES: EN 319 132 anteriormente TS 101 903, Firmas electrónicas avanzadas usando sintaxis y formato XML