Cryptography Basics
Fundamentos de criptografía clásica y moderna: cifrado simétrico y asimétrico, intercambio de claves, funciones hash/HMAC y el rol de PKI para autenticidad y confianza.
Definición
Fundamentos de criptografía clásica y moderna: cifrado simétrico y asimétrico, intercambio de claves, funciones hash/HMAC y el rol de PKI para autenticidad y confianza.
Contexto
- Proteger confidencialidad, integridad, autenticidad y no repudio en comunicaciones y almacenamiento.
- Las implementaciones modernas combinan cifrado simétrico (rápido) con asimétrico (gestión de claves) y PKI para confianza en canales inseguros.
Desarrollo (MIT-style)
Cifrado clásico (sustitución y transposición)
- Cifrado César (desplazamiento fijo; ejemplo +3):


- Clave de 1–25; espacio de claves reducido → fuerza bruta viable.
- Ejemplo de brute force: clave 5 revela “ESTE ES ALPHA BRAVO CONTACTAR A MIKE, DEL HOTEL TANGO”.
- Cripto de sustitución monoalfabética: asigna cada letra a otra (p.ej., alfabeto mapeado a
xpatvrzyjhecsdikbfwunqgmol).- Rompible por análisis de frecuencia (e/t/a más comunes en inglés).
- Ejemplo cifrado resuelto con quipqiup:

- Cifrado por transposición: reordena letras según clave (p.ej., clave
42351):
- Retos:
- Cita cifrada:
_“Xjnvw lc sluxjmw jsqm wjpmcqbg jg wqcxqmnvw; xjzjmmjd lc wjpm sluxjmw jsqm bqccqm zqy.” Zlwvzjxj Zpcvcol(pendiente de atribuir autor).
- Cita cifrada:
Cifrado simétrico
- Mismo secreto para cifrar/descifrar; requiere canal seguro para compartir clave.
- Conceptos:
- Confidencialidad, integridad y autenticidad si la clave se mantiene secreta.
- Problema de escalabilidad: N usuarios ⇒ N(N−1)/2 claves (100 usuarios ≈ 4.950 claves).
- Algoritmos:
- DES (56 bits) roto por fuerza bruta; 3DES obsoleto (2023/2024).
- AES (128/192/256 bits) seguro. Transformaciones: SubBytes, ShiftRows, MixColumns, AddRoundKey.

- Otros soportados por GPG 2.37.7: IDEA, CAST-128 (REPARTO5/CAST-128), Blowfish/Twofish, Camellia, 3DES.
- Bloques vs flujo:
- Bloque (128 bits típico): procesa bloques completos.

- Flujo: cifra byte a byte.

- Bloque (128 bits típico): procesa bloques completos.
- Herramientas y comandos (mantener todos):
- GPG:
Terminal window gpg --symmetric --cipher-algo CIPHER message.txtgpg --armor --symmetric --cipher-algo CIPHER message.txt # salida ASCIIgpg --output original_message.txt --decrypt message.gpg - OpenSSL (cifrado de archivo):
Terminal window openssl aes-256-cbc -e -in message.txt -out encrypted_messageopenssl aes-256-cbc -d -in encrypted_message -out original_message.txtopenssl aes-256-cbc -pbkdf2 -iter 10000 -e -in message.txt -out encrypted_messageopenssl aes-256-cbc -pbkdf2 -iter 10000 -d -in encrypted_message -out original_message.txt - Nota: assets de práctica se referencian como
/root/Rooms/cryptographyintro/task02(enlace faltante en RAW).
- GPG:
Cifrado asimétrico (RSA) y confidencialidad/autenticidad
- Par de claves público/privado. Cifra con una, descifra con la otra.
- Confidencialidad: cifrar con clave pública del receptor.

- Autenticidad/no repudio/integridad: firmar (cifrar hash) con clave privada; verificar con pública.

- RSA (idea): elegir primos p, q; N=pq; exponente público e; d = inverso mod φ(N). Seguridad basada en factorización.
- Ejemplo práctico de claves OpenSSL:
Terminal window openssl genrsa -out private-key.pem 2048openssl rsa -in private-key.pem -pubout -out public-key.pemopenssl rsa -in private-key.pem -text -noout # ver modulus, prime1/prime2, exponents# cifrar/descifrar con RSAopenssl pkeyutl -encrypt -in plaintext.txt -out ciphertext -inkey public-key.pem -pubinopenssl pkeyutl -decrypt -in ciphertext -inkey private-key.pem -out decrypted.txt
Intercambio de claves Diffie-Hellman
- Acuerdo de clave secreta en canal público mediante generador g y primo q.

- Pasos: elegir secretos a/b; publicar A=g^a mod q, B=g^b mod q; clave = (B^a mod q) = (A^b mod q).
- MitM: vulnerable sin autenticación (Mallory puede suplantar).

- Generar parámetros reales:
Terminal window openssl dhparam -out dhparams.pem 2048openssl dhparam -in dhparams.pem -text -noout # muestra primo P y generador G - Pregunta del RAW: tamaño del número primo en
dhparam.pem(en la ruta mencionada) — verificar en entorno de práctica.
Hash y HMAC
- Hash: entrada arbitraria → digest fijo (ej.: SHA256 = 256 bits = 64 hex). Detecta cambios mínimos.
Ejemplos de comandos:Cambiar un bit (T vs t) produce digest totalmente distinto.Terminal window sha256sum file.ext - Algoritmos seguros: SHA-2 (224/256/384/512), RIPEMD160. Vulnerables: MD5, SHA-1 (colisiones).
- HMAC: hash + clave (RFC2104). Fórmula: H(K ⊕ opad, H(K ⊕ ipad, texto)).

Comandos:Terminal window hmac256 s!Kr37 message.txthmac256 1234 message.txtsha256hmac message.txt --key s!Kr37
PKI y SSL/TLS
- PKI asegura identidad para evitar MitM en intercambio de claves (certificados, CA).
- Ejemplo: HTTPS muestra candado al validar el certificado de example.org.

Ejemplos adicionales
- Texto cifrado de práctica: “YMNX NX FQUMF GWFAT HTSYFHYNSL YFSLT MTYJQ RNPJ” → clave 5 (César) produce texto legible.
- Lista de cifrados soportados en GPG 2.37.7 (simétricos por bloques) incluida arriba; usar
gpg --versionpara confirmar en tu entorno.
Pitfalls / Errores comunes
- Usar DES/3DES o hashes débiles (MD5/SHA-1) en sistemas nuevos.
- Creer que RSA provee velocidad de datos: se usa para intercambio/firmas, no para grandes volúmenes.
- Implementar Diffie-Hellman sin autenticación → MitM.
- No usar PBKDF2/iteraciones al derivar claves de contraseñas (OpenSSL
-pbkdf2 -iter). - Guardar claves privadas sin protección o publicar claves públicas sin validar integridad/propiedad.
Diagrama
flowchart TD A[Clásicos: sustitución/transposición] --> B[Cifrado simétrico] B --> C[Herramientas: AES, GPG, OpenSSL] B --> D[Intercambio de claves DH] D --> E[PKI para autenticación] C --> F[Hash/HMAC para integridad] E --> G[Cifrado asimétrico (RSA)] G --> H[Confidencialidad y firmas]