4.2 Certificados X.509
El formato de certificados X.509 es un estándar del ITU-T
(International Telecommunication Union-Telecommunication
Standarization Sector) y el ISO/IEC (International
Standards Organization / International Electrotechnical
Commission) que se publicó por primera vez en 1988. El
formato de la versión 1 fue extendido en 1993 para incluir dos
nuevos campos que permiten soportar el control de acceso a
directorios. Después de emplear el X.509 v2 para intentar
desarrollar un estándar de correo electrónico seguro, el formato
fue revisado para permitir la extensión con campos adicionales,
dando lugar al X.509 v3, publicado en 1996.
Los elementos del formato de un certificado X.509 v3 son:
- Versión. El campo de versión contiene el número
de versión del certificado codificado. Los valores
aceptables son 1, 2 y 3.
- Número de serie del certificado. Este campo es
un entero asignado por la autoridad certificadora. Cada
certificado emitido por una CA debe tener un número de serie
único.
- Identificador del algoritmo de firmado. Este
campo identifica el algoritmo empleado para firmar el
certificado (como por ejemplo el RSA o el DSA).
- Nombre del emisor. Este campo identifica la CA
que ha firmado y emitido el certificado.
- Periodo de validez. Este campo indica el
periodo de tiempo durante el cual el certificado es válido y
la CA está obligada a mantener información sobre el estado
del mismo. El campo consiste en una fecha inicial, la fecha
en la que el certificado empieza a ser válido y la fecha
después de la cual el certificado deja de serlo.
- Nombre del sujeto. Este campo identifica la
identidad cuya clave pública está certificada en el campo
siguiente. El nombre debe ser único para cada entidad
certificada por una CA dada, aunque puede emitir más de un
certificado con el mismo nombre si es para la misma
entidad.
- Información de clave pública del sujeto. Este
campo contiene la clave pública, sus parámetros y el
identificador del algoritmo con el que se emplea la
clave.
- Identificador único del emisor. Este es un
campo opcional que permite reutilizar nombres de
emisor.
- Identificador único del sujeto. Este es un
campo opcional que permite reutilizar nombres de
sujeto.
- Extensiones.
Las extensiones del X.509 v3 proporcionan una manera de asociar
información adicional a sujetos, claves públicas, etc. Un campo
de extensión tiene tres partes:
- Tipo de extensión. Es un identificador de
objeto que proporciona la semántica y el tipo de información
(cadena de texto, fecha u otra estructura de datos) para un
valor de extensión.
- Valor de la extensión. Este subcampo contiene
el valor actual del campo.
- Indicador de importancia. Es un flag
que indica a una aplicación si es seguro ignorar el campo de
extensión si no reconoce el tipo. El indicador proporciona
una manera de implementar aplicaciones que trabajan de modo
seguro con certificados y evolucionan conforme se van
añadiendo nuevas extensiones.
El ITU y el ISO/IEC han desarrollado y publicado un conjunto de
extensiones estándar en un apéndice al X.509 v3:
- Limitaciones básicas. Este campo indica si el
sujeto del certificado es una CA y el máximo nivel de
profundidad de un camino de certificación a través de esa
CA.
- Política de certificación. Este campo contiene
las condiciones bajo las que la CA emitió el certificado y
el propósito del certificado.
- Uso de la clave. Este campo restringe el
propósito de la clave pública certificada, indicando, por
ejemplo, que la clave sólo se debe usar para firmar, para la
encriptación de claves, para la encriptación de datos,
etc. Este campo suele marcarse como importante, ya que la
clave sólo está certificada para un propósito y usarla para
otro no estaría validado en el certificado.
El formato de certificados X.509 se especifica en un sistema de
notación denominado sintaxis abstracta uno
(Abstract Sintax One o ASN-1). Para la transmisión de
los datos se aplica el DER (Distinguished Encoding
Rules o reglas de codificación distinguible), que
transforma el certificado en formato ASN-1 en una secuencia de
octetos apropiada para la transmisión en redes reales.