Tres peces - Threefish

Tres peces
Madeja permutation.png
General
Diseñadores Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas , Jesse Walker
Publicado por primera vez 2008
Relacionado con Pez globo , dos peces
Detalle de cifrado
Tamaños de clave 256, 512 o 1024 bits
(el tamaño de la clave es igual al tamaño del bloque)
Tamaños de bloque 256, 512 o 1024 bits
Rondas 72 (80 para un tamaño de bloque de 1024 bits)
Velocidad 6.1 cpb en Core 2 .

Threefish es un cifrado de bloque modificable de clave simétrica diseñado como parte de la función hash Skein , una entrada en la competencia de la función hash del NIST . Threefish no utiliza S-boxes ni otras búsquedas de tablas para evitar ataques de tiempo de caché ; su no linealidad proviene de adiciones alternas con OR exclusivos . En ese sentido, es similar a Salsa20 , TEA y los candidatos SHA-3 CubeHash y BLAKE .

Threefish y la función de hash Skein fueron diseñados por Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas y Jesse Walker.

Descripción del cifrado

Threefish trabaja con palabras de 64 bits ( enteros Little endian sin signo ). es el número de palabras en texto plano y también de palabras clave. El ajuste consta de dos palabras. Todas las sumas y restas se definen en módulo .

Horario clave

Threefish utiliza diferentes claves redondas ( : Número de rondas). Para calcular estas claves, se agrega una palabra clave adicional a las palabras clave originales . También se añade una palabra de modificación adicional a las palabras de modificación .

El propósito de la constante aparentemente arbitraria es frustrar algunos ataques que se aprovechan de la relación entre y las otras palabras clave.

Las palabras clave redondas ahora se definen así:

Aquí , y es el número de ronda en la que se usa la tecla de ronda.

Función de mezcla

Función de mezcla de tres peces

La función de mezcla toma una tupla de palabras y devuelve otra tupla de palabras . La función se define así:

es un conjunto fijo de constantes de rotación elegidas para lograr una difusión rápida .

Permutar

El paso de permutación intercambia las posiciones de las palabras según un patrón constante. La permutación de nivel de bit no se logra en este paso, pero esto no es necesario ya que las funciones MIX proporcionan permutaciones de nivel de bit en forma de rotaciones bit a bit. El paso de permutación y las constantes de rotación en las funciones MIX se eligen de tal manera que el efecto general es la difusión completa de todos los bits en un bloque de datos.

Debido a que esta permutación es fija e independiente de la clave, el tiempo necesario para calcularla no proporciona información sobre la clave o el texto sin formato. Esto es importante porque en la mayoría de los microprocesadores modernos las optimizaciones del rendimiento pueden hacer que el tiempo necesario para calcular una operación de matriz dependa de dónde se almacenan los datos en la memoria. En cifrados en los que la búsqueda de matrices depende de la clave o del texto sin formato (como es el caso del paso de sustitución en AES), puede hacer que el cifrado sea vulnerable a los ataques de tiempo al examinar el tiempo necesario para el cifrado. Por lo tanto, la permutación está diseñada deliberadamente para garantizar que se ejecute de la misma manera, independientemente de la clave que se utilice o de los datos cifrados.

Una ronda completa de Threefish

  • si la clave redonda se agrega a la palabra
  • la función de mezcla se aplica a palabras consecutivas, los anchos de rotación dependen de y el número de palabra
  • las palabras se permutan usando una permutación independiente del número redondo

Threefish256 y Threefish512 aplican esta ronda 72 veces ( ). Threefish1024 lo aplica 80 veces ( ).

Operaciones finales

Una vez aplicadas todas las rondas, se agrega la última clave de ronda a las palabras y las palabras se vuelven a convertir en una cadena de bytes.

Seguridad

En octubre de 2010 se publicó un ataque que combina el criptoanálisis rotacional con el ataque de rebote . El ataque monta un diferenciador de clave conocida contra 53 de 72 rondas en Threefish-256 y 57 de 72 rondas en Threefish-512. También afecta a la función hash de la madeja . Este es un seguimiento del ataque anterior publicado en febrero, que rompe 39 y 42 rondas respectivamente. En respuesta a este ataque, el equipo de Skein modificó las constantes de rotación utilizadas en Threefish y, por lo tanto, las constantes de programación clave para la ronda 3 de la competencia de la función hash del NIST.

En 2009, se publicó un ataque de bumerán clave relacionado contra una versión reducida de Threefish. Para la versión de 32 rondas, la complejidad del tiempo es y la complejidad de la memoria es ; para la versión de 33 rondas, la complejidad del tiempo es con un uso de memoria insignificante. Los ataques también funcionan contra la versión modificada de Threefish: para la versión de 32 rondas, la complejidad del tiempo es y la complejidad de la memoria es ; para la versión de 33 rondas, la complejidad del tiempo es con un uso de memoria insignificante.

Ver también

Referencias

enlaces externos