¿Cuáles son los algoritmos criptográficos básicos que un programador debe saber?

Algunos conceptos básicos de criptografía que todo programador debe saber son

1. Protocolo de intercambio de claves: el establecimiento de claves es crítico en la aplicación segura para asegurarse de que no haya un ataque de suplantación. Los sitios de E-com dependen en gran medida del intercambio seguro de claves de sesión entre el usuario autenticado y el servidor.

2. Esquemas de firma y encriptación: La idea de encriptación gira en torno a los premitivos de encriptación-desencriptación y las primitivas de verificación de firmas. Enc garantiza la transferencia segura de datos al destinatario previsto y la firma garantiza la autenticidad del remitente de la información.

Además de algunos antecedentes teóricos, los programadores deberían poder utilizar bibliotecas criptográficas como la API de bouncy castle (www.bouncy castle.org) y las ofertas de TLS 1.2 para implementar una aplicación segura.

También el conocimiento fundamental de cómo un sistema y un código pueden verse comprometidos ayuda a identificar el nivel de seguridad del código. La iniciativa OWASP proporciona un análisis lamentable de los 10 principales ataques en aplicaciones web o en seguridad. Conocerlos es sin duda una ventaja añadida para cualquier programador.

La criptografía es un vasto campo con muchos algoritmos. Pero para los principiantes, algunos algoritmos criptográficos básicos pueden ser de cifrados clásicos como cifrado Affine, Atbash, Base64, cifrado César, código Morse, OTP (One Time Pad), cifrado de transposición, cifrado de Vigenere, cifrado de sustitución, cifrado de colina, etc. Estos son muy algoritmos básicos y muy semanales, pero son buenos para comenzar en este campo.

Los códigos para los cifrados anteriores en Python se pueden encontrar y estudiar aquí.