Contactos

Un registro de cambios con la retroalimentación lineal C. Base teórica del trabajo. ¿Cuáles son las secuencias generadas por los registros de turnos?

La secuencia de registros de cizallamiento se utilizan tanto en criptografías como en la teoría de la codificación. Su teoría funcionó perfectamente, la transmisión de cifras sobre la base de los registros de cizallamiento era un caballo de trabajo en la criptografía militar larga antes de que aparecieran la electrónica.

Un registro de cambios de retroalimentación (en adelante, RSHSOS) consta de dos partes: Funciones de registro y retroalimentación de turnos. El registro de turnos es una secuencia de bits. El número de bits está determinado. registro de turno de longitudSi la longitud es n bits, entonces se llama el registro registro de desplazamiento N-bit. Siempre que necesite eliminar el bit, todos los bits del registro de desplazamiento cambian a la derecha a 1 posición. El nuevo bit izquierdo extremo es la función de todos los demás bits del registro. En la salida del registro de cizallamiento resulta que uno, generalmente el significado más joven, bit. Un período de registro de turno Se llama la longitud de la secuencia resultante antes de que comenzara la repetición.

Figura 1. Registro de cambios de retroalimentación

Los registros de turnos encontraron muy rápidamente el uso de cifras de transmisión, ya que se implementan fácilmente utilizando equipos digitales. En 1965, Ernst Selmer (Ernst Selmer), el principal criptografía del gobierno noruego, desarrolló la teoría de la secuencia de los registros de cizallamiento. Solomon Golomb (Salomón Golomb), NSA Mathematics, escribió un libro que estableció algunos de sus resultados y los resultados del Selmer. La vista más simple del Registro del cambio de comentarios es un registro de cambios de retroalimentación lineal (Registro de cambios de retroalimentación lineal, luego LFSR o RGSSLOS). La retroalimentación de dichos registros es simplemente XOR (adición de dos módulo) de algunos de los bits del registro, la lista de estos bits se llama secuencia de grifo. A veces, un registro de este tipo se llama configuración de Fibbonaci. Debido a la simplicidad de la secuencia de retroalimentación, se puede usar una teoría matemática bastante desarrollada para el análisis de RSSLOS. Después de analizar las secuencias de salida recibidas, puede asegurarse de que estas secuencias sean bastante aleatorias para ser seguras. RSSSLOS se usa con más frecuencia que otros registros de cizallamiento en la criptografía.


Figura 2. RSSSKSLOS FIBBONACHES

En el caso general, los RGSLOS N bit pueden estar en uno de los estados internos N \u003d 2 N -1. Esto significa que en teoría, un registro de este tipo puede generar una secuencia pseudo-aleatoria con un período t \u003d 2 n -1 bits. (El número de estados internos y el período son n \u003d t max \u003d 2 n-2, porque el llenado del RSSHSLOS CERO resultará en el registro de turnos producirá una secuencia infinita de ceros, que es absolutamente inútil). Solo con ciertas secuencias rechazadas de los RSSLOS serán cíclicamente a través de todos los estados internos de 2 N -1, tales RSSSLOS son RSSSKSLOS con un período máximo. El resultado resultante se llama Secuencia m.

Ejemplo . La siguiente figura muestra un RGSLOS de 4 bits con un grifo de los bits de primera y cuarta. Si se inicializa por el valor 1111, luego antes de la repetición, el registro tomará los siguientes estados internos:

Tracto de cambio (estado interno)

Estado del registro

Bit de salida

Significado inicial

15 (volver a un estado inicial)

16 (estados repetidos)

La secuencia de salida será una cadena de bits significativos más jóvenes: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 Con un período T \u003d 15, el número total de estados internos posibles (excepto cero), n \u003d 2 4 -1 \u003d 16-1 \u003d 15 \u003d T MAX, por lo tanto, la secuencia de salida es la secuencia M.

Para que un RSSKSLOS específico tenga un período máximo, un polinomio, formado a partir de la secuencia del grifo y la constante 1, debe ser primitiva por módulo 2. El polinomio se representa como la cantidad de grados, por ejemplo, un polinomio de grado N parece como esto:

uNA. nORTE. x n + a n-1. x n-1 + ... + a 1 x 1 + a 0 x 0 \u003d a nORTE. x n + a n-1. x n-1 + ... + a 1 x + A. 0 donde un. i. \u003d (0.1) para i \u003d 1 ... n, y x i - Indica la descarga.

El grado de polinomio es la duración del registro de turnos. El grado polinomial primitivo N es un polinomio irreducible que es un divisor X 2N? 1 +1, pero no es un divisor X D +1 para todos D, que son divisores 2 N -1. La teoría matemática correspondiente se puede encontrar en.

En general, no hay una forma sencilla de generar polinomios primitivos de un grado dado por módulo 2. La forma más fácil de elegir un polinomio para aleatoriamente y verificar si es primitivo. No es fácil y algo así como verificar si es un simple número elegido al azar, pero muchos paquetes de programas matemáticos pueden resolver esa tarea.

Algunos, pero, por supuesto, no todos, los polinomios de varios grados, el módulo primitivo 2, se dan más adelante. Por ejemplo, escribiendo

(32, 7, 5, 3, 2, 1, 0) significa que el siguiente polinomio es primitivo para el módulo 2: x 32 + x 7 + x 5 + x 3 + x 2 + x 1 + x 2 + x 1.

Esto se puede resumir fácilmente para los RSSLOS con el período máximo. El primer número es la longitud de los RSSSLOS. El último número es siempre igual a 0, y se puede omitir. Todos los números, con la excepción de 0, configure la secuencia de eliminación que cuenta desde el borde izquierdo del registro de turnos. Es decir, los miembros del polinomio con un grado menor corresponden a las posiciones más cercanas al borde derecho del registro.

Ejemplo continuo, la grabación (32, 7, 5, 3, 2, 1, 0) significa que el nuevo bit de un registro de cambio de 32 bits tiene un bit nuevo se genera usando XOR treinta segundos, séptimo, quinto, tercero, segundo y Primeros bits. Los RSHSLOS resultantes tendrán una longitud máxima, pasando cíclicamente a la repetición después de 2 32 -1 valores.


Figura 4. RGSLOS de 32 bits con longitud máxima

Considere el código del programa RSSLOS, en el que la secuencia del grifo se caracteriza por un polinomio (32, 7, 5, 3, 2, 1, 0). En el idioma c se ve de la siguiente manera:

sHIFTREGISTETE DE LARGO NO SIIGNADO \u003d 1;

/ * Todos excepto 0. * /

ShifTregister \u003d ((ShifTregister \u003e\u003e 31)

^ (ShifTregister \u003e\u003e 6)

^ (ShifTregister \u003e\u003e 4)

^ (ShifTregister \u003e\u003e 2)

^ (ShifTregister \u003e\u003e 1)

^ ShifTregister))

| (ShifTregister \u003e\u003e 1);

devolver ShifTregister y 0x00000001;)

Si el registro de cambios es más largo que una palabra de computadora, el código es complicado, pero no mucho. El Apéndice B proporciona una tabla de algunos polinomios primitivos en el Módulo 2, lo usará en el futuro para identificar algunas propiedades de estos polinomios, así como en la implementación del software para establecer la secuencia de TOP.

Cabe señalar que todos los elementos de la tabla son un número impar de coeficientes. Dicha mesa larga se da para un trabajo adicional con el RSSSLO, ya que los RSSLOS se utilizan a menudo para la criptografía con cifras de transmisión y en los generadores de números pseudo-aleatorios. En nuestro caso, puede usar polinomios con un grado anterior de no más de siete.

Si p (x) es primitivo, entonces primitivo y x N p (1 / x), por lo que cada elemento de la tabla realmente define dos polinomios primitivos. Por ejemplo, si (A, B, 0) es primitivo, luego primitivo y (A, A-B, 0). Si el primitivo (A, B, C, D, 0) es primitivo y (a, A-D, A-C, A-B, 0). Matemáticamente:

si es primitivo, x A + x B +1, entonces primitivo y x A + X A-B +1,

si es primitivo, x A + x B + X C + X D +1, luego primitivo y X A + X A-D + X A-C + X A-B +1. Más rápido se implementa programáticamente por tres metros primitivos, ya que para generar un bit nuevo, es necesario realizar solo xor solo dos bits del registro de turnos (no se tiene en cuenta el término cero, es decir, x 0 \u003d 1, vea el ejemplo anterior) . De hecho, todos los polinomios de retroalimentación que se muestran en la tabla están enrarecidos, es decir, tienen algunos coeficientes. Las recompensas siempre representan una fuente de debilidad, que a veces es suficiente para abrir el algoritmo. Para los algoritmos criptográficos, es mucho mejor usar polinomios primitivos densos, aquellos cuyos muchos coeficientes. Aplicando polinomios densos, especialmente como parte de la clave, puede usar rsslos significativamente más cortos.

Generar polinomios primitivos densos en el módulo 2 no es fácil. En general, para generar polinomios primitivos de grado K, es necesario conocer la descomposición en los multiplicadores del número 2 K -1.

En sí mismo, los RSSLOS son buenos generadores de secuencias pseudoaleatorias, pero tienen algunas propiedades no aleatorias no aleatorias (deterministas) no deseadas. Los bits en serie son lineales, lo que los hace inútiles para el cifrado. Para Rslos Lone N Interno Estado interno son los bits de salida N anteriores del generador. Incluso si el esquema de retroalimentación se almacena en secreto, se puede determinar mediante bits de salida 2N del generador utilizando un algoritmo de Berlekamp-Massey altamente eficiente.

Además, los grandes números aleatorios generados con los bits de esta secuencia que se ejecutan en una fila están fuertemente correlacionados y, para que algunos tipos de aplicaciones no se aleatorán. A pesar de esto, los RSSLLOS se utilizan a menudo para crear algoritmos de cifrado como componentes de los sistemas y algoritmos de cifrado.

La vista más simple de la función de retroalimentación es una función lineal, por ejemplo, la suma del módulo 2 del contenido de ciertas descargas. Dicho registro se llama un registro de cambios de retroalimentación lineal (Registro de cambios de retroalimentación lineal, LFSR abreviado). En el caso general, la Fórmula definida la función de retroalimentación lineal. Aquí c k.\u003d 1, si k.El sonido se usa en la función de retroalimentación, y c k.\u003d 0 de lo contrario. El símbolo Å denota la adición de módulo 2 (excluyendo o).

Por ejemplo, considere el LFSR con la función de retroalimentación (consulte la Figura).

Si el estado inicial del registro es 1111, entonces, en los relojes posteriores, tomará los siguientes estados de estado: 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011, 1001, 0100, 0010, 0001, 1000, 1100, 1110, 1111, ...

La secuencia de salida se forma a partir de la descarga de registro más joven (derecha extrema). Se verá así: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1. Se puede ver que la secuencia de bits generada está determinada totalmente por el estado inicial de la función Registro y Retroalimentación. Dado que el número de todo tipo de estados de registro es, por supuesto (es igual a 2 L.), antes o temprano, la secuencia de teclas comenzará a repetir. La longitud máxima de la parte sin inteligencia de la secuencia de claves se llama su período. T.. El período depende de la función de retroalimentación. El período máximo posible es igual. T. Max \u003d 2. L.-1 (el registro toma todos los estados posibles, excepto 0000 ... 0). La secuencia de salida de LFSR que posee el período máximo se llama Secuencia m.

Para averiguar las condiciones bajo las cuales el LFSR tendrá un período máximo, las funciones de retroalimentación están alineadas con un polinomio característico. Por lo tanto, el registro que se muestra arriba como ejemplo corresponde al polinomio. El análisis teórico muestra que el LFSR tendrá un período máximo, y solo si la policía pag.(x.) es un primitivo. A continuación se presentan algunos polinomios primitivos recomendados para su uso en la práctica. La tabla muestra el grado de variable. x.en el registro del polinomio. Por ejemplo, la grabación (31, 3) corresponde al polinomio.

pag.(x.) pag.(x.) pag.(x.)
(39, 16, 23, 35) (38, 5, 6, 27) (32, 2, 7, 16)
(30, 6, 4, 1) (31, 6) (31, 7)
(31, 13) (31, 25, 23, 8) (33, 13)
(35, 2) (47, 5) (48, 9, 7, 4)
(47, 11, 24, 32) (46, 18, 31, 40) (53, 6, 2, 1)
(55, 24) (57, 7) (58, 19)
(59, 7, 4, 2) (41, 27, 31, 32) (61, 5, 2, 1)
(42, 30, 31, 34) (51, 15, 24, 46) (50, 17, 31, 34)


Inicialmente, LFSRS se diseñó para la implementación de hardware en forma de un conjunto de circuitos digitales. Las implementaciones de software LFSR generalmente están perdiendo la velocidad de hardware. Para aumentar la velocidad, el estado del registro es rentable para almacenar en forma de un todo L.-Roro-número, cuyos bits individuales corresponden a la descarga binaria del registro. Luego, para acceder a bits individuales, se utilizan operaciones bonéticas (cambio, enmascaramiento, etc.).

Registro de cizallamiento de comentarios ( FSR. ) consta de dos partes: registro de turnos y funciones de retroalimentación .

ERROR: La fuente de referencia no se encuentra) es una secuencia de bits. Cuando necesita quitar el bit, todos los bits del registro de desplazamiento cambian a la posición derecha a 1. El nuevo bit izquierdo extremo es el valor de la función de retroalimentación del resto de los bits del registro. Período un registro de turnos se llama la longitud de la secuencia resultante antes de que comience la repetición.

El tipo de corte de cizallamiento más simple con la retroalimentación es registro lineal de cizalla con comentarios (LFSR.Izquierda. Realimentación Cambiar. Registrarse) (ERROR: Fuente de referencia no encontrada). La retroalimentación es un bits de bits SIMXORECT egestia, se llama la lista de estos bits. hasta la secuencia.

nORTE.-Bitfs se puede ubicar en uno de 2 nORTE. -1 estados internos. Esto significa que teóricamente, un registro de este tipo puede generar una secuencia pseudo-aleatoria con un período 2 nORTE. -1 bits. El número de estados internos y el período es igual, porque el registro de llenado de ceros llevará al hecho de que producirá una secuencia infinita de ceros, que es absolutamente inútil. Solo con ciertos secuestros rechazados, pase cíclicamente a través de todos 2 nORTE. -1 estados internos. Suchlfsrote LFSR. Con un período máximo.

Para el período máximo de LFSRell específico, el polinomio formado a partir de la secuencia del grifo y constante 1 debe ser primitivo por módulo 2 .

El cálculo de la primitividad del polinomio es una tarea matemática bastante complicada. Por lo tanto, hay tablas preparadas, que proporcionan los números de las secuencias de toque que aseguran el período máximo del generador. Por ejemplo, para un registro de cambio de 32 bits, puede encontrar tal entrada: (32,7,5,3,2,1,0) . Esto significa que para generar un bit nuevo, es necesario usar una función Xorprix un treinta y segundo, séptimo, quinto, tercero, segundo y primeros bits.

El código para un LFSR de este tipo es el idioma C ++ será:

// cualquier valor además de cero

ShifTregister \u003d ((ShifTregister \u003e\u003e 31)

^ (ShifTregister \u003e\u003e 6)

^ (ShifTregister \u003e\u003e 4)

^ (ShifTregister \u003e\u003e 2)

^ (ShifTregister \u003e\u003e 1)

^ ShifTregister)

& 0x00000001)<<31)

| (ShifTregister \u003e\u003e 1);

devolver ShifTregister y 0x00000001;

Implementaciones de software LFSRD son lentas y rápidas, si están escritos en un ensamblador, y no en S. una solución es usar paralelo 16-TYLFSR (o 32, dependiendo de la longitud de la palabra en la arquitectura de una computadora en particular). En tal esquema, se usa una matriz de palabras, cuyo tamaño es igual al LonglFSR, y cada yit palabras de la matriz se refieren a su propia FSR. Siempre que se usen los mismos números, puede dar una ganancia de rendimiento notable.

DE los comentarios de los jamón también se pueden modificar. Al mismo tiempo, el generador no tendrá una mayor resistencia críptica, pero será más fácil implementar software. En lugar de usar para generar un nuevo bit, un nuevo extrema de los bits de la secuencia de la grifo, los trozos de la secuencia de la grifo con la salida del generador y reemplazándolo con el resultado de esta acción, entonces el resultado del generador se convierte en un nuevo bit extremo izquierdo (ERROR: Fuente de referencia no encontrada).

Esta modificación se llama la configuración de galoah. En lenguaje, se ve así:

sHIFTREGISTETE DE LARGO NO SIIGNADO \u003d 1;

semilla VOID_LFSR (semilla larga sin firmar)

ShifTregister \u003d semilla;

iNT GALUA_LFSR (VOID)

si (Shiftregister & 0x00000001) (

ShifTregister \u003d (ShifTregister ^ máscara \u003e\u003e 1) | 0x8000000;

ShifTregister \u003e\u003e \u003d 1;

Las ganancias consisten en que todos los Xores están llenos de una operación. Este esquema también puede ser paralelo.

Por sí mismos, los LF son buenos en secuencias pseudo-aleatorias, pero tienen algunas propiedades no aleatorias no deseables. Los bits en serie son lineales, lo que los hace inútiles para el cifrado. Forlfsrdlin nORTE.la condición interna es la anterior. nORTE.generador de bits de salida. Incluso si el esquema de retroalimentación se almacena en secreto, puede ser determinado por 2 nORTE.bits de salida del generador con algoritmos especiales. Además, los números aleatorios grandes generados con los bits de esta secuencia que se ejecutan en una fila están fuertemente correlacionados y, para algunos tipos de aplicaciones, no son aleatorios. A pesar de esto, los LFSR se utilizan para crear algoritmos de cifrado. Para esto, se usan severallfsr, generalmente con diferentes longitudes y números de secuencias de toque. La clave es el estado inicial de los registros. Cada vez que se necesita un bit nuevo, todos los registros se cambian. Esta operación se llama totalmente. Las bits de salida son una función, preferiblemente no lineal, algunos bitslfsr. Esta característica se llama combinatorio, y el generador en su conjunto - generador de combinación. Muchos de estos generadores están a salvo hasta ahora.

Registro de cambios de retroalimentación lineal (RSLO, inglés. registro de cambios de retroalimentación lineal, LFSR): el registro de cambio de la palabra de bits, que tiene el valor de la broca de entrada (móvil) igual a la función de toro lineal en los valores de los bits restantes del registro antes del turno. Se puede organizar software y hardware. Se utiliza para generar las secuencias de bits pseudo-aleatorias, que encuentran uso, en particular, en la criptografía.

Descripción

El control de registro en implementaciones de hardware se lleva a cabo suministrando un pulso de cambio (de lo contrario llamado takhov o sincrópulo) En todas las células. La gestión del registro en las implementaciones de software se realiza por el ciclo. En cada iteración del ciclo, se calcula la función de retroalimentación y se realiza el cambio de bits en la palabra.

Principio de funcionamiento

Complejidad lineal

Independencia de correlación

Tratando de obtener la alta complejidad lineal de la secuencia generada, los criptografos no combinan linealmente las salidas de varios registros de turnos. En este caso, una o más secuencias de salida (o incluso las salidas de RSLOS individuales) se pueden asociar con un flujo total y se abre con Cryptanalitics. Hacking sobre la base de tales vulnerabilidades se llaman abertura de correlación. La idea principal de este pirateo es detectar cierta correlación entre la derivación del generador y los hallazgos de sus componentes. Luego, observando la secuencia de salida, puede obtener información sobre estas conclusiones intermedias y, por lo tanto, haga piratear al generador. Thomas Sgerentaler mostró que es posible definir con precisión la independencia de correlación, y que existe un compromiso entre la independencia de correlación y la complejidad lineal.

Implementación de software

Las implementaciones de software de los RSLOS son lo suficientemente lenta y funcionan más rápido si están escritos en ensamblador. Una de las soluciones es el uso paralelo de 16 rslos (o 32s, dependiendo de la longitud de la palabra en la arquitectura de la computadora). En tal esquema, se usa una matriz de palabras, cuyo tamaño es igual a la longitud del registro de turnos, y cada lote de palabras se refiere a su RSLO. Dado que se utilizan el mismo número de secuencias de toque, puede dar una ganancia notable en el rendimiento del generador.

Configuración de Fibonacci

Considere un registro de cambio de 32 bits. Hay una secuencia de grifo para ello. (32, 31, 30, 28, 26, 1) (\\ DisplayStyle \\ Izquierda (32, \\; 31, \\; 30, \\; 28, \\; 26, \\; 1 \\ derecha)). Esto significa que para generar un bit nuevo es necesario utilizar la operación XOR para resumir los bits de 32, 30, 29, 27, 25 y 0. Los RSLOS resultantes tienen el período máximo. 2 32 - 1 (\\ DisplayStyle 2 ^ (32) -1). El código para un registro de este tipo en el idioma SI es el siguiente:

iNT LFSR_FIBONACCI (VAIDO) (LONG SSIGNET STUD ST \u003d 0x00000001; S \u003d ((((S \u003e\u003e 31) ^ (s \u003e\u003e 30) ^ (s \u003e\u003e 27) ^ (s \u003e\u003e 27) 25) ^ s) y 0x00000001)<< 31 ) | (S >\u003e 1); Retorno de S & 0x00000001; )

Configuración de Galua

Este generador no tiene mayor resistencia críptica, pero da una ganancia en el rendimiento: todas las operaciones XOR se pueden realizar para una acción por paralelización, y no secuencialmente una tras otra, como en la configuración de Fibonacci. Este esquema también recibirá una ganancia cuando esté equipada.

El código para la longitud de la longitud de la longitud de 32 bits en el idioma SI es el siguiente:

int lfsr_galois (vacío) (estadística sin firmar s \u003d 0x00000001; if (s & 0x0000000101) (s \u003d (s ^ 0x80000057 \u003e\u003e 1) | 0x80000000; retorno 1;) else (s \u003e\u003e \u003d 1; devolver 0;))

Vale la pena señalar que el ciclo de un número fijo de llamadas, la función LFSR_GALOIS en la configuración de GALOA está programada durante aproximadamente 2 veces más rápido que la función LFSR_FIBONACI en la configuración de Fibonacci (compilador de MS VS 2010 en Intel Core I5).

Un ejemplo de una secuencia generada.

Configuración de Fibonacci

Deja que los rslos definen el polinomio característico. x 3 + x + 1 (\\ DisplayStyle X ^ (3) + x + 1). Esto significa que los bits de la descarga serán el 2º y 0, y la unidad en la fórmula de los medios polinomiosos significa que se ingresa el 0º bit. La función de comentarios tiene una vista S j \u003d s j - 1 ⊕ s j - 3 (\\ DisplayStyle S_ (J) \u003d S_ (J-1) \\ Oplus S_ (J-3)). Supongamos que el estado inicial del registro de turnos fue una secuencia. Se muestran más registros en la tabla a continuación:

Número de paso condición Bit generado
0 [0, 0, 1] (\\ DisplayStyle \\ Izquierda) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\\ DisplayStyle \\ Izquierda) 1

Dado que el estado interno en el séptimo paso devuelto al original, entonces, a partir del siguiente paso, habrá una repetición de bits. Es decir, la secuencia generada es la siguiente: [1, 0, 0, 1, 1, 1, 0, 1. . . ] (\\ DisplayStyle \\ Izquierda) (El orden de los bits en la secuencia corresponde al orden de su generación de RSLOS). Por lo tanto, el período de secuencia es de 7, es decir, el valor máximo posible, que ocurrió debido a la primitividad del polinomio específico.

Configuración de Galua

Tomar el mismo polinomio característico, que es C 3 \u003d C 1 \u003d 1 (\\ DisplayStyle C_ (3) \u003d C_ (1) \u003d 1), C 2 \u003d 0 (\\ DisplayStyle C_ (2) \u003d 0). En el bit de salida hay solo 1er bits. El estado inicial es el mismo. Registros adicionales:

Número de paso condición Bit generado
0 [0, 0, 1] (\\ DisplayStyle \\ Izquierda) -
1 [1, 0, 0] (\\ DisplayStyle \\ Izquierda) 0
2 [0, 1, 1] (\\ DisplayStyle \\ Izquierda) 1
3 [1, 0, 1] (\\ DisplayStyle \\ Izquierda) 1
4 [1, 1, 1] (\\ DisplayStyle \\ Izquierda) 1
5 [1, 1, 0] (\\ DisplayStyle \\ Izquierda) 0
6 [0, 1, 0] (\\ DisplayStyle \\ Izquierda) 0
7 [0, 0, 1] (\\ DisplayStyle \\ Izquierda) 1

El estado interno del registro en el séptimo paso devuelto al original, por lo tanto, su período también es 7. A diferencia de la configuración de Fibonacci, los registros internos del registro resultó ser la otra, pero la secuencia generada simplemente se cambia por 4 Relojes: [0, 1, 1, 0, 0, 0, 0, 1, 1 ,. . . ] (\\ DisplayStyle \\ Izquierda) (El orden de los bits en la secuencia corresponde al orden de su generación de RSLOS).

Generación de polinomios primitivos.

Bits N (\\ mostrarstyle n) Polinomial primitivo Período, 2 N - 1 (\\ DisplayStyle 2 ^ (n) -1) Número de polinomios primitivos.
2 x 2 + x + 1 (\\ DisplayStyle X ^ (2) + x + 1) 3 1
3 x 3 + x 2 + 1 (\\ DisplayStyle X ^ (3) + x ^ (2) +1) 7 2
4 x 4 + x 3 + 1 (\\ DisplayStyle X ^ (4) + x ^ (3) +1) 15 2
5 x 5 + x 3 + 1 (\\ DisplayStyle X ^ (5) + x ^ (3) +1) 31 6
6 x 6 + x 5 + 1 (\\ DisplayStyle X ^ (6) + x ^ (5) +1) 63 6
7 x 7 + x 6 + 1 (\\ DisplayStyle X ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\\ DisplayStyle X ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 x 9 + x 5 + 1 (\\ DisplayStyle X ^ (9) + x ^ (5) +1) 511 48
10 x 10 + x 7 + 1 (\\ DisplayStyle X ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\\ DisplayStyle X ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\\ DisplayStyle X ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\\ DisplayStyle X ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\\ DisplayStyle x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 x 15 + x 14 + 1 (\\ DisplayStyle X ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\\ DisplayStyle x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 x 17 + x 14 + 1 (\\ DisplayStyle X ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\\ DisplayStyle X ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\\ DisplayStyle X ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Ventajas y desventajas

Beneficios

  • alta velocidad de algoritmos criptográficos creados sobre la base de RSLOS (por ejemplo, cifras de transmisión);
  • el uso de solo el simple bit de operaciones de bits y multiplicación, apenas implementado en casi todos los dispositivos informáticos;
  • buenas propiedades criptográficas (los rslos pueden generar una gran secuencia con buenas propiedades estadísticas);
  • debido a su estructura, los rslos se analizan fácilmente utilizando métodos algebraicos.

desventajas

Formas de mejorar la criptopitación de secuencias generadas.

Generadores con múltiples registros de turnos.

El generador de este tipo consiste en varios registros de turnos con retroalimentación lineal que generan bits. x 1, i, x 2, i, ..., x m, i (\\ mostrarstyle x_ (1, i), \\; x_ (2, i), \\; \\ dots, \\; x_ (m, i)) respectivamente. A continuación, los bits generados se convierten por alguna función booleana. f (x 1, i, x 2, i, ..., xm, i) (\\ mostrarstyle f (x_ (1, i), \\; x_ (2, i), \\; \\ dots, \\; x_ ( m, i))). Cabe señalar que los generadores de este tipo de registros. L i (\\ mostrarstyle l_ (i)), i \u003d 1, 2, ..., M (\\ DisplayStyle I \u003d 1, \\; 2, \\; \\ POTS, \\; M), Mutuamente simple.

El período de este generador es igual. T \u003d (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 LM - 1) ≲ 2 L (\\ DisplayStyle T \u003d (2 ^ (L_ (1)) - 1) \\ CDOT (2 ^ ( L_ (2)) - 1) \\ CDOTS (2 ^ (L_ (M)) - 1) \\ LessSIX 2 ^ (L))dónde L \u003d Σ i \u003d 1 m L i (\\ DisplayStyle L \u003d \\ Sum \\ Límites _ (i \u003d 1) ^ (m) L_ (i)) - Número total de células. En consecuencia, el uso de varios RSLO aumenta el período de la secuencia generada en comparación con un registro, lo que aumenta la criptopsidad del generador. También aumenta la complejidad lineal o la longitud del registro más corto correspondiente a este generador. Tal registro es con la ayuda del algoritmo Berlekmpa - Massey para la secuencia generada. En el mejor de los casos, su longitud es proporcional a un período de secuencia generada.

Generadores con transformaciones no lineales.

El diagrama estructural de dicho generador no es diferente del diagrama del generador anterior. La principal diferencia es que el dispositivo de conversión se establece en la función de leche no lineal f (x 1, x 2, ..., x m) (\\ DisplayStyle F (x_ (1), x_ (2), \\ puntos, x_ (m))). Como tal función, se toma, por ejemplo, un Zhegalkyne polinomial (de acuerdo con el teorema Zhegalkin, cada función booleana solo puede estar representada por el polinomio Zhegalkin).

El generador no lineal también se puede implementar en el registro de cizallamiento con retroalimentación no lineal.. Él puede dar 2 2 L - 1 - L (\\ DisplayStyle 2 ^ (2 ^ (L-1) -L)) Variantes de las secuencias del período máximo, que es más que RSLOS.

La criptopost de este generador aumenta debido a la no linealidad de la función utilizada. La determinación del estado de los registros en la secuencia generada de bits es una tarea matemática compleja, ya que no se conoce al algoritmo que restaura los estados iniciales.

Este método se utiliza, por ejemplo, en generador hepfa Y un generador de Hethf generalizado, sin embargo, tales generadores pueden ser pirateados por la abertura de correlación.

Generadores con diferentes tacto para registros de turnos.

Generador "Stop-Go"

Generador "Stop-Go" (Ing. Detención y go, ambos-Piper) utiliza el retiro del RSLOS-1 para controlar la frecuencia de reloj RSLO-2, de modo que el RSLOS-2 cambia su estado en algún momento, solo si la salida de El RSLOS-1 en la época del tiempo fue la misma unidad. Este esquema no se resistió antes de la abertura de la correlación.

Para aumentar la criptopitud se propuso. generador alterno "STOP-WALKED". Utiliza tres registros de turnos de varias longitudes. Aquí, el RSLOS-1 administra la frecuencia del reloj de los registros del segundo y tercer número, es decir, el RSLOS-2 cambia su estado cuando la salida del RSLOS-1 es igual a uno, y el RSLOS-3, cuando la salida de El RSLOS-1 es cero. La salida del generador es el funcionamiento de la adición del módulo Dos salidas de los RSLOS-2 y RSLOS-3. Este generador tiene un largo tiempo y una gran complejidad lineal. Hay un método para la abertura de correlación del RSLOS-1, pero esto no debilita en gran medida las propiedades criptográficas del generador.

El complicado esquema de reloj se utiliza en generador bilateral "Parada-caminó"que utiliza 2 instrucciones de cambio de la misma longitud. Si la salida del RSLOS-1 en algún momento en el tiempo T I - 1 (\\ DisplayStyle T_ (I-1)) - Unidad, entonces el RSLOS-2 no está registrado en la época del tiempo T i (\\ mostrarstyle t_ (i)). Si la salida del RSLOS-2 en el momento T I - 1 (\\ DisplayStyle T_ (I-1)) igual a cero, y en la hora del tiempo T I - 2 (\\ DisplayStyle T_ (I-2)) - Unidad, y si este registro está registrado en la época del tiempo. T i (\\ mostrarstyle t_ (i)), Al mismo tiempo, el RSLOS-1 no está registrado. La complejidad lineal de este esquema es aproximadamente igual al período de la secuencia generada.

Generador de auto-absorción

Generador de múltiples velocidades con trabajo interno.

Este generador utiliza dos registros de turnos RSLOS-1 y RSLO-2. Frecuencia de reloj RCLLO-2 en D (\\ DisplayStyle D) Una vez más que los RSLOS-1. Ciertos bits de estos registros se multiplican entre sí y operan. Los resultados de las multiplicaciones se resumen por la operación XOR, y se obtiene la secuencia de salida. Este generador tiene una complejidad lineal alta y tiene buenas propiedades estadísticas. Sin embargo, su estado puede ser determinado por la secuencia de salida de longitud. L 1 + L 2 + Log 2 \u2061 D (\\ DisplayStyle L_ (1) + L_ (2) + \\ LOG _ (2) (D))dónde L 1 (\\ DisplayStyle L_ (1)) y L 2 (\\ DisplayStyle L_ (2)) - las longitudes de los RSLOS-1 y RSLOS-2, respectivamente, y D (\\ DisplayStyle D) - La proporción de sus frecuencias de reloj.

Cascade de Hallmanna

Este esquema es una versión mejorada del generador "Detener-envío". Consiste en la secuencia PCLOS, el reloj de cada uno de los cuales está gestionado por los RSLOS anteriores. Si la salida del RSLOS-1 en el momento T i (\\ mostrarstyle t_ (i)) es 1, entonces el RSLOS-2 está registrado. Si la salida del RSLOS-2 en la época del tiempo T i (\\ mostrarstyle t_ (i)) es 1, entonces RSLOS-3 está registrado, y así sucesivamente. La salida de los últimos RSLOS es la salida del generador. Si la longitud de todos los rlos es la misma e igual. L (\\ mostrarstyle l)Luego el período del sistema de M (\\ DisplayStyle M) Rslos es igual (2 L - 1) M (\\ DisplayStyle (2 ^ (L) -1) ^ (M))y complejidad lineal - L (S) \u003d L (2 L - 1) M - 1 (\\ DisplayStyle L (S) \u003d L (2 ^ (L) -1) ^ (M-1)) .

Esta idea es simple y se puede utilizar para generar secuencias con enormes períodos, grandes dificultades lineales y buenas propiedades estadísticas. Pero, desafortunadamente, son sensibles a la apertura, llamados bloqueado (Ing. Bloqueo) cuando

Las secuencias de registros de cizallamiento se utilizan tanto en la criptografía como en la teoría de la codificación. Su teoría está perfectamente resuelta, transmitir cifrados sobre la base de registros de cizallamiento fueron un caballo de batalla de criptografía militar de mucho tiempo antes de la aparición de la electrónica.

Un registro de cambios de comentarios consta de dos partes: una función de registro de cambios y retroalimentación (Figura 1.2.1). El registro de turnos es una secuencia de bits. (El número de bits se determina por la longitud del registro de desplazamiento. Si la longitud es n bits, el registro se llama un registro de desplazamiento N-bit.) Siempre que necesite eliminar el bit, todos los bits del cambio de registro de turnos cambian a el derecho a 1 posición. El nuevo bit izquierdo extremo es la función de todos los demás bits del registro. En la salida del registro de cizallamiento resulta que uno, generalmente el significado más joven, bit. El período del registro de turnos se llama la longitud de la secuencia obtenida antes de que comience a repetir.

Higo. 1.2.1.

A los criptografos les gustó transmitir cifras basadas en registros de cizallamiento: se implementan fácilmente utilizando equipos digitales. Solo estoy ligeramente rasgado en la teoría matemática. En 1965, Ernst Selmer (Ernst Selmer), el criptografía principal del gobierno noruego, desarrolló la teoría de la secuencia de registros de cizallamiento. Solomon Golomb (Salomón Golomb), NSA Mathematics, escribió un libro que estableció algunos de sus resultados y los resultados del Selmer.

El tipo de cambio de turno más simple con la retroalimentación es un registro de retroalimentación lineal (Registro de cambios de retroalimentación lineal o LFSR) (Figura 1.2.2). La retroalimentación es simplemente XOR algunos de los bits de bits, la lista de estos bits se llama una secuencia de toque. A veces, un registro de este tipo se llama configuración de Fibbonaci. Debido a la simplicidad de la secuencia de retroalimentación para el análisis de LFSR, puede usar una teoría matemática bastante desarrollada. Los criptógrafos les encanta analizar las secuencias, convenciéndose de que estas secuencias son bastante aleatorias para ser seguras. LFSR se usa más a menudo en registros criptográficos.


Higo. 1.2.2.

En la Fig. 1.2.3 muestra un LFSR de 4 bits con un grifo de los primeros y cuartos bits. Si se inicializa por el valor 1111, luego antes de la repetición, el registro tomará los siguientes estados internos:

Higo. 1.2.3. cuatro

La secuencia de salida será una cadena de bits menores significativos:

1 1 1 1 0 1 0 1 1 0 0 1 0 0 0....

n-BIT LFSR puede estar en uno de los estados internos 2N-1. Esto significa que, teóricamente, un registro de este tipo puede generar una secuencia pseudo-aleatoria con un período de 2n-1 bits. (El número de estados internos y el período es 2N-1, porque el llenado de LFSR Zeros dará como resultado un registro de cambios para producir una secuencia infinita de ceros, que es absolutamente inútil). Solo con ciertas secuencias LFSR diversificadas serán cíclicamente a través de Todos los estados internos 2N-1. Tales LFSR son LFSR con el período máximo. El resultado resultante se llama la secuencia M.

Para que el LFSR específico tenga un período máximo, el polinomio, formado a partir de la secuencia del grifo y la constante 1, debe ser primitiva por módulo 2. El grado de polinomio es una longitud de registro de cambios. El grado polinomial primitivo N es un polinomio irreducible, que es un divisor, pero no es un distribuidor XD + 1 para todos D, que son divisores 2N-1.

En general, no hay una forma sencilla de generar polinomios primitivos de un grado dado por módulo 2. La forma más fácil de elegir un polinomio para aleatoriamente y verificar si es primitivo. No es fácil, y algo así como un cheque, ya sea un simple número elegido al azar, pero muchos paquetes de programas matemáticos pueden resolver esa tarea.

Algunos, pero, por supuesto, no todos, los polinomios de varios grados, el módulo primitivo 2. Por ejemplo, la grabación (32, 7, 5, 3, 2, 1, 0) significa que el siguiente polinomio es primitivo por módulo 2:

x32 + x7 + x5 + x3 + x2 + x + 1

Esto se puede generalizar fácilmente para LFSR con un período máximo. El primer número es la longitud del LFSR. El último número es siempre igual a 0, y se puede omitir. Todos los números, con la excepción de 0, configure la secuencia de eliminación que cuenta desde el borde izquierdo del registro de turnos. Es decir, los miembros del polinomio con un grado menor corresponden a las posiciones más cercanas al borde derecho del registro.

Ejemplo continuo, la grabación (32, 7, 5, 3, 2, 1, 0) significa que el nuevo bit de un registro de cambio de 32 bits tiene un bit nuevo se genera usando XOR treinta segundos, séptimo, quinto, tercero, segundo y Primeros bits. El LFSR resultante tendrá una longitud máxima, pasando cíclicamente hasta que se repiten después de 232-1 valores.



¿Te gustó el artículo? Compártelo