De Wikipedia, la enciclopedia libre
  (Redirigido desde SHA2 )
Saltar a navegación Saltar a búsqueda

SHA-2 ( Secure Hash Algorithm 2 ) es un conjunto de funciones de hash criptográficas diseñadas por la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y publicadas por primera vez en 2001. [3] [4] Se construyen utilizando la construcción Merkle-Damgård , de una función de compresión unidireccional construida en sí misma utilizando la estructura Davies-Meyer a partir de un cifrado de bloques especializado .

SHA-2 incluye cambios significativos con respecto a su predecesor, SHA-1 . La familia SHA-2 consta de seis funciones hash con resúmenes (valores hash) de 224, 256, 384 o 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256 . SHA-256 y SHA-512 son funciones hash novedosas calculadas con ocho palabras de 32 bits y 64 bits, respectivamente. Utilizan diferentes cantidades de cambio y constantes aditivas, pero sus estructuras son prácticamente idénticas, y solo difieren en el número de rondas. SHA-224 y SHA-384 son versiones truncadas de SHA-256 y SHA-512 respectivamente, calculadas con diferentes valores iniciales. SHA-512/224 y SHA-512/256 también son versiones truncadas de SHA-512, pero los valores iniciales se generan utilizando el método descrito enEstándares federales de procesamiento de información (FIPS) PUB 180-4.

SHA-2 fue publicado por primera vez por el Instituto Nacional de Estándares y Tecnología (NIST) como un estándar federal de EE. UU. (FIPS). La familia de algoritmos SHA-2 está patentada en la patente estadounidense 6829355. [5] Estados Unidos ha publicado la patente bajo una licencia libre de regalías . [6]

Actualmente, los mejores ataques públicos rompen la resistencia de preimagen en 52 de 64 rondas de SHA-256 o 57 de 80 rondas de SHA-512, y la resistencia a colisiones en 46 de 64 rondas de SHA-256. [1] [2]

Estándar hash [ editar ]

Una iteración en una función de compresión de la familia SHA-2. Los componentes azules realizan las siguientes operaciones: La rotación bit a bit usa diferentes constantes para SHA-512. Los números dados son para SHA-256. El rojo es módulo adicional 2 32 para SHA-256, o 2 64 para SHA-512.
    
    
    
    

Con la publicación de FIPS PUB 180-2, NIST agregó tres funciones hash adicionales en la familia SHA. Los algoritmos se conocen colectivamente como SHA-2, nombrados por sus longitudes de resumen (en bits): SHA-256, SHA-384 y SHA-512.

Los algoritmos se publicaron por primera vez en 2001 en el borrador FIPS PUB 180-2, momento en el que se aceptaron la revisión y los comentarios del público. En agosto de 2002, FIPS PUB 180-2 se convirtió en el nuevo estándar Secure Hash , en sustitución de FIPS PUB 180-1, que se lanzó en abril de 1995. El estándar actualizado incluía el algoritmo SHA-1 original, con una notación técnica actualizada coherente con la que describe el funcionamiento interno de la familia SHA-2. [4]

En febrero de 2004, se publicó un aviso de cambio para FIPS PUB 180-2, especificando una variante adicional, SHA-224, definida para coincidir con la longitud de clave de Triple DES de dos claves . [7] En octubre de 2008, el estándar se actualizó en FIPS PUB 180-3, incluido SHA-224 del aviso de cambio, pero por lo demás no se realizaron cambios fundamentales en el estándar. La motivación principal para actualizar el estándar fue la reubicación de la información de seguridad sobre los algoritmos hash y las recomendaciones para su uso en las publicaciones especiales 800-107 y 800-57. [8] [9] [10] Los datos de prueba detallados y resúmenes de mensajes de ejemplo también se eliminaron del estándar y se proporcionaron como documentos separados. [11]

En enero de 2011, NIST publicó SP800-131A, que especificaba un cambio desde el mínimo actual de seguridad de 80 bits (proporcionado por SHA-1) permitido para el uso del gobierno federal hasta finales de 2013, a seguridad de 112 bits (proporcionado por SHA-1). por SHA-2) siendo tanto el requisito mínimo (a partir de 2014) como el nivel de seguridad recomendado (a partir de la fecha de publicación en 2011). [12]

En marzo de 2012, se actualizó el estándar en FIPS PUB 180-4, agregando las funciones hash SHA-512/224 y SHA-512/256, y describiendo un método para generar valores iniciales para versiones truncadas de SHA-512. Además, se eliminó una restricción sobre el relleno de los datos de entrada antes del cálculo de hash, lo que permite que los datos de hash se calculen simultáneamente con la generación de contenido, como una transmisión de audio o video en tiempo real. El relleno del bloque de datos final aún debe ocurrir antes de la salida hash. [13]

En julio de 2012, NIST revisó SP800-57, que brinda orientación para la administración de claves criptográficas. La publicación prohibió la creación de firmas digitales con una seguridad hash inferior a 112 bits después de 2013. La revisión anterior de 2007 especificaba que el límite sería el final de 2010. [10] En agosto de 2012, NIST revisó SP800-107 de la misma manera. [9]

La competencia de la función hash del NIST seleccionó una nueva función hash, SHA-3 , en 2012. [14] El algoritmo SHA-3 no se deriva de SHA-2.

Aplicaciones [ editar ]

La función hash SHA-2 se implementa en algunas aplicaciones y protocolos de seguridad ampliamente utilizados, incluidos TLS y SSL , PGP , SSH , S / MIME e IPsec .

SHA-256 participa en el proceso de autenticación de paquetes de software Debian [15] y en el estándar de firma de mensajes DKIM ; SHA-512 es parte de un sistema para autenticar videos de archivo del Tribunal Penal Internacional del genocidio de Ruanda . [16] Se propone el uso de SHA-256 y SHA-512 en DNSSEC . [17] Los proveedores de Unix y Linux están pasando a utilizar SHA-2 de 256 y 512 bits para el hash seguro de contraseñas. [18]

Varias criptomonedas como Bitcoin usan SHA-256 para verificar transacciones y calcular prueba de trabajo [19] o prueba de participación . [20] El auge de los chips aceleradores ASIC SHA-2 ha llevado al uso de esquemas de prueba de trabajo basados ​​en scrypt .

SHA-1 y SHA-2 son los algoritmos hash seguros requeridos por ley para su uso en ciertas aplicaciones del gobierno de los EE. UU. , Incluido el uso dentro de otros algoritmos y protocolos criptográficos, para la protección de información confidencial no clasificada. FIPS PUB 180-1 también alentó la adopción y el uso de SHA-1 por organizaciones privadas y comerciales. SHA-1 se está retirando para la mayoría de los usos gubernamentales; el Instituto Nacional de Estándares y Tecnología de EE. UU. dice: "Las agencias federales deben dejar de usar SHA-1 para ... aplicaciones que requieren resistencia a colisiones tan pronto como sea posible, y deben usar la familia SHA-2 de funciones hash para estas aplicaciones después de 2010" (énfasis en el original). [21]Se esperaba que la directiva del NIST de que las agencias gubernamentales de los EE. UU. Debían detener el uso de SHA-1 después de 2010 [22] acelerara la migración fuera de SHA-1.

Las funciones SHA-2 no se adoptaron rápidamente inicialmente, a pesar de tener una mayor seguridad que SHA-1. Las razones pueden incluir la falta de soporte para SHA-2 en sistemas que ejecutan Windows XP SP2 o anterior [23] y una falta de urgencia percibida ya que aún no se han encontrado colisiones SHA-1. El equipo de Google Chrome anunció un plan para hacer que su navegador web dejara gradualmente de respetar los certificados TLS dependientes de SHA-1 durante un período comprendido entre finales de 2014 y principios de 2015. [24] [25] [26] De manera similar, Microsoft anunció [27] que Internet Explorer y Edge dejarían de respetar los certificados TLS públicos firmados por SHA-1 a partir de febrero de 2017. Mozilladesactivó SHA-1 a principios de enero de 2016, pero tuvo que volver a habilitarlo temporalmente a través de una actualización de Firefox , después de problemas con las interfaces de usuario basadas en la web de algunos modelos de enrutadores y dispositivos de seguridad . [28]

Criptoanálisis y validación [ editar ]

Para una función hash para la que L es el número de bits en el resumen de mensajes , siempre se puede encontrar un mensaje que corresponda a un resumen de mensajes dado mediante una búsqueda de fuerza bruta en evaluaciones de 2 L. Esto se denomina ataque de preimagen y puede ser práctico o no según L y el entorno informático particular. El segundo criterio, encontrar dos mensajes diferentes que produzcan el mismo resumen de mensajes, conocido como colisión , requiere en promedio solo 2 L / 2 evaluaciones usando un ataque de cumpleaños .

Algunas de las aplicaciones que utilizan hashes criptográficos, como el almacenamiento de contraseñas, solo se ven mínimamente afectadas por un ataque de colisión . La construcción de una contraseña que funcione para una cuenta determinada requiere un ataque de preimagen, así como el acceso al hash de la contraseña original (generalmente en el shadowarchivo) que puede ser o no trivial. Los ataques no permiten revertir el cifrado de contraseñas (por ejemplo, obtener una contraseña para intentar contra la cuenta de un usuario en otro lugar). (Sin embargo, incluso un hash de contraseña seguro no puede evitar ataques de fuerza bruta en contraseñas débiles ).

En el caso de la firma de documentos, un atacante no podría simplemente falsificar una firma de un documento existente; el atacante tendría que producir un par de documentos, uno inocuo y otro dañino, y hacer que el titular de la clave privada firme el documento inocuo. Hay circunstancias prácticas en las que esto es posible; Hasta finales de 2008, era posible crear certificados SSL falsificados utilizando una colisión MD5 que sería aceptada por los navegadores web más utilizados. [29]

El mayor interés en el análisis de hash criptográfico durante la competencia SHA-3 produjo varios ataques nuevos en la familia SHA-2, los mejores de los cuales se muestran en la tabla a continuación. Solo los ataques de colisión son de complejidad práctica; ninguno de los ataques se extiende a la función hash de ronda completa.

En FSE 2012, los investigadores de Sony dieron una presentación que sugiere que los ataques de pseudo-colisión podrían extenderse a 52 rondas en SHA-256 y 57 rondas en SHA-512 basándose en el ataque de pseudo-preimagen biclicua . [30]

Validación oficial [ editar ]

Las implementaciones de todas las funciones de seguridad aprobadas por FIPS pueden validarse oficialmente a través del programa CMVP , administrado conjuntamente por el Instituto Nacional de Estándares y Tecnología (NIST) y el Establecimiento de Seguridad de las Comunicaciones (CSE). Para la verificación informal, un paquete para generar una gran cantidad de vectores de prueba está disponible para su descarga en el sitio del NIST; la verificación resultante, sin embargo, no reemplaza la validación formal CMVP, que es requerida por ley para ciertas aplicaciones.

A diciembre de 2013 , hay más de 1300 implementaciones validadas de SHA-256 y más de 900 de SHA-512, y solo 5 de ellas son capaces de manejar mensajes con una longitud en bits que no sea un múltiplo de ocho y admitan ambas variantes. [37]

Vectores de prueba [ editar ]

Valores hash de una cadena vacía (es decir, un texto de entrada de longitud cero).

SHA224 ("")0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fSHA256 ("")0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855SHA384 ("")0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95bSHA512 ("")0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3eSHA512 / 224 ("")0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4SHA512 / 256 ("")0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a

Incluso un pequeño cambio en el mensaje resultará (con una probabilidad abrumadora) en un hash mayormente diferente, debido al efecto de avalancha . Por ejemplo, agregar un punto al final de la siguiente oración cambia casi la mitad (111 de 224) de los bits en el hash:

SHA224 (" El rápido zorro marrón salta sobre el perro perezoso ")0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525SHA224 ( " El rápido zorro marrón salta sobre el perro perezoso . ")0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c

Pseudocódigo [ editar ]

A continuación, se muestra el pseudocódigo para el algoritmo SHA-256. Tenga en cuenta el gran aumento en la mezcla entre bits de las w[16..63]palabras en comparación con SHA-1.

Nota 1: Todas las variables son enteros de 32 bits sin signo y la suma se calcula módulo 2 32 Nota 2: Para cada ronda, hay una constante de ronda k [i] y una entrada en la matriz de programación de mensajes w [i], 0 ≤ i ≤ 63 Nota 3: La función de compresión usa 8 variables de trabajo, de la a a la h Nota 4: La convención Big-endian se usa cuando se expresan las constantes en este pseudocódigo  y cuando se analizan los datos del bloque de mensajes de bytes a palabras, por ejemplo,  la primera palabra de el mensaje de entrada "abc" después del relleno es 0x61626380Inicializar valores hash: (primeros 32 bits de las partes fraccionarias de las raíces cuadradas de los primeros 8 primos 2..19):h0: = 0x6a09e667h1: = 0xbb67ae85h2: = 0x3c6ef372h3: = 0xa54ff53ah4: = 0x510e527fh5: = 0x9b05688ch6: = 0x1f83d9abh7: = 0x5be0cd19Inicializar matriz de constantes redondas: (primeros 32 bits de las partes fraccionarias de las raíces cúbicas de los primeros 64 primos 2..311):k [0..63]: = 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2Preprocesamiento (relleno):comenzar con el mensaje original de longitud L bitsagregar un solo bit '1'agregue K '0' bits, donde K es el número mínimo> = 0 tal que L + 1 + K + 64 es un múltiplo de 512agregue L como un entero big-endian de 64 bits, lo que hace que la longitud total posprocesada sea un múltiplo de 512 bitstal que los bits en el mensaje sean L 1 00 .. <K 0's> .. 00 <L como entero de 64 bits> = k * 512 bits totalesProcese el mensaje en sucesivos fragmentos de 512 bits:dividir el mensaje en trozos de 512 bitspor cada trozo crear una matriz de programación de mensajes de 64 entradas con [0..63] de palabras de 32 bits (Los valores iniciales en w [0..63] no importan, muchas implementaciones los ponen a cero aquí) copiar fragmentos en las primeras 16 palabras w [0..15] de la matriz de programación de mensajes Amplíe las primeras 16 palabras en las 48 palabras restantes w [16..63] de la matriz de programación de mensajes:  para i de 16 a 63 s0: = (w [i-15] rightrotate 7) xor (w [i-15] rightrotate 18) xor (w [i-15] SHIFTDERECHA 3) s1: = (w [i- 2] girar a la derecha 17) xor (w [i- 2] girar a la derecha 19) xor (w [i- 2] desplazamiento a la derecha 10) w [i]: = w [i-16] + s0 + w [i-7] + s1 Inicialice las variables de trabajo al valor hash actual: a: = h0 b: = h1 c: = h2 d: = h3 e: = h4 f: = h5 g: = h6 h: = h7 Lazo principal de la función de compresión:  para i de 0 a 63 S1: = (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch: = (e y f) xor (( no e) y g) temp1: = h + S1 + ch + k [i] + w [i] S0: = (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj: = (a y b) xor (a y c) xor (b y c) temp2: = S0 + maj  h: = g g: = f f: = e e: = d + temp1 d: = c c: = b b: = a a: = temp1 + temp2 Agregue el fragmento comprimido al valor hash actual: h0: = h0 + a h1: = h1 + b h2: = h2 + c h3: = h3 + d h4: = h4 + e h5: = h5 + f h6: = h6 + g h7: = h7 + hProducir el valor hash final (big-endian):
digest: = hash: = h0 agregar h1 agregar h2 agregar h3 agregar h4 agregar h5 agregar h6 agregar h7

El cálculo de los valores chy majse puede optimizar de la misma manera que se describe para SHA-1 .

SHA-224 es idéntico a SHA-256, excepto que:

  • los valores hash iniciales a h0través h7son diferentes, y
  • la salida se construye omitiendo h7.
Valores hash iniciales de SHA-224 (en big endian): (los segundos 32 bits de las partes fraccionarias de las raíces cuadradas de los números primos 9º al 16º 23..53)h [0..7]: = 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4

SHA-512 es idéntica en estructura a SHA-256, pero:

  • el mensaje se divide en trozos de 1024 bits,
  • los valores hash iniciales y las constantes redondas se amplían a 64 bits,
  • hay 80 rondas en lugar de 64,
  • la matriz de programación de mensajes w tiene 80 palabras de 64 bits en lugar de 64 palabras de 32 bits,
  • para extender la matriz de programación de mensajes w, el ciclo es de 16 a 79 en lugar de 16 a 63,
  • las constantes redondas se basan en los primeros 80 primos 2..409,
  • el tamaño de la palabra utilizada para los cálculos es de 64 bits,
  • la longitud agregada del mensaje (antes del preprocesamiento), en bits , es un entero big-endian de 128 bits, y
  • las cantidades de cambio y rotación utilizadas son diferentes.
Valores hash iniciales de SHA-512 (en big-endian):h [0..7]: = 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1,  0x510e527fade682d1, 0x9b05688c2b3e6c1f, ​​0x1f83d9abfb41bd6b, 0x5be0cd19137e2179Constantes redondas SHA-512:k [0..79]: = [0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538,  0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe,  0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235,  0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,  0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab,  0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725,  0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed,  0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,  0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218,  0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53,  0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373,  0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,  0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c,  0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6,  0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc,  0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817]SHA-512 Sum y Sigma:S0: = ( girar a la derecha 28) xor ( girar a la derecha 34) xor ( girar a la derecha 39)S1: = (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)s0: = (w [i-15] rightrotate 1) xor (w [i-15] rightrotate 8) xor (w [i-15] SHIFTDERECHA 7)s1: = (w [i-2] rotar a la derecha 19) xor (w [i-2] rotar a la derecha 61) xor (w [i-2] desplazamiento a la derecha 6)

SHA-384 es idéntico a SHA-512, excepto que:

  • los valores hash iniciales h0hasta h7son diferentes (tomados del noveno al decimosexto primos), y
  • la salida se construye omitiendo h6y h7.
Valores hash iniciales de SHA-384 (en big-endian):h [0..7]: = 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939,  0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4

SHA-512 / t es idéntico a SHA-512 excepto que:

  • los valores hash iniciales h0hasta los h7da la función de generación SHA-512 / t IV ,
  • la salida se construye truncando la concatenación de h0través h7en t bits de,
  • t igual a 384 no está permitido, en su lugar, SHA-384 debe usarse como se especifica, y
  • Los valores t 224 y 256 se mencionan especialmente como aprobados.

La función de generación de SHA-512 / t IV evalúa un SHA-512 modificado en la cadena ASCII "SHA-512 / t ", sustituido por la representación decimal de t . El SHA-512 modificado es el mismo que el SHA-512 excepto que sus valores iniciales h0hasta h7se han XORed cada uno con la constante hexadecimal 0xa5a5a5a5a5a5a5a5.

La implementación de ejemplo de C para la familia SHA-2 de funciones hash se puede encontrar en RFC 6234.

Comparación de funciones SHA [ editar ]

En la siguiente tabla, el estado interno significa la "suma hash interna" después de cada compresión de un bloque de datos.

En la columna de operaciones bit a bit, "Rot" significa rotar sin acarreo y "Shr" significa desplazamiento lógico a la derecha . Todos estos algoritmos emplean la adición modular de alguna manera, excepto SHA-3.

En la siguiente tabla se proporcionan medidas de rendimiento más detalladas en arquitecturas de procesador modernas.

Los números de rendimiento etiquetados como 'x86' se ejecutaban con código de 32 bits en procesadores de 64 bits, mientras que los números 'x86-64' son códigos nativos de 64 bits. Si bien SHA-256 está diseñado para cálculos de 32 bits, se beneficia del código optimizado para procesadores de 64 bits en la arquitectura x86. Las implementaciones de 32 bits de SHA-512 son significativamente más lentas que sus contrapartes de 64 bits. Las variantes de ambos algoritmos con diferentes tamaños de salida funcionarán de manera similar, ya que las funciones de expansión y compresión de mensajes son idénticas y solo los valores hash iniciales y los tamaños de salida son diferentes. Las mejores implementaciones de MD5 y SHA-1 realizan entre 4.5 y 6 ciclos por byte en procesadores modernos.

La Universidad de Illinois en Chicago realizó las pruebas en su sistema hydra8 con un procesador Intel Xeon E3-1275 V2 a una velocidad de reloj de 3,5 GHz y en su sistema hydra9 con una APU AMD A10-5800K a una velocidad de reloj de 3,8 GHz. [43] Los ciclos referenciados por velocidades de bytes anteriores son el rendimiento medio de un algoritmo que digiere un mensaje de 4.096 bytes utilizando el software de evaluación comparativa criptográfica SUPERCOP. [44] El rendimiento de MiB / s se extrapola de la velocidad de reloj de la CPU en un solo núcleo; El rendimiento en el mundo real variará debido a una variedad de factores.

Implementaciones [ editar ]

A continuación se muestra una lista de bibliotecas de criptografía que admiten SHA-2:

  • Botan
  • Castillo inflable
  • Cryptlib
  • Cripto ++
  • Libgcrypt
  • TLS Mbed [45] [46]
  • libsodium
  • Ortiga
  • LibreSSL
  • OpenSSL
  • GnuTLS
  • loboSSL

Las siguientes extensiones de procesador proporcionan aceleración de hardware:

  • Extensiones Intel SHA : disponibles en algunos procesadores Intel y AMD x86.
  • VIA Candado
  • Extensiones de criptografía ARMv8 [47]

Ver también [ editar ]

  • Comparación de funciones hash criptográficas
  • Comparación de bibliotecas de criptografía
  • Resumen de seguridad de la función hash
  • Hashcash
  • HMAC
  • Asociación Internacional para la Investigación Criptológica (IACR)
  • sha1sum( sha224sum, sha256sum, sha384sumY sha512sum) comandos
  • Sellado de tiempo de confianza

Referencias [ editar ]

  1. ↑ a b c Dmitry Khovratovich, Christian Rechberger y Alexandra Savelieva (2011). "Bicliques para preimágenes: ataques a la madeja-512 y la familia SHA-2" (PDF) . Archivo ePrint de criptología IACR . 2011: 286.
  2. ↑ a b c Mario Lamberger y Florian Mendel (2011). "Ataque diferencial de orden superior en SHA-256 reducido" (PDF) . Archivo ePrint de criptología IACR . 2011: 37.
  3. ^ "En la familia de algoritmos de hash seguro" (PDF) . Archivado desde el original (PDF) el 30 de marzo de 2016.
  4. ^ a b Aviso del Registro Federal 02-21599, que anuncia la aprobación de la publicación FIPS 180-2
  5. ^ US 6829355 
  6. ^ "Declaración de licencia para la patente estadounidense 6829355" . Consultado el 17 de febrero de 2008 . Cite journal requiere |journal=( ayuda )
  7. ^ "FIPS 180-2 con aviso de cambio 1" (PDF) . csrc.nist.gov .
  8. ^ Aviso del Registro Federal E8-24743, que anuncia la aprobación de la publicación FIPS 180-3
  9. ^ a b Recomendación de FIPS SP 800-107 para aplicaciones que utilizan algoritmos hash aprobados
  10. ^ a b Recomendación de FIPS SP 800-57 para la administración de claves: Parte 1: General
  11. ^ "NIST.gov - División de seguridad informática - Centro de recursos de seguridad informática" .
  12. ^ Recomendación de FIPS SP 800-131A para la transición del uso de algoritmos criptográficos y longitudes de clave
  13. ^ Aviso del Registro Federal 2012-5400, que anuncia la aprobación de la publicación FIPS 180-4
  14. ^ "NIST selecciona al ganador de la competencia Secure Hash Algorithm (SHA-3)" . Consultado el 24 de febrero de 2015 .
  15. ^ "Código base de Debian en Google Code" . Archivado desde el original el 7 de noviembre de 2011 . Consultado el 8 de noviembre de 2011 .
  16. ^ John Markoff, Una herramienta para verificar registros digitales, incluso cuando la tecnología cambia , New York Times , 26 de enero de 2009
  17. ^ RFC 5702, RFC-Editor.org
  18. ^ Ulrich Drepper, cripta Unix con SHA-256/512
  19. ^ Bitcoin, excedente. "Bitcoin no desperdicia energía" . Excedente de Bitcoin . Consultado el 20 de abril de 2020 .
  20. ^ "¿Qué es SHA-256 y cómo se relaciona con Bitcoin? - Mycryptopedia" . Mycryptopedia . 2017-09-21 . Consultado el 17 de septiembre de 2018 .
  21. ^ Centro de recursos de seguridad informática del Instituto Nacional de Estándares y Tecnología, Política de NIST sobre funciones hash. Archivado el 9 de junio de 2011en Wayback Machine , consultado el 29 de marzo de 2009.
  22. ^ "Hashing seguro" . NIST . Archivado desde el original el 25 de junio de 2011 . Consultado el 25 de noviembre de 2010 .
  23. ^ "Descripción general del Service Pack 3 de Windows XP" (PDF) . Corporación Microsoft. Archivado desde el original (PDF) el 30 de mayo de 2008.
  24. ^ Blog de Chromium, 5 de septiembre de 2014, desactivando gradualmente SHA-1
  25. ^ Eric Mill. "SHAAAAAAAAAAAAA" . SHAAAAAAAAAAAAA.com .
  26. ^ Filippo Valsorda, Preguntas frecuentes sobre la desactivación no oficial de Chrome SHA1
  27. ^ "Una actualización de nuestra hoja de ruta de depreciación SHA-1 - Blog de desarrollo de Microsoft Edge Blog de desarrollo de Microsoft Edge" . blogs.windows.com . Consultado el 28 de noviembre de 2016 .
  28. ^ Fabian A. Scherschel, HeiseSecurity: Firefox: Mozilla schaltet SHA-1 ab ... und direkt wieder an (alemán)
  29. ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5 considerado dañino hoy: Creación de un certificado de CA falso , consultado el 29 de marzo de 2009.
  30. ^ Ji Li, Takanori Isobe y Kyoji Shibutani, Sony China Research Laboratory y Sony Corporation, Conversión de un ataque de preimagen de encuentro en el medio en un ataque de pseudocolisión: aplicación a SHA-2
  31. ^ Somitra Kumar Sanadhya y Palash Sarkar (2008). "Nuevos ataques de colisión contra SHA-2 de hasta 24 pasos" (PDF) . Archivo ePrint de criptología IACR . 2008: 270.
  32. ^ Kazumaro Aoki; Jian Guo; Krystian Matusiewicz; Yu Sasaki y Lei Wang (2009). Imágenes previas para SHA-2 de reducción escalonada . Avances en Criptología - ASIACRYPT 2009 . Apuntes de conferencias en informática. 5912 . Springer Berlín Heidelberg. págs. 578–597. doi : 10.1007 / 978-3-642-10366-7_34 . ISBN 978-3-642-10366-7. ISSN  0302-9743 .
  33. ^ Jian Guo; San Ling; Christian Rechberger y Huaxiong Wang (2010). Ataques avanzados de preimagen de encuentro en el medio: primeros resultados en Tiger completo y resultados mejorados en MD4 y SHA-2 (PDF) . Avances en Criptología - ASIACRYPT 2010 . Apuntes de conferencias en informática. 6477 . Springer Berlín Heidelberg. págs. 56–75. doi : 10.1007 / 978-3-642-17373-8_4 . ISBN  978-3-642-17373-8. ISSN  0302-9743 .
  34. ^ Florian Mendel; Tomislav Nad; Martin Schläffer (2013). Mejora de colisiones locales: nuevos ataques en SHA-256 reducido . Avances en Criptología - EUROCRYPT 2013 . Apuntes de conferencias en informática. 7881 . Springer Berlín Heidelberg. págs. 262-278. doi : 10.1007 / 978-3-642-38348-9_16 . ISBN 978-3-642-38348-9. ISSN  0302-9743 .
  35. ^ Maria Eichlseder y Florian Mendel y Martin Schläffer (2014). "Heurística de ramificación en la búsqueda de colisiones diferenciales con aplicaciones a SHA-512" (PDF) . Archivo ePrint de criptología IACR . 2014: 302.
  36. ^ Christoph Dobraunig; Maria Eichlseder y Florian Mendel (2016). "Análisis de SHA-512/224 y SHA-512/256" (PDF) . Cite journal requiere |journal=( ayuda )
  37. ^ "Lista de validación de SHS" . NIST . 2017-06-16. Archivado desde el original el 17 de junio de 2017.
  38. ^ "Tabla de medidas" . bench.cr.yp.to .
  39. ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Ataque de colisión rápido en MD5 (PDF) . Cryptology ePrint Archive (informe técnico). IACR .
  40. ^ Stevens, Marc ; Bursztein, Elie ; Karpman, Pierre; Albertini, Ange; Markov, Yarik. La primera colisión para SHA-1 completo (PDF) (Informe técnico). Investigación de Google . Resumen de Lay - Blog de seguridad de Google (23 de febrero de 2017).
  41. ^ Sin truncamiento, se conoce el estado interno completo de la función hash, independientemente de la resistencia a la colisión. Si se trunca la salida, se debe buscar y encontrar la parte eliminada del estado antes de que se pueda reanudar la función hash, lo que permite que el ataque continúe.
  42. ^ "La familia de funciones de esponja Keccak" . Consultado el 27 de enero de 2016 .
  43. ^ SUPERCOP Benchmarks Medidas de funciones hash, indexadas por máquina
  44. ^ "SUPERCOP" . Consultado el 24 de febrero de 2015 .
  45. ^ Conjuntos de cifrado SSL / TLS compatibles
  46. ^ Registro de cambios de TLS de Mbed , 7 de julio de 2007
  47. ^ "Extensión de criptografía manual de referencia técnica del procesador ARM Cortex-A53 MPCore" .

Lectura adicional [ editar ]

  • Henri Gilbert, Helena Handschuh: Análisis de seguridad de SHA-256 y Sisters. Áreas seleccionadas en criptografía 2003: pp175–193
  • "Revisión propuesta del estándar federal de procesamiento de información (FIPS) 180, estándar de hash seguro" . Registro Federal . 59 (131): 35317–35318. 1994-07-11 . Consultado el 26 de abril de 2007 .[ enlace muerto permanente ]

Enlaces externos [ editar ]

  • Descripciones de SHA-256, SHA-384 y SHA-512 del NIST
  • SHA-2 Checker : SHAChecker para verificar la compatibilidad SSL de uno para SHA-2
  • Especificaciones para un estándar de hash seguro (SHS) : borrador para el SHS propuesto (SHA-0)
  • Estándar de hash seguro (SHS) : SHS propuesto (SHA-0)
  • Kit de herramientas criptográficas de CSRC : sitio oficial del NIST para el estándar Secure Hash
  • FIPS PUB 180-4: Secure Hash Standard (SHS) ( PDF , 834 KB) - Versión actual del Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512), agosto 2015
  • Vectores de prueba para SHA-256/384/512 del proyecto NESSIE
  • Vectores de prueba para SHA-1, SHA-2 del sitio NIST
  • Proyecto NIST Cryptographic Hash - Competencia SHA-3
  • RFC 3874: "Una función hash unidireccional de 224 bits: SHA-224"
  • RFC 6234: "Algoritmos hash seguros de EE. UU. (HMAC y HKDF basados ​​en SHA y SHA)"; contiene la implementación de muestra C