Fundamentos de Cifrado: Diferencias entre AES y RSA
Aprende los principios del cifrado simetrico y asimetrico y sus casos de uso practicos.

Protegiendo secretos en el mundo digital
Enviamos dinero a traves de banca en linea, conversamos con amigos por mensajeria, y pagamos con tarjeta en tiendas online. En todos estos momentos, nuestra informacion sensible se transmite a servidores en algun lugar del mundo. ¿Como es que los hackers no pueden interceptar esta informacion en el camino? La respuesta esta en el cifrado.
El cifrado es el proceso de convertir datos legibles (texto plano) en una forma ilegible (texto cifrado). Es como cuando de ninos intercambiabamos cartas secretas con amigos usando reglas acordadas para cambiar las letras. Solo que el cifrado moderno es matematicamente mucho mas complejo, hasta el punto de que es imposible de descifrar incluso usando todos los ordenadores existentes.
Hoy en dia, hay dos metodos de cifrado ampliamente utilizados: AES (cifrado simetrico) y RSA (cifrado asimetrico). Los nombres pueden parecer dificiles, pero una vez que entiendas los conceptos, quedara claro por que se necesitan ambos metodos y cuando usar cada uno.
Clave simetrica vs asimetrica: La diferencia fundamental
En el mundo del cifrado, una 'clave' es como la llave que abre un candado. En el cifrado simetrico, usas una sola clave para cerrar y abrir. Piensa en la puerta de tu casa. Puedes cerrarla y abrirla con la misma llave. Es simple y rapido, pero hay un problema: ¿como entregas la llave de forma segura a la otra persona?
El cifrado asimetrico resuelve este problema elegantemente. Usa dos claves: una es la clave publica (public key) que puede compartirse con cualquiera, y la otra es la clave privada (private key) que nunca debe compartirse. Lo que se cifra con la clave publica solo puede abrirse con la clave privada. Es como un buzon: cualquiera puede meter cartas, pero solo la persona con la llave puede abrirlo y sacarlas.
| Caracteristica | Simetrico (AES) | Asimetrico (RSA) |
|---|---|---|
| Numero de claves | 1 | 2 (publica/privada) |
| Velocidad | Rapido | Lento (100-1000 veces) |
| Distribucion de claves | Requiere canal seguro | Clave publica puede ser publica |
| Uso principal | Cifrado de grandes volumenes de datos | Intercambio de claves, firmas digitales |
AES: Cifrado simetrico rapido y potente
AES (Advanced Encryption Standard) es el algoritmo de cifrado estandar adoptado por el gobierno de EE.UU. en 2001. Cuando el DES anterior dejo de ser seguro debido al aumento del rendimiento de las computadoras, fue seleccionado a traves de una competicion entre criptografos de todo el mundo. El algoritmo Rijndael, creado por criptografos belgas, fue el ganador.
La fortaleza de AES es la velocidad. Los procesadores modernos tienen instrucciones dedicadas para operaciones AES (AES-NI), permitiendo cifrar gigabytes de datos en un instante. AES se usa para cifrar archivos con contrasena, proteger informacion sensible en bases de datos, o cifrar discos completos.
Segun la longitud de la clave, se divide en AES-128, AES-192 y AES-256. El numero significa el numero de bits de la clave. AES-256 tiene 2^256 combinaciones de claves posibles, que es mas que el numero de atomos en el universo. Con la tecnologia actual, es imposible romperlo por fuerza bruta.
Sin embargo, hay una decision importante al usar AES: la eleccion del modo de operacion. El modo ECB nunca debe usarse porque el mismo bloque de texto plano siempre produce el mismo texto cifrado, exponiendo patrones. Lo recomendado actualmente es GCM (Galois/Counter Mode). GCM verifica la integridad de los datos junto con el cifrado, permitiendo saber si el texto cifrado ha sido manipulado.
const crypto = require('crypto');
function encrypt(text, key) {
const iv = crypto.randomBytes(12); // GCM recomienda IV de 12 bytes
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
let encrypted = cipher.update(text, 'utf8', 'hex');
encrypted += cipher.final('hex');
const authTag = cipher.getAuthTag();
return {
iv: iv.toString('hex'),
encrypted,
authTag: authTag.toString('hex')
};
}
RSA: El sinonimo de cifrado de clave publica
RSA es un algoritmo nombrado con las iniciales de tres profesores del MIT: Rivest, Shamir y Adleman, en 1977. Se basa en el principio matematico de que factorizar numeros grandes es dificil. Multiplicar dos numeros primos grandes es facil, pero encontrar los dos primos originales a partir del resultado es astronomicamente dificil.
La mayor ventaja de RSA es que resuelve el problema de distribucion de claves. La clave publica, como su nombre indica, puede hacerse publica. Si alguien quiere enviarte un mensaje cifrado, lo cifra con tu clave publica y te lo envia. Solo tu clave privada puede abrirlo.
RSA tambien se usa para firmas digitales. En este caso, se invierte el proceso: se firma con la clave privada y se verifica con la clave publica. Como solo el propietario tiene la clave privada, una firma valida es prueba de que el mensaje realmente vino de esa persona. Se usa para verificar la autenticidad de paquetes de actualizacion de software o documentos legales.
Sin embargo, RSA es lento. Es de cientos a miles de veces mas lento que AES, por lo que no es adecuado para cifrar directamente grandes volumenes de datos. Por eso, en la practica se usa un enfoque hibrido.
Cifrado hibrido: Lo mejor de ambos mundos
La mayoria de los sistemas de cifrado en el mundo real usan AES y RSA juntos. Simplificando lo que sucede cuando accedes a un sitio web con HTTPS:
Primero, cuando el navegador se conecta al servidor, el servidor envia su certificado que contiene su clave publica. El navegador genera una clave AES aleatoria (clave de sesion), la cifra con la clave publica RSA del servidor y la envia. El servidor la descifra con su clave privada y obtiene la clave AES. Ahora ambos lados tienen la misma clave AES, y toda la comunicacion posterior se cifra con este rapido AES.
La belleza de este metodo es que aprovecha tanto la ventaja de distribucion de claves de RSA como la velocidad de AES. RSA solo cifra datos pequenos (la clave AES) por lo que la lentitud no es un problema, y la comunicacion real de grandes volumenes la maneja el rapido AES.
Precauciones al implementar cifrado
Los algoritmos de cifrado en si son potentes, pero si se usan incorrectamente, son inutiles. Hay varios errores comunes que evitar.
No debes hardcodear las claves en el codigo fuente. Es comun ver noticias de hackeos porque las claves de AWS quedaron expuestas en codigo subido a GitHub. Las claves deben manejarse con variables de entorno o servicios de gestion de claves especializados como AWS KMS o HashiCorp Vault.
El IV (Vector de Inicializacion) de AES debe usar un valor aleatorio nuevo cada vez. Reutilizar el mismo IV con la misma clave puede romper el cifrado. El IV no es secreto, asi que puede almacenarse junto con el texto cifrado. Lo importante es no reutilizarlo.
No intentes implementar algoritmos de cifrado por tu cuenta. Usar librerias verificadas es mucho mas seguro. La criptografia es un campo donde un error sutil puede derrumbar toda la seguridad.
Conclusion
El cifrado es la base del mundo digital moderno. Entender los principios de AES y RSA te permitira comprender naturalmente como funciona HTTPS, por que las contrasenas deben almacenarse como hash, y que son las firmas digitales.
Usa las herramientas de cifrado de Toolypet para cifrar y descifrar texto directamente. En el momento en que los conceptos abstractos se conviertan en experiencia concreta, tu comprension de la seguridad se profundizara un nivel.