ASN.1
¿Qué es ASN.1?
ASN.1Abstract Syntax Notation One: un estandar ITU-T (serie X.680) que describe estructuras de datos usadas en criptografia y telecomunicaciones de forma independiente del lenguaje.
ASN.1 (Abstract Syntax Notation One) es una notacion formal, definida en ITU-T X.680-X.681, para describir datos estructurados (enteros, secuencias, conjuntos, alternativas y tipos etiquetados) con independencia de cualquier lenguaje de programacion o CPU. El estandar complementario X.690 define las codificaciones binarias: BER (basica), CER, DER (distinguida), mientras que X.691 define PER (empaquetada). Cada elemento es un triple tag-length-value (TLV), razon por la cual un certificado X.509 es literalmente un SEQUENCE de TBSCertificate, signatureAlgorithm y signatureValue.
ASN.1 sustenta X.509/PKI, CMS/PKCS#7, PKCS#12, LDAP, Kerberos, SNMP y la senalizacion de telecomunicaciones (3GPP S1AP/NGAP, GSM MAP). DER importa para la seguridad: impone una unica codificacion canonica (longitud definida, enteros minimos, SET OF ordenado), de modo que una firma o un hash sobre una estructura ASN.1 es reproducible y no puede recodificarse en silencio. La permisividad de BER (longitudes indefinidas, etiquetas redundantes) es una fuente clasica de diferencias entre parsers (parser differentials) y trucos para eludir firmas.
Como el analisis del certificado ocurre antes de la autenticacion, los decodificadores ASN.1 son una superficie de ataque de alto valor. Fallos reales incluyen CVE-2016-2108 (corrupcion de memoria por "cero negativo" en un campo ANY de OpenSSL), CVE-2021-3712 (lectura fuera de limites en ASN1_STRINGs no terminados en NUL, que filtra memoria de claves) y CVE-2022-0778 (un bucle infinito alcanzable al analizar un certificado manipulado). Defensas: usar decodificadores seguros en memoria o reforzados con fuzzing, aplicar DER estricto y limitar la profundidad de anidamiento y la longitud.
flowchart LR
S[ASN.1 schema in X.680] --> M[In-memory structure]
M --> ENC{Encoding rules}
ENC -->|DER canonical| D[Bytes for signing / PKI]
ENC -->|BER permissive| B[Bytes - interop only]
ENC -->|PER compact| P[Bytes for telecom links]
D --> W[Wire / stored certificate]
B --> W
P --> W
W --> DEC[TLV decoder]
DEC --> V{Strict DER & bounds checks?}
V -->|Yes| OK[Validated object]
V -->|No| VULN[Parser differential / overflow / DoS]● Ejemplos
- 01
Un certificado X.509 es un SEQUENCE de TBSCertificate, signatureAlgorithm y signatureValue, codificado en DER.
- 02
Los mensajes S1AP de 3GPP entre un eNodeB y un MME se describen en ASN.1 y se codifican con PER.
● Preguntas frecuentes
¿Qué es ASN.1?
Abstract Syntax Notation One: un estandar ITU-T (serie X.680) que describe estructuras de datos usadas en criptografia y telecomunicaciones de forma independiente del lenguaje. Pertenece a la categoría de Criptografía en ciberseguridad.
¿Qué significa ASN.1?
Abstract Syntax Notation One: un estandar ITU-T (serie X.680) que describe estructuras de datos usadas en criptografia y telecomunicaciones de forma independiente del lenguaje.
¿Cómo defenderse de ASN.1?
Las defensas contra ASN.1 combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para ASN.1?
Nombres alternativos comunes: Abstract Syntax Notation One, X.680.