Saltar al contenido
ecdsa.com

ASN.1 (notación sintáctica abstracta uno)

El lenguaje ITU-T X.680 para describir estructuras de datos con independencia de su codificación, que se usa para definir certificados X.509, CMS, claves PKCS #8, OCSP, LDAP y protocolos de telecomunicaciones.
También se escribeASN.1Abstract Syntax Notation OneX.680

Un módulo ASN.1 declara tipos; el RFC 5280, por ejemplo, define Certificate como una SEQUENCE de tbsCertificate, signatureAlgorithm (un AlgorithmIdentifier) y signatureValue (un BIT STRING). Los bloques de construcción son SEQUENCE, SET, CHOICE, los campos OPTIONAL y DEFAULT, las etiquetas específicas del contexto ([0], [1]) con etiquetado IMPLICIT o EXPLICIT, y tipos primitivos como INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER y los tipos de cadena y de tiempo.

Las reglas de codificación convierten un valor en bytes: BER y su subconjunto canónico DER (X.690) para PKI, PER para mensajes compactos de telecomunicaciones, XER y JER para XML y JSON. La mayor parte del ASN.1 relevante para la seguridad es DER.

El análisis de ASN.1 tiene un largo historial de errores (desbordamientos de longitud, confusión entre BER y DER, discrepancias en el manejo de etiquetas), así que usa un analizador mantenido y nunca escribas uno a mano para entradas que no sean de confianza. Saber leer un volcado es una habilidad práctica de depuración: openssl asn1parse -i o el explorador de ASN.1 muestran el árbol con los desplazamientos.

Estándares y referencias

Todos los términos