Criptografía y Encriptación
La encriptación es el proceso para volver ilegible información considera importante. Se trata de una medida de seguridad que es usada para almacenar o transferir información delicada que no debería ser accesible a terceros. Pueden ser contraseñas, números de tarjetas de crédito, conversaciones privadas, etc.
Para encriptar información se utilizan complejas fórmulas matemáticas y para desencriptar, se debe usar una clave como parámetro para esas fórmulas. El texto plano que está encriptado o cifrado se llama criptograma.
La criptografía es el arte o ciencia de cifrar y descifrar información mediante técnicas especiales y se emplea frecuentemente para permitir un intercambio de mensajes que sólo puedan ser leídos por personas a las que van dirigidos y que poseen los medios para descifrarlos.
Las técnicas de cifrado consisten en manipular la información para intentar conseguir:
- Confidencialidad: que sólo pueda acceder a la información su legítimo destinatario.
- Autentificación: que tanto el emisor como el receptor puedan confirmar la identidad de la otra parte.
- Integridad: que la información no pueda ser alterada sin ser esto detectado.
Los sistemas de cifrado se basan en funciones-trampa de un sólo sentido:
- Una función de un sólo sentido es aquélla cuya computación es fácil, mientras que su inversa resulta extremadamente difícil.
- Una función-trampa de un sólo sentido es una función de un sólo sentido que tiene una trampa: si se conoce alguna pieza de la información es fácil computar el inverso.
(Es fácil multiplicar dos números primos, pero es muy difícil averiguar de qué números primos se trata si sólo nos dan el resultado de esa multiplicación. Sólo se puede resolver fácilmente si se conoce uno de los números primos. )
Métodos Criptográficos
Cifrado simétrico: utilizan una única clave compartida. (privadas)
Cifrado asimétrico: utilizan claves públicas y privadas.
Funciones hash: asocian un número a un documento.
Cifrado híbrido: combina cifrado simétrico, cifrado asimétrico y funciones hash.
Cifrado Asimétrico
Las técnicas de cifrado asimétrico se basan en el uso de dos claves, una pública y otra privada, de modo que lo que una de ellas cifra, sólo puede descifrarlo la otra, y viceversa. Se inventaron para evitar el problema del intercambio de claves de los sistemas de cifrado simétricos.
Tanto el emisor como el receptor poseen dos claves: una privada (conocida sólo por él) y una pública (conocida por cualquiera), de manera que no es necesario que el emisor y el receptor intercambien claves secretas. Además, sólo se necesitan un par de claves privada/pública por persona.
El método empleado dependerá de los objetivos buscados:
Confidencialidad. Cifrar un mensaje para enviarlo a un receptor:
Si el emisor desea transmitir un mensaje al receptor, de manera que sólo el receptor pueda conocer su contenido generará el mensaje cifrado utilizando un algoritmo de cifrado asimétrico y la clave pública del receptor.
En este caso sólo se garantiza la confidencialidad del mensaje, ya que sólo el receptor, utilizando el algoritmo inverso y su clave privada podrá reproducir el mensaje original, pero no la identidad del emisor ni la integridad del mensaje. Este método se denomina cifrado simple.
Cifrar un mensaje para guardarlo con seguridad:
Si el mensaje lo ciframos con nuestra clave pública, sólo nosotros podremos descifrarlo. Esto se utiliza para proteger archivos que no queremos que nadie pueda leer.
Autentificación:
Si el emisor desea transmitir un mensaje al receptor, de manera que éste tenga garantizado que la única persona que pudo haberlo generado es el emisor, generará el mensaje cifrado utilizando un algoritmo de cifrado asimétrico y su clave privada.
El receptor, utilizando el algoritmo inverso y la clave pública del emisor podrá reproducir el mensaje original. En este caso sólo se asegura la autentificación, no la confidencialidad (ya que la clave pública del emisor es conocida por cualquiera, por lo que cualquiera podría haber obtenido el mensaje) ni la integridad. Este método se denomina firma digital.
Confidencialidad + Autentificación:
Cuando el emisor desea transmitir un mensaje al receptor asegurando la confidencialidad y la autentificación, realizará los dos pasos anteriores consecutivamente:
- Primero cifra el mensaje con la clave pública del receptor.
- A continuación lo firma con su clave privada.
El receptor, utilizando el algoritmo inverso, su clave privada y la clave pública del emisor podrá reproducir el mensaje original. Este método se denomina doble cifrado.
Algoritmos de Clave Simétrica
Diffie-Hellman.- permite el intercambio secreto de claves entre dos partes que no han tenido contacto previo, utilizando un canal inseguro, y de manera anónima (no autenticada).
RSA.- es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.
Cuando se quiere enviar un mensaje, el emisor busca la clave pública de cifrado del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.
Emplea expresiones exponenciales en aritmética modular.
DSA (Algoritmo de Firma digital) es un estándar del Gobierno Federal de los Estados Unidos de América o FIPS para firmas digitales. Fue un Algoritmo propuesto por el Instituto Nacional de Normas y Tecnología, este algoritmo como su nombre lo indica, sirve para firmar y no para cifrar información. Una desventaja de este algoritmo es que requiere mucho más tiempo de cómputo que RSA.
ElGamal.- se refiere a un esquema de cifrado basado en problemas matemáticos de algoritmos discretos. Es un algoritmo de criptografía asimétrica basado en la idea de Diffie-Hellman y que funciona de una forma parecida a este algoritmo discreto.
El algoritmo de ElGamal puede ser utilizado tanto para generar firmas digitales como para cifrar o descifrar.
Criptografía de curva elíptica
Los sistemas de criptografía asimétrica o de clave pública utiliza dos claves distintas: una de ellas puede ser pública, la otra es privada. La posesión de la clave pública no proporciona suficiente información para determinar cuál es la clave privada. Este tipo de sistemas se basan en la dificultad de encontrar la solución a ciertos problemas matemáticos.
Objetivos de la criptografía
La criptografía actualmente se encarga del estudio de los algoritmos, protocolos y sistemas que se utilizan para dotar de seguridad a las comunicaciones, a la información y a las entidades que se comunican. El objetivo de la criptografía es diseñar, implementar, implantar, y hacer uso de sistemas criptográficos para dotar de alguna forma de seguridad. Por tanto el tipo de propiedades de las que se ocupa la criptografía son por ejemplo:
- Confidencialidad. Es decir garantiza que la información está accesible únicamente a personal autorizado. Para conseguirlo utiliza códigos y técnicas de cifrado.
- Integridad. Es decir garantiza la corrección y completitud de la información. Para conseguirlo puede usar por ejemplo funciones hash criptográficas MDC, protocolos de compromiso de bit, o protocolos de notarización electrónica.
- Vinculación. Permite vincular un documento o transacción a una persona o un sistema de gestión criptográfico automatizado. Cuando se trata de una persona, se trata de asegurar su conformidad respecto a esta vinculación (content commitment) de forma que pueda entenderse que la vinculación gestionada incluye el entendimiento de sus implicaciones por la persona. Antiguamente se utilizaba el término «No repudio» que está abandonándose, ya que implica conceptos jurídicos que la tecnología por sí sola no puede resolver. En relación con dicho término se entendía que se proporcionaba protección frente a que alguna de las entidades implicadas en la comunicación, para que no pudiera negar haber participado en toda o parte de la comunicación. Para conseguirlo se puede usar por ejemplo firma digital. En algunos contextos lo que se intenta es justo lo contrario: Poder negar que se ha intervenido en la comunicación. Por ejemplo cuando se usa un servicio de mensajería instantánea y no queremos que se pueda demostrar esa comunicación. Para ello se usan técnicas como el cifrado negable.
- Autenticación. Es decir proporciona mecanismos que permiten verificar la identidad del comunicador. Para conseguirlo puede usar por ejemplo función hash criptográfica MAC o protocolo de conocimiento cero.Soluciones a problemas de la falta de simultaneidad en la telefirma digital de contratos. Para conseguirlo puede usar por ejemplo protocolos de transferencia inconsciente.
Un sistema criptográfico es seguro respecto a una tarea si un adversario con capacidades especiales no puede romper esa seguridad, es decir, el atacante no puede realizar esa tarea específica.
Criptografía, Criptoanálisis y Criptología
La Criptografía es la ciencia que se encarga de estudiar las distintas técnicas empleadas para transformar (“encriptar” o “cifrar”) la información y hacerla irreconocible a todos aquellos usuarios no autorizados de un sistema informático, de modo que sólo los legítimos propietarios puedan recuperar (“desencriptar” o “descifrar”) la información original.
El término “Crtiptografía” proviene del griego “Kriptos” (oculto) y “Grafos” (escritura), por lo que significa etimológicamente “el arte de escribir de un modo secreto o enigmático”.
Mediante la criptografía es posible garantizar la confidencialidad, la integridad y la autenticidad de los mensajes y documentos guardados en un sistema o red informática.
El Criptoanálisis es la ciencia que se ocupa de estudiar herramientas y técnicas que permitan los códigos y sistemas de protección por la criptografía.
La criptografía y el criptoanálisis están muy relacionados con varias disciplinas científicas como la Teoría de la Información, la Teoría General de Números o de Leyes y Teoremas de la Matemática Discreta.
Por último, a la ciencia de inventar sistemas de cifrado de la información (criptografía) y de desbaratarlos (criptoanálisis) se la conoce colectivamente con el término Criptología.
Funcionamiento de un sistema criptográfico.
Un sistema criptográfico se basa en un determinado algoritmo de encriptación o cifrado que realiza unas transformaciones sobre el texto original, conocido como texto claro, para obtener un texto modificado, conocido como texto cifrado o criptograma.
Mediante el procedimiento inverso, utilizando un determinado algoritmo de desencriptación o de descifrado, se puede recuperar el texto original. El funcionamiento de los algoritmos de cifrado o descifrado depende una unas claves, que determinan totalmente el resultado obtenido. De este modo, aunque los algoritmos sean públicos y conocidos por todos, si no se dispone de las claves, resulta imposible (siempre y cuando los algoritmos sean lo suficientemente robustos) realizar el proceso de descifrado.
De hecho, en la actualidad se recomienda que el algoritmo de encriptación sea público y se encuentre bien documentado, ya que de esta forma podrá ser sometido a estudios rigurosos por parte de expertos criptográficos para determinar su robustez. Por ello, la robustez del sistema criptográfico se basa en la clave utilizada; esta condición establece que, aún para el caso de algoritmos de encriptación que no se hacen públicos, es necesario asumir que tarde o temprano un atacante podrá conocer los detalles del mismo y disponer de textos en claro y sus correspondientes textos cifrados.
Esta situación es, en la práctica, más frecuente de lo que pudiera pensarse a priori, ya que muchos mensajes que se van a encriptar pueden contener palabras o determinados patrones asociados (tal es el caso del formato de los mensajes de determinados protocolos, por ejemplo las cabeceras de los mensajes de correo electrónico).
La clave actúa como modificador del algoritmo, de tal modo que un mismo algoritmo criptográfico podrá ser utilizado por multitud de usuarios y de organizaciones. Además, un cambio de clave permite modificar el método de encriptación, sin tener que modificar el programa que lo implementa. De este modo, no es necesario inventar, probar e instalar nuevos métodos de encriptación en cada paso.
No obstante, conviene distinguir entre la “clave” del sistema, término que suele emplearse cuando se hace referencia a la información generada por un componente especializado (hardware, software o una combinación de ambos), en un formato no legible por un humano ya que se trata de una secuencia de bits o de símbolos de una longitud determinada, y el término “contraseña” se emplea para la secuencia de información establecida por una persona mediante una determinada combinación de caracteres alfanuméricos que debe memorizar para poder utilizarla posteriormente.
En la actualidad, la mayor parte de los algoritmos criptográficos son públicos y se basan en una serie de operaciones elementales sobre los datos que constituyen el texto original: transposiciones (cambiar el orden de los símbolos que forman parte del texto) y sustituciones (reemplazar unos símbolos por otros). Los símbolos del texto original (caracteres alfanuméricos) se codifican mediante bits y, sobre estos bits, se realizan varias secuencias de transposiciones y sustituciones, de acuerdo con los pasos definidos por el algoritmo en cuestión.
Sustitución de símbolos (se reemplaza cada letra por la que se encuentra 2 posiciones a la derecha del alfabeto)
Transposición de símbolos (en bloques de 3 símbolos):
1º símbolo -> 3º lugar
2º símbolo -> 1º lugar
3º símbolo -> 2º lugar
Las sustituciones añaden “confusión” al mensaje que se está cifrando. De este modo, mediante la “confusión” se oscurece la relación entre el texto plano y el texto cifrado, dificultando el análisis de patrones estadísticos.
A su vez, las transposiciones de símbolos provocan una “difusión” de la información en el mensaje que se está cifrando. Con la “difusión” se persigue disimular las redundancias del texto claro al extenderlas por todo el texto cifrado.
Ejemplo de cifrado por transposición
En las técnicas de sustitución monoalfabética cada uno de los caracteres o símbolos se representa con otro carácter en una relación uno a uno. No obstante, también pueden utilizarse técnicas de sustitución polialfabética, en las cuales diversos caracteres del texto cifrado representan el mismo carácter o símbolo del texto original, ya que en estos casos se utilizan varios alfabetos de cifrado para dificultar el análisis de los criptogramas.
Criptoanálisis
El criptoanálisis se ocupa del estudio de las distintas técnicas y métodos que permiten “romper” los algoritmos de encriptación. En la práctica, el criptoanálisis suele llevarse a cabo estudiando distintos pares “mensajes de texto original – mensaje encriptado (criptograma)” generados utilizando la misma clave.
Tipos de Ataques contra un Sistema Criptográfico
Pueden distinguirse distintas situaciones en un ataque basado en el criptoanálisis:
- Ataques basados sólo en texto cifrado: el criptoanalista dispone de varios textos cifrados y su objetivo será recuperar los textos en claro y, si fuera posible, la clave utilizada en el sistema criptográfico.
- Ataques basados en texto claro conocido: el criptoanalista dispone de varios textos cifrados y de los textos en claro de partida, y su objetivo será determinar la clave utilizada para poder desencriptar nuevos textos cifrados. Esta situación es en la práctica más frecuente de lo que pudiera pensar a priori, ya que muchos mensajes que se van a encriptar pueden contener palabras o símbolos de inicio y de finalización conocidos (cabeceras de mensajes de correo electrónico, determinados formatos de documentos o cabeceras de paquetes de datos de un determinado protocolo).
- Ataques basados en texto claro seleccionado: el criptoanalista no sólo dispone de varios textos cifrados y de los textos en claro de partida, sino que además ha podido seleccionar textos en claro que van a ser encriptados (aquéllos que le pueden facilitar más información sobre las diversas transformaciones realizadas por el sistema criptográfico).
- Ataques adaptativos basados en texto claro conocido: en este caso, además de poder seleccionar varios textos en claro y obtener sus correspondientes textos cifrados, el criptoanalista puede modificar su elección de los mensajes a encriptar teniendo en cuenta los resultados generados por encriptaciones previas. De este modo, en un ataque de este tipo adaptativo, el criptoanalista puede ir seleccionando bloques pequeños de texto en claro en etapas sucesivas para obtener información más precisa sobre el sistema criptográfico.
Resumen y otras técnicas: Existen multitud de técnicas
- Ataque a partir del cifrado: ésta es la situación en la cual el atacante desconoce el contenido del mensaje y trabaja únicamente sobre el texto cifrado.
- Ataque a partir del texto en claro: el atacante conoce o puede conocer el texto en claro correspondiente a algunas partes del texto cifrado. El objetivo es descifrar el resto de los bloques del texto usando esta información, lo cual suele hacerse averiguando la clave usada para cifrar los datos.
- Ataque a partir del texto en claro elegido: el atacante puede elegir un texto en claro y obtener su cifrado correspondiente.
- Ataque a partir de la clave: el atacante intenta determinar la clave actual a partir de claves que conoce y han sido utilizadas en cifrados previos.
- Suplantación de identidad: el atacante asuma la identidad de uno de los participantes en la comunicación.
- Ataque mediante intromisión: el atacante se introduce en medio de la línea de comunicación, de modo que mientras ambas partes piensan que están manteniendo una comunicación segura él está interceptando todo.
- Ataques adaptativos basados en texto claro conocido: en este caso, además de poder seleccionar varios textos en claro y obtener sus correspondientes textos cifrados, el criptoanalista puede modificar su elección de los mensajes a encriptar teniendo en cuenta los resultados generados por encriptaciones previas.
- Búsqueda exhaustiva: el atacante genera aleatoriamente todos los valores posibles de las claves de acceso y las transforma hasta que encontrar aquella que coincida con la previamente interceptada.
El criptoanálisis suele excluir ataques que no tengan como objetivo primario los puntos débiles de la criptografía utilizada; por ejemplo, ataques a la seguridad que se basen en el soborno, la coerción física, el robo, el keylogging* y demás, aunque estos tipos de ataques son un riesgo creciente para la seguridad informática, y se están haciendo gradualmente más efectivos que el criptoanálisis tradicional.
Niveles de Seguridad
Un buen diseñador no debe descuidar ningún aspecto de su sistema, pues la seguridad de un sistema criptográfico está directamente relacionada con su elemento más débil. Dentro de esta seguridad podemos hablar de dos tipos:
La de los operadores, que se viola cuando se descubre la clave del sistema. En función de la dificultad de conseguir esa clave tenemos distintos niveles de seguridad: incondicional (cuando el cifrado no aporta ninguna información acerca de la clave), computacional (cuando no existe capacidad suficiente de cálculo para obtener la clave), probable (cuando no han sido violados a pesar de no estar basados en principios matemáticos de seguridad demostrable) y condicional (cuando la dificultad de vulneración es mucho mayor que la capacidad de cálculo del posible atacante).
La de los protocolos, que provoca vulneraciones del sistema debidas a posibles debilidades del mismo, sin necesidad de conocer su clave.
Técnicas de Criptoanálisis
- Criptoanálisis diferencial: trata de encontrar correlaciones entre el texto claro y el texto cifrado obtenido a la salida del sistema criptográfico, partiendo del conocimiento de la existencia de ciertas diferencias entre varios textos claros que se han introducido en el sistema.
- Criptoanálisis lineal: trata de encontrar correlaciones entre la clave, el texto claro y el texto cifrado obtenido a la salida del sistema criptográfico basado en un cifrado en bloque.
- Criptoanálisis basado en claves relacionadas: trata de encontrar correlaciones entre los cambios en la clave, el texto claro y el texto cifrado obtenido a la salida del sistema criptográfico.
- Técnicas de análisis estadístico de frecuencias: estudia apariciones de algunas letras, diagramas, trigramas o de determinadas palabras (las más frecuentes en ese idioma), para determinar cuál ha sido el sistema de sustitución empleado en el cifrado, con la inestimable ayuda hoy en día de un equipo informático.
- Interceptación de claves: ataques de intermediación «man-in-the-middle», mediante el cual se pueden interceptar directamente las claves sin despertar sospechas de los usuarios del sistema criptográfico y sin que sea necesario estudiar los textos cifrados.
Clasificación de los Sistemas Criptográficos
En primer lugar, puede hacerse la distinción entre sistemas criptográficos
Simétricos: se emplea la misma clave en el proceso de encriptación y en el de desencriptación.
Asimétricos: Se caracterizan por utilizar dos claves distintas pero relacionadas entre sí, una para la encriptación de los datos y otra para la desencriptación.
Por otra parte, los sistemas criptográficos simétricos pueden tener dos formas de funcionamiento:
- Cifrado en bloque o poligráfico (en idioma inglés, block cipher): el mismo algoritmo de encriptación se aplica a un bloque de información (grupo de caracteres o número de bytes) repetidas veces, usando la misma clave. De este modo, es posible combinar varias sustituciones y transposiciones. En la actualidad suele trabajarse con bloques de bits, ya que los mensajes a encriptar se codifican previamente mediante bits (utilizando, por ejemplo, ASCII). Puede resultar necesario aplicar el mecanismo conocido como padding para completar algunos bloques de un determinado mensaje con bits adicionales hasta alcanzar el tamaño del bloque con el que trabaja el algoritmo. Estos sistemas presentan un problema si se pierde algún bit, produciéndose la “desincronización” entre el emisor y el receptor, ya que a partir de ese momento todos los bloques serán desencriptados de forma incorrecta, salvo que se emplee alguna estructura de bits que permita delimitar los bloques, facilitando la sincronización. Entre los algoritmos de cifrado en bloque, los más conocidos son DES, IDEA, AES, RC5 o Blowfish.
- Cifrado en flujo, bit a bit, o byte a byte (en idioma inglés, stream cipher): el algoritmo de encriptación se aplica a un elemento de información (carácter, bit) mediante un flujo que constituye la clave y, que en teoría, es aleatorio y de un tamaño mayor que el mensaje. Para generar el flujo que constituye la clave, se emplea un generador de secuencias pseudoaleatorias y un circuito electrónico conocido como Registro de Desplazamiento Lineal; por este motivo, estos algoritmos resultan muy eficientes si se implementan mediante hardware especializado. En este tipo de algoritmos sólo se realizan sustituciones, mediante una operación XOR entre cada bit de información y cada bit de la secuencia que forma la clave. Se emplean en situaciones donde son altamente probables los errores de transmisión, ya que de este modo no se propagan los errores; además, presentan la ventaja, frente a los sistemas de cifrado en bloque, de que la información puede encriptarse o desencriptarse sin tener que esperar a que se complete un bloque de un determinado tamaño de bits, por lo que son especialmente apropiados para los sistemas de comunicaciones en tiempo real (tal como telefonía móvil digital). Entre los algoritmos más conocidos, pueden mencionarse RC4 o A5, éste último empleado en la telefonía digital GSM.
Ejemplo de Cifrado en flujo mediante una operación XOR.
Resumen:
Criptografía de clave sencilla o de clave secreta
- Se caracteriza por ser altamente eficiente y robusta, porque emplea la misma clave para cifrar y decencriptar.
- No se debe utilizar la clave para varios mensajes, ya que pueden interceptar y decodificar la clave.
- Los algoritmos simétricos se pueden dividir en los de cifrado en flujo y los de cifrado en bloque.
- Los primeros cifran el mensaje original bit a bit, mientras que los segundos toman un número de bits (típicamente 64 bits en los algoritmos modernos) y los cifran como si se tratara de una sola unidad.
- Los algoritmos simétricos ejecutados en ordenadores son más rápidos que los asimétricos.
Clave pública o criptografía asimétrica.
- Tienen claves distintas para cifrado y descifrados, una pública para cifrado y una secreta para descifrado
- La primera se publica en un tipo de directorio al que el público en general tiene acceso, mientras que la privada se mantiene en secreto.
- Como desventaja, las claves han de ser de mayor tamaño para ofrecer una seguridad comparable a la de los algoritmos simétricos. También resultan más lentos y producen mensajes cifrados de mayor tamaño.
Sistemas Criptográficos SIMÉTRICOS
En los Sistemas Criptográficos Simétricos se emplea la misma clave para realizar tanto la encriptación como la desencriptación del texto original.
Ejemplo de Encriptación Simétrica
Ejemplo de Desencriptación Simétrica
En las mismas se muestra cómo un usuario A emplea una clave para cifrar la información que desea transmitir a otro usuario B; este último deberá utilizar la misma clave para recuperar la información original.
Estos algoritmos se caracterizan por ser muy rápidos y eficientes desde el punto de vista computacional, ya que se basan en operaciones matemáticas sencillas realizadas sobre los símbolos del mensaje original. Por ello, requieren de un reducido tiempo de cálculo para realizar la encriptación y la desencriptación de los mensajes.
Sin embargo, presentan un importante problema: cómo intercambiar la clave utilizada para la encriptación/desencriptación a través de un canal seguro. Sin duda, se trata de una cuestión de especial relevancia, ya que toda la seguridad del sistema depende de la confidencialidad de la clave (ésta sólo puede ser conocida por los usuarios A y B). Por este motivo, a este tipo de sistemas criptográficos también se les da el nombre de sistemas criptográficos de clave privada.
Por otra parte, también debe tenerse en cuenta el problema de la gestión de claves, ya que se requiere una clave distinta para cada posible interacción entre dos usuarios del sistema, por lo que el número de claves secretas necesarias crece en un orden igual a N2, siendo N el número de usuarios distintos del sistema.
Entre los algoritmos simétricos más utilizados en la actualidad pueden citarse DES (y sus variantes, como triple-DES), RC2, IDEA o AES.
DES (Data Encryption Standard):
Su arquitectura está basada en un sistema monoalfabético, donde un algoritmo de cifrado aplica sucesivas permutaciones y sustituciones al texto en claro. En un primer momento la información de 64bits se somete a una permutación inicial, y a continuación se somete a una permutación con entrada de 8 bits, y otra de sustitución de entrada de 5 bits, todo ello constituido a través de un proceso con 16 etapas de cifrado.
El algoritmo DES usa una clave simétrica de 64bits, los 56 primeros bits son empleados para el cifrado, y los 8 bits restantes se usan para comprobación de errores durante el proceso. La clave efectiva es de 56 bits, por tanto, tenemos 2⁵⁶ combinaciones posibles, por lo que la fuerza bruta se hace casi imposible.
Ventajas:
- Es uno de los sistemas más empleados y extendidos, por tanto es de los más probados.
- Implementación sencilla y rápida.
Inconvenientes:
- No se permite una clave de longitud variable, es decir, no se puede aumentar para tener una mayor seguridad.
- Es vulnerable al criptoanálisis diferencial (2⁴⁷ posibilidades) siempre que se conozco un número suficiente de textos en claro y cifrados.
- La longitud de clave de 56 bits es demasiado corta, y por tanto vulnerable. Actualmente DES ya no es un estándar, debido a que en 1999 fue roto por un ordenador.
3DES (Triple Data Encryption Standard)
Se basa en aplicar el algoritmo DES tres veces, la clave tiene una longitud de 128 bits. Si se cifra el mismo bloque de datos dos veces con dos llaves diferentes (de 64 bits), aumenta el tamaño de la clave.
El 3DES parte de una llave de 128 bits, que es divida en dos llaves, A y B.
Al recibir los datos, aplicamos el algoritmo DES con la llave A, a continuación se repite con la llave B y luego otra vez con la llave A (de nuevo).
3DES aumenta de forma significativa la seguridad del sistema de DES, pero requiere más recursos del ordenador.
Existe una variante del 3DES, conocida como DES-EDE3, con tres claves diferentes y una longitud de 192bits, consiguiendo un sistema mucho más robusto.
RC5
Se aplican operaciones XOR sobre los datos, pudiendo ser de 32, 64 o 128 bits. Permite diferentes longitudes de clave, y un número variable de iteraciones (la seguridad del cifrado aumenta exponencialmente cuanto mayor número de iteraciones), también funciona como un generador de número aleatorios, sumándoles a los bloques de texto rotados mediante la XOR.
IDEA (International Data Encriptión Algorithm)
Aplica una clave de 128 bits sin paridad a bloques de datos de 64 bits, y se usa tanto para cifrar como para descifrar.
Se alteran los datos de entrada en una secuencia de iteraciones parametrizadas, con el objetivo de producir bloques de salida de texto cifrado de 64 bits. IDEA combina operaciones matemáticas como XOR, sumas con acarreo de módulo 2¹⁶ y multiplicaciones de módulo 2¹⁶+1, sobre bloques de 16 bits.
Según numerosos expertos criptográficos, IDEA es el mejor algoritmo de cifrado de datos existente en la actualidad ya que existen 2¹²⁸ claves privadas que probar mediante el ataque de fuerza bruta.
AES (Advanced Encryption Standard)
Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA opera con AES como método de cifrado. Este cifrado puede implementar tanto en sistemas hardware como en software. El sistema criptográfico AES opera con bloques y claves de longitudes variable, hay AES de 128bits, de 192 bits y de 256 bits.
El resultado intermedio del cifrado constituye una matriz de bytes de cuatro filas por cuatro columnas. A esta matriz se le vuelve a aplicar una serie de bucles de cifrado basado en operaciones matemáticas (sustituciones no lineales de bytes, desplazamiento de filas de la matriz, combinaciones de las columnas mediante multiplicaciones lógicas y sumas XOR en base a claves intermedias).
Seguridad de AES:
AES tiene 10 rondas para llaves de 128 bits, 12 rondas para llaves de 192 bits y 14 rondas para llaves de 256 bits. En el año 2006, los mejores ataques conocidos fueron el 7 rondas para claves de 128 bits, 8 rondas para llaves de 192 bits, y 9 rondas para claves de 256 bits.
Algunos criptógrafos muestran preocupación sobre la seguridad del AES. Ellos creen que el margen entre el número de rondas especificado en el cifrador y los mejores ataques conocidos es muy pequeño.
Otra preocupación es la estructura de AES. A diferencia de la mayoría de cifradores de bloques, AES tiene una descripción matemática muy ordenada.
Recordemos que AES es usado en los cifrados wireless de los routers de los hogares como método de cifrado (no clave) ya que en los routers podemos usar una clave estática o una dinámica mediante un servidor Radius.
AES también es usado por OpenSSL y por supuesto en OpenVPN (ya que usa las librerías OpenSSL).
Los algoritmos de cifrado de bloque como AES separan el mensaje en trozos de tamaño fijo, por ejemplo de 64 o 128 bits. La forma en que se gestionan estos bloques de mensaje, se denomina “modo de cifrado”.
Por ejemplo, existe el AES-CBC, AES-CFB y AES-OFB, os voy a explicar qué es exactamente esto que aparece en las librerías OpenSSL.
CBC (Cipher-block chaining): a cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado depende de todo el texto en claro procesado hasta este punto. Como no se dispone de un texto cifrado con el que combinar el primer bloque, se usa un vector de inicialización IV (número aleatorio que puede ser públicamente conocido). La desventaja es que el cifrado es de forma secuencial y por tanto no puede ser paralelizado.
OFB (Output feedback): se generan bloques de flujo de claves, que son operados con XOR y el texto en claro para obtener el texto cifrado. Al igual que con otras unidades de flujo de cifrado, al intercambiar un bit en el texto cifrado produce texto cifrado con un bit intercambiado en el texto plano en la misma ubicación. También se usa un vector de inicialización para el primer bloque.
CFB (Cipher feedback): se hace igual que en OFB, pero para producir el keystream cifra el último bloque de cifrado, en lugar del último bloque del keystream como hace OFB. Un bit erróneo en el texto cifrado genera 1+64/m bloques de texto claro incorrectos (siendo m la longitud del flujo en el que se divide el bloque). El cifrado no puede ser paralelizado, sin embargo el descifrado sí.
Sistemas Criptográficos ASIMÉTRICOS
Los Sistemas Criptográficos Asimétricos surgen para dar respuesta al problema del intercambio de la clave en los sistemas simétricos. Se basan en problemas numéricos muy complejos (como la factorización de números primos o el cálculo de logaritmos discretos). En estos sistemas se utilizan dos claves distintas: una para realizar la encriptación y otra para el proceso de desencriptación; por este motivo, reciben el nombre de asimétricos. A continuación se describe, a modo de ejemplo, el funcionamiento de un Sistema Criptográfico Simétrico.
Ejemplo de Encriptación Asimétrica
Ejemplo de Desencriptación Asimétrica
Un determinado usuario B genera dos claves que están relacionadas entre sí mediante una compleja función matemática (para ello, se aprovechan las propiedades de la aritmética modular). Una de estas claves se hace pública, ya que es la que los otros usuarios del sistema deberán emplear para encriptar los datos enviados a B. Si el usuario A tiene que enviar datos de forma confidencial a B, debe proceder a su encriptación empleado la clave pública de B.
El texto cifrado obtenido a partir de la clave pública B sólo puede ser desencriptado utilizando el correspondiente algoritmo de desencriptación y la clave privada de B.
Por lo tanto, en los sistemas asimétricos, también conocidos como sistemas de clave pública, cada usuario posee una pareja de claves: su clave privada (que debe guardar en secreto y que utiliza para desencriptar), y su clave pública (que será conocida y que otros usarán para encriptar).
Como ya se ha indicado, las claves privada y pública de cada usuario están relacionadas entre sí mediante una serie de características matemáticas, a través de lo que se conoce como funciones unidireccionales “con trampa”: se utiliza la función en sentido directo o de cálculo fácil para cifrar y descifrar (es la operación llevada a cabo por los usuarios legítimos) y, en cambio, se fuerza el sentido inverso o de cálculo muy difícil de la función para aquellos impostores que pretendan criptoanalizar el mensaje cifrado.
Entre las funciones matemáticas más utilizadas podemos mencionar la factorización de números primos grandes (algoritmo RSA), la exponenciación modular (algoritmo Diffie- Hellman), o el cálculo de logaritmos discretos (algoritmos de ElGamal y Schnorr).
Con este planteamiento se resuelve el problema del intercambio de la clave privada, que presentaban los sistemas simétricos. De este modo, la gestión de claves es mucho más sencilla en los sistemas asimétricos.
Se entiende por Gestión de Claves a los procesos y mecanismos utilizados para la generación y el mantenimiento de las claves que facilitan las comunicaciones seguras entre los usuarios de un sistema de información basado en TICs. Con estos sistemas criptográficos asimétricos, cada usuario sólo debe memorizar su clave privada, ya que las claves públicas son conocidas por todos. De este modo, se reduce el número de claves necesarias en el sistema, y ya no es necesario realizar una comunicación inicial con un servidor de claves antes del establecimiento de una sesión entre usuarios.
Sin embargo, los algoritmos empleados son más lentos y consumen mayores recursos computacionales, ya que deben realizar operaciones matemáticas más complejas. De hecho, sólo algunos de los algoritmos propuestos son seguros y realizables desde el punto de vista práctico.
Estos algoritmos emplean claves mucho más largas para ofrecer un nivel de protección equivalente a la de los algoritmos simétricos: 512, 1.024 o 2.046 bits, trabajando sobre bloques de bits del mensaje a encriptar. Por este motivo, son entre 100 y 1.000 veces más lentos que los simétricos, ya que requieren de mayores recursos computacionales.
En la actualidad se están logrando importantes avances en el desarrollo de nuevos algoritmos de clave pública basados en las Curvas Elípticas, los cuales permiten reducir de forma considerable el tamaño de las claves, lo que los hace bastante más rápidos.
En la práctica, suele recurrirse a los dos tipos de sistemas criptográficos presentados: mediante un sistema asimétrico los usuarios intercambian de forma segura la clave que van a utilizar para encriptar y desencriptar los datos en un sistema simétrico.
Ejemplo de Combinación de sistemas criptográficos simétricos y asimétricos
En el ejemplo planteado, el usuario A utiliza una determinada clave de encriptación para cifrar el mensaje original y, a su vez, procede a encriptar esta misma clave con la clave pública del usuario B, de modo que sólo B puede recuperar la clave necesaria para desencriptar el mensaje original (porque, para obtener esta clave, es necesario emplear la clave privada de B). La técnica anteriormente descrita para proteger la confidencialidad de una clave simétrica mediante un algoritmo de encriptación asimétrico se conoce con el nombre de Sobre Digital.
Con la combinación de los sistemas simétricos y asimétricos puede garantizarse totalmente la confidencialidad de la comunicación, y se mejora la rapidez de los procesos de encriptación y desencriptación.
Asimismo, la gestión de las claves resulta mucho más sencilla, ya que cada usuario sólo debe “memorizar” su clave privada (que queda registrada en su computadora personal o en una tarjeta inteligente), ya que las claves públicas son conocidas por todos los usuarios del sistema.
Por otra parte, la aparición de los sistemas asimétricos ha permitido desarrollar otra serie de funciones criptográficas, como la autenticación y la integridad de los mensajes transmitidos.
AUTENTICACIÓN mediante sistemas criptográficos ASIMÉTRICOS
Sea que el usuario A encripta un mensaje con su clave privada. Con esta forma de proceder no consigue garantizar, ni mucho menos, la confidencialidad del sistema de información, ya que cualquier usuario que conozca la clave pública de A (que tal como lo indica su denominación, se ha dado a conocer y se encuentra a disposición de los usuarios del sistema) podrá recuperar el mensaje original.
Sin embargo, con este planteamiento se consigue garantizar la autenticidad del mensaje: si el mensaje puede descifrarse con la clave pública de A, es porque ha sido generado con la clave privada de A y, por lo tanto, puede asumirse que lo ha generado A (porque sólo este usuario conoce su clave privada).
¿De qué depende la seguridad de los Sistemas Criptográficos?
Dependen de:
- Robustez del Esquema de Encriptación Diseñado
- Adecuada Gestión de las Claves
ROBUSTEZ DEL ESQUEMA DE ENCRIPTACIÓN DISEÑADO
Todavía no ha sido posible demostrar desde un punto de vista matemático la seguridad de los algoritmos simétricos y asimétricos. Por ello, para cada sistema criptográfico propuesto resulta conveniente realizar un estudio estadístico del algoritmo, para poder analizar en qué medida cumple con las propiedades de “confusión”, “difusión”, y “completitud”.
La propiedad completitud del algoritmo se cumple si cada bit de texto cifrado depende de todos y cada uno de los bits de la clave. En otro caso, pueden realizarse ataques contra determinadas partes de la clave, en una estrategia de “divide y vencerás”.
Por su parte, las dos primeras propiedades ya fueron introducidas anteriormente, al analizar las operaciones de sustitución y de transposición. Cabe recordar que la confusión permite ocultar la relación entre el texto plano y el texto cifrado, dificultando el análisis de patrones estadísticos (por consiguiente se genera “confusión” mediante operaciones de sustitución de símbolos), mientras que difusión pretende disimular las redundancias del texto claro al extenderlas por todo el texto cifrado (característica que se consigue gracias a las operaciones de transposición de símbolos).
Se habla de Seguridad Computacional, por la que se compara los distintos algoritmos desde el punto de vista de su complejidad computacional; esta última viene dada por el tiempo de cálculo y de espacio de memoria requeridos para resolver un determinado problema (en este caso, el problema consiste en la obtención de la clave que permita descifrar un mensaje encriptado).
Si el esfuerzo requerido para realizar el criptoanálisis, en cuanto a potencia de cálculo y trabajo realizado por expertos matemáticos, resulta desproporcionado en función del valor de la información protegida, el algoritmo se considera suficientemente robusto para ese tipo de información. En definitiva, se trata de que el costo necesario (adquisición de equipos y medios técnicos, personal especializado, etc.) y el esfuerzo (tiempo invertido) para descifrar una información sean superiores al valor que ésta pueda tener.
La seguridad desde el punto de vista práctico se basa en la robustez frente a los ataques de fuerza bruta, los ataques de diccionario y los ataques contra la implementación del algoritmo.
Para ello, a medida que se dispone de sistemas informáticos más potentes (computadoras capaces de probar miles o cientos de miles de claves por segundo), tiene que incrementarse la longitud de las claves. Un tamaño de clave de 128 bits es el mínimo recomendado para los algoritmos criptográficos simétricos empleados en la actualidad, resultando de este modo un espacio de 3,4 x 1038 posibles claves.
En este sentido, debe considerarse la evolución de las arquitecturas de procesamiento (procesadores paralelos, grip computing, y procesadores cuánticos), que constituyen una amenaza. No obstante, conviene destacar que los ataques basados en software realizados desde una computadora de propósito general resultan considerablemente más lentos que los llevados a cabo mediante hardware especializado. Por otra parte, algunos algoritmos (como DES) pueden presentar el problema de la elección de algunas claves consideradas como débiles, es decir, claves que pueden reducir de forma significativa el espacio de búsqueda de ataques de fuerza bruta. Por lo tanto, para evaluar un algoritmo es necesario detectar este problema, y así poder descartar las claves consideradas como débiles. Cuando en un algoritmo todas las claves son del mismo nivel de robustez, se considera que el espacio de claves es “lineal” o “plano”; en cambio, cuando el algoritmo presenta algunas claves consideradas como débiles, se dice que el espacio de claves es “no lineal”.
En cuanto a la utilización de técnicas de compresión en combinación con la criptografía, conviene recordar que los criptoanalistas utilizan las redundancias que se presentan en forma natural en un lenguaje para obtener información sobre los textos claros que han sido encriptados.
Por este motivo, es recomendable utilizar técnicas de compresión en combinación con los algoritmos criptográficos ya que, de este modo, con la compresión previa de la información se consiguen reducir las redundancias de los mensajes a encriptar, así como su tamaño (reduciendo en consecuencia el esfuerzo computacional para encriptar la información).
ADECUADA GESTIÓN DE LAS CLAVES
Otro elemento que, sin duda, resulta de vital importancia para la seguridad de un sistema criptográfico es garantizar una adecuada gestión de las claves. La tecnología criptográfica, incluyendo no sólo los productos que la implementan, sino la propia descripción del funcionamiento de los algoritmos y protocolos criptográficos se encuentra sometida a la regulación de la norma International Traffic in Arms Regulations -ITAR-, ya que estas tecnologías han sido incluidas en la misma categoría que las armas de fuego, misiles, armas nucleares o agentes químicos y biológicos. En los últimos años, estas restricciones se han suavizado respecto a la exportación de productos criptográficos.
Por otra parte, los algoritmos criptográficos requieren de una utilización de mucho mayor del procesador y de la memoria en los sistemas de información basados en TICs. Para dispositivos de prestaciones más reducidas pueden emplearse tarjetas criptográficas o chip específicos que liberan al procesador de las operaciones de encriptación/desencriptación. Si embargo, en algunos casos, se ha recurrido a implementaciones menos robustas de los algoritmos criptográficos o en un tamaño menor de las claves, a fin de mejorar el funcionamiento de los dispositivos.
Se trata, por lo tanto, debe establecerse un compromiso entre el tamaño de las claves (que determina en gran medida la robustez del sistema criptográfico) y el consumo de recursos computacionales (que influye en el rendimiento del sistema informático). En este sentido, conviene recordar que muchos dispositivos móviles con reducida capacidad de cálculo y de memoria de trabajo pueden presentar ciertas limitaciones (por lo menos en el actual estado de la tecnología) para poder implantar sistemas criptográficos de última generación.
La importancia de los controles Criptográficos para el Sistema de Gestión de la Seguridad de la Información
- Proteger la confidencialidad, autenticidad o integridad de la información.
- Se deberán usar sistemas y técnicas criptográficos para proteger la información sometida a riesgo, cuando otras medidas y controles no proporcionen la protección adecuada.
Fuentes:
- https://sites.google.com/site/isp6criptografia/home
- Enciclopedia de la Seguridad Informática de Álvaro Gómez Vieites
- http://www.redeszone.net/2010/11/04/criptografia-algoritmos-de-cifrado-de-clave-simetrica/
- Seguridad de Redes, Universidad Tecnológica Nacional.