Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica"

Transcripción

1 Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE 0502 Proyecto Eléctrico ESTUDIO Y EVALUACIÓN DE ALGORITMOS DE ENCRIPTACIÓN PARA LA PROTECCIÓN DE DATOS PARA SU IMPLEMENTACIÓN USANDO LENGUAJES DE DESCRIPCIÓN DE HARDWARE Por: LAURA VARGAS VARGAS Ciudad Universitaria Rodrigo Facio Enero del 2010

2 ESTUDIO Y EVALUACIÓN DE ALGORITMOS DE ENCRIPTACIÓN PARA LA PROTECCIÓN DE DATOS PARA SU IMPLEMENTACIÓN USANDO LENGUAJES DE DESCRIPCIÓN DE HARDWARE Por: LAURA VARGAS VARGAS Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERÍA ELÉCTRICA Aprobado por el Tribunal: Ing. Esteban Ortiz Cubero Profesor Guía Ing. Gerardo Castro Profesor lector Ing. Roberto Rodríguez Profesor lector ii

3 RECONOCIMIENTOS A mi profesor Esteban Ortiz, por su ayuda constante durante todo el semestre, ya que en el proceso de aprizaje es realmente indispensable. iii

4 ÍNDICE GENERAL ÍNDICE DE FIGURAS... vi ÍNDICE DE TABLAS... viii NOMENCLATURA... ix RESUMEN... x CAPÍTULO 1: Introducción Objetivos Objetivo general Objetivos específicos Metodología... 3 CAPÍTULO 2: Desarrollo teórico Criptografía Historia de la criptografía Criptoanálisis clásico Criptografía moderna Aplicaciones de la criptografía Procesos matemáticos Hash Criptografía simétrica Criptografía asimétrica FPGA CAPÍTULO 3: Algoritmo de cifrado de datos AES Estructura de AES AddRoundKey ByteSub ShiftRow MixColumns KeySchedule Descifrado SubClaves Eficiencia AES Seguridad de AES Expansión y Aplicaciones CAPÍTULO 4: Algoritmo de cifrado RSA iv

5 4.1. Estructura RSA Eficiencia de RSA Seguridad de RSA Expansión y Aplicaciones de RSA CAPÍTULO 5: Algoritmo de cifrado DES Estructura de DES Función F Generación de claves Eficiencia de DES Seguridad de DES Expansión y aplicaciones de DES CAPÍTULO 6: Comparación de los algoritmos AES, DES y RSA CAPÍTULO 7: Algoritmo de cifrado propuesto Clave Arquitectura general Sensado ControladorIn-Mem ControladorALU DecodKey ControlKey ALU CAPÍTULO 8: Síntesis y simulación Síntesis Simulación CAPÍTULO 9: Conclusiones y recomaciones BIBLIOGRAFÍA ANEXOS A. código del modelo conductual del cifrador v

6 ÍNDICE DE FIGURAS Figura 1.1 Arquitectura básica de un FPGA Figura 3.1. Algoritmo AES [4] Figura 3.2. Matriz S-Box [5] Figura3.3. función ShiftRow [5] Figura3.4. Algoritmo de descifrado [5] Figura 3.5. S-Box inversa [5] Figura5.1. Algoritmo DES [9] Figura 7.1. Descripción de bits de la clave Figura 7.2. Señales de entrada y salida Figura 7.3. Arquitectura del cifrador Figura 7.4. Módulo de Sensado Figura 7.5 (a)error100 (b)error Figura 7.6. (a)error 011 (b) Error Figura 7.7 Error Figura 7.8 diagrama SM del módulo Sensado Figura 7.9 Módulo ControlInMem Figura 7.10 Diagrama SM de ControlInMem Figura 7.11 Módulo Controlador ALU Figura 7.12 Diagrama SM del módulo Controlador ALU Figura7.13 Modulo DecodKey Figura 7.14 Diagrama SM del DecodKey Figura 7.15 Módulo ControlKey Figura 7.16 Diagrama SM del ControlKey Figura7.17 Módulo ALU Figura 7.18 Diagrama SM de la ALU Figura 8.1 Señales asíncronas Figura 8.2 Resultados de Síntesis vi

7 Figura 8.3 Tiempo de operación Figura 8.4 Esquemático del Cifrador Figura 8.5 Señales primera parte del cifrado Figura 8.6 Señales segunda parte del cifrado Figura 8.7 Señales tercera parte del cifrado Figura 8.8 Señales primera parte del descifrado Figura 8.9 Señales segunda parte del descifrado Figura 8.10 Señales tercera parte del descifrado vii

8 ÍNDICE DE TABLAS Tabla 2.1 entidades sintetizables en verilog Tabla 2.2 Celdas de la librería Virtex que maneja Icarus Verilog Tabla 6.1 Comparación de algoritmos Tabla 7.1 descripción de señales del cifrador Tabla 7.2 descripción de señales del Sensado Tabla 7.3 Descripción de señales de ControladorInMem Tabla 7.4 Descripción de señales del Controlador ALU Tabla 7.5 Descripción de señales del DecodKey Tabla 7.6 Descripción de señales del ControlKey Tabla 7.7 Descripción de señales de la ALU viii

9 NOMENCLATURA XX A K Nr Ki Descripción del símbolo Matriz del bloque inicial Clave Número de rondas Subclaves ix

10 RESUMEN En este trabajo se estudiaron 3 algoritmos de cifrado de datos: RSA, DES y AES. Se detalló su arquitectura, se hizo un pequeño estudio de la eficiencia con respecto a la idoneidad para la implementación en bajo nivel de cada uno, también se investigó acerca de la seguridad, la expansión y las aplicaciones de cada algoritmo. Por aparte se hizo un estudio más detallado de cada algoritmo con respecto a facilidad de implementación en una FPGA y se compararon, dando como resultado que el algoritmo menos complejo y que utiliza claves y bloque más pequeños, hace más realizable su implementación. Al estudiar y evaluar algoritmos de cifrado de datos que se utilizan en el mercado, y tenio en cuenta los elementos que los hacen fácilmente implementable, se propuso un algoritmo de cifrado de datos, que consta de una clave de 16 bits y bloques de 32 bits, los cuales son cifrados, al pasar por 3 operaciones invertibles. Se creó un modelo sintetizable de este algoritmo utilizando el lenguaje de descripción de hardware Verilog, se sintetizó utilizando la herramienta XILINX ISE 10.1, y se simuló utilizando ModelSim PE Student Edition 6.5a. x

11 1 CAPÍTULO 1: Introducción Desde hace mucho tiempo se han utilizado técnicas para el cifrado de mensajes, las primeras civilizaciones como los romanos y los griegos las utilizaron para ocultar mensajes en tiempos de guerra, y así si interceptaban al emisario no correrían el riesgo de que el mensaje fuera decodificado. Durante la segunda guerra mundial hubo un avance notable en este campo gracias a las máquinas de cálculo, los alemanes desarrollaron un máquina de cifrado llamada Enigma que consistía en una serie de rotores que lograba automatizar los cálculos necesarios para realizar las operaciones de cifrado y descifrado de mensajes. Todo el desarrollo y evolución de la criptografía van de la mano del criptoanálisis, ya que conforme se desarrollan sistemas de codificado y decodificado más seguros, también se estudia la manera de decodificar mensajes tenio muy poca información del algoritmo de cifrado y de la clave, con objeto de recuperar la información original. Muchos algoritmos se han creado con el fin de la protección de datos, utilizando desde una simple sustitución de letras, hasta criptografía asimétrica que implica resolver problemas a partir de matemática pura. Muchos de estos algoritmos también han fracasado por su debilidad ante ataques que preten descifrar el algoritmo utilizado o decodificar los datos. Por lo que para crear un sistema criptográfico seguro es necesario tomar en cuenta los avances y descubrimientos del criptoanálisis. Actualmente la criptografía no solo se utiliza para fines bélicos y es de gran importancia en otros campos como en la firma digital que sirve para verificar que un mensaje realmente viene del remitente exigido.

12 2 Este proyecto se enfoca en el estudio de 3 métodos criptográficos utilizados para la protección de datos y evaluar su difusión en la industria, su desempeño, seguridad, nivel de complejidad y uso de recursos para ver la factibilidad de implementarlos en un futuro, en un lenguaje de descripción de hardware. Al hablar de una implementación de algún algoritmo criptográfico en FPGA, muchos de estos van a requerir más recursos de lo que el FPGA puede brindar, por lo que a partir de los algoritmos estudiados se propondrá uno que se pueda implementar y se realizará una macro celda de cifrado de datos en el lenguaje de descripción de hardware Verilog Objetivos Objetivo general Estudiar los métodos existentes de cifrado de datos y evaluar su idoneidad para la implementación en bajo nivel utilizando lenguajes de descripción de hardware Objetivos específicos Estudiar al menos 3 de los principales métodos en la industria utilizados para el cifrado de datos y la protección de información confidencial y evaluarlos según su desempeño, uso de recursos, nivel de difusión en la industria, complejidad y otros parámetros pertinentes.

13 3 Evaluar la idoneidad de los distintos algoritmos para su implementación futura en hardware, utilizando un FPGA y el lenguaje de descripción de hardware Verilog. Proponer el mejor algoritmo a utilizar para una macro celda de cifrado de datos, ya sea entre los algoritmos estudiados, o proponio un nuevo algoritmo Metodología Para el desarrollo de este proyecto, la primera parte requiere de la investigación teórica, por lo que se procede a la búsqueda de toda la información que sea de ayuda para llevar a cabo el proyecto, tanto datos puros que ayuden directamente, como todo tipo de información anexa que permita adquirir un alto grado de comprensión sobre los temas en estudio. Dado el carácter de investigación del proyecto se tomará como fuente de información principal Internet y la información suministrada por los profesores, acerca de los conceptos generales del tema de criptografía, su uso en mecanismos de seguridad y para la protección de información. Al tener claro los conceptos fundamentales y apropiados, se procede a selección y a la investigación más específica y detallada de 3 métodos utilizados para cifrado, su difusión en la industria, el desempeño y otros parámetros que los caractericen, con el fin de explicarlos de forma clara y de evaluar su idoneidad y complejidad para la implementación en el lenguaje de descripción de hardware Verilog. Una vez que se tengan los conocimientos suficientes acerca de criptografía y de métodos de cifrado, sus pros y contras, el siguiente paso en este proyecto consiste en el diseño y la

14 implementación de un algoritmo de cifrado en bajo nivel utilizando el lenguaje de descripción de hardware Verilog, para lograr la síntesis del código propuesto. 4

15 5 CAPÍTULO 2: Desarrollo teórico 2.1. Criptografía La criptografía es la ciencia que se ocupa de técnicas para cifrar y descifrar información, para que solo las personas a las que va dirigida la información tengan acceso a ella. El procedimiento que se utiliza para cifrar datos se efectúa por medio de un algoritmo, que se le puede considerar una función matemática. Por lo que, un algoritmo de cifrado es una fórmula para hacer de la información datos no comprensibles, usando un código y una o más claves. El mensaje que tiene que ser resguardado (denominado texto plano) se transforma mediante la función, y a la salida del proceso después de utilizar la clave se obtiene el texto original Historia de la criptografía El primer sistema criptográfico documentado fue un sistema basado en la posición de las letras en una tabla, fue escrito por Polibio un historiador griego. Otro de los sistemas que utilizaron los griegos fue la Escítala Espartana, que consistía en un cilindro que servía de clave y en el que se enrollaba el mensaje. Los Romanos tenían también un método criptográfico actualmente conocido como César. Blaise de Vigenère escribió un tratado sobre la escritura secreta convirtiéndose en uno de los criptógrafos más importantes del siglo XVI. A partir del siglo XVII hasta el siglo XIX los monarcas aumentaron su interés por la criptografía. Durante la segunda guerra mundial la criptografía tuvo grandes avances, en especial por las máquinas de cálculo. Los nazis utilizaron máquinas de cifrado para lograr comunicaciones más seguras.

16 6 Esta máquina se llamó Enigma la cual consistía de una serie de rotores, los que ayudaban a calcular las operaciones para cifrar o descifrar el mensaje. Tras la culminación de la guerra, se ingresa a una etapa de gran desarrollo teórico, sio Claude Shannon uno de los personajes más importantes. Luego con el gran desarrollo de las computadoras los métodos y las técnicas cambiaron drásticamente, llegando a convertirse en algoritmos muy complejos. A lo largo de la historia el criptoanálisis ha progresado ligado a la criptografía y se ha dividido en 2 tipos, el criptoanálisis clásico y el moderno Criptoanálisis clásico Uno de los elementos más importantes en el criptoanálisis clásico es el análisis de frecuencias. En todas las lenguas conocidas, ciertas letras del alfabeto aparecen más frecuentemente que otras; por ejemplo, en español, las vocales son muy frecuentes, ocupando alrededor del 45% del texto, sio la E y la A las que aparecen en más ocasiones, mientras que la frecuencia sumada de F, Z, J, X, W y K no alcanza el 2%. Igualmente, se pueden reunir estadísticas de aparición de pares o tríos de letras. El análisis de frecuencias revelará el contenido original si el cifrado utilizado no es capaz de ocultar estas estadísticas. Por ejemplo, en un cifrado de sustitución simple (en el que cada letra es simplemente substituida por otra), la letra más frecuente en el texto cifrado sería un candidato probable para representar la letra E. [3] La criptografía clásica se basa en operaciones básicas:

17 7 Sustitución: es el cambio de significado de los elementos básicos del mensaje, o sea, las letras, los dígitos o los símbolos Trasposición: es una reordenación de los elementos; la gran mayoría de las cifras clásicas son combinaciones de estas y la anterior operación básica Criptografía moderna La criptografía moderna comienza con Claude Shannon, quien se considera el padre de la criptografía matemática, ha publicado varios libros que se han convertido en la base teórica de la criptología y criptografía. La Criptografía moderna se basa en factores como la velocidad de cálculo y la matemática que permite encontrar y establecer sistemas criptográficos más seguros. Se divide en 3 tipos: los de clave simétrica, los de clave pública y hash Aplicaciones de la criptografía La criptografía ofrece seguridad en medios de comunicación, ya que permite establecer canales seguros sobre redes de computadoras sin perder la velocidad de transferencia, se ha reducido los riesgos de fraudes y se ha garantizado que las operaciones no sean espiadas. La identificación y autenticación es otra aplicación de la criptografía, actualmente uno de los más extidos usos de las técnicas y métodos que proporciona la criptografía es la autenticación de información digital (también llamada firma digital), la cual se utiliza para identificar un individuo.

18 8 También la criptografía ofrece la certificación de esquemas mediante el cual una entidad certificadora valida la identidad de los usuarios Procesos matemáticos Para cifrar un dato se pueden utilizar tres procesos matemáticos: Hash Hash son algoritmos matemáticos que generan una representación numérica única y compacta de un cierto dato. Este tipo de algoritmos se distinguen por que el valor original se modifica a través de la implementación del algoritmo y no existe manera para hacer el proceso de regreso, es decir que del valor modificado pueda regresar al valor original. Los algoritmos Hash producen valores de 128 bits o más, lo que hace una combinación mayor a los mensajes diferentes que se pueden intercambiar en todo el mundo. Lo que hace un hash es comprimir el documento en un único bloque de longitud fija, bloque cuyo contenido es ilegible y no tiene ningún sentido real. Algunos algoritmos que utilizan este método son PGP (Pretty good Privacy), SHA (Secure Hash Algorithm), MD5 (Message Digest Algorithm), RIPEMD Criptografía simétrica También llamado de clave simétrica o de clave privada. En este tipo de cifrado se utiliza una misma clave para el cifrado y el descifrado, en este tipo de criptografía la seguridad reside en la clave ya que el algoritmo de cifrado es público. Por lo que al transmitir la clave debe de hacerse de una forma segura, de otro modo no será eficiente el

19 9 sistema de seguridad. En la actualidad, las computadoras pueden descifrar claves con mucha rapidez, y ésta es la razón por la cual el tamaño de la clave es importante en los sistemas de cifrado modernos. Estos algoritmos se basan en la transposición y la permutación. Algunos ejemplos de algoritmos simétricos son 3DES, AES, Blowfish e IDEA. La desventaja más grande de este sistema es el intercambio de la clave, ya que es difícil encontrar el canal de comunicación adecuado Criptografía asimétrica Conocida también como de clave pública. Este método utiliza una clave para cifrar y otra para descifrar. Las 2 claves son dadas por la persona a la que se le envía el mensaje. Una clave se le entrega a cualquier persona y es la clave pública y la otra clave es la del propietario y nadie más debería tener acceso a ella. Una vez cifrado con la clave pública solo podrá ser descifrado por la clave privada. Se logra más confiabilidad ya que no se requiere del intercambio de claves como en los sistemas simétricos, solo se ocupa antes de la transmisión conocer la clave pública del destinatario. El tamaño de la clave es una medida de seguridad, aunque no se puede comparar el tamaño de la clave del cifrado simétrico con el cifrado asimétrico para medir la seguridad. Mientras 128 bits son suficientes para cifrados simétricos, dada la tecnología de factorización de hoy en día, se recomia el uso de claves públicas de 1024 bits para la mayoría de los casos.

20 10 Algunas desventajas de este cifrado es que para una misma longitud de clave y mensaje se ocupa más tiempo de proceso, las claves deben ser más grandes que las de cifrado simétrico y el mensaje cifrado ocupa mayor espacio que el original. Algunos algoritmos que utilizan este método son: Diffie-Hellman, RSA, DSA, ElGamal y la Criptografía de curva elíptica. A partir de estos algoritmos se crean protocolos, algunos de ellos bastante conocidos, que se presentan abajo Domain Name Server Security (DNSSEC): es el protocolo para servicios de distribución de nombres seguros. Generic Security Services API (GSSAPI): GSSAPI provee una interfase de autenticación, intercambio de claves. Secure Socket Layer (SSL) / Transport Layer Security (TLS): SSL es uno de los dos protocolos para conexiones WWW seguras. La seguridad WWW se ha vuelto importante con el incremento de información sensible, como números de tarjeta de crédito. Secure Hypertext Transfer Protocol (SHTTP): Protocolo de transferencia de Hipertexto seguro): el protocolo de transferencia segura de hipertexto es otro que provee mas seguridad a las transacciones WWW.

21 11 IEEE P1363: Especificaciones sobre el estándar criptográfico de llave pública: es un estándar criptográfico de clave pública. Consiste de varios algoritmos de llave pública para encripción y firma digital. Secure Shell (Shell Seguro): el protocolo SSH versión 2 es desarrollado por el Grupo de trabajo SecSh de la IETF. Es un protocolo muy versátil para las necesidades de Internet. A parte de analizar los conceptos que engloban la criptografía, los algoritmos criptográficos y los procesos matemáticos que se utilizan, este proyecto prete evaluar la facilidad y la flexibilidad de los algoritmos más adelante estudiados para implementarlos en hardware utilizando un FPGA, por lo que se introducirán los conceptos relevantes sobre FPGA y conceptos relevantes para comprer la síntesis de un programa en verilog FPGA La arquitectura de un FPGA (Field Programmable Gate Array) consiste en arreglos de varias celdas lógicas las cuales se comunican unas con otras mediante canales de conexión bidimensionales, como se muestra en la figura 2.1

22 12 Figura 2.1 Arquitectura básica de un FPGA La estructura de las celdas lógicas y las formas en que estas pueden ser interconectadas, tanto salidas como entradas de la celda, varían de acuerdo al fabricante. Cada FPGA tienen una gran cantidad de celdas lógicas y es posible implementar grandes funciones utilizando varias celdas lógicas en cascada. Para realizar la lógica de interconexión, se desarrollan diferentes métodos, los métodos más importantes son: Antifuse, donde se utilizan sistemas que funcionan de manera opuesta a un fusible normal (generando un corto al programarse y un OL si no se programa), este esquema de síntesis es un poco limitado dado que sólo puede utilizarse una vez al igual que al romper un fusible. SRAM, son celdas utilizadas como generadoras de funciones que simulan la lógica combinacional y controlan las interconexiones lógicas y los multiplexores del sistema. Celdas Lógicas

23 13 La estructura de las celdas lógicas se ve fuertemente influida por la tecnología utilizada para fabricar el FPGA. Un FPGA que tiene una gran cantidad de canales de interconexión tie a tener pequeñas celdas lógicas con muchas entradas y salidas en comparación con el número de compuertas que tiene la celda, este tipo de FPGAs generalmente utilizan tecnología ANTIFUSE. Un FPGA que tiene una estructura pequeña en canales de interconexión tie a tener grandes celdas lógicas con pocas entradas y salidas en comparación con el número de compuertas que hay en la celda. Este tipo de FPGA generalmente está hecho con tecnología SRAM. Una arquitectura con celdas lógicas pequeñas nos permite utilizar totalmente los recursos del dispositivo. Sin embargo, si las celdas lógicas son demasiado pequeñas tremos que utilizar un gran número de estas en cascada para poder implementar funciones booleanas grandes, lo cual agrega un tiempo de retardo en la función implementada. Cuando el tamaño de la celda lógica es grande sucede lo contrario. Es posible utilizar un gran número de compuertas por lo que podemos implementar funciones booleanas de varios términos con pocas celdas lógicas. No afecta la frecuencia máxima de trabajo, sio el mismo tiempo de retardo para todas. La tecnología SRAM y ANTIFUSE son comúnmente utilizadas por la mayoría de los fabricantes. La tecnología SRAM es utilizada por Altera, Lucent Technologies, Atmel,

24 14 Xilinx y otros. La tecnología ANTIFUSE es utilizada por Cypress, Actel, QuickLogic, y Xilinx Normas para obtener un diseño sintetizable en Verilog El sistema Icarus Verilog cuenta con un sistema de síntesis digital, para esto hace uso de diferentes bibliotecas que lo ayudan a separar a las ecuaciones y sistemas digitales en compuertas discretas. En la tabla 2.1 se resume lo que Icarus Verilog sintetiza y lo que no. Tabla 2.1 entidades sintetizables en verilog Procesos Operadores binarios aritméticos Operadores relacionales Operadores lógicos Operadores lógicos de bit Concatenaciones {,} Desplazamiento Estructuras de control Asignaciones procedurales Eventos Operadores binarios aritméticos Condicional Compuertas lógicas Utilización de parámetros. Utilización de variables tipo Estructuras sintetizables always suma(+), resta (-) multiplicación (*), división (/), modulo (%) >=, <=,!=, == >,< y de reducción: ~, ~&, ~^, ^~, &,, ^, ~&,!,&&, ~, ~^, ^~ ~, &,, ^ izquierda o derecha, con adición de ceros if-else y case (con anidaciones) no bloqueantes de nivel y de flanco positivo suma (+) y resta (-)?: and, or, xor, nor, xnor, buf, not reg, wire, input, output, inout No sintetizables initial for, while, repeat, wait bloqueantes de flanco negativo nand, bufif, notif Task y Function

25 15 Se utilizará la arquitectura Virtex que es la utilizada por el sistema Icarus Verilog para sintetizar en sistemas Spartan 3E. Esta librería cuenta con las celdas de la tarjeta de desarrollo y por tanto logra traducir el diseño de la mejor manera para el desarrollo en la FPGA. Virtex, En la tabla 2.2 se da una lista de las celdas que se implementan en la arquitectura Tabla 2.2 Celdas de la librería Virtex que maneja Icarus Verilog Celda BUFE BUFT IBUF OBUF IPAD OPAD IOPAD BUF INV FDCE FDRE FDCPE Descripción Buffer tri-estado con habilitador activo en alto Buffer tri-estado con habilitador activo en bajo Buffer de entrada de una sola salida, con selección de estándar de Entrada/Salida Buffer de salida de una sola salida Puerto de entrada Puerto de salida Puerto de entrada-salida Buffer de propósito general Inversor simple Flip-flop D de flanco positivo con habilitador de reloj y reinicio asincrónico Flip-flop D de flanco positivo con habilitador de reloj y reinicio sincrónico Flip-flop D de flanco positivo con habilitador de reloj, inicio y reinicio asincrónico

26 16 VCC GND LUT2,3,4 XORCY MUXCY_L MUXF5,6 MUXCY BUFG * Conexión a fuente Conexión a tierra Tablas de búsqueda de salida general de 2,3,4 bits y salida general XOR con lógica de acarreo con salida general Multiplexores 2 a 1 con lógica de acarreo y salida local Multiplexores 2 a 1 con salida general Multiplexores 2 a 1 con lógica de acarreo y salida general Buffer global de reloj MULT_AND* AND de multiplicación rápida CAPÍTULO 3: Algoritmo de cifrado de datos AES En este y los siguientes capítulos se estudiará y evaluarán 3 de los algoritmos utilizados para el cifrado de datos. El AES (Advanced Encryption Standard) es uno de los algoritmos de cifrado más utilizados hoy en día por su seguridad, eficiencia y facilidad de implementación, aparte de que es un algoritmo público. De hecho es el estándar de cifrado elegido por el Instituto Nacional de Estándares y Tecnología de EEUU (NIST) como estándar de proceso de información federal. AES está basado en el algoritmo criptográfico Rinjdael y es un algoritmo de cifrado en bloque simétrico, o sea, que toma un texto en claro de una longitud fija de bits y lo transforma mediante una serie de operaciones en otro texto cifrado de la misma longitud.

27 Estructura de AES AES trabaja con bloques de datos de 128 bits y longitudes de claves de 128, 192 o 256 bits y tiene 10, 12 o 14 vueltas o rondas respectivamente, y cada vuelta es un conjunto de iteraciones de 4 funciones matemáticas invertibles y diferentes, la última vuelta consiste de 3 operaciones básicas añadio una ronda inicial. Las transformaciones básicas son AddRoundKey, SubByte, ShiftRows, MixColumns y Key Schedule, que se explican más adelante, y a parte se tienen el programa de claves. La información generada por cada función se conoce como Estado, y se representa como una matriz A de bytes de 4 filas y Nb columnas, donde Nb depe del tamaño del bloque. tamañodelbloque Nb = bits (3.1-1) 32 La clave se representa con una matriz rectangular de 4 filas y Nk columnas. Nk tamañodeclave = bits (3.1-2) 32 El número de vueltas es expresado por Nr = máx( Nk Nb) + 6 (3.1-3) Descripción de las funciones

28 18 Figura 3.1. Algoritmo AES [4] AddRoundKey Es una suma XOR entre el texto plano o mensaje a cifrar y la clave. La XOR realizada es con las matrices de entrada y la de la subclave correspondiente byte a byte ByteSub ByteSub es una sustitución no lineal, que actúa indepientemente en cada byte de la matriz A. Cada byte es invertido y posteriormente se le aplica una transformación lineal,

29 19 donde el 0 no se cambia, y se representan en hexadecimal. La transformación completa se puede realizar mediante una sola sustitución en la matriz llamada S-Box. Lo que se hace es tomar el byte en hexadecimal de la matriz de entrada y ese número se transforma en los índices de la matriz. Figura 3.2. Matriz S-Box [5] Así por ejemplo si se aplica esta función a 7b, de la matriz anterior se tiene que la fila es 7 y la columna b, por lo que el resultado sería 21.

30 ShiftRow La matriz A recibe un corrimiento circular a la izquierda en sus filas. Así la primera fila no se corre, la segunda se corre un byte, 2 bytes la tercera fila y 3 la cuarta MixColumns Figura3.3. función ShiftRow [5] Cada columna de la matriz A se multiplica por una columna constante. Las columnas se tratan como polinomios KeySchedule AES está definido para permitir solo bloques de 128 bits y las longitudes de las claves son de 128, 192 y 256 bits. Aunque lo que garantiza la seguridad del algoritmo hasta el año 2030 son 128 bits. Esta función es una extensión de la clave K, esta se expande a una matriz de 4 filas y Nb(Nr+1) columnas Descifrado Es el proceso inverso del cifrado, solo que las subclaves tienen un papel más importante, y se utilizan desde la última generada. Lo que se hace es invertir el orden de las funciones y realizar las transformaciones inversas.

31 21 Figura3.4. Algoritmo de descifrado [5] Para la función AddRoundKey lo que cambia es que se empieza por la última ronda. En la función ByteSub se realiza lo opuesto, para ello se usa otra S-Box con valores inversos.

32 22 Figura 3.5. S-Box inversa [5] En la función ShiftRow inversa, las filas se desplazaran hacia la derecha el mismo número de posiciones. Y por último la función inversa de MixColumns, que es la multiplicación inversa sobre los bytes de la misma columna SubClaves AES posee una clave elegida por el usuario y de esta se derivan diferentes subclaves Ki, esta forma de algoritmo se basa en la seguridad ya que depe únicamente de la clave. Las funciones de las cuales se derivan las subclaves (RoundKey) son de expansión y de selección.

33 23 El número de bits para las subclaves es igual al tamaño del bloque multiplicado por n + 1. Así por ejemplo para un bloque de 128 bits y 10 vueltas, se ocupa (128*11)=1408 bits de subclaves. Para la función de selección toma la secuencia conseguida de la función de expansión y las asigna a cada subclave Ki. La función de expansión genera bytes como subclaves partio de la clave de usuario K. La expansión se describe como un array W, con una longitud de Nb(Nr+1), y con palabras de 4 bytes. Las Nk palabras primeras del array son la clave de cifrado y el resto se generan de estas. Existen 2 versiones de expansión para asegurar la integridad de los datos, y depe del tamaño de Nk, para cuando es mayor que 6 y para el caso contrario Eficiencia AES Analizando cada una de las funciones que utiliza este algoritmo, algunas funciones pueden ser optimizadas por software, la operación más costosa en tiempo, es la parte de obtener inversos multiplicativos del campo GF(2 8 ), aunque este análisis no se realizó en este proyecto, por el contrario se realizó el estudio de la función optimizada, en la que esta operación es calculada con anticipación y sustituida por una simple consulta en la tabla S- Box, al igual que esta, otras funciones podrían ser calculadas antes. El análisis de la eficiencia en hardware depe de otros parámetros, de la cantidad de memoria, el largo y cantidad de registros, el tamaño de los operandos y las operaciones que se utilicen y analizar estos parámetros en función de la tecnología que se utilice. Según

34 24 la referencia [5] la velocidad de AES implementado en una FPGA para un cifrado de 128b es de 2Gb/s Seguridad de AES La linealidad en los algoritmos es un factor que podría inducir a relacionar los datos de entrada con los de salida, un mecanismo que incluye AES es la no linealidad, lo hace alternando las claves, utilizando diferentes claves en cada ronda, lo que complica conocer la información original. La propagación, una mala propagación permite derivar información de la clave a partir de conocer las probabilidades de las diferencias de la propagación, por lo que se quiere que las probabilidades sean muy pequeñas para evitar un ataque de tipo diferencial. AES logra una buena propagación de la función no lineal del algoritmo S-Box y el número de rondas. Otro aspecto importante a tomar en cuenta es la cantidad de ataques que ha recibido AES sin poder lograr su objetivo, por ejemplo: Square Attack: se apoya en las propiedades de inversión de cada uno de los pasos de Rijndael. En vez de mandar un par de mensajes con una diferencia preestablecida, este ataque manda 256 textos, que coinciden en todos los S-boxes menos uno, y en ese S-box se mandan todos los mensajes posibles. Luego se observan las propiedades de este conjunto de mensajes, y se deducen propiedades que debería tener el conjunto de salida, si es que se adivinó el segmento de clave correspondiente al S-box correctamente. Esto permite adivinar la clave, en vez de

35 25 trabajar sobre una clave de 128 bits, se trabaja sobre 16 subclaves de 8 bits cada una, lo cual es muy rápido de hacer. Collision attack: este tipo de ataque utiliza técnicas especiales para detectar colisiones internas, Un choque interno ocurre, si una función dentro de un algoritmo criptográfico tiene argumentos de entrada diferentes, pero devuelve un argumento de salida igual. Timing attack: en este ataque el adversario mide el tiempo necesario para realizar los cálculos, y extrae la información suplementaria sobre los sistemas de encriptación Expansión y Aplicaciones Comunicaciones móviles a través de Internet En las telecomunicaciones móviles a través de Internet, ingenieros alemanes del instituto Fraunhofer (SIT), desarrollaron un sistema de codificación basado en la plataforma Java y utilizan un algoritmo AES. Por lo que pueden analizar protocolos criptográficos y el funcionamiento de teléfonos móviles, esto indepiente de la calidad de la señal Aplicaciones en las redes Wireless Lan Este es un mecanismo de seguridad en estas redes, que utiliza el estándar AES, por lo que proporciona integridad, confiabilidad y autenticación de origen a la red, hacio uso del cifrado en los enrutadores.

36 26 CAPÍTULO 4: Algoritmo de cifrado RSA PGP es un protocolo que fue diseñado por Philip Zimmermann en 1991 para proporcionar un intercambio seguro de correo electrónico. Es un algoritmo de clave simétrica con intercambio de clave mediante el sistema de llave pública generalmente RSA y hash MD5 para la firma digital. En este capítulo se estudiará el algoritmo de cifrado RSA. RSA fue creado por Ronald Rivest, Adi Shamir y Leonard Adleman en 1977; el nombre corresponde a las iniciales de los apellidos de los autores. Es un algoritmo asimétrico de bloques, y utiliza una clave pública y otra privada, la primera se distribuye y la segunda como su nombre lo indica es privada Estructura RSA RSA consiste de 2 algoritmos matemáticos: El máximo común divisor de Euclides y el último teorema de Fermat. Se emplea también la función exponencial discreta la cual es muy difícil de calcular su inverso, el logaritmo discreto. El procedimiento para intercambio de mensajes es el siguiente: El receptor R elige 2 números primos grandes p y q (1024 bits), y obtiene n=pq. R obtiene la función multiplicativa de Euler dado que son primos: φ ( n) = φ( pq) = φ( q) φ( p) = ( p 1)( q 1) (4.1-1) R selecciona un número e tal que 1<e< φ(n) de manera que sea primo relativo con φ(n) calcula su inverso módulo φ (n). y

37 27 d 1 = e φ( n) (4.1-2) Los números d y n los guarda R en secreto y es llamada clave privada y los números e y n es la clave pública. Para enviar un mensaje x a R se cifra del siguiente modo: Enc = ( x) x e n (4.1-3) R recibe y = Enc(x) y hace lo siguiente d Des y) ( y ) n ( = (4.1-4) 4.2. Eficiencia de RSA Para implementar el algoritmo en RSA se requiere de divisores, registros, restadores y comparadores. La división es la operación aritmética que requiere mayor hardware, por lo que es un factor limitante en el desempeño de las arquitecturas Seguridad de RSA La seguridad de RSA se basa en el problema RSA y la factorización de números grandes. El problema RSA consiste en que dado un número entero n=pq, producto de dos primos del mismo tamaño, un entero e, tal que: mod( e,( p 1)( q 1)) = 1 (4.1-5) y un entero c, entonces el problema RSA es encontrar a un entero m tal que: me = c(mod n) (4.1-6)

38 28 Es decir el problema RSA es encontrar la e-ésima raíz modulo un producto de dos primos. Actualmente la aproximación para solventar el problema del RSA es el factor del módulo n. La factorización de números grandes es un aspecto importante, las contraseñas pueden ser la multiplicación de números de 100 ó 200 dígitos, y el resultado se utiliza como clave pública, y los números primos para obtenerla como clave para descifrar, a un superordenador le llevaría más de 300 millones de años encontrar los números que se multiplicaron para obtener la clave [7]. Para obtener una mayor seguridad las claves han pasado de ser de 200 bits a 1024 actualmente, lo que lo hace lento Expansión y Aplicaciones de RSA RSA es utilizado para autenticar mensajes de los usuarios, bancos y gobiernos. RSA ofrece autenticación de doble factor para plataformas de dispositivos móviles con RSA SecurID software tokens, un dispositivo móvil con RSA securid software token activado está diseñado para ofrecer el mecanismo apropiado para asegurar el acceso a los recursos de red, al tiempo que ofrece confidencialidad, flexibilidad y la opción de una autenticación fuerte para consumidores y empresas. CAPÍTULO 5: Algoritmo de cifrado DES DES (Data Encryption Standard) es un algoritmo simétrico desarrollado en 1977 por la oficina Nacional de Estándares de EEUU con la colaboración de IBM, tiempo después salió la versión para hardware, que entró en los estándares de ISO con el nombre de DEA. DES es un algoritmo de cifrado por bloques que utiliza 64 bits y una clave simétrica de 64bits,

39 29 de los que 56 se usan para cifrar y los restantes 8 son de paridad para detección de errores en el proceso Estructura de DES DES utiliza 16 rondas con una permutación inicial y otra final, las cuales son inversas, llamadas PI y PF respectivamente. Antes de entrar a las rondas los bloques son divididos en 2 partes de 32 bits. Cada Ronda cuenta con 2 funciones fundamentales que serian una XOR y la función F. La permutación inicial PI lo que hace es desordenar los bits de entrada que luego son separados en bloques de 32 bits, L0 los más significativos y R0 los menos significativos, la función F se aplica a R0 y a la clave de la ronda, y al resultado se le aplica una XOR con L0, seguidamente se intercambian las 2 partes, al final se aplica PF.

40 30 Figura5.1. Algoritmo DES [9] El descifrado es idéntico al cifrado pero en sentido inverso y la última clave que se generó se aplica en la primera ronda de descifrado Función F La función F es la Función de Feistel, y se divide en subfunciones:

41 31 Expansión, expande los 32 bits de entrada en 48 bits. XOR, se realiza con los 48 bits y la clave de la ronda proveniente del algoritmo de generación de claves. Caja S-box, los 48 bits se agrupan en 6 bits y se sustituyen en estas cajas, cada una produce 4 bits por lo que a la salida de la caja se vuelve a tener los 32 bits. Por último se realiza una permutación y esta es la salida de la función F Generación de claves Primero se realiza una permutación PC1 (Permute Choice), que también descarta al último bit de cada byte. Después de la primera permutación se realiza otra que selecciona 48 de los 56 bits de entrada 5.2. Eficiencia de DES El tamaño de los bloques es un factor importante por lo que a la hora de implementar en hardware el algoritmo DES, resulta más fácil de implementar por las funciones PI y PF, ya que divide el bloque de entrada en 2 partes de 32 bits por lo que se ocuparía de menos recursos. Al ser un algoritmo de clave simétrica no es necesario de 2 algoritmos distintos para el cifrado y el descifrado, por lo que se simplifica la implementación sobre hardware Seguridad de DES Debido a lo corto de su clave no se considera un sistema robusto, aparte de que no es de clave variable, por lo que las posibilidades de configuración son muy limitadas.

42 32 Si se conoce un número suficiente de textos, la seguridad se ve reducida, ya que mediante el criptoanálisis diferencial se podría romper el sistema Expansión y aplicaciones de DES En la actualidad DES es considerado poco práctico debido a la longitud de su clave, y ha sido sustituido por TDES o Triple DES que consiste en 3 iteraciones sucesivas del algoritmo DES y así conseguir 3 claves diferentes de 64 bits. A pesar de lo anterior es uno de los sistemas más extido del mundo, el más barato y también el más probado, aparte de que es muy rápido y fácil de implementar. CAPÍTULO 6: Comparación de los algoritmos AES, DES y RSA En esta parte del proyecto se tienen en cuenta la estructura del algoritmo, los elementos matemáticos y las características de la FPGA. Durante el desarrollo de un circuito a implementar, es sumamente útil enter el uso de los recursos, especialmente cuando se intenta optimizar el tamaño y la velocidad. En este capítulo se hará una descripción más detallada de la factibilidad para implementar en una FPGA los algoritmos anteriormente estudiados. Un factor importante a la hora de implementar en una FPGA es tomar en cuenta y ser consciente de las ventajas que nos puede dar. Por ejemplo, las tablas de consulta o LUTs, la Spartan-3 tienen LUTs de cuatro entradas para implementar tablas de verdad de hasta 16 combinaciones, resultantes de las cuatro señales entrantes. Por otro lado la simple tarea de multiplicar dos números puede consumir muchos recursos, y su implementación en circuitos digitales puede ser compleja. Multiplicar dos

43 33 números de 32 bits cada uno podría requerir la ejecución de más de 2000 operaciones. Es por esto que los FPGAs tienen circuitos multiplicadores integrados, para ahorrar el uso de LUTs y flip-flops en aplicaciones matemáticas y procesamiento de señales. Los FPGAs Virtex-II y Spartan-3 cuentan con multiplicadores de 18 bits por 18 bits, por lo que multiplicar dos números de 32 bits cada uno requiere tres multiplicadores para cada operación. Muchos algoritmos de procesamiento de señales implican la conservación de los números que se están multiplicando, y como consecuencia los FPGAs de más alto rimiento como el Virtex-5 tienen circuitos multiplicadores acumuladores integrados. La FPGA Spartan3E XC3S500E contiene 20 multiplicadores dedicados. Los recursos de memoria son otra especificación clave a considerar. La RAM definida por el usuario, embebida en el chip FPGA, es útil para almacenar conjuntos de datos o para transferir valores entre ciclos paralelos. Depio de la familia de FPGA, se puede configurar la RAM integrada en bloques de 16 o 36 kb. También se tiene la opción de implementar conjuntos de datos como arreglos utilizando flip-flops; sin embargo, los arreglos grandes rápidamente se vuelven expansivos para los recursos lógicos del FPGA. Los algoritmos se dividen principalmente en dos grandes bloques que son: Bloque de CIFRADO Bloque de DESCIFRADO Aunque estos generalmente ocupan los mismos bloques, pero hacen uso de ellos en orden inverso.

44 34 El algoritmo AES utiliza 128 bits de bloque y hasta 256 bits de clave, hace uso de transformaciones no lineales, aun que se manejan con tablas S-box, por ejemplo para la función bytesub. Para esta función se puede crear una tabla en la memoria ROM. La función ShiftRow es un corrimiento hacia la izquierda, implementar el corrimiento en hardware no es complicado, en Verilog existe el operado << para corrimientos hacia la izquierda, que llena con ceros las posiciones vacantes, aun que por seguridad y no incurrir en errores los desplazamientos no se realizan de esta forma. La función MixColumn consiste en multiplicaciones de polinomios, por lo que se ocuparían una serie de multiplicadores y al mismo tiempo desplazamientos para obtener el polinomio resultante. La función Addroundkey consiste de realizar una XOR que es fácilmente implementable en hardware, ya que en Verilog se logra con el operador ^. Para el descifrado se ocupan las tablas de la función bytesub pero inversas, los corrimientos ahora hacia la izquierda. Para la función MixColumn es necesario de nuevo los multiplicadores y las XOR, aunque se utilizarían de modo diferente. Al igual que en el descifrado lo único que se requiere para la función Addroundkey son XOR. La implementación hardware del algoritmo AES-Rijndael corresponde al tipo iterativo, ya que son varias rondas. El algoritmo RSA utiliza claves de hasta 1024 bits, aunque no suele usarse para cifrar archivos, si no, más bien para cifrar claves simétricas. La implementación de este algoritmo implica realizar operaciones aritméticas modulares como: la suma modular, la resta modular, la multiplicación y el exponente modular. Cada una de ellas conlleva a una iteración de operaciones aritméticas regulares como suma, resta, multiplicación y división.

45 35 Al utilizar claves tan grandes y múltiples multiplicaciones y operaciones, el uso de registros incrementa enormemente. El algoritmo DES al utilizar bloques y claves pequeñas, y aparte dividir el bloque para realizar las operaciones, hace que el uso de recursos no sea un impedimento para lograr implementarlo en hardware, de hecho las funciones que utiliza, son factibles y cómodas para implementar. Lo primero que realiza es una permutación, luego se divide el bloque en 2 y se efectúa la función F, que esta lo que realiza es una extensión de 32 a 48 bits, luego ejecuta una XOR de 48 bits, y otro componente importante son las S-box que para esto se requieren 8 tablas, menos y más pequeñas que las que requiere AES. En la tabla 6.1 se comparan los 3 algoritmos, como se puede observar el algoritmo DES es el más fácil de implementar ya que su algoritmo no es complicado, la clave que utiliza es pequeña por lo que la utilización de recursos también va a disminuir. Aunque entre más pequeñas son las claves el algoritmo se vuelve más inseguro y débil ante ataques. A pesar de que RSA es muy seguro y altamente utilizado, la magnitud de la clave hace que el uso de recursos aumente, aparte de que el uso si bien no es limitado, no se acostumbra utilizarlo para cifrar textos grandes. Tabla 6.1 Comparación de algoritmos Algoritmo Tamaño clave bits Uso de recursos Complejidad del algoritmo facilidad de implementación Utilidad Flexibilidad AES alta alto media Cifrar Textos grandes Alta 1 RSA 1024 alta medio media Cifrar Claves Media 2 DES 64 baja bajo alta Cifrar Textos grandes Media 3

46 36 1 La flexibilidad en el número de bits de la clave hace al algoritmo muy seguro aproximadamente hasta el 2030 con 128 bits 2 Es muy utilizado para cifrar claves, aunque para cifrar textos grandes no es muy común utilizarlo 3 Actualmente DES no es muy seguro, pero al hacer varias rondas aumenta la seguridad CAPÍTULO 7: Algoritmo de cifrado propuesto El algoritmo es de cifrado por bloque, y se realizan 3 operaciones, los bloques a cifrar son de 32 bits y la clave es de 16 bits, la cual se encarga de decir cual operación se realiza primero y las características de cada operación, las operaciones son las siguientes: XOR: se realiza con los 16 bits de la clave y la parte alta o la parte baja del bloque, lo cual es indicado por un bit de la clave. ROT: es una rotación que puede ser hacia la izquierda o hacia la derecha, esta característica y la cantidad de espacios a rotar se indican en la clave. CA2: se realiza un complemento a 2, y mediante la clave se indica si se va a realizar con el bloque dividido en pequeños bloques de 8bits o de 16bits. Para diseñar el algoritmo se retomó algunos conceptos de los algoritmos estudiados. En AES y DES por ejemplo utilizan la operación XOR, que es fácilmente implementable, a parte en DES dividen el bloque para aplicar las 2 funciones principales, de ahí se ideo que una de las operaciones fuera una XOR con la mitad del bloque y la clave. En AES realizan una rotación fija a las filas de una matriz, el algoritmo propuesto no utiliza matrices, pero al ser la rotación fácilmente implementable, se conjeturó que aplicar una rotación al bloque no ocuparía muchos recursos.

47 37 La tercera operación que es el CA2 se eligió ya que no utiliza muchos recursos y resulta factible y cómoda la implementación Clave Como se dijo anteriormente la clave es de 16 bits, mediante los cuales se toman decisiones sobre la forma de cifrar/descifrar. Se divide en 7 partes como se muestra en la figura 7.1, los 4 bits más significativos son para indicar el orden para ejecutar las operaciones sio 00 el XOR, 01 ROT, y 10 CA2, el valor 11 no está contemplado, por lo que si este valor se encuentra, se producirá un error. La cantidad de rotaciones se indica mediante los 5 bits siguientes. El sexto bit indica la dirección de la rotación. El quinto bit indica si la XOR se realiza con la parte alta o la parte baja del bloque. El cuarto bit indica la forma de realizar el CA2, ya sea con 8 bits o 16 bits. Los 4 menos significativos tiene un valor aleatorio que el usuario los elige Rotar XOR CA2 Cantidad de Ioperación IIoperación Iz=0 LSB=0 8bits=0 Aleatorios rotaciones De=1 MSB=1 16bits=1 Figura 7.1. Descripción de bits de la clave 7.2. Arquitectura general Para implementar este algoritmo se empezó por definir de forma muy general la arquitectura del cifrador propuesto, con las señales de entrada y de salida como se muestra en la figura 7.2. Para interactuar con la etapa anterior posee 7 señales, 6 de entrada y 1 de salida. Para la etapa siguiente que sería la interfaz con la memoria RAM se tienen 4 señales,

48 38 destinadas a la conexión para guardar los datos. La tabla 7.1 muestra una descripción general de las señales. Figura 7.2. Señales de entrada y salida Tabla 7.1 descripción de señales del cifrador Señal Tamaño bus (bits) Dirección Comunicación con etapa Proposito Done 1 input anterior indicación de que tiene los datos listos para cifrar/descifrar DirGet 11 input anterior Dirección de memoria donde va a tomar los datos DirSetIn 11 input anterior Dirección de memoria donde va a escribir los datos Size 10 input anterior cantidad de bloques a cifrar/descifrar Cif/Des 1 input anterior indica si los datos van a ser cifrados o descifrados Reset 1 input anterior señal de reset general Ready 1 output anterior indica que está lista para recibir datos DirSetOut 11 output interfaz Mem dirección donde se van a guardar los datos L/E 1 output interfaz Mem señal que indica si se le va a escribir o a leer a la memoria Dato 32 output interfaz Mem dato que se le va a pasar a la memoria En la figura 7.3 se observan los módulos principales que contiene el cifrador. El primer módulo es el que se representa de color amarillo y es el de Sensado, se encarga de

49 39 tomar los datos de entrada y verificar que sean válidas las direcciones y la cantidad de bloques, si son válidos los pasa a la siguiente etapa, de lo contrario emite una señal de error. El siguiente módulo que es de color rojo se encarga de los accesos a memoria ya sea de escritura o lectura, la comunicación con el ControladorALU es para pasarle los bloques que lee de memoria que luego serán cifrados o descifrados, después de que los datos son cifrados/descifrados la ALU le envía los datos para que los guarde en memoria, este módulo se encarga de actuar cuando se da un error, escribio en la primera posición de memoria el código del error, de esto se hablará más adelante. El módulo ControladorALU se encarga de decodificar la clave y pasarle la instrucción y el bloque correspondiente a la ALU, si hay un error en la decodificación de la clave, levanta una señal de error. La ALU de color celeste, se encarga de realizar alguna de las 6 operaciones, cuando se realizó el cifrado completo, o sea, si se realizaron las 3 operaciones correspondientes pasa el bloque al módulo ControladorIn-Mem de lo contrario se lo pasa al ControladorALU para coordinar la segunda y/o tercera operación. Figura 7.3. Arquitectura del cifrador

50 40 Ahora se hablará detalladamente de cada etapa Sensado La etapa Sensado es la encargada de la comunicación con el exterior, en la figura 7.4 se presenta un el módulo con sus entradas y salidas. Internamente se comunica con la etapa ControladorIn-Mem. Cuando Sensado esta lista está para recibir datos levanta la bandera ReadySensado y si la etapa externa tiene datos para enviar se lo indica mediante la señal Done (una descripción detallada de las señales se muestra en la tabla 7.2.), Sensado toma los datos y verifica que sean correctos. Figura 7.4. Módulo de Sensado Al decir que verifica que los datos sean correctos lo que hace es tomar los datos de entrada y realizar una comparación. Los datos importantes para esta etapa que toma de la

51 41 etapa anterior son la dirección donde se van a tomar los datos de memoria, la dirección donde se van a colocar después de cifrarlos/descifrarlos, y la cantidad de bloques a cifrar/descifrar, hay que tener presente que la primera posición a la que apunta la dirección donde se encuentran los datos (DirGet) es la clave, y que ésta no se encuentra contemplada en la cantidad de bloques. Otro aspecto importante a tomar en cuenta es que en la primera posición a la que apunta la dirección donde se van a guardar los datos (DirSet), se va a guardar el código de error y la información correspondiente al código de error, por otro lado si lo que se va a realizar es un cifrado, la segunda posición de memoria (DirSet+1), en los 16 bits menos significativos se va a guardar la clave, por el contrario si es descifrado los bloques se empiezan a guardar en DirSet+1. Tabla 7.2 descripción de señales del Sensado Señal Tamaño bus (bits) Dirección Comunicación con etapa Proposito Reset 1 input exterior señal de reset general Done 1 input exterior indicación de que tiene los datos listos para cifrar/descifrar DirGet 11 input exterior Dirección de memoria donde va a tomar los datos DirSet 11 input exterior Dirección de memoria donde va a escribir los datos Size 10 input exterior cantidad de bloques a cifrar/descifrar Cif 1 input exterior indica si los datos van a ser cifrados o descifrados CLK 1 input exterior Reloj ReadyControl 1 input ControladorIn-Mem indicación de que la siguiente etapa esta lista para recibir datos DirGetOut 11 output ControladorIn-Mem Dirección de memoria donde va a tomar los datos DirSetOut 11 output ControladorIn-Mem Dirección de memoria donde va a escribir los datos SizeOut 10 output ControladorIn-Mem cantidad de bloques a cifrar/descifrar CifOut 1 output ControladorIn-Mem indica si los datos van a ser cifrados o descifrados ErrSensado 3 output ControladorIn-Mem señal que indica el error ocurrido GoSensado 1 output ControladorIn-Mem indica a la siguiente etapa que tiene datos para pasarle ReadySensado 1 output exterior indica a la etapa exterior que está lista para recibir datos

52 42 Los tipos de errores que se pueden presentar en esta etapa, son relacionados con la cantidad de espacio en memoria. En la figura 7.5 se presentan 2, la figura a hace referencia a la cantidad de bloques a guardar, si DirSet es tal, que al guardar los datos se superara la capacidad de almacenamiento de la memoria, se produciría un error tipo 100 o 4 en decimal. Al igual la figura b indica si los bloques a leer son tales que superan el tamaño máximo de la memoria, esto produciría un error tipo 001. Por lo que el usuario debería de revisar si el Size, DirGet o DirSet son correctos. DirSet+Size TamMáx DirGet+Size TamMáx DirGet+Size DirGet DirGet (a) (b) Figura 7.5 (a)error100 (b)error 001 Otros tipos de errores que se pueden presentar son los de traslape de datos. Ya sea que DirSet se encuentre entre DirGet y DirGet +1, que se representa en la figura 7.6 a. O si DirGet y DirSet apuntan a la misma posición de memoria (Figura 7.6 b).

53 43 TamMáx TamMáx DirGet+Size DirGet+Size DirSet DirGet DirGet = DirSet (a) (b) Figura 7.6. (a)error 011 (b) Error 010 El error 101 se da cuando a pesar de que DirSet es menor que DirGet, la cantidad de bloques se traslapan. Ya que DirSet+Size se encuentra entre DirGet y DirGet+1 (Figura 7.7). TamMáx DirSet+Size DirGet+Size DirGet DirSet Figura 7.7 Error 101 Es importante notar que esta etapa solo detecta un error a la vez, por lo que es recomable si se detecta un error revisar todos los parámetros y no solo los involucrados en el error dado, para prevenir futuros fallos.

54 44 En la figura 7.8 se presenta un diagrama SM de la etapa de Sensado, en el estado 0, se inicializan las variables y las entradas se están constantemente leyo, y cuando se da que Done y ReadySensado están en 1, se pasa al próximo estado, en el que se realizan operaciones para pasar al siguiente estado y hacer una serie de comparaciones para detectar algún error. Si algún error se da, se levanta la bandera de error indicando cual error se dio y los pasa a la siguiente etapa para que esta lo maneje. Si no ocurre error se levanta la señal GoSensado para indicar a la siguiente que hay datos listos.

55 45 Figura 7.8 diagrama SM del módulo Sensado 7.4. ControladorIn-Mem Esta etapa se encarga de los accesos a memoria, de leer y guardar los datos, y pasarle el bloque y la clave a la etapa siguiente. En la tabla 7.3 se detallan las señales y en la figura 7.9 se encuentra el diagrama SM.

56 46 Figura 7.9 Módulo ControlInMem Para habilitar esta etapa, Sensado le envía una señal (GoSensado) indicando que tiene los datos listos, se ControlInMem se encuentra en el estado 0, pasa al estado 1 hasta el 4, en los que se lee la clave y el primer bloque, en el estado 4 si Size es 1 levanta la señal Ultimo, indicando que es el único bloque a cifrar. Si en vez de activarse la señal GoSensado, se activa ErrSensado, pasa directamente al estado 13, en el que se guarda el error en la primera posición que apunta DirSet, en los 3 bits más significativos del dato que se guarda se encuentra el código del error, si el error es 001 o 100, se guarda también el los

57 47 bits menos significativos el tamaño máximo de la memoria, esto es porque estos errores indican que se sobrepasó el límite máximo de memoria. En el estado 5 se verifica que la siguiente etapa está libre, y si se encuentra libre se levanta la señal CatchIn Indicando a la siguiente etapa que tome los datos, si no está libre, se queda en ese estado. El estado 6 se baja CatchIn y si Size es mayor a 1 prepara a la memoria para leer el siguiente bloque. En el estado 7 se decrementa Size, y se lee el dato. Si se va a cifrar y la bandera FlagFT está en bajo, indica que es la primera vez que pasa por aquí, y como es cifrado lo primero que se va a guardar en memoria es la clave por lo que pasa al estado 8, luego al 9, en los que se guarda la clave, luego pasa al estado 10, si la condición cifrado y!flagft no se cumple, pasa directamente al estado 10, en la que espera que la ALU tenga los resultados, cuando la ALU tiene los resultados, se lee el dato y para al estado 11 en el que se guarda, en la siguiente posición de memoria de DirSet. Si Size es igual a 0 indica que terminó de cifrar/descifrar por lo que pasa al estado 12, donde se guarda en la primera dirección el código de error 000, ya que no se produjo ningún error al cifrar/descifrar. Si del estado 7 al 11 se detecta un error en la etapa de ControlALU, se pasa al estado 14, el que se encarga de guardar en memoria el código del error en los 3 bits más significativos, y en los 16 bits menos significativos guarda la clave, que es la que produjo el error.

58 48 Tabla 7.3 Descripción de señales de ControladorInMem Señal Tamaño bus (bits) Dirección Comunicación con etapa Propósito CLK 1 input reloj Reloj Reset 1 input externa Reset CifSensado 1 input Sensado indica si el bloque se va a cifrar o descifrar GoSensado 1 input Sensado indica que etapa Sensado tiene datos para pasarle DirGetSensado 10 input Sensado Dirección de memoria donde va a tomar los datos DirSetSensado 10 input Sensado Dirección de memoria donde va a escribir los datos SizeSensado 9 input Sensado cantidad de bloques a cifrar/descifrar ErrSensado 3 input Sensado señal que indica el error ocurrido en Sensado ErrControl 2 input ControlALU si se dio un error en la decodificación de la clave DoneALU 1 input ALU terminó 3 operaciones, indica que puede tomar los datos DatoAMem 32 input ALU dato que se guarda en memoria DatoIn 32 input Interfaz RAM dato que devuelve la memoria al leer DatoOut 32 output Interfaz RAM dato que se le da a la memoria para escribir DirMem 10 output Interfaz RAM Dirección de acceso a memoria L_E 1 output Interfaz RAM indica si se va a escribir o a leer ReadyControl 1 output Sensado indicación de que esta lista para recibir datos de Sensado CifControl 1 output ControlALU indica si el bloque se va a cifrar o descifrar CatchIn 1 output ControlALU ResetInterno 1 output ControlALU-ALU Reset Interno aviso de que se tiene datos listos para pasarlos a siguiente etapa Ultimo 1 output ControlALU indica que es el último bloque a cifrar/descifrar BloqueControl 32 output ControlALU Bloque a cifrar/descifrar KeyControl 16 output ControlALU Clave

59 Figura 7.10 Diagrama SM de ControlInMem 49

60 ControladorALU El Controlador ALU consta de dos funciones principales una es la decodificación de la clave, para organizarlas las operaciones en un registro de 9 bits, y la otra función es tomar las operaciones a realizar, o sea, tomar 3 bits del registro de operaciones, y manipular la ALU. En la figura 7.11 se presenta el módulo con sus entradas y salidas con el número de bits de los buses. Dentro se encuentra el módulo de decodificación de la clave y el módulo del Control de la llave. Cada función es una máquina de estados a parte, que son habilitadas por la máquina de estados principal (ControladorALU). Figura 7.11 Módulo Controlador ALU En la tabla 7.4 se describe detalladamente las señales de entrada y salida del módulo ControladorALU. En la figura 7.12 se describe un diagrama SM del módulo en cuestión,

61 51 las partes de diferente color hacen referencia al módulo de DecodKey (café) y al módulo ControlKey (morado). Tabla 7.4 Descripción de señales del Controlador ALU Señal Tamaño bus (bits) Dirección Comunicación con etapa Proposito Reset 1 input ControladorInMem reset Ok 1 input ALU ALU terminó de procesar un bloque CatchIn 1 input ControladorInMem aviso de que etapa anterior tiene datos listos DatoFeedBack 32 input ALU dato que devuelve la ALU para seguir operando con él Ultimo 1 input ControladorInMem indica que es el ultimo bloque a cifrar/descifrar Bloque 32 input ControladorInMem bloque a cifrar/descifrar Key 16 input ControladorInMem clave Cif 1 input ControladorInMem indica si el bloque se va a cifrar o descifrar CLK 1 input reloj reloj Libre 1 output ControladorInMem indica que este módulo esta libre o listo para recibir nuevos datos Err 2 output ControladorInMem si se dio un error en la decodificación de la clave Dato1 32 output ALU por esta señal se pasa el bloque Dato2 16 output ALU se pasa el otro dato necesario para realizar la operación Instrucción 3 output ALU indica la instrucción a realizar ProxBloque 1 output ALU indica a la ALU que el dato que procese lo debe enviar a memoria y no FeedBack CatchOut 1 output ALU indica a la ALU que puede tomar los datos El estado 0, inicializa las variables, y espera a que la señal CatchIn se levante para pasar al siguiente estado, en el que tenio los datos de entrada, habilita al módulo DecodKey, en el que se descompone la clave en 3 operaciones, si se da un error en la decodificación de la clave se levanta la bandera ErrDecod, este error indica que los 4 bits de la clave no son válidos, ya que cada 2 bits solo puede contener los valores de 00, 01 o 10, si se encuentra un 11 en los 2 bits más significativos o en los siguientes 2 bits, se produce un error. Cuando se termina de decodificar la clave se pasa al estado 2, en el que

62 52 se deshabilita DecodKey, y se verifica el valor del registro CountIn, este registro cuenta las veces que el bloque ha pasado a la ALU, por lo que si tiene un valor de cero, el bloque no ha pasado por la ALU y el dato necesario es el bloque de entrada. Si tiene un valor de 3 significa que el bloque ya realizó las 3 operaciones y debe enviarse a memoria para ser guardado, y se levanta la bandera ProxBloque. Si el contador es diferente de estos valores indica que el bloque ha pasado por la ALU al menos una vez, por lo que el bloque a utilizar es el que devuelve la ALU (DatoFeedBack). DecodKey devuelve un registro de 9 bits que cada 3 bits indica la instrucción a realizarse, la variable CountIn se utiliza también para indicar cual operación tiene que ser ejecutada. La señal Ok indica que la ALU está libre y puede recibir datos, por lo que si esta en alto se pasa al estado 6 que habilita al ControlKey, este se encarga de pasarle los datos necesarios a la ALU, levantando la bandera CatchOut para que la ALU tome los datos. Internamente ControlKey lleva otro Contador (CountOut) que se incrementa interiormente y se le pasa el valor a CountIn que es el que maneja ControladorALU. Si CountIn es igual a 3 y la bandera Ultimo esta levantada, pasa al estado 0, si no se cumple esta condición, se repite el ciclo, aunque cuando es igual a 3 pero no está levantada la bandera Ultimo indica que hay más bloques por cifrar/descifrar, por lo que va al estado 4, en el que se inicializa el contador y espera que se le pase un nuevo dato, para volver al estado 2. Los errores los maneja con una registro de 2 bits en los que el bit 0 indica si hubo un error en la decodificación y el bit 1 indica si hubo un error proveniente del módulo ControlKey, si se da un error, se envía la señal al modulo ControladorIn-Mem. En las siguientes secciones se detallan los módulos DecodKey y ControlKey.

63 53

64 DecodKey Figura 7.12 Diagrama SM del módulo Controlador ALU El modulo DecodKey, como se comentó anteriormente se encarga de descomponer la clave en las 3 operaciones que se escogió y ponerlas en orden en un registro, por ejemplo si lo que se va a realizar un cifrado las operaciones están en orden de ejecución, de los bits más significativos a los menos significativos, o sea, los 3 bits más significativos representan la primera operación si se va a cifrar. Si se va a descifrar la primera operación a ejecutar se encuentra en los 3 bits menos significativos. Este módulo solo requiere la clave para realizar su función. En la figura 7.13 se especifican las entradas y salidas. En la tabla 7.5 se da una descripción de cada una.

65 55 Figura7.13 Modulo DecodKey Tabla 7.5 Descripción de señales del DecodKey Señal Tamaño bus Dirección Comunicación con (bits) Proposito En 1 input ControladorInMem habilitar el Decod Key 16 input ControladorInMem pasar clave CLK 1 input ControladorInMem reloj Done 1 output ControladorInMem indica que terminó de decodificar la clave ErrDecod 1 output ControladorInMem hubo un error en la decodificación, los primeros 4 bits no son válidos Operaciones 9 output ControladorInMem indica las 3 operaciones que se realizaran de izquierda a derecha si es cifrado Anteriormente se especificó los bits que componen la clave, por lo que ya se trá una noción de los bits en que se fija este módulo para obtener las operaciones. Son 6 operaciones posibles, aunque son 3 principales, cada una se divide en 2, la XOR puede ser con los 16 bits más significativos del bloque o con los 16 menos significativos, al igual que ROT que puede ser a la izquierda o a la derecha, y el CA2 que como se especificó anteriormente puede realizarse cada 8 bits o cada 16 bits. Por lo que cada variación de las funciones es una operación diferente, esto se detallará más adelante en la descripción de la ALU. Si se da un error en la lectura de la clave se manda una señal de error al modulo ControladorALU. De lo contrario a la salida pone el registro de operaciones. El error que se da es a la hora de leer los 4 bits más significativos, ya que estos indican la operación con la que se empieza, ya sea XOR (00), ROT(01) o CA2 (10), entonces, si se especifica la operación 11, se crea un error. En la figura 7.14 se detalla el diagrama de estados.

66 56 Figura 7.14 Diagrama SM del DecodKey ControlKey Este módulo se encarga de tomar el registro de operaciones y administrarlo para pasarle a la ALU los datos correctos. En la figura 7.17 se ven las entradas y salidas del módulo y en la tabla 7.6 se describe y detalla cada una.

67 57 Figura 7.15 Módulo ControlKey Tabla 7.6 Descripción de señales del ControlKey Señal Tamaño bus (bits) Dirección Comunicación con etapa Proposito En 1 input ControladorInMem habilitar en módulo ControlKey CLK 1 input ControladorInMem reloj Cif 1 input ControladorInMem si se desea cifrar o descifrar Key 16 input ControladorInMem clave Operaciones 9 input ControladorInMem indica las 3 operaciones que se realizaran de izquierda a derecha si es cifrado CountIn 2 input ControladorInMem contador que lleva el conteo de cuantas operaciones se le han hecho al bloque BloqueInterno 32 input ControladorInMem bloque que se le pasa a la ALU por la salida Dato1 CatchOut 1 output ALU indica a la ALU que puede tomar los datos ErrControl 1 output ALU se produjo un error al manipular las operaciones Dato1 32 output ALU se le pasa el bloque Dato2 16 output ALU se le pasa la información necesaria para la operación CountOut 2 output ControladorInMem contador que lleva el conteo de cuantas operaciones se le han hecho al bloque InstrucOut 3 output ALU instrucción que debería ejecutar la ALU

68 58 El módulo recibe el registro de operaciones y decide como leerlo depio de si es cifrado o descifrado y el valor que tenga Count, ya que si es cifrado el registro se lee de izquierda a derecha y las operaciones no reciben ningún cambio, pero si lo que se va a realizar es un descifrado, el registro se lee de derecha a izquierda y la operación ROT se cambia de dirección por ejemplo si al cifrar se utilizó una ROT izquierda, para descifrar se debe de realizar una ROT derecha. Se puede producir un error si el registro de operaciones contiene una operación que no existe, como son 6 posibles operaciones si se presenta el valor de 7, se produce un error. Si no se produce un error, levanta la bandera CatchOut, y le pasa los parámetros necesarios a la ALU. Por ejemplo en una ROT derecha, aparte de la instrucción el dato 1 contiene el bloque y el dato 2 contiene la cantidad de rotaciones.

69 Figura 7.16 Diagrama SM del ControlKey 59

70 ALU La ALU realiza 6 operaciones como se comentó antes: ROT iz, ROT de, XOR lsb, XOR msb, CA2 8 bits, CA2 16 bits. Como el algoritmo consiste de 3 operaciones hasta que el bloque realice las 3 se pasará el bloque a memoria, para esto es la señal ProxBloque, cuando está en alto el dato sale por DatoAMem de lo contrario sale por DatoFeedBack para regresar al módulo anterior y realizar la operación siguiente. La señal Ok es una señal para la etapa anterior indicando que ya realizó la operación, cuando se realiza la 3 operación, o sea la señal ProxBloque está en alto, en vez de levantar la señal Ok se levanta la señal DoneALU indicándole al módulo ControladorIn-Mem que el dato está listo para guardarse en memoria, y la ALU está lista para recibir otro bloque. Figura7.17 Módulo ALU

71 61 Tabla 7.7 Descripción de señales de la ALU Tamaño Comunicación con Señal Dirección Proposito bus (bits) etapa Dato1 32 input ControladorALU dato con el cual se realiza la operación Dato2 16 input ControladorALU dato con el cual se realiza la operación Instrucción 3 input ControladorALU instrucción a realizar CLK 1 input reloj Reloj Catch 1 input ControladorALU hay datos listos para tomar Reset 1 input ControladorInMem reset Interno ProxBloque 1 input ControladorALU indica que el dato de salida debe ser enviado a memoria DatoFeedBack 32 output ControladorALU dato que regresa al controladoralu DatoAMemoria 32 output ControladorInMem dato que se guarda en memoria Ok 1 output ControladorALU terminó la operación terminó 3 operaciones, indica al DoneALU 1 output ControladorInMem ControladorInMem que puede tomar los datos

72 Figura 7.18 Diagrama SM de la ALU 62

73 63 CAPÍTULO 8: Síntesis y simulación En este proyecto se presentó el diseño de la arquitectura en hardware de un criptosistema utilizando como dispositivo lógico programable una FPGA SPARTAN-3E con lenguaje de descripción Verilog, para la síntesis se utilizó la herramienta XILINX ISE 10.1, y para la simulación se utilizó ModelSim PE Student Edition 6.5a Síntesis Al principio en la síntesis se obtuvieron latches, debido a que las máquinas de estado eran asíncronas, por lo que se procedió a programarlas de nuevo de manera que todas fueran síncronas, esto se explica con más detalle adelante, con esto se eliminaron los warnings que indicaban latches. Al sintetizarlo, los case se decodificaron como one-hot en todos los módulos, aunque no es la mejor optimización no se logró cambiar esta decodificación. Hay 2 warnings que se pueden ignorar, estos son porque en un módulo se especifica como entrada Key pero no se utilizan todos los bits. WARNING:Xst:647 - Input <Key<11:7>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. WARNING:Xst:647 - Input <Key<3:0>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.

74 64 Al sintetizar se obtuvieron 2 señales asíncronas, que las 2 son equivalentes al reset, una es Reset que viene de la etapa exterior, y la otra es ResetInterno que es controlada por la etapa ControlMemIn y es dirigida hacia demás etapas. Figura 8.1 Señales asíncronas Para la síntesis con respecto al área y recursos del FPGA se obtuvieron los resultados mostrados en la figura 8.2, que tomando en cuenta que el bloque Cifrador, cifra y descifra, el área es aceptable. la figura 8.2. Figura 8.2 Resultados de Síntesis Los resultados obtenidos de la síntesis para el tiempo de operación se muestran en

75 65 Figura 8.3 Tiempo de operación Por último se obtuvo el esquemático que se presenta en la figura 8.4, y que al compararlo con la figura 7.2, se comprueba que es como se esperaba. Figura 8.4 Esquemático del Cifrador Programación de las máquinas de estado Primero se programaron los módulos dividiéndolos en 2 máquinas de estado, una se encarga de la lógica de próximo estado y la otra maneja la lógica de salida, como se muestra en la figura 8.5.

76 66 Donde la lógica de próximo estado depe y cambia conforme lo hacen las entradas y los registros, que controlan el estado presente. La lógica de salida, depe de los registros, los que cambian conforme el flanco positivo del reloj. Por lo que se obtiene una combinación de lógica combinacional y elementos secuenciales. Figura 8.5. Máquina de estado Este diseño producía, a la hora de sintetizar, que las señales de la lógica combinacional fueran asíncronas o que se crearan latches. Por lo que se cambiaron todas las máquinas de estado que producían latches. Se cambió la parte combinacional, o sea, la lógica de próximo estado, y la lógica de salida agregándole una señal de reloj, por lo que ahora solo cambian en los flancos de reloj crecientes, depio del valor de las entradas Simulación La simulación se realizó con 2 bloques para cifrarlos y descifrarlos, en la figura 8.5 se muestra la primera parte de la simulación, los círculos rojos muestran las lecturas de la memoria, primero lee la clave, lee el primer bloque y lee el segundo bloque para tenerlo

77 67 listo. Los círculos azules son la escritura. Primero escribe la clave por que se está cifrando, y se escribe en la posición 6 por que la posición 5 está reservada para el código de error. memoria 7. Figura 8.7 Señales primera parte del cifrado La figura 8.6 muestra la escritura del segundo bloque cifrado en la posición de Figura 8.8 Señales segunda parte del cifrado Por último en la figura 8.7 se guarda el segundo bloque y en la primera posición de memoria, o sea, en 5 que es DirSet, se guarda el código de error. También se observa en el círculo morado el cambio de la señal Ready, indicando que el cifrador está libre.

78 68 Figura 8.9 Señales tercera parte del cifrado Para el descifrado no se guarda la clave, en la figura 8.8 se muestra en cuadros rojos la lectura de la clave y los 2 bloques. Figura 8.10 Señales primera parte del descifrado En la figura 8.9 se muestra la primera escritura después del descifrado, se hace en la posición 11, ya que DirSet es 10.

79 69 Figura 8.11 Señales segunda parte del descifrado En la figura 8.10 se muestra la escritura del segundo bloque y el código de error que es cero, también en el cuadrado morado se muestra el cambio de la señal Ready. El cambio de esta señal al igual que en el cifrado, se da en 1025ns, por lo que para la misma clave y la misma cantidad de bloques, el tiempo de cifrar y de descifrar es el mismo. Figura 8.12 Señales tercera parte del descifrado

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA Para generar una transmisión segura de datos, debemos contar con un canal que sea seguro, esto es debemos emplear técnicas de forma que los datos que se envían de una

Más detalles

Semana 13: Encriptación. Cifrado simétrico

Semana 13: Encriptación. Cifrado simétrico Semana 13: Encriptación Cifrado simétrico Aprendizajes esperados Contenidos: Características y principios del cifrado simétrico Algoritmos de cifrado simétrico Encriptación Simétrica En la encriptación

Más detalles

Métodos Encriptación. Tópicos en Sistemas de Computación Módulo de Seguridad

Métodos Encriptación. Tópicos en Sistemas de Computación Módulo de Seguridad Métodos Encriptación Tópicos en Sistemas de Computación Módulo de Seguridad Temario Introducción Breve historia Algoritmos simétricos Algoritmos asimétricos Protocolos seguros Ejemplos Introducción Porqué

Más detalles

Introducción. Algoritmos

Introducción. Algoritmos Introducción La firma digital es una herramienta que permite garantizar la autoría e integridad de los documentos digitales, posibilitando que éstos gocen de una característica que únicamente era propia

Más detalles

Tema 11 Introducción a la Criptografía

Tema 11 Introducción a la Criptografía Bloque IV AUDITORÍA EN EL DESARROLLO DE SOFTWARE Tema 11 Introducción a la Criptografía Tema 11 Introducción a la Criptografía 1/ Índice Índice Conceptos básicos Criptosistemas simétricos Criptosistemas

Más detalles

Redes de comunicaciones actuales permiten la conectividad de un gran número de usuarios. Explosión de servicios que necesitan la transmisión de datos

Redes de comunicaciones actuales permiten la conectividad de un gran número de usuarios. Explosión de servicios que necesitan la transmisión de datos Redes de comunicaciones actuales permiten la conectividad de un gran número de usuarios. Explosión de servicios que necesitan la transmisión de datos por estas redes: necesidad de protección de la información.

Más detalles

TEMA 2: Representación de la Información en las computadoras

TEMA 2: Representación de la Información en las computadoras TEMA 2: Representación de la Información en las computadoras Introducción Una computadora es una máquina que procesa información y ejecuta programas. Para que la computadora ejecute un programa, es necesario

Más detalles

3. Algoritmo DES (Data Encription Standard)

3. Algoritmo DES (Data Encription Standard) 3. Algoritmo DES (Data Encription Standard) 3.1. Fundamentos Cifrado por bloques (block cipher) Opera sobre un bloque de texto plano de n bits para producir un texto cifrado de n bits. Tipicamente, la

Más detalles

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente: Departamento de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Antioquia Arquitectura de Computadores y Laboratorio ISI355 (2011 2) Práctica No. 1 Diseño e implementación de una unidad aritmético

Más detalles

UNIDAD 2 Configuración y operación de un sistema de cómputo Representación de datos Conceptos El concepto de bit (abreviatura de binary digit) es fundamental para el almacenamiento de datos Puede representarse

Más detalles

Naturaleza binaria. Conversión decimal a binario

Naturaleza binaria. Conversión decimal a binario Naturaleza binaria En los circuitos digitales sólo hay 2 voltajes. Esto significa que al utilizar 2 estados lógicos se puede asociar cada uno con un nivel de tensión, así se puede codificar cualquier número,

Más detalles

Criptografía. Por. Daniel Vazart P.

Criptografía. Por. Daniel Vazart P. Criptografía Por. Daniel Vazart P. Que es? La finalidad de la criptografía es, en primer lugar, garantizar el secreto en la comunicación entre dos entidades (personas, organizaciones, etc.) y, en segundo

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

CRIPTOGRAFIA. Qué es, usos y beneficios de su utilización. Universidad Nacional del Comahue

CRIPTOGRAFIA. Qué es, usos y beneficios de su utilización. Universidad Nacional del Comahue CRIPTOGRAFIA Qué es, usos y beneficios de su utilización Introducción Antes, computadoras relativamente aisladas Hoy, computadoras en redes corporativas conectadas además a Internet Transmisión de información

Más detalles

Descripción del algoritmo DES (Data Encryption Standard)

Descripción del algoritmo DES (Data Encryption Standard) Descripción del algoritmo DES (Data Encryption Standard) Jorge Sánchez Arriazu diciembre de 1999 DES Introducción DES (Data Encryption Standard, estándar de cifrado de datos) es un algoritmo desarrollado

Más detalles

Práctica 5. Curso 2014-2015

Práctica 5. Curso 2014-2015 Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas

Más detalles

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL ELECTRÓNICA DIGITAL La electrónica es la rama de la ciencia que se ocupa del estudio de los circuitos y de sus componentes, que permiten modificar la corriente eléctrica amplificándola, atenuándola, rectificándola

Más detalles

Julio César Mendoza T. Ingeniería de Sistemas Quito

Julio César Mendoza T. Ingeniería de Sistemas Quito 46 Julio César Mendoza T. Ingeniería de Sistemas Quito 47 RESUMEN En el presente artículo se presenta una breve introducción a la criptografía sin profundizar en las matemáticas que soportan los algoritmos

Más detalles

Semana 14: Encriptación. Cifrado asimétrico

Semana 14: Encriptación. Cifrado asimétrico Semana 14: Encriptación Cifrado asimétrico Aprendizajes esperados Contenidos: Características y principios del cifrado asimétrico Algoritmos de cifrado asimétrico Funciones de hash Encriptación Asimétrica

Más detalles

Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia

Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia Encriptación de Datos Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia asegurar que la Información viaje segura, manteniendo su autenticidad, integridad, confidencialidad y

Más detalles

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU) Agenda 0 Tipos de datos 0 Sistemas numéricos 0 Conversión de bases 0 Números racionales o Decimales 0 Representación en signo-magnitud 0 Representación en complemento Unidad Central de Procesamiento (CPU)

Más detalles

Dra. Elsa Estévez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Dra. Elsa Estévez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Controles de Entorno Dra. Elsa Estévez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2do. Cuatrimestre 2010 Contenido Controles Criptográficos Definiciones Técnicas

Más detalles

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 5.1.3 Multiplicación de números enteros. El algoritmo de la multiplicación tal y como se realizaría manualmente con operandos positivos de cuatro bits es el siguiente: 1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0

Más detalles

18. Camino de datos y unidad de control

18. Camino de datos y unidad de control Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 18. Camino de datos y unidad de control Un La versatilidad una característica deseable los Los

Más detalles

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Los sistemas de numeración se clasifican en: posicionales y no posicionales. SISTEMAS NUMERICOS Un sistema numérico es un conjunto de números que se relacionan para expresar la relación existente entre la cantidad y la unidad. Debido a que un número es un símbolo, podemos encontrar

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Técnicas de cifrado. Clave pública y clave privada:

Técnicas de cifrado. Clave pública y clave privada: Técnicas de cifrado. Clave pública y clave privada: - Pretty Good Privacy (PGP). GNU Privacy Good (GPG). - Seguridad a nivel de aplicación: SSH ( Secure Shell ). - Seguridad en IP (IPSEC). - Seguridad

Más detalles

Sistemas de Numeración Operaciones - Códigos

Sistemas de Numeración Operaciones - Códigos Sistemas de Numeración Operaciones - Códigos Tema 2 1. Sistema decimal 2. Sistema binario 3. Sistema hexadecimal 4. Sistema octal 5. Conversión decimal binario 6. Aritmética binaria 7. Complemento a la

Más detalles

Preguntas y respuestas sobre el cifrado de la información personal. La guía para aprender a cifrar tu información

Preguntas y respuestas sobre el cifrado de la información personal. La guía para aprender a cifrar tu información Guía de Cifrado Preguntas y respuestas sobre el cifrado de la información personal La guía para aprender a cifrar tu información 2 Qué es lo que estamos cuidando? A través del cifrado cuidamos de fotos,

Más detalles

Arquitectura de seguridad OSI (ISO 7498-2)

Arquitectura de seguridad OSI (ISO 7498-2) Universidad Nacional Autónoma de México Facultad de Ingeniería Criptografía Grupo 2 Arquitectura de seguridad OSI (ISO 7498-2) ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN JOSE T. ELIZABETH RUBIO MEJÍA

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

La Unidad Procesadora.

La Unidad Procesadora. La Unidad Procesadora. En un sistema digital complejo, la capa de hardware de la máquina es el nivel más bajo del modelo de capas de un sistema microcomputarizado. La unidad procesadora es una parte del

Más detalles

Tema 2. La Información y su representación

Tema 2. La Información y su representación Tema 2. La Información y su representación 2.1 Introducción. Un ordenador es una máquina que procesa información. La ejecución de un programa implica la realización de unos tratamientos, según especifica

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA... 1 1. Representación interna de datos.... 1 1.2. Sistemas de numeración.... 2 1.3. Aritmética binaria...

Más detalles

❷ Aritmética Binaria Entera

❷ Aritmética Binaria Entera ❷ Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

Ing. Cynthia Zúñiga Ramos

Ing. Cynthia Zúñiga Ramos Ing. Cynthia Zúñiga Ramos Criptografía Criptografía Datos Datos Encriptación ase4bhl Desencriptación Datos cifrados Confidencialidad en las comunicaciones Algoritmos Hash de una dirección Algoritmos

Más detalles

El tamaño, estructura, número de bloques y la cantidad y conectividad de las conexiones varian en las distintas arquitecturas.

El tamaño, estructura, número de bloques y la cantidad y conectividad de las conexiones varian en las distintas arquitecturas. Que es una FPGA? Las FPGA s (Field Programmable Gate Array) Son dispositivos lógicos de propósito general programable por los usuarios, compuesto de bloques lógicos comunicados por conexiones programables.

Más detalles

Método simétrico con cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el

Método simétrico con cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el Método simétrico con cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el concurso AES). Twofish llegó a la ronda final del concurso

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

Tema IV. Unidad aritmético lógica

Tema IV. Unidad aritmético lógica Tema IV Unidad aritmético lógica 4.1 Sumadores binarios 4.1.1 Semisumador binario (SSB) 4.1.2 Sumador binario completo (SBC) 4.1.3 Sumador binario serie 4.1.4 Sumador binario paralelo con propagación del

Más detalles

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Rompiendo el Código Enigma Introducción y objetivos Como un pequeño homenaje a Alan Turing en su año conmemorativo, las prácticas de este curso

Más detalles

Rompiendo llaves RSA expĺıcitamente con OpenSSL

Rompiendo llaves RSA expĺıcitamente con OpenSSL Rompiendo llaves RSA expĺıcitamente con OpenSSL Eduardo Ruiz Duarte Facultad de Ciencias UNAM Agenda Criptografía asimétrica y conceptos fundamentales RSA Criptoanálisis expĺıcito de una llave generada

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

Seguridad del Protocolo HTTP

Seguridad del Protocolo HTTP Seguridad del Protocolo HTTP - P R O T O C O L O H T T P S. - C O N E X I O N E S S E G U R A S : S S L, TS L. - G E S T IÓN D E C E R T IF I C A D O S Y A C C E S O --S E G U R O C O N H T T P S Luis

Más detalles

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8 Dpto. de ATC, Universidad de Sevilla - Página de Capítulo : INTRODUCCIÓN SISTEMAS DE REPRESENTACIÓN NUMÉRICA Introducción Bases de numeración Sistema decimal Sistema binario Sistema hexadecimal REPRESENTACIÓN

Más detalles

Resumen de Requisitos Técnicos para incorporación de Organismos a la Plataforma Integrada de Servicios Electrónicos del Estado

Resumen de Requisitos Técnicos para incorporación de Organismos a la Plataforma Integrada de Servicios Electrónicos del Estado Resumen de Requisitos Técnicos para incorporación de Organismos a la Plataforma Integrada de Servicios Electrónicos del Estado Ministerio Secretaría General de la Presidencia Unidad de Modernización y

Más detalles

Materia Introducción a la Informática

Materia Introducción a la Informática Materia Introducción a la Informática Unidad 1 Sistema de Numeración Ejercitación Prof. Alejandro Bompensieri Introducción a la Informática - CPU Ejercitación Sistemas de Numeración 1. Pasar a base 10

Más detalles

SERVICIOS DE RED E INTERNET TEMA 4: INSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS WEB

SERVICIOS DE RED E INTERNET TEMA 4: INSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS WEB SERVICIOS DE RED E INTERNET TEMA 4: INSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS WEB Nombre: 1. Protocolo HTTPS Hyper Text Transfer Protocol Secure (en español: Protocolo seguro de transferencia de hipertexto),

Más detalles

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria Oliverio J. Santana Jaria 3. Aritmética tica binaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Para Los La en conocer muchos aritmética comprender otros binaria tipos

Más detalles

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN INTRANET DE UNA EMPRESA Autor: Burgos González, Sergio. Director: Zaforas de Cabo, Juan. Entidad colaboradora: Colegio de Ingenieros del ICAI. RESUMEN DEL PROYECTO El proyecto consiste en el desarrollo

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Laboratorio de Diseño de Sistemas Digitales

Laboratorio de Diseño de Sistemas Digitales Proceso de Diseño Laboratorio de Diseño de Sistemas Digitales I Semestre 2008 Ing. Gabriela Ortiz L. Diseño Implementación Depuración Diseño: Concepto inicial. Cuál es la función que lleva a cabo el objeto?

Más detalles

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS ESTRUCTURA DE COMPUTADORES Pag. 8.1 LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS 1. Circuitos de multiplicación La operación de multiplicar es mas compleja que la suma y por tanto se

Más detalles

CIRCUITOS ARITMÉTICOS

CIRCUITOS ARITMÉTICOS LABORATORIO # 6 Realización: 26-05-2011 CIRCUITOS ARITMÉTICOS 1. OBJETIVOS Comprender los circuitos aritméticos dentro de la lógica binaria Utilizar sumadores totales de cuatro bits dentro de un Circuito

Más detalles

UNIVERSIDAD TÉCNICA DEL NORTE

UNIVERSIDAD TÉCNICA DEL NORTE UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS ESCUELA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES TESIS PREVIA A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN SISTEMAS COMPUTACIONALES

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema decimal

SISTEMAS DE NUMERACIÓN. Sistema decimal SISTEMAS DE NUMERACIÓN Sistema decimal Desde antiguo el Hombre ha ideado sistemas para numerar objetos, algunos sistemas primitivos han llegado hasta nuestros días, tal es el caso de los "números romanos",

Más detalles

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales Definición(1) Sistemas numéricos MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Un sistema de representación numérica es un sistema de lenguaje que consiste en: un conjunto ordenado de símbolos

Más detalles

Tema I. Sistemas Numéricos y Códigos Binarios

Tema I. Sistemas Numéricos y Códigos Binarios Tema I. Sistemas Numéricos y Códigos Binarios Números binarios. Aritmética binaria. Números en complemento-2. Códigos binarios (BCD, alfanuméricos, etc) Números binarios El bit. Representación de datos

Más detalles

SEGURIDAD Y PROTECCION DE FICHEROS

SEGURIDAD Y PROTECCION DE FICHEROS SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD

Más detalles

Lección 12 Seguridad y criptografía. Universidad de Oviedo / Dpto. de Informática

Lección 12 Seguridad y criptografía. Universidad de Oviedo / Dpto. de Informática Lección 12 Seguridad y criptografía Seguridad Los sistemas distribuidos son más inseguros que los centralizados por que exponen más la información. Un sistema distribuido tiene más puntos atacables. Contrapartida:

Más detalles

CRIPTOGRAFIA DE CLAVE SECRETA. El emisor y el receptor conocen y usan la misma clave secreta para cifrar y descifrar mensajes.

CRIPTOGRAFIA DE CLAVE SECRETA. El emisor y el receptor conocen y usan la misma clave secreta para cifrar y descifrar mensajes. CRIPTOSISTEMA RSA CRIPTOGRAFIA DE CLAVE SECRETA El emisor y el receptor conocen y usan la misma clave secreta para cifrar y descifrar mensajes. Problemas de este método El emisor y el receptor deben ponerse

Más detalles

Implementación Hardware del Estandar de Encriptación Avanzado (AES) en una FPGA

Implementación Hardware del Estandar de Encriptación Avanzado (AES) en una FPGA Implementación Hardware del Estandar de Encriptación Avanzado (AES) en una FPGA Jorge Alberto Celi Méndez, Ing. Ronald Alberto Ponguillo Intriago Facultad de Ingeniería en Electricidad y Computación Escuela

Más detalles

CAPÍTULO 3 Servidor de Modelo de Usuario

CAPÍTULO 3 Servidor de Modelo de Usuario CAPÍTULO 3 Servidor de Modelo de Usuario Para el desarrollo del modelado del estudiante se utilizó el servidor de modelo de usuario desarrollado en la Universidad de las Américas Puebla por Rosa G. Paredes

Más detalles

SISTEMAS NUMÉRICOS (SISTEMAS DE NUMERACIÓN)

SISTEMAS NUMÉRICOS (SISTEMAS DE NUMERACIÓN) SISTEMAS NUMÉRICOS (SISTEMAS DE NUMERACIÓN) INTRODUCCIÓN Desde hace mucho tiempo, el hombre en su vida diaria se expresa, comunica, almacena información, la manipula, etc. mediante letras y números. Para

Más detalles

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN I. P. N. ESIME Unidad Culhuacan INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN LABORATORIO

Más detalles

Matemática de redes Representación binaria de datos Bits y bytes

Matemática de redes Representación binaria de datos Bits y bytes Matemática de redes Representación binaria de datos Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo pueden entender

Más detalles

Clase 02: Representación de datos

Clase 02: Representación de datos Arquitectura de Computadores y laboratorio Clase 02: Representación de datos Departamento de Ingeniería de Sistemas Universidad de Antioquia 2015-2 Contenido 1 2 Representación de la Información Y sistemas

Más detalles

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING.

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING. INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING. JUAN DE LA ROSA T. TEMA 1 Desde tiempos remotos el hombre comenzó a

Más detalles

ARREGLOS DEFINICION GENERAL DE ARREGLO

ARREGLOS DEFINICION GENERAL DE ARREGLO ARREGLOS DEFINICION GENERAL DE ARREGLO Conjunto de cantidades o valores homogéneos, que por su naturaleza se comportan de idéntica forma y deben de ser tratados en forma similar. Se les debe de dar un

Más detalles

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 Historia de revisiones Fecha VersiónDescripción Autor 08/10/2009 1.0 Creación del documento.

Más detalles

Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal

Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal Artículo adaptado del artículo de Wikipedia Sistema Binario en su versión del 20 de marzo de 2014, por varios autores bajo la Licencia de Documentación

Más detalles

Resumen del trabajo sobre DNSSEC

Resumen del trabajo sobre DNSSEC Resumen del trabajo sobre Contenido 1. -...2 1.1. - Definición...2 1.2. - Seguridad basada en cifrado...2 1.3. - Cadenas de confianza...3 1.4. - Confianzas...4 1.5. - Islas de confianza...4 2. - Conclusiones...5

Más detalles

DE VIDA PARA EL DESARROLLO DE SISTEMAS

DE VIDA PARA EL DESARROLLO DE SISTEMAS MÉTODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS 1. METODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS. El desarrollo de Sistemas, un proceso

Más detalles

Representación de números en binario

Representación de números en binario Representación de números en binario Héctor Antonio Villa Martínez Programa de Ciencias de la Computación Universidad de Sonora El sistema binario es el más utilizado en sistemas digitales porque es más

Más detalles

Tema 11: Sistemas combinacionales

Tema 11: Sistemas combinacionales Tema 11: Sistemas combinacionales Objetivo: Introducción Generador Comprobador de paridad Comparadores Semisumador (HA) Sumador Completo (FA) Expansión de sumadores Sumador paralelo con arrastre serie

Más detalles

Bases de la Firma Electrónica: Criptografía

Bases de la Firma Electrónica: Criptografía Bases de la Firma Electrónica: Criptografía Definiciones Técnica de convertir un texto en claro (plaintext) en otro llamado criptograma (ciphertext), cuyo contenido es igual al anterior pero sólo pueden

Más detalles

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES SISTEMA DE NUMERACIÓN BASE 2 El sistema de numeración binario es el conjunto de elementos {0, 1} con las operaciones aritméticas (suma, resta,

Más detalles

Introducción a la Seguridad en Sistemas Informáticos

Introducción a la Seguridad en Sistemas Informáticos Introducción a la Seguridad en Sistemas Informáticos Francisco Rodríguez-Henríquez CINVESTAV-IPN Depto. de Ingeniería Eléctrica Sección de Computación Motivación y Antecedentes Modelo simplificado de Cifrado

Más detalles

Técnicas de Programación Hardware: CAD para FPGAs y CPLDs

Técnicas de Programación Hardware: CAD para FPGAs y CPLDs Técnicas de Programación Hardware: CAD para FPGAs y CPLDs Clase 4: FPGAs Por: Nelson Acosta & Daniel Simonelli UNICEN - Tandil - 1999 1 Implementación de Sistemas Procesador convencional. Economico, conjunto

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

Tema 4: Sistemas de Numeración. Codificación Binaria. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Tema 4: Sistemas de Numeración. Codificación Binaria. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid Tema 4: Sistemas de Numeración. Codificación Binaria Ingeniería Informática Universidad Autónoma de Madrid 1 O B J E T I V O S Sistemas de Numeración. Codificación Binaria Conocer los diferentes sistemas

Más detalles

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION CHIQUINQUIRA (BOYACA) 2015 1 CONTENIDO Pág. QUE ES UN SISTEMA BINARIO. 3 CORTA HISTORIA DE LOS

Más detalles

Capitulo I. Introducción

Capitulo I. Introducción Capitulo I. Introducción 1.1 Descripción del trabajo El ser humano, como todos sabemos tiene la necesidad de comunicarse, de ser escuchado y sobretodo interactuar con los demás seres vivos que lo rodean.

Más detalles

Computación I Representación Interna Curso 2011

Computación I Representación Interna Curso 2011 Computación I Representación Interna Curso 2011 Facultad de Ingeniería Universidad de la República Temario Representación de Números Enteros Representación de Punto Fijo Enteros sin signo Binarios puros

Más detalles

1. Representación de la información en los sistemas digitales

1. Representación de la información en los sistemas digitales Oliverio J. SantanaJaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2005 2006 1. Representación de la información en los sistemas digitales Durante Hoy Los digital tipo muchos

Más detalles

Representación de la Información

Representación de la Información Representar: Expresar una información como una combinación de símbolos de un determinado lenguaje. Trece -> símbolos 1 y 3 Interpretar: Obtener la información originalmente representada a partir de una

Más detalles

SUMADOR BINARIO. Instituto Internacional de Investigación de Tecnología Educativa

SUMADOR BINARIO. Instituto Internacional de Investigación de Tecnología Educativa SUMADOR BINARIO INITE, S.C. no es responsable del contenido, de la veracidad de los datos, opiniones y acontecimientos vertidos en el presente caso práctico. La finalidad del presente es el desarrollo

Más detalles

INTRODUCCION. Ing. Camilo Zapata czapata@udea.edu.co Universidad de Antioquia

INTRODUCCION. Ing. Camilo Zapata czapata@udea.edu.co Universidad de Antioquia INTRODUCCION. Ing. Camilo Zapata czapata@udea.edu.co Universidad de Antioquia Qué es una Red? Es un grupo de computadores conectados mediante cables o algún otro medio. Para que? compartir recursos. software

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

Seguridad en la transmisión de Datos

Seguridad en la transmisión de Datos Seguridad en la transmisión de Datos David Peg Montalvo Santiago de Compostela Noviembre 2005 Índice 01 Seguridad. Ámbito de aplicación 02 Control de acceso 03 Conceptos básicos de criptografía 04 PKI

Más detalles

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5. Representación de la información Contenidos 1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5. Conversiones

Más detalles

Seminario Internet y Buscadores NAVEGACIÓN SEGURA Y HERRAMIENTAS DE MOTORES DE BUSQUEDA

Seminario Internet y Buscadores NAVEGACIÓN SEGURA Y HERRAMIENTAS DE MOTORES DE BUSQUEDA Seminario Internet y Buscadores NAVEGACIÓN SEGURA Y HERRAMIENTAS DE MOTORES DE BUSQUEDA Santa Cruz de la Sierra, Bolivia Realizado por: Ing. Juan Carlos Castro Chávez 1 Indice Navegacion segura Criptografía

Más detalles

EL LOGRO DE SU FORMACIÓN DEPENDE TAMBIÉN DE USTED INSTRUCTOR: ING. JULIO CÉSAR BEDOYA PINO ELECTRÓNICA DIGITAL 2014

EL LOGRO DE SU FORMACIÓN DEPENDE TAMBIÉN DE USTED INSTRUCTOR: ING. JULIO CÉSAR BEDOYA PINO ELECTRÓNICA DIGITAL 2014 EL LOGRO DE SU FORMACIÓN DEPENDE TAMBIÉN DE USTED INSTRUCTOR: ING. JULIO CÉSAR BEDOYA PINO ELECTRÓNICA DIGITAL 2014 CONTENIDO ELECTRÓNICA DIGITAL SISTEMA DE REPRESENTACIÓN TABLA DE CONVERSIÓN EJERCICIOS

Más detalles

Transport Layer Security (TLS) Acerca de TLS

Transport Layer Security (TLS) Acerca de TLS Transport Layer Security (TLS) Acerca de TLS Contenido Correo electrónico seguro en HSBC... 2 Acerca de Transport Layer Security..... 2 Para establecer una conexión Forced TLS con HSBC... 4 Glosario...

Más detalles

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. UNIVERSIDAD DE CARABOBO FACULTAD DE CIENCIA Y TECNOLOGÍA DIRECCION DE EXTENSION COORDINACION DE PASANTIAS Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. Pasante:

Más detalles

1. SISTEMAS DIGITALES

1. SISTEMAS DIGITALES 1. SISTEMAS DIGITALES DOCENTE: ING. LUIS FELIPE CASTELLANOS CASTELLANOS CORREO ELECTRÓNICO: FELIPECASTELLANOS2@HOTMAIL.COM FELIPECASTELLANOS2@GMAIL.COM PAGINA WEB MAESTROFELIPE.JIMDO.COM 1.1. INTRODUCCIÓN

Más detalles

Unidad Didáctica. Códigos Binarios

Unidad Didáctica. Códigos Binarios Unidad Didáctica Códigos Binarios Programa de Formación Abierta y Flexible Obra colectiva de FONDO FORMACION Coordinación Diseño y maquetación Servicio de Producción Didáctica de FONDO FORMACION (Dirección

Más detalles

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia. DISCOS RAID Raid: redundant array of independent disks, quiere decir conjunto redundante de discos independientes. Es un sistema de almacenamiento de datos que utiliza varias unidades físicas para guardar

Más detalles