GOST (cifrado en bloque)


El cifrado de bloque GOST ( Magma ), definido en el estándar GOST 28147-89 (RFC 5830), es un cifrado de bloque de clave simétrica estándar del gobierno soviético y ruso con un tamaño de bloque de 64 bits. El estándar original, publicado en 1989, no le dio ningún nombre al cifrado, pero la revisión más reciente del estándar, GOST R 34.12-2015 (RFC 7801, RFC 8891), especifica que puede denominarse Magma. [1] La función hash GOST se basa en este cifrado. El nuevo estándar también especifica un nuevo cifrado de bloque de 128 bits llamado Kuznyechik .

Desarrollado en la década de 1970, el estándar se marcó como "Alto secreto" y luego se degradó a "Secreto" en 1990. Poco después de la disolución de la URSS , se desclasificó y se hizo público en 1994. GOST 28147 era un alternativa al algoritmo estándar de Estados Unidos , DES . [2] Por lo tanto, los dos son muy similares en estructura.

GOST tiene un tamaño de bloque de 64 bits y una longitud de clave de 256 bits. Sus cajas S pueden ser secretas y contienen alrededor de 354 (log 2 (16! 8 )) bits de información secreta, por lo que el tamaño efectivo de la clave se puede aumentar a 610 bits; sin embargo, un ataque de clave elegida puede recuperar el contenido de las cajas S en aproximadamente 2 32 cifrados. [3]

GOST es una red Feistel de 32 rondas. Su función de ronda es muy simple: agregue una subclave de 32 bits módulo 2 32 , pase el resultado a través de una capa de S-boxes y gire ese resultado 11 bits a la izquierda. El resultado de eso es la salida de la función redonda. En el diagrama adyacente, una línea representa 32 bits.

Las subclaves se eligen en un orden predeterminado. El programa de claves es muy simple: divide la clave de 256 bits en ocho subclaves de 32 bits, y cada subclave se usa cuatro veces en el algoritmo; las primeras 24 rondas usan las palabras clave en orden, las últimas 8 rondas las usan en orden inverso.

Las cajas S aceptan una entrada de cuatro bits y producen una salida de cuatro bits. La sustitución de S-box en la función de ronda consta de ocho S-boxes de 4 × 4. Los S-boxes dependen de la implementación, por lo que las partes que deseen proteger sus comunicaciones mediante GOST deben utilizar los mismos S-boxes. Para mayor seguridad, las cajas S se pueden mantener en secreto. En el estándar original donde se especificaba GOST, no se proporcionaban cajas S, pero debían suministrarse de alguna manera. Esto llevó a la especulación de que las organizaciones que el gobierno deseaba espiar recibieron S-boxes débiles. Un fabricante de chips GOST informó que él mismo generó S-boxes utilizando un generador de números pseudoaleatorios . [4]