Cifrado
En criptografía, el cifrado es un procedimiento que utiliza un algoritmo de cifrado con cierta clave (clave de cifrado) transforma un mensaje, sin atender a su estructura lingüística o significado, de tal forma que sea incomprensible o, al menos, difícil de comprender a toda persona que no tenga la clave secreta (clave de descifrado) del algoritmo. Las claves de cifrado y de descifrado pueden ser iguales (criptografía simétrica) o no (criptografía asimétrica).
El juego de caracteres (alfabeto) usado en el mensaje sin cifrar puede no ser el mismo que el juego de caracteres que se usa en el mensaje cifrado.
A veces el texto cifrado se escribe en bloques de igual longitud. A estos bloques se les denomina grupos. Estos grupos proporcionaban una forma de verificación adicional, ya que el texto cifrado obtenido debía tener un número entero de grupos. Si al cifrar el texto plano no se tiene ese número entero de grupos, entonces se suele rellenar al final con ceros o con caracteres sin sentido.
Aunque el cifrado pueda volver secreto el contenido de un documento, es necesario complementarlo con otras técnicas criptográficas para poder comunicarse de manera segura. Puede ser necesario garantizar la integridad la autenticación de las partes, etcétera.
La descripción de entidades: cuando se desea describir un algoritmo de cifrado/descifrado que involucra el envío de mensajes secretos, muchos autores usan los nombres genéricos Alice y Bob en lugar de los crípticos A y B. Si intervienen otras entidades (C, D, F… -la E quedaría reservada-), se les asignan entonces nombres que empiecen con estas iniciales, y los más frecuentes son Carol y Dave. Cuando un escenario involucra protección frente a atacantes que hacen escuchas, entonces para referirse a ellos se suele usar el nombre Eve (del término inglés eavesdropper, «fisgón») o bien el nombre Mallory, en caso de que el atacante, además de interceptar el mensaje, tenga la habilidad de alterarla.
Con frecuencia a los procesos de cifrado y descifrado se les denomina encriptado y desencriptado, ambos anglicismos de los términos ingleses encrypt y decrypt, que la Real Academia Española no ha incluido aún en el Diccionario de la lengua española. La Fundación del Español Urgente, asesorada por la Real Academia Española, indica que encriptar es un térnino válido y que no hay razón para censurar su uso.
Preprocesado del texto plano
En algunas ocasiones, antes de cifrar se realiza un preproceso de adaptación del texto plano. En este proceso se pueden seguir varios pasos que permitan el cifrado o hagan que el cifrado resultante sea más resistente frente a ataques por criptoanálisis. Todos estos cambios se tendrán que tener en cuenta cuando se realice el descifrado para poder obtener el texto plano original. Por ejemplo, son frecuentes las siguientes operaciones:
Algunos cifradores usan un alfabeto del texto en claro que no se corresponde con el del mensaje que se quiere cifrar. Por tanto, es necesario adaptar el mensaje a ese alfabeto. Por ejemplo, algunos cifradores usan como alfabeto del texto plano el alfabeto latino. Si se desea cifrar un texto en español, es necesario realizar un proceso como resultado del cual no aparezcan los caracteres H, J, Ñ, K, U, W y Y (por ejemplo, podrían sustituirse la U y la W por la V, la K con la Q, la Ñ por la N, la Y por la I, la J por la G, y eliminar la H). Otro ejemplo clásico es el caso de cifradores que no permiten cifrar minúsculas, en cuyo caso será necesario convertir todo en mayúsculas.
Para aumentar la calidad del texto cifrado con cierto cifrador, ya sea por su resistencia frente a ataques, extensión o cualquier otra circunstancia, a veces se preprocesa el texto en claro. Algunos ejemplos son:
Inclusión de fragmentos que son para despistar y que no tienen ningún significado. Habitualmente estos fragmentos son caracteres, y se denominan caracteres nulos.
Eliminación de situaciones del texto claro que pueden ser aprovechadas por ataques de criptoanálisis. Por ejemplo:
Los espacios en blanco y signos de puntuación suelen eliminarse para que, además de conseguir una trasmisión más eficiente, se consiga que las palabras no se puedan distinguir por los contornos. Esto puede producir ambigüedades que se tenían que resolver por el contexto.
Los casos de secuencias de letras idénticas seguidas (por ejemplo, RR o LL del idioma español, en ciertos tipos de cifradores pueden ser aprovechadas por atacantes. Para romper estas secuencias de caracteres iguales, suelen aplicarse dos estrategias: eliminar uno de los caracteres o meter un contenido que no se tiene que interpretar (si es un solo carácter, se le llama carácter nulo).
A veces, antes de cifrar, se utiliza un código que dificulta llegar al significado de ciertas palabras o frases especialmente importantes o habituales.
Por ejemplo, cuando se usa el cifrado de Alberti es habitual realizar una etapa de preprocesado en la que se usan algunas de estas técnicas. De hecho, el algoritmo está diseñado de tal forma que, para aprovechar su potencial, es necesario usarlo en esta etapa del preprocesado.
Tipos de cifrado según sus claves
Un sistema de cifrado se denomina:
- Simétrico cuando utiliza la misma clave para cifrar y descifrar;
- Asimétrico al usar claves diferentes: una pareja compuesta por una clave pública, que sirve para cifrar, y por una clave privada, que sirve para descifrar. El punto fundamental sobre el que se sostiene esta descomposición pública/privada es la imposibilidad práctica de deducir la clave privada a partir de la clave pública. Este tipo de cifrado suele denominarse PKE (del inglés public-key encription).
- Los métodos más conocidos son el DES, el Triple DES y el AES para la criptografía simétrica, y el RSA para la criptografía asimétrica, llamada también criptografía de clave pública.
La utilización de un sistema simétrico o asimétrico depende de las tareas a cumplir. La criptografía asimétrica presenta dos ventajas principales: suprime el problema de transmisión segura de la clave y permite la firma electrónica. No reemplaza sin embargo los sistemas simétricos, ya que los tiempos de cálculo son evidentemente más cortos con los sistemas simétricos que con los asimétricos.
Tipos de cifrado según sus algoritmos
Según la forma en la que operan los algoritmos de cifrado o descifrado, es posible distinguir varios tipos:
- Cifrado en flujo: En estos algoritmos el cifrado se realiza bit a bit. Están basados en la utilización de claves muy largas que son utilizadas tanto para cifrar como para descifrar. Estas claves pueden estar predeterminadas (libreta de un solo uso) o generarse usando un generador de claves pseudoaleatorias o RKG (acrónimo del inglés random key generator), que genera una secuencia binaria pseudoaleatoria a partir de una clave de inicialización K. A veces, en el cálculo de la clave pseudoaleatoria también interviene el mensaje cifrado hasta ese momento. Por otra parte, el cifrador propiamente dicho: habitualmente en este tipo de algoritmos hay que mantener en secreto tanto la clave como el cifrador.
- Cifrado por bloques: En este tipo de algoritmos, el cifrado se realiza bloque a bloque. En primera instancia, se descompone el mensaje en bloques de la misma longitud. A continuación, cada bloque se va convirtiendo en un bloque del mensaje cifrado mediante una secuencia de operaciones. Ejemplos típicos de operaciones realizadas para conseguir cada mensaje cifrado son la sustitución y la permutación (cifrado por transposición) de elementos.
Este tipo de algoritmos pueden ser tanto de clave simétrica como de clave asimétrica.
Ejemplos de Cifrados utilizados:
Cifrados por Sustitución
- Se basa en la sustitución de cada letra por otra letra para disfrazarla pero conservan el orden de los símbolos de texto normal.
- Entre ellos cabe destacar los siguientes:
– algoritmo de César,
– métodos de cifrado monoalfabéticos,
– polialfabéticos.
Algoritmo de César
- Debe su nombre a que era usado por Julio César para enviar mensajes secretos
- Consiste en sumar 3 al número de orden de cada letra. De esta forma a la A le corresponde la D, a la B la E, y así sucesivamente.
- Este algoritmo no posee clave, puesto que la transformación siempre es la misma.
- Para descifrar basta con restar 3 al número de orden de las letras del criptograma.
Ejemplo: el mensaje ataque se convertiría en DWDTXH
Métodos de Cifrado Monoalfabéticos
- Sustituyen cada letra por otra que ocupa la misma posición en un alfabeto desordenado y esta correspondencia se mantiene a lo largo de todo el mensaje. Así se consiguen tantas claves como posibilidades de alfabetos hay.
- El problema está en cómo recordar la clave (el alfabeto desordenado).
- El procedimiento es el siguiente:
1) Se busca una palabra (clave) fácil de recordar y se le quitan las letras duplicadas.
SEGURIDAD –> SEGURIDA
2) Se añaden al final de la palabra las restantes letras del alfabeto (sin duplicar letras).
SEGURIDABCFH………………XYZ
3) Se ordenan en una matriz cuya primera fila es la palabra clave
S E G U R I D A
B C F H J K L M
N O P Q T V W X
Y Z
4) El nuevo alfabeto se lee por columnas: SBNYECOZGFPUHQRJTIKVDLWAMX
Ejemplo: el mensaje ataque se convertiría en SVSTDE
El sistema de criptoanálisis mejor para romper el algoritmo es el estadístico.
Métodos de Cifrado Polialfabéticos
- Corresponde a la aplicación cíclica de n cifrados monoalfabéticos, (de varios abecedarios desordenados).
- Un ejemplo típico es el Cifrado de Vigènere:
– Dada una tabla con un alfabeto por cada letra del abecedario
– Método:
- Se busca una palabra clave fácil de recordar.
- Se escribe la palabra debajo del texto en claro, repitiéndose tantas veces como sea necesario.
- Cada letra del texto en claro se codifica con el alfabeto de la tabla marcado por la letra inferior, o sea, la letra de la clave que corresponde.
– Ejemplo:
CLAVE: ADIOS
Texto en claro : E S T O E S C R I P T O L O G I A
Clave: A D I O S A D I O S A D I O S A D
Criptograma E V B D W S F Z W H T R T C Y I D
Cifrados por Transposición
- Se basa en la reordenación de las letras de un texto de acuerdo a una palabra clave escogida que no contiene letras repetidas.
- Método:
-Con la clave se numera las columnas, estando la columna 1 bajo la letra de la clave más cercana al inicio del alfabeto, y así sucesivamente.
-El texto normal se escribe horizontalmente en filas.
-El texto cifrado se lee por columnas, comenzando por la columna cuya letra clave es más baja
- Se puede criptoanalizar efectuando un estudio estadístico sobre la frecuencia de aparición de pares y tripletas de símbolos
Rellenos de una sola vez
- El método consistiría en:
–Escoger una clave al azar,
–Por otro lado se convierte el texto normal en una cadena de bits
–Se calcula el XOR de estas dos cadenas
- El texto cifrado es indescifrable ya que no proporciona ninguna información.
- Problemas:
–La clave no puede memorizarse
–La cantidad de datos que se puede transmitir está limitada a la cantidad de clave disponible
–Es sensible a la perdida o inserción de caracteres si se pierde la sincronía entre receptor y emisor
Algoritmos de Clave Simétrica
- También se le denomina critografía privada o cifrado por bloques.
- Se caracteriza por usar la misma clave para encriptar y desencriptar.
- Toda la seguridad está basada en la privacidad de esta clave
Cifrado de Productos
- Se apoyan en dos conceptos:
–Confusión: tratar de ocultar la relación que existe entre el texto normal, el texto cifrado y la clave, es decir, realizar sustituciones simples
–Difusión: trata de repartir la influencia de cada bit del mensaje original lo más posible en el mensaje cifrado, es decir, realizar permutaciones
- Estas técnicas consisten en trocear el mensaje en bloques de tamaño fijo, y aplicar la función de cifrado a cada uno de ellos.
- Destacar que la confusión por sí sola sería suficiente, pero ocuparía mucha memoria, por lo que sería inviable.
Algoritmo DES
- Es el algoritmo simétrico más extendido mundialmente.
- Codifica bloques de 64 bits empleando claves de 56 bits.
- Consta de 16 rondas, más dos permutaciones, una que se aplica al principio (Pi) y otra al final (Pf ), tales que la última es la inversa de la primera.
- Para descifrar basta con usar el mismo algoritmo empleando el orden inverso.
- Ventajas del algoritmo:
–Es muy rápido y fácil de implementar.
- Desventajas:
–Emplea una clave demasiado corta, lo cual hace que con el avance actual de los ordenadores, los ataques por la fuerza bruta se puedan llevar a cabo.
Variantes del DES
- Se han propuesto variantes de este algoritmo para así aprovechar gran parte de las implementaciones por hardware existentes de DES. De ellos el que cabe destacar es:
- DES Múltiple:
–Consiste en aplicar varias veces el algoritmo DES con diferentes claves al mensaje original.
–El más común de todos ellos es el Triple-DES, que responde a la siguiente estructura:
–Codificar con la subclave k1, decodificar con k2 y volver a codificar con k1. La clave resultante es la concatenación de k1 y k2, con una longitud de 112 bits.
Idea (International Data EncryptionAlgorithm)
- Codifica bloques de 64 bits empleando una clave de 128 bits.
- Como en el caso de DES, se usa el mismo algoritmo tanto para cifrar como para descifrar.
- Es un algoritmo bastante seguro, y hasta ahora se ha mostrado resistente a los ataques.
- Su longitud de clave hace imposible en la práctica un ataque por la fuerza bruta como se podía hacer en el DES.
Algoritmo de Rijndael (AES)
- Es considerado el sucesor de DES.
- Este algoritmo se adoptó oficialmente en octubre del 2000 como nuevo Estándar Avanzado de Cifrado (AES) por el NIST (NationalInstituteforStandards and Technology) para su empleo en aplicaciones criptográficas.
- Su nombre se debe a dos autores belgas Joan Daemen y VincentRijmen.
Como peculiaridad tiene que todo el proceso de selección, revisión y estudio tanto de este algoritmo como de los restantes candidatos, se efectuó de forma pública y abierta, por lo que, toda la comunidad criptográfica mundial ha participado en su análisis, lo cual convierte a Rijndael en un algoritmo perfectamente digno de la confianza de todos.
AES es un sistema de cifrado por bloques, diseñado para manejar longitudes de clave y de bloque variables, ambas comprendidas entre los 128 y los 256 bits.
Modos de Operación para Algoritmos de Cifrado por Bloques
Independientemente del método empleado ¿qué ocurre cuando la longitud del mensaje no es un múltiplo exacto del tamaño de bloque?
- Se ha de añadir información al final para que sí lo sea.
- Mecanismo:
-Rellenar con 0’s el bloque que se codifica hasta completar.
–Problema: ¿cuándo se descifra por donde hay que cortar?.
- Añadir como último byte del último bloque el número de bytes que se han añadido.
Modo ECB (ElectronicCode Book)
- Es el método más sencillo de aplicar
- Subdivide la cadena a codificar en bloques del tamaño fijo y se cifran todos ellos empleando la misma clave.
Ventajas:
- Permite codificar bloques independientemente de su orden.
- Es resistente a errores.
Desventajas:
- Si el mensaje presenta patrones que se repiten, el texto cifrado también los presentará.
- Puede sufrir una sustitución de bloques
Modo CBC (Cipher Book Chaining)
- Es un mecanismo de retroalimentación de bloques mediante una codificación XOR entre el mensaje a codificar y el criptograma cifrado anterior.
- No comienza a codificar hasta que no tenga un bloque entero
Ventajas:
- Nos protege respecto a la sustitución de bloques.
- Es resistente a errores.
Desventajas:
- Si dos textos tienen el mismo patrón obtendrán el mismo resultado –> usar Vector de Inicio
Modo CFB (CipherFeedbackMode)
- Permite codificar la información en unidades inferiores al tamaño del bloque
- Realiza una XOR entre caracteres o bits aislados del texto y las salidas del algoritmo.
Ventajas:
- Permite aprovechar totalmente la capacidad de transmisión del canal de comunicaciones con mayor seguridad.
Modo OFB (Output FeedBackMode)
- Como el CFB, realiza una XOR entre caracteres o bits aislados del texto y las salidas del algoritmo.
- Pero utiliza como entradas sus propias salidas, por lo tanto no depende del texto.
Ventajas:
- Ya no depende del texto
Algoritmos de Clave Asimétrica
- Se caracteriza por usar una clave para encriptar y otra para desencriptar. Una clave no se derivará de la otra.
- Emplean longitudes de clave mucho mayores que los simétricos.
- Además, la complejidad de cálculo que comportan los hace más lentos que los algoritmos de cifrado simétricos.
- Por ello, los métodos asimétricos se emplean para intercambiar la clave de sesión mientras que los simétricos para el intercambio de información dentro de una sesión.
Aplicaciones
- Cifrado de la información sin tener que transmitir la clave de decodificación, lo cual permite su uso en canales inseguros.
–La clave que se hace pública es aquella que permite codificar los mensajes, mientras que la clave privada es aquella que permite descifrarlos.
- Autentificación de mensajes que nos permiten obtener una firma digital a partir de un mensaje. Dicha firma es mucho más pequeña que el mensaje original, y es muy difícil encontrar otro mensaje de lugar a la misma.
–La clave de descifrado se hará pública previamente, y la clave que se emplea para cifrar es la clave privada.
Algoritmo RSA
- Debe su nombre a: Ronald Rivest, Adi Shamir y Leonard Adleman.
- Las primeras versiones de PGP lo incorporaban como método de cifrado y firma digital.
- Se le tiene como uno de los algoritmos asimétricos más seguros.
- RSA se basa en la dificultad para factorizar grandes números.
- El atacante se enfrentará a un problema de factorización.
Vulnerabilidades:
–Claves Demasiado Cortas
Deberemos escoger la longitud de la clave en función del tiempo que queramos que nuestra información permanezca en secreto.
–Ataques de Intermediario
Puede darse con cualquier algoritmo asimétrico.
Manera de evitar: Certificados de confianza, que certifican la autenticidad de la clave.
-Ataques de Texto en Claro Escogido
Explota la posibilidad de que un usuario codifique y firme un único mensaje empleando el mismo par de claves.
–Firmar y Codificar
Nunca se debe firmar un mensaje después de codificarlo ya que existen ataques que aprovechan este hecho.
Algoritmo de Diffie-Hellman
- Se emplea fundamentalmente para acordar una clave común entre dos interlocutores, a través de un canal de comunicación inseguro.
- Algoritmo:
–A escoge un número aleatorio x, y envía a B el valor αx(mod p)
–B escoge un número aleatorio y envía a A el valor αy(mod p)
–B recoge α x y calcula K = (α x)y (mod p).
–A recoge α y y calcula K = (α y)x (mod p).
- Ventaja: no son necesarias claves públicas en el sentido estricto, sino una información compartida por los dos comunicantes.
Algoritmo ElGamal
- Fue diseñado en un principio para producir firmas digitales, pero posteriormente se extendió también para codificar mensajes.
- Se basa en el problema de los logaritmos discretos
- Algoritmo:
–Se escoge un número primo n y dos números aleatorios p y x menores que n. Se calcula entonces la expresión:
y = px (mod n)
–La clave pública es (p, y, n), mientras que la clave privada es x.
- Firmas Digitales de ElGamal
Escoger un número k aleatorio, tal que mcd(k,n-1) =1, y calcular:
a = pk(mod n)
b = (m-xa)k-1 (mod (n-1))
La firma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en secreto y ser diferente cada vez.
La firma se verifica comprobando que yaab = pm (mod n)
- Codificación de ElGamal
Para codificar el mensaje m se escoge primero un número aleatorio k primo relativo con (n-1), que también será mantenido en secreto. Calculamos:
a = pk (mod n)
b = ykm (mod n)
El par (a, b) es el texto cifrado, de doble longitud que el texto original.
Algoritmo de Rabin
- Se basa en el problema de calcular raíces cuadradas modulo un número compuesto. Este problema se ha demostrado que es equivalente al de la factorización de dicho número.
- En primer lugar escogemos dos números primos, p y q, ambos congruentes con 3 módulo 4 (los dos últimos bits a 1). Estos primos son la clave privada. La clave pública es su producto, n = pq.
- Para codificar un mensaje m, se calcula:
c = m2 (mod n)
Para decodificar se calcula
m = b * a-x (mod n)
Algoritmo DSA (Digital SignatureAlgorithm)
- Es una parte el estándar de firma digital DSS (Digital Signature Standard).
- Este algoritmo, propuesto por el NIST, data de 1991, es una variante del método asimétrico de ElGamal.
- Pasos:
–Por un lado se generará la clave pública compuesta por (p, q, α, y). Y por otro la clave privada a.
–Se generá la firma con la cual podrá operar el emisor.
–El destinatario efectuará las operaciones oportunas, suponiendo que conoce la clave pública (p, q, α , y), para verificar la autenticidad de la firma.