Certificados Digitales

Un certificado Digital es un fichero informático con una estructura de datos que contiene información sobre una entidad (por ejemplo una clave pública, una identidad o un conjunto de privilegios), firmada por otra entidad, considerada por una colección de otras entidades como una autoridad para este tipo de contenido. La firma de la estructura de datos agrupa la información que contiene de forma que no puede ser modificada sin que esta modificación sea detectada.

Tipos

La información contenida en un certificado depende del propósito para el cual fue creado el certificado. Podemos clasificar los certificado atendiendo al propósito en:1

  • Certificados de clave pública. Asocian una clave pública a alguna representación de la identidad de una entidad. La clave privada asociada a dicha clave pública es asumida que está en posesión de dicha entidad. Además se pueden incluir otras informaciones relevante como el perido de validad, identificador de los algoritmos para los cuales se puede usar la clave pública o políticas o restricciones de uso de dicho certificado. Son usados principalmente en protocolos relacionados con la autenticación de entidades.

  • Certificados de atributos. Normalmente no contienen claves públicas, sino que asocian otro tipo de información (ej roles, derechos de uso o privilegios) a alguna representación de la identidad de una entidad. Son usados principalmente en protocolos relacionados con la autorización de entidades.

Formatos

Se han definido varios formatos, entre los más importantes se encuentran:

  • X.509
  • SPKI
  • PGP
  • SAML

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ó en 1988. El mismo se encuentra en la actualidad en la versión 3, el cual posee los siguientes elementos.

  • 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.

Bibliografía