RÁPIDO

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 6 de febrero de 2021; las comprobaciones requieren 3 ediciones .
RÁPIDO
Desarrolladores Vadim Lyubashevsky, Daniel Michiancio, Chris Peikert, Alon Rosen
Creado 2008
publicado 2008
Tipo de función hash

SWIFFT es un conjunto de funciones hash criptográficas con seguridad comprobada [1] [2] [3] . Se basan en la Transformada Rápida de Fourier ( FFT ) y utilizan el algoritmo de bases reducidas LLL . La seguridad criptográfica de las funciones SWIFFT (en sentido asintótico) [4] se demuestra matemáticamente utilizando los parámetros recomendados [5] . Encontrar colisiones en SWIFFT requiere al menos tanto tiempo en el peor de los casos como encontrar vectores cortos en retículas cíclicas/ideales . La aplicación práctica de SWIFFT será valiosa precisamente en aquellos casos en los que la resistencia a las colisiones sea especialmente importante. Por ejemplo, las firmas digitales, que deben permanecer fiables durante mucho tiempo.  

Este algoritmo proporciona un rendimiento de aproximadamente 40 Mb/s en un procesador Intel Pentium 4 con una frecuencia de reloj de 3,2 GHz [6] [1] . Se han realizado investigaciones para acelerar la FFT, que se utiliza en SWIFFT [7] . Como resultado, la velocidad del algoritmo aumentó más de 13 veces [6] . Esta implementación de SWIFFT resultó ser más rápida que las implementaciones de funciones hash ampliamente utilizadas [8] .

En la competencia del Instituto Nacional de Estándares y Tecnología de 2012 [2] , se propuso SWIFFTX (una modificación de SWIFFT) como SHA-3 (para reemplazar al antiguo SHA-2 y especialmente al SHA-1 [9] ), pero fue rechazado en la primera ronda [ 10] .

Descripción del trabajo

Las funciones SWIFFT se pueden describir como una simple expresión algebraica sobre algún anillo polinomial [1] [11] . La familia de funciones depende de tres parámetros principales : sea una potencia de 2, - un número entero pequeño y - no necesariamente un número primo , pero es mejor elegirlo primo. Lo definimos como un anillo de la forma . Por ejemplo, el anillo de polinomios en , cuyos coeficientes son números enteros, es el número por el cual realizamos la división de módulo, y . Un elemento de puede ser un polinomio de menor grado con coeficientes de .

Una función definida en la familia SWIFFT se define como elementos de anillo fijos , llamados multiplicadores. Esta función sobre el anillo se puede escribir de la siguiente forma:

,

donde son polinomios con coeficientes binarios correspondientes a un mensaje de entrada binario de longitud .

El algoritmo de operación es el siguiente: [1] [12] [11]

  1. Taken es un polinomio irreducible sobre
  2. La entrada es un mensaje de longitud
  3. se convierte en un conjunto de polinomios en un cierto anillo de polinomios con coeficientes binarios
  4. Los coeficientes de Fourier se calculan para cada
  5. Los coeficientes fijos de Fourier se establecen según la familia SWIFFT
  6. Los coeficientes de Fourier se multiplican por pares con para cada
  7. Se utiliza la transformada inversa de Fourier para obtener polinomios de grado máximo
  8. Módulo calculado y .
  9. convertido a bits y enviado a la salida

Ejemplo

Los valores específicos para los parámetros n , m y p se eligen de la siguiente manera: n = 64, m = 16, p = 257 [13] . Para estos parámetros, cualquier función de compresión fija de la familia aceptará como entrada un mensaje de longitud mn = 1024 bits (128 bytes). La salida está en un rango que tiene tamaño . Los datos de salida se pueden representar utilizando 528 bits (66 bytes).

Cálculo del resultado de la multiplicación de polinomios

La parte más difícil de calcular la expresión anterior es calcular el resultado de la multiplicación [1] [14] . Una forma rápida de calcular un producto dado es usar el teorema de convolución , que establece que bajo ciertas condiciones:

Aquí denota la transformada de Fourier , y la operación significa multiplicar coeficientes con el mismo índice. En general, el teorema de convolución tiene el significado de convolución , no de multiplicación. Sin embargo, se puede demostrar que la multiplicación de polinomios es una convolución.

Transformada rápida de Fourier

Para encontrar la transformada de Fourier, usamos la transformada rápida de Fourier (FFT), que toma [1] . El algoritmo de multiplicación es el siguiente [14] : calculamos todos los coeficientes de Fourier para todos los polinomios a la vez usando la FFT. Luego multiplicamos por pares los coeficientes de Fourier correspondientes de los dos polinomios. Después usamos la FFT inversa, después de lo cual obtenemos un polinomio de grado no superior a .

Transformada discreta de Fourier

En lugar de la transformada de Fourier habitual, SWIFFT utiliza la transformada discreta de Fourier (DFT) [1] [14] . Utiliza raíces de unidad en lugar de raíces complejas de unidad. Esto será cierto si es un campo finito , y sus 2 n ésimas raíces simples de la unidad existen en el campo dado. Estas condiciones se cumplirán si tomamos un número primo que sea divisible por .

Elección de opciones

Los parámetros m , p , n deben cumplir los siguientes requisitos [15] :

Puede tomar, por ejemplo, los siguientes parámetros: n =64, m =16, p =257. Tomamos el rendimiento al nivel de 40 Mb / s [6] , seguridad de la búsqueda de colisiones - operaciones.

Propiedades estadísticas

Propiedades criptográficas y seguridad

Estabilidad teórica

SWIFFT - Funciones criptográficas de seguridad comprobadas [1] [3] . Como en la mayoría de los casos, la prueba de la seguridad de las funciones se basa en que el problema matemático utilizado en las funciones no se puede resolver en tiempo polinomial. Esto significa que la fuerza de SWIFFT radica únicamente en el hecho de que se basa en un problema matemático complejo.

En el caso de SWIFFT, la seguridad probada radica en el problema de encontrar vectores cortos en redes cíclicas/ideales [17] . Se puede probar que la siguiente afirmación es verdadera: supongamos que tenemos un algoritmo que puede encontrar colisiones de funciones para una versión aleatoria de SWIFFT obtenida de , en algún tiempo posible con probabilidad . Esto significa que el algoritmo funciona solo en una pequeña pero notable fracción de las funciones de la familia. Entonces también podemos encontrar un algoritmo que siempre puede encontrar un vector corto en cualquier red ideal sobre un anillo en algún tiempo posible dependiendo de y . Esto significa que encontrar colisiones en SWIFFT no es menos difícil, el problema de encontrar vectores cortos en una red sobre , para los cuales solo existen algoritmos exponenciales .

Práctica durabilidad

Los autores de esta función hash la examinaron en busca de vulnerabilidades a varios ataques y descubrieron que el ataque de "cumpleaños" requiere la menor cantidad de operaciones de conteo de hash (2 106 ) para encontrar colisiones. [18] [1] . Los ataques de permutación requieren 2448 conteos para parámetros estándar. Una enumeración completa de los valores posibles requeriría 2528 cálculos hash. Esto suele ser suficiente para hacer imposible un ataque enemigo.

Véase también

Notas

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Lyubashevsky et al., 2008 .
  2. 12 Arbitman et al., 2008 .
  3. 1 2 Györfi et al., 2012 , pág. 2.
  4. 12 Arbitman et al., 2008 , pág. una.
  5. Buchmann y Lindner 2009 , pág. 1-2.
  6. 1 2 3 Györfi et al., 2012 , pág. quince.
  7. Györfi et al., 2012 , pág. 15-16.
  8. Györfi et al., 2012 , pág. dieciséis.
  9. COMPETENCIA PRE-SHA-3 . Instituto Nacional de Normas y Tecnología (15 de abril de 2005). Archivado desde el original el 9 de agosto de 2017.
  10. Candidatos a la segunda ronda . Instituto Nacional de Normas y Tecnología (19 de enero de 2010). Consultado el 14 de febrero de 2010. Archivado desde el original el 10 de abril de 2012.
  11. 1 2 Györfi et al., 2012 , pág. 3.
  12. Arbitman et al., 2008 , pág. 4-5.
  13. Györfi et al., 2012 .
  14. 1 2 3 Györfi et al., 2012 , pág. cuatro
  15. Buchmann, Lindner, 2009 .
  16. Sarinay, 2010 , pág. 9.
  17. Arbitman et al., 2008 , pág. 10-11.
  18. Buchmann y Lindner 2009 , pág. 2.

Literatura

Libros

Artículos