Gestión de Claves
PROBLEMÁTICA DE LA GESTIÓN DE CLAVES
La gestión de claves constituye uno de los problemas de más difícil solución en la criptografía, siendo necesario resolver cuestiones como la transmisión de las claves a través de un canal seguro y su adecuada distribución entre los usuarios del sistema, el almacenamiento y conservación segura de las claves, y la definición de un procedimiento de revocación de las claves que hayan sido comprometidas.
El ciclo de vida de una clave consta de cinco estados: generación, activación, desactivación, reactivación y destrucción.
En la práctica, en los sistemas criptográficos pueden distinguirse dos tipos de claves:
Claves de corta duración (claves de sesión): se emplean para la encriptación de un único mensaje o para la encriptación de la información intercambiada en una sesión establecida entre dos dispositivos o usuarios.
Claves de larga duración (claves de usuario o claves primarias): se emplean para el servicio de autenticación (es decir, para la autenticación del usuario basada en la técnica de secreto compartido con el servidor) y para garantizar la confidencialidad de los datos, ya sea mediante la encriptación de los datos transmitidos o bien para la protección de datos almacenados en un soporte informático.
También es posible definir una jerarquía de claves, distinguiendo entre las claves maestras y las claves subordinadas o de aplicación. Estas últimas se emplean para encriptar determinados archivos dentro de un sistema de información, mientras que las primeras se utilizan para proteger el acceso a las claves subordinadas.
La organización debe definir y garantizar la correcta implantación de una serie de procedimientos relacionados con la gestión de las claves, especificando quiénes son en cada caso responsables y custodios de las claves, cuál es la jerarquía de claves (para poder aplicar la mayor seguridad a la protección de las claves maestras), y en qué situaciones y tipos de datos tiene que utilizarse cada clave. Dichos procedimientos deben contemplar las actividades asociadas a los cinco estados posibles del ciclo de vida de la clave.
Generación y cambio de claves
Para la creación de las claves puede recurrirse a generadores pseudoaleatorios, que hacen uso de vectores de inicialización basados en la identificación del dispositivo, el estado de sus registros internos, o la fecha y la hora de su reloj interno.
No obstante, conviene tener en cuenta que pueden llevarse a cabo ataques contra estos generadores para tratar de predecir la secuencia pseudoaleatoria obtenida. Por este motivo, se recomienda analizar si se ha obtenido una clave que pueda ser considerada como poco segura para el algoritmo criptográfico utilizado. Asimismo, la organización debe definir e implantar un procedimiento para el cambio de claves, situación que puede ser propiciada por distintas circunstancias: expiración del período de validez de la clave, o clave que haya sido comprometida.
Transmisión de las claves a los distintos usuarios
Pueden identificarse dos tipos de claves: las claves de “encriptación de claves” (claves maestras) y las claves de encriptación de datos, estableciendo de este modo una jerarquía de claves en el sistema criptográfico.
Las claves de “encriptación de claves” se emplean para la transmisión segura de las claves definidas para la encriptación de datos. Por este motivo, se distribuyen manualmente mediante algún procedimiento seguro, aunque también puede incluirse en algún dispositivo para facilitar su distribución (por ejemplo, en una tarjeta chip). El desarrollo de los sistemas basados en la criptografía de clave pública ha venido a facilitar el intercambio de las claves.
Asimismo, existen otros sistemas para la gestión distribuida de claves, basados en “anillo de confianza”, utilizados por las aplicaciones de criptografía como PGP (del idioma inglés, Pretty Good Privacy), que proponen una solución para la introducción de nuevos usuarios en el sistema (en el caso concreto de PGP, éstos deben contar con el respaldo de otros usuarios de confianza).
A la hora de transmitir las claves entre los usuarios es necesario contemplar la posibilidad de que puedan producirse ataques de intermediario (man-in-the-middle), que permitan interceptar las claves sin que los propios afectados lleguen a tener constancia del problema.
Ejemplo de ataque de intermediario man-in-the-middle.
El usuario A envía su clave pública al usuario B, intercepta el usuario C, que a su vez reenvía su clave pública haciéndose pasar por A, actuando como intermediario “invisible” entre ambos.
Para evitar este tipo de situaciones, se recurre a la utilización de Certificados Digitales, que permiten acreditar que una determinada clave pública pertenece a un usuario del sistema.
Activación y utilización de las claves
Una vez que hayan sido activadas dentro del sistema, las claves podrán ser utilizadas para los distintos propósitos que se hayan definido:
- Encriptación de archivos.
- Autenticación de usuarios.
- Encriptación de comunicaciones.
- Generación de firma electrónica.
Almacenamiento de las claves
La organización podrá establecer un determinado procedimiento para que los usuarios puedan almacenar de forma segura las claves difíciles de memorizar en algún componente de almacenamiento, encriptándolas mediante otro algoritmo y una determinada clave de acceso.
Asimismo, puede considerarse la posibilidad de utilizar tarjetas con un chip ROM o tarjetas inteligentes donde se grabe la clave. De este modo, la clave queda asociada a un dispositivo físico (token), que el usuario debe introducir en un lector para poder utilizar la clave.
Destrucción de las claves
La primera medida relacionada con la validez y la destrucción de las claves será la de imponer un determinado intervalo de tiempo para su caducidad. En este sentido, conviene destacar que cuanto mayor sea el período de utilización de una clave, mayor es la posibilidad de que ésta pueda ser comprometida, situación que se produciría, por ejemplo, cuando un usuario perdiese su clave o la anotase en un sitio poco seguro.
Asimismo, cuanto más se utilice una clave mayor será el impacto en la organización provocado por su pérdida o caída en manos de terceros, ya que pueden existir muchos más archivos encriptados por dicha clave. Del mismo modo, cuanto más se utilice una clave, mayor será el interés de otras organizaciones y personas en poder romper el sistema mediante distintas técnicas de criptoanálisis, debido a que en ese caso mayor será la recompensa a su esfuerzo.
Además, dispondrán de más información para poder hacerlo con mayor facilidad. Por ello, es necesario definir un determinado intervalo de vida o fecha de caducidad de las claves.
Además, es importante garantizar una eliminación segura de las claves obsoletas o que hayan sido comprometidas, ya que con estas claves un atacante podrá tener acceso a mensajes antiguos que se hubieran conservado encriptados en algún soporte informático de la organización.
Por último, la organización debe contemplar algún procedimiento para poder recuperar claves, resolviendo situaciones como las acontecidas cuando algún empleado ha perdido la clave de encriptación.
SERVIDOR DE DISTRIBUCIÓN DE CLAVES
La organización puede utilizar un Centro de Confianza para facilitar la distribución de claves en una red. Si se emplean algoritmos simétricos, el centro de confianza se denomina Servidor KDC (del idioma inglés, Key Distribution Center). Asimismo, en los sistemas de encriptación basados en algoritmos asimétricos, este centro de confianza se conoce como Servidor KCC (del idioma inglés, Key Certification Center) o Autoridad de Certificación. En el caso de utilizar un servidor KDC, cada usuario mantiene una sola clave secreta compartida con el KDC, que se emplea para el proceso de autenticación. Este servidor KDC interviene en la administración de las claves de sesión entre los distintos usuarios (personas, servidores o dispositivos) de la red. No obstante, de este modo también puede descifrarse todos los mensajes de los usuarios, por lo que la seguridad debe ser extremada.
Para el establecimiento de una clave de sesión KS se sigue un protocolo como el siguiente:
El usuario A y el servidor B poseen sus respectivas claves secretas KA y KB, que son reconocidas únicamente por el servidor KDC.
El usuario A genera una clave de sesión KS por algún procedimiento previamente determinado, enviando a continuación al servidor KDC su identidad (A) y un mensaje encriptado con su clave secreta KA que contiene el identificador del servidor B con el que desea comunicarse y la clave de sesión KS.
El servidor KDC, a su vez, envía al servidor B un mensaje encriptado con la clave secreta KB, en el que se incluye el identificador de A y la clave de sesión KS, que ha generado dicho usuario.
De este modo, A y B pueden intercambiarse de forma segura una clave de sesión KS, empleando algoritmos de encriptación simétricos.
Establecimiento de una clave de sesión mediante un servidor KDC.
Como alternativa también puede plantearse que el servidor KDC se encargue de generar la correspondiente clave de sesión KS para enviársela a continuación a los usuarios y dispositivos interesados mediante sus correspondientes claves secretas, KA y KB.
ALGORITMOS DE INTERCAMBIO SEGURO DE CLAVES
El algoritmo IKE (del idioma inglés, Internet Key Exchange) especificado en la RFC 5996 y actualizado por la RFC 5998, define un mecanismo de distribución de claves que emplea técnicas de criptografía simétrica como el algoritmo de Diffie-Hellman para el envío seguro de la clave de sesión entre dos usuarios o dispositivos. IKE es utilizado por el protocolo IPSec para el intercambio seguro de claves de sesión entre usuarios.