Guía técnica para decodificar formatos ASN.1, DER y PKCS
En el mundo de la seguridad y la criptografía, los datos rara vez se almacenan en formatos legibles por humanos como JSON o XML. En su lugar, se empaquetan en estructuras binarias densas que siguen estándares establecidos hace décadas. Si alguna vez se ha encontrado con un archivo .der, .p12 o .csr y se ha preguntado qué hay dentro, se ha topado con la familia ASN.1.
Esta guía explica cómo funcionan estos formatos binarios y cómo decodificarlos.
1. ¿Qué es ASN.1?
ASN.1 (Abstract Syntax Notation One) es un lenguaje de descripción de interfaz estándar para definir estructuras de datos que se pueden serializar y deserializar de forma multiplataforma. Es el "código fuente" de los datos de seguridad.
Codificación DER
Mientras que ASN.1 define la estructura, DER (Distinguished Encoding Rules) define cómo esa estructura se convierte en binario. DER es una codificación de etiqueta-longitud-valor (TLV), lo que significa que cada dato comienza con un byte que identifica su tipo (etiqueta), seguido de su longitud y luego los datos reales.
2. Decodificación de formatos binarios comunes
Decodificador de CSR (Solicitud de firma de certificado)
Un CSR contiene su clave pública e información de identidad. Generalmente está codificado en Base64 (formato PEM), pero por debajo, es una estructura ASN.1 codificada en DER.
- Cómo decodificar: Puede usar OpenSSL (
openssl req -in request.csr -noout -text) o un decodificador de CSR en línea para ver el Sujeto, la Organización y la Clave Pública.
Decodificador de PKCS#7 (P7B)
PKCS#7 se utiliza a menudo para distribuir una cadena de certificados. Generalmente contiene el certificado y cualquier certificado intermedio necesario para verificarlo.
- Cómo decodificar: A diferencia de un certificado simple, un archivo PKCS#7 puede contener múltiples objetos. Decodificarlo revela la "bolsa" de certificados que contiene.
Decodificador de PKCS#12 (P12/PFX)
PKCS#12 es un archivo protegido por contraseña que puede almacenar una clave privada y su certificado correspondiente.
- Cómo decodificar: Debido a que está cifrado, debe tener la contraseña. Decodificarlo le permite extraer la clave privada y el certificado en archivos PEM separados.
3. ASN.1 y DER: La vista de "árbol"
Cuando decodifica un archivo DER sin procesar (como un certificado X.509), obtiene una estructura similar a un árbol:
- SEQUENCE: Una lista de elementos.
- OBJECT IDENTIFIER (OID): Una serie de números (como
2.5.4.3) que representan un campo específico (por ejemplo, "Common Name"). - BIT STRING / OCTET STRING: Datos binarios sin procesar, que a menudo contienen la clave pública o la firma.
4. Visualización de claves PGP y GPG
Aunque PGP (Pretty Good Privacy) utiliza su propio formato basado en paquetes (RFC 4880), comparte el mismo objetivo que X.509: vincular una identidad a una clave pública.
- Visor de claves PGP: La inspección de una clave PGP revela los ID de usuario, las fechas de creación y las subclaves utilizadas para la firma y el cifrado.
Resumen de herramientas de decodificación
| Formato | Extensión | Tipo de contenido | Cómo "ver" el interior |
|---|---|---|---|
| X.509 | .der, .crt |
Certificado público | openssl x509 -inform der -text |
| CSR | .csr |
Solicitud de firma | openssl req -text -noout |
| PKCS#12 | .p12, .pfx |
Certificado + Clave privada | openssl pkcs12 -info |
| PGP | .asc, .gpg |
Clave/Mensaje PGP | gpg --list-packets |
Conclusión
Decodificar formatos de seguridad binarios es como resolver un rompecabezas. Una vez que comprende que casi todo en la PKI moderna se basa en los cimientos de ASN.1 y DER, los bytes "aleatorios" comienzan a tener sentido. Ya sea que esté utilizando herramientas de línea de comandos como OpenSSL o decodificadores basados en web, poder inspeccionar la estructura sin procesar de un certificado o solicitud es una habilidad esencial para cualquier desarrollador preocupado por la seguridad.
¿Busca una forma de verificar la integridad de los archivos? Use nuestro Generador de hash para calcular sumas de verificación para sus archivos de seguridad.