ENCRIPTACIÓN SIMÉTRICA
El cifrado mediante clave simétrica significa que dos o más usuarios,
tienen una única clave secreta, esta clave será la que cifrará y descifrará
la información transmitida a través del canal inseguro.
Es decir, la clave secreta la debe tener los dos usuarios, y con dicha
clave, el usuario A cifrará la información, la mandará a través del canal
inseguro, y a continuación el usuario B descifrará esa información con la
MISMA clave que ha usado el usuario A.
Para que un algoritmo de clave simétrica sea fiable
debe cumplir:
– Una vez que el mensaje es cifrado, no se puede obtener la clave de
cifrado/descifrado ni tampoco el texto en claro.
– Si conocemos el texto en claro y el cifrado, se debe tardar más y gastar
más dinero en obtener la clave, que el posible valor derivado de la
información sustraída (texto en claro).
Debemos tener en cuenta que los algoritmos criptográficos son públicos,
por lo que su fortaleza debe depender de su complejidad interna y de la
longitud de la clave empleada para evitar los ataques de fuerza bruta.
La seguridad en clave simétrica reside en la propia clave secreta, y por
tanto el principal problema es la distribución de esta clave a los distintos
usuarios para cifrar y descifrar la información. La misión del emisor y
receptor es mantener la clave en secreto. Si cae en manos equivocadas ya
no podríamos considerar que la comunicación es segura y deberíamos
generar una nueva clave.
Otro problema reside en que las claves secretas a guardar es proporcional
al número de canales seguros que deseamos mantener. Esto no es un
problema en sí, pero debemos administrar bien las llaves para no
equivocarnos. Este problema no se va a presentar en los algoritmos
asimétricos porque cada usuario tiene una pareja de claves, una pública y
la otra privada, independientemente del número de canales seguros que
queramos establecer. Únicamente debe proteger la clave privada.
La principal ventaja de los algoritmos simétricos es la velocidad de los
algoritmos, y son muy usados para el cifrado de grandes cantidades de
datos.
ALGUNOS ALGORITMOS DE CLAVE SIMÉTRICA
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.
RC4
RC4 es un algoritmo de cifrado de flujo diseñado por Ron Rivest para
RSA Data Security. Es un algoritmo de tamaño de clave variable con
operaciones a nivel de byte. Es un algoritmo de ejecución rápida en
software. El algoritmo se emplea para encriptación de ficheros y para
encriptar la comunicación en protocolos como el SSL (TLS).
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.
SKIPJACK
Es uncifrado simétrico que usa bloques de 64 bits y una clave de 80 bits.
Es un algoritmo de alto riesgo. Fue desarrollado por la SNA inicialmente
para los chips Clipeper y Capstone.
Chip Clipper: Conocido como MUK-78T, de diseño
antimanipulaciones (tamper-proof) del tipo VLSI, pensado para encriptar
mensajes de voz.
Cada chip tiene una clave especial que no se usa para los mensajes, sino
para encriptar una copia de la clave que el usuario utiliza para sus
mensajes.
Chip Capstone: Conocido como MYK-80 es un chip VLSI que
implementa el ESS (Escrowed Encryption System) e incorpora las
siguientes funciones:
Uso del algoritmo Skipjack
Un algoritmo de intercambio de claves publicas (KEA)
Un algoritmo de firma digital (DSA)
El algoritmo de hash seguro (SHA)
Un algoritmo de uso común de tipo exponencial
Un algoritmo de generación de números aleatorios que
utiliza una fuente pura de ruidos.
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).
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í.
Hasta aquí hemos llegado con los algoritmos de cifrado de clave
simétrica. Ya sabéis sus ventajas e inconvenientes, los tipos de cifrados
que hay y los modos de cifrar la información.
ENCRIPTACIÓN ASIMÉTRICA
La criptografía asimétrica nos ofrece autenticidad, que consiste en:
Confidencialidad. Cifrando las comunicaciones.
No repudio. Mediante firma electrónica.
Integridad. El mensaje que recibimos es de quien dice ser y contiene
lo que el remitente escribió.
ALGUNOS USOS DE ESTE TIPO DE CRIPTOGRAFÍA.
1. Cifrado y descifrado de mensajes
2. Firmado y verificación de mensajes.
3. Acceso seguro a servicios remotos.
4. Firmado de código.
CÓMO FUNCIONA
Esta criptografía se basa en dos claves distintas (de ahí el nombre de
criptografía asimétrica). Una de las claves se denomina pública y la
otra privada.
La clave pública (como su nombre indica) puede hacerse pública, por el
contrario la clave privada sólo es conocida por el propietario de la
misma.
Cuando una persona quiere firmar digitalmente un mensaje usa
su clave privada, de esta forma cualquier persona que posea la clave
pública del remitente podrá comprobar que el mensaje ha sido firmado
correctamente.
Para cifrar un mensaje se usa la clave pública del destinatario, así
cuando éste reciba el mensaje podrá usar su clave privada para
descifrarlo y por tanto sólo él puede ver el contenido del mensaje.
LOS ALGORITMOS DE ENCRIPTACIÓN
ASIMÉTRICA MÁS CONOCIDOS SON:
RSA (Rivest, Shamir, Adleman) Creado en 1978, hoy
es el algoritmo de mayor uso en encriptación
asimétrica. Tiene dificultades para encriptar grandes
volúmenes de información, por lo que es usado por lo
general en conjunto con algoritmos simétricos.
Diffie-Hellman (& Merkle) No es precisamente un
algoritmo de encriptación sino un algoritmo para
generar llaves públicas y privadas en ambientes
inseguros.
ECC (Elliptical Curve Cryptography) Es un algoritmo
que se utiliza poco, pero tiene importancia cuando es
necesario encriptar grandes volúmenes de información.
Algoritmos de autenticación (o hash)Una función
hash es método para generar claves o llaves que
representen de manera casi unívoca a un documento o
conjunto de datos. Es una operación matemática que se
realiza sobre este conjunto de datos de cualquier
longitud, y su salida es una huella digital, de tamaño fijo
e independiente de la dimensión del documento
original. El contenido es ilegible.
Es posible que existan huellas digitales iguales para objetos diferentes,
porque una función hash, en el caso del SHA-1 tiene 160bits, y los
posibles objetos a resumir no tienen un tamaño límite.
A partir de un hash o huella digital, no podemos recuperar el conjunto de
datos originales. Los más conocidos son el MD5 y el SHA-1. Cifrar una
huella digital se conoce como firma digital.
Requisitos que deben cumplir las funciones hash:
– Imposibilidad de obtener el texto original a partir de la huella digital.
– Imposibilidad de encontrar un conjunto de datos diferentes que tengan
la misma huella digital (aunque como hemos visto anteriormente es
posible que este requisito no se cumpla).
– Poder transformar un texto de longitud variable en una huella de
tamaño fijo (como el SHA-1 que es de 160bits).
– Facilidad de empleo e implementación.
EJEMPLOS DE FUNCIONES HASH
MD4 : Es un algoritmo de resumen del mensaje (el cuarto en la serie)
diseñado por el profesor Ronald Rivest del MIT. Implementa una
función criptográfica de hash para el uso en comprobaciones de
integridad de mensajes. La longitud del resumen es de 128 bits. El
algoritmo ha influenciado diseños posteriores, tales como el MD5, el
SHA o el RIPEMD-160.
Ciertas debilidades en MD4 fueron demostradas por Den Boer y
Bosselaers en un documento publicado en 1991. Muchos de los diseños
posteriores de resumen del mensaje basados en él siguen siendo seguros,
en el sentido que no se ha publicado ningún ataque eficaz contra ellos.
MD5: Es una función hash de 128 bits. Como todas las funciones hash,
toma unos determinados tamaños a la entrada, y salen con una longitud
fija (128bits).
El algoritmo MD5 no sirve para cifrar un mensaje. La información
original no se puede recuperar ya que hay pérdida de datos. MD5 es
usado para firmas digitales como veremos próximamente
en REDESzone.net
SHA-1: Es parecido al famoso MD5, pero tiene un bloque de 160bits
en lugar de los 128bits del MD5. La función de compresión es más
compleja que la función de MD5. SHA-1 es más lento que MD5 porque
el número de pasos son de 80 (64 en MD5) y porque tiene mayor
longitud que MD5 (160bits contra 128bits). Lo que convierte a SHA-1
más robusto y seguro, totalmente apto para VPN’s por ejemplo.
SHA-2: Las principales diferencias con SHA-1 radica en en su diseño
y que los rangos de salida han sido incrementados y podemos encontrar:
SHA-224, SHA-256, SHA-384, y SHA-512
El más seguro, es el que mayor salida de bits tiene, el SHA-512, que
tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de éste en:
-Tamaño de salida 512 por los 160 de SHA-1.
– Tamaño del bloque, tamaño de la palabra y tamaño interno que es el
doble que SHA-1.
Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento
su procesamiento y uso, debemos encontrar un equilibrio entre seguridad
y velocidad.