Foros:
Por squirrel
Aunque la noticia ya tiene unos días, creo conveniente informar por estos lares que el NIST ha finalizado el proceso de selección para el nuevo estándar hash SHA-3. El elegido ha sido Keccak, un algoritmo basado en funciones esponja.
Como inciso, indicar que en el blog de Bruce Schneier éste comenta al respecto que aunque en principio no apoya crear otro estándar más de hash, en este caso se congratula de la elección debido a que por su concepto se aleja radicalmente de la familia de funciones MD4/5 de la que el anterior SHA-2 es hijo, lo cual da como resultado una mayor fiabilidad en el caso de que apareciera alguna vulnerabilidad actualmente desconocida en esa familia de funciones.
En mi opinión, la elección responde más a un trabajo con perspectiva a largo plazo que a una necesidad actual, donde SHA-2 no ha mostrado todavía síntomas de ser atacable fácilmente.

Funciones esponja
¿Podrías explicar lo que son, o poner un enlace?
Gracias
(Bob) esponja: el enlace
http://sponge.noekeon.org/index.html#hermetic
Éste estaba a un solo clic... aunque a ti no sé si facilitarte estas cosas, que aprendes rápido y nos lo devuelves en forma de megarreto ;)
Gracias
Pero ya no trato de aprender, sino de mantener activas las neuronas, je je.
Lo curioso
Lo curioso es que juraría que había puesto un enlace a la wikipedia en inglés. A lo mejor al ser por HTTPS la página me lo filtró y no me dí cuenta.
[SHA-3] Keccak -pronúnciese 'Ketchak'-
Gracias por informar de manera tan puntual, squirrel. Dado que el nuevo estándar SHA-3 seleccionado por el NIST lo es a futuro, creo que da tiempo de sobra a que los profanos, neófitos y aficionados o diletantes podamos entender el concepto 'Función Hash' como paso previo por si luego quisiéramos o necesitásemos adquirir mayor solidez en la aprehensión de ulteriores conocimientos al respecto. Esta página es en mi opinón de las mejores en nuestro idioma para estos menesteres y de uso recurrente no sólo por su encomiable contenido, sino también porque remite o enlaza -y enlazará probablemente- a otras más específicas y a otros imprescindibles contenidos. Las funciones poríferas o esponja -aún por comprender mínimamente en mi caso y ya veré si llego, ¡ufff!- ya tienen su entrada en la Wikipedia en algunos idiomas tales como el francés o el inglés pero aún no en español; hay que dar tiempo al tiempo.
Algo parecido ocurre con el ahora seleccionado algoritmo Keccak -pronúnciese 'Ketchak'-, página que cuenta con algunos idiomas más pero entre los que no se encuentra el español. No obstante, para hacerse una idea bastante aproximada, el material existente resulta suficiente aunque no se dominine ninguno de esos otros idiomas y es de suponer que, en estas mismas páginas facilitadas, pronto habrá un enlace al nuestro. Saludos al Sitio.
Sobre las funciones esponja
Lo de las funciones esponja es más fácil de entender de lo que parece, aunque explicarlo sea un poco tedioso.
A ver. Según el paradigma Merkle–Damgård las funciones hash funcionan mezclando la entrada (M) con un estado interno (S) y aplicando una cierta función (F) a esa mezcla para obtener un nuevo estado S'. Si M > S, entonces se trocea M en Mi y se va aplicando este esquema de forma consecutiva a todos los Mi. Estos Mi son de un tamaño parecido a S: es lo que se llama "el tamaño de bloque" del algoritmo y puede ir desde los 128 hasta los 512 bits o incluso 1024 bits.
El nuevo paradigma de funciones esponja es básicamente igual al de Merkle–Damgård pero con una gran diferencia: el estado interno, S, es mucho mayor que el tamaño de bloque. Desde el punto de vista de la función F, el estado S es monolítico. F obtiene un nuevo estado S' como un todo (además, en keccak esta F es biyectiva e invertible, por lo que las colisiones no existen en F).
Pero desde el punto de vista de la mezcla, el estado S tiene dos partes: una de tamaño "r", que es igual al tamaño de bloque, y otra de tamaño "c" de forma que el tamaño del estado "b" es "b = r + c". Se denomina "bitrate" del algorimo a "r" y "capacidad" a "c". Los bloques Mi se mezclan con los "r" bits más significativos de S y después se aplica la función F. El proceso de integración de los Mi en S es como una esponja que va admitiendo agua, ya que la esponja, S, es mucho mayor que las gotitas de agua Mi.
Cuanto mayor sea "c", más difícil es encontrar colisiones y preimágenes por ataques inteligentes (no de fuerza bruta). En "keccak" el tamaño del estado se fija a 1600 bits y el tamaño de "c" se fija al doble del tamaño objetivo del hash. Por ejemplo, si queremos obtener un hash de 512 bits, entonces c = 1024 y r = 1600-1024 = 576. Es decir, hay que trocear el mensaje en fragmentos de 576 bits (78 bytes). Pero si nos conformamos con un hash de 256 bits entonces c=512, r=1600-512=1088; hay que trocear en fragmentos de 136 bytes, con lo que el algoritmo es más rápido (tiene un bitrate más alto) pero la resistencia a colisiones por fuerza bruta es menor (pero, vaya, que 256 bits ya es una pasada).
Lo que me gustaría saber es qué nombre oficial tendrá el algoritmo y sus versiones. SHA3 parece que está bien pero... ¿cómo serían las versiones? Por ejemplo SHA3 con salida de 256 bits ¿sería SHA3-256? No sé, puede haber algo de confusión con los actuales SHA256, SHA512, etc.
SKS - cripografía de curva elíptica de bolsillo
http://sks.anarres.tk/
Gracias
Gracias por la explicación. que complementa la del enlace que puso admin.
[SHA-3] Algoritmos poríferos: Keccak
Shevek dijo:
Gracias Shevek, se te echaba de menos. Recuerdo que también nos acercaste con gran naturalidad lo que en realidad siginifican las matemáticas de las curvas elípticas aplicadas a la criptografía ya antes de hacerse célebres y cuando algunos creíamos que dichos conceptos escapaban a nuestra humilde capacidad de comprensión. La percepción de tan novedosos conceptos cambia al leer tus sencillas explicaciones y se hacen mucho más asequibles. Saludos y gracias otra vez.
opinar