ASN.1 ou "Abstract Syntax Notation number One" é na definição de um dos seus patrocinadores, a ITU-T, uma notação formal usada para descrever, representar, codificar/decodificar, dados a serem  transmitidos em protocolos de telecomunicação -- sua criação data de 1984 (CCITT X.409:1984; ver aqui) -- e, mais presentemente, redes de computadores. É esta capacidade de descrever abstratamente tipos e valores que faz (e sempre fez) do ASN.1 uma poderosa ferramenta de interoperabilidade, tão útil em nossas dias conectados.

Type Tag number
(decimal)
Tag number
(hexadecimal)
INTEGER 2 02
BIT STRING 3 03
OCTET STRING 4 04
NULL 5 05
OBJECT IDENTIFIER 6 06
SEQUENCE and SEQUENCE OF 16 10
SET and SET OF 17 11
PrintableString 19 13
T61String 20 14
IA5String 22 16
UTCTime 23 17

...alguns tipos e suas tags

A tabela mostra alguns tipos presentes na notação, e eles curiosamente estão presentes no dia-a-dia de um certificado digital ICP-Brasil v.3. Se fizermos um dumping em notação ASN.1 ou uma radiografia do certificado da raiz brasileira, por exemplo, os encontraremos um importante object identifier (OID) nesta última versão da AC Raiz brasileira (o leitor interessado pode fazer esta decodificação on line):

OBJECT IDENTIFIER 1.2.840.10045.4.3.4

Ele mostra a adoção da ECDSA no lugar do algoritmo RSA, o OID significa "ecdsaWithSHA512", ANSI X9.62, ou seja, a última chave -- versão 3 -- da AC Raiz foi gerada com o algoritmo de curvas elípticas com o hash sha512 (considerando-se a obsolência do MD5 e do SHA1). Os OIDs (também mantidos pela ITU-T & ISO/IEC) jogam um papel essencial na transferência de dados em rede, pois designam de forma persistente qualquer tipo de objeto, conceito ou "coisa", de forma única (não- ambígua). Possuindo uma forma de árvore hierárquica a "OID tree". Há um repositório on line onde pode-se descobrir facilmente estas árvores de OIDs. O OID acima está em "notação pontual", se escrito em ASN.1 ficarão mais claras as suas inter-relações: {iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3) ecdsa-with-SHA512(4)}.

Continue reading