Serpent
# Serpent

Serpent es un algoritmo de cifrado simétrico de bloques que quedó finalista en el concurso Advanced Encryption Standard del NIST, tras Rijndael. Serpent fue diseñado por Ross Anderson, Eli Biham y Lars Knudsen.

Como otros participantes del AES Serpent usa un tamaño de bloque de 128 bits y soporta tamaños de clave de 128, 192 y 256 bits de longitud. El cifrado consiste en 32 rondas de substitución-permutación operando sobre cuatro bloques de 32 bits. Cada ronda usa 32 copias de la misma S-Box de 4-bit a 4-bit. Serpent se diseñó para que las operaciones se realizasen en paralelo, usando 32 desplazamientos de 1 bit.

Serpent adoptó una visión mucho más cauta que otros participantes al AES, optando por un mayor margen de seguridad. Los diseñadores afirmaron que 16 rondas serían suficientes para los métodos conocidos de ataque, pero especificaron 32 rondas para asegurarse de la robustez del algoritmo contra futuros descubrimientos en criptoanálisis.

