XGEN: Una breve introducción a ASN.1 y BER

Seleccione idioma Seleccione idioma
Id. de artículo: 252648 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describen Abstract Syntax Notation One (ASN.1) y Basic Encoding Rules (BER), y se explican las diferencias existentes entre ambos.

Muchos trabajadores de tecnología de la información, incluyendo a profesionales veteranos, suelen tener una cierta confusión sobre lo que son ASN.1 y BER, las diferencias existentes entre ellos o incluso por qué es importante la distinción. Su confusión es comprensible cuando incluso esas personas que conocen bien ASN.1 y BER utilizan con frecuencia los términos de forma incorrecta.

Puesto que ASN.1 es el lenguaje de los estándares, es muy frecuente ver recomendaciones de estándares escritas en ASN.1. Los profesionales de soporte técnico, los consultores y los especialistas en tecnología de la información se benefician de sus conocimientos de ASN.1 porque les permite profundizar en los estándares, y descodificar y entender el contenido de los datos cuyos problemas solucionan. Los estándares más frecuentes escritos en ASN.1 son los producidos por el Comité Consultivo Internacional de Telégrafos y teléfonos (CCITT) y por la Unión Internacional de Telecomunicaciones (ITU). Sin embargo, los miembros del Grupo de trabajo de ingeniería de Internet (IETF) cada vez utilizan más ASN.1 para establecer sus recomendaciones sucintamente. ASN.1 dice en una página lo que de otra forma necesitaría cinco o seis páginas para escribir lo mismo en otro formato.

A continuación se muestra una lista de estándares utilizados con frecuencia que están escritos en ASN.1:
  • X.400 (Mensajería electrónica)
  • X.500 (Servicios de directorios)
  • X.200 (Comunicaciones de red)
  • Solicitud de comentarios (RFC) 2251-2256 (Protocolo ligero de acceso a directorios o LDAP)
  • Hay demasiadas RFC como para mencionarlas todas
Cualquier especialista en informática o en comunicaciones de datos que realmente desee marcar la diferencia debe tener al menos unos conocimientos básicos de ASN.1 y BER. Puesto que tanto Microsoft Windows 2000 como Microsoft Exchange 2000 Server implementan los estándares mencionados anteriormente en un formato o en otro, el hecho de tener soltura para leer y entender ASN.1 y BER hace que la solución de problemas de esos dos productos sea mucho más sencilla.

Más información

ASN.1

Abstract Syntax Notation One (más conocido como ASN.1) es un lenguaje para definir estándares independientemente de la implementación. Es el lenguaje que emplean los autores de estándares. Cuando John Smith de CalTech desea escribir una recomendación para estandarizar los procedimientos que sigue un componente para hablar con otro, escribe la recomendación en notación ASN.1 y envía la recomendación a un organismo de estándares como la ITU. ASN.1 facilita la comunicación entre los profesionales y los miembros del comité 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.


Por ejemplo, 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.
ASN.1 no tiene relación con ningún estándar, método de codificación, lenguaje de programación o plataforma de hardware en concreto. Se trata simplemente de un lenguaje para definir estándares. O dicho de otro modo: los estándares se escriben en ASN.1.

BER

BER es el acrónimo en inglés de las 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 completa), Canonical Encoding Rules (CER, Reglas de codificación canónica) y Packing Encoding Rules (PER, Reglas de codificación de empaquetamiento). Cada método de codificación tiene su aplicación, pero BER parece ser el método más utilizado y del que más se habla.

BER define lo siguiente:
  • Métodos para codificar valores ASN.1.
  • Reglas para decidir cuándo se utiliza un método determinado.
  • El formato de determinados octetos de los datos.

Comparación de ASN.1 y BER

ASN.1 es como un lenguaje de programación (como C), mientras que BER es como un compilador para ese lenguaje. Los compiladores son específicos de la plataforma, mientras que muchos lenguajes de programación de alto nivel no lo son. C define las reglas y el lenguaje para escribir un programa. Un programa no es C; está escrito en C. El programa no es útil hasta que no se compila para una plataforma determinada (como Intel x86). Lo mismo ocurre con ASN.1 y BER. ASN.1 es el lenguaje para escribir un estándar. Un estándar no es ASN.1; está escrito en ASN.1. Los datos que genera un programa que cumple el estándar pueden denominarse "datos ASN.1". Los datos ASN.1 no son útiles (es decir, no se pueden transmitir a través de una LAN) hasta que no se codifican en una secuencia de octetos que se puede descodificar fácilmente en el destino. Para ilustrar esto, a continuación se muestra un ejemplo de estos conceptos derivado del apéndice I de la recomendación X.209 de ITU-T. Se trata de una descripción informal de un registro de datos de personal:
   Nombre:             John P Smith Date of Birth:    17 July 1959 (otros datos)
					
La descripción ASN.1 de un registro de personal (lo estándar) podría ser:
   PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET { Name, title [0]       VisibleString, dateOfBirth [1]          Date, (otros tipos)          }

   Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { givenName       VisibleString, initial         VisibleString, familyName      VisibleString  }
					
Esta descripción ASN.1 describe la apariencia de un registro de personal. Pero lo que es más importante, describe cómo se debe dar formato a los datos de la aplicación para que se conviertan en datos ASN.1 antes de que se realice la codificación.

Después, la aplicación asigna los datos de personal a la estructura de registros de personal (formato de datos ASN.1) y aplica las Reglas básicas de codificación (BER) a los datos ASN.1. He aquí la apariencia que podría tener (con la excepción de que los nombres se convertirían a ASCII):
  Personnel Record     Length   Contents 60         8185 Name     Length  Contents 61       10 VisibleString  Length  Contents 1A             04      "John" VisibleString  Length  Contents 1A             01      "P" VisibleString  Length  Contents 1A             05      "Smith"

                       DateofBirth     Length  Contents A0              0A Date    Length  Contents 43      08      "19590717"
					
Una vez dicho y hecho todo, lo que realmente se transmite (o más específicamente, lo que se convierte en la parte de datos del paquete en la siguiente capa inferior) es:
60 81 85 61 10 1A 04 .... ....  0A 43 08 19 59 07 17
					

Referencias

Para obtener más información acerca de ASN.1, consulte las recomendaciones X.680 a X.683 de ITU-T.
Para obtener más información acerca de BER, consulte la propia recomendación (recomendación X.690 o X.691 de ITU-T).

Para obtener más información al respecto, lea "Changing from ASN.1:1988 to ASN.1:2002" (Cambiar de ASN.1:1988 a ASN.1:2002" en la página Web del Grupo de estudios 17 de ITU-T:
http://www.itu.int/ITU-T/studygroups/com17/changing-ASN/

Propiedades

Id. de artículo: 252648 - Última revisión: viernes, 16 de junio de 2006 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Exchange Server 5.5 Standard Edition
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Palabras clave: 
kbinfo KB252648

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com