Generador de encogimiento


En criptografía , el generador de reducción es una forma de generador de números pseudoaleatorios destinado a ser utilizado en un cifrado de flujo . Fue publicado en Crypto 1993 por Don Coppersmith , Hugo Krawczyk y Yishay Mansour . [1]

El generador de reducción utiliza dos registros de desplazamiento de retroalimentación lineal . Uno, llamado secuencia A , genera bits de salida, mientras que el otro, llamado secuencia S , controla su salida. Tanto A como S están cronometrados; si el bit S es 1, entonces se emite el bit A ; si el bit S es 0, el bit A se descarta, no se emite nada y los registros se cronometran nuevamente. Esto tiene la desventaja de que la tasa de salida del generador varía de manera irregular y de una manera que sugiere el estado de S; este problema se puede solucionar almacenando en búfer la salida. La secuencia aleatoria generada por LFSR no puede garantizar la imprevisibilidad en un sistema seguro y se han propuesto varios métodos para mejorar su aleatoriedad [2]

A pesar de esta simplicidad, actualmente no hay mejores ataques conocidos que la búsqueda exhaustiva cuando los polinomios de retroalimentación son secretos. Sin embargo, si se conocen los polinomios de retroalimentación, el ataque más conocido requiere menos de AS bits de salida. [3]

Este ejemplo utiliza dos LFRS de Galois para producir el flujo de bits pseudoaleatorio de salida. El código de Python se puede utilizar para cifrar y descifrar un archivo o cualquier flujo de bytes.