title: ISAAC (cifrador)
text: # ISAAC (cifrador)
  
  En criptografía, ISAAC es un generador pseudoaleatorio de números (PRNG) y un cifrador de flujo diseñado por Robert Jenkins (1996) para ser criptográficamente seguro. El nombre es un acrónimo de Indirection, Shift, Accumulate, Add, and Count.
  
  ## Operación
  
  El algoritmo ISAAC comparte similitudes con RC4. Usa un vector de 256 enteros de 4 bits (llamado mm) como estado interno, escribiendo los resultados en otro vector de 256 enteros, del que se leen de uno en uno hasta que se vacíe, y en ese momento se vuelven a computar. La computación consiste en alterar mm[i] con mm[i^128], dos elementos de mm encontrados por indirección, un acumulador, y un contador, para todos los valores de i desde 0 a 255. Como sólo necesita 19 operaciones de 32 bits para cada palabra de salida de 32 bits, es extremadamente rápido en ordenadores de 32 bits.
  
  ## Criptoanálisis
  
  El Criptoanálisis ha sido abordado por Marina Pudovkina (2001). Su ataque puede recuperar el estado inicial con una complejidad aproximadamente 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 $4.67\times 10^{1240}$ en vez de $10^{2466}$. Este resultado no ha tenido impacto práctico en la seguridad del ISAAC. Como siempre con las primitivas de la criptografía, futuras mejoras, u otros ataques, son posibles.
  
  En 2006, Jean-Philippe Aumasson descubrió varias series de estados débiles. La cuarta (y más pequeña) serie de estados débiles, lleva a una salida muy parcial para la primera vuelta del ISAAC, y permite la derivación del estado interno, similar a la debilidad en RC4. No está claro si un atacante puede asegurar solo por la salida si el generador está en uno de estos estados débiles o no. También muestra que un ataque anterior es defectuoso, ya que el ataque de Paul-Preneel está basado en un algoritmo erróneo más que en el ISAAC real. Se ha propuesto una versión mejorada del ISAAC, llamada ISAAC+.
  
  ## Usos fuera de la criptografía
  
  Muchas implementaciones del ISAAC son tan rápidas que pueden competir con otros PRNG de alta velocidad, incluso con aquellos diseñado principalmente por la velocidad y no por la seguridad. Sólo existen otros pocos generadores de tal alta calidad y velocidad en la usanza.
  
  