ISAAC ( indirección, desplazamiento, acumulación, suma y recuento ) es un generador de números pseudoaleatorios criptográficamente seguro y un cifrado de flujo diseñado por Robert J. Jenkins Jr. en 1993. [1] El código fuente de implementación de referencia se dedicó al dominio público . [2]
Operación
El algoritmo ISAAC tiene similitudes con RC4 . Utiliza una matriz de 256 enteros de cuatro octetos como estado interno, escribiendo los resultados en otra matriz de 256 enteros de cuatro octetos, desde la cual se leen uno a la vez hasta que se vacían, momento en el que se vuelven a calcular. El cálculo consiste en alterar el elemento i con el elemento ( i ⊕128), dos elementos de la matriz de estados hallados indirectamente, un acumulador y un contador, para todos los valores de i de 0 a 255. Dado que solo se necesitan alrededor de 19 Operaciones de 32 bits para cada palabra de salida de 32 bits, es muy rápido en computadoras de 32 bits.
Criptoanálisis
El criptoanálisis ha sido realizado por Marina Pudovkina (2001). [3] Su ataque puede recuperar el estado inicial con una complejidad que se aproxima a ser menor que el tiempo necesario para buscar a través de la raíz cuadrada de todos los posibles estados iniciales. En la práctica, esto significa que el ataque necesita en vez de . Este resultado no ha tenido ningún impacto práctico en la seguridad de ISAAC. [4]
En 2006, Jean-Philippe Aumasson descubrió varios conjuntos de estados débiles. [5] El cuarto conjunto presentado (y más pequeño) de estados débiles conduce a una salida altamente sesgada para la primera ronda de ISAAC y permite la derivación del estado interno, similar a una debilidad en RC4 . No está claro si un atacante puede saber solo por la salida si el generador está en uno de estos estados débiles o no. También muestra que un ataque anterior [6] tiene fallas, ya que el ataque Paul - Preneel se basa en un algoritmo erróneo en lugar del ISAAC real. Se propone una versión mejorada de ISAAC, llamada ISAAC +. [4]
Uso fuera de la criptografía
Muchas implementaciones de ISAAC son tan rápidas que pueden competir con otros PRNG de alta velocidad, incluso con aquellos diseñados principalmente para velocidad, no para seguridad. Sólo existen en uso algunos otros generadores de tan alta calidad y velocidad. ISAAC se utiliza en la herramienta de Unix shred para sobrescribir datos de forma segura. [7]
Referencias
- ^ Robert J. Jenkins Jr., ISAAC. Cifrado rápido de software 1996, págs. 41–49.
- ^ El cifrado ISAAC
- ^ Marina Pudovkina, Un conocido ataque de texto sin formato en el generador de flujo de claves ISAAC, 2001, Cryptology ePrint Archive: Report 2001/049, [1] .
- ^ a b "En el generador pseudoaleatorio ISAAC" (PDF) . Archivo ePrint de criptología . Consultado el 21 de agosto de 2016 .
- ^ Jean-Philippe Aumasson, Sobre el generador pseudoaleatorio ISAAC . Archivo Cryptology ePrint, informe 2006/438, 2006.
- ^ Souradyuti Paul, Bart Preneel, Sobre la (In) seguridad de los cifrados de flujo basados en matrices y adición modular. Asiacrypt 2006.
- ^ GNU coreutils git
enlaces externos
- Sitio web oficial de ISAAC
- Múltiples implementaciones de ISAAC en Rosetta Code
- Puerto Pascal / Delphi
- Math :: Random :: ISAAC , una implementación de módulo Perl del algoritmo
- isaac.js , una implementación de JavaScript