ASN.1
O que é ASN.1?
ASN.1Abstract Syntax Notation One: uma norma ITU-T (serie X.680) que descreve estruturas de dados usadas em criptografia e telecomunicacoes de forma independente da linguagem.
ASN.1 (Abstract Syntax Notation One) e uma notacao formal, definida em ITU-T X.680-X.681, para descrever dados estruturados (inteiros, sequencias, conjuntos, escolhas e tipos com etiqueta) de forma independente de qualquer linguagem de programacao ou CPU. A norma complementar X.690 define as codificacoes binarias: BER (basica), CER, DER (distintiva), enquanto X.691 define PER (compactada). Cada elemento e um triplo tag-length-value (TLV), razao pela qual um certificado X.509 e literalmente um SEQUENCE de TBSCertificate, signatureAlgorithm e signatureValue.
ASN.1 sustenta X.509/PKI, CMS/PKCS#7, PKCS#12, LDAP, Kerberos, SNMP e a sinalizacao de telecomunicacoes (3GPP S1AP/NGAP, GSM MAP). DER e importante para a seguranca: impoe uma unica codificacao canonica (comprimento definido, inteiros minimos, SET OF ordenado), de modo que uma assinatura ou hash sobre uma estrutura ASN.1 e reproduzivel e nao pode ser recodificado silenciosamente. A permissividade do BER (comprimentos indefinidos, etiquetas redundantes) e uma fonte classica de diferencas entre parsers (parser differentials) e de truques para contornar assinaturas.
Como a analise do certificado ocorre antes da autenticacao, os decodificadores ASN.1 sao uma superficie de ataque de alto valor. Falhas reais incluem CVE-2016-2108 (corrupcao de memoria por "zero negativo" num campo ANY do OpenSSL), CVE-2021-3712 (leitura alem dos limites em ASN1_STRINGs nao terminados em NUL, vazando memoria de chaves) e CVE-2022-0778 (um laco infinito alcancavel ao analisar um certificado manipulado). Defesas: usar decodificadores seguros na memoria ou reforcados por fuzzing, impor DER estrito e limitar a profundidade de aninhamento e o comprimento.
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]● Exemplos
- 01
Um certificado X.509 e um SEQUENCE de TBSCertificate, signatureAlgorithm e signatureValue, codificado em DER.
- 02
As mensagens 3GPP S1AP entre um eNodeB e um MME sao descritas em ASN.1 e codificadas em PER.
● Perguntas frequentes
O que é ASN.1?
Abstract Syntax Notation One: uma norma ITU-T (serie X.680) que descreve estruturas de dados usadas em criptografia e telecomunicacoes de forma independente da linguagem. Pertence à categoria Criptografia da cibersegurança.
O que significa ASN.1?
Abstract Syntax Notation One: uma norma ITU-T (serie X.680) que descreve estruturas de dados usadas em criptografia e telecomunicacoes de forma independente da linguagem.
Como se defender contra ASN.1?
As defesas contra ASN.1 costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para ASN.1?
Nomes alternativos comuns: Abstract Syntax Notation One, X.680.