Articulo de referencia

Tres peces

(key size is equal to block size)"},"block size":{"wt":"256, 512 or 1024 bits"},"rounds":{"wt":"72 (80 for 1024-bit block size)"},"speed":{"wt":"6.1 [[cycles per byte|cpb]] on [...

Threefish es un cifrado de bloques ajustable de clave simétrica diseñado como parte de la función hash Skein , una entrada en la competición de funciones hash del NIST . Threefish no utiliza cajas S ni otras búsquedas en tablas para evitar ataques de temporización de caché ; [ 1 ] su no linealidad proviene de sumas alternadas con OR exclusivos . En ese sentido, es similar a Salsa20 , TEA y los candidatos SHA-3 CubeHash y BLAKE .

Threefish y la función hash Skein fueron diseñados por Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas y Jesse Walker. "Threefish no está patentado, y el código fuente no tiene derechos de autor ni licencia; es gratuito para todos los usos." [ 3 ]

Descripción del cifrado

Threefish trabaja con palabras de 64 bits ( enteros little-endian sin signo ). es el número de palabras de texto plano y también de palabras clave. El ajuste consta de dos palabras. Todas las sumas y restas se definen módulo .w{4,8,16}{\displaystyle w\en \{4,8,16\}}264{\displaystyle 2^{64}}

Horario clave

Threefish cifra por rondas y utiliza diferentes claves de ronda. Después de cada cuatro rondas, y antes de la primera, se añaden palabras clave de ronda a las palabras de datos. Para calcular las claves de ronda, se añade una palabra clave adicional a las palabras clave originales . Además, se añade una palabra de ajuste adicional a las palabras de ajuste .r{\displaystyle r}r4+1{\displaystyle {\frac {r}{4}}+1}w{\displaystyle w}w{\displaystyle w}kw{\displaystyle k_{w}}k0,k1,,kw1{\displaystyle k_{0},k_{1},\dots,k_{w-1}}t2{\displaystyle t_{2}}t0,t1{\displaystyle t_{0},t_{1}}

kw=dok0k1kw1;do=0x1BD11BDAA9FC1A22{\displaystyle k_{w}=C\oplus k_{0}\oplus k_{1}\oplus \dots \oplus k_{w-1};\quad C={\text{0x1BD11BDAA9FC1A22}}}
t2=t0t1{\displaystyle t_{2}=t_{0}\oplus t_{1}}

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.do{\displaystyle C}kw{\displaystyle k_{w}}

Las palabras clave redondas ahora se definen de esta manera:ks,i{\displaystyle k_{s,i}}

ks,i={k(s+i)mod(w+1)i=0,,w4k(s+i)mod(w+1)+tsmod3i=w3k(s+i)mod(w+1)+t(s+1)mod3i=w2k(s+i)mod(w+1)+si=w1{\displaystyle k_{s,i}={\begin{cases}k_{(s+i){\bmod {(}}w+1)}&i=0,\dots ,w-4\\k_{(s+i){\bmod {(}}w+1)}+t_{s{\bmod {3}}}&i=w-3\\k_{(s+i){\bmod {(}}w+1)}+t_{(s+1){\bmod {3}}}&i=w-2\\k_{(s+i){\bmod {(}}w+1)}+s&i=w-1\end{casos}}}

Aquí , donde es el número de la ronda en la que se utiliza la palabra clave de la ronda.s=0,1,,r/4{\displaystyle s=0,1,\dots ,r/4}4s{\displaystyle 4s}ks,i{\displaystyle k_{s,i}}

Función mixta

Función de mezcla de tres peces

La función mix toma una tupla de palabras y devuelve otra tupla de palabras . La función se define de la siguiente manera:(incógnita0,incógnita1){\displaystyle (x_{0},x_{1})}(y0,y1){\displaystyle (y_{0},y_{1})}

y0=(incógnita0+incógnita1)mod264{\displaystyle y_{0}=(x_{0}+x_{1}){\bmod {2}}^{64}}

y1=(incógnita1R(dmod8),j)y0{\displaystyle y_{1}=(x_{1}\lll R_{(d{\bmod {8}}),j})\oplus y_{0}}

Rd,j{\displaystyle R_{d,j}}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. En este paso no se realiza una permutación a nivel de bits, pero esto no es necesario, ya que las funciones MIX proporcionan permutaciones a nivel de bits mediante rotaciones bit a bit. Las constantes de paso de permutación y rotación en las funciones MIX se eligen de tal manera que el efecto general sea la difusión completa de todos los bits en un bloque de datos.

Dado que esta permutación es fija e independiente de la clave, el tiempo necesario para calcularla no proporciona información sobre la clave ni el texto plano. Esto es importante porque, en la mayoría de los microprocesadores modernos, las optimizaciones de rendimiento pueden hacer que el tiempo de cálculo de una operación de matriz dependa de la ubicación de los datos en la memoria. En los cifrados donde la búsqueda en la matriz depende de la clave o del texto plano (como ocurre en el paso de sustitución de AES), esto puede hacer que el cifrado sea vulnerable a ataques de temporización mediante el análisis del tiempo necesario para el cifrado. Por lo tanto, la permutación se diseña deliberadamente para garantizar que se ejecute de la misma manera, independientemente de la clave utilizada o de los datos cifrados.

Una ronda completa de Threefish

  • si se agrega la clave redonda a la palabradmod4=0{\displaystyle d\;{\bmod {\;}}4=0}kd/4,i{\displaystyle k_{d/4,i}}i{\displaystyle i}
  • La función de mezcla se aplica a pares de palabras; los anchos de rotación dependen del número de ronda y del par de palabras.Rdmod8,j{\displaystyle R_{d{\bmod {8}},j}}d{\displaystyle d}j{0,,w/21}{\displaystyle j\in \{0,\cdots ,w/2-1\}}
  • Las palabras se permutan utilizando una permutación independiente del número de ronda.

Threefish256 y Threefish512 aplican esta ronda veces ( ). Threefish1024 la aplica 80 veces ( ).r=72{\displaystyle r=72}d=0,1,,71{\displaystyle d=0,1,\dots ,71}d=0,1,,79{\displaystyle d=0,1,\dots ,79}

Operaciones finales

Una vez aplicadas todas las rondas, las palabras clave de la última ronda se añaden a las palabras y estas se convierten de nuevo en una cadena de bytes.kr/4,i{\displaystyle k_{r/4,i}}

Seguridad

En octubre de 2010, se publicó un ataque que combina criptoanálisis rotacional con el ataque de rebote . El ataque instala un distinguidor 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 Skein . [ 2 ] Este es un seguimiento del ataque anterior publicado en febrero, que rompe 39 y 42 rondas respectivamente. [ 4 ] En respuesta a este ataque, el equipo de Skein ajustó las constantes de rotación utilizadas en Threefish y, por lo tanto, las constantes de programación de claves para la ronda 3 de la competición de funciones hash del NIST. [ 1 ]

En 2009, se publicó un ataque de bumerán de clave relacionado contra una versión reducida de Threefish. Para la versión de 32 rondas, la complejidad temporal es y la complejidad de memoria es ; para la versión de 33 rondas, la complejidad temporal 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 temporal es y la complejidad de memoria es ; para la versión de 33 rondas, la complejidad temporal es con un uso de memoria insignificante. [ 5 ]2226{\displaystyle 2^{226}}212{\displaystyle 2^{12}}2352.17{\displaystyle 2^{352.17}}2222{\displaystyle 2^{222}}212{\displaystyle 2^{12}}2355.5{\displaystyle 2^{355.5}}

Véase también

Referencias

  1. ^ Ferguson , Niels ; Suerte, Stefan; Schneier, Bruce; Merlán, Doug; Bellaré, Mihir; Kohno, Tadayoshi; Callas, Jon; Walker, Jesse (1 de octubre de 2010), The Skein Hash Function Family (PDF) , archivado desde el original (PDF) el 24 de agosto de 2014El artículo en el que se presentó a Threefish.
  2. 1 2 Khovratovich, Dmitry; Nikolic, Ivica; Rechberger, Christian (2014). "Ataques de rebote rotacional en skein reducido" . Journal of Cryptology . 27 (3): 452– 479. doi : 10.1007/S00145-013-9150-0 .
  3. Schneier, Bruce (17 de enero de 2023). "Threefish - Schneier on Security" . Schneier on Security . Consultado el 12 de diciembre de 2024 .
  4. Khovratovich, Dmitry; Nikolic, Ivica (2010). "Criptoanálisis rotacional de ARX" . En Hong, Seokhie; Iwata, Tetsu (eds.). Cifrado rápido de software, 17.º Taller Internacional, FSE 2010, Seúl, Corea, 7-10 de febrero de 2010, Artículos seleccionados revisados . Lecture Notes in Computer Science. Vol. 6147. Springer. pp. 333-346 . doi : 10.1007/978-3-642-13858-4_19 .  
  5. Chen, Jiazhe; Jia, Keting (2010). "Ataques boomerang de clave relacionada mejorados en Threefish-512 de ronda reducida" . En Kwak, Jin; Deng, Robert H.; Won, Yoojae; Wang, Guilin (eds.). Seguridad de la información, práctica y experiencia, 6.ª Conferencia Internacional, ISPEC 2010, Seúl, Corea, 12-13 de mayo de 2010. Actas . Lecture Notes in Computer Science. Vol. 6047. Springer. pp. 1-18 . doi : 10.1007/978-3-642-12827-1_1 .  
Obtenido de " https://en.wikipedia.org/w/index.php?title=Threefish&oldid=1263534488 "