El cifrador de bloques GOST ( Magma ), definido en el estándar GOST 28147-89 , [ 2 ] es un cifrador de bloques 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 daba ningún nombre al cifrador, pero la revisión más reciente del estándar, GOST R 34.12-2015 , [ 3 ] [ 4 ] especifica que puede denominarse Magma. [ 5 ] La función hash GOST se basa en este cifrador. El nuevo estándar también especifica un nuevo cifrador de bloques de 128 bits llamado Kuznyechik .
Desarrollado en la década de 1970, el estándar había sido clasificado como "Alto Secreto" y luego degradado a "Secreto" en 1990. Poco después de la disolución de la URSS , fue desclasificado y publicado en 1994. GOST 28147 era una alternativa soviética al algoritmo estándar estadounidense DES . [ 6 ] Por lo tanto, ambos son muy similares en estructura.
El algoritmo
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 aproximadamente 354 (log 2 (16! 8 )) bits de información secreta, por lo que el tamaño efectivo de la clave puede aumentarse a 610 bits; sin embargo, un ataque de clave elegida puede recuperar el contenido de las cajas S en aproximadamente 2 32 cifrados. [ 7 ]
GOST es una red Feistel de 32 rondas. Su función de ronda es muy simple: suma una subclave de 32 bits módulo 2³² , procesa el resultado mediante una capa de cajas S y rota ese resultado 11 bits a la izquierda. El resultado de esto es la salida de la función de ronda. En el diagrama adjunto, una línea representa 32 bits.
Las subclaves se eligen en un orden predefinido. El esquema de claves es muy sencillo: la clave de 256 bits se divide en ocho subclaves de 32 bits, y cada subclave se utiliza cuatro veces en el algoritmo; las primeras 24 rondas utilizan las palabras clave en orden, y las últimas 8 rondas las utilizan en orden inverso.
Las cajas S aceptan una entrada de cuatro bits y producen una salida de cuatro bits. La sustitución de la caja S en la función de ronda consta de ocho cajas S de 4 × 4. Las cajas S dependen de la implementación, por lo que las partes que deseen proteger sus comunicaciones mediante GOST deben usar las mismas cajas S. Para mayor seguridad, las cajas S pueden mantenerse en secreto. En el estándar original donde se especificó GOST, no se proporcionaron cajas S, pero se suponía que se suministrarían de alguna manera. Esto dio lugar a especulaciones de que a las organizaciones que el gobierno deseaba espiar se les proporcionaron cajas S débiles. Un fabricante de chips GOST informó que él mismo generó cajas S utilizando un generador de números pseudoaleatorios . [ 8 ]
Por ejemplo, el Banco Central de la Federación Rusa utilizó las siguientes cajas S:
Sin embargo, la revisión más reciente de la norma, GOST R 34.12-2015 , agrega la especificación faltante de la caja S y la define de la siguiente manera. [ 5 ]
Criptoanálisis de GOST
El último criptoanálisis de GOST demuestra que es seguro en teoría. En la práctica, la complejidad de datos y memoria de los mejores ataques publicados ha alcanzado un nivel práctico, mientras que la complejidad temporal incluso del mejor ataque sigue siendo de 2¹⁹² cuando se dispone de 2⁶⁴ datos.
Desde 2007, se han desarrollado varios ataques contra implementaciones GOST de ronda reducida y/o claves débiles . [ 9 ] [ 10 ]
En 2011, varios autores descubrieron fallos más significativos en GOST, logrando atacar por primera vez el GOST completo de 32 rondas con claves arbitrarias. Incluso Nicolas Courtois lo ha calificado como "un cifrado profundamente defectuoso" . [ 1 ] Los ataques iniciales lograron reducir la complejidad temporal de 2 256 a 2 228 a costa de enormes requisitos de memoria, [ 11 ] y pronto se mejoraron hasta una complejidad temporal de 2 178 (a costa de 2 70 de memoria y 2 64 de datos). [ 12 ] [ 13 ]
En diciembre de 2012, Courtois, Gawinecki y Song mejoraron los ataques a GOST calculando solo 2 101 rondas de GOST. [ 14 ] Isobe ya había publicado un ataque de clave única al cifrado GOST completo, [ 15 ] que Dinur, Dunkelman y Shamir mejoraron, alcanzando una complejidad temporal de 2 224 para 2 32 datos y 2 36 memoria, y una complejidad temporal de 2 192 para 2 64 datos. [ 16 ]
Dado que los ataques reducen la fuerza esperada de 2²⁵⁶ (longitud de la clave) a aproximadamente 2¹⁷⁸ , se puede considerar que el cifrado está roto. Sin embargo, este ataque no es factible en la práctica, ya que el número de pruebas a realizar ( 2¹⁷⁸) es inalcanzable.
Tenga en cuenta que para cualquier cifrado de bloques con un tamaño de bloque de n bits, la cantidad máxima de texto plano que se puede cifrar antes de que deba realizarse un cambio de clave es de 2 n/2 bloques, debido a la paradoja del cumpleaños , [ 17 ] y ninguno de los ataques mencionados anteriormente requiere menos de 2 32 datos.
Véase también
Referencias
- 1 2 Courtois, Nicolas T. (9 de mayo de 2011). "Evaluación de seguridad de GOST 28147-89 en vista de la estandarización internacional" . Cryptology ePrint Archive . IACR .
Hasta 2011, los investigadores coincidieron unánimemente en que GOST podría o debería ser muy seguro, lo que se resumió en 2010 con estas palabras: "a pesar de los considerables esfuerzos criptoanalíticos dedicados en los últimos 20 años, GOST todavía no se ha roto". Desafortunadamente, recientemente se descubrió que GOST puede romperse y es un cifrado profundamente defectuoso.
- ↑ V. Dolmatov, ed. (marzo de 2010). GOST 28147-89: Algoritmos de cifrado, descifrado y código de autenticación de mensajes (MAC) . Presentación independiente. doi : 10.17487/RFC5830 . ISSN 2070-1721 . RFC 5830 . Informativo. Actualizado por RFC 8891 .
- ↑ V. Dolmatov, ed. (Marzo de 2016). GOST R 34.12-2015: Cifrado de bloque "Kuznyechik" . Presentación independiente. doi : 10.17487/RFC7801 . ISSN 2070-1721 . RFC 7801 . Informativo.
- ↑ D. Baryshkov (septiembre de 2020). V. Dolmatov (ed.). GOST R 34.12-2015: Cifrado de bloque "Magma" . Presentación independiente. doi : 10.17487/RFC8891 . ISSN 2070-1721 . RFC 8891 . Informativo. Actualizaciones RFC 5830 .
- 1 2 "GOST R 34.12-2015 (solo en ruso)" (PDF) . Archivado del original (PDF) el 24-09-2015 . Recuperado el 28-08-2015 .
- ↑ Fleischmann, Ewan; Gorski, Michael; Hühne, Jan-Hendrik; Lucks, Stefan (2009). "Ataque de recuperación de clave en cifrado de bloques GOST completo con tiempo y memoria cero". Publicado como ISO/IEC JTC . 1 .
- ↑ Saarinen, Markku-Juhani (1998). "Un ataque de clave elegida contra las cajas S secretas de GOST" .
Demostramos que un simple ataque de clave elegida de "caja negra" contra GOST puede recuperar las cajas S secretas con aproximadamente 2^32 cifrados.
- ↑ Schneier, Bruce (1996). Criptografía aplicada : protocolos, algoritmos y código fuente en C (2.ª ed., [Nachdr.] ed.). Nueva York [ua]: Wiley. ISBN 978-0-471-11709-4.
- ↑ Eli Biham; Orr Dunkelman; Nathan Keller (2007). "Ataques deslizantes mejorados" (PDF) .
- ↑ Orhun Kara (2008). "Criptoanálisis reflexivo de algunos cifrados" .
- ↑ Nicolás T. Courtois; Michał Miształ (2011). «Criptoanálisis diferencial de GOST» . IACR .
- ↑ Nicolas T. Courtois (2012). "Un ataque diferencial mejorado contra GOST completo" (PDF) . IACR .
- ↑ Courtois, Nicolas T. (13 de junio de 2011). "Reducción de la complejidad algebraica y criptoanálisis de GOST" (PDF) . Archivo de preimpresiones de criptología . IACR .
- ↑ Nicolas T. Courtois; Jerzy A. Gawinecki; Guangyan Song (2012). "INMUNIDAD CONTRA LA CONTRADICCIÓN Y ATAQUES DE ADIVINAR Y DETERMINAR CONTRA GOST" (PDF) . Versita . Consultado el 25 de agosto de 2014 .
- ↑ Isobe, Takanori (2011). "Un ataque de clave única al cifrado de bloques GOST completo". Cifrado de software rápido . Notas de clase en ciencias de la computación. Vol. 6733. págs. 290–305 . doi : 10.1007/978-3-642-21702-9_17 . ISBN 978-3-642-21701-2.
- ↑ Dinur, Itai; Dunkelman, Orr; Shamir, Adi (2012). "Ataques mejorados contra GOST completo". Cifrado rápido de software . Notas de clase en informática. Vol. 7549. págs. 9–28 . doi : 10.1007/978-3-642-34047-5_2 . ISBN 978-3-642-34046-8.
- ↑ "Borrador del documento permanente ISO/IEC JTC 1/SC 27 n.º 12 (SD12) sobre la evaluación de técnicas criptográficas y longitudes de clave, 4.ª edición" (PDF) . 2016. Archivado del original (PDF) el 5 de septiembre de 2017. Consultado el 5 de septiembre de 2017 .
Lecturas adicionales
- "Biblioteca WebCrypto GOST" . Rudolf Nickolaev, equipo WebCrypto GOST.
- V. Popov; I. Kurepkin; S. Leontiev (enero de 2006). Algoritmos criptográficos adicionales para su uso con los algoritmos GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001 y GOST R 34.11-94 . Grupo de trabajo de redes. doi : 10.17487/RFC4357 . RFC 4357 .Informativo.
- Alex Biryukov y David Wagner (mayo de 2000). Ataques avanzados de deslizamiento (PDF) . Avances en criptología, Actas de EUROCRYPT 2000. Brujas : Springer-Verlag. págs. 589–606 . doi : 10.1007/3-540-45539-6_41 . Consultado el 3 de septiembre de 2007 .
Enlaces externos
- Descripción, textos del estándar, herramientas de cifrado y descifrado GOST en línea
- Entrada de SCAN para GOST
- Una implementación de código abierto del dispositivo de software PKCS#11 con capacidades de los estándares criptográficos GOST rusos.
- https://github.com/gost-engine/engine — Implementación de código abierto de la criptografía GOST rusa para OpenSSL.
- Cifrados de bloques
- Cifrados de bloques rotos
- Cifrados de Feistel
- Normas GOST