Simetría, cifrados, protocolos, OpenSSL, Hashing y más
1. Cifrado Simétrico y Asimétrico
Cifrado Simétrico
Definición: El cifrado simétrico es una técnica criptográfica en la cual se utiliza una única clave secreta tanto para cifrar como para descifrar la información.
Origen: Usado desde tiempos antiguos (como el cifrado César), formalizado con algoritmos como DES, AES, y RC4.
Ejemplo técnico:
openssl enc -aes-256-cbc -in mensaje.txt -out mensaje.enc -k clave123
openssl enc -aes-256-cbc -d -in mensaje.enc -out mensaje_dec.txt -k clave123
Ventajas:
Rápido y eficiente computacionalmente.
Ideal para cifrado de grandes volúmenes de datos.
Desventajas:
Distribución segura de la clave es un problema.
Si la clave se compromete, toda la comunicación lo está.
Cifrado Asimétrico
Definición: Utiliza un par de claves: una clave pública (para cifrar) y una clave privada (para descifrar).
Origen: Propuesto en 1976 por Whitfield Diffie y Martin Hellman. Formalizado con algoritmos como RSA, ECC.
Ejemplo técnico con RSA:
openssl genrsa -out privada.pem 2048
openssl rsa -in privada.pem -pubout -out publica.pem
Ventajas:
Soluciona el problema de distribución de claves.
Permite autenticación y firmas digitales.
Desventajas:
Más lento que el cifrado simétrico.
No eficiente para grandes cantidades de datos.
Tabla Comparativa
Número de claves
1 (misma para cifrar/descifrar)
2 (pública/privada)
Velocidad
Alta
Baja
Seguridad en distribución
Problema
Segura (clave pública abierta)
Uso
Cifrado de datos
Firma, intercambio de claves
2. Public Key y Private Key
Clave Pública (Public Key)
Se comparte con cualquiera.
Se utiliza para cifrar mensajes o verificar firmas.
Clave Privada (Private Key)
Se mantiene en secreto.
Se utiliza para descifrar mensajes o firmar digitalmente.
Analogía: Como una caja fuerte (clave pública) que cualquiera puede cerrar, pero solo tú (con la clave privada) puedes abrir.
3. Cifrado de Transposición
Definición: Reordena los caracteres del mensaje original según un patrón.
Ejemplo:
Mensaje original: ATAQUEALAMANANA
Cifrado (matriz 4x4 por columnas):
A T A Q
U E A L
A M A N
A N A _
Lectura por columnas: AUAATEMMANLAQNA_
Característica: No altera los caracteres, solo su posición.
4. Cifrado en Flujo (Stream Cipher)
Definición: Cifra bit a bit o byte a byte. Se genera una clave pseudoaleatoria (keystream) que se combina con el mensaje.
Ejemplo de algoritmo: RC4 (hoy débil), Salsa20, ChaCha20.
Ventajas:
Bajo consumo de memoria.
Cifra en tiempo real.
Desventajas:
Vulnerable si el keystream se reutiliza.
5. Cifrado en Bloques (Block Cipher)
Definición: Divide el mensaje en bloques de tamaño fijo (por ej., 128 bits). Cifra cada bloque individualmente.
Ejemplo de algoritmos: AES, DES, Blowfish
Modos de operación:
ECB, CBC, CFB, OFB, CTR
Ejemplo ECB: Cifra cada bloque independientemente (no recomendado).
Ejemplo CBC: Cifra cada bloque combinando con el anterior (requiere IV).
6. ¿Cómo funciona HTTPS?
El cliente se conecta al servidor via HTTPS.
El servidor envía su certificado con su clave pública.
El cliente verifica el certificado vía la CA.
Se negocia una clave simétrica usando la clave pública del servidor (Intercambio de claves).
Se cifra la comunicación usando la clave simétrica.
7. PKI (Public Key Infrastructure)
Definición: Conjunto de roles, políticas y procedimientos que permiten la emisión y validación de certificados digitales.
Componentes:
CA (Certificate Authority)
RA (Registration Authority)
CRL (Certificate Revocation List)
8. Certificados Web
Autenticidad del servidor.
Emitido por una CA.
Incluye clave pública, nombre del dominio, fecha de expiración.
Ejemplo de uso:
openssl s_client -connect www.ejemplo.com:443
9. Comando OpenSSL: openssl rc4 -in password.txt -out password.rc4
openssl rc4 -in password.txt -out password.rc4
Este comando cifra el archivo password.txt
usando el algoritmo RC4 (stream cipher) y guarda el resultado en password.rc4
.
Notas:
RC4 es inseguro actualmente.
OpenSSL requiere una clave interactiva.
10. Cómo funciona AES (Advanced Encryption Standard)
Tipo: Cifrado en bloques (128 bits).
Longitudes de clave: 128, 192, 256 bits.
Operaciones internas: sustitución, permutación, mezcla de columnas.
Rondas: 10-14 según la longitud de la clave.
Ejemplo:
openssl enc -aes-256-cbc -in archivo.txt -out archivo.enc
11. Cómo funciona RSA
Tipo: Cifrado asimétrico.
Basado en factorización de números primos.
Claves: par de claves generadas a partir de primos grandes.
Operaciones: exponenciación modular.
Ejemplo:
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
12. Tabla de Comandos OpenSSL
Generar clave privada RSA
openssl genrsa -out private.pem 2048
Crea una clave privada de 2048 bits
Extraer clave pública
openssl rsa -in private.pem -pubout -out public.pem
Extrae la clave pública de la privada
Cifrar archivo
openssl rsautl -encrypt -inkey public.pem -pubin -in secreto.txt -out secreto.enc
Usa clave pública para cifrar
Descifrar archivo
openssl rsautl -decrypt -inkey private.pem -in secreto.enc -out secreto.txt
Usa clave privada para descifrar
Ver certificado
openssl x509 -in cert.pem -text -noout
Muestra detalles del certificado
13. Hashing
¿Qué es un Hash?
Es una función unidireccional que transforma un dato de cualquier tamaño en una cadena fija (digest).
Ejemplos de funciones hash: MD5, SHA1, SHA256, SHA3
Propiedades:
Unidireccionalidad: No se puede obtener el original desde el hash.
Difusión de bits: Cambios pequeños generan hash completamente distintos.
Resistencia a colisiones: Difícil encontrar dos entradas con el mismo hash.
Fácil de calcular: Ideal para verificar integridad.
Ejemplo:
openssl dgst -sha256 archivo.txt
14. Firma Digital
Definición
Es una forma de garantizar que un mensaje proviene del remitente y no ha sido modificado.
Proceso:
Se genera un hash del mensaje.
Se cifra ese hash con la clave privada (firma).
El receptor descifra con la clave pública y compara el hash.
Ejemplo con OpenSSL:
openssl dgst -sha256 -sign private.pem -out firma.bin mensaje.txt
openssl dgst -sha256 -verify public.pem -signature firma.bin mensaje.txt
Este documento ofrece una base completa y práctica para comprender y utilizar cifrado y OpenSSL en contextos de seguridad ofensiva y defensiva. Siguiente paso: aplicarlo en laboratorio real.
Last updated