HC-256 es un cifrador de flujo diseñado para proporcionar cifrado masivo en software a alta velocidad y al mismo tiempo permitir una gran confianza en su seguridad. [1] Se presentó una variante de 128 bits como candidata a cifrado eSTREAM y ha sido seleccionada como una de las cuatro finalistas en el perfil del software. [2] [3]
El algoritmo fue diseñado por Hongjun Wu y se publicó por primera vez en 2004. No está patentado.
HC-256 tiene una clave de 256 bits y un vector de inicialización (nonce) de 256 bits. [1]
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 de cada tabla mediante una función de actualización no lineal. Después de 2048 pasos, se han actualizado todos los elementos de las tablas.
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 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]
El autor de HC-256 estima que su rendimiento es de aproximadamente 4 ciclos por byte en un procesador Pentium 4. Sin embargo, la fase de inicialización del cifrado incluye la expansión de la clave de 256 bits en las tablas P, Q y luego la ejecución del cifrado durante 4096 pasos. El autor de HC-256 estima que este proceso requiere alrededor de 74.000 ciclos.
Para HC-128 se cita una velocidad de cifrado de aproximadamente 3 ciclos por byte en un procesador Pentium M.
Se estudia en detalle la implementación de HC-128 en varias estructuras informáticas, con importantes mejoras de rendimiento en comparación con la implementación de SW ingenua. [4] [5]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )