Introducción La firma digital es una herramienta que permite garantizar la autoría e integridad de los documentos digitales, posibilitando que éstos gocen de una característica que únicamente era propia de los documentos en papel. En definición del órgano gubernamental argentino que está relacionado con este tema cuando hablamos de firma digital en realidad nos estamos refiriendo a muchos conceptos relacionados, entre los cuales figuran documentos electrónicos, claves criptográficas, certificados digitales, funciones matemáticas, autoridades certificantes, infraestructuras de clave pública y muchos otros nombres que pueden resultarnos complicados o desconocidos. Pero antes, para entender mejor este tema, vamos a ver qué son los algoritmos. Algoritmos Algoritmo Simétrico Los algoritmos criptográficos simétricos utilizan la misma llave para cifrar y descifrar datos, o bien la llave para descifrar es calculada muy fácilmente de la llave de cifrado. Estos algoritmos también son conocidos como algoritmos de: llave secreta (secret key), llave privada (private key), una llave (one key) y única llave (single key). Estos algoritmos pueden dividirse en dos grandes grupos: algoritmos en bloque (block ciphers) y algoritmos en flujo (stream ciphers). Algoritmos en bloque Los algoritmos en bloque son algoritmos simétricos que trabajan con un tamaño fijo de bits, llamados bloques. Requieren dos entradas de datos para funcionar: el mensaje a cifrar (texto plano) y la llave que controla la transformación del pleno texto. Por ejemplo, estos algoritmos toman como entrada bloques de 128 bits de un 1
mensaje en texto plano para cifrar y como resultado logran un criptograma de 128 bits. El proceso se repite hasta haber procesado todo el mensaje en texto plano. Los algoritmos de cifrado en bloque más conocidos son: DES (Data Encription Standard), 3DES, AES (American Encryption Standard). Algoritmos en flujo Los algoritmos en flujo son algoritmos simétricos que trabajan cifrando el mensaje en texto plano de un bit a la vez y donde la transformación del mensaje va cambiando durante el proceso de cifrado. El siguiente gráfico muestra el funcionamiento de los algoritmos en flujo: Los algoritmos de cifrado en flujo más conocidos son: RC4, A5/1 y FISH. Algoritmos de cifrado asimétricos Los algoritmos de cifrado simétricos son muy veloces, pero poseen un problema: es muy difícil distribuir la llave. Para que dos personas puedan enviarse mensajes de forma segura utilizando un sistema de cifrado simétrico, ambas deben intercambiar llaves de cifrado para poder cifrar y descifrar sus mensajes. Esto introduce un riesgo, ya que si la llave es interceptada, se pierde la confidencialidad de los mensajes transmitidos. Este problema es resuelto con los algoritmos criptográficos asimétricos o de llave pública. Los algoritmos asimétricos están formados por dos tipos de llaves: una pública y otra privada. La llave pública es utilizada para cifrar mensajes y es generalmente distribuida (por eso se la llama llave pública), mientras que la llave privada es utilizada para descifrar los mensajes cifrados con la llave pública. Lo más importante es que es meramente imposible obtener una llave privada de una llave pública, haciendo imprescindible que la llave privada sea guardada de forma segura. Los algoritmos de cifrado asimétricos más conocidos son: RSA, ElGamal, DSA (Digital Signature Algorithm) y Diffie-Hellman. Estos algoritmos, permiten el funcionamiento de los sistemas criptográficos utilizados para cifrar correos electrónicos, como el PGP y S/MIME, además de introducir el concepto de firmas 2
digitales. Passphrase La mayoría de las llaves privadas son guardadas en la PC de forma cifrada. De esta manera, es más difícil para una persona robar la llave y utilizarla. Para poder utilizar la llave privada, se utiliza un passphrase para descifrarla de forma temporaria. Qué es el passphrase? El passphrase es una contraseña, pero más larga. Cuanto más larga, más difícil de descifrar mediante el uso de técnicas de criptoanálisis. Se recomienda utilizar frases de libros favoritos ó cualquier cosa que uno no se olvide. Si uno se olvida el passphrase, se pierde la llave privada y todos los mensajes que ésta puede descifrar. Aplicaciones que utilizan algoritmos de cifrado asimétricos Como ejemplo, los siguientes protocolos / aplicaciones utilizan algoritmos de cifrado asimétricos: PGP S/MIME Firma digital SSH IKE (Internet Key Exchange es parte del protocolo IPsec) SSL/TLS (vía certificados x.509) Métodos de identificación y autentificación de sistemas operativos (vía certificados x.509) La importancia del tamaño de las llaves El tamaño de las llaves se mide en bits (0 ó 1). Recordemos que una llave es una pieza de información que controla la manera en que opera un algoritmo criptográfico. Por lo tanto, y como regla de oro, cuanto más grande la llave (mayor cantidad de bits), más seguro el criptograma resultante. Hoy en día una llave de 80 bits es considerada una llave fuerte pero es el mínimo obligatorio para algoritmos simétricos. Normalmente, las llaves de 128 bits son consideradas lo suficientemente fuertes. Las llaves utilizadas en algoritmos asimétricos poseen una infraestructura matemática, por ende requieren ser mucho más grandes para tener el mismo efecto que las llaves utilizadas en los algoritmos simétricos. Por ejemplo, una llave de 80 bits para un algoritmo simétrico es equivalente a una de 1024 bits para un algoritmo asimétrico y una de 128 bits a una de 3000 bits. Firma Digital 3
La firma digital, gracias a los algoritmos criptográficos asimétricos, permite reemplazar la firma manual y ofrece los siguientes beneficios: Identidad y Autenticidad Integridad No repudiación De esta forma, se pueden mejorar los procesos internos de gobiernos y empresas, ya que no hace falta firmar papeles, sino que se puede realizar todo de forma digital. Cómo funciona. La firma digital funciona utilizando un algoritmo hash y un algoritmo asimétrico. Los algoritmos hash toman como entrada un mensaje de n bits y dan como resultado una cantidad finita de bits llamados Message Digest. Los algoritmos hash más conocidos son MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512. MD5 y Hash Lo interesante, es que el Message Digest varía con la modificación de un solo bit del mensaje de entrada (mensaje a firmar). Proceso de Firma Digital Como se puede observar, con el simple hecho de cambiar un si por un no cambia el resultado del Message Digest. 1. El usuario escribe el mensaje y especifica que lo quiere firmar digitalmente. 2. El mensaje es comprimido y es pasado al algoritmo hash para generar un Message Digest. 3. El Message Digest es cifrado con la llave privada del usuario. 4. La firma es anexada al mensaje en texto plano y ambos son enviados por correo electrónico al destinatario. 4
NOTA: La llave privada incluye a la llave pública, por ende puede utilizarse para cifrar datos. La llave pública jamás incluye la llave privada. Verificación de la Firma Digital 1. Separa la firma digital del texto plano. 2. Recalcula el Message Digest del mensaje (sin la firma). 3. Cifra el Message Digest nuevo con la llave publica del remitente 4. Compara el Message Digest recibido con el nuevo. 5. Si son iguales, es que no hubo alteración alguna en el mensaje. Nota Importante: La firma digital no cifra los mensajes, por ende no se garantiza la confidencialidad de los datos, sólo su autenticidad. Identidad, Autenticidad, Integridad y No repudiación. El sistema de firma digital brinda Identidad y Autenticidad ya que se sabe quien escribió el mensaje (por el uso de la llave privada). Mediante el uso de algoritmos hash, se puede determinar la integridad del mensaje con exactitud. Lo más interesante es la no repudiación del mensaje: El que lo firmó no puede decir que no lo firmó. Por qué? Porque para poder enviar un mensaje firmado digitalmente, es necesario tener acceso a la PC que tiene la llave privada y además conocer su passphrase. Dicho de otra manera, si uno recibe un mensaje firmado digitalmente, es porque se cumplieron ambos requisitos. Más información en: https://pki.buenosaires.gov.ar/firma_digital/apps/firmadigital/ 5