Estándar de cifrado nacional.
Estándar de cifrado nacional
S. Panasenko,
&nb sp ; nótese bien sp; & nbsp; & nbsp; sp ; &nb sp ; Fuente: Paz y Seguridad, No. 5, 2003
A pesar de que GOST 28147-89 se adoptó en 1989, hoy en día se utiliza mucho tanto en Rusia como en el mundo en general. En primer lugar, la legislación nacional contribuye a ello. Las organizaciones gubernamentales y una serie de empresas comerciales están obligadas a utilizar únicamente herramientas criptográficas certificadas por FAPSI para proteger la información, y obtener un certificado FAPSI implica que “dichas herramientas criptográficas implementan algoritmos criptográficos declarados por los estándares estatales o industriales de la Federación Rusa. » A pesar de la abolición de la FAPSI este año, los documentos reglamentarios que establecen estos requisitos siguen siendo válidos. En segundo lugar, este algoritmo se desarrolló con un enorme margen de solidez criptográfica y con muy poco daño a la velocidad de cifrado.
El algoritmo GOST 28147-89 es un algoritmo de cifrado simétrico clásico basado en la red Feistel (ver Fig. 1). Este algoritmo cifra la información en bloques de 64 bits (dichos algoritmos se denominan «bloque»). El significado de la red Feistel es que un bloque de información cifrada se divide en dos o más subbloques, parte de los cuales se procesa de acuerdo con una determinada ley, después de lo cual el resultado de este procesamiento se superpone (mediante la operación de suma bit a bit módulo 2 ) en subbloques sin procesar. Luego los subbloques se intercambian, después de lo cual se procesan nuevamente, etc. un cierto número de rondas para cada algoritmo.
Fig. 1. Red Feistel
La principal diferencia entre los algoritmos de cifrado simétrico entre sí radica precisamente en las diferentes funciones para procesar subbloques. Esta función a menudo se denomina «transformación criptográfica principal» porque soporta la carga principal al cifrar información. La principal transformación del algoritmo GOST 28147-89 es bastante simple, lo que garantiza un alto rendimiento del algoritmo; realiza las siguientes operaciones (ver Fig. 2):
Fig. 2. Transformación principal del algoritmo GOST 28147-89
1. Adición de un subbloque con un determinado fragmento de la clave de cifrado módulo 232. Kx es una parte de 32 bits (“subclave”) de una clave de cifrado de 256 bits, que se puede representar como una concatenación de 8 subclaves: K = K0K1K2K3K4K5K6 K7. Dependiendo del número de ronda y del modo de funcionamiento del algoritmo (más sobre ellos a continuación), se selecciona una de las subclaves para esta operación.
2. Reemplazo de mesa. Para realizar esto, el subbloque se divide en 8 fragmentos de 4 bits, cada uno de los cuales pasa por su propia tabla de reemplazo. La tabla de reemplazo contiene, en una secuencia determinada, valores del 0 al 15 (es decir, todas las variantes de los valores de un fragmento de datos de 4 bits); A la entrada de la tabla se le suministra un bloque de datos, cuya representación numérica determina el número del valor de salida. Por ejemplo, el valor 5 se suministra a la entrada de la siguiente tabla: “13 0 11 74 91 10 143 5 122 15 8 6”. El resultado resultante es 9 (ya que 0 se reemplaza por 13, 1 por 0, 2 por 11, etc.).
3. Desplazamiento cíclico bit a bit de datos dentro de un subbloque 11 bits a la izquierda.
El algoritmo GOST 28147-89 tiene 4 modos de funcionamiento:
- Modo de reemplazo simple.
- Modo gamma.
- Modo gamma con retroalimentación.
- Modo para generar accesorios de imitación.
Todos los modos utilizan la misma transformación básica, pero con un número diferente de rondas y de una manera diferente.
El modo de reemplazo simple está destinado al cifrado de claves (existen muchos esquemas para utilizar algoritmos de cifrado simétrico que utilizan varias claves para diferentes propósitos; en estos casos, se requiere el cifrado de unas claves a otras). Este modo realiza 32 rondas de transformación básica. En cada una de las rondas, como se mencionó anteriormente, se utiliza una subclave específica, la cual se selecciona de la siguiente manera:
K((r — 1) % 8) — para las rondas 1 a 24 (r denota el número redondo y % es la operación de calcular el resto de la división), es decir K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, K2, etc.;
K ( (32 – r) % 8) — para las rondas de 25 a 32, es decir. en orden inverso: K7, K6, K5, K4, K3, K2, K1, K0.
Para descifrar información en el modo de reemplazo simple, también se realizan 32 rondas de la transformación principal, pero usando subclaves según un esquema diferente:
- en orden directo en las rondas 1 a 8;
- en orden inverso en rondas posteriores.
Para el cifrado real de información, se utilizan modos gamma y gamma con retroalimentación. En estos modos, la información se cifra mediante la suma bit a bit en módulo 2 de cada bloque de 64 bits de información cifrada con el bloque gamma de cifrado. El cifrado gamma es una secuencia pseudoaleatoria generada utilizando la transformación principal del algoritmo GOST 28147-89 de la siguiente manera (ver Fig. 3):
Fig. 3. Modo gamma
1. Su llenado inicial se escribe en los registros N1 y N2, un valor de 64 bits llamado «mensaje de sincronización».
2. Se cifra el contenido de los registros N1 y N2 (en este caso, mensajes de sincronización) en modo de sustitución simple.
3. El contenido de N1 se suma módulo (232 — 1) con la constante C1 = 224 + 216 + 28 + 24, el resultado de la suma se escribe en el registro N1.
4. El contenido de N2 se suma módulo 232 con la constante C2 = 224 + 216 + 28 + 1, el resultado de la suma se escribe en el registro N2.
5. El contenido de los registros N1 y N2 se genera como un bloque gamma de cifrado de 64 bits (es decir, en este caso, N1 y N2 forman el primer bloque gamma).
6. Si se necesita el siguiente bloque gamma (es decir, es necesario continuar cifrando o descifrando), regrese al paso 2.
Para el descifrado posterior, el cifrado gamma se genera de manera similar y se agrega a la información cifrada. El resultado es información inicial, ya que se sabe que:
Y ? EN ? B=A
para cualquier secuencia de las mismas dimensiones A y B, donde ? es la operación de suma bit a bit módulo 2.
Está claro que para descifrar información es necesario tener la misma clave de cifrado y el mismo valor de el mensaje de sincronización como cuando se cifra. Existen implementaciones del algoritmo GOST 28147-89 en las que el mensaje de sincronización también es un elemento secreto, junto con la clave de cifrado. De hecho, en este caso, podemos suponer que la clave de cifrado aumenta con la longitud del mensaje de sincronización (64 bits), lo que aumenta la solidez del algoritmo.
El modo gamma de retroalimentación se diferencia del modo gamma solo en que antes de regresar al paso 2 (para generar el siguiente bloque gamma), el contenido del bloque de información cifrada, para el cual se utilizó el bloque gamma anterior, se escribe en los registros N1 y N2. .
Utilizando el modo para generar prefijos de imitación, se calculan prefijos de imitación: sumas de verificación criptográficas de información calculadas utilizando una clave de cifrado específica. Los prefijos de imitación generalmente se calculan antes de cifrar la información y se almacenan o envían junto con los datos cifrados para su uso posterior para el monitoreo de integridad. Después de descifrar la información, el prefijo de imitación se calcula nuevamente y se compara con el almacenado; La discrepancia entre valores indica corrupción o modificación intencional de datos durante el almacenamiento o la transmisión, o un error de descifrado.
En el modo de generación de adjuntos de imitación, se realizan las siguientes operaciones:
1. El primer bloque de información de 64 bits para el cual se calcula el prefijo de imitación se escribe en los registros N1 y N2 y se cifra en un modo de reemplazo simple reducido, en el que se realizan 16 rondas de la transformación principal en lugar de 32.
2. El resultado resultante se suma módulo 2 con el siguiente bloque de texto sin formato y se almacena en N1 y N2.
3. Etc. hasta el último bloque de texto sin formato.
El contenido resultante de los registros N1 y N2 o parte de él (según el nivel de resistencia requerido) se utiliza como prefijo de imitación; a menudo, el contenido de 32 bits del registro N1 se considera un prefijo de imitación. .
Al desarrollar el algoritmo GOST 28147-89, los criptógrafos de los servicios especiales nacionales tuvieron en cuenta la seguridad excesiva: todavía no se conocen métodos más efectivos para romper este algoritmo que el método de enumeración exhaustiva de posibles opciones de claves de cifrado. . Y con el moderno desarrollo de la tecnología informática, es imposible realizar una búsqueda completa de 2256 claves (sin contar el mensaje secreto de sincronización) en tiempo real.