Articulo de referencia

Madeja (función hash)

Función de mezcla de tres peces Skein es una función hash criptográfica y una de las cinco finalistas en la competencia de funciones hash del NIST . Se presentó como candidata p...

Función de mezcla de tres peces

Skein es una función hash criptográfica y una de las cinco finalistas en la competencia de funciones hash del NIST . Se presentó como candidata para convertirse en el estándar SHA-3 , el sucesor de SHA-1 y SHA-2 , pero finalmente perdió ante el candidato hash del NIST Keccak . [2]

El nombre Skein se refiere a cómo la función Skein entrelaza la entrada, de manera similar a una madeja de hilo. [1]

Historia

Skein fue creado por Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas y Jesse Walker.

Skein se basa en el cifrado de bloques modificable Threefish comprimido mediante el modo de encadenamiento de iteración de bloques únicos (UBI), una variante del modo hash Matyas–Meyer–Oseas , [3] al tiempo que aprovecha un sistema de argumentos opcional de baja sobrecarga para lograr flexibilidad.

El algoritmo de Skein y una implementación de referencia fueron puestos a disposición del público . [4]

Funcionalidad

Skein admite tamaños de estado interno de 256, 512 y 1024 bits y tamaños de salida arbitrarios. [5]

Los autores afirman que se obtienen 6,1 ciclos por byte para cualquier tamaño de salida en un Intel Core 2 Duo en modo de 64 bits. [6]

El núcleo de Threefish se basa en una función MIX que transforma dos palabras de 64 bits mediante una única adición, rotación por una constante y XOR. El modo de encadenamiento UBI combina un valor de encadenamiento de entrada con una cadena de entrada de longitud arbitraria y produce una salida de tamaño fijo.

La no linealidad de Threefish proviene completamente de la combinación de operaciones de suma y OR exclusivos ; no utiliza S-boxes . La función está optimizada para procesadores de 64 bits, y el artículo de Skein define características opcionales como hash aleatorio , hash de árbol paralelizable , un cifrado de flujo , personalización y una función de derivación de clave .

Criptoanálisis

En octubre de 2010 se publicó un ataque que combina el criptoanálisis rotacional con el ataque de rebote . El ataque encuentra colisiones rotacionales en 53 de las 72 rondas de Threefish-256 y en 57 de las 72 rondas de Threefish-512. También afecta a la función hash Skein. [7] Se trata de una continuación del ataque anterior publicado en febrero, que rompe 39 y 42 rondas respectivamente. [8]

El equipo de Skein modificó la constante de programación clave para la ronda 3 de la competencia de funciones hash del NIST, para hacer que este ataque sea menos efectivo, aunque creen que el hash seguiría siendo seguro sin estos ajustes. [1]

Ejemplos de hashes de Skein

Valores hash de una cadena vacía.

Madeja-256-256("")
c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba
Madeja-512-256("")
39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621
Madeja-512-512("")
bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a

Incluso un pequeño cambio en el mensaje dará como resultado (con una probabilidad abrumadora) un hash prácticamente distinto, debido al efecto avalancha . Por ejemplo, añadir un punto al final de la frase:

Madeja-512-256(" El veloz zorro marrón salta sobre el perro perezoso ")
b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a
Madeja-512-256(" El rápido zorro marrón salta sobre el perro perezoso ").
41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebb
Madeja-512-512(" El rápido zorro marrón salta sobre el perro perezoso ")
94c2ae036dba8783d0b3f7d6cc111ff810702f5c77707999be7e1c9486ff238a7044de734293147359b4ac7e1d09cd247c351d69826b78dcddd951f0ef912713
Madeja-512-512(" El rápido zorro marrón salta sobre el perro perezoso ").
658223cb3d69b5e76e3588ca63feffba0dc2ead38a95d0650564f2a39da8e83fbb42c9d6ad9e03fbfde8a25a880357d457dbd6f74cbcb5e728979577dbce5436

Referencias

  1. ^ abc Ferguson; et al. (1 de octubre de 2010). "La familia de funciones hash de Skein" (PDF) . Archivado desde el original (PDF) el 24 de agosto de 2014. Consultado el 15 de diciembre de 2010 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  2. ^ "NIST selecciona al ganador del concurso de algoritmos de hash seguro (SHA-3)". NIST . 2012-10-02 . Consultado el 2012-10-02 .
  3. ^ http://www.skein-hash.info/sites/default/files/skein1.3.pdf Archivado el 24 de agosto de 2014 en Wayback Machine, pág. 6
  4. ^ skein_NIST_CD_121508.zip Archivado el 10 de junio de 2016 en Wayback Machine en skein-hash.info, skein.c "Implementación de la función hash de Skein. Autor del código fuente: Doug Whiting, 2008. Este algoritmo y código fuente se publican en el dominio público".
  5. ^ "Ahora de Bruce Schneier, la función hash de Skein". Slashdot . 2008-10-31 . Consultado el 2008-10-31 .
  6. ^ "Documento que describe la función hash, versión 1.3 (1 de octubre de 2010)" (PDF) . Archivado desde el original (PDF) el 24 de agosto de 2014. Consultado el 15 de diciembre de 2010 .
  7. ^ Dmitry Khovratovich; Ivica Nikolic; Christian Rechberger (20 de octubre de 2010). "Ataques de rebote rotacional en madejas reducidas". Archivo de ePrints de criptología .
  8. ^ Dmitry Khovratovich & Ivica Nikolić (2010). «Criptoanálisis rotacional de ARX» (PDF) . Universidad de Luxemburgo . Archivado desde el original (PDF) el 26 de enero de 2013. Consultado el 25 de octubre de 2010 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  • Sitio web oficial de Skein (desactivado, archivo Wayback Machine)
  • Página web de Skein de Bruce Schneier

Implementaciones

  • SPARKSkein: una implementación de Skein en SPARK , con pruebas de seguridad de tipos
  • Botan contiene una implementación en C++ de Skein-512
  • nskein: una implementación .NET de Skein con soporte para todos los tamaños de bloque
  • Módulo Skein para Python
  • PHP-Skein-Hash Hash de Skein para PHP en GitHub
  • Digest::Skein, una implementación en C y Perl
  • Implementación de AC# de Skein y Threefish (basada en la versión 1.3)
  • Implementaciones de Java, Scala y Javascript de Skein 512-512 (basado en la versión 1.3)
  • Una implementación Java de Skein (basada en la versión 1.1)
  • Una implementación de Skein en Ada
  • skerl, función hash Skein para Erlang, a través de NIF
  • Madeja 512-512 implementada en Bash
  • Madeja implementada en Haskell
  • Código fuente VHDL desarrollado por el Grupo de Investigación de Ingeniería Criptográfica (CERG) de la Universidad George Mason
  • skeinr Madeja implementada en Ruby
  • fhreefish Una implementación eficiente de Skein-256 para microcontroladores Atmel AVR de 8 bits, que cumple con las estimaciones de rendimiento descritas en la especificación oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=Skein_(función_hash)&oldid=1233825790"