Abstract Syntax Notation One

The Abstract Syntax Notation One (ASN.1, Abstract Syntax Notation One German ) is a description language for defining data structures, and guidelines for the implementation of data structures and elements in a network standard format. It is a common standard of the ITU -T ( International Telecommunication Union - Telecommunication Standardization Sector ) and ISO (International Organization for Standardization ).

The default is the abstract description of data types, without going into the computer internal representation. The notation is defined in the ITU- T standards X.680ff. The related standards define various X.690ff Encoding Rules ( encoding rules ) as the ASN.1 data values ​​are encoded at the bit level. With the help of ASN.1 and a common coding rule ( " Encoding Rule" ) to exchange systems with different internal data representations news.

ASN.1 is a common way to describe the message elements of protocols of the OSI model clearly, and is used by OSI -compliant X.500 and X.509 techniques such as, but also Internet protocols such as SNMP or LDAP. Width applies ASN.1 also in the telecommunications sector, for example in the GSM standards for billing of roaming calls in TAP3 files and UMTS.

Most are encoded in ASN.1 specified data with easy- to-use Basic Encoding Rules (BER ). In areas where a space-saving coding is desired (for example, mobile phones), the Packed Encoding Rules (PER) are preferred. Furthermore, there are the injective Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER ), the latter being more common. The Distinguished Encoding Rules are a subset of the BER and are an encoding ASN.1 data description that is completely unique at the bit level. There are in which the thus in contrast to the BER for each ASN.1 value is only one possible coding. This makes them suitable for cases in which ASN.1 data must be digitally signed or to be exchanged across platforms, such as digital certificates (see X.509).

Syntax and Semantics

ASN.1 is described in a BNF -like representation, such as:

Record :: = SEQUENCE {   head header,   data- Data OPTIONAL   } Header :: = IA5String Data :: = SET OF INTEGER In the next example, a module is agreed. It is possible to find this module by means of Object Identifiers. This is done by appending the module name an object reference ( Object Reference ), eg:

Module -name { joint- iso- itu -t ( 2 ) example ( 999) } DEFINITIONS :: = BEGIN   Data structure :: = SEQUENCE    {     part INTEGER,     fragment IA5String    } END As can be seen in this example, is in front of the term by means of the braces DEFINITIONS an object reference, that is created, an ID. The object reference refers to the place in a tree of references or agreements to which the correct object is found. The ID of this example refers to the first root in the first level of the reference structure. Modules in the same form as above one shown, are necessary to make an agreement, such as data to be transferred. Data as defined in the above example, are transferred as follows: { 2, " Part 2 "}.

ASN.1 knows this, inter alia,

  • Elementary types, such as BIT STRING ( binary string )
  • IA5String ( coded according to IA5 string table, see ISO 646)
  • CHOICE (sum type)
  • SEQUENCE ( ordered sequence of different types)
  • SEQUENCE OF ( ordered sequence of the same type )
  • SET (unordered sequence of different types)
  • SET OF (unordered sequence of the same type)
  • OBJECT IDENTIFIER ( globally unique identifier )


  • X.208: X.680 replaced by
  • X.209: X.690 replaced by
  • X.680: Specification of Basic Notation
  • X.681: Information Object Specification
  • X.682: Constraint Specification
  • X.683: Parameterization of ASN.1 Specifications
  • X.690: Specification of Basic Encoding Rules (BER ), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER )
  • X.691: Specification of Packed Encoding Rules (PER)
  • X.692: Specification of Encoding Control Notation ( ECN)
  • X.693: XML Encoding Rules
  • X.694: Mapping W3C XML Schema Definitions into ASN.1