Speed ​​hash

Hash de alta velocidad basado en un nuevo algoritmo criptográfico


Desafortunadamente, los matemáticos están poco versados ​​en las complejidades de la programación, inventan algo y luego el programador debe implementar esto en el código del programa. No siempre es posible implementar sus algoritmos de manera efectiva.

Esto es especialmente evidente en la reciente criptografía simétrica rusa, Striborg y Grasshopper ... Es imposible implementar estos algoritmos de manera efectiva en los códigos de programa x86 / 64, se necesita un procesador criptográfico especializado.

Hacemos lo contrario y vemos qué pasa.

Un programador que sepa cómo funciona el moderno procesador x86 / 64 desarrollará el algoritmo de cifrado simétrico más eficiente y permitirá que los matemáticos, como en los viejos tiempos, hagan su trabajo principal: el criptoanálisis de la solución resultante.

Recordando que "lo mejor es enemigo de lo bueno", tomamos como base lo "bueno": GOST 28147-89. Luego, de acuerdo con el principio médico "No hacer daño", lo haremos utilizando métodos informáticos multiproceso.

Se ha hecho lo siguiente:

  • Se aumentó el tamaño de la clave a 256 bytes.
  • Se aumentó el tamaño del bloque de datos a 256 bytes.
  • La operación de sustitución se reemplaza por una operación de permutación.
  • En el desplazamiento cíclico, se implementa la operación de invertir grupos de bits.
  • La entrada de clave se realiza en forma de permutación de bits.
  • La red Feistel se modifica en una red en anillo de ocho segmentos.
  • Se utiliza el modo de juego con retroalimentación, en dos pasadas sobre datos cifrados.
  • Los pasajes se realizan con diferentes permutaciones y el anillo lo cambia con las mismas teclas.
  • Antes del cifrado, se elimina la redundancia del texto cifrado mediante un compresor.

Prueba de implementación


El algoritmo está implementado, y lo primero que se prueba son sus parámetros estadísticos al generar una secuencia pseudoaleatoria (el compresor está apagado), así es como se ven:

imagen

Este es un resultado de prueba NIST típico de una nueva conversión de cifrado. Los resultados de la prueba en cualquier clave aleatoria y poblaciones iniciales siempre se ajustan a los parámetros estadísticos de una secuencia aleatoria.

Los parámetros estadísticos obtenidos en experimentos sobre las normas de un cifrado de bloque de 8 bytes para un cifrado de bloque con un tamaño de bloque de 256 bytes son fantásticos.

Es lo mismo que, por ejemplo, lanzar una moneda 12 veces y obtener una pérdida igual de "águila" y "nueces", para exigir que el dado, también arrojado 12 veces, asegúrese de caer en cada cara dos veces ...

Esto es teóricamente posible solo con una entropía diferencial muy alta entre bloques adyacentes y caracteriza el nivel de complejidad del cifrado de bloque.

Estos parámetros gamma se obtuvieron en una ronda de conversión. El algoritmo tiene una peculiaridad: la velocidad de juego depende del rendimiento de RAM y caché, y no de la velocidad del procesador.

Ruleta Rusa, 2018 y su aplicación


Recientemente, los algoritmos criptográficos han comenzado a recibir nombres sonoros, como "Magma", "Grasshopper", "Stribog", continuaremos con esta tradición.

Llamaremos a este cifrado de bloque "Ruleta rusa" o RU2 para abreviar, en honor al primer generador puramente ruso de secuencias binarias aleatorias, un tambor giratorio giratorio ...

Bueno, además, la conversión criptográfica se basa en rotaciones (cambios de anillo) de secuencias binarias. Solo hay 192 cambios explícitos en esa ronda.
Entonces, la analogía directa con el revólver tambor es obvia.

Anteriormente, al implementar el método de implementación paralela de GOST 28147-89 en registros XMM / YMM, tenía que describirlo completamente, ya que pasaba la certificación oficial FSB.
Ahora la situación es diferente, no se supone oficialmente. Por lo tanto, no habrá una descripción detallada del algoritmo de "ruleta rusa", es un tipo de protección de derechos de autor. En resumen, el algoritmo de "ruleta rusa" será propietario hasta ahora y, en consecuencia, su designación completa será ruleta rusa, 2018 o RU2 para abreviar.

Un algoritmo de cifrado cerrado de la investigación no tiene sentido, por supuesto, ya que no se confía en la fuerza del cifrado.

Pero nada impide usar el algoritmo RU2 para convertir texto cifrado en una secuencia que satisfaga los requisitos de pseudoaleatoriedad.

Luego, la secuencia pseudoaleatoria resultante se puede cifrar con algoritmos conocidos y "confiables", de hecho, se construyen todos los sistemas criptográficos serios.
Mientras tanto, la ruleta rusa se utiliza para el hash de alta velocidad con un tamaño arbitrario del resultado de la función hash. Esto es importante en las tareas de copia de seguridad e integridad.
La gamma estándar de retroalimentación se convierte en una función Hash si realiza una segunda transferencia de datos cifrados. Así es como se implementó originalmente el algoritmo RU2 .
La doble gamma de retroalimentación no se ha considerado previamente como una variante de la implementación de la función hash, aparentemente debido a la baja velocidad de operación, aunque tiene parámetros de convolución más confiables. Esto se aplica principalmente al efecto avalancha, actúa no solo en rondas posteriores de convolución, sino también en las anteriores.

Además, las características obtenidas de la función hash se verifican de manera confiable mediante pruebas estadísticas, porque todo el texto cifrado recibido, que es un gamma pseudoaleatorio confiable, se convierte en un hash.

A partir de esta gama, se pueden cortar piezas arbitrarias para almacenar el valor de la función hash. Ahora se utiliza un bloque de 1024 bytes, es mucho más confiable que un bloque de 64 bytes en el estándar SHA3-512 más "avanzado".

El hash RU2 protege los datos de la visualización / modificación, pero hasta que los criptógrafos estén convencidos de la solidez del algoritmo, consideraremos que la protección de datos con contraseña limita el acceso.

Implementación práctica de RU2


El algoritmo de la ruleta rusa está integrado en el duplicador forense de unidades HDD y SDD. El algoritmo se usa allí para crear copias de seguridad diferenciales, control de integridad, restricciones de acceso basadas en contraseña y compresión de información.

El compresor para eliminar la redundancia ya se describió anteriormente en el artículo " Un nuevo algoritmo de compresión de datos de alta velocidad" , el hash se utiliza para confirmar la integridad de los datos copiados y, en caso de ingresar una contraseña, también para la "protección de contraseña" de los volcados recibidos de visualización / modificación.

Estas son las características de velocidad de RU2 obtenidas en el trabajo real para crear una copia de seguridad diferencial:

imagen

La velocidad de copia está limitada por los parámetros del lector, una unidad SSD conectada a través de un puente USB 3.0-SATA no puede proporcionar una alta velocidad de lectura.

A una velocidad de flujo de entrada de 360 ​​megabytes / seg. El algoritmo RU2 carga el procesador en solo un 5% con una frecuencia de operación reducida de 1.4 Gigahercios. Esto proporciona la compresión de la información, su cifrado y cifrado (protección con contraseña) del volcado.

Los sistemas de hashing tradicionales no pueden proporcionar dicho rendimiento. A modo de comparación, así es como funciona el sistema hash integrado en Acronis al crear una copia de seguridad diferencial de la misma unidad:

imagen

El procesador procesa el flujo de datos de entrada a una velocidad de 340 MegaBytes / seg., Y al mismo tiempo opera a una frecuencia de 3.8 GigaHertz y se carga al 28%.

Si recalculamos los resultados obtenidos en los parámetros límite para un procesador de doble núcleo que funciona a una frecuencia de 3.8 GigaHertz, entonces el sistema hash Acronis puede proporcionar un rendimiento de 1.4 GigaBytes / seg.

Mucho más cargado de tareas (hashing + compresión + protección con contraseña), el algoritmo de la ruleta rusa proporciona una velocidad de 21 Gigabytes / seg.

En otras palabras, el hash RU2 funciona un orden de magnitud más rápido que el hashing estándar implementado en Acronis.

Además, la ruleta rusa proporciona una tasa de generación de números pseudoaleatorios de 12 gigabytes por segundo. Este es el generador de secuencia pseudoaleatoria más rápido conocido que cumple con los requisitos de las pruebas oficiales de NIST.

Generación de números aleatorios, hashing, protección con contraseña, mientras que esto es suficiente para la ruleta rusa.

"... ¿Pero qué pasa con la criptografía?, - y luego la criptografía ..."

Source: https://habr.com/ru/post/es435362/


All Articles