HC-256


HC-256 es un cifrado de flujo diseñado para proporcionar cifrado masivo en software a altas velocidades al tiempo que permite una gran confianza en su seguridad. [1] Se presentó una variante de 128 bits como candidato de cifrado eSTREAM y se seleccionó como uno de los cuatro concursantes finales en el perfil de software. [2] [3]

Internamente, consta de dos tablas secretas (P y Q). Cada tabla contiene 1024 palabras de 32 bits. Para cada actualización de estado, se actualiza una palabra de 32 bits en cada tabla utilizando una función de actualización no lineal. Después de 2048 pasos, todos los elementos de las tablas se han actualizado.

Genera una palabra de 32 bits para cada paso de actualización utilizando una función de mapeo de 32 bits a 32 bits similar a la función de salida del cifrado Blowfish . Finalmente, se aplica una función de enmascaramiento de bits lineal para generar una palabra de salida. Utiliza las dos funciones de programación de mensajes en la función hash SHA-256 internamente, pero con las tablas P y Q como S-boxes .

HC-128 tiene una función similar y reduce a la mitad la longitud de la clave, el número de nonce, el número de palabras en las tablas P y Q y el número de pasos de actualización de la tabla. [2]

Su autor estima que el rendimiento del HC-256 es de unos 4 ciclos por byte en un procesador Pentium 4 . Sin embargo, la fase de inicialización del cifrado incluye expandir la clave de 256 bits en las tablas P, Q y luego ejecutar el cifrado en 4096 pasos. El autor de HC-256 estima que este proceso dura alrededor de 74.000 ciclos.

La implementación de HC-128 en varias estructuras informáticas se estudia en detalle, con ganancias de rendimiento significativas en comparación con la implementación de software ingenuo. [4] [5]