Guia técnico para decodificação de formatos ASN.1, DER e PKCS
No mundo da segurança e da criptografia, os dados raramente são armazenados em formatos legíveis por humanos, como JSON ou XML. Em vez disso, eles são compactados em estruturas binárias densas, seguindo padrões estabelecidos há décadas. Se você já encontrou um arquivo .der, .p12 ou .csr e se perguntou o que há dentro, você conheceu a família ASN.1.
Este guia explica como esses formatos binários funcionam e como decodificá-los.
1. O que é ASN.1?
ASN.1 (Abstract Syntax Notation One) é uma linguagem de descrição de interface padrão para definir estruturas de dados que podem ser serializadas e desserializadas de forma multiplataforma. É o "código-fonte" para dados de segurança.
Codificação DER
Enquanto o ASN.1 define a estrutura, o DER (Distinguished Encoding Rules) define como essa estrutura é transformada em binário. O DER é uma codificação de tag-comprimento-valor (TLV), o que significa que cada dado começa com um byte identificando seu tipo (tag), seguido por seu comprimento e, em seguida, os dados reais.
2. Decodificação de formatos binários comuns
Decodificador de CSR (Certificate Signing Request)
Um CSR contém sua chave pública e informações de identidade. Geralmente é codificado em Base64 (formato PEM), mas, por baixo, é uma estrutura ASN.1 codificada em DER.
- Como decodificar: Você pode usar o OpenSSL (
openssl req -in request.csr -noout -text) ou um decodificador de CSR online para ver o Assunto, a Organização e a Chave Pública.
Decodificador PKCS#7 (P7B)
O PKCS#7 é frequentemente usado para distribuir uma cadeia de certificados. Ele geralmente contém o certificado e quaisquer certificados intermediários necessários para verificá-lo.
- Como decodificar: Ao contrário de um certificado simples, um arquivo PKCS#7 pode conter vários objetos. Decodificá-lo revela o "pacote" de certificados internos.
Decodificador PKCS#12 (P12/PFX)
O PKCS#12 é um arquivo protegido por senha que pode armazenar uma chave privada e seu certificado correspondente.
- Como decodificar: Como é criptografado, você deve ter a senha. Decodificá-lo permite extrair a chave privada e o certificado em arquivos PEM separados.
3. ASN.1 e DER: A visualização em "árvore"
Quando você decodifica um arquivo DER bruto (como um certificado X.509), obtém uma estrutura semelhante a uma árvore:
- SEQUENCE: Uma lista de itens.
- OBJECT IDENTIFIER (OID): Uma série de números (como
2.5.4.3) que representam um campo específico (por exemplo, "Common Name"). - BIT STRING / OCTET STRING: Dados binários brutos, muitas vezes contendo a chave pública ou a assinatura.
4. Visualização de chaves PGP e GPG
Embora o PGP (Pretty Good Privacy) use seu próprio formato baseado em pacotes (RFC 4880), ele compartilha o mesmo objetivo do X.509: vincular uma identidade a uma chave pública.
- Visualizador de chaves PGP: Inspecionar uma chave PGP revela os IDs de usuário, as datas de criação e as subchaves usadas para assinatura e criptografia.
Resumo das ferramentas de decodificação
| Formato | Extensão | Tipo de conteúdo | Como "ver" o interior |
|---|---|---|---|
| X.509 | .der, .crt |
Certificado público | openssl x509 -inform der -text |
| CSR | .csr |
Req. de Assinatura | openssl req -text -noout |
| PKCS#12 | .p12, .pfx |
Certificado + Chave Privada | openssl pkcs12 -info |
| PGP | .asc, .gpg |
Chave/Mensagem PGP | gpg --list-packets |
Conclusão
Decodificar formatos de segurança binários é como resolver um quebra-cabeça. Depois de entender que quase tudo na PKI moderna é construído sobre a base do ASN.1 e do DER, os bytes "aleatórios" começam a fazer sentido. Quer você esteja usando ferramentas de linha de comando como o OpenSSL ou decodificadores baseados na web, ser capaz de inspecionar a estrutura bruta de um certificado ou solicitação é uma habilidade essencial para qualquer desenvolvedor consciente da segurança.
Procurando uma maneira de verificar a integridade do arquivo? Use nosso Gerador de Hash para calcular somas de verificação para seus arquivos de segurança.