• No se han encontrado resultados

INSTITUTO POLITECNICO NACIONAL

N/A
N/A
Protected

Academic year: 2022

Share "INSTITUTO POLITECNICO NACIONAL"

Copied!
167
0
0

Texto completo

(1)

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICAY ELÉCTRICA

UNIDAD PROFESIONAL CULHUACAN SECCIÓN DE ESTUDIOS DE POSGRADO

E INVESTIGACIÓN

“DISEÑO DE ARQUITECTURAS DIGITALES PARA CRIPTOGRAFÍA”

Tesis que para obtener el grado de Maestro en Ciencias de Ingeniería en Microelectrónica presenta:

FRANCISCO IVAN PERALTA CONSTANCIO

ASESORES: DR. GONZALO ISAAC DUCHÉN SÁNCHEZ.

M. en C. RUBÉN VÁZQUEZ MEDINA.

ABRIL DE 2005

(2)
(3)
(4)

“DISEÑO DE ARQUITECTURAS DIGITALES PARA CRIPTOGRAFÍA”

Tesis que para obtener el grado de

Maestro en Ciencias de Ingeniería en Microelectrónica presenta:

FRANCISCO IVAN PERALTA CONSTANCIO

ASESORES: DR. GONZALO ISAAC DUCHÉN SÁNCHEZ.

M. en C. RUBÉN VÁZQUEZ MEDINA.

Comité Evaluador.

Dr. Gonzalo Isaac Duchén Sánchez M en C. Rubén Vázquez Medina

Dr. Héctor Manuel Pérez Meana Dr. Luis Martín Rojas Cárdenas

Dr. Francisco García Ugalde

(5)

AGRADECIMIENTOS

Le agradezco muchísimo a mis padres Julio y Mily por todo el apoyo que me han dado durante todo este tiempo. A mi madre porque en los momentos difíciles y a pesar de la distancia, nunca dejo de creer en mí y siempre estuvo conmigo cuando la necesitaba.

A mi hermana Gaby por sus consejos y apoyo.

A toda mi familia que siempre estuvo pendiente de mí.

A mis asesores, Profr. Gonzalo Isaac Duchen Sánchez y Profr. Rubén Vázquez Medina, por sus enseñanzas, paciencia y por todo el tiempo que dedicaron en mi, para poder alcanzar esta meta. A los profesores de la SEPI, por ayudar en mi formación académica.

Al Instituto Politécnico Nacional por ser mi escuela.

Al Consejo Nacional de Ciencia y Tecnología por el soporte económico durante el desarrollo del presente trabajo.

A mis amigos y compañeros de la SEPI.

Y a ti Dios porque me diste la perseverancia, la paciencia y la fuerza para lograr esta meta. Y por estar siempre conmigo.

(6)

RESUMEN

En este trabajo se presenta el diseño de módulos en VHDL (VHSIC Hardware Description Language) para generadores de secuencias cifrantes o pseudoaleatorias, así como también el análisis de las secuencias producidas por estos generadores.

Para el diseño de los generadores se escogió la herramienta MAX+PLUS II de AlteraTM utilizando VHDL que es un lenguaje de descripción de hardware y se simularon y cargaron en un FPGA (Field Programable Gate Arrays) ya que este es un dispositivo reprogramable y puede funcionar a muy altas frecuencias. Específicamente se utilizó el FPGA EPM7128SLC84- 7 de la familia MAX7000S, debido a que no se necesita un FPGA con una cantidad de compuertas lógicas mayor ya que los diseños que se probaron no sobrepasan el 30 % de las 128 celdas lógicas con las que cuenta este FPGA.

En total se realizaron 19 diseños en VHDL, dentro de los cuales están 6 generadores de secuencias pseudoaleatorias (Geffe, Beth-Piper, Gollman, Bilateral de Control de Paso, Pasos Alternados, Massey-Rueppel), que utilizan diferentes configuraciones de operación. El resto de los diseños son dispositivos necesarios para el funcionamiento de estos generadores.

Para el análisis de complejidad lineal se programó, en MATLAB 6.5, el algoritmo de Berlekamp-Massey con el cual se realizaron las pruebas a las secuencias de salida de los generadores. También se programó el algoritmo de complejidad esférica.

(7)

ABSTRACT

This thesis presents a set of modules designed for keystream generators which were implemented by using a hardware description language like VHDL (VHSIC Hardware Description Language) and the corresponding analysis of Linear Complexity.

Both the programming and the simulation of the designs have been made in an FPGA context.

Specifically, the FPGA EPM7128SLC84-7 of the family MAX7000S was used because of the whole design of each module only used the 30% of the total logic cells available on this FPGA.

This thesis has 6 designs of keystream generators (Geffe, Beth-Piper, Gollman, Bilateral Stop- and-Go, Alternating Stop-and-go, Massey-Rueppel) all of them having different operational configurations. The other modules are elements necessary for supporting the different keystream generators modules.

The analysis of the Linear Complexity of the sequences produced by the keystream generators is based on the algorithm of Berlekamp-Massey which has been implemented in MATLAB 6.5 context. The algorithm of Sphere Complexity has also been implemented.

(8)

ORGANIZACIÓN DE LA TESIS

Esta tesis se encuentra constituida básicamente por cuatro capítulos, a continuación se presenta un resumen del contenido de cada uno de ellos.

CAPÍTULO 1. CIFRADO DE FLUJO.

Este capítulo introduce al terreno del cifrado de flujo, su definición, la estructura general y las ventajas que tiene sobre el cifrado de bloque. También se muestran los generadores de secuencias pseudoaleatorias como base para realizar un cifrador de flujo, las cuales deben cumplir con ciertas propiedades, mismas que también se presentan en este capítulo.

CAPÍTULO 2.- CIFRADO DE FLUJO BASADO EN LFSR.

En este capítulo se presenta a la complejidad lineal como un método de análisis de los LFSR (Linear Feeback Shift Register) así como también de los generadores de secuencias pseudoaleatorias. También se muestra el porque los LFSR deben construirse con polinomios primitivos, y por último se presentan diferentes configuraciones para la construcción de generadores de secuencias pseudoaleatorias basados en LFSR.

CAPÍTULO 3. BIBLIOTECA DE GENERADORES DE SECUENCIAS PSEUDOALEATORIAS EN VHDL.

En este capítulo abordamos aspectos relacionados con una herramienta de descripción de hardware, específicamente VHDL (VHSIC Hardware Description Language) que servirá para diseñar los LFSR, sus variaciones y dispositivos necesarios para la construcción de generadores de secuencias pseudoaleatorias basados en LFSR, mencionados en el capítulo anterior. También se mostrará el diseño en VHDL de cada uno de ellos.

(9)

CAPÍTULO 4. PRUEBAS Y RESULTADOS.

En este capítulo se muestran las simulaciones de cada uno de los generadores de secuencias pseudoaleatorias, y con la ayuda del algoritmo de Berlekamp-Massey, la complejidad lineal y el polinomio con el cual se construye el LFSR más pequeño que imita a la secuencia de salida de un generador.

Finalmente se exponen las conclusiones obtenidas de los resultados entregados por el algoritmo de Berlekamp-Massey, las simulaciones de la implementación en un FPGA y el trabajo a futuro.

(10)

CONTENIDO

OBJETIVO………. 2

JUSTIFICACIÓN……….. 2

ANTECEDENTES………. 3

CAPÍTULO I .- CIFRADO DE FLUJO……….. 6

RESUMEN………... 7

1.1 ANTECEDENTES………. 7

1.2 ESTRUCTURA GENERAL……….. 8

1.3 VENTAJAS DEL CIFRADO DE FLUJO SOBRE EL CIFRADO DE BLOQUE……… 9

1.4 GENERADORES DE SECUENCIAS PSEUDOALEATORIAS………. 11

1.4.1 Seguridad en los generadores de secuencias pseudoaleatorias………... 11

1.4.2 Tipos de generadores de secuencias pseudoaleatorias………. 12

1.5 PROPIEDADES DE LA SECUENCIAS PSEUDOALEATORIAS…………. 16

1.5.1 Postulados de Golomb……….. 17

1.5.2 Complejidad lineal………..……….. 18

1.6 COMENTARIOS DEL CAPÍTULO………..………... 19

CAPÍTULO II.- CIFRADO DE FLUJO BASADO EN LFSR……….. 20

RESUMEN………... 21

2.1 ANTECEDENTES………. 21

2.2 FSR (Registro de Desplazamiento con Retroalimentación)... 22

2.3 LFSR (Registro de Desplazamiento con Retroalimentación Lineal)…………. 23

2.4 POLINOMIOS PRIMITIVOS…...……… 24

2.4.1 LFSR con polinomio de retroalimentación factorizable…... 25

2.4.2 LFSR con polinomio de retroalimentación irreducible……… 25

2.4.3 Periodo de las secuencias de salida de los LFSR………. 26

2.5 COMPLEJIDAD LINEAL.……….... 26

(11)

2.5.1 Propiedades de la complejidad lineal………... 28

2.5.2 Algoritmo de Berlekamp-Massey……… 30

2.6 Construcción de Generadores de Secuencias Pseudoaleatorias Basados en LFSR………... 33

2.6.1 Generadores basados en la combinación no lineal de varios LFSR………..………... 34

2.6.2 Generadores basados en el control de reloj………. 36

2.6.3 Generadores multireloj………….……… 41

2.7 COMENTARIOS DEL CAPÍTULO………..…... 43

CAPÍTULO III.- BIBLIOTECA DE GENERADORES DE SECUENCIAS PSEUDOALEATORIAS EN VHDL……… 44

RESUMEN………... 45

3.1 ANTECEDENTES…………...……….. 45

3.2 HERRAMIENTAS UTILIZADAS……… 46

3.3 LFSR CONSIDERADOS….………. 49

3.3.1 LFSR que genera una secuencia de longitud 2L-1……… 49

3.3.2 LFSR que genera una secuencia de De Bruijn.……… 50

3.3.3 LFSR controlado por el reloj y una señal de habilitación………… 50

3.4 DISEÑO EN VHDL DE GENERADORES DE SECUENCIAS PSEUDOALEATORIAS BASADOS EN LFSR………... 54

3.4.1 Generador de Geffe………... 54

3.4.2 Generador de Beth-Piper……….. 55

3.4.3 Generador de Gollman……….. 56

3.4.4 Generador bilateral de control de paso………... 57

3.4.5 Generador de pasos alternados………. 58

3.4.6 Generador multivelocidad de Massey-Rueppel…………... 62

3.5 COMENTARIOS AL CAPITULO...………. 67

CAPÍTULO IV.- PRUEBAS Y RESULTADOS……….……… 68

RESUMEN………... 69

(12)

4.1 CONSIDERACIONES DE LAS PRUEBAS…...……….. 69

4.2 LFSR………... 70

4.3 GENERADOR GEFFE………... 73

4.4 GENERADOR DE BETH-PIPER……….………. 77

4.5 GENERADOR DE GOLLMAN………. 81

4.6 GENERADOR BILATERAL DE CONTROL DE PASO………. 85

4.7 GENERADOR DE PASOS ALTERNADOS………. 88

4.8 GENERADOR DE MASSEY-RUEPPEL……….. 92

4.9 COMENTARIOS AL CAPÍTULO………...……….. 98

CONCLUSIONES………... 99

TRABAJO A FUTURO………... 102

BIBLIOGRAFÍA………. 104

APÉNDICE A. Código en Matlab de Complejidad Lineal………. 108

APÉNDICE B. Código en Matlab de Complejidad Ponderada………... 111

PUBLICACIONES REALIZADAS……… 114

(13)

ÍNDICE DE FIGURAS.

Figura 1.1 Cifrado de Bloque... 8

Figura 1.2 Cifrado de Flujo…….………... 8

Figura 1.3 Generador Sincrónico….………... 13

Figura 1.4 Modelo general para un cifrador de flujo con suma módulo 2………. 14

Figura 1.5 Generador Asíncrono………... 15

Figura 2.1 FSR (Registro de Desplazamiento con Retroalimentación)……….. 23

Figura 2.2 LFSR de longitud L………... 23

Figura 2.3 Diagrama de flujo del algoritmo de Berlekamp–Massey……….. 32

Figura 2.4 Generador de combinación no-lineal: f es una función de combinación no lineal..……… 35

Figura 2.5 Generador de Geffe………... 35

Figura 2.6 Generador Beth-Piper………... 36

Figura 2.7 Generador de Gollman……….. 37

Figura 2.8 Generador de Gollman para el diseño en VHDL……….. 38

Figura 2.9 Generador Bilateral de Control de Paso………... 39

Figura 2.10 Generador de Pasos Alternados………. 40

Figura 2.11 Generador Multivelocidad de Massey-Rueppel………... 41

Figura 3.1 Archivos de diseño que están integrados dentro del sistema MAX+PLUS II... 48

Figura 3.2 LFSR con polinomio primitivo de grado 4………... 50

Figura 3.3 Circuito activador de carga………... 59

Figura 4.1 Inicio de la secuencia del LFSR en t = 14.5 ns...……….. 71

Figura 4.2 Final de la secuencia del LFSR en t = 2.62143345 ms………. 71

Figura 4.3 Complejidad lineal proporcionada por el Algoritmo Berlekamp-Massey para el LFSR...………... 72

Figura 4.4 Inicio de la secuencia producida por el generador de Geffe en t = 17.6 ns……….. 74

Figura 4.5 Final de la secuencia producida por el generador de Geffe en t = 1.1811176 ms………... 75

(14)

Figura 4.6 Porción de la secuencia producida por el Generador de Geffe………. 76 Figura 4.7 Polinomio 1+ x + x5+ x7+ x8+ x9+ x11+ x12+ x13+ x15+ x17+ x18+ x19+ x20+

x22+ x27+ x33+ x35+ x36+ x37+ x39+ x40+ x42+ x43+ x44+ x45+ x46+ x48+ x53+ x54+ x58+ x61+ x63+ x65+ x68 , proporcionado por el Algoritmo de Berlekamp-Massey para el Generador de Geffe………... 76 Figura 4.8 Número de bits analizados, grado del polinomio, número de unos y ceros

y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador de Geffe……….………. 77 Figura 4.9 Inicio de la secuencia producida por el Generador de Beth-Piper en

t = 17.6 ns……….. 79

Figura 4.10 Final de la secuencia producida por el Generador de Beth-Piper en

t =1.1811176 ms..………. 79

Figura 4.11 Porción de la secuencia producida por el Generador de Beth-Piper………. 80 Figura 4.12 Polinomio 1+x+x7+x30+x31+x37+x75+x76+x82, proporcionado

por el Algoritmo de Berlekamp-Massey para el Generador de Beth-

Piper……….. 80

Figura 4.13 Número de bits analizados, grado del polinomio, número de unos y ceros y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador de Beth-Piper……….. 81 Figura 4.14 Inicio de la secuencia entregada por el Generador de Gollman en

t = 12.8 ns...………... 83

Figura 4.15 Final de la secuencia entregada por el Generador de Gollman en

t = 595.8328 µs……….. 83

Figura 4.16 Porción de la secuencia producida por el Generador de Gollman………… 84 Figura 4.17 Polinomio 1+x2083+x4805 proporcionado por el Algoritmo de

Berlekamp-Massey para el Generador de Gollman……….. 84 Figura 4.18 Número de bits analizados, grado del polinomio, número de unos y ceros

y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador de Gollman………. 85 Figura 4.19 Inicio de la secuencia entregada por el Generador Bilateral de control de

Paso en t = 17.9 ns...……….. 86

(15)

Figura 4.20 Final de la secuencia entregada por el Generador Bilateral de control de

Paso en t = 819.1979 µs……… 86

Figura 4.21 Porción de la secuencia producida por el Generador Bilateral de control de

Paso………... 87

Figura 4.22 Polinomio proporcionado por el Algoritmo de Berlekamp- Massey para el Generador Bilateral de control de Paso………

x4059

1+

87 Figura 4.23 Número de bits analizados, grado del polinomio, número de unos y ceros

y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador Bilateral de control de Paso……… 88 Figura 4.24 Inicio de la secuencia entregada por el Generador de Pasos Alternados en

t = 37.5 ns……….. 89

Figura 4.25 Final de la secuencia entregada por el Generador de Pasos Alternados en

t = 1.2598775 ms………... 90

Figura 4.26 Porción de la secuencia producida por el Generador de Pasos

Alternados………. 90

Figura 4.27 Polinomio 1+x16+x32+x48+x80+x96+x112+x144+x192, proporcionado por el Algoritmo de Berlekamp-Massey para el Generador de Pasos

Alternados………. 91

Figura 4.28 Número de bits analizados, grado del polinomio, número de unos y ceros y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador de Pasos Alternados……… 92 Figura 4.29 Inicio de la secuencia entregada por el Generador Multivelocidad en

t = 27.2 ns……….………. 93

Figura 4.30 Final de la secuencia entregada por el Generador Multivelocidad en

t = 5.076587 ms……….……… 94

Figura 4.31 Porción de la secuencia producida por el Generador Multivelocidad……... 94 Figura 4.32 Polinomio proporcionado por el Algoritmo de Berlekamp-Massey para el

Generador Multivelocidad. 1+x4+x10+x11+x13+x15+x17 55

46 44 33 28 26 24

19 x x x x x x x

x + + + + + + + ………. 95

(16)

Figura 4.33 Número de bits analizados, grado del polinomio, número de unos y ceros y complejidad lineal, proporcionada por el Algoritmo de Berlekamp- Massey para el Generador Multivelocidad……… 95

(17)

ÍNDICE DE TABLAS

Tabla 2.1 Iteraciones del ABM………...……….. 31

Tabla 2.2 Funcionamiento del Generador de Pasos Alternados en cada ciclo de Reloj……….. 40

Tabla 3.1 LFSR en código VHDL………. 51

Tabla 3.2 Código en VHDL de un LFSR que genera una Secuencia de De Bruijn………. 52

Tabla 3.3 LFSR controlado por el reloj y una señal de habilitación………. 53

Tabla 3.4 Multiplexor de 3 entradas……….. 54

Tabla 3.5 Generador de Geffe en VHDL……….. 55

Tabla 3.6 Generador de Beth-Piper en VHDL……….. 56

Tabla 3.7 Generador de Gollman en VHDL………. 57

Tabla 3.8 Generador Bilateral de control de paso………. 58

Tabla 3.9 Circuito Activador de Carga…..………... 59

Tabla 3.10 Diseño en VHDL del Triestado………. 60

Tabla 3.11 Diseño en VHDL del Inversor……….. 60

Tabla 3.12 LFSR con Activador de Carga Interna……….. 61

Tabla 3.13 Generador de Pasos Alternados en VHDL………... 62

Tabla 3.14 Generador Multivelocidad de Massey-Rueppel en VHDL………... 63

Tabla 3.15 LFSRM en VHDL………. 64

Tabla 3.16 LFSRL en VHDL……….. 65

Tabla 3.17 AND genérica en VHDL………... 65

Tabla 3.18 OR exclusiva genérica en VHDL……….. 66

Tabla 3.19 Divisor de Frecuencia entre 2 en VHDL………... 66

Tabla 4.1 Tabla de Resultados……….. 97

Tabla 4.2 Polinomios………. 97

(18)

ÍNDICE DE ACRÓNIMOS

ABM Algoritmo de Berlekamp-Massey

ADF Altera Design Files

ASIC Application Specific Integrated Circuit

CDL Computer Design Language

CL Complejidad Lineal

DDL Data Description Language

FPGA Field Programmable Gate Array

FSR Feedback Shift Register

HDL Hardware Description Language

ISPS Instruction Set Processor Specifications LFSR Linear Feedback Shift Register

NLFSR NonLinear Feedback Shift Register

1SC Sphere Complexity

SLFSR Shortest Linear Feedback Shift Register

SMF State Machine Files

VHDL VHSIC Hardware Description Language

VHSIC Very High Speed Integradted Circuits

WDF Waveform Design Files

WC Weight Complexity

XNF Xilinx Netlist Format Files

(19)

OBJETIVO,

JUSTIFICACIÓN

Y ANTECEDENTES

(20)

OBJETIVO.

Diseñar y poner en operación módulos digitales que generen secuencias pseudoaleatorias de uso criptográfico con LFSR (Linear Feedback Shift Register). Los diseños se realizarán con la ayuda de un lenguaje de descripción de hardware VHDL (VHSIC Hardware Description Language), con el cual se sintetizan y modelan circuitos digitales. Además serán probados en un dispositivo reprogramable FPGA (Field Programmable Gate Array), y se realizarán evaluaciones de complejidad algorítmica de las secuencias generadas por estos módulos implementados en hardware con tecnología de actualidad.

JUSTIFICACIÓN.

La Criptografía es una herramienta de la seguridad informática que se ocupa del diseño de procedimientos para cifrar, es decir para enmascarar una determinada información de carácter confidencial.

La criptografía se puede aplicar entre otros, para dar confidencialidad a un mensaje o garantizar la autenticidad de criptogramas y/o remitentes y destinatarios. El criptograma recibido debe ser realmente el enviado, de lo contrario se espera detectar manipulaciones o alteraciones en el proceso de transmisión. Así mismo, es deseable que sean quienes dicen ser y no remitentes y/o destinatarios fraudulentos. Para ello es necesario algún mecanismo que lo garantice.

Una posibilidad entre muchas otras es el uso del cifrado de flujo, que permite hacer un cifrado relativamente simple y por lo mismo muy rápido. Uno de los bloques fundamentales de este tipo de cifrado es el generador de secuencias cifrantes, habiendo muchas posibilidades para su construcción.

Actualmente en la bibliografía académica existe información acerca del cifrado de flujo utilizando generadores de secuencias cifrantes y que pueden ser implementados en hardware.

Pero esta información se limita a mostrar las características de estos generadores, tales como el periodo de la secuencia generada, su complejidad lineal y las propiedades que deben cumplir

(21)

los dispositivos que conforman a estos generadores. También existe información en que se menciona el diseño de generadores de secuencias cifrantes usando lenguajes de descripción de hardware como VHDL. Se mencionan los resultados de las pruebas realizadas, tales como velocidad de generación de la secuencia cifrante y la cantidad de recursos que ocupa en un FPGA el diseño en VHDL de estos generadores; pero el código no es revelado. Debido a la falta de información acerca de la construcción de generadores de secuencias utilizando VHDL, en esta tesis se han desarrollado los diseños de diferentes configuraciones de generadores de secuencias cifrantes, mostrando el código VHDL y simulaciones de cada uno de ellos realizadas por medio de MAX+PLUS II de AlteraTM. Además estos diseños servirán como base para explotar esta herramienta diseñando otros métodos de cifrado tanto de flujo como de bloque en un FPGA.

ANTECEDENTES.

En recientes años ha habido una gran necesidad por mejorar técnicas para transmisión y almacenamiento de información seguros.

Las ventajas de implementar algoritmos criptográficos en software incluyen la facilidad de uso, facilidad de implementación de mejoras, portabilidad y flexibilidad. Sin embargo, esta implementación ofrece limitada seguridad física, especialmente con respecto al almacenamiento de la llave. En cambio, los algoritmos criptográficos y sus correspondientes llaves que son implementados en hardware son por naturaleza físicamente más seguros debido a que la llave se encuentra almacenada dentro de un circuito integrado, esto ocasiona que la llave no pueda ser fácilmente leída o modificada por un criptoanalista.

La desventaja de una implementación en hardware especialmente en los circuitos integrados de aplicación específica (ASIC) es que ellos carecen de la flexibilidad para la implementación de algoritmos. Por tanto, los dispositivos de hardware reconfigurable tales como los FPGA (field programable gate arrays) son una excelente alternativa para la implementación de algoritmos criptográficos.

(22)

Los FPGA pueden ser reprogramados un número prácticamente ilimitado de veces, por lo cual ellos pueden utilizarse en diseños innovadores, en los cuales el hardware cambia constantemente, o donde el hardware debe adaptarse para diferentes aplicaciones. Estos también pueden ser reconfigurados para cambiar funciones lógicas mientras reside en un sistema. Un FPGA puede configurarse para aplicar tantos algoritmos criptográficos diferentes como sea necesario.

Las ventajas de aplicar algoritmos criptográficos en los FPGA, son los siguientes [1]:

1) Flexibilidad en los algoritmos. Este término se refiere al cambio de algoritmos criptográficos durante alguna operación. La mayoría de los protocolos modernos de seguridad tales como SSL (Secure Sockets Layer) o IPsec (IP Security), cuentan con múltiples algoritmos de cifrado. Los algoritmos se acuerdan en cada sesión. Mientras que esta flexibilidad puede ser costosa si se usa un hardware tradicional (ASIC), los FPGA pueden ser reprogramados durante la ejecución. La flexibilidad con la que se cuenta en el uso de los algoritmos dentro de un FPGA lo hace una opción atractiva.

2) Modificación del Algoritmo. Hay aplicaciones que requieren la modificación de un algoritmo estandarizado. Tales modificaciones se hacen fácilmente con un hardware reconfigurable. Así mismo, los modos de operación se pueden cambiar fácilmente.

3) Eficiencia de la Arquitectura. En ciertos casos la arquitectura del hardware puede ser mucho más eficiente si se diseña para un conjunto específico de parámetros. Con FPGA, es posible diseñar y optimizar una arquitectura para un conjunto específico de parámetros.

4) Capacidad de procesamiento. Las implementaciones hechas en los FPGA se ejecutan más rápido que en las implementaciones realizadas en software.

5) Costo-Eficiencia. El tiempo y el costo de desarrollo de la implementación de un algoritmo en FPGA es mucho menor que si se realiza en ASIC. (Sin embargo para

(23)

volúmenes grandes de aplicaciones, ASIC es una mejor opción con respecto a costo- eficiencia.)

En la actualidad el diseño de generadores de secuencias pseudoaleatorias se ha quedado en su representación matemática o a nivel de software. En el diseño en hardware utilizando FPGA existen algunos trabajos que hablan de la implementación en FPGA de algoritmos tanto de cifrado de bloque [1][2], como de flujo [3][4], pero solo se han mostrado la velocidad de procesamiento con un FPGA en especial, la cantidad de espacio que ocupa el algoritmo, así como su facilidad de implementación, pero el código en VHDL (VHSIC Hardware Description Language) que corresponde a ese esquema de cifrado es difícil que sea liberado al público. Es por eso que se desea realizar una biblioteca de generadores de secuencias pseudoaleatorias en VHDL, la cual se pueda usar de forma práctica en el cifrado de información a muy alta frecuencia y que se pueda cambiar la configuración de estos de forma sencilla. Además los diseños realizados en esta tesis servirán como base de construcción de arquitecturas para cifrado en FPGA.

(24)

CAPÍTULO I

(25)

CAPÍTULO 1. CIFRADO DE FLUJO.

RESUMEN.

Este capítulo introduce al terreno del cifrado de flujo, su definición, la estructura general y las ventajas que tiene sobre el cifrado de bloque. También se muestran los generadores de secuencias pseudoaleatorias como base para realizar un cifrador de flujo, las cuales deben cumplir con ciertas propiedades, mismas que también se presentan en este capítulo.

1.1 ANTECEDENTES.

Con el ingreso a la era de la información, el problema de la seguridad y autenticación de datos ha comenzado a ser un aspecto inseparable de los sistemas de comunicación. Cada vez una mayor cantidad de información es almacenada y transmitida por medios electrónicos y por consiguiente están expuestas a ataques. La privacidad individual así como también de las organizaciones depende de la posibilidad de proteger la información de accesos no autorizados y modificación.

Los sistemas criptográficos proporcionan privacidad en la información por medio del uso de transformaciones. En el transmisor el texto claro es transformado en el texto cifrado bajo el control de una llave de cifrado, lo que provoca que esta información sea incomprensible a otras personas. Solo el correcto receptor bajo el control de una llave de descifrado, retransforma el texto cifrado en el texto claro.

Los sistemas criptográficos se dividen en aquellos que son de llave secreta o simétrica y los de llave pública o asimétrica. En criptografía de llave pública o asimétrica, el transmisor usa una llave públicamente conocida para enviar un mensaje al receptor. El receptor usa una llave secreta para recobrar el texto claro. En criptografía de llave secreta, el transmisor y receptor previamente acuerdan utilizar una llave privada que servirá para cifrar y descifrar el texto claro.

Esta llave debe permanecer en secreto para proteger el texto claro en contra de posibles criptoanalistas [5].

(26)

1.2. ESTRUCTURA GENERAL.

Los sistemas criptográficos de llave simétrica se pueden dividir en cifrado de bloque y cifrado de flujo. Cuando el cifrado opera en cada entidad del texto claro independientemente, entonces estamos hablando de cifrado de bloque. El cifrado de bloque es un cifrado de sustitución simple y debe hacerse a grandes porciones del texto claro para prevenir ataques por fuerza bruta. El nombre de bloque es usado para limitar el tamaño de la entidad de texto claro a cifrar. El cifrado de flujo, en contraste cifra cada entidad de texto claro por medio de una función booleana, donde la frecuencia de reloj gobierna los estados internos del cifrador de flujo. Para este principio de cifrado, la entidad de texto claro no necesita ser grande, ya que se cifra bit a bit los datos de éste. Después de que cada bit es cifrado el cifrador de flujo cambia de estado de acuerdo a algún tipo de regla. Por consiguiente, dos ocurrencias del mismo carácter del texto claro usualmente no resultan en el mismo carácter del texto cifrado.

Para obtener una clara distinción entre cifrado de bloque y cifrado de flujo, se puede usar el criterio de memoria que se presenta a continuación [6].

c1

cn Dispositivo

sin memoria

K m1

mn

Dispositivo sin memoria

K

m1

mn

Cifrado Descifrado

c1

cn Dispositivo

sin memoria

K m1

mn

Dispositivo sin memoria

K

m1

mn

Cifrado Descifrado

Figura 1.1. Cifrado de Bloque.

Generador de secuencias pseudoaleatorias

K

mj cj

sj

Generador de secuencias pseudoaleatorias

K

mj sj

Cifrado Descifrado

Generador de secuencias pseudoaleatorias

K

mj cj

sj

Generador de secuencias pseudoaleatorias

K

mj sj

Cifrado Descifrado

Figura 1.2. Cifrado de Flujo.

(27)

Un cifrador de bloque (figura 1.1) es un dispositivo sin memoria, que transforma un bloque del texto claro m bajo el control de una llave K en un bloque de texto cifrado , donde el alfabeto del texto en claro y el alfabeto del texto cifrado usualmente es el mismo. Un cifrador de flujo (figura 1.2) es un dispositivo con memoria interna, que transforma el dígito de de la cadena del texto claro en el dígito c de la cadena del texto cifrado, por medio de una función que depende de la llave secreta K y del estado interno del cifrador de flujo en el tiempo j.

[

m1,...,mn

=

n

]

c

ésimo - j

] [

c1,...,

c=

mj j-ésimo j

El cifrado de flujo como se muestra en la figura 1.2 puede realizarse por medio de generadores de secuencias pseudoaleatorias, los cuales usan una función f y una llave, que es generalmente la semilla usada en el conjunto inicial de estados del generador. Por medio de esta secuencia pseudoaleatoria cada bit del texto claro se cifra usando una función booleana, por ejemplo una XOR.

1.3 VENTAJAS DEL CIFRADO DE FLUJO SOBRE EL CIFRADO DE BLOQUE.

Muchos servicios de transmisión de datos manejan grandes cantidades de información. Por eso se necesita de mecanismos de cifrado que operen en comunicaciones de alta velocidad. Con la tecnología actual las realizaciones de cifradores de flujo en hardware parecen ser la mejor opción para cifrar grandes cantidades de información, y son compatibles con redes de alta velocidad.

Los Criptosistemas de cifrado de flujo pueden operar a frecuencias muy altas, y son mucho más rápidos que los criptosistemas de cifrado de bloque. Ya que la secuencia pseudoaleatoria puede generarse independientemente del texto claro y del texto cifrado, estos generadores tienen la ventaja de que la secuencia cifrante (pseudoaleatoria) puede generarse casi al mismo instante del cifrado o el descifrado, con solo una sencilla combinación de estados del generador mientras el texto claro o el texto cifrado se procesan [5].

Para una llave K fija, el cifrado de bloque puede transformar bloques idénticos de mensaje en bloques idénticos de texto cifrado. Esto permite a un observador activo, en la transmisión

(28)

insertar, borrar o retransmitir bloques del texto cifrado previamente grabados, a menos que sea empleado un protocolo adicional que controle la secuencia de bloques del mensaje. De la misma forma el cifrado en bloque permite a un observador pasivo buscar marcas en el texto cifrado, es decir que bajo el control de una llave fija, diferentes ocurrencias de un mismo bloque de texto claro, siempre resultarán en el mismo texto cifrado. Esta es una amenaza seria cuando entidades de información fija (tales como registros de sueldos) son considerados como bloques de texto claro [6], por eso la llave debe ser lo más grande posible para evitar ocurrencias en el texto cifrado.

En cambio ya que el cifrado de flujo cifra bit a bit por medio de una función que depende de la llave secreta y del estado interno del cifrador de flujo en un instante dado, previene borrado, inserción o retransmisión del texto cifrado, además de búsquedas de marcas en el texto cifrado.

El uso del cifrado de flujo es la mejor opción cuando el espacio de almacenamiento es limitado debido a que no se necesita guardar la secuencia cifrante ya que se genera en el instante que se va a procesar (cifrar o descifrar) la información. Además la semilla, que es el conjunto de estados inicial del generador, es mucho más pequeña que la secuencia cifrante generada.

Debido a que el cifrado de flujo cifra bit a bit se considera un método adecuado cuando los caracteres deben procesarse individualmente y recibirse de la misma forma. También debido a su memoria interna y a que utiliza transformaciones no lineales son en general difíciles de analizar.

También es adecuado el método de cifrado de flujo cuando el error de transmisión tiene una probabilidad alta. Como el cifrado se ejecuta bit a bit, lo cual lo hace independiente de cada elemento, el cambio de un solo bit no afecta al descifrado de forma relevante.

(29)

1.4 GENERADORES DE SECUENCIAS PSEUDOALEATORIAS.

En 1917, G. Vernam diseñó un criptosistema perfecto, según el criterio de Shannon denominado one-time pad, en el cual la llave secreta es una secuencia de bits generada de forma aleatoria. El mensaje de longitud n se cifra por medio de una operación XOR del mismo mensaje con la llave secreta de la misma longitud, para formar el texto cifrado. Posteriormente se descifra por medio de la función XOR entre el texto cifrado y la llave secreta.

Si la llave K se produce por una fuente binaria simétrica, tal que la probabilidad de que se genere un cero o un uno sea 12, independientemente de los bits anteriores, entonces se dice que el one-time pad es perfectamente seguro ante un ataque al texto cifrado, en donde el criptoanalista no tiene conocimiento del texto en claro. Este método de cifrado presenta el inconveniente de que la llave tiene que ser tan grande como el propio mensaje. Evidentemente, un sistema de este tipo carece de utilidad práctica en la mayoría de los casos, por eso muchos sistemas de cifrado operan como una versión aproximada del one-time pad, usando grandes secuencias de bits pseudoaleatorios generados a partir de una llave secreta corta. Los bits parecen ser aleatorios, pero ellos son reproducibles, e incluso tienen una longitud de periodo limitado [7].

1.4.1 Seguridad en los generadores de secuencias pseudoaleatorias.

En general se pueden formular tres requerimientos para los generadores de secuencias criptográficamente e idealmente seguros [7] [8].

1) El periodo de la secuencia pseudoaleatoria debe ser lo suficientemente grande para cifrar el texto claro.

2) Los bits de salida deben ser fáciles de generar.

3) Que la secuencia sea impredecible. Debe ser computacionalmente irrealizable predecir cual será el siguiente bit aleatorio conociendo de antemano el algoritmo o el hardware que genera la secuencia y todos los bits previos.

(30)

Una secuencia criptográficamente segura no podrá ser comprensible a menos que se conozca la llave. La llave es generalmente la semilla usada en el conjunto inicial de estados del generador.

1.4.2 Tipos de generadores de secuencias pseudoaleatorias.

Dependiendo de los parámetros que se empleen para calcular el valor de cada porción de la secuencia [9] [10], los generadores que se emplean como cifrado de flujo pueden dividirse en dos grandes grupos:

1) Generadores Sincrónicos.

2) Generadores Asincrónicos.

1) Generadores sincrónicos.

Un generador sincrónico es aquel en el cual la secuencia pseudoaleatoria se genera independientemente del texto claro y el texto cifrado.

El proceso de cifrado de un generador sincrónico puede describirse por las siguientes ecuaciones:

( )

( )

(

i i

)

i i i

i 1 i

m , z h c

, k , g z

, k , f

= σ

= σ

= σ +

(1.1)

donde es el estado inicial y puede determinarse por la llave k, f es la función de estado siguiente, g es la función que produce la secuencia pseudoaleatoria y h es la función de salida que combina la secuencia pseudoaleatoria y el texto claro para producir el texto cifrado c . El proceso de cifrado y descifrado se muestra en la figura 1.3.

σ0

i

zi

mi

(31)

Cifrado σi

i+1 σ

f

k g h

mi

zi

ci

σi i+1

σ

f

k g h-1

ci

zi

mi

descifrado

Texto claro mi Texto cifrado ci Llave k

Secuencia de salida zi Estado σi

Cifrado σi

i+1 σ

f

k g h

mi

zi

ci

σi i+1

σ

f

k g h-1

ci

zi

mi

descifrado

Texto claro mi Texto cifrado ci Llave k

Secuencia de salida zi Estado σi

Figura 1.3 Generador Sincrónico.

Propiedades del generador sincrónico.

i) Requerimientos de sincronización. En un generador sincrónico el transmisor y el receptor deben estar sincronizados (usando la misma llave y operando en el mismo estado con esa llave) para permitir que el descifrado sea correcto. Si la sincronización se pierde, debido a que dígitos del texto cifrado fueron insertados o borrados durante la transmisión, entonces el descifrado falla y puede ser solamente restaurado a través de técnicas adicionales de resincronización. Las técnicas para la resincronización incluyen reinicialización, colocación de marcadores especiales en intervalos regulares del texto cifrado; o si el texto claro contiene suficiente redundancia, probando todos los posibles desalineamientos de la secuencia pseudoaleatoria.

ii) Propagación sin errores. Un dígito del texto cifrado que es modificado (pero no borrado) durante la transmisión no afecta el descifrado de otro dígito del texto cifrado.

iii) Ataques activos. Como consecuencia de la propiedad (i), la inserción, borrado o retransmisión de dígitos del texto cifrado por un adversario activo causa pérdida inmediata de sincronización e incluso puede detectarse por el receptor auténtico. Como una consecuencia de la propiedad (ii), un atacante activo puede hacer cambios a dígitos seleccionados del texto cifrado y conocer exactamente que efectos pueden tener estos cambios en el texto claro [9].

(32)

Cifrador de flujo con suma binaria módulo 2.

Un cifrador de flujo con suma binaria módulo 2 es un generador sincrónico, en el cual su secuencia de salida, el texto claro y el texto cifrado son dígitos binarios, además la función de salida h es la operación XOR.

El cifrador y descifrador de flujo con suma binaria módulo 2 se muestran en la figura 1.4. El generador de secuencias está compuesto por una función de estado siguiente f y una función g.

Este también se conoce como Running Key Generator [9].

Generador de secuencias

mi zi

k ci

Generador de secuencias

ci zi

k mi

Texto claro mi Texto cifrado ci Llave k

Secuencia de salida zi

Cifrado descifrado

Generador de secuencias

mi zi

k ci

Generador de secuencias

ci zi

k mi

Texto claro mi Texto cifrado ci Llave k

Secuencia de salida zi

Cifrado descifrado

Figura 1.4 Modelo general para un cifrador de flujo con suma módulo2.

2) Generadores asincrónicos.

Un generador asincrónico es aquel en el cual la secuencia pseudoaleatoria de salida se genera como una función de la llave y un número t fijo de dígitos previos del texto cifrado [9] [10].

La función de cifrado de un generador asincrónico puede describirse por las siguientes ecuaciones:

( )

( )

) m , z ( h c

, k , g z

, c ,..., c

, c

i i i

i i

1 i 1

t i t i i

= σ

=

=

σ +

(1.2)

donde es el estado inicial (este estado no es secreto), k es la llave, g es la función que produce la secuencia de salida y h es la función de salida que combina la

(

i t i t 1 i 1

i = c ,c + ,...,c

σ

)

zi

(33)

secuencia de salida y el texto en claro m para producir el texto cifrado . El cifrado y descifrado se muestran en la figura 1.5.

i ci

ci ci

k g zi h

mi

k g zi h-1 mi

ci

k g zi h

mi

k g zi h-1 mi

ci

Figura 1.5 Generador Asincrónico.

Propiedades del generador asincrónico.

i) Autosincronización. La autosincronización es posible aún y cuando algunos dígitos del texto cifrado sean borrados o insertados, debido a que el descifrado depende solo de un número fijo de caracteres previos del texto cifrado. Tal cifrado es capaz de reestablecer el descifrado automáticamente después de perder la sincronización, después de recibir un número t de bits correctos.

ii) Limitado error de propagación. Suponga que el estado de un generador asincrónico depende de t dígitos previos del texto cifrado. Si un solo dígito del texto cifrado se modifica (o incluso se borra o inserta) durante la transmisión, entonces el descifrado después de subsecuentes dígitos del texto cifrado pueden ser incorrectos, después el descifrado será correcto cuando vuelva a sincronizarse.

t

iii) Ataques Activos. La propiedad (ii) dice que cualquier modificación de los dígitos del texto cifrado realizada por un adversario causa que otros de los dígitos del texto cifrado se descifren de forma incorrecta, mejorando la probabilidad (comparado con el generador sincrónico) de ser detectado por el auténtico receptor. Como consecuencia de la propiedad (i), es más difícil (que para los generadores sincrónicos) detectar inserción, borrado, o retransmisión de dígitos del texto cifrado hechos por un adversario.

(34)

iv) Dispersión de las Propiedades Estadísticas del texto claro a lo largo del texto cifrado. Ya que cada dígito del mensaje influye en todo el texto cifrado, las propiedades estadísticas del texto claro se dispersan a través del texto cifrado. Por lo tanto, los generadores asincrónicos son más resistentes que los generadores sincrónicos contra ataques basados en la redundancia del texto claro [9].

1.5 PROPIEDADES DE LAS SECUENCIAS PSEUDOALEATORIAS.

Se han hecho grandes esfuerzos para producir buenas secuencias pseudoaleatorias en computadora [8]. También se han hecho discusiones acerca de muchos generadores existentes en la literatura académica, junto con muchas pruebas de aleatoriedad. Todos estos generadores tienen periodicidad, pero con periodos de más de 2256 bits pueden usarse para diversas aplicaciones.

El problema de producir buenas secuencias pseudoaleatorias es que no se tiene una función de autocorrelación ideal, lo que implica deficientes propiedades estadísticas para uso criptográfico.

Bajo ciertas condiciones estos generadores de secuencias pseudoaleatorias van a provocar una vulnerabilidad en el sistema que se está soportando.

Los cifradores de flujo juegan un papel muy importante en la protección de comunicaciones a muy altas frecuencias, como transmisión de información a través de Internet de banda ancha, transmisiones satelitales, transmisiones por fibra óptica, transmisiones por microondas, etc. El problema central de los cifradores de flujo es la dificultad de generar a partir de una llave corta secuencias cifrantes binarias de periodo grande y que sean aleatorias. Un generador produce una secuencia pseudoaleatoria si esta tiene la siguiente propiedad:

• Ser impredecible. Debe ser computacionalmente irrealizable predecir cuál será el siguiente bit aleatorio conociendo de antemano el algoritmo que genera la secuencia y todos los bits previos [8].

(35)

Una secuencia criptográficamente segura no podrá ser comprensible a menos que se conozca la llave. La llave es generalmente la semilla usada en el conjunto inicial de estados del generador.

1.5.1 Postulados de Golomb.

Una de las primeras formulaciones de las reglas básicas de las secuencias pseudoaleatorias periódicas fueron proporcionadas por Golomb y estas tres reglas se conocen como los postulados de Golomb [5] [6] [9].

1. La diferencia en el número de unos y ceros dentro de cada periodo de la secuencia no debe exceder a la unidad.

2. En todo el periodo, (1/2 es el número de i-gramas (del total de gramas en todo el periodo) de longitud i. Es decir el número de gramas de longitud 1 en todo el periodo debe ser la mitad del total de gramas, un cuarto del total de gramas debe tener longitud 2, un octavo debe tener longitud 3 etc.

i)

3. La función de autocorrelación AC(k) fuera de fase es constante para todo valor k. La condición es que para que una secuencia sea aleatoria la función de autocorrelación sea una delta de Dirac [10].

Una secuencia que satisfaga los tres postulados de Golomb puede definirse como una secuencia-pn, donde pn se entiende por pseudoruido (pseudo-noise). Sin embargo, es claro que estas reglas no son suficientes para cubrir el término de secuencia aleatoria. Otra medida necesaria para el análisis de secuencias pseudoaleatorias es la complejidad lineal y se menciona a continuación.

(36)

1.5.2 Complejidad lineal.

La técnica más popular para medir la robustez de una secuencia pseudoaleatoria es la complejidad lineal, esto es, para que una secuencia sea impredecible, es necesario que su complejidad lineal sea grande. Esta propiedad es cuantificable y está definida por la longitud del registro de desplazamiento con retroalimentación lineal más pequeño que puede generar la secuencia particular que se analiza. Una complejidad lineal grande es una condición necesaria pero no suficiente para asegurar que una secuencia es impredecible. Por ejemplo, la secuencia (0……01), la cual se repite periódicamente, tiene una complejidad lineal máxima, solo el registro de desplazamiento de grado ∞ puede producirla. Pero claramente se puede observar que esta secuencia es fácilmente predecible porque es una secuencia de solo ceros y así es poco útil en el campo criptográfico. Finalmente, ser impredecible requiere que independientemente del bit anterior el próximo dígito parezca tener una distribución uniforme. Por consiguiente, la secuencia necesariamente debe ser estadísticamente uniforme, por ejemplo, que exista una distribución igual entre cadenas de longitud uno de dígitos, de pares de dígitos, de cadenas de tres dígitos, etc. El parámetro fundamental, ya mencionado para estimar que tan impredecible es una secuencia es la complejidad lineal [10].

Ya que el periodo de una secuencia siempre es al menos tan grande como su complejidad lineal, una complejidad lineal grande implica un periodo grande. Las secuencias aleatorias típicas exhiben un crecimiento típico de la complejidad lineal con un incremento del número de dígitos de la secuencia que se consideran. Dicho de otra forma, si se analiza una secuencia aleatoria, la complejidad lineal de ésta se irá incrementando conforme al número de dígitos analizados se incremente, y si se grafica el perfil de esta complejidad lineal será cercano a una recta

2 n, donde es el número de bits analizados. De esta forma, cuando una secuencia tiene un perfil típico de complejidad lineal, es probable que sea estadísticamente uniforme. En contraste, una distribución uniforme en una secuencia periódica no implica que esta secuencia tenga una complejidad lineal grande. Por ejemplo, las secuencias de longitud máxima que son generadas por LFSR (Registro De Desplazamiento Con Retroalimentación Lineal), también se llaman secuencias de pseudoruido (pseudonoise sequences), por sus excelentes propiedades de

n

1 - 2L

(37)

distribución, tienen complejidad lineal mínima con respecto a la longitud de su periodo. Esto es, si lanzamos una moneda legal 31 veces y graficamos el resultado de esos lanzamientos obtendremos que el perfil de la complejidad lineal es cercano a una recta

2

n y por lo tanto su complejidad lineal será de 31. En cambio la secuencia de máxima longitud que tenga periodo igual a 31 tendrá una complejidad lineal de solo 5, que es el valor de . Secuencias binarias de longitud máxima de periodo son completamente determinadas conociendo solo 2L bits de la secuencia [10].

L 1

- 2L

Por consiguiente, el criterio de un perfil típico de complejidad lineal con un valor final grande, acompañado por los requerimientos de uniformidad estadística, son útiles para estimar lo impredecible de una secuencia así como también su calidad [10].

1.6 COMENTARIOS DEL CAPÍTULO.

En este capítulo se proporcionaron las definiciones suficientes para entender el cifrado de flujo, los generadores de secuencias pseudoaleatorias y las propiedades que deben cumplir. Se presentó la complejidad lineal como un parámetro fundamental para estimar que tan impredecible es una secuencia. En el próximo capítulo se darán ejemplos de diferentes tipos de generadores así como la complejidad lineal y longitud del periodo que deben de cumplir las secuencias producidas por esos generadores.

(38)

CAPÍTULO II

(39)

CAPÍTULO 2.- CIFRADO DE FLUJO BASADO EN LFSR.

RESUMEN.

En este capítulo se presenta a la complejidad lineal como un método de análisis de los LFSR (Linear Feeback Shift Register) así como también de los generadores de secuencias pseudoaleatorias. También se muestra el porque los LFSR deben construirse con polinomios primitivos, y por último se presentan diferentes configuraciones para la construcción de generadores de secuencias pseudoaleatorias basados en LFSR.

2.1. ANTECEDENTES.

Como ya se ha mencionado anteriormente (sección 1.2), el cifrado de flujo cifra bit a bit los datos de un texto claro, utilizando una secuencia cifrante y una función booleana. Este cifrado puede realizarse utilizando LFSR (Registro de Desplazamiento con Retroalimentación Lineal), los cuales generan la llave (secuencia pseudoaleatoria) para cifrar un texto claro. Este cifrado, realizado con LFSR, posee las siguientes propiedades importantes [8] [9]:

1. Los LFSR se pueden realizar fácilmente en hardware.

2. Pueden generar secuencias de periodo T grande, con T = 2L-1 y donde L es la longitud del LFSR.

3. Producen secuencias con buenas propiedades estadísticas, que pueden evaluarse con los postulados de Golomb [6]:

a. La diferencia en el número de unos y ceros dentro de cada periodo de la secuencia no debe exceder a la unidad.

b. En todo el periodo, (1/2 ) es el número de i-gramas (del total de gramas en todo el periodo) de longitud i.

i

c. La función de autocorrelación AC(k) fuera de fase es constante para todo valor k.

4. Debido a su estructura, pueden analizarse usando técnicas algebraicas, una de éstas es la complejidad lineal.

(40)

En telecomunicaciones el cifrado de flujo es muy utilizado bajo las siguientes condiciones:

• El espacio de almacenamiento es limitado.

• Los caracteres de un mensaje deben procesarse individualmente y recibirse de la misma forma.

• El error de transmisión tiene una probabilidad alta.

• El retardo de extremo a extremo no debe incrementarse considerablemente (afecta a las aplicaciones interactivas).

• El flujo de datos a cifrar es generado en forma continua y posee un volumen considerable.

2.2 FSR (FEEDBACK SHIFT REGISTER).

Las secuencias de los registros de desplazamiento se usan tanto en criptografía como en teoría de codificación [8]. Un registro de desplazamiento retroalimentado FSR (feeback shift register) está constituido por dos partes: un registro de desplazamiento y una función de retroalimentación [11]. El registro de desplazamiento está constituido de unidades de almacenamiento de un bit, por lo que puede decirse que un registro de desplazamiento es una secuencia de bits. La longitud del registro depende de la cantidad de unidades de almacenamiento o etapas que éste contenga, un registro que tiene longitud L consiste en L etapas numeradas desde 0 hasta L-1. El registro de desplazamiento retroalimentado, tiene una entrada, una salida y una entrada de reloj que controla el flujo de datos. Durante cada unidad de tiempo se realizan las siguientes operaciones:

1) El bit de la etapa cero es la salida del registro y forma parte de la secuencia de salida.

2) El contenido de la etapa i se traslada a la etapa i-1 , 1iL1; y

3) El nuevo contenido de la etapa L-1 es el bit de retroalimentación , donde la función de retroalimentación f es una función booleana y s es el contenido de la etapa anterior denominado como , 1

) s .., ,...

s , s ( f

Sj= j1 j2 jL

j−i L-i iL.

Si el contenido inicial de la etapa i es si

{ }

0,1 para cada 0iL1, entonces [sL1,.....,s1,s0] es llamado el estado inicial del FSR.

Referencias

Documento similar

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

Pero cuando vio a Mar sacar el fuego de bajo su ala, voló de vuelta a su tribu a contarles lo que había visto.... Justo antes de que el sol saliera, Tatkanna se despertó y comenzó

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados