SHA-3 (Secure Hash Algorithm 3) es el último miembro de la familia de estándares Secure Hash Algorithm, publicado por NIST el 5 de agosto de 2015.[1]​ El código fuente de la implementación de referencia se dedicó al dominio público mediante la exención de CC0.[2]​ Aunque es parte de la misma serie de estándares, SHA-3 es internamente bastante diferente de la estructura similar a MD5 de SHA-1 y SHA-2 .[3]

SHA-3 es un subconjunto de la familia primitiva criptográfica más amplio Keccak ( / k ɛ tʃ æ k , - ɑː k / ),[4]​ diseñado por Guido Bertoni, Joan Daemen , Michaël Peeters, y Gilles Van Assche , construyendo sobre RadioGatún . Los autores del Keccak han propuesto usos adicionales para la función, (todavía) no estandarizada por el NIST, incluyendo un cifrado de flujo , un cifrado autenticado sistema, un "árbol" hash esquema de hash más rápido en ciertas arquitecturas, yAEAD cifra Keyak y Ketje.[5]

Keccak se basa en un enfoque novedoso llamado construcción de esponjas. La construcción de esponja se basa en una amplia función aleatoria o permutación aleatoria , y permite ingresar ("absorber" en la terminología de esponja) cualquier cantidad de datos, y generar (exprimir) cualquier cantidad de datos, mientras actúa como una función pseudoaleatoria con respecto a todas las entradas anteriores. Esto conduce a una gran flexibilidad. El propósito de SHA-3 es que puede ser sustituido directamente por SHA-2 en aplicaciones actuales si es necesario, y para mejorar significativamente la solidez del conjunto de herramientas de algoritmo hash general de NIST.

Historia editar

El algoritmo Keccak es el trabajo de Guido Bertoni, Joan Daemen, Michael Peeters y Gilles Van Assche. Está basado en los diseños de hash PANAMA y RadioGatún.[6]​ En el año 2006 la NIST organizó una nueva edición de la competición para la creación de una nueva función para los estándares de Secure Hash Algorithm (SHA), el SHA-3. Al no existir un ataque significativo demostrado en SHA-2, el nuevo estándar SHA-3 no lo reemplazará. La NIST ha mencionado que debido a exitosos ataques a los estándares MD5, SHA-0 y SHA-1, es necesario una alternativa llamada SHA-3.[7]

Las admisiones de proyectos comenzaron en el año 2008. Keccak fue aceptado como uno de los 51 candidatos. En julio de 2009 14 algoritmos pasaron a la segunda ronda y Keccak avanzó a la ronda final en diciembre de 2010.[8]​ Durante el periodo de la competición, se les permitió a los participantes corregir problemas descubiertos en sus algoritmos. Keccak hizo algunos cambios como el número de rondas, se amplió de   a  .[9]​ En octubre de 2012 fue seleccionado como el ganador de la competición.[10]​ En el año 2014 la NIST publicó la documentación técnica del algoritmo[11]​ y fue aprobado en agosto de 2015,[12]​ para así convertirse en el nuevo estándar SHA-3.[13]

Diseño editar

 
Construcción de esponja para funciones hash.

SHA-3 usa una construcción de esponja, donde los datos son absorbidos (metafóricamente) y éstos son procesados para mostrar una salida de longitud deseada. En la fase de absorción, los bloques de datos pasan por una operación XOR y después son transformados usando una función de permutación, denominada f. SHA-3 además permite que   contenga bits adicionales de información, esto protege al algoritmo contra ataques de extensión, a los que son susceptibles los estándares SHA-1, SHA-2 y MD5. Además la flexibilidad en sus parámetros lo hace útil para probar ataques criptoanalíticos y usarlo en aplicaciones ligeras.[14]

Permutación de bloque editar

La transformación de bloque   es una permutación que usa las operaciones XOR, AND y NOT, está diseñada para su fácil implementación en software y hardware. La función de permutación de bloques consiste en   rondas de cinco pasos, nombrados como: paso  , paso  , paso  , paso   y paso ι.

Velocidad editar

La velocidad de SHA-3 para crear un hash de mensajes largos se determina con   y aplicando un XOR a la función  . Los autores del algoritmo obtuvieron algunos resultados al aplicar una implementación en software, por ejemplo se registraron 57.4 ciclos por byte en un Intel Pentim 4. El algoritmo ha sido criticado por su lentitud en software, en comparación, SHA2-512 es el doble de rápido que SHA3-512.[15]​ Destaca que SHA-3 es más rápido que cualquiera de los estándares anteriores si es implementado en hardware.[16]

Seguridad contra ataques cuánticos editar

De acuerdo al algoritmo de Grover las computadoras cuánticas pueden realizar ataques de preimagen en  , cuando en un ataque de fuerza bruta común se necesita  . Para realizar un ataque de preimagen se necesita un segundo ataque que termina en una colisión.[17]​ Una computadora cuántica puede realizar un ataque de cumpleaños y romper la resistencia a la colisión del algoritmo en  .[18]

Controversias editar

En febrero de 2013 en la Conferencia RSA, la NIST anunció que cambiaría el valor de la capacidad y otros parámetros de seguridad del algoritmo SHA-3.[19]​ Durante la competición, se pidió a los participantes que SHA-3 fuera al menos igual de seguro que SHA-2. El algoritmo Keccak permite un ajuste en los niveles de seguridad basados en la capacidad, llamada   y provee   de resistencia tanto para ataques de colisión como de preimagen.[17]

En septiembre de 2013, el experto en criptografía, Daniel J. Bernstein, sugirió al NIST aumentar la seguridad del algoritmo, que inicialmente fue propuesto con mucha más capacidad de resistencia.[20]​ Estos cambios harían que SHA3-224 y SHA3-256 tuvieran la misma resistencia contra ataques que SHA-2.[21]​ En respuesta a la controversia, el NIST propuso regresar a la versión original de  , los cambios fueron confirmados en el borrador del algoritmo propuesto en abril de 2014.[22]​ Las implementaciones con capacidad reducida fueron publicadas como SHAKE128 y SHAKE256, donde el número indica el nivel de seguridad.[23]

Ejemplos editar

Algunos ejemplos con las diferentes implementaciones:

SHA3-224("")
6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256("")
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-384("")
0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512("")
a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
SHAKE128("", 256)
7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26
SHAKE256("", 512)
46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be

El cambio de un solo bit causa un efecto avalancha:

SHAKE128("The quick brown fox jumps over the lazy dog", 256)
f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e
SHAKE128("The quick brown fox jumps over the lazy dof", 256)
853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c

Referencias editar

  1. «NIST Releases SHA-3 Cryptographic Hash Standard» (en inglés). NIST. Consultado el 10 de agosto de 2018. 
  2. «NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition» (en inglés). NIST. Consultado el 10 de agosto de 2018. 
  3. https://www.nist.gov/itl/csd/201508_sha3.cfm
  4. «Keccak: The New SHA-3 Encryption Standard» (en inglés). Dr. Dobbs. Consultado el 10 de agosto de 2018. 
  5. «Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition» (en inglés). NIST. Consultado el 10 de agosto de 2018. 
  6. «The road from Panama to Keccak via RadioGatun» (en inglés). Noekon.org. Consultado el 10 de agosto de 2018. 
  7. «The first collision for full SHA-1» (en inglés). Shattered.io. Archivado desde el original el 15 de mayo de 2018. Consultado el 10 de agosto de 2018. 
  8. «NIST Computer Security Division – The SHA-3 Cryptographic Hash Algorithm Competition» (en inglés). National Institute of Standards and Technology. Consultado el 10 de agosto de 2018. 
  9. «Simplifying Keccak's padding rule for round 3» (en inglés). Noekeon.org. Consultado el 10 de agosto de 2018. 
  10. «NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition» (en inglés). NIST. Consultado el 10 de agosto de 2018. 
  11. «SHA-3 standardization» (en inglés). National Institute of Standards and Technology. Consultado el 10 de agosto de 2018. 
  12. «Federal Information Processing Standards: Permutation-Based Hash and Extendable-Output Functions, etc» (en inglés). Federal Register of USA. Consultado el 10 de agosto de 2018. 
  13. «Announcing Approval of Federal Information Processing Standard (FIPS) 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, and Revision of the Applicability Clause of FIPS 180-4, Secure Hash Standard» (en inglés). Federal Register of USA. Consultado el 10 de agosto de 2018. 
  14. «CAESAR submission: Keyak v1» (en inglés). Cr.yp.to. Consultado el 10 de agosto de 2018. 
  15. «Is SHA3 slow?» (en inglés). Kecckak Team. Consultado el 8 de septiembre de 2018. 
  16. «Fair and Comprehensive Performance Evaluation of 14 Second Round SHA-3 ASIC Implementations» (en inglés). National Institute of Standards and Technology. Consultado el 8 de septiembre de 2018. 
  17. a b «Quantum SHA3: Abstract» (en inglés). Cr.yp.to. Consultado el 20 de agosto de 2018. 
  18. «Chapter: Abstract» (en inglés). Springer.com. Consultado el 20 de agosto de 2018. 
  19. «SHA3, Where We've Been, Where We're Going» (en inglés). National Institute of Standards and Technology. Consultado el 20 de agosto de 2018. 
  20. «On 128-bit security» (en inglés). Noekeon.org. Consultado el 10 de agosto de 2018. 
  21. «A concrete proposal» (en inglés). Noekeon.org. Consultado el 10 de agosto de 2018. 
  22. «Moving Forward with SHA-3» (en inglés). National Institute of Standards and Technology. Consultado el 10 de agosto de 2018. 
  23. «SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions» (en inglés). National Institute of Standards and Technology. Consultado el 10 de agosto de 2018. 

Enlaces externos editar