Trivium es un cifrado de flujo síncrono diseñado para proporcionar una compensación flexible entre la velocidad y el número de puertas en el hardware, y una implementación de software razonablemente eficiente.
Trivium fue presentado al Perfil II (hardware) de la competencia eSTREAM por sus autores, Christophe De Cannière y Bart Preneel , y ha sido seleccionado como parte de la cartera de cifrados de hardware de área baja (Perfil 2) por el proyecto eSTREAM. No está patentado y se ha especificado como estándar internacional según ISO / IEC 29192-3. [1]
Genera hasta 2 64 bits de salida a partir de una clave de 80 bits y un IV de 80 bits . Es el participante más simple de eSTREAM; Si bien muestra una notable resistencia al criptoanálisis por su simplicidad y rendimiento, los ataques recientes dejan el margen de seguridad con un aspecto bastante reducido.
Descripción
El estado interno de 288 bits de Trivium consta de tres registros de desplazamiento de diferentes longitudes. En cada ronda, se cambia un bit a cada uno de los tres registros de desplazamiento utilizando una combinación no lineal de tomas de ese y otro registro; se produce un bit de salida. Para inicializar el cifrado, la clave y el IV se escriben en dos de los registros de desplazamiento, con los bits restantes comenzando en un patrón fijo; el estado de cifrado se actualiza 4 × 288 = 1152 veces, de modo que cada bit del estado interno depende de cada bit de la clave y del IV de una manera compleja no lineal.
No aparecen taps en los primeros 65 bits de cada registro de desplazamiento, por lo que cada bit de estado nuevo no se utiliza hasta al menos 65 rondas después de su generación. Esta es la clave para el rendimiento del software de Trivium y la flexibilidad en el hardware.
Especificación
Trivium se puede especificar de manera muy concisa usando tres ecuaciones recursivas. [2] Cada variable es un elemento de GF (2); se pueden representar como bits , con "+" siendo XOR y "•" siendo AND .
- a yo = c yo −66 + c yo −111 + c yo −110 • c yo −109 + a yo −69
- segundo yo = una yo −66 + una yo −93 + una yo −92 • una yo −91 + b yo −78
- c i = b i -69 + b i -84 + b i -83 • b i -82 + c i -87
Los bits de salida r 0 ... r 2 64 −1 son generados por
- r yo = do yo −66 + c yo −111 + a yo −66 + a yo −93 + b yo −69 + b yo −84
Dada una clave de 80 bits k 0 ... k 79 y un l -bit IV v 0 ... v l −1 (donde 0 ≤ l ≤ 80), Trivium se inicializa de la siguiente manera:
- ( a −1245 ... a −1153 ) = (0, 0 ... 0, k 0 ... k 79 )
- ( b −1236 ... b −1153 ) = (0, 0 ... 0, v 0 ... v l −1 )
- ( C -1263 ... c -1153 ) = (1, 1, 1, 0, 0 ... 0)
Los grandes índices negativos en los valores iniciales reflejan los 1152 pasos que deben tener lugar antes de que se produzca la salida.
Para mapear un flujo de bits r a un flujo de bytes R , usamos el mapeo little-endian R i = Σ j = 0 ... 7 2 j r 8 i + j .
Actuación
Una implementación de hardware sencilla de Trivium usaría puertas lógicas 3488 y produciría un bit por ciclo de reloj. Sin embargo, debido a que cada bit de estado no se usa durante al menos 64 rondas, se pueden generar 64 bits de estado en paralelo a un costo de hardware ligeramente mayor de 5504 puertas. También son posibles diferentes compensaciones entre velocidad y área.
La misma propiedad permite una implementación de bits de corte eficiente en software; Las pruebas de rendimiento realizadas por eSTREAM dan velocidades de cifrado masivo de alrededor de 4 ciclos / byte en algunas plataformas x86 , lo que se compara bien con los 19 ciclos / byte de la implementación de referencia AES en la misma plataforma.
Seguridad
[Trivium] fue diseñado como un ejercicio para explorar hasta qué punto se puede simplificar un cifrado de flujo sin sacrificar su seguridad, velocidad o flexibilidad. Si bien los diseños simples tienen más probabilidades de ser vulnerables a ataques simples y posiblemente devastadores (por lo que desaconsejamos enfáticamente el uso de Trivium en esta etapa), ciertamente inspiran más confianza que los esquemas complejos, si sobreviven a un largo período de audiencia pública. escrutinio a pesar de su sencillez. [3]
A abril de 2015[actualizar], no se conocen ataques criptoanalíticos mejores que los ataques de fuerza bruta , pero varios ataques se acercan. El ataque al cubo requiere 2 68 pasos para romper una variante de Trivium donde el número de rondas de inicialización se reduce a 799. [4] Anteriormente, otros autores especulan que estas técnicas podrían conducir a una interrupción de 1100 rondas de inicialización, o "tal vez incluso el original cifrar". [5] Esto se basa en un ataque de Michael Vielhaber que rompe 576 rondas de inicialización en solo 2 12,3 pasos. [6] [7]
Otro ataque recupera el estado interno (y por lo tanto la clave) del cifrado completo en alrededor de 2 89,5 pasos (donde cada paso es aproximadamente el costo de una sola prueba en una búsqueda exhaustiva). [8] Las variantes reducidas de Trivium que utilizan los mismos principios de diseño se han roto utilizando una técnica de resolución de ecuaciones. [9] Estos ataques mejoran el conocido ataque de compensación espacio-tiempo en cifrados de flujo, que con el estado interno de 288 bits de Trivium tomaría 2144 pasos, y muestran que una variante de Trivium que no hizo ningún cambio excepto para aumentar la clave una longitud superior a los 80 bits exigidos por eSTREAM Profile 2 no sería segura. Utilizando una estrategia de resolución optimizada, es posible reducir aún más la complejidad de la recuperación del estado a 2132 pasos. [10]
Se da una justificación detallada del diseño de Trivium. [11]
Referencias
- ^ ISO / IEC 29192-3: 2012
- ↑ eSTREAM Phorum, 20 de febrero de 2006
- ↑ Christophe De Cannière, Bart Preneel ( 29 de abril de 2005 ). "Especificaciones de Trivium" (PDF) . eSTREAM presentó los trabajos . Consultado el 9 de octubre de 2006 . Cite journal requiere
|journal=
( ayuda )CS1 maint: parámetro desalentado ( enlace ) - ^ Fouque, Pierre-Alain; Vannet, Thomas (5 de abril de 2015). "Mejora de la recuperación de claves para 784 y 799 rondas de Trivium usando Optimized Cube Attacks" (PDF) . Archivo ePrint de criptología . ePrint 20150406: 231124 . Consultado el 17 de abril de 2015 . Cite journal requiere
|journal=
( ayuda )CS1 maint: parámetro desalentado ( enlace ) - ^ Dinur, Itai; Shamir, Adi (13 de septiembre de 2008). "Ataques de cubo en polinomios de caja negra modificables" (PDF) . Archivo ePrint de criptología . ePrint 20080914: 160327 . Consultado el 4 de diciembre de 2008 . Cite journal requiere
|journal=
( ayuda )CS1 maint: parámetro desalentado ( enlace ) - ^ Michael Vielhaber (28 de octubre de 2007). "Rompiendo ONE.FIVIUM por AIDA un Ataque Diferencial Algebraico IV" .
- ^ Michael Vielhaber (23 de febrero de 2009). "El" ataque del cubo de Shamir ": un remake de AIDA, el ataque diferencial algebraico IV" (PDF) .[ enlace muerto permanente ]
- ^ Alexander Maximov, Alex Biryukov (23 de enero de 2007). "Dos ataques triviales en Trivium" ( PDF ) . Criptología ePrint. Cite journal requiere
|journal=
( ayuda ) (Tabla 6, página 11) - ^ Håvard Raddum (27 de marzo de 2006). "Resultados criptoanalíticos en Trivium" ( PostScript ) . eSTREAM presentó los trabajos . Consultado el 9 de octubre de 2006 . Cite journal requiere
|journal=
( ayuda )CS1 maint: parámetro desalentado ( enlace ) - ^ Pavol Zajac (1 de agosto de 2012). "Resolver ecuaciones booleanas basadas en Trivium utilizando el método de silogismos" . IOS Press. Cite journal requiere
|journal=
( ayuda ) - ^ Christophe De Cannière, Bart Preneel (2 de enero de 2006 ). "Trivium: una construcción de cifrado de flujo inspirada en los principios de diseño de cifrado de bloques" (PDF) . eSTREAM presentó los trabajos . Consultado el 9 de octubre de 2006 . Cite journal requiere
|journal=
( ayuda )CS1 maint: parámetro desalentado ( enlace )
enlaces externos
- Página de eSTREAM en Trivium
- Implementación de eSTREAM