Pular para o conteúdo
ecdsa.com

ASN.1 (Abstract Syntax Notation One)

A linguagem do ITU-T X.680 para descrever estruturas de dados independentemente da sua codificação, usada para definir certificados X.509, CMS, chaves PKCS #8, OCSP, LDAP e protocolos de telecomunicações.
Também escrito comoASN.1Abstract Syntax Notation OneX.680

Um módulo ASN.1 declara tipos; a RFC 5280, por exemplo, define Certificate como uma SEQUENCE de tbsCertificate, signatureAlgorithm (um AlgorithmIdentifier) e signatureValue (uma BIT STRING). Os blocos de construção são SEQUENCE, SET, CHOICE, campos OPTIONAL e DEFAULT, tags específicas de contexto ([0], [1]) com marcação IMPLICIT ou EXPLICIT e tipos primitivos como INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER (identificador de objeto) e os tipos de string e de tempo.

As regras de codificação transformam um valor em bytes: BER e seu subconjunto canônico DER (X.690) para PKI, PER para mensagens compactas de telecomunicações, XER e JER para XML e JSON. A maior parte do ASN.1 relevante para segurança é DER.

O parsing de ASN.1 tem um longo histórico de bugs (estouros de comprimento, confusão entre BER e DER, divergências no tratamento de tags); por isso, use um parser mantido e nunca escreva o seu próprio para entradas não confiáveis. Ler um dump é uma habilidade prática de depuração: openssl asn1parse -i ou o explorador de ASN.1 mostram a árvore com os offsets.

Padrões e referências

Todos os termos