Zum Inhalt springen
ecdsa.com

ASN.1 (Abstract Syntax Notation One)

Die Sprache aus ITU-T X.680 zur Beschreibung von Datenstrukturen unabhängig von ihrer Kodierung; mit ihr sind X.509-Zertifikate, CMS, Schlüssel im Format PKCS #8, OCSP, LDAP und Telekommunikationsprotokolle definiert.
Auch geschrieben alsASN.1Abstract Syntax Notation OneX.680

Ein ASN.1-Modul deklariert Typen; RFC 5280 definiert zum Beispiel Certificate als SEQUENCE aus tbsCertificate, signatureAlgorithm (ein AlgorithmIdentifier) und signatureValue (ein BIT STRING). Bausteine sind SEQUENCE, SET, CHOICE, OPTIONAL- und DEFAULT-Felder, kontextspezifische Tags ([0], [1]) mit IMPLICIT- oder EXPLICIT-Tagging sowie primitive Typen wie INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER und die String- und Zeittypen.

Kodierungsregeln machen aus einem Wert Bytes: BER und seine kanonische Teilmenge DER (X.690) für PKI, PER für kompakte Telekommunikationsnachrichten, XER und JER für XML und JSON. Das meiste sicherheitsrelevante ASN.1 liegt als DER vor.

Das Parsen von ASN.1 hat eine lange Fehlergeschichte (Längenüberläufe, Verwechslung von BER und DER, Abweichungen bei der Behandlung von Tags); nutze daher einen gepflegten Parser und schreibe nie selbst einen für nicht vertrauenswürdige Eingaben. Einen Dump lesen zu können ist beim Debuggen sehr nützlich: openssl asn1parse -i oder der ASN.1-Explorer zeigen den Baum mit Offsets.

Standards und Quellen

Alle Begriffe