ASN.1 y BER


Ahora que la codificación en XML está avanzando tanto (también en las firmas electrónicas), hay menos referencias a las formas de codificación basadas en ASN.1.

Los estándares producidos por el antiguo Comité Consultivo Internacional de Telégrafía y Telefonía (CCITT), que ahora se denomina Unión Internacional de Telecomunicaciones (ITU) basan sus especificaciones en ASN.1 . Cada vez más, las normas del Grupo de trabajo de ingeniería de Internet (IETF) se basan también ASN.1  para establecer sus recomendaciones de forma precisa.

Puede decirse que ASN.1 refleja en una página lo que de otra forma necesitaría cinco o seis páginas para describir lo mismo en otro formato.

Abstract Syntax Notation One ( ASN.1) es un lenguaje basado en la notación Backus-Naur form (BNF) para definir especificaciones de formatos independientemente de la implementación. Es el lenguaje que emplean los autores de los estándares.  ASN.1 facilita la comunicación entre los profesionales y los miembros de los comités de normalización al ofrecer un lenguaje común para describir un estándar. ASN.1 se define en las recomendaciones X.209 y X.690 de ITU-T.

ASN.1 define:

  • Qué es un «tipo».
  • Qué es un «módulo» y qué apariencia debe tener.
  • Qué es un ENTERO.
  • Qué es un valor BOOLEANO.
  • Qué es un «tipo estructurado».
  • Qué significan ciertas palabras clave (por ejemplo, BEGIN, END, IMPORT, EXPORT, EXTERNAL, etc.).
  • Cómo «etiquetar» un tipo para que se pueda codificar correctamente.

BER es el acrónimo de Basic Encoding Rules (Reglas básicas de codificación) de ASN.1. BER se define en las recomendaciones X.209 y X.690 de ITU-T. Es un conjunto de reglas para codificar datos ASN.1 en una secuencia de octetos que se pueden transmitir a través de un vínculo de comunicaciones. Hay otros métodos de codificación de datos ASN.1, entre los que se incluyen Distinguished Encoding Rules (DER, Reglas de codificación distinguible), Canonical Encoding Rules (CER, Reglas de codificación canónica), Packing Encoding Rules (PER, Reglas de codificación de compactas) y XML Encoding Rules (XER, Reglas de codificación XML).

Cada método de codificación tiene su aplicación, pero BER y DER son los métodos más utilizados. En particular DER cuando se habla de firma electrónica y certificación.

El estándar ha evolucionado desde la versión de 1998 a la de 2002, básicamente en cuanto a la referencia normativa (CCITT/ITU)  y las diferencias pueden verse aquí.

En general, no existen cambios en lo que se refiere a los bits de una secuencia («bits on the wire») cuando se cambia de ASN.1:1988 según se define en la Rec. X.208 de CCITT  y BER:1988 según se define en la Rec. X.209 de CCITT a ASN.1:2002 según se define en las Rec. X.680-X.683 de ITU-T (que coinciden con ISO/IEC 8824-1,2,3,4) y BER:2002 según se define en la Rec. X.690  de ITU-T (que coincide con ISO/IEC8825-1). De hecho no hay posibilidad de que una parte de la comunicación distinga si la otra está usando  ASN.1:1988 o ASN.1:2002.

Una de las herramientas para analizar secuencias ASN.1 es  lapo.it de Lapo Luchini  <lapo@lapo.it> y yo he adaptado una versión incluyendo los OIDs de  política de varios prestadores de servicios de certificación en especial para identificar el uso de dispositivo cualificado de creación de firma/sello cuando no se usa el OID convencional (o, incluso si se usan ambos): Contenido de un certificado en ASN.1 en inza.com

2 comentarios en “ASN.1 y BER

  1. Avatar de RafaelRafael

    Me ha parecido muy interesante tu artículo. He llegado a él buscando la forma de firmar un fichero cualquiera, no un PDF, y enviar la firma como adjunto al fichero enviado … supongo que es el método alternativo al PDF, ODT o DOC firmados … concretamente quiero firmar páginas web (en formato PHF). ¿Tienes idea con qué software gratuito se puede firmar y validar?.

    Gracias de cualquier manera.

    Responder
  2. Pingback: 1.000.000 de visitas « Todo es electrónico

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.