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

Característica
Cifrado Simétrico
Cifrado Asimétrico

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?

  1. El cliente se conecta al servidor via HTTPS.

  2. El servidor envía su certificado con su clave pública.

  3. El cliente verifica el certificado vía la CA.

  4. Se negocia una clave simétrica usando la clave pública del servidor (Intercambio de claves).

  5. 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

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

Comando
Ejemplo
Explicación

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:

  1. Se genera un hash del mensaje.

  2. Se cifra ese hash con la clave privada (firma).

  3. 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