Criptografía en la Ingeniería de Software

La criptografía es uno de esos temas que muchos desarrolladores prefieren dejar a los expertos en seguridad. Sin embargo, entender sus fundamentos no es solo responsabilidad del equipo de seguridad — es parte del oficio de cualquier ingeniero de software que maneje datos sensibles.
En su forma más simple, la criptografía moderna se apoya en tres pilares: el hash, el cifrado simétrico y el cifrado asimétrico. El hash, usado en algoritmos como SHA-256, convierte cualquier entrada en una salida de longitud fija. Es la base del almacenamiento de contraseñas: nunca guardamos la contraseña, solo su hash. El cifrado simétrico (AES, por ejemplo) usa una misma clave para cifrar y descifrar. Es rápido, ideal para datos en reposo. El cifrado asimétrico (RSA, ECC) usa un par de claves pública y privada, permitiendo comunicación segura sin compartir la clave secreta de antemano.
En el día a día del desarrollo web, la criptografía aparece en HTTPS (TLS/SSL), en la autenticación con JWT, en el manejo de sesiones y en la integración con APIs de terceros. Un error común es implementar algoritmos propios — la regla de oro es: no inventes tu propia criptografía. Usa bibliotecas probadas como bcrypt, argon2 (para contraseñas) o crypto de Node.js.
Más allá de las herramientas, lo importante es el principio de defensa en profundidad: la criptografía es una capa, no la solución completa. Combinada con validación de entrada, control de acceso y buenas prácticas de almacenamiento, forma la base de un sistema seguro y confiable.