Serpent es un cifrado de bloque de claves simétrico que fue finalista en el concurso Advanced Encryption Standard (AES) , donde ocupó el segundo lugar después de Rijndael . Serpent fue diseñado por Ross Anderson , Eli Biham y Lars Knudsen .
General | |
---|---|
Diseñadores | Ross Anderson , Eli Biham y Lars Knudsen |
Publicado por primera vez | 1998-08-21 |
Derivado de | Cuadrado |
Certificación | Finalista AES |
Detalle de cifrado | |
Tamaños de clave | 128, 192 o 256 bits |
Tamaños de bloque | 128 bits |
Estructura | Red de sustitución-permutación |
Rondas | 32 |
Mejor criptoanálisis público | |
Todos los ataques conocidos públicamente son computacionalmente inviables y ninguno de ellos afecta a la Serpiente completa de 32 asaltos. Un ataque de 2011 rompe 11 Ronda Serpent (todos los tamaños de clave) con 2 116 textos planos conocidos, 2 107,5 de tiempo y 2 104 de memoria (como se describe en [1] ). El mismo documento también describe dos ataques que rompen 12 rondas de Serpent-256. El primero requiere 2 118 textos sin formato conocidos, 2 228,8 de tiempo y 2 228 de memoria. El otro ataque requiere 2 116 textos planos conocidos y 2 121 de memoria, pero también requiere 2 237,5 tiempo. |
Al igual que otros envíos de AES , Serpent tiene un tamaño de bloque de 128 bits y admite un tamaño de clave de 128, 192 o 256 bits. [2] El cifrado es una red de sustitución-permutación de 32 rondas que opera en un bloque de cuatro palabras de 32 bits . Cada ronda aplica una de las ocho cajas S de 4 bits a 4 bits 32 veces en paralelo. Serpent fue diseñado para que todas las operaciones se puedan ejecutar en paralelo , utilizando segmentos de 32 bits . Esto maximiza el paralelismo, pero también permite el uso del extenso trabajo de criptoanálisis realizado en DES .
Serpent adoptó un enfoque conservador de la seguridad, optando por un gran margen de seguridad: los diseñadores consideraron que 16 rondas eran suficientes contra tipos de ataque conocidos, pero especificaron 32 rondas como seguro contra futuros descubrimientos en criptoanálisis. El informe oficial del NIST sobre la competencia AES clasificó a Serpent con un alto margen de seguridad junto con MARS y Twofish , en contraste con el margen de seguridad adecuado de RC6 y Rijndael (actualmente AES). [3] En la votación final, Serpent tuvo la menor cantidad de votos negativos entre los finalistas, pero obtuvo el segundo lugar en general porque Rijndael tuvo sustancialmente más votos positivos, el factor decisivo fue que Rijndael permitió una implementación de software mucho más eficiente. [ cita requerida ]
El algoritmo de cifrado Serpent es de dominio público y no ha sido patentado . [4] El código de referencia es software de dominio público y el código optimizado está bajo GPL . [5] No existen restricciones ni gravámenes de ningún tipo con respecto a su uso. Como resultado, cualquiera es libre de incorporar Serpent en su software (o implementaciones de hardware) sin pagar tarifas de licencia.
Rijndael contra la serpiente
Rijndael es una red de transformación lineal de sustitución con diez, doce o catorce rondas, según el tamaño de la clave, y con tamaños de clave de 128 bits, 192 bits o 256 bits, especificados de forma independiente. Serpent es una red de sustitución-permutación que tiene treinta y dos rondas, más una permutación inicial y una final para simplificar una implementación optimizada. La función redonda en Rijndael consta de tres partes: una capa no lineal, una capa de mezcla lineal y una capa XOR de mezcla clave. La función de ronda en Serpent consiste en XOR de mezcla de teclas, treinta y dos aplicaciones paralelas de la misma caja S de 4 × 4 y una transformación lineal, excepto en la última ronda, en la que otra XOR de mezcla de teclas reemplaza la transformación lineal. La capa no lineal en Rijndael usa una caja S de 8 × 8, mientras que Serpent usa ocho cajas S de 4 × 4 diferentes. Las 32 rondas significan que Serpent tiene un margen de seguridad más alto que Rijndael; sin embargo, Rijndael con 10 rondas es más rápido y más fácil de implementar para bloques pequeños. [6] Por lo tanto, Rijndael fue seleccionado como el ganador en la competencia AES.
Serpiente-0 contra Serpiente-1
El Serpent original, Serpent-0, se presentó en el quinto taller sobre cifrado rápido de software , pero se presentó una versión algo modificada, Serpent-1, a la competencia AES. El documento de presentación de AES analiza los cambios, que incluyen diferencias en la programación de claves.
Seguridad
El ataque XSL , si es efectivo, debilitaría a Serpent (aunque no tanto como debilitaría a Rijndael , que se convirtió en AES ). Sin embargo, muchos criptoanalistas creen que una vez que se tienen en cuenta las consideraciones de implementación, el ataque XSL sería más caro que un ataque de fuerza bruta . [ cita requerida ]
En 2000, un artículo de Kohno et al. presenta un ataque de encuentro en el medio contra 6 de 32 rondas de Serpent y un ataque de boomerang amplificado contra 9 de 32 rondas en Serpent. [7]
Un ataque de 2001 de Eli Biham , Orr Dunkelman y Nathan Keller presenta un ataque de criptoanálisis lineal que rompe 10 de 32 rondas de Serpent-128 con 2118 textos planos conocidos y 289 de tiempo, y 11 rondas de Serpent-192/256 con 2118 conocidos. Plaintexts y 2 187 tiempo. [8]
Un artículo de 2009 ha notado que el orden no lineal de las cajas S de Serpent no era 3 como afirmaron los diseñadores. [9]
A 2.011 ataque por Hongjun Wu, Huaxiong Wang y Phuong Ha Nguyen, utilizando también el criptoanálisis lineal, rompe 11 rondas de Serpiente-128 con 2 116 textos planos conocidos, 2 107.5 de tiempo y 2 104 de memoria. [1]
El mismo documento también describe dos ataques que rompen 12 rondas de Serpent-256. El primero requiere 2 118 textos sin formato conocidos, 2 228,8 de tiempo y 2 228 de memoria. El otro ataque requiere 2 116 textos planos conocidos y 2 121 de memoria, pero también requiere 2 237,5 tiempo.
Ver también
- Tiger - función hash de los mismos autores
Notas al pie
- ↑ a b Huaxiong Wang, Hongjun Wu y Phuong Ha Nguyen (2011). "Mejora del algoritmo 2 en criptoanálisis lineal multidimensional" (PDF) . Seguridad y privacidad de la información . Apuntes de conferencias en Ciencias de la Computación. 6812 . ACISP 2011. págs. 61–74. doi : 10.1007 / 978-3-642-22497-3_5 . ISBN 978-3-642-22496-6.
- ^ Ross J. Anderson (23 de octubre de 2006). "Serpiente: un cifrado de bloque candidato para el estándar de cifrado avanzado" . Laboratorio de Computación de la Universidad de Cambridge . Consultado el 14 de enero de 2013 .
- ^ NIST (2000), Informe sobre el desarrollo del estándar de cifrado avanzado (AES) (PDF) , NIST
- ^ Serpent tiene la clave para la seguridad de Internet - Se anuncian los finalistas del concurso mundial de cifrado (1999)
- ^ SERPENT: un cifrado de bloque candidato para el estándar de cifrado avanzado "Serpent ahora es completamente de dominio público y no imponemos restricciones sobre su uso. Esto se anunció el 21 de agosto en la Primera Conferencia de Candidatos de AES. Las implementaciones optimizadas en el El paquete de envío está ahora bajo la Licencia Pública General (GPL), aunque algunos comentarios en el código todavía dicen lo contrario. Puede usar Serpent para cualquier aplicación. Si lo usa, le agradeceríamos que nos lo hiciera saber. " (1999)
- ^ Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall. Niels Fergusonk; Tadayoshi Kohno; Mike Stay (2000). "Comentarios finales del equipo Twofish sobre la selección de AES" (PDF) . Cite journal requiere
|journal=
( ayuda ) - ^ Tadayoshi Kohno; John Kelsey y Bruce Schneier (2000). "Criptoanálisis preliminar de la serpiente redonda reducida" . Cite journal requiere
|journal=
( ayuda ) - ^ Eli Biham, Orr Dunkelman y Nathan Keller (2001). "Criptoanálisis lineal de serpiente redonda reducida". FSE 2001. CiteSeerX 10.1.1.78.6148 . Cite journal requiere
|journal=
( ayuda ) - ^ Bhupendra Singh; Lexy Alexander; Sanjay Burman (2009). "Sobre las relaciones algebraicas de las cajas S de serpientes" (PDF) . Cite journal requiere
|journal=
( ayuda )
Otras lecturas
- Anderson, Ross; Biham, Eli; Knudsen, Lars (1998). "Criptografía - Cifrados de 256 bits: Implementación de referencia (envío AES)" .
- Biham, Eli. "Serpiente - Una nueva propuesta de cifrado de bloques para AES" .
- Halbfinger, David M (5 de mayo de 2008). "En el caso Pellicano, lecciones en habilidades de escuchas telefónicas" . The New York Times .
- Stajano, Frank (10 de febrero de 2006). "Implementación de referencia de serpiente" . Laboratorio de Computación de la Universidad de Cambridge.
enlaces externos
- Página web oficial
- Cifrados de 256 bits : implementación de referencia SERPENT y código derivado