del algoritmo de cifrado AES
|
|
|
- Adolfo López Padilla
- hace 9 años
- Vistas:
Transcripción
1 UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE TECNOLOGÍA ELECTRÓNICA INGENIERÍA TÉCNICA INDUSTRIAL ELECTRÓNICA INDUSTRIAL PROYECTO FIN DE CARRERA AUTOR: MIGUEL GARCÍA OCÓN TUTOR: LUIS MENGIBAR POZO
2
3 Agradecimientos En primer lugar, agradecer a mi madre toda la paciencia y el apoyo que me ha ofrecido durante estos años. Sin ella, este proyecto nunca habría llegado a redactarse. A mi tutor, Luis, por dedicarme tantas horas de densas explicaciones hasta asegurarse de que lo entendía todo y animarme prometiendome que quedaba poco para el final cuando aún quedaban meses de trabajo. A mis compañeros habituales de prácticas durante la carrera, Ángel y Rafa. Sin duda formábamos un buen equipo y, en el fondo, agradezco todas esas tardes redactando memorias de prácticas en las que nos las ingeniábamos para buscar huecos en los que perder el tiempo de la manera más original posible. Si la carrera ha sido llevadera ha sido gracias a vosotros. A mi novia, Patricia, por su apoyo y por aguantar múltiples conversaciones y razonamientos acerca de este proyecto, aun sin comprender una palabra de lo que estaba hablando. Por último, a mis amigos. Todos decidimos en su momento cursar ingenierías o derivados y, poco a poco, vamos finalizando. Gracias por haber estado siempre ahí. Se que siempre estaréis. Gracias.
4
5 Resumen Este Proyecto de Fin de Carrera consiste en la implementación del algoritmo AES (Advanced Encryption Standard) mediante VHDL en FPGA, haciendo especial hincapié en el consumo de potencia, de manera que sea lo más bajo posible, ya que, hoy en día, es importante debido a la utilización, cada vez mayor, de equipos portátiles. Para ello, se han utilizado diversas herramientas de diseño digital, como herramientas de síntesis, simuladores y estimadores de consumo. Se ha escogido el algoritmo AES porque actualmente es el algoritmo estándar utilizado por el gobierno de los Estados Unidos. Además su nivel de seguridad sigue siendo elevado y goza de una gran popularidad. Por otra parte, se ha elegido la implementación sobre FPGA debido a su alto rendimiento, fiabilidad, flexibilidad y precio. Tras los estudios realizados, se ha observado una creciente importancia del consumo estático en tencnologías modernas frente al consumo dinámico. Además, la temperatura se convierte en una variable muy a tener en cuenta, ya que, regulándola, se consigue una reducción importante en el consumo de potencia. En total se ha conseguido una reducción del consumo de potencia de hasta un %
6
7 Índice general 1. Introducción Objetivos Estudio del algoritmo AES Descripción, simulación funcional y síntesis Emplazamiento, rutado y simulación postlayout Estimación y reducción del consumo Criptología Criptografía Historia de la criptografía Criptografía clásica Criptografía moderna Criptoanálisis Análisis de frecuencias Criptoanálisis diferencial Criptoanálisis lineal Ataque de fuerza bruta Esteganografía Estegoanálisis Advanced Encryption Standard Introducción Definición del algoritmo Conocimientos previos Encriptador AES Desencriptador AES Cálculo de subclaves Herramientas de trabajo y flujo de diseño Herramientas utilizadas Xilinx ISE Design Suite
8 Modelsim 10.1c SE Rijndael Inspector VIM XPower Analyzer Flujo de diseño Descripción en lenguaje VHDL Simulación funcional Síntesis, emplazamiento y rutado Simulación postlayout Estimación del consumo del algoritmo AES de AES Genéricos, pines de entrada y salida y señales internas de AES Máquinas de estado (FSM) de AES Simulaciones de AES del componente SubBytes Pines de entrada y salida y señales internas del componente SubBytes Máquinas de estado (FSM) del componente SubBytes Simulaciones del componente SubBytes del componente ShiftRows Pines de entrada y salida del componente ShiftRows Simulaciones del componente ShiftRows del componente MixColumns Pines de entrada y salida y señales internas del componente MixColumns Máquinas de estado (FSM) del componente MixColumns Simulaciones del componente MixColumns del componente Multiplicación (MixColumns) Pines de entrada y salida y señales internas del componente Multiplicación Máquinas de estado (FSM) del componente Multiplicación Simulaciones del componente Multiplicación del componente Módulo (Multiplicación) Pines de entrada y salida y señales internas del componente Módulo Máquinas de estado (FSM) del componente Módulo Simulaciones del componente Módulo
9 5.7. del componente AddRoundKey Pines de entrada y salida del componente AddRoundKey del componente Keygen Genéricos, pines de entrada y salida y señales internas del componente Keygen Máquinas de estado (FSM) del componente Keygen Simulaciones del componente Keygen Resultados Resultados de la síntesis Spartan-6 (Síntesis) Virtex-4 (Síntesis) Consumo de potencia Consumo de la FPGA Spartan Consumo de la FPGA Virtex Comparación del consumo Reducción del consumo Reducción del consumo para Spartan Reducción del consumo para Virtex Conclusiones de la reducción del consumo Conclusiones y trabajos futuros Conclusiones Trabajos futuros Modo de operación Reducción del consumo dinámico Presupuestos Costes en hardware Costes en software Costes en personal Otros costes Presupuesto general Referencias Anexos Anexo I: Código VHDL Algoritmo AES Componente SubBytes (AES) Componente SBox (SubBytes)
10 Componente InvSBox (SubBytes) Componente ShiftRows (AES) Componente MixColumns (AES) Componente Multiplicación (MixColumns) Componente Módulo (Multiplicación) Componente AddRoundKey (AES) Componente Keygen (AES) Anexo II: Ejemplo de encriptación Anexo III: Testbench Anexo IV: script.do Anexo V: Vectores de prueba utilizados Fichero 1: Entradas Encriptación con clave de 128 bits Fichero 1: Salidas Encriptación con clave de 128 bits Fichero 2: Entradas Encriptación con clave de 192 bits Fichero 2: Salidas Encriptación con clave de 192 bits Fichero 3: Entradas Encriptación con clave de 256 bits Fichero 3: Salidas Encriptación con clave de 256 bits Fichero 4: Entradas Desencriptación con clave de 128 bits Fichero 4: Salidas Desencriptación con clave de 128 bits Fichero 5: Entradas Desencriptación con clave de 192 bits Fichero 5: Salidas Desencriptación con clave de 192 bits Fichero 6: Entradas Desencriptación con clave de 256 bits Fichero 6: Salidas Desencriptación con clave de 256 bits 203 4
11 Índice de figuras 2.1. Esencia de la criptografía Escítala espartana [Esc] Diferencias entre criptografía simétrica y asimétrica Frecuencia de las letras en castellano [Ana] Ejemplo del método esteganográfico LSB [Est] Cifrador AES Proceso de cifrado Operación ShiftRows Proceso de descifrado Operación InvShiftRows Matriz de clave expandida Flujo de diseño Diagrama de bloques del AES Máquina de estados del AES Simulación Reset (AES) Simulación Enable (AES) Toma de datos (AES) Salida (AES) Diagrama de bloques del componente SubBytes Máquina de estados del componente SubBytes Lectura y escritura del componente SubBytes Fin del proceso del componente SubBytes Componente ShiftRows Simulación (ShiftRows) Diagrama de bloques del componente MixColumns Máquina de estados del componente MixColumns Lectura y escritura del componente MixColumns Fin del proceso del componente MixColumns Diagrama de bloques del componente Multiplicación
12 5.18. Máquina de estados del componente Multiplicación Lectura y escritura del componente Multiplicación Fin del proceso del componente Multiplicación Diagrama de bloques del componente Módulo Máquina de estados del componente Módulo Simulación del componente Módulo Diagrama de bloques del componente AddRoundKey Diagrama de bloques del componente Keygen Máquina de estados del componente Keygen Escritura de datos del componente Keygen Codificación ECB [Mod]
13 Índice de tablas 3.1. Notación hexadecimal Operación XOR S-Box InvS-Box Componentes de AES Puertos genéricos del AES Entradas y salidas de AES Señales internas del AES Componentes de SubBytes Entradas y salidas del componente SubBytes Señales internas del componente SubBytes Entradas y salidas del componente ShiftRows Componente de MixColumns Entradas y salidas del componente MixColumns Señales internas del componente MixColumns Componente de Multiplicación Entradas y salidas del componente Multiplicación Señales internas del componente Multiplicación Entradas y salidas del componente Módulo Señales internas del componente Módulo Entradas y salidas del componente AddRoundKey Puertos genéricos del componente Keygen Entradas y salidas del componente Keygen Señales internas del componente Keygen Advanced HDL Synthesis Report (Spartan-6) Device Utilization Summary (Spartan-6) Timing Summary (Spartan-6) Advanced HDL Synthesis Report (Virtex-4) Device Utilization Summary (Virtex-4) Timing Summary (Virtex-4)
14 6.7. Consumo Spartan-6 I Consumo Spartan-6 II Consumo Spartan-6 III Consumo Spartan-6 IV Consumo Virtex-4 I Consumo Virtex-4 II Consumo Virtex-4 III Consumo Virtex-4 IV Reducción del connsumo Spartan-6 I Reducción del consumo Spartan-6 II Reducción del consumo Spartan-6 III Reducción del consumo Spartan-6 IV Reducción del consumo Spartan-6 V Reducción del connsumo Virtex-4 I Reducción del consumo Virtex-4 II Reducción del consumo Virtex-4 III Reducción del consumo Virtex-4 IV Reducción del consumo Virtex-4 V Comparación de la reducción del consumo Script.do
15 Capítulo 1 Introducción La finalidad de este proyecto es implementar el algoritmo AES (Advanced Encryption Standard), analizando aspectos del consumo de potencia y estudiando métodos para reducir la misma. Hoy en día, el tesoro más valioso que podemos poseer es la información, por lo que no es de extrañar que sea de suma importancia protegerla de intrusos que puedan beneficiarse o causar daño con ella. En un mundo donde existe un uso masivo de comunicaciones digitales, es imprescindible garantizar su seguridad. Uno de los métodos más antigüos para proteger la información es la criptografía. Básicamente, la criptografía consiste en disfrazar la información deseada mediante técnicas de cifrado, de manera que quede irreconocible, enviarla a un destinatario que sea capaz de quitarle el disfraz para, finalmente, poder acceder a la información original. Uno de los motivos por el que se ha elegido el algoritmo AES frente a otros es que es el adoptado como estándar de cifrado por el gobierno de los Estados Unidos, después de un proceso de estandarización que duró 5 años. Además, aunque hay preocupación por parte de los criptólogos debido a la estructura matemática del AES, los diferentes ataques a este algoritmo son meramente especulativos y no son prácticos en implementaciones del mundo real. De hecho, no ha habido ningún ataque con éxito hasta el año , pero este ataque requiere que el atacante pueda ejecutar programas en el mismo 1 AES se transformó en un estándar efectivo el 26 de mayo de Miguel García Ocón 9 Introducción
16 sistema que realiza el cifrado de AES. A pesar de ello, el AES se ha convertido, desde el 2006, en uno de los algoritmos más populares dentro de la criptografía simétrica, de la cual hablaremos más adelante. En cuanto al consumo de potencia, en la actualidad es un aspecto esencial en el diseño de sistemas digitales, debido principalmente a dos razones: la alta densidad de integración alcanzada con las tecnologías actuales y la necesidad de reducir el consumo en los equipos portátiles alimentados por baterías. Además,elmotivodeimplementarelalgoritmoenunaFPGAesqueéstas poseen un gran rendimiento, son baratas y fiables y, debido a su flexibilidad y capacidad de rápido desarrollo, su tiempo en llegar al mercado es mucho menor que el de otras tecnologías Objetivos Al comenzar este proyecto, se propuso una serie de pasos a seguir para conseguir implementar el AES y hacer estudios sobre su consumo de potencia para así poder trabajar sobre ella Estudio del algoritmo AES Antes de nada, es imprescindible comprender como funciona el AES, estudiando cuales son las diversas transformaciones que se aplican a los datos originales Descripción, simulación funcional y síntesis Después de haber comprendido el funcionamiento del AES, el siguiente paso es la descripción en VHDL del algoritmo sin tener en cuenta restricciones en el consumo, ya que trabajaremos sobre él más adelante. Para ello, se ha optado por descomponer en bloques individuales o componentes la estructura global, ya que facilita el trabajo. Una vez descrito el algoritmo, se comprueba su funcionalidad mediante Miguel García Ocón 10 Introducción
17 simulaciones 2. Cuando se comprueba que el algoritmo descrito es funcional, se realiza la síntesis, que consiste en adaptar el diseño a una FPGA en concreto. El sintetizador optimiza las expresiones lógicas con objeto de que ocupen menor área, es decir, que requieran menos recursos de la FPGA Emplazamiento, rutado y simulación postlayout Cuando el algoritmo descrito está sintetizado, se realiza el emplazamiento, proceso en el que se sitúan los bloques digitales obtenidos en la síntesis de una manera óptima, y el rutado, que consiste en interconectar adecuadamente dichos bloques entre sí. La simulación postlayout consiste en una simulación no ideal en la que se tienen en cuenta los retardos de los bloques y sus interconexiones, estos retardos se extraen de un archivo generado por los procesos de emplazamiento y rutado. Esta simulación es muy precisa y se acerca mucho a la realidad. Aunque la simulación funcional sea correcta, es posible que esta simulación no de los resultados esperados. Una de las causas puede ser los retardos internos del chip. En cualquier caso, si la simulación postlayout es errónea, hay que volver a realizar pasos anteriores Estimación y reducción del consumo Una vez realizada una simulación postlayout correcta, se utilizan herramientas y archivos generados por dicha simulación para realizar una estimación de la potencia consumida. Una vez estimada, la idea es centrarse en las partes que más consumen y aplicar técnicas de reducción de consumo tales como modificaciones de la arquitectura, de manera que el algoritmo descrito no pierda su funcionalidad. 2 En las simulaciones realizadas se han utilizado vectores del Instituto Nacional de Estándares y Tecnología (NIST) de los Estados Unidos [Vec]. Miguel García Ocón 11 Introducción
18 Capítulo 2 Criptología Según [Lop02], la criptología (del griego krypto: oculto y logos: discurso ) es la disciplina que se dedica al estudio de los mensajes que, procesados de cierta manera, se convierten en difíciles o imposibles de leer para entidades no autorizadas. Esta ciencia está dividida en cuatro ramas: Criptografía: Se ocupa del estudio de los algoritmos, protocolos y sistemas que se utilizan para proteger la información. Criptoanálisis: Se ocupa de descifrar sin autorización la información contenida en criptogramas. Esteganografía: Se ocupa de ocultar información por un canal inseguro, de manera que no sea siquiera percibida. Estegoanálisis: Se ocupa de detectar información oculta mediante la esteganografía. Por lo tanto, podemos apreciar que la criptografía y la esteganografía son las ramas que aplican la idea en la que se basa la criptología, mientras que el criptoanálisis y el estegoanálisis persiguen precisamente lo contrario, es decir, burlar la seguridad de la información. A continuación estudiaremos cada una de estas ramas, centrándonos sobre todo en la criptografía, ya que es la rama que realmente nos interesa para este proyecto. Miguel García Ocón 12 Criptología
19 2.1. Criptografía El término criptografía viene del griego krypto: oculto y graphos: escribir. Por lo tanto, por criptografía entendemos escritura oculta. Como ya se ha dicho, la finalidad principal de la criptografía es la de proteger la privacidad y confidencialidad de la información, es decir, que la información sea accesible únicamente para el personal debidamente autorizado. Sin embargo, hoy en día, también persigue otros fines no menos importantes. Dichos fines son la integridad (la información que leemos es idéntica a la que se envió), la autenticación (el emisor de la información es quien dice ser) y el no repudio (ninguna de las entidades implicadas en la comunicación puede negar su participacíon total o parcial). A continuación se muestra una ilustración (figura 2.1) que explica, de manera sencilla, lo que es, en esencia, la criptografía. Clave Secreta compartida por emisor y receptor Emisor Receptor Entrada de Texto Claro Algoritmo de Cifrado Algoritmo de Descifrado Salida de Texto Claro Figura 2.1: Esencia de la criptografía Como vemos, se trata de cifrar un texto plano mediante ténicas de cifrado (en nuestro caso, el AES). Con ello, obtenemos un texto cifrado, ininteligible, que el emisor envía al receptor. Una vez recibido, el receptor, conocedor de la clave, aplica un algoritmo de descifrado (inversa del algoritmo de cifrado), de manera que es capaz de leer el texto plano. A esto se le llama criptosistema. Miguel García Ocón 13 Criptología
20 Historia de la criptografía La necesidad de proteger la información se remonta a hace miles de años. Ya las primeras civilizaciones desarrollaron técnicas criptográficas para enviar mensajes durante las campañas militares, de forma que si el mensajero era interceptado, la información que portaba no caía en manos enemigas. El primer método criptográfico del que se tiene constancia era conocido como Escítala 1. La escítala consistía en dos varas del mismo grosor que se entregaban a los participantes de la comunicación. El emisor enrollaba una cinta en su vara en forma de espiral y escribía el mensaje longitudinalmente, de forma que en cada vuelta de cinta aparecía una letra. Luego se desenrollaba y se enviaba al receptor, que únicamente tenía que volver a enrollar la cinta en su vara para leer el mensaje. Figura 2.2: Escítala espartana [Esc] El segundo criptosistema del que se tiene constancia fue documentado por Polibilio, un historiador griego, y consistía en un sistema de sustitución basado en la posición de las letras en una tabla. También los romanos usaban métodos de sustitución, siendo uno de los más conocidos el método César. Recibe ese nombre porque, supuestamente, fue utilizado por Julio César en sus campañas. Durante los siglos XVII, XVIII y XIX, el interés de los monarcas por la criptografía fue notable. Las tropas de Felipe II utilizaron una cifra con un alfabeto de más de 500 símbolos que los mátematicos consideraban inexpugnable. Cuando un matemático francés consiguió criptoanalizar aquel sistema para Enrique IV, rey de Francia, el conocimiento mostrado por el monarca francés impulsó una 1 La escítala data del siglo V a.c. Miguel García Ocón 14 Criptología
21 queja por parte de la corte española ante el papa Pío V, acusando a Enrique IV de utilizar magia negra para vencer a su ejército. En el siglo XX, la criptografía experimenta grandes avances, debido especialmente a las dos guerras mundiales. El principal avance es el uso de máquinas de cálculo, siendo la más conocida la máquina alemana Enigma, una máquina de rotores que automatizaba considerablemente el cálculo necesario para cifrar y descifrar mensajes. Después de la Segunda Guerra Mundial, la criptografía tiene un desarrollo teórico importante, destancando Claude Shannon 2, ingeniero electrónico y matemático estadounidense. A mediados de los años 70, el Departamento de Normas y Estándares norteamericano publica el primer diseño lógico de un cifrador que estaría llamado a ser el principal sistema criptográfico de finales de siglo: el Estándar de Cifrado de Datos o DES. El algoritmo que nos ocupa en este proyecto, el AES, es técnicamente el sustituto del DES, ya que se han descrito multitud de ataques que permiten criptoanalizarlo más rápidamente que con un ataque por fuerza bruta (recuperar una clave probando todas las combinaciones posibles) Criptografía clásica Cuestiones militares, religiosas y comerciales impulsaron desde tiempos remotos el uso de escrituras secretas con el fin de ocultar información. Ya los antiguos egipcios usaron métodos criptográficos. Por ejemplo, los sacerdotes egipcios utilizaron la escritura hierática (jeroglífica), que era claramente incomprensible para el resto de la población. Los antiguos babilonios también utilizaron métodos criptográficos en su escritura cuneiforme. Una de las primeras formas de enmascarar la información fue con la rama de la criptología conocida como esteganografía, de la cual hablaremos en los siguientes apartados. En la criptografía clásica, los mensajes se transmitían cifrados con clave 2 Claude Shannon es considerado el padre de la teoría de la información Miguel García Ocón 15 Criptología
22 secreta, de manera que tanto el emisor como el receptor eran conocedores de dicha clave. A ésto se le conoce como criptografía simétrica. Esto planteaba dos problemas: El transporte de las claves debía realizarse a través de correos de confianza. Si el correo no llegaba al receptor, éste quedaba incomunicado Tipos de cifrados clásicos Los cifrados clásicos suelen dividirse en dos tipos: Cifrado por sustitución: Letras o grupos de letras son sistemáticamente reemplazadas por otras letras o grupos de letras. Cifrado por transposición: Se cambia el orden de las letras de acuerdo con un esquema bien definido. Cabe destacar que la dificultad en el cifrado y descifrado de los cifrados clásicos no es muy compleja, pero sientan las bases de la criptografía moderna. Tipos de cifrado por sustitución El cifrado por sustitución es un método por el que unidades de texto son sustituidas por nuevos caracteres de cualquier tipo, es decir, letras, números, símbolos, etc. Los caracteres permanecen en el mismo orden y el receptor descifra el texto realizando la sustitución inversa. Hay dos tipos de sustitución: Sustitución monoalfabética: Cada carácter se sustituye siempre por un determinado carácter del alfabeto del texto cifrado. Ésto significa que si la letra A se sustituye por la letra Z, ésto va a ser así a lo largo de todo el texto. Dentro de este tipo se localiza el ya mencionado cifrado César. Sustitución polialfabética: Se dice que un cifrado de sustitución es polialfabético cuando un determinado carácter no se sustituye siempre por el mismo carácter. Es decir, hay implicados varios alfabetos de texto cifrado y, dependiendo de las circunstancias, se aplicará uno u otro. Miguel García Ocón 16 Criptología
23 Tipos de cifrado por transposición A diferencia del cifrado por sustitución, el cifrado de transposición no disfraza los caracteres, simplemente los reordena. Este tipo de algoritmos son de clave simétrica, por lo que tanto el emisor como el receptor tienen que ser conocedores de la clave. Por mencionar un ejemplo del que ya se ha hablado, la escítala espartana esdeestetipo.enestecaso,laclavesimétricaeslaanalogíaenelgrosordelas varas que se utilizaban para enrollar las cintas que contenían el texto cifrado Criptografía moderna En la criptografía existe una relación entre la complejidad o longitud de la clave y el tiempo necesario para cifrar y descifrar la información. Debido principalmente a esto, la criptografía clásica carece de una complejidad excesiva. Sin embargo, en la era moderna esta relación se rompe, debido fundamentalmente a tres factores: Velocidad de cálculo: La aparición de los ordenadores permitió aumentar drásticamente la potencia de cálculo. Avance de las matemáticas: Se pudieron encontrar y definir con claridad sistemas criptográficos estables y seguros. Necesidades de seguridad: Debido también a la aparición de las computadoras, surgieron muchas actividades que precisaban de protección de la información. En la criptografía moderna, existen dos tipos de cifrado según el tratamiento que se le de al mensaje: Cifrado en bloque: El cifrado se realiza en grupos de bits de longitud fija, llamados bloques. El algoritmo que nos interesa, el AES, es de este tipo, trabajando con bloques de 128 bits (aunque puede trabajar con otros tamaños). Otros algoritmos de este tipo son el DES y el IDEA. Cifrado en flujo: Consiste en convertir el texto claro en texto cifrado bit a bit mediante un generador de flujo de clave. Encontramos un ejemplo de cifrado en flujo en el algoritmo RC4. Miguel García Ocón 17 Criptología
24 Además, según el tipo de clave utilizada para el cifrado, encontramos: Criptografía simétrica. Criptografía asimétrica Criptografía simétrica La criptografía simétrica o de clave privada, también conocida como criptografía de una clave, es un método criptografíco en el cual se usa una sola clave, la misma para cifrar y descifrar la información. Las dos partes que se comunican han de ponerse de acuerdo de antemano acerca de la clave a utilizar. Después, el remitente cifra el mensaje con la clave pactada y le envía al destinatario el mensaje cifrado. Posteriormente, el destinatario utiliza la misma clave para descifrar los datos para finalmente acceder a la información original. El algoritmo con el que vamos a trabajar, AES, es de clave privada. Las desventajas asociadas a este sistema son, principalmente: Problemas en la seguridad de la comunicación de las claves. Necesidad de un gran número de claves cuando se incrementa el número de personas que necesitan comunicarse entre sí Criptografía asimétrica La criptografía asimétrica o de clave pública, también conocida como criptografía de dos claves, es un método criptográfico en el cual se usan dos claves para el envío de mensajes. Ambas claves pertenecen a la misma persona. Una es pública y se puede entregar a cualquier persona, la otra es privada y el propietario debe guardarla a toda costa. Consiste en que el remitente utiliza la clave pública del destinatario para cifrar el mensaje antes de enviarlo. Después, el destinatario utiliza su clave privada para descifrar el mensaje. Se soluciona, por tanto, el problema de la criptografía simétrica referido a los problemas en la seguridad de la comunicación de las claves. Se asegura también la confidencialidad, ya que únicamente el destinatario tiene acceso a la información. Miguel García Ocón 18 Criptología
25 En el caso de que el propietario del par de claves sea el remitente y utilice su clave privada para cifrar el mensaje, cualquiera podrá descifrarlo con su clave pública. Se asegura, por tanto, la autenticación, es decir, que el emisor es quien dice ser. La principal desventaja de este sistema es que las claves son vulnerables a ataques por fuerza bruta. Y, mientras que en la clave del sistema simétrico es suficiente una longitud de clave de 128 bits, se recomienda que hoy en día se utilicen, para claves públicas, longitudes de 1024 bits. La ilustración 2.3 pretende explicar de manera sencilla las diferencias entre criptografía simétrica y criptografía asimétrica. Alice Bob Cifrado Simétrico Cifrado Asimétrico Figura 2.3: Diferencias entre criptografía simétrica y asimétrica 2.2. Criptoanálisis El criptoanálisis es la rama de la criptología que se dedica al estudio de los sistemas criptográficos con el fin de romper su seguridad y acceder a la información privada. Estos ataques se pueden clasificar en función de sus características. Miguel García Ocón 19 Criptología
26 Actitud del atacante 1. Ataques pasivos: El atacante no altera la comunicación, sólo la escucha o monitoriza para obtener información. 2. Ataques activos: El atacante modifica el flujo de datos o crea flujos falsos. Conocimiento previo 1. Ataque con texto cifrado conocido: El atacante sólo tiene acceso a los textos cifrados. 2. Ataque con texto plano conocido: El atacante tiene una serie de textos cifrados de los que conoce sus correspondientes textos planos. 3. Ataque con texto plano escogido: El atacante puede obtener los textos cifrados correspondientes a un conjunto de textos planos de su propia elección. 4. Ataque con texto cifrado escogido: El atacante puede obtener los textos planos correspondientes a un conjunto de textos cifrados de su propia elección. 5. Ataque adaptativo con texto plano escogido: Similar al ataque con texto plano escogido, pero el atacante puede elegir los subsiguientes textos planos basándose en la información de los descifrados con anterioridad. De la misma manera, existe un ataque adaptativo con texto cifrado escogido. 6. Ataque de clave relacionada: Similar a un ataque con texto plano escogido, con la particularidad de que el atacante puede obtener el texto cifrado con dos claves diferentes, las cuales son desconocidas, pero se conoce la relación entre ambas. Objetivo 1. Ruptura total: El atacante averigüa la clave secreta 2. Deducción global: El atacante descubre un algoritmo funcionalmente equivalente para el cifrado y descifrado, pero no obtiene la clave. 3. Deducción local: El atacante descubre textos planos o cifrados, adicionales a los conocidos previamente. 4. Deducción de información: El atacante descubre información que no era conocida previamente. Miguel García Ocón 20 Criptología
27 5. Distinción del algoritmo: El atacante puede distinguir la información cifrada de una permutación al azar. Coste 1. Tiempo: Número de operaciones primitivas que deben ser realizadas. 2. Memoria: Cantidad de almacenamiento necesario para realizar el ataque. 3. Datos: Cantidad de textos planos y cifrados necesaria. Existen multitud de métodos de ataque criptoanalíticos y todos han ido surgiendo o evolucionando de la mano de los avances criptográficos. Entre los más conocidos se encuentran el análisis de frecuencias, especializado en cifrado clásico, el criptoanálisis diferencial y criptoanálisis lineal, especializados en criptografía simétrica, y, hablando en ámbitos generales, encontramos otros como el ataque de fuerza bruta Análisis de frecuencias Se trata de uno de los métodos más usados en el criptoanálisis a la hora de romper cifrados clásicos. Figura 2.4: Frecuencia de las letras en castellano [Ana] Miguel García Ocón 21 Criptología
28 Si observamos la ilustración 2.4, descubriremos que ciertas letras o grupos de letras se repiten con más frecuencia que otras. Por ejemplo, la letra E en castellano es la más usada (13.68%), mientras que la letra W apenas tiene presencia (0.02%), por lo tanto, si nos encontramos ante un texto cifrado y se observa una letra repetida varia veces, hay más probabilidades de que esa letra descifrada sea una E que de que sea una W. No siempre ocurre así, ya que, por ejemplo, la letra A también tiene mucha presencia en nuestro idioma. Por ello también se trabaja con frecuencias de grupos de letras Criptoanálisis diferencial El criptoanálisis diferencial es un tipo de ataque que puede aplicarse a cifradores de bloque iterativos, como lo son el DES, el IDEA y el AES. Hablando en términos generales, podemos decir que el critoanálisis diferencial consiste en estudiar varios textos claros escogidos, de manera que se pueda apreciar como las diferencias entre ellos afectan a sus correspondientes textos cifrados bajo la misma clave. De este modo, se puede reconocer los patrones de comportamiento no aleatorios del cifrador y, eventualmente, descubrir la clave secreta. Este tipo de ataque es atribuido a Eli Biham y Adi Shamir, a finales de los Criptoanálisis lineal Al igual que el critoanálisis diferencial, el criptoanálisis lineal es un tipo de ataque concebido para romper cifradores de bloque. Su descubrimiento es atribuido a Mitsuru Matsui, quien aplicó el ataque al cifrador FEAL y, posteriormente, al DES. Consiste en la búsqueda de aproximaciones lineales al comportamiento del cifrador para así poder describirlo. Dados suficientes textos sin cifrar y sus correspondientes textos cifrados, se puede obtener la clave secreta. Miguel García Ocón 22 Criptología
29 Ataque de fuerza bruta Se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las combinaciones posibles hasta encontrarla. La cantidad posible de claves es denominada Espacio de Claves, y viene definida por: Espacio de claves = 2 n Donde n es la longitud de nuestra clave. A modo de ejemplo, nuestro algoritmo AES utiliza claves de 128, 192 y 256 bits. Por lo tanto, el caso más vulnerable tendría claves de 128 bits. Sobra decir que la cantidad es tan abrumadora que, con los procesadores que existen hoy día, sería una locura intentar un ataque de fuerza bruta contra este cifrado Esteganografía La esteganografía es la rama de la criptología que se encarga de estudiar las técnicas que permiten ocultar un mensaje dentro de otro, al que se le conoce como portador, de modo que se establece un canal encubierto de comunicación y el mensaje pasa inadvertido a ojos de los observadores. En la esteganografía debe haber voluntad de comunicacion tanto por parte del emisor como del receptor. Su uso está presente desde tiempos antigüos y, hoy en día, existen numerosos métodos esteganográficos para ocultar información, principalmente dentro de archivos multimedia. Por ejemplo, es muy común esconder información dentro de imágenes a través del método conocido como LSB (Least Significant Bit o Bit Menos Significativo). Cambiar el bit menos significativo para ocultar un mensaje altera la imagen de una manera imperceptible para el ojo humano. Miguel García Ocón 23 Criptología
30 Es muy habitual recurrir a este método para insertar marcas de agua con información acerca de derechos de autor, propiedad o licencias, pero también es posible esconder imágenes con este método, como se muestra en la figura 2.5. Figura 2.5: Ejemplo del método esteganográfico LSB [Est] El cambio entre la imagen portadora y la imagen final, que porta el mensaje esteganográfico, o estego-mensaje, en sus bits menos significativos, es inapreciable Estegoanálisis El estegoanálisis es la disciplina dedicada al estudio de la detección de mensajes ocultos mediante técnicas esteganográficas. Para considerar un sistema roto, basta con ser capaz de detectar la existencia de un mensaje oculto, a diferencia del criptoanálisis, en el que es necesario descifrar el mensaje. Generalmente, el estegoanálisis es una tarea muy compleja, debido principalmente al gran número de medios por los que se puede transmitir la información oculta y a la existencia de diversas técnicas esteganográficas. Miguel García Ocón 24 Criptología
31 Capítulo 3 Advanced Encryption Standard 3.1. Introducción El AES(Advanced Encryption Standard) fue desarrollado por dos criptólogos belgas, Joan Daemen y Vincent Rijmen. En realidad, el nombre del cifrado es Rijndael, el cual fue ganador del concurso público de candidato a AES. Debido a que el anterior algoritmo estándar, el DES, había consumido su tiempo de vida, en el año 1997, el NIST (Instituto Nacional de Estándares y Tecnología) de Estados Unidos emprendió un proceso abierto para la selección de un nuevo algoritmo de cifrado, el cual sería sometido a la crítica de especialistas e instituciones de seguridad. Se decidió hacer un concurso público porque ya había habido quejas debido a que partes del anterior estándar, el DES, no habían sido documentadas, lo que daba la impresión de que el gobierno de los Estados Unidos mantenía puertas traseras. Según [Mun04], los candidatos a AES debían reunir unos requisitos mínimos: El algoritmo debía ser público. Debía ser un algoritmo en bloque simétrico. La longitud de clave debía ser, al menos, de 128 bits. Miguel García Ocón 25 Advanced Encryption Standard
32 Su diseño debía permitir aumentar la longitud de clave según necesidades. Debía poder implementarse tanto en hardware como en software. Si los algoritmos cumplían con esos requisitos mínimos, serían juzgados por diversos factores: Seguridad. Eficiencia computacional. Requisitos de memoria. Simplicidad del diseño. Flexibilidad. Además, los algoritmos presentados a concurso debían soportar obligatoriamente una longitud de bloque de al menos 128 bits y una longitud de clave de 128, 192 y 256 bits, al margen de otras longitudes posibles. El NIST propuso que cualquier organización, institución o persona pudiera participar en el concurso de forma activa, ya fuera presentando algoritmos o enviando informes o pruebas para poner en evidencia a los algoritmos candidatos. En Octubre del año 2000, tras dos años de concurso y tres rondas de votaciones, el algoritmo de cifrado Rijndael se proclama vencedor, por permitir la mejor combinación de seguridad/velocidad/eficiencia, por su sencillez y por su gran flexibilidad Definición del algoritmo Como ya se ha dicho, el AES es un cifrador en bloque de criptografía simétrica, es decir, trabaja cifrando y descifrando bloque a bloque, utilizando la misma clave privada para ambos procesos. Según [NIS01], en el estándar, el algoritmo Rijndael divide los datos de entrada en bloques de 4 palabras de 32 bits, es decir, 4 32 = 128 bits. Es necesario decir que el algoritmo Rijndael puede trabajar también con bloques mayores de 192 y 256 bits, pero no vienen contemplados en el estándar. Miguel García Ocón 26 Advanced Encryption Standard
33 Al bloque de datos se le conoce como Estado. En cuanto a la longitud de clave, el estándar trabaja con longitudes de Nk palabras de 32 bits, donde Nk = 4, 6 ó 8. Es decir, que el algoritmo trabaja con longitudes de clave de 128 (4 32), 192 (6 32) ó 256 (8 32) bits. Si observamos la figura 3.1, veremos que, tanto el texto claro como el texto cifrado se dividen en bloques de 128 bits, mientras que la longitud de clave puede variar entre 128, 192 y 256 bits. Más adelante estudiaremos qué implican en el cifrado (o descifrado) las distintas longitudes de clave. Texto Claro 128 bits Clave de Cifrado 128, 192 ó 256 bits AES 128 bits Texto Cifrado Figura 3.1: Cifrador AES Conocimientos previos Antes de entrar en la descripción del funcionamiento del cifrado y descifrado, es necesario tener en cuenta cierta información Unidad básica Según [NIS01], la unidad básica de procesamiento del AES es el byte. Un byte es una cadena de 8 bits, representados como {b 7, b 6, b 5, b 4, b 3, b 2, b 1, b 0 }. Además, un byte se puede representar en un campo finito mediante un Miguel García Ocón 27 Advanced Encryption Standard
34 polinomio a través de la siguiente fórmula: 7 b i x i i=0 Por ejemplo, si partimos del siguiente byte: { }, su polinomio será: x 5 +x 3 +x 2 +1 También es útil usar la notación hexadecimal para referirse a los bytes, dividiéndolos en dos grupos de cuatro bits. Cadena Carácter Cadena Carácter de Bits hexadecimal de Bits hexadecimal A B C D E F Tabla 3.1: Notación hexadecimal Deestamanera,elbyte{ }puedeserrepresentadoporelnúmero hexadecimal {2D} El Estado Como ya se ha dicho, el Estado es un bloque de 128 bits en el estándar. Se trata, por tanto, de una sucesión de 16 bytes. Para facilitar visualmente la comprensión de las operaciones realizadas en el AES, estos 16 bytes se suelen representar como una matriz de cuatro filas por cuatro columnas de la siguiente manera: Si a un byte lo denominamos con la letra B, la sucesión de bytes será {B 15, B 14, B 13, B 12, B 11, B 10, B 9, B 8, B 7, B 6, B 5, B 4, B 3, B 2, B 1, B 0 }. En este proyecto se ha elegido que su representación matricial sea: Miguel García Ocón 28 Advanced Encryption Standard
35 B 15 B 11 B 7 B 3 B 14 B 10 B 6 B 2 B 13 B 9 B 5 B 1 B 12 B 8 B 4 B 0 Además, en estas matrices se utilizará, por comodidad, la notación hexadecimal Operaciones matemáticas Básicamente hay dos operaciones mátematicas que se realizan entre unidades básicas: Suma. Multiplicación. Según [NIS01], la suma (o resta) de dos bytes se realiza a través de la operación OR Exclusiva (XOR) (tabla 3.2). A B A B Tabla 3.2: Operación XOR Vamos a realizar un ejemplo de la suma de { } y { } = (Notación binaria) 49+D3 = 9A (Notación hexadecimal) (x 6 +x 3 +1)+(x 7 +x 6 +x 4 +x+1) = x 7 +x 4 +x 3 +x(notaciónpolinómica) Para explicar la multiplicación es necesario conocer el polinomio irreductible 1 de AES. Este polinomio se define como: m(x) = x 8 +x 4 +x 3 +x+1 1 Un polinomio es irreductible si sus únicos divisores son él mismo y la unidad Miguel García Ocón 29 Advanced Encryption Standard
36 Para multiplicar dos bytes se utiliza su forma polinómica, recordando siempre que la suma es equivalente a una operación XOR. El polinomio de AES es necesario porque es muy probable que la multiplicación de dos bytes dé un resultado de más de 8 bits. De modo que necesitamos hacer el módulo de ese polinomio con el polinomio de AES, para así volver a tener 1 byte, que es la unidad con la que trabaja el algoritmo. Por ejemplo, si queremos multiplicar { } { } (x 6 +x 4 +x 2 +x+1)(x 7 +x+1) = x 13 +x 11 +x 9 +x 8 +x 6 +x 5 +x 4 +x 3 +1 y x 13 +x 11 +x 9 +x 8 +x 6 +x 5 +x 4 +x 3 +1modulox 8 +x 4 +x 3 +x+1 = x 7 +x Encriptador AES Para definirel proceso decifrado del AES,vamos a asumir que la longitud de clave escogida es de 128 bits, ya que la longitud de clave no afecta a las diversas operaciones que realiza el cifrado. Con el objetivo de facilitar el entendimiento de las operaciones realizadas por el cifrador, se realizarán pequeños ejemplos. Básicamente, el cifrador aplica al Estado cuatro operaciones durante un número determinado de rondas. Dicho número de rondas (Nr) viene definido por la longitud de clave utilizada, siendo Nr = 10 para una longitud de clave de 128 bits, Nr = 12 para 192 bits y Nr = 14 para 256 bits. Las cuatro operaciones realizadas en el cifrado son denominadas: SubBytes. ShiftRows. MixColumns. AddRoundKey. En la figura 3.2 se explica como se distribuyen las operaciones realizadas en el cifrado a lo largo de las 10 rondas necesarias para una clave de 128 bits. Miguel García Ocón 30 Advanced Encryption Standard
37 Estado AddRoundKey Ronda Inicial (Ronda 0) 1. SubBytes 2. ShiftRows 3. MixColumns 4. AddRoundKey No Nr = 9 Sí SubBytes ShiftRows AddRoundKey 9 rondas principales Ronda final (ronda 10) Texto Cifrado Figura 3.2: Proceso de cifrado Como vemos, en primer lugar se realiza una ronda inicial en la que únicamente se aplica una operación AddRoundKey. Posteriormente, se realizan las nueve rondas principales, en las que se aplican las cuatro operaciones del cifrado en este orden: SubBytes, ShitfRows, Mix- Columns y AddRoundKey. Por último, se realiza la ronda final, en la que se aplican las operaciones SubBytes, ShiftRows y AddRoundKey, obteniendo así nuestro texto cifrado. Cabe destacar que en cada ronda se utilizan diferentes subclaves, derivadas de la clave original. De modo que en la ronda inicial se utiliza la clave original (si la clave es de 128 bits) y en la ronda final se utiliza la subclave número 10. A continuación se explicarán, una a una, las diversas operaciones que realiza el cifrado SubBytes La operación SubBytes consiste, según[nis01], en una sutitución no lineal de bytes. Dicha sustitución se realiza aplicando la fórmula: Miguel García Ocón 31 Advanced Encryption Standard
38 S i,j = M S 1 i,j +C Donde M = ,C = S 1 i,j = Multiplicativo inverso del byte a transformar, con el bit menos significativo arriba. S i,j = Transformación SubBytes, con el bit menos significativo arriba. Existe una tabla de sustitución fija, llamada S-box (tabla 3.3), que aplica estas operaciones y permite realizar la operación SubBytes mediante un simple vistazo x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 0x 63 7C 77 7B F2 6B 6F C B FE D7 AB 76 1x CA 82 C9 7D FA F0 AD D4 A2 AF 9C A4 72 C0 2x B7 FD F F7 CC 34 A5 E5 F1 71 D x 04 C7 23 C A E2 EB 27 B2 75 4x C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84 5x 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF 6x D0 EF AA FB 43 4D F9 02 7F 50 3C 9F A8 7x 51 A3 40 8F 92 9D 38 F5 BC B6 DA FF F3 D2 8x CD 0C 13 EC 5F C4 A7 7E 3D 64 5D x F DC 22 2A EE B8 14 DE 5E 0B DB Ax E0 32 3A 0A C C2 D3 AC E4 79 Bx E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08 Cx BA E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A Dx 70 3E B F6 0E B9 86 C1 1D 9E Ex E1 F D9 8E 94 9B 1E 87 E9 CE DF Fx 8C A1 89 0D BF E D 0F B0 54 BB 16 Tabla 3.3: S-Box Entonces, si necesitamos realizar la operación SubBytes al número {19}, no tenemos más que mirar la tabla, fijándonos en la fila 1x y la columna x9, obteniendo así que la transformación de {19} es {D4}. Miguel García Ocón 32 Advanced Encryption Standard
39 ShiftRows La operación ShiftRows consiste, según [NIS01], en una rotación cíclica hacia la izquierda de las filas de la notación matricial del Estado, de manera que la primera fila permanece igual, la segunda fila se rota hacia la izquierda una posición, la tercera fila se rota hacia la izquierda dos posiciones y, por último, la cuarta fila se rota hacia la izquierda tres posiciones. En la ilustración 3.3 se observa con claridad la función de esta operación. B 15 B 14 B B 11 B B 9 B 12 B 8 B B 6 B 5 B 4 B B 2 B 1 B ShiftRows B 15 B 11 B B B B 6 B 2 B 14 B 5 B 1 B B 9 B B 12 B 8 B 4 Figura 3.3: Operación ShiftRows MixColumns En la operación MixColumns, los cuatro bytes de cada columna de la notación matricial del Estado se combinan utilizando una transformación lineal inversible, como establece [NIS01]. Cada columna se trata como un polinomio y luego se multiplica el módulo x 4 +1 con un polinomio fijo a(x) ={03}x 3 +{01}x 2 +{01}x+{02} Es más sencillo verlo como una multiplicación matricial, donde el Estado siempre se multiplica a la derecha de la misma matriz: Miguel García Ocón 33 Advanced Encryption Standard
40 Es decir, B 15 B 11 B 7 B 3 B 14 B 10 B 6 B 2 B 13 B 9 B 5 B 1 B 12 B 8 B 4 B 0 Multiplicando de esta manera, siempre teniendo en cuenta los aspectos matemáticos que hemos comentado en el apartado , obtendremos el resultado de la operación MixColumns. Dentro del AES, este es, sin duda, uno de los procesos más costosos en cuanto a cantidad de operaciones realizadas AddRoundKey La operación AddRoundKey consiste, según [NIS01], en la combinación de la subclave de ronda correspondiente con el Estado. Esta combinación se realiza a través de la operación XOR. En la ilustración que representa el proceso de cifrado (3.2) se observa que en la ronda inicial (ronda 0) se realiza esta operación. En el caso que estamos estudiando, longitud de clave de 128 bits, la subclave de ronda 0 es la propia clave de cifrado. Aunque se estudiará más adelante, es importante señalar que, en el caso de tener claves de 192 y 256 bits, su correspondiente subclave de ronda 0 no es, lógicamente, la clave original, sino que será un fragmento de 128 bits de ésta, en concreto sus 128 bits más significativos Desencriptador AES De nuevo, para definir el proceso de descifrado, vamos a suponer que la longitud de clave escogida es de 128 bits, lo cual implica 10 rondas. Hay que recordar que AES es un cifrador de clave simétrica, lo que quiere decir que la misma clave que se ha usado para cifrar los datos es la que se usará para descifrarlos. Básicamente, el proceso de descifrado consiste en aplicar, en orden inverso al del cifrado, las operaciones inversas a las descritas en el encriptador. De nuevo, tenemos cuatro operaciones diferentes: Miguel García Ocón 34 Advanced Encryption Standard
41 InvSubBytes. InvShiftRows. InvMixColumns. AddRoundKey. En la figura 3.4 se explica como se distribuyen las operaciones realizadas en el descifrado. Texto Cifrado AddRoundKey Ronda Inicial (Ronda 10) InvShiftRows InvSubBytes Ronda 9 AddRoundKey 1. InvMixColumns 2. InvShiftRows 3. InvSubBytes 4. AddRoundKey No Nr = 0 Sí Rondas Restantes Texto Claro Figura 3.4: Proceso de descifrado La operación AddRoundKey es la misma que en la encriptación, es decir, una operación XOR entre el Estado y la subclave correspondiente, por lo que no se volverá a explicar. Como vemos en la figura 3.4, el proceso empieza en la última ronda, es decir, que la primera operación que aparece, AddRoundKey, utilizará la subclave número 10. Se puede deducir que si las longitudes de clave son 192 ó 256 bits, la primera ronda que se usará en el descifrado será la 12 o la 14 respectivamente. Miguel García Ocón 35 Advanced Encryption Standard
42 Posteriormente se realiza la ronda 9, en la que se aplican al Estado las operaciones InvShiftRows, InvSubBytes y AddRoundKey. Por último, se realizan, hasta la ronda final (ronda 0), las diversas operaciones de descifrado en este orden: InvMixColumns, InvShiftRows, InvSubBytes y AddRoundKey. De nuevo, la subclave de ronda 0 es la clave original (si la longitud de clave es de 128 bits). A continuación describiremos las operaciones necesarias para el descifrado InvSubBytes Según [NIS01], la operación InvSubBytes es, al igual que la operación SubBytes, una sutitución no lineal de bytes. Dicha sustitución se realiza aplicando la fórmula: S i,j = (M 1 (S i,j +C)) 1 De nuevo, existe una tabla de sustitución fija a la que hemos denominado InvS-box (tabla 3.4), la cual permite realizar la operación InvSubBytes de manera análoga a la operación SubBytes. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 0x A D A5 38 BF 40 A3 9E 81 F3 D7 FB 1x 7C E B 2F FF E C4 DE E9 CB 2x 54 7B A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E 3x 08 2E A D9 24 B2 76 5B A2 49 6D 8B D1 25 4x 72 F8 F D4 A4 5C CC 5D 65 B6 92 5x 6C FD ED B9 DA 5E A7 8D 9D 84 6x 90 D8 AB 00 8C BC D3 0A F7 E B8 B x D0 2C 1E 8F CA 3F 0F 02 C1 AF BD A 6B 8x 3A F 67 DC EA 97 F2 CF CE F0 B4 E6 73 9x 96 AC E7 AD E2 F9 37 E8 1C 75 DF 6E Ax 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1B Bx FC 56 3E 4B C6 D A DB C0 FE 78 CD 5A F4 Cx 1F DD A C7 31 B EC 5F Dx F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 9C EF Ex A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C Fx 17 2B 04 7E BA 77 D6 26 E C 7D Tabla 3.4: InvS-Box La tabla 3.4 es inversa a la tabla 3.3, que representaba la S-box. Recordemoselejemploquesepropuso,enelqueelbyte{19},atravésdelaoperación Miguel García Ocón 36 Advanced Encryption Standard
43 SubBytes se transformaba en el byte {D4}. Si ahora queremos aplicar la operación InvSubBytes al byte {D4}, miramos en la tabla 3.4 la fila Dx y la columna x4. Obtenemos el byte {19} InvShiftRows La operación InvShiftRows consiste, según [NIS01], en una rotación cíclica hacia la derecha de las filas de la notación matricial del Estado, de manera que la primera fila permanece igual, la segunda fila se rota hacia la derecha una posición, la tercera fila se rota hacia la derecha dos posiciones y, por último, la cuarta fila se rota hacia la derecha tres posiciones. Consiste, por tanto, en una rotación en dirección opuesta a la que se propuso en la operación ShiftRows, como se expone en la figura 3.5. B 15 B 14 B B 11 B B 9 B 12 B 8 B B 6 B 5 B 4 B B 2 B 1 B InvShiftRows B 15 B 11 B B 2 B 14 B B 5 B 1 B B 8 B 4 B B B 6 B 9 B 12 Figura 3.5: Operación InvShiftRows InvMixColumns Según [NIS01], es la operación inversa a MixColumns. En ella, cada columna se trata como un polinomio y luego se multiplica el módulox 4 +1conunpolinomiofijoa 1 (x) ={0B}x 3 +{0D}x 2 +{09}x+{0E} De nuevo, es más intuitivo verlo como una multiplicación del Estado a la derecha de una matriz fija. Dicha matriz es: Miguel García Ocón 37 Advanced Encryption Standard
44 Es decir, 0E 0B 0D E 0B 0D 0D 09 0E 0B 0B 0D 09 0E 0E 0B 0D E 0B 0D 0D 09 0E 0B 0B 0D 09 0E B 15 B 11 B 7 B 3 B 14 B 10 B 6 B 2 B 13 B 9 B 5 B 1 B 12 B 8 B 4 B Cálculo de subclaves En el AES, concretamente en la operación AddRoundKey, se utilizan diferentes subclaves, todas derivadas de la clave original. La clave expandida, una sucesión de todas las subclaves, puede verse como una matriz de 4 filas por [4 (Nr+1)] columnas. Es decir, que la longitud de la clave expandida varía dependiendo de Nr, que a su vez varía dependiendo de la longitud de clave. Por ejemplo, la clave expandida para una longitud de clave de 128 bits se representa como una matriz de 4 filas por (4 11), es decir, 44 columnas. Análogamente, para una longitud de clave de 192 bits (la cual se representa en la clave expandida como una matriz de 4 6), la clave expandida es una matriz de 4 filas por (4 13), o lo que es lo mismo, 52 columnas. Todas las subclaves utilizadas, para cualquier longitud de clave, son de 128 bits, o lo que es lo mismo, 4 columnas. Esa es la razón por la que a más longitud de clave, más número de rondas. Es importante señalar que el cálculo de subclaves es idéntico para longitudes de clave de 128 y 192 bits, mientras que para 256 bits varía en ciertos detalles. Un dato del AES, necesario para el cálculo de subclaves para claves de cualquier longitud, es la matriz Rcon. Dicha matriz, según [NIS01] es de la siguiente forma: Miguel García Ocón 38 Advanced Encryption Standard
45 Rcon = B Es necesario saber que en este proyecto se ha designado a la primera columna de Rcon como Rcon(1), a la segunda como Rcon(2) y así sucesivamente hasta la última columna, Rcon(10). Las columnas de la matriz de clave ampliada se calculan en diez grupos (uno por cada columna de la matriz Rcon) de Nk columnas cada uno Cálculo de subclaves a partir de una clave de longitud 128 ó 192 bits Ya que el procedimiento es idéntico para ambas longitudes, se asumirá que la longitud de la clave a expandir es de 128 bits. Para facilitar la explicación, vamos a apoyarnos en un ejemplo real. Columnas B 28 AB Figura 3.6: Matriz de clave expandida Como vemos en la figura 3.6, la matriz de clave expandida es de 4 filas por 44 columnas. 1. El primer paso para calcular las subclaves es introducir la clave original en las primeras columnas. En el caso de 128 bits, ocupa 4 columnas, como se puede apreciar en la ilustración. Ahora hay que calcular las columnas de las diferentes subclaves una a una. Básicamente, la primera columna del grupo de Nk columnas (en este caso 4) aplica una serie de operaciones que describiremos a continuación, mientras que el resto de columnas del grupo se calculan de manera análoga. Miguel García Ocón 39 Advanced Encryption Standard
46 Vamos a denominar como C i a la columna actual que queremos hallar. En este momento i = 4 2. Se aplica sobre C i 1 una rotación hacia arriba. 09 CF Es decir, CF 4F 4F 3C 3C Sobre esa columna rotada, se aplica la operación SubBytes. CF 8A Entonces, 4F 3C 84 EB AlatransformaciónSubBytes queacabamosdehallarselesumanc i nk y Rcon(i/nk), obteniendo así la columna C i que estabamos buscando. Hay que recordar que la suma es una operación XOR y que nk = 4, 6 ó 8 para longitudes de clave 128, 192 ó 256 bits respectivamente. En este caso nk = 4, por lo tanto, la columna de la matriz Rcon que hay que utilizar en este momento (i = 4) es Rcon(1), es decir, la primera columna. Por lo tanto, 8A 84 EB 01 Llegados a este punto, i = 5. 2B 7E = A0 FA FE 17 = C 4 5. Para hallar C i no hay más que realizar la suma de C i 1 y C i nk. A Es decir, FA FE AE D2 = 54 2C = C 5 17 A6 B1 Una vez hecho esto, las dos columnas que quedan por calcular de la primera subclave, C 6 y C 7, se hallan aplicando el paso 5. Para calcular una nueva subclave, volvemos al paso 2 y comenzamos de nuevo. Miguel García Ocón 40 Advanced Encryption Standard
47 Cálculo de subclaves a partir de una clave de longitud 256 bits Como hemos dicho, el cálculo de las subclaves para una longitud de clave de 256 bits difiere en algunos aspectos. Dentro de la matriz de clave expandida, la clave original ocupa 8 columnas. A partir de éstas, y siguiendo exactamente los mismos pasos descritos en el apartado anterior, obtendríamos columnas en grupos de 8. Sin embargo, hay que introducir un paso adicional. Este paso consiste en que, para hallar la columna número cinco de cada grupo de nuevas columnas, hay que realizar la operación SubBytes de C i 1 y, posteriormente, sumarla con C i nk, donde nk = 8. Si una clave original ocupa los lugares del 0 al 7 en la matriz de clave expandida, la columna que ocupa el quinto puesto en el nuevo grupo de columnas (del 8 al 15) será la número 12. En el siguiente grupo de columnas (del 16 al 23), el quinto puesto es ocupado por la columna número 20. Y así sucesivamente. Por lo tanto, si queremos hallar C 12, necesitaremos aplicar la operación SubBytes a la C 11 y sumar el resultado con C 4. Por lo demás es equivalente al apartado anterior, para hallar la primera columna del grupo se siguen los pasos 2, 3 y 4. Para el resto de columnas, exceptuando la quinta, se sigue el paso 5 del apartado anterior. Miguel García Ocón 41 Advanced Encryption Standard
48 Capítulo 4 Herramientas de trabajo y flujo de diseño En el presente capítulo se mostrarán las principales herramientas que se han utilizado para la consecución de este proyecto. Además, se explicará la manera en la que se han usado esas herramientas a lo largo del flujo de diseño, es decir, qué herramienta se ha utilizado en cada paso y qué hemos obtenido con ella Herramientas utilizadas Las herramientas de trabajo utilizadas son las siguientes: Xilinx ISE Design Suite 13.2 Modelsim 10.1c SE Rijndael Inspector 1.1 VIM XPower Analyzer Xilinx ISE Design Suite 13.2 Xilinx ISE (Integrated Software Enviroment) en una herramienta software, propiedad de Xilinx, que permite, entre otras funciones, describir el diseño y realizar su síntesis, su emplazamiento y su rutado. Miguel García Ocón 42 Herramientas de trabajo y flujo de diseño
49 Además, con esta herramienta software también se distribuye la herramienta Xpower Analyzer (ver apartado 4.1.5) Modelsim 10.1c SE Modelsim es una herramienta software, propiedad de Mentor Graphics, que permite, entre otras cosas, realizar simulaciones funcionales y simulaciones temporales, con las que podremos ver el funcionamiento real del circuito teniendo en cuenta especificaciones como los retardos Rijndael Inspector 1.1 Rinjndael Inspector es un software diseñado por Enrique Zabala para el proyecto Cryptool. En él se permite, aplicando el algoritmo AES, realizar el cifrado o descifrado de un bloque de 128 bits, utilizando una clave de una longitud de 128 bits. Se puede introducir manualmente el valor tanto del bloque a cifrar o descifrar como de la clave. Ha sido especialmente de utilidad porque no sólo encripta o desencripta losdatos,sinoquemuestratodosycadaunodelosvaloresqueadquiereelestado, además de las diferentes subclaves, es decir, que muestra los resultados después de cada operación realizada (SubBytes, MixColumns, etc) VIM VIM es un editor de texto que comprende más de 200 tipos de sintaxis. La utilidad más importante para este proyecto es la de la comparación de ficheros. En ella, los dos (o más) ficheros de texto se comparan y sus diferencias se remarcan con diversos colores. Por ejemplo, las eliminaciones aparecen en rojo, mientras que las nuevas inserciones aparecen en violeta XPower Analyzer Como hemos dicho, el XPower Analyzer viene distribuida con el Xilinx ISE. Con esta herramienta se puede hacer una estimación detallada del consumo de potencia, teniendo en cuenta valores como la temperatura. Miguel García Ocón 43 Herramientas de trabajo y flujo de diseño
50 Para ello, precisa de información que se obtendrá con el uso de las herramientas antes descritas. Esto será explicado más adelante Flujo de diseño La realización de este proyecto sigue unos pasos muy específicos. En cada paso precisaremos de herramientas diferentes. El objeto de esta sección es explicar uno a uno los pasos que se siguen en el diseño, aclarando qué herramienta se utiliza en cada uno y describiendo qué se obtiene de ellos. Básicamente, los pasos son: 1. Descripción en lenguaje VHDL. 2. Simulación funcional. 3. Síntesis, emplazamiento y rutado. 4. Simulación postlayout. 5. Estimación del consumo. Estos pasos hay que ejecutarlos en orden. Si alguno no proporciona los resultados deseados, se vuelve al paso Descripción en lenguaje VHDL El primer paso consiste en diseñar los ficheros.vhd que describen el comportamiento de nuestro circuito. En nuestro caso, el AES se ha dividido en componentes, con lo cual tendremos un archivo.vhd para cada componente. El requisito necesario para poder avanzar hasta el siguiente paso es realizar una sintaxis correcta, es decir, compilar los archivos.vhd de manera que no haya ningun error. Si lo hay, será necesario modificar el código de descripción. Miguel García Ocón 44 Herramientas de trabajo y flujo de diseño
51 Herramientas utilizadas para describir el diseño Cualquier editor de texto puede ser utilizado para describir el diseño, sin embargo, se ha optado por utilizar el editor del Xilinx ISE Design Suite 13.2, ya que también nos permite realizar la sintaxis, que es necesaria para verificar que el código descrito no tiene errores. Que el código sea válido no significa que el funcionamiento sea el deseado. Hay que comprobarlo en el siguiente paso Simulación funcional En este paso podremos comprobar si nuestro circuito funciona tal y como lo hemos descrito. Si el resultado es el esperado podremos avanzar hasta el siguiente paso. En caso contrario, es necesario volver al primer paso Herramientas utilizadas para la simulación funcional En este caso hemos utilizado las herramientas Modelsim 10.1c SE y VIM. En la herramienta Modelsim 10.1c SE tenemos información visual de los valores o estados tanto de los pines de entrada y salida como de las señales y variables internas descritas en el diseño en función del tiempo. Es decir, que somo capaces de ver como reacciona cada señal o variable interna ante un estímulo conocido de los pines de entrada (el cual podemos realizar a través de esta misma herramienta). Si la salida no es la deseada, es necesario identificar el problema estudiando los valores que adquieren las señales o variables internas, para así poder determinar donde está el fallo y volver al paso 1. Si la salida es la deseada podremos avanzar al siguiente paso. La herramienta VIM se ha utilizado porque, en simulaciones largas, en las que podemos cifrar o descifrar un número elevado de bloques de 128 bits, generando un archivo de texto con los resultados del proceso, es útil poder comparar ese archivo de texto con otro que contenga las salidas esperadas. Miguel García Ocón 45 Herramientas de trabajo y flujo de diseño
52 En el proyecto que nos ocupa, se han realizado simulaciones de hasta 100 vectores oficiales del NIST [Vec]. Hablando en términos de tiempo, es más económico utilizar esta herramienta que comparar los resultados uno a uno Síntesis, emplazamiento y rutado La síntesis es el paso en el que se adapta el diseño decrito a una FPGA en concreto de manera que ocupe el menor área posible. El emplazamiento es un proceso en el que se sitúan los bloques digitales de una manera óptima, mientras que el rutado se encarga de interconectarlos. Este paso genera unos ficheros necesarios para los siguientes pasos:.ncd (Native Circuit Description): Contiene la descripción del circuito..pcf (Physical Constraints File): Contiene las restricciones de emplazamiento y rutado..sdf (Standard Delay Format): Contiene los retardos internos de la FPGA seleccionada..vhd: contiene el código del archivo.vhd original pero a un nivel más bajo, teniendo en cuenta retardos. Los archivos.ncd y.pcf se utilizarán en la estimación de la potencia consumida, mientras que los archivos.sdf y.vhd se utilizarán en el paso de la simulación postlayout Herramientas utilizadas para la síntesis, emplazamiento y rutado La herramienta utilizada para este paso es Xilinx ISE Design Suite Antes de poder realizar el emplazamiento y el rutado es necesario obtener una síntesis correcta, es decir, que no haya errores ni warnings (latches, etc). En nuestro caso, ha sido una de las etapas más costosas ya que, a veces, era muy difícil identificar el problema al que se referían los warnings. Miguel García Ocón 46 Herramientas de trabajo y flujo de diseño
53 Cuando se realiza una síntesis correcta, el proceso de emplazamiento y rutado no tiene por qué dar problemas, pudiendo avanzar así al siguiente paso Simulación postlayout Consiste en una simulación teniendo en cuenta todos los posibles retardos. Con ella obtendremos unos resultados muy aproximados a la realidad. Para poder avanzar, es necesario obtener los resultados esperados en la simulación. Este paso no genera ningún archivo adicional por sí mismo, pero es necesario que generemos uno para obtener el consumo de potencia en la etapa siguiente..vcd (Value Change Dump): Contiene una traza de la evolución de todas las señales del circuito. Para obtener el archivo.vcd es necesario escribir en un editor de texto un archivo con extensión.do. Se trata de un script de instrucciones que generará el archivo buscado tras realizar la simulación postlayout. Este script se puede encontrar en el capítulo de Anexos (capítulo 10) Herramientas utilizadas para la simulación postlayout La herramienta utilizada en ese paso es, de nuevo, el Modelsim 10.1c SE. La mecánica es la misma que en la simulación funcional, con la excepción de que, para realizarla, utiliza los archivos.vhd de bajo nivel y.sdf, ambos generados en el paso anterior (síntesis, emplazamiento y rutado). Tambien se utiliza la herramienta VIM por el mismo motivo que en la simulación funcional Estimación del consumo En este último paso, en el que todo el flujo de diseño ha sido correcto, se estima la potencia consumida por el circuito para, posteriormente, poder trabajar en su reducción. Miguel García Ocón 47 Herramientas de trabajo y flujo de diseño
54 Herramientas utilizadas para la estimación del consumo La herramienta utilizada es el XPower Analyzer. Para poder realizar una estimación lo más próxima posible a la realidad, el XPower Analyzer requiere tres archivos:.ncd: Obtenido en el paso Síntesis, emplazamiento y rutado..pcf: Obtenido igualmente en el paso Síntesis, emplazamiento y rutado..vcd: Obtenido en el paso Simulación postlayout. Para ayudar a comprender mejor el flujo de diseño, se adjunta la figura 4.1. Miguel García Ocón 48 Herramientas de trabajo y flujo de diseño
55 Descripción VHDL (Xilinx ISE) Código Válido No Sí Simulación funcional (ModelSim) *.pcf *.ncd *.vhd *.sdf No Simulación correcta Sí Síntesis, emplazamiento y rutado (Xilinx ISE) *.vcd *.do Síntesis válida No Sí Simulación postlayout (ModelSim) No Simulación correcta Sí Estimación del consumo (XPower Analyzer) Figura 4.1: Flujo de diseño Miguel García Ocón 49 Herramientas de trabajo y flujo de diseño
56 Capítulo 5 del algoritmo AES En este capítulo se explicará la implementación realizada del algoritmo AES, describiendo cada uno de los bloques y componentes que conforman el diseño. Para hacerlo nos ayudaremos de imágenes y los resultados de las simulaciones. Es necesario señalar que para realizar las simulaciones del algoritmo se han utilizado vectores del NIST [Vec], mientras que para comprobar el correcto funcionamiento de cada componente por separado se ha utilizado la herramienta Rinjndael Inspector 1.1. El código VHDL del diseño se puede encontrar en los anexos de AES Como hemos dicho, el AES puede trabajar con tres longitudes de clave diferentes: 128, 192 y 256 bits. Esta implementación permite el uso de las tres longitudes, ya que se han aprovechado los recursos que ofrecen la declaración de genéricos. Como siempre, para realizar la explicación de la implementación, asumiremos que la longitud de clave es de 128 bits. Además, se ha optado por realizar una descripción estructurada, es decir, que se han descrito varios componentes interconectados mediante señales. A continuación se incluye una lista donde se describen brevemente los Miguel García Ocón 50 del algoritmo AES
57 diferentes componentes que conforman nuestro bloque principal AES (tabla 5.1). Componente Descripción subbytes Realiza tanto la operación SubBytes como InvSubBytes. shiftrows Realiza tanto la operación ShiftRows como InvShiftRows. mixcolumns Realiza tanto la operación MixColumns como InvMixcolumns. addroundkey Realiza la operación AddRoundKey. keygen Genera todas las subclaves de ronda y devuelve una en función del número de ronda. Tabla 5.1: Componentes de AES En la ilustración 5.1 se muestran los bloques que forman nuestro diseño, incluyendo todas las señales que se han descrito. Podemos ver que, además de los componentes antes mencionados, hay otros bloques adicionales. El elevado número de señales es el motivo por el que en el diagrama no se han interconectado los bloques, sin embargo en todos se detallan las señales y pines de entrada que ejercen influencia sobre ellos y las señales y pines de salida a los que modifican. Miguel García Ocón 51 del algoritmo AES
58 AES_in 32 enable state_loaded key_loaded limite 3 clk key clave_in 128 ronda ronda 4 enable_keygen enable clk registro reset keygen subclave clave_out 128 flag_keygen flag Componente key 128 state 128 state_loaded key_loaded limite 3 mode enable key_loaded flag_keygen state 128 addroundkey_out 128 subbytes_out 128 shiftrows_out 128 mixcolumns_out 128 flag_subbytes flag_mixcolumns subclave 128 ronda 4 clk FSM subbytes_in 128 enable_subbytes sel_subbytes shiftrows_in 128 sel_shiftrows mixcolumns_in 128 enable_mixcolumns sel_mixcolumns addroundkey_in 128 subclave2 128 AES_out 128 fin_proceso ronda 4 reset reset clk shiftrows shiftrows_in shiftrows_in 128 shiftrows_out sel_shiftrows shiftrows_out sel 128 Componente subbytes subbytes_in subbytes_out 128 subbytes_out es 128 enable s flag_subbytes sel flag Componente reset mixcolumns mixcolumns_in mixcolumns_in mixcolumns_out 128 mixcolumns_out enable_mixcolumns 128 enable sel_mixcolumns flag_mixcolumns sel flag clk addroundkey addroundkey_in addroundkey_in 128 addroundkey_out subclave2 addroundkey_out clave Componente Componente reset Entradas y salidas físicas Señales internas Nombres de pines de componentes a los que se refieren las señales Figura 5.1: Diagrama de bloques del AES Si observamos el diagrama, vemos que nuestra descripción contempla una entrada de únicamente 32 bits (AES in), por la que entran los datos tanto de la clave como de la información a cifrar o descifrar. En principio esto no era así, teniendo 128 bits de entrada para los datos y otros 128, 192 ó 256 para la clave. Sin embargo, el elevado número de pines resultante nos obligó a adaptarlo Miguel García Ocón 52 del algoritmo AES
59 de esta manera, ya que nos permitía implementar el diseño en una FPGA de tamaño adecuado, es decir, con mayor aprovechamiento del área, mejorando también su consumo de potencia. Debido a esto, fue necesario incluir el bloque al que hemos denominado como registro. Su función simplemente es agrupar los datos de entrada y separarlos en clave y en datos a cifrar (o descifrar). Además, cuando realiza este cometido, habilita a la FSM para comenzar su funcionamiento. El bloque denominado FSM en la ilustración 5.1 es una máquina de estados en la que realiza el procesamiento de los datos de entrada, ofreciendo el resultado buscado. Cabe destacar que se tuvo en cuenta la opción de comenzar con el cifrado mientras aun se estaban calculando las diferentes subclaves (en el descifrado esto no es posible, ya que la primera subclave que se requiere es la última). Sin embargo no se llevó a cabo porque se comprobó que cuando se requería la primera subclave, ésta no había sido calculada todavía Genéricos, pines de entrada y salida y señales internas de AES A continuación haremos una descripción de todos los puertos genéricos (tabla 5.2), los pines de entrada y salida (tabla 5.3) y las señales internas del circuito (tabla 5.4). Puertos genéricos Nombre Tipo Descripción key length integer Longitud en bits de la clave. nk integer Número de longitud de palabras (32 bits) de la clave. nr integer Número de rondas. Tabla 5.2: Puertos genéricos del AES Esta implementación se ha diseñado con genéricos para poder cambiar con facilidad la longitud de clave que queremos utilizar. Como se ha comentado con anterioridad, la clave puede tener una longitud de 128, 192 ó 256 bits, Nk Miguel García Ocón 53 del algoritmo AES
60 puede tener un valor de 4, 6 ó 8 y Nr varía entre 10, 12 ó 14, respectivamente. Entonces, si precisamos de una longitud de clave de 128 bits no hay más que configurar los genéricos de la siguiente manera: key length = 128 nk = 4 nr = 10 Entradas y salidas Nombre Tipo Dirección Descripción Entrada tanto de los AES in std logic vector(31 downto 0) E datos a procesar como de la clave. Indica si el proceso es mode std logic E de cifrado(1) o descifrado (0). clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. AES out std logic vector(127 downto 0) S Salida de un bloque de datos procesado. flag std logic S Indica que AES out ofrece un dato válido. Tabla 5.3: Entradas y salidas de AES Como hemos dicho, la entrada AES in, de 32 bits, está diseñada de modo que los datos entren en flujo, es decir, que cada ciclo de reloj entren los 32 bits correspondientes. Está diseñado de tal manera que primeramente tiene que entrar la clave e inmediatamente después los datos a procesar. Además el orden de entrada debe ser, en primer lugar, los 32 bits menos significativos. Miguel García Ocón 54 del algoritmo AES
61 Esto se entiende mejor con el siguiente ejemplo: Si partimos de la siguiente clave de 128 bits (hexadecimal): A0B 0C0D0E0F El primer grupo de 32 bits a introducir en nuestro diseño sería: 0C0D0E0F Esto sólo ocurre con el primer bloque de datos, ya que, para el siguiente bloque, se asume que se utiliza la misma clave. Es decir, que, tras finalizar el procesado de un bloque, se recogen únicamente cuatro palabras de 32 bits (128 bits), que son el siguiente bloque a procesar con la misma clave del anterior, evitando calcular de nuevo todas las subclaves. Si quisieramos procesar datos con una clave diferente sería necesario aplicar un reset. Señales internas Miguel García Ocón 55 del algoritmo AES
62 Nombre Tipo Descripción key std logic vector Señales de (key length-1 downto 0) ronda std logic vector(3 downto 0) correspondencia enable keygen std logic de puertos del flag keygen std logic componente subclave std logic vector(127 downto 0) keygen. addroundkey in subclave2 addroundkey out std logic vector(127 downto 0) Señales de correspondencia std logic vector(127 downto 0) de puertos del componente std logic vector(127 downto 0) addroundkey. subbytes in std logic vector(127 downto 0) Señales de enable subbytes std logic correspondencia sel subbytes std logic de puertos del flag subbytes std logic componente subbytes out std logic vector(127 downto 0) subbytes. shiftrows in std logic vector(127 downto 0) Señales de correspondencia sel shiftrows std logic de puertos del componente shiftrows out std logic vector(127 downto 0) shiftrows. mixcolumns in std logic vector(127 downto 0) Señales de enable mixcolumns std logic correspondencia sel mixcolumns std logic de puertos del flag mixcolumns std logic componente mixcolumns out std logic vector(127 downto 0) mixcolumns. state std logic vector(127 downto 0) Contiene los datos a procesar. state loaded std logic Indica que la señal state está preparada. key loaded std logic Indica que la señal key está preparada. Marca los límites limite std logic vector(2 downto 0) dentro de key y state donde se almacena AES in. fin proceso integer Indica que el proceso ha terminado. Tabla 5.4: Señales internas del AES Miguel García Ocón 56 del algoritmo AES
63 Las señales de correspondencia de puertos de los diversos componentes se explicarán en los apartados de dichos componentes, pero son muy similares entre sí. Básicamente las señales denominadas enable (habilitación) permiten al componente comenzar su función, las señales denominadas flag indican que el componente ha realizado su función y las señales denominadas sel indican si el proceso es de cifrado o descifrado. El resto son entradas y salidas del Estado al componente, con excepción del componente keygen, al que le llega la clave y devuelve las diferentes subclaves dependiendo de la señal ronda, y del componente addroundkey, al que, aparte del Estado, le llega la correspondiente subclave por medio de la señal subclave Máquinas de estado (FSM) de AES Como hemos dicho y mostrado en el diagrama de bloques (figura 5.1), en la implementación del AES se ha descrito una máquina de estados cuya función es realizar el procesado de los datos de entrada, proporcionando un resultado válido mostrado en la salida AES out. Además, esta FSM cambia sus estados en función de la entrada mode, es decir, que cada estado realiza una función diferente dependiendo de si el proceso es de cifrado o de descifrado FSM Lo primero que se realiza en nuestro diseño una vez que tenemos separadoslos128bitsdelosdatosylos128bitsdelaclave,eselcálculodesubclaves. Se ha optado por no comenzar el procesado de datos hasta que todas las subclaves hayan sido calculadas, ya que si los dos procesos comienzan al mismo tiempo, en el cifrado se requieren las subclaves cuando no han sido calculadas todavía. Es decir, que el tiempo requerido para realizar una ronda completa es inferior al requerido para el cálculo de una subclave. Además, debido a que en el proceso de descifrado sí se requiere tener todas las subclaves calculadas (la primera que utiliza es la última que se calcula), se ha elegido esperar también en el cifrado. De este modo tampoco se Miguel García Ocón 57 del algoritmo AES
64 observarán diferencias en el consumo de potencia entre un proceso u otro. La función de FSM es calcular las subclaves y realizar el procesado de datos. Consta de 9 estados: inicio: Es el estado de reposo. Cuando la señal key loaded se activa, se realiza la transición de estados. calculo subclaves: En él se desarrolla todo el proceso de cálculo de subclaves (sólo si es el primer bloque). Cuando la señal flag keygen y state loaded están activadas, se pasa al siguiente estado. Es necesario apuntar que flag keygen no se desactiva en ningún momento una vez se han calculado las subclaves. De esta forma conseguimos que la transicion de estado para los siguientes bloques a procesar se produzca inmediatamente cuando el bloque a procesar ha sido cargado. ronda inicial: Se realiza la operación que se requiere en la ronda inicial del cifrado o descifrado. Osubbytes: Realiza la operación SubBytes o la InvSubBytes. Cuando la señal flag subbytes se activa, cambia de estado. Oshiftrows: Realiza la operación ShiftRows o la InvShiftRows. Omixcolumns: Realiza la operación MixColums o la InvMixColumns. Cuando la señal flag mixcolumns se activa, se realiza la transición de estados. Oaddroundkey: Se realiza la operación AddRoundKey. auxiliar: La última ronda del cifrado y la ronda 1 inversa del descifrado son ligeramente diferentes del resto (sin contar la ronda inicial o ronda 0). Este estado ayuda a realizar esta ronda. salida: En este estado se establece la salida AES out y se activa la señal fin proceso. Además, para la transición de estados, todos requieren que la entrada enable esté activa. Si se desactivase el enable, el procesado quedaría pausado hasta su reactivación, a no ser que el proceso haya finalizado, en cuyo caso se volvería al Miguel García Ocón 58 del algoritmo AES
65 estado inicial para procesar el siguiente bloque, una vez el enable haya sido reactivado. key_loaded = '0' inicio key_loaded = '1' flag_keygen = '0' state_loaded = '0' mode = '0' calculo_subclaves flag_keygen = '1' state_loaded = '1' ronda_inicial mode = '0' mode = '1' flag_subbytes = '0' auxiliar mode = '1' mode = '1' ronda = nr mode = '0' mode = '0' flag_mixcolumns = '1' Oshiftrows Osubbytes flag_subbytes = '1' mode = '1' mode = '1' ronda = nr flag_subbytes = '1' mode = '0' mode = '1' ronda = 0 Omixcolumns mode = '1' mode = '0' ronda = 0 Oaddroundkey salida mode = '1' flag_mixcolumns = '1' flag_mixcolumns = '0' Figura 5.2: Máquina de estados del AES En la figura 5.2 se observa como se realiza la transición entre estados. Recordemos que la entrada mode establece si el proceso es de cifrado (1) o descifrado (0). Miguel García Ocón 59 del algoritmo AES
66 Simulaciones de AES En esta sección se presentarán simulaciones que nos ayudarán a demostrar el perfecto funcionamiento del algoritmo descrito Reset Algunas de las señales que se utilizan en esta descripción necesitan inicializarse a un valor conocido. La señal de Reset es la encargada de realizar esta función. Como ya hemos dicho, nuestra señal de reset es activa a nivel alto, es decir, que las señales se inicializarán cuando Reset = 1. La inicialización de señales puede apreciarse en la figura 5.3. Figura 5.3: Simulación Reset (AES) Miguel García Ocón 60 del algoritmo AES
67 Enable La señal enable habilita el proceso. En nuestro caso, debe activarse cuando los primeros 32 bits de entrada estén preparados. Pero su función también es pausar el proceso. Como vemos en la ilutración 5.4, cuando se interrumpe la señal enable, la operación en la que interfiere se ejecuta hasta el final (aparición de su respectiva señal de flag), pero no ejecuta la siguiente hasta que la señal enable vuelve a activarse, es decir, el flujo normal de operación del circuito se detiene. Figura 5.4: Simulación Enable (AES) Miguel García Ocón 61 del algoritmo AES
68 Toma de datos Cuando se activa por primera vez la señal enable se procede, como se ha explicado, a la recogida de la clave y de los datos a cifrar para, posteriormente, comenzar con el cálculo de subclaves. Como se puede apreciar en la ilustración 5.5, los cuatro primeros bloques de 32 bits se asignan a la señal key, activando la señal key loaded, que da permiso a la máquina de estados para comenzar con el cálculo de subclaves mientras que los cuatro últimos bloques de 32 bits se asignan a la señal state, activando la señal state loaded. Figura 5.5: Toma de datos (AES) Salida Cuando se alcanza la última ronda (10 en nuestro caso, A hexadecimal) se realizan las operaciones necesarias y la máquina de estados pasa al estado salida, donde se establece el resultado buscado en la salida AES out, activando también la salida flag (la cual copia el valor de la señal fin proceso), indicando así que el proceso ha terminado y AES out tiene un valor correcto (figura 5.6). Miguel García Ocón 62 del algoritmo AES
69 Figura 5.6: Salida (AES) 5.2. del componente SubBytes Como ya se ha explicado, la operación SubBytes consiste en una sutitución no lineal de bytes, que al final se podía simplificar con la existencia de una tabla fija. El componente SubBytes diseñado realiza tanto la operación SubBytes como InvSubBytes. Además también contiene los subcomponentes mostrados en la tabla 5.5.: Miguel García Ocón 63 del algoritmo AES
70 Componente Descripción sbox Memoria RAM de sólo lectura que contiene la tabla S-Box. invsbox Memoria RAM de sólo lectura que contiene la tabla InvS-Box. Tabla 5.5: Componentes de SubBytes En la ilustración 5.7 se muestran los bloques que forman el componente SubBytes, además de las señales descritas. clk reset subbytes_in 128 enable sel subbytes_in 128 enable sel sbox_out 8 flag_sbox invsbox_out 8 flag_invsbox a 4 clk FSM reset fin_proceso subbytes_out 128 sbox_in 8 enable_sbox invsbox_in clk clk 8 enable_invsbox a 4 sbox_out 8 flag_sbox Componente reset invsbox_out 8 flag_invsbox Componente flag subbytes_out 128 Entradas y salidas físicas Señales internas Figura 5.7: Diagrama de bloques del componente SubBytes La máquina de estados utiliza los componentes descritos para transformar, de byte en byte, la entrada subbytes in, que se va almacenando en la salida subbytes out byte a byte a modo de registro de desplazamiento, marcando los límites con ayuda de la señal llamada a. Miguel García Ocón 64 del algoritmo AES
71 Pines de entrada y salida y señales internas del componente SubBytes A continuación haremos una descripción de todas los pines de entrada y salida (tabla 5.6) y las señales internas (tabla 5.7) del componente SubBytes. Entradas y salidas Nombre Tipo E/S Descripción Entrada del Estado al que subbytes in std logic vector(127 downto 0) E aplicaremos la operación SubBytes/InvSubbytes. Indica si la operación es sel std logic E SubBytes(0) o InvSubBytes (1). clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. subbytes out std logic vector(127 downto 0) S Salida del Estado tras la operación. flag std logic S Indica que subbytes out ofrece un dato válido. Tabla 5.6: Entradas y salidas del componente SubBytes Miguel García Ocón 65 del algoritmo AES
72 Señales internas Nombre Tipo Descripción sbox in std logic vector(7 downto 0) Byte de entrada a la memoria S-Box. enable sbox std logic vector Permite leer la memoria S-Box. sbox out std logic vector(7 downto 0) Byte de salida de la memoria S-Box. flag sbox std logic vector Indica que la memoria S-Box ha sido leída. invsbox in std logic vector(7 downto 0) Byte de entrada a la memoria InvS-Box. enable invsbox std logic vector Permite leer la memoria InvS-Box. invsbox out std logic vector(7 downto 0) Byte de salida de la memoria InvS-Box. flag invsbox std logic vector Indica que la memoria InvS-Box ha sido leída. finproceso std logic vector Indica que la operación ha finalizado. a std logic vector(3 downto 0) Nos marca los límites dentro de subbytes in. Tabla 5.7: Señales internas del componente SubBytes La salida flag copia los valores de la señal finproceso mediante un bloque de lógica adicional Máquinas de estado (FSM) del componente Sub- Bytes El componente SubBytes descrito incluye una máquina de estados cuya función es realizar la operación SubBytes/InvSubBytes byte a byte. Para ello se gestionan los componentes que contienen las memorias RAM y se utiliza la señal a para emular un registro de desplazamiento, es decir, que la salida se irá actualizando cada ciclo de estados, activando la salida flag cuando la salida sea la correcta. Los estados de nuestra máquina son los siguientes: Miguel García Ocón 66 del algoritmo AES
73 inicio: Es el estado de reposo. No necesita ningún estímulo para cambiar al siguiente, salvo el que necesitan todos, es decir, enable = 1. mem in:enesteestadoseestableceelbyteatransformardelaentrada subbytes in en la dirección de la memoria RAM que necesitemos, dando permiso a la misma para leer. espera: Antes de poder actualizar la salida, necesitamos un estado de transición, ya que necesitamos un pulso de reloj para que la memoria nos proporcione el valor buscado. De nuevo, no necesita estímulos para la transición. mem out: Establece el byte transformado en la posición adecuada de la salida subbytes out. final: Cuando la señal a nos dice que todos los bytes han sido transformados, se llega a este estado, en el que se activa la señal finproceso, copiada por la salida flag, indicandonos así que el dato está listo para ser leído. La transición entre todos y cada uno de los estados requiere que la entrada enable esté activa. En este caso, y, en general, para todos los componentes de nuestra descripción completa, cuando se desactiva, el enable ejerce una función similar al reset, ya que a lo largo del procesado de datos se utiliza más de una vez y se necesita devolver ciertas señales a valores conocidos. Entonces, si se desactiva el enable, el proceso no se pausará, sino que la FSM volverá al estado de reposo. En la figura 5.8 se observa como se realiza la transición entre estados, sin olvidar que para todas ellas es necesario que el enable esté activo, volviendo al estado inicio en caso contrario. Miguel García Ocón 67 del algoritmo AES
74 inicio sel = '0' flag_sbox = '0' + sel = '1' flag_invsbox = '0' mem_in sel = '0' flag_sbox = '1' + sel = '1' flag_invsbox = '1' espera a = 0 mem_out a = 0 final Figura 5.8: Máquina de estados del componente SubBytes En el estado mem in, aunque la transición es siempre al estado espera, es necesario diferenciar entre la operación SubBytes (sel = 0 ), ya que entonces esperaremos el cambio en la señal flag sbox, y la operación InvSubBytes (sel = 1 ), en cuyo caso esperaremos el cambio en la señal flag invsbox. En el estado mem out se produce la actualización del valor de la señal a, inicializada a un valor conocido. Cuando llega a 0 es cuando se produce la transición al estado final, en el que permanece hasta que se desactiva el enable y se vuelve al estado de reposo Simulaciones del componente SubBytes Lectura y escritura (SubBytes) Como se ve en la figura 5.9, cuando se activa el enable se coge el byte más significativo y se realiza su sustitución a través de la memoria RAM de la operación respectiva, en este caso SubBytes. Posteriormente, la salida de la memoria RAM se establece en la salida subbytes out en el mismo lugar que ocupaba el byte original en la entrada subbytes in. Miguel García Ocón 68 del algoritmo AES
75 Finalmente, se actualiza el valor de la señal a y se repite el proceso, cogiendo el siguiente byte más significativo. Figura 5.9: Lectura y escritura del componente SubBytes Fin del proceso (SubBytes) Cuando el proceso finaliza se activa la salida flag y permanece en el estado salida hasta que se desactiva la entrada enable y, como consecuencia, se vuelve al estado de reposo. En la figura 5.10 podemos comprobar que, efectivamente, ocurre así. Miguel García Ocón 69 del algoritmo AES
76 Figura 5.10: Fin del proceso del componente SubBytes 5.3. del componente Shift- Rows La operación ShiftRows/InvShiftRows consiste en una rotación cíclica hacia la izquiera/derecha de las filas de la notación matricial del Estado. Este componente realiza tanto la operación ShiftRows como la operación InvShiftRows. El diseño es muy sencillo ya que se trata de un bloque de lógica combinacional, es decir, de sentencias que no se rigen por el reloj Pines de entrada y salida del componente Shift- Rows En está sección se estudiarán los pines de entrada y salida (tabla 5.8) del componente ShiftRows. Miguel García Ocón 70 del algoritmo AES
77 En este componente no hay descritas señales internas. Entradas y salidas Nombre Tipo E/S Descripción std logic vector Entrada del Estado al que shiftrows in (127 downto 0) E aplicaremos la operación ShiftRows/InvShiftRows. Indica si la operación es sel std logic E ShiftRows(0) o InvShiftRows (1). std logic vector Salida del Estado tras shiftrows out (127 downto 0) S aplicar la operación ShiftRows/InvShiftRows. Tabla 5.8: Entradas y salidas del componente ShiftRows La operación descrita es, básicamente, la siguiente: Si partimos de una cadena de bytes en la entrada shiftrows in de esta forma {B 15, B 14, B 13, B 12, B 11, B 10, B 9, B 8, B 7, B 6, B 5, B 4, B 3, B 2, B 1, B 0 }, dependiendo de la entrada sel se copiarán en la salida shiftrows out de la siguiente manera: sel = 0 (ShiftRows): {B 15, B 10, B 5, B 0, B 11, B 6, B 1, B 12, B 7, B 2, B 13, B 8, B 3, B 14, B 9, B 4 }. sel = 1 (InvShiftRows): {B 15, B 2, B 5, B 8, B 11, B 14, B 1, B 4, B 7, B 10, B 13, B 0, B 3, B 6, B 9, B 12 }. Para ayudar a entender el cambio de posiciones de los bytes se adjunta la figura Miguel García Ocón 71 del algoritmo AES
78 B 1 B 14 B 1 B 1 B 11 B 9 B 12 B 8 B 7 B 6 B B 4 B B 2 B 1 B B 1 B 11 B 7 B B 2 B 14 B 1 B 6 B B 1 B 1 B 9 B 8 B 4 B B 12 B 1 B 11 B 7 B B 1 B 6 B 2 B 14 B B 1 B 1 B 9 B B 12 B 8 B 4 Figura 5.11: Componente ShiftRows Simulaciones del componente ShiftRows Como ya hemos explicado, el orden de los bytes resultante tiene que ser de una determinada manera dependiendo de la entrada sel, por lo que vamos a añadir una simulación en la que veremos este cambio. Figura 5.12: Simulación (ShiftRows) Ante una entrada: { AA BB CC DD EE FF} Vemos que para sel = 0 la salida es: {00 55 AA FF EE DD CC BB} Miguel García Ocón 72 del algoritmo AES
79 Mientras que para sel = 1 la salida es: {00 DD AA EE BB FF CC } del componente MixColumns Si recordamos, la operación MixColumns/InvMixColumns se podía realizar como una multiplicación de una determinada matriz a la izquierda de la notación matricial del estado. Estas matrices son: Para la operación MixColumns: Para la operación InvMixColumns: 0E 0B 0D E 0B 0D 0D 09 0E 0B 0B 0D 09 0E Es decir, para la operación MixColumns tendremos una operación de la siguiente forma: = E 1,1 E 1,2 E 1,3 E 1,4 E 2,1 E 2,2 E 2,3 E 2,4 E 3,1 E 3,2 E 3,3 E 3,4 E 4,1 E 4,2 E 4,3 E 4,4 S 1,1 S 1,2 S 1,3 S 1,4 S 2,1 S 2,2 S 2,3 S 2,4 S 3,1 S 3,2 S 3,3 S 3,4 S 4,1 S 4,2 S 4,3 S 4,4 = Miguel García Ocón 73 del algoritmo AES
80 Si recordamos la operación de multiplicación matricial: S 1,1 = (02 E 1,1 )+(03 E 2,1 )+(01 E 3,1 )+(01 E 4,1 ) S 2,1 = (01 E 1,1 )+(02 E 2,1 )+(03 E 3,1 )+(01 E 4,1 ) S 3,1 = (01 E 1,1 )+(01 E 2,1 )+(02 E 3,1 )+(03 E 4,1 ) S 4,1 = (03 E 1,1 )+(01 E 2,1 )+(01 E 3,1 )+(02 E 4,1 ) S 1,2 = (02 E 1,2 )+(03 E 2,2 )+(01 E 3,2 )+(01 E 4,2 ) S 2,2 = (01 E 1,2 )+(02 E 2,2 )+(03 E 3,2 )+(01 E 4,2 ) S 3,2 = (01 E 1,2 )+(01 E 2,2 )+(02 E 3,2 )+(03 E 4,2 ) S 4,2 = (03 E 1,2 )+(01 E 2,2 )+(01 E 3,2 )+(02 E 4,2 ) S 1,3 = (02 E 1,3 )+(03 E 2,3 )+(01 E 3,3 )+(01 E 4,3 ) S 2,3 = (01 E 1,3 )+(02 E 2,3 )+(03 E 3,3 )+(01 E 4,3 ) S 3,3 = (01 E 1,3 )+(01 E 2,3 )+(02 E 3,3 )+(03 E 4,3 ) S 4,3 = (03 E 1,3 )+(01 E 2,3 )+(01 E 3,3 )+(02 E 4,3 ) S 1,4 = (02 E 1,4 )+(03 E 2,4 )+(01 E 3,4 )+(01 E 4,4 ) S 2,4 = (01 E 1,4 )+(02 E 2,4 )+(03 E 3,4 )+(01 E 4,4 ) S 3,4 = (01 E 1,4 )+(01 E 2,4 )+(02 E 3,4 )+(03 E 4,4 ) S 4,4 = (03 E 1,4 )+(01 E 2,4 )+(01 E 3,4 )+(02 E 4,4 ) Debemos recordar los tipos de operaciones matemáticas que se explicaron en el apartado , como que la suma se realiza a través de una operación XOR. Se puede observar que, para hallar cada byte transformado, se requieren cuatro multiplicaciones y una suma (XOR) entre sus respectivos resultados. Este dato es importante para explicar el diseño propuesto. Miguel García Ocón 74 del algoritmo AES
81 Como se aprecia, esta operación realiza un gran numero de cálculos, por lo que es una de las más complejas y que requieren más tiempo de ejecución. El componente descrito realiza tanto la operación MixColumns como la InvMixcolumns. Además también contiene un subcomponente, el cual se muestra en la tabla 5.9. Componente Descripción multiplicacion Multiplica ocho vectores dos a dos, devolviendo cuatro vectores de 8 bits. Tabla 5.9: Componente de MixColumns Este componente realiza las multiplicaciones descritas, realizando además la operación módulo, ya que la multiplicación da como resultado, en la mayoría de los casos, un vector de más de 8 bits. Además tiene capacidad para realizar cuatro multiplicaciones por cada utilización. A continuación, en la figura 5.13, se muestra el diagrama de bloques del componente MixColumns. Miguel García Ocón 75 del algoritmo AES
82 clk reset mixcolumns_in 128 enable sel mixcolumns_in 128 enable sel FSM mixcolumns_out 128 fin_mixcolumns reset clk clk reset mixcolumns_out flag 128 multiplicacion_out1 8 multiplicacion_out2 8 multiplic c 8 multiplicacion_out4 8 flag_multiplicacion vector_mixcolumns limite1 2 limite2 4 enable_multiplicacion multiplicacion_in1 8 multiplicacion_in2 4 multiplic c 8 multiplicacion_in4 4 multiplic c 8 multiplic c 4 multiplic c 8 multiplicacion_in8 4 vector_mixcolumns limite1 2 limite2 4 multiplicacion multiplicacion_out1 8 multiplicacion_out2 8 flag_multiplicacion Componente 8 multiplic c 8 multiplicacion_out4 Entradas y salidas físicas Señales internas Figura 5.13: Diagrama de bloques del componente MixColumns La función de la FSM es transformar, byte a byte, la entrada mixcolumns in y depositarla, byte a byte, en la salida mixcolumns out. La transformación se hace a modo de registro de desplazamiento con ayuda de las señales limite1 y limite2. Es necesario señalar que los elementos de la matriz fija por la que hay que multiplicar el Estado, ya sea la matriz de la operación MixColumns o InvMixColumns, son de esta forma: 0X (notación hexadecimal). Es decir, que sus cuatro bits más significativos valen cero siempre, por lo tanto es equivalente a multiplicar por un vector de 4 bits. Miguel García Ocón 76 del algoritmo AES
83 Pines de entrada y salida y señales internas del componente MixColumns En está sección haremos una descripción los pines de entrada y salida del componente MixColumns (tabla 5.10), así como de sus señales internas descritas (tabla 5.11). Entradas y salidas Nombre Tipo E/S Descripción std logic vector Entrada del Estado al que mixcolumns in (127 downto 0) E aplicaremos la operación MixColumns/InvMixColumns. Indica si la operación es sel std logic E MixColumns(0) o InvMixColumns (1). clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. std logic vector Salida del Estado tras mixcolumns out (127 downto 0) S aplicar la operación MixColumns/InvMixColumns. flag std logic S Indica que mixcolumns out ofrece un dato válido. Tabla 5.10: Entradas y salidas del componente MixColumns Miguel García Ocón 77 del algoritmo AES
84 Señales internas Nombre Tipo Descripción multiplicacion in1 std logic vector(7 downto 0) Multiplicación 1, factor 1. multiplicacion in2 std logic vector(3 downto 0) Multiplicación 1, factor 2. multiplicacion in3 std logic vector(7 downto 0) Multiplicación 2, factor 1. multiplicacion in4 std logic vector(3 downto 0) Multiplicación 2, factor 2. multiplicacion in5 std logic vector(7 downto 0) Multiplicación 3, factor 1. multiplicacion in6 std logic vector(3 downto 0) Multiplicación 3, factor 2. multiplicacion in7 std logic vector(7 downto 0) Multiplicación 4, factor 1. multiplicacion in8 std logic vector(3 downto 0) Multiplicación 4, factor 2. enable multiplicacion std logic vector Permite multiplicar los factores. flag multiplicacion std logic vector Indica que los factores han sido multiplicados. multiplicacion out1 std logic vector(7 downto 0) Resultado de la multiplicación 1. multiplicacion out2 std logic vector(7 downto 0) Resultado de la multiplicación 2. multiplicacion out3 std logic vector(7 downto 0) Resultado de la multiplicación 3. multiplicacion out4 std logic vector(7 downto 0) Resultado de la multiplicación 4. fin mixcolumns std logic vector Indica que la operación ha finalizado. limite1 std logic vector(1 downto 0) Nos marca los límites dentro de mixcolumns in. limite2 std logic vector(3 downto 0) Nos marca los límites dentro de mixcolumns out. vector mixcolumns std logic vector(15 downto 0) Se fija el valor del vector de multiplicación. Tabla 5.11: Señales internas del componente MixColumns Miguel García Ocón 78 del algoritmo AES
85 Básicamente, en las señales multiplicacion in impares se establecen las entradas del Estado (mixcolumns in) correspondientes con ayuda de la señal limite1, mientras que en las señales multiplicacion in pares se establecen los correspondientes elementos de la matriz de multiplicación fija (de 4 bits), contenidos en la señal vector mixcolumns (de 4 4 bits). Para entender la señal vector mixcolumns es necesario fijarse de nuevo en la matriz fija de multiplicación, recordando que se sitúa a la izquierda en la operación: La señal vector mixcolumns está inicializada en {2311}(Notación hexadecimal) en el caso de que la operación sea MixColumns, es decir, la primera fila de la matriz. Si nos fijamos, cada fila es idéntica a la anterior pero añadiendo una rotación hacia la derecha. En la máquina de estados se irá rotando la señal vector mixcolumns hacia la derechacuandocorrespondaylaformadesaberqueunacolumnadelasalida ha sido calculada, o lo que es lo mismo, que las cuatro multiplicaciones necesarias se han realizado, es comparando el valor de la señal vector mixcolumns con el valor que le habíamos dado en un principio. El resultado de las multiplicaciones se suma (XOR) en la máquina de estados y se establece en su lugar correspondiente dentro de mixcolumns out con ayuda de la señal limite2. La salida flag copia el valor de la señal fin mixcolumns Máquinas de estado (FSM) del componente Mix- Columns La función de la FSM descrita en el componente MixColumns es realizar la operación MixColums o InvMixColumns byte a byte, a modo de registro de desplazamiento, avisándonos de cuando ha concluído el proceso y gestionando el funcionamiento del componente multiplicacion. La máquina de estados decrita está formada por cinco estados: Miguel García Ocón 79 del algoritmo AES
86 inicio: Es el estado de reposo. En él se inicializan las señales limite1 y limite2 al valor necesario para realizar todo el proceso. También es inicializada la señal vector mixcolumns en función de la entrada sel, es decir, {2311} para sel = 0 (MixColumns) ó {EBD9} para sel = 1 (InvMixColumns). No necesita estímulos para la transición de estados, salvo el que necesitan todos, es decir, enable = 1. Emultiplicacion: En este estado se asignan a las señales multiplicacion in impares los bytes de mixcolumns in correspondientes con ayuda de la señal limite1. También se asignan a las señales multiplicacion in pares los valores de la señal vector mixcolumns. Por último, se permite al componente multiplicacion realizar su función, permaneciendo en este estado hasta que no haya concluído. resultado: En este estado se hace la suma (XOR) de los cuatro resultados de las multiplicaciones y se establece en su lugar correspondiente de la salida mixcolumns out con ayuda de la señal limite2. Además también se realiza la rotación hacia la derecha de la señal vector mixcolumns, dejándolo preparado para la siguiente multiplicación. De nuevo, no necesita estímulos para su transición. limites: En este estado se produce la actualización de las señales limite1 y limite2. limite2 se actualiza siempre que se llegue a este estado mientras su valor sea superior a 0, mientras que limite1 también necesita la condición de que la señal vector mixcolumns haya dado una vuelta completa, es decir, que tenga el valor que se le asignó en el estado de reposo. Cuando limite2 vale 0 quiere decir que la ultima posición de mixcolumns out en la que se ha establecido el resultado calculado es la del Miguel García Ocón 80 del algoritmo AES
87 byte 0, la última. Por lo que mientras limite2 no valga 0 volverá al estado Emultiplicacion. En caso contrario irá al siguiente estado. final: En este estado se activa la señal fin mixcolumns, la cual es copiada por la salida flag, indicándonos que el proceso ha terminado. Permanecerá en este estado indefinidamente hasta que enable = 0. Como es habitual, la transición entre todos y cada uno de los estados requiere que la entrada enable esté activa. Además, como ocurría con el componente SubBytes, si la entrada enable se desactiva, el proceso no se pausa, sino que se reinicia. Esto es así por la misma razón, la operación MixColumns es realizada varias veces a lo largo de todo el procesado de datos, por lo que necesitamos devolver ciertas señales a valores conocidos. Es misión del módulo que gestiona todos los componentes (AES) el no desactivar su correspondiente enable hasta que el componente haya realizado su función. En la figura 5.14 se observa de manera gráfica las transiciones entre estados descritas. inicio flag_multipli acion limite flag_multipli limites limite final Figura 5.14: Máquina de estados del componente MixColumns Miguel García Ocón 81 del algoritmo AES
88 Simulaciones del componente MixColumns Lectura y escritura (MixColumns) Como se ve en la figura 5.15, la columna de bytes de mixcolumns in que se copia en las señales de multiplicacion in impares viene definida por el valor de la señal limite1. Se pueden apreciar las cuatro multiplicaciones que se realizan fijándonos en la señal vector mixcolumns, la cual va rotando a la derecha por cada multiplicación realizada. Cuando vector mixcolumns hace la rotación completa, es decir, que su valor vuelve a ser el de inicio, la señal limite1 actualiza su valor, recogiendo la siguiente columna de bytes de la entrada mixcolumns in. En cuanto a la escritura en la salida mixcolumns out, se aprecia que la posición donde se escribe el byte calculado es establecido por la señal limite2, la cual actualiza su valor cada vez que se realiza una multiplicación. El valor que se almacena es el resultado de una operación XOR entre las cuatro señales de multiplicacion out. Figura 5.15: Lectura y escritura del componente MixColumns Miguel García Ocón 82 del algoritmo AES
89 Fin del proceso (MixColumns) Cuandolaseñallimite2 llegaavalor0quieredecirqueelúltimoresultado que se calcula se copia en la última posición por ocupar de la salida mixcolumns out, por lo que, después de copiarlo, se activa la señal fin mixcolumns, cuyo valor es copiado en todo momento por la salida flag, indicándonos que el valor contenido en mixcolumns out es válido. Esto es apreciado en la figura Además se permanecerá en el estado final hasta que el enable sea desactivado. Figura 5.16: Fin del proceso del componente MixColumns 5.5. del componente Multiplicación (MixColumns) El componente Multiplicación incluido en MixColumns tiene la función de realizar cuatro multiplicaciones entre dos vectores, uno de 8 bits y otro Miguel García Ocón 83 del algoritmo AES
90 de 4, devolviendo sus cuatro resultados, de 8 bits. La multiplicación se realiza a través de un proceso combinacional. Sin embargo este proceso no nos proporcionará, en la gran mayoría de los casos, el resultado buscado, ya que éste será de más de 8 bits. El peor caso se dará cuando los bits más significativos de los vectores a multiplicar tengan valor 1, sin importar el valor de los demás bits. Por ejemplo, el peor caso se dará cuando: factor 1 ={ }= x 7 factor 2 ={1000}= x 3 Multiplicando ambos factores: x 7 x 3 = x 10 = Es decir, un vector de 11 bits. Es por ello que Multiplicación consta de un subcomponente, el cual aparece en la tabla Componente Descripción modulo Recoge un vector de 11 bits y le aplica la operación módulo, devolviendo uno de 8 bits. Tabla 5.12: Componente de Multiplicación El proceso consiste básicamente en pasar por el componente Módulo los resultados de las multiplicaciones uno a uno para obtener su módulo. Como siempre, este componente está gestionado por una máquina de estados. A continuación, en la figura 5.17, se muestra el diagrama de bloques del componente Multiplicación. Miguel García Ocón 84 del algoritmo AES
91 enable % 2 e"e FSM % 2 fin_proceso flag entrada1 8 entrada2 4 entrada3 8 entrada4 4 entrada5 8 entrada6 4 entrada7 8 entrada8 4 entrada1 8 e 4 e 8 e 4 e 8 e 4 e 8 e 4 combinacional a 11 aux1 11 aux2 11 a 11 a! 11 aux1_2 11 aux2_2 11 a! 11 a! 11 a! 11 a! 11 a! 11 a! 11 aux1_4 11 aux2_4 11 a! 11 XOR + XOR + XOR + XOR + er 11 er 11 er 11 er 11 8 rm 8 rm 8 rm 8 rm 8 reset clk e"e!$o $!m 11 modulo f#!$ $! 8 Componente salida1 8 salida2 8 salida3 8 salida4 8 reset clk s físicas Señales internas Figura 5.17: Diagrama de bloques del componente Multiplicación No existe ningún operador directo en VHDL que nos proporcione los resultados de la multiplicación contenida en el bloque combinacional, ya que la suma de bits es con una operación XOR. Para entender la función que realiza el bloque combinacional vamos a proponer un ejemplo: Partiendo de: factor 1 ={ } factor 2 ={1001} Miguel García Ocón 85 del algoritmo AES
92 X Como vemos, la multiplicación se realiza bit a bit. Si el bit del factor 2 vale uno, se copia el factor 1 en una variable auxiliar, mientras que si vale cero, la variable auxiliar toma el valor cero. Todas las variables auxiliares necesarias para la multiplicación son de 11 bits y, dependiendo del bit del factor 2 que estemos multiplicando, el factor 1 se copiará en una posición específica dentro del auxiliar, rellenando el resto de ceros (ya que los ceros no afectan a la operación XOR). Finalmente, a través de bloques de lógica adicional, se realiza la operación XOR entre todas las variables auxiliares correspondientes, obteniendo un vector de 11 bits que mandaremos a la FSM Pines de entrada y salida y señales internas del componente Multiplicación En está sección haremos una descripción los pines de entrada y salida del componente Multiplicación (tabla 5.13), así como de sus señales internas descritas (tabla 5.14). Miguel García Ocón 86 del algoritmo AES
93 Entradas y salidas Nombre Tipo E/S Descripción entrada1 std logic vector E Multiplicación 1, (7 downto 0) factor 1. entrada2 std logic vector E Multiplicación 1, (3 downto 0) factor 2. entrada3 std logic vector E Multiplicación 2, (7 downto 0) factor 1. entrada4 std logic vector E Multiplicación 2, (3 downto 0) factor 2. entrada5 std logic vector E Multiplicación 3, (7 downto 0) factor 1. entrada6 std logic vector E Multiplicación 3, (3 downto 0) factor 2. entrada7 std logic vector E Multiplicación 4, (7 downto 0) factor 1. entrada8 std logic vector E Multiplicación 4, (3 downto 0) factor 2. clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. salida1 std logic vector S Resultado de la multiplicación 1 (7 downto 0) después de módulo. salida2 std logic vector S Resultado de la multiplicación 2 (7 downto 0) después de módulo. salida3 std logic vector S Resultado de la multiplicación 3 (7 downto 0) después de módulo. salida4 std logic vector S Resultado de la multiplicación 4 (7 downto 0) después de módulo. flag std logic vector S Indica que las salidas son correctas. Tabla 5.13: Entradas y salidas del componente Multiplicación Miguel García Ocón 87 del algoritmo AES
94 Señales internas Nombre Tipo Descripción modulo in std logic vector(10 downto 0) Entrada al componente Módulo enable modulo std logic vector Permite realizar el módulo a la entrada. flag modulo std logic vector El módulo ha sido realizado. modulo out std logic vector(7 downto 0) Resultado de la operación módulo. aux0 std logic vector(10 downto 0) Señales aux1 std logic vector(10 downto 0) auxiliares aux2 std logic vector(10 downto 0) para la aux3 std logic vector(10 downto 0) multiplicación 1. aux0 2 std logic vector(10 downto 0) Señales aux1 2 std logic vector(10 downto 0) auxiliares aux2 2 std logic vector(10 downto 0) para la aux3 2 std logic vector(10 downto 0) multiplicación 2. aux0 3 std logic vector(10 downto 0) Señales aux1 3 std logic vector(10 downto 0) auxiliares aux2 3 std logic vector(10 downto 0) para la aux3 3 std logic vector(10 downto 0) multiplicación 3. aux0 4 std logic vector(10 downto 0) Señales aux1 4 std logic vector(10 downto 0) auxiliares aux2 4 std logic vector(10 downto 0) para la aux3 4 std logic vector(10 downto 0) multiplicación 4. resultado1 std logic vector(10 downto 0) Producto de la multiplicación 1. resultado2 std logic vector(10 downto 0) Producto de la multiplicación 2. resultado3 std logic vector(10 downto 0) Producto de la multiplicación 3. resultado4 std logic vector(10 downto 0) Producto de la multiplicación 4. fin proceso std logic vector Indica que la operación ha finalizado. Nos indica a que contador std logic vector(1 downto 0) resultado hay que aplicar la operación módulo. Tabla 5.14: Señales internas del componente Multiplicación Miguel García Ocón 88 del algoritmo AES
95 Máquinas de estado (FSM) del componente Multiplicación La función de la FSM descrita es gestionar el uso del componente Módulo para realizar la operación módulo a los resultados de las multiplicaciones uno a uno (señales resultado1, resultado2, resultado3 y resultado4). La máquina de estados decrita está formada por siete estados: inicio: Es el estado de reposo. En el se inicializa la señal contador a valor cero. No necesita estímulos para la transición de estados, únicamente que la entrada enable = 1. modulo1: El resultado de la multiplicación 1 es copiado en la entrada del componente Módulo, permaneciendo en este estado hasta que no haya completado su función (flag modulo = 1 ). modulo2: El resultado de la multiplicación 2 es copiado en la entrada del componente Módulo, permaneciendo en este estado hasta que no haya completado su función (flag modulo = 1 ). modulo3: El resultado de la multiplicación 3 es copiado en la entrada del componente Módulo, permaneciendo en este estado hasta que no haya completado su función (flag modulo = 1 ). modulo4: El resultado de la multiplicación 4 es copiado en la entrada del componente Módulo, permaneciendo en este estado hasta que no haya completado su función (flag modulo = 1 ). escritura: En este estado se escribe la salida del componente Módulo (modulo out) en la correspondiente salida de nuestro circuito (salida1, salida2, salida3 o salida4) con ayuda de la señal contador. También se produce la actualización de la señal contador. final: A este estado se llega cuando todas las salidas del circuito tienen los valores que deseamos. Su única función, por tanto, es activar la señal fin proceso, que es copiada por la salida flag mediante un bloque de lógica adicional, indicándonos que el proceso ha concluido. Como es habitual, la transición entre todos los estados requiere que la entrada enable esté activa, volviendo al estado inicio en caso contrario. Para explicar de una forma más precisa la transición entre estados, se adjunta la figura 5.18 Miguel García Ocón 89 del algoritmo AES
96 inicio modulo1 final escritura modulo2 modulo4 modulo3 Figura 5.18: Máquina de estados del componente Multiplicación Simulaciones del componente Multiplicación Lectura y escritura (Multiplicación) Como se aprecia en la figura 5.19, las multiplicaciones se realizan sin necesidad de esperar al reloj, ya que se trata de un proceso combinacional. Cuando se activa la señal enable, el resultado da la primera multiplicación, resultado1, es copiado en la entrada del componente Módulo, modulo in, y, cuando éste termina su función, copia su salida, modulo out, a la salida salida1 para, posteriormente, comenzar el procesado del resultado de la segunda multiplicación, resultado2. Miguel García Ocón 90 del algoritmo AES
97 Figura 5.19: Lectura y escritura del componente Multiplicación Fin del proceso (Multiplicación) Cuando las cuatro salidas (salida1, salida2, salida3 y salida4) han sido establecidas con sus correspondientes valores se produce la transición al estado final, donde se activa la señal fin proceso, copiada por la salida flag, indicándonos que el proceso ha finalizado. Esto se aprecia en la figura Además se permanecerá en el estado final hasta que el enable sea desactivado. Miguel García Ocón 91 del algoritmo AES
98 Figura 5.20: Fin del proceso del componente Multiplicación 5.6. del componente Módulo (Multiplicación) La unidad básica de trabajo del algoritmo AES es el byte. Sin embargo, como hemos visto, tras una multiplicación entre un vector de 8 bits y uno de 4 bits, se puede obtener un vector de hasta 11 bits. Es por ello que es necesario realizar la operación módulo sobre ese vector, reduciéndolo de nuevo a uno de longitud 8 bits. El componente Módulo incluido en Multiplicación tiene la función de realizar la operación módulo del vector de entrada con el polinomio irreductible de AES. Este polinomio era de la siguiente forma: m(x) = x 8 +x 4 +x 3 +x+1 Como podemos ver, se trata de un vector de 9 bits. Miguel García Ocón 92 del algoritmo AES
99 Para explicar la operación módulo de una manera sencilla, básicamente consiste en realizar una operación XOR entre los 9 bits más significativos de nuestro vector (siempre y cuando el más significativo sea 1) y el polinomio irreductible de AES tantas veces como sean necesarias para que la longitud final de nuestro vector sea 8 bits. Por ejemplo, si partimos de este vector de 11 bits: { } Su módulo con el polinomio de AES será: 9 bits mas significativos PolinomiodeAES {}}{{}}{ = = A este resultado se le concatenan los bits de nuestro vector que no se han incluido en la operación XOR, es decir: &01 = Como vemos, hemos obtenido un vector de 9 bits, por lo que hay que realizar de nuevo el mismo proceso. 9 bits mas significativos PolinomiodeAES {}}{{}}{ = = Ya hemos obtenido un vector de 8 bits, por lo tanto podemos establecer que: modulo = Miguel García Ocón 93 del algoritmo AES
100 El diagrama de bloques mostrado en la figura 5.21 muestra los bloques de los que se compone el circuito. entrada 11 enable clk entrada salida 11 8 enable clk salida 8 flag reset reset Entradas y salidas físicas Figura 5.21: Diagrama de bloques del componente Módulo Como vemos, se trata de un diseño muy simple que únicamente consta de una máquina de estados, aparte de un bloque de lógica adicional en el que la salida flag copia el valor de la señal fin proceso Pines de entrada y salida y señales internas del componente Módulo En esta sección se describen los pines de entrada y de salida del componente Módulo (tabla 5.15) y sus respectivas señales internas (tabla 5.16). Miguel García Ocón 94 del algoritmo AES
101 Entradas y salidas Nombre Tipo E/S Descripción entrada std logic vector E Entrada de 11 bits a la (10 downto 0) que realizaremos el módulo. clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. salida std logic vector S Salida del byte tras la (7 downto 0) operación módulo. flag std logic vector S Indica que la salida es correcta. Señales internas Tabla 5.15: Entradas y salidas del componente Módulo Nombre Tipo Descripción auxiliar std logic vector(10 downto 0) Se almacenarán los cambios en el vector. fin proceso std logic vector Indica que el proceso ha finalizado. Tabla 5.16: Señales internas del componente Módulo Máquinas de estado (FSM) del componente Módulo La función de la máquina de estados descrita es realizar la operación módulo de la entrada entrada con el polinomio de AES, obteniendo un vector de 8 bits que será almacenado en la salida salida. Se compone de cinco estados: inicio: Es el estado de reposo. En él se copia el valor de la entrada entrada a la señal auxiliar. No necesita estímulos para la transición de estados. Miguel García Ocón 95 del algoritmo AES
102 modbit10: En este estado se comprueba si el bit 11 de auxiliar vale uno o cero. Si vale uno se realiza la operación XOR con el polinomio de AES (añadiendo dos ceros al final, ya que el polinomio de AES es de 9 bits), sobreescribiendo su nuevo valor en la señal auxiliar. Si vale cero no se realiza ninguna operación. No necesita estímulos para la transición de estados. modbit9: En este estado se comprueba si el bit 10 de auxiliar vale uno o cero. Si vale uno se realiza la operación XOR con el polinomio de AES (añadiendo un cero al principio y un cero al final), sobreescribiendo su nuevo valor en la señal auxiliar. Si vale cero no se realiza ninguna operación. No necesita estímulos para la transición de estados. modbit9: En este estado se comprueba si el bit 9 de auxiliar vale uno o cero. Si vale uno se realiza la operación XOR con el polinomio de AES (añadiendo dos ceros al principio), sobreescribiendo su nuevo valor en la señal auxiliar. Si vale cero no se realiza ninguna operación. Llegados a este punto ya habremos obtenido un vector de 8 bits. No necesita estímulos para la transición de estados. final: En este estado los 8 bits menos significativos de la señal auxiliar (el resto valen cero) son copiados en la salida salida. Además se activa la señal fin proceso, indicando que el proceso ha terminado. Todos los estados necesitan que la señal enable esté activa para realizar la transición entre ellos. Si no ocurriera así se volvería al estado inicio. Miguel García Ocón 96 del algoritmo AES
103 Como vemos en la figura 5.22 son transiciones directas que únicamente requieren que la entra enable esté activa. inicio modbit10 modbit9 final Figura 5.22: Máquina de estados del componente Módulo Simulaciones del componente Módulo Para comprobar la funcionalidad de este componente vamos a realizar la simulación del mismo ejemplo que hemos visto en esta sección: modulo = Figura 5.23: Simulación del componente Módulo Como vemos en la figura 5.23, da el resultado esperado. Miguel García Ocón 97 del algoritmo AES
104 Si nos fijamos, en el estado modbit10, al tener el bit 11 de la señal auxiliar valor uno, se realiza la operación XOR, sin embargo, en el estado modbit9, al tener el bit 10 de la señal auxiliar valor cero, auxiliar conserva su valor pasando al siguiente estado, modbit8, donde se vuelve a realizar la operación XOR por tener el bit 9 valor uno. Cuando la salida tiene el valor deseado (8 bits menos significativos de la señal auxiliar) se activa el pin de salidaflag del componente AddRound- Key La operación AddRoundkey consiste en la combinación entre el Estado y la correspondiente subclave de ronda a través de la operación XOR. Se trata, por tanto, de uno de los bloques más sencillos (figura 5.24) Figura 5.24: Diagrama de bloques del componente AddRoundKey Como vemos, se trata de un simple bloque de lógica combinacional. Miguel García Ocón 98 del algoritmo AES
105 Pines de entrada y salida del componente Add- RoundKey En esta sección, en la tabla 5.17, se detallan los pines de entrada y de salida del componente AddRoundKey. Nombre Tipo E/S Descripción addroundkey in std logic vector E Entrada del (127 downto 0) Estado. clave std logic vector E Entrada de la (127 downto 0) subclave de ronda. addroundkey out std logic vector S Salida del Estado tras (127 downto 0) la operación. Tabla 5.17: Entradas y salidas del componente AddRoundKey 5.8. del componente Keygen El componente keygen es el encargado de calcular todas las subclaves de ronda y proporcionarnos las mismas en función del número de ronda en el que nos encontremos. Este bloque es de los más complejos junto al bloque MixColumns. Como hemos visto, el cálculo de subclaves requiere la operación SubBytes en ciertos momentos, por lo que nuestro componente keygen tiene como subcomponente el que describe la operación SubBytes. El diagrama de bloques del componente Keygen se muestra en la figura Miguel García Ocón 99 del algoritmo AES
106 clave_in key_length enable 128 k&'()&*+,- enable rcon 32 tabla../0 2./n :5 temp 32 i 6 reset clk tabla n 128 es AABD E ABF G HII E JKI temp 32 i 6 s 128 C;<=;>?>@? ronda 4 combinacional 128 reset clk flag clave_out 128 Entradas y salidas físicas Señales internas ronda 4 Figura 5.25: Diagrama de bloques del componente Keygen La máquina de estados (FSM) se encarga de calcular la matriz de clave expandida (señal tabla), gestionando todas las señales y el componente SubBytes, activando la salida flag cuando este proceso ha concluído. A partir de ese momento es cuando el bloque combinacional podrá realizar de una manera correcta su función, que es escribir en la salida clave out la correspondiente subclave de ronda. Es tarea del circuito de AES no pedir las subclaves de ronda hasta que este componente activa su flag Genéricos, pines de entrada y salida y señales internas del componente Keygen A continuación haremos una descripción de todos los puertos genéricos (tabla 5.18), los pines de entrada y salida (tabla 5.19) y las señales internas del circuito (tabla 5.20). Miguel García Ocón 100 del algoritmo AES
107 Puertos genéricos Nombre Tipo Descripción key length integer Longitud en bits de la clave. nb integer Número de longitud de palabras (32 bits) del estado. nk integer Número de longitud de palabras (32 bits) de la clave. nr integer Número de rondas. Tabla 5.18: Puertos genéricos del componente Keygen De nuevo, es imprescindible el uso de genéricos para poder implementar el algoritmo AES de forma que se puedan utilizar claves de 128, 192 ó 256 bits (key length). En el estándar el valor del genérico Nb es siempre 4. Como ya se ha explicado, Nk varía entre 4, 6 y 8. Finalmente, Nr varía entre 10, 12 y 14. Entonces, si queremos configurar este circuito para que genere las subclaves de una clave de 128 bits, quedaría de la siguiente manera: key length = 128 Nb = 4 Nk = 4 Nr = 10. Si nos fijamos en el diagrama de bloques (figura 5.25) La señal tabla tiene una longitud de [(Nb (Nr+1) 32] bits. Ya se ha comentado que la señal tabla es la matriz de clave expandida. Recordamos que, para una longitud de clave de 128 bits, esta matriz tenía dimensiones de cuatro filas por 44 columnas (1 columna = 32 bits). En este caso Nr = 10, por lo que: [(Nb (Nr+1) 32] = [(4 11) 32] = Es decir, 44 columnas de 32 bits cada una. Miguel García Ocón 101 del algoritmo AES
108 Entradas y salidas Nombre Tipo E/S Descripción clave in std logic vector E Clave original. (key length-1 downto 0) ronda std logic vector E Número de ronda de la (3 downto 0) que necesitamos la subclave. clk std logic E Señal de reloj. reset std logic E Señal de reset, activa a nivel alto. enable std logic E Señal de enable, activa a nivel alto. clave out std logic vector S Subclave de ronda. (127 downto 0) flag std logic vector S Indica que todas las subclaves han sido calculadas. Señales internas Tabla 5.19: Entradas y salidas del componente Keygen Nombre Tipo Descripción transsubbytes in std logic vector Señales de (127 downto 0) enable subbytes std logic correspondencia sel subbytes std logic de puertos del flag subbytes std logic componente subbytes out std logic vector subbytes. (127 downto 0) tabla std logic vector Se almacenará la matriz (((Nb (Nr +1) 32)) 1 downto 0) de clave expandida. i std logic vector Marcador de columna (5 downto 0) de clave expandida. temp std logic vector Se almacenarán (31 downto 0) cambios en columnas. rcon trcon Constante que contiene (1 to 10) la matriz Rcon. fin proceso std logic vector Indica que el proceso ha finalizado. Tabla 5.20: Señales internas del componente Keygen Miguel García Ocón 102 del algoritmo AES
109 El tipo trcon es una constante en la que se encuentran descritos 10 vectores de 32 bits, que son la matriz Rcon. Si recordamos, la matriz Rcon era la siguiente: Rcon = B Por lo tanto, si seleccionamos Rcon(9), por ejemplo, obtendremos el vector {1B000000} Máquinas de estado (FSM) del componente Keygen Como ya se ha dicho, la función de la máquina de estados es recoger la clave original y calcular su matriz de clave expandida. La máquina de estados decrita está formada por diez estados: inicio: Es el estado de reposo. Su función es esperar a la señal de enable y no necesita estímulos para cambiar de estado, aparte del que necesitan todos (enable = 1 ). estado1: En este estado se copia la clave original en las Nk columnas menos significativas, ayudados por la señal i, que nos indica en que columna nos encontramos. Cuando i = Nk 1 se produce la transición al siguiente estado. estado2: En este estado se copia a la señal temp la última columna calculada, es decir, la columna i 1. Aquí hay varias opciones de transición: 1. Si el resto de i/nk = 0, quiere decir que estamos calculando la primera columna del nuevo grupo de Nk columnas, por lo que pasaremos al estado correspondiente. 2. Si el resto de i/nk = 4 (para claves de longitud 256 bits), quiere decir que estamos calculando la quinta columna del nuevo grupo denk columnas,porloquesepasaráalestadoquelecorresponda. Miguel García Ocón 103 del algoritmo AES
110 3. Si el resto de i/nk 0 en general y además i/nk 4 para claves de 256 bits, quiere decir que estamos calculando el resto de columnas del nuevo grupo de Nk columnas, por lo que pasaremos al estado correspondiente. estado3: En este estado se produce la rotación hacia arriba de la columna contenida en la señal temp. No necesita condiciones para la transición. estado4: A la columna rotada contenida en temp se le aplica la operación SubBytes. Permanece en este estado hasta que la operación ha finalizado, lo cual es indicado por la señal flag subbytes. estado5: Se hace la operación XOR entre el resultado de la operación SubBytes y Rcon(i/nk) (recordemos que en este punto esa división es exacta), almacenando el resultado en la señal temp. No precisa de condiciones para la transición de estados. estado6: Se realiza la operación XOR entre la señal temp y la columna i Nk, almacenando el resultado en la señal tabla, en la posición que nos indica i. En este estado se comprueba el valor de la señal i, si ha llegado al máximo (44 para longitud de clave 128 bits) quiere decir que todas las columnas han sido calculadas, por lo que se pasará al estado final. En caso contrario se pasará al estado correspondiente. estado7: Este estado sólo se alcanza si la longitud de clave(key length) es de 256 bits. En él se realiza la operación SubBytes de la señal temp. Se trata de la operación extra que requerían las claves de 256 bits para calcular la quinta columna del nuevo grupo de 8 (Nk) columnas. Para cambiar de estado se necesita que la operación SubBytes haya finalizado. estado8: Este estado se alcanza únicamente si la longitud de clave es de 256 bits como consecuencia de lo explicado en el estado7. Miguel García Ocón 104 del algoritmo AES
111 En él, el resultado de la operación SubBytes es almacenado en la señal temp. No necesita condiciones para la transición de estados. final: En este estado la señal fin proceso, que es copiada por la salida flag, se activa. Se permanecerá en este estado indefinidamente. Todos los estados requieren que la entrada enable esté activa, volviendo al estado inicio en caso contrario. A continuación se adjunta la figura 5.26, donde se ve de una forma más clara las transiciones entre estados. inicio estado1 estado8 estado3 estado7-1 estado2 estado4 estado6 estado5-1 final Figura 5.26: Máquina de estados del componente Keygen Es necesario explicar las transiciones del estado2 (color verde). producían calculando restos. Éstas se Existe un operador en VHDL que calcula los restos entre dos números (MOD), sin embargo sólo lo hace para potencias de 2. Miguel García Ocón 105 del algoritmo AES
112 En el caso de tener longitudes de clave de 128 y 256 bits, sus correspondientes Nk(4 y 8) sí son potencias de 2 y podría describirse la condición de transición con el operador MOD. En el caso de tener longitud de clave 192 bits, su Nk (6) no es potencia de 2, por lo que hay que buscar un método alternativo. Tan simple como aplicar la prueba de la división: donde: Dividendo = Cociente Divisor + Resto Dividendo = i Divisor = Nk Por lo tanto, si necesitamos la condición de que el resto sea cero, la descripción sería: i = i/nk Nk +0 Mientras que si necesitamos que la condición es que el resto sea cuatro: i = i/nk Nk Simulaciones del componente Keygen En esta sección vamos a realizar una simulación en la que comprobaremos el correcto funcionamiento del bloque combinacional, ya que si éste proporciona los resultados esperados, el hecho de que la máquina de estados funcione correctamente viene implícito en ello. Dicha simulación se adjunta en la figura Miguel García Ocón 106 del algoritmo AES
113 Figura 5.27: Escritura de datos del componente Keygen Como vemos, cuando todos los bits de la señal tabla han sido rellenados con sus respectivos valores (en el caso de longitud de clave 128 bits, i = 44), se activa la salida flag. En ese momento se proporcionarán en clave out valores válidos para todos los valores posibles de la entrada ronda (un ciclo de reloj antes se proporcionarían valores válidos para todo valor de ronda excepto el último, 10 en el caso de longitud de clave 128). Como vemos, ante un valor de ronda 0 se copia en la salida la clave original, mientras que para un valor de ronda 10 se copia la subclave correspondiente. Además, si se establece en la entrada ronda un valor que no entra dentro de lo establecido en el estándar (por ejemplo, ronda 11 para longitudes de clave de 128 bits), clave out tomará el valor cero. Miguel García Ocón 107 del algoritmo AES
114 Capítulo 6 Resultados En este capítulo nos centraremos en presentar los resultados que se han ido obteniendo a lo largo del flujo de diseño (capítulo 4). En este proyecto, nuestro diseño se ha realizado para dos FPGAs de familias diferentes que han sido elegidas con el criterio de ajustar el área lo máximo posible, realizando simulaciones temporales idénticas para ambas. Será, por tanto, interesante comprobar las diferencias en aspectos de síntesis y consumo de potencia que pueden existir entre dos familias de FPGAs. Cabe destacar que, primeramente, se realizó una implementación del algoritmo AES en el que se habían descrito muchos más pines de entrada y de salida, ya que existía una entrada para los 128 bits del estado y otra de rango bits para la clave. Esto produce un consumo estático elevado y se desaprovechan muchos recursos de la FPGA. Sin embargo, esta implementación se cambió mucho antes de comenzar con las simulaciones postlayout, es decir, que se redujo una fuente importante de consumo de potencia antes incluso de iniciar el estudio de reducción de potencia. En nuestra implementación, los pines dedicados al estado y la clave suman 32 bits en total para cualquier longitud de clave. Los resultados que se van a mostrar son para implementaciones de longitudes de clave de 128 bits, pero se ha realizado también la síntesis para longitudes de 256 bits, ya que se trata del caso en el que más recursos de la Miguel García Ocón 108 Resultados
115 FPGA necesitaremos, es decir, nos hemos asegurado de que la misma FPGA tiene capacidad para implementar las tres longitudes de clave. Las familias de FPGAs escogidas son: Spartan-6 Virtex-4 Las Virtex-4 son anteriores a las Spartan-6. Se ha elegido así porque las Virtex son más potentes que las Spartan y, de haber elegido la familia Virtex- 6, habría sobrado mucho área. También será interesante estudiar como afecta la antigüedad al consumo de potencia, viendo como los nuevos diseños de FPGAs son más eficientes. Como hemos dicho, el principal criterio de elección de FPGAs dentro de esas familias ha sido el de ajustar el área lo máximo posible. Siendo esto así, las dos FPGAs escogidas son: Spartan-6: XC6SLX16FTG256-3 Virtex-4: XC4VFX12SF Resultados de la síntesis En esta sección se expondrán los resultados obtenidos tras la síntesis en ambas FPGAs para claves de 128 bits de longitud. Miguel García Ocón 109 Resultados
116 Spartan-6 (Síntesis) Advanced HDL Synthesis Report Advanced HDL Synthesis Report Macro Statistics # RAMs : 5 16x32-bit single-port distributed Read Only RAM : 1 256x8-bit single-port block Read Only RAM : 4 # Adders/Subtractors : bit adder : 6 4-bit addsub : 1 7-bit subtractor : 1 8-bit adder : 7 9-bit adder : 1 # Counters : 7 2-bit down counter : 1 2-bit up counter : 1 3-bit up counter : 1 4-bit down counter : 3 6-bit up counter : 1 # Registers : 3065 Flip-Flops : 3065 # Comparators : 4 2-bit comparator lessequal : 1 4-bit comparator greater : 1 6-bit comparator equal : 1 6-bit comparator greater : 1 # Multiplexers : bit 2-to-1 multiplexer : bit 2-to-1 multiplexer : 6 11-bit 4-to-1 multiplexer : bit 2-to-1 multiplexer : 9 16-bit 2-to-1 multiplexer : 1 32-bit 2-to-1 multiplexer : 3 4-bit 2-to-1 multiplexer : 4 8-bit 2-to-1 multiplexer : 8 # FSMs : 11 # Xors : bit xor2 : 3 11-bit xor4 : bit xor2 : 1 32-bit xor2 : 41 8-bit xor4 Tabla 6.1: Advanced HDL Synthesis Report (Spartan-6) Miguel García Ocón 110 Resultados
117 Device Utilization Summary Device utilization summary: Selected Device : 6slx16ftg256-3 Slice Logic Utilization: Number of Slice Registers: 3027 out of % Number of Slice LUTs: 4576 out of % Number used as Logic: 4576 out of % Slice Logic Distribution: Number of LUT Flip Flop pairs used: 4677 Number with an unused Flip Flop: 1650 out of % Number with an unused LUT: 101 out of % Number of fully used LUT-FF pairs: 2926 out of % Number of unique control sets: 35 IO Utilization: Number of IOs: 165 Number of bonded IOBs: 165 out of % Specific Feature Utilization: Number of Block RAM/FIFO: 2 out of 32 6% Number using Block RAM only: 2 Number of BUFG/BUFGCTRLs: 1 out of 16 6% Timing Summary Tabla 6.2: Device Utilization Summary (Spartan-6) Timing Summary: Speed Grade: -3 Minimum period: 6.035ns (Maximum Frequency: MHz) Minimum input arrival time before clock: 6.271ns Maximum output required time after clock: 3.791ns Maximum combinational path delay: No path found Timing Details: All values displayed in nanoseconds (ns) Tabla 6.3: Timing Summary (Spartan-6) Miguel García Ocón 111 Resultados
118 Virtex-4 (Síntesis) Advanced HDL Synthesis Report Advanced HDL Synthesis Report Macro Statistics # RAMs : 4 256x8-bit single-port block RAM : 4 # Adders/Subtractors : 11 2-bit adder : 1 2-bit subtractor : 1 3-bit adder : 1 4-bit addsub : 1 4-bit subtractor : 3 6-bit adder : 1 6-bit subtractor : 1 7-bit subtractor : 1 8-bit adder : 1 # Registers : 3139 Flip-Flops : 3139 # Comparators : 5 2-bit comparator greater : 1 2-bit comparator less : 1 4-bit comparator greater : 2 6-bit comparator less : 1 # Multiplexers : 7 32-bit 44-to-1 multiplexer : 1 8-bit 16-to-1 multiplexer : 2 8-bit 4-to-1 multiplexer : 4 # Xors : 39 1-bit xor2 : bit xor4 : bit xor2 : 1 32-bit xor2 : 1 8-bit xor4 : 1 Tabla 6.4: Advanced HDL Synthesis Report (Virtex-4) Miguel García Ocón 112 Resultados
119 Device Utilization Summary Device utilization summary: Selected Device : 4vfx12sf Number of Slices: 3548 out of % Number of Slice Flip Flops: 3033 out of % Number of 4 input LUTs: 6259 out of % Number of IOs: 165 Number of bonded IOBs: 165 out of % Number of FIFO16/RAMB16s: 3 out of 36 8% Number used as RAMB16s: 3 Number of GLMNs: 1 out of 32 OP Timing Summary Tabla 6.5: Device Utilization Summary (Virtex-4) Timing Summary: Speed Grade: -12 Minimum period: 6.QRSTs (Maximum Frequency: 153.7SRUHz) Minimum input arrival time before clock: 6.822ns Maximum output required time after clock: 3.793ns Maximum combinational path delay: No path found Timing Detail: All values displayed in nanoseconds (ns) Tabla 6.6: Timing Summary (Virtex-4) 6.2. Consumo de potencia Hoy en día se está realizando un gran esfuerzo en relación a las mejoras tecnológicas. Dichas mejoras implican el aumento del número de transistores utilizados para una única implementación, con el consecuente aumento de la potencia consumida. Sin embargo, estos transistores han ido disminuyendo de tamaño, de manera que el consumo total ha sido reducido. Miguel García Ocón 113 Resultados
120 El consumo de potencia se puede dividir en [MP96][Men03]: Consumo estático: Se produce por la existencia de caminos entre alimentación y masa por los que circula la corriente cuando el circuito se encuentra en estado de reposo y no hay involucrada ninguna señal de reloj. Está relacionado directamente con la tecnología empleada. Viene dado por la ecuación: P estatica = I estatica V DD Consumo dinámico: Se produce por las conmutaciones en los nodos circuitales, ya que para que puedan variar su valor lógico deben producirse movimientos de cargas por un medio disipativo, lo que origina un consumo de energía.. Viene dado por la ecuación: P = n α i C i Vdd 2 f clk i=1 Donde α = Probabilidad de que el nodo de entrada conmute de 0 a 1. C = Capacidad del condensador. V dd = Tensión de alimentación. f clk = Frecuencia del reloj. Nuestras dos FPGAs utilizadas son de las familias Spartan-6 y Virtex-4. Según [Xil], las Virtex-4 utilizan tecnología de 90 nm [Vir], mientras que las Spartan-6 usan tecnología de 45 nm [Spa]. Esto quiere decir que, en el mismo área, en una Spartan-6 se encuentran el doble de transistores que en una Virtex-4. El hecho de que el número de transistores sea mayor en la Spartan-6 se va a ver traducido en un incremento de la potencia estática con respecto a la dinámica. Pero el hecho de que estos transistores sean de menor tamaño va a implicar una reducción del consumo en general. Miguel García Ocón 114 Resultados
121 En este apartado se van a estudiar las diferencias que existen en el consumo de las dos FPGAs escogidas para claves de 128 bits. Posteriormente se expondrá la estimación del consumo de las FPGAs si la longitud de clave es de 256 bits. Finalmente se compararán todos y cada uno de los consumos. Para ello se utilizarán simulaciones postlayout en las que se procesará un bloque de datos (128 bits), ya que se ha observado que un mayor número de bloques procesados, con la consecuente mayor duración de la simulación postlayout, no implica un aumento significativo del consumo (se ha comprobado que el consumo producido por el procesado de 60 bloques de datos es aproximadamente igual que el consumo producido por el procesado de un único bloque de datos). Las FPGAs escogidas son: Spartan-6: XC6SLX16FTG256-3 Virtex-4: XC4VFX12SF Para realizar la estimación del consumo, como se ha indicado en el capítulo 4, se utilizará la herramienta XPower. Miguel García Ocón 115 Resultados
122 Consumo de la FPGA Spartan-6 A continuación, en las tablas 6.7, 6.8 y 6.9, se exponen los resultados de las estimaciones del consumo de potencia para longitudes de clave de 128 bits para la FPGA de la familia Spartan-6. En la tabla 6.7, en la primera columna se observan las tensiones de alimentación de la FPGA. En la segunda columna aparecen las corrientes, tanto estática como dinámica, que dicha alimentación produce. En la tercera columna se ven las potencias consumidas en función de cada corriente y su respectiva tensión de alimentación. Tensión (V) Corriente (ma) Potencia (mw) % Vccint 1.20 Dinámico % Estático % Vccaux 2.50 Dinámico % Estático % Vcco Dinámico % Estático % Potencia % Total Tabla 6.7: Consumo Spartan-6 I En la tabla 6.8 se divide el consumo en estático y dinámico, estudiando en detalle la parte del consumo dinámico, producido por el reloj, la lógica, las señales, las memorias y las entradas y salidas. Miguel García Ocón 116 Resultados
123 Potencia (mw) % Reloj % Lógica % Señales % BRAMs % E/S % Estático % TOTAL % Tabla 6.8: Consumo Spartan-6 II Como vemos, la inmensa mayoría del consumo dinámico va a parar al reloj, siendo un % del consumo total, que representa casi la totalidad del consumo dinámico. En la tabla 6.9 aparece el consumo total, dividido en estático y dinámico. Potencia (mw) % Dinámico % Estático % TOTAL % Tabla 6.9: Consumo Spartan-6 III En la tabla 6.10 vemos el consumo total, dividido en estático y dinámico producido por el circuito cuando trabaja con longitudes de clave de 256 bits. Potencia (mw) % Dinámico % Estático % TOTAL % Tabla 6.10: Consumo Spartan-6 IV Como vemos, el consumo estático para ambas longitudes de clave es prácticamente igual, mientras que el consumo dinámico se ve incrementado para claves de 256 bits de longitud. Miguel García Ocón 117 Resultados
124 Consumo de la FPGA Virtex-4 De nuevo, en las tablas 6.11, 6.12 y 6.13, se exponen los resultados de las estimaciones del consumo de potencia para longitudes de clave de 128 bits para la FPGA de la familia Virtex-4. En la tabla 6.11, en la primera columna se observan las tensiones de alimentación de la FPGA. En la segunda columna aparecen las corrientes, tanto estática como dinámica, que dicha alimentación produce. En la tercera columna se ven las potencias consumidas en función de cada corriente y su respectiva tensión de alimentación. Tensión (V) Corriente (ma) Potencia (mw) % Vccint 1.20 Dinámico % Estático % Vccaux 2.50 Dinámico % Estático % Vcco Dinámico % Estático % Potencia % Total Tabla 6.11: Consumo Virtex-4 I En la tabla 6.12 se divide el consumo en estático y dinámico, estudiando en detalle la parte del consumo dinámico, producido por el reloj, la lógica, las señales, las memorias y las entradas y salidas. Miguel García Ocón 118 Resultados
125 Potencia (mw) % Reloj % Lógica % Señales % BRAMs % E/S % Estático % TOTAL % Tabla 6.12: Consumo Virtex-4 II De nuevo, dentro del consumo dinámico, el reloj es el que mas potencia consume, siendo un % del total, que representa casi la totalidad del consumo dinámico. En la tabla 6.13 aparece el consumo total, dividido en estático y dinámico. Potencia (mw) % Dinámico % Estático % TOTAL % Tabla 6.13: Consumo Virtex-4 III En la tabla 6.14 vemos el consumo total, dividido en estático y dinámico producido por el circuito cuando trabaja con longitudes de clave de 256 bits. Potencia (mw) % Dinámico % Estático % TOTAL % Tabla 6.14: Consumo Virtex-4 IV Como vemos, en este caso, aunque el consumo dinámico también incrementa, tiene mas importancia la mayor utilización de área que requiere este circuito, ya que el consumo estático aumenta en aproximádamente 28 mw. Miguel García Ocón 119 Resultados
126 Comparación del consumo Según los datos presentados en las tablas anteriores se puede observar el impresionante avance en cuanto a consumo de potencia que se ha conseguido con la fabricación de nuevas familias de FPGAs. Para longitudes de clave de 128 bits, de los 175,46 mw que son consumidos por la Virtex-4 hemos pasado a los 23,05 mw que requieren la Spartan-6. Eso implica una reducción del 86.86% del consumo de potencia. Sin embargo y como esperábamos, debido al mayor número de transistores, el consumo de potencia estática ha pasado de un 79.39% para la familia Virtex-4 a un 86.51% para la familia Spartan-6. Además, aunque la utilización de una longitud de clave de 256 bits nos proporciona un mayor consumo dinámico, la principal componente del consumo en ambos casos sigue siendo el consumo estático, siendo hasta casi siete veces superior al dinámico. Es por ello que nos vamos a centrar en la reducción de esta componente estática, ya que, antes de llegar a este apartado, se realizó una reducción del número de pines de entrada (lo que significa que ya se hizo una mejora para reducir el consumo debido a que nos ajustamos más al área de la FPGA, pero el resultado sigue siendo un elevado porcentaje de consumo estático). Desafortunadamente, no existen mucha posibilidades a la hora de realizar estas mejoras, ya que el consumo se debe a la tecnología existente, es decir, no podemos evitar que haya el número de transistores que hay. Por lo que técnicas como las mejoras de arquitectura y la codificación de las máquinas de estados (dedicadas a la reducción del consumo dinámico) no nos van a proporcionar mejoras significativas en el consumo total Reducción del consumo Llegados a este punto se hace necesario preguntarse: Qué opciones tenemos? Como ya se ha dicho, las posibilidades de reducción del consumo estático son muy reducidas. Miguel García Ocón 120 Resultados
127 Según [Nev09], la más significativa se basa en la reducción del voltaje de alimentación del núcleo (vccint), del voltaje auxiliar (vccaux) y vcco25. Esta técnica se basa en reducir estas tensiones hasta encontrar el voltaje mínimo de alimentación con el cual nuestro circuito sigue funcionando correctamente. Es necesario tener en cuenta que la reducción del voltaje, si no está debidamente controlada, puede ocasionar fallos debido al incumplimiento de tiempos en los caminos críticos del circuito. Debido a ello, los fabricantes establecen un rango de voltajes del que no es recomendable salir. Si bien es cierto que las FPGAs pueden funcionar fuera de esos rangos, en nuestras estimaciones vamos a trabajar siempre dentro del rango establecido por el fabricante. Otro factor a considerar con el que está íntimamente ligado el consumo de potencia es la temperatura. En estos casos se puede estudiar el encapsulamiento y el uso de sumideros o disipadores de calor. En esta sección se estudiará la aplicación de estas técnicas de reducción de consumo sobre las estimaciones anteriores para claves de longitud 128 bits Reducción del consumo para Spartan-6 En las siguientes tablas, entre paréntesis aparecen los valores originales de la sección anterior con el objeto de facilitar la comparación entre ambos casos. En las tablas 6.15, 6.16 y 6.17 se estudia la reducción del consumo aplicando la técnica de reducción de la tensión de alimentación al mínimo recomendado por el fabricante. Miguel García Ocón 121 Resultados
128 Tensión (V) Corriente (ma) Potencia (mw) % Reducción Vccint (1.20) Dinámico 2.53 (2.58) (3.096) 6.848% Estático 5.10 (6.14) (7.368) % Vccaux (2.50) Dinámico % Estático 2.98 (3.03) (7.575) 6.561% Vcco (2.50) Dinámico % Estático 2.00 (2.00) 4.50 (5.00) 10.00% Potencia (23.039) % Total Tabla 6.15: Reducción del connsumo Spartan-6 I Potencia (mw) % Reducción Reloj 2.76 (2.95) 6.44% Lógica 0.05 (0.05) 0.00% Señales 0.07 (0.08) 12.50% BRAMs 0.01 (0.01) 0.00% E/S 0.02(0.02) 0.00% Estático (19.94) % TOTAL (23.05) 9.848% Tabla 6.16: Reducción del consumo Spartan-6 II Potencia (mw) % Reducción Dinámico 2.90 (3.10) 6.452% Estático (19.94) % TOTAL (23.05) % Tabla 6.17: Reducción del consumo Spartan-6 III Como vemos, con el cambio en el voltaje de alimentación, conseguimos reducir en un % el consumo estático, además de una reducción del 6.452% en el consumo dinámico, que se traduce en un % de reducción Miguel García Ocón 122 Resultados
129 del consumo total. Todas las estimaciones hasta ahora realizadas son para una temperatura ambiente de 25 C. Para evaluar el efecto de la temperatura, se han realizado unos nuevos experimentos manteniendo todas las condiciones iniciales(es decir, sin aplicar la reducción del voltaje de alimentación), a excepción de la temperatura ambiente, que se ha fijado en 15 C (tabla 6.18). Potencia (mw) % Reducción Dinámico 3.10 (3.10) 0.00% Estático (19.94) % TOTAL (23.05) % Tabla 6.18: Reducción del consumo Spartan-6 IV Como vemos, no conviene subestimar el factor temperatura, ya que una diferencia de 10 C en la temperatura ambiente es capaz de reducir considerablemente el consumo de potencia estática. En la tabla 6.19 se estudia como afectan al consumo la aplicación de ambas técnicas, reducción de la tensión de alimentación y reducción de la temperatura ambiente. Potencia (mw) % Reducción Dinámico 2.90 (3.10) 6.452% Estático (19.94) % TOTAL (23.05) % Tabla 6.19: Reducción del consumo Spartan-6 V Se observa que se puede conseguir una reducción del consumo total de hasta un % Reducción del consumo para Virtex-4 En las siguientes tablas, entre paréntesis aparecen los valores originales de la sección anterior con el objeto de facilitar la comparación entre ambos casos. Miguel García Ocón 123 Resultados
130 En las tablas 6.20, 6.21 y 6.22 se estudia la reducción del consumo aplicando la técnica de reducción de la tensión de alimentación al mínimo recomendado por el fabricante. Tensión (V) Corriente (ma) Potencia (mw) % Reducción Vccint (1.20) Dinámico (30.13) (36.156) 5.440% Estático (48.89) (58.668) % Vccaux (2.50) Dinámico % Estático (31.00) (77.500) 15.00% Vcco (2.50) Dinámico % Estático 1.25 (1.25) (3.125) 4.80% Potencia ( ) % Total Tabla 6.20: Reducción del connsumo Virtex-4 I Potencia (mw) % Reducción Reloj (35.81) 5.417% Lógica 0.09 (0.10) 10.00% Señales 0.20 (0.22) 9.091% BRAMs 0.01 (0.01) 0.00% E/S 0.02 (0.03) % Estático (139.29) % TOTAL (175.46) % Tabla 6.21: Reducción del consumo Virtex-4 II Miguel García Ocón 124 Resultados
131 Potencia (mw) % Reducción Dinámico (36.17) 5.447% Estático (139.29) % TOTAL (175.46) % Tabla 6.22: Reducción del consumo Virtex-4 III Como vemos, con el cambio en el voltaje de alimentación, conseguimos reducir en un % el consumo estático, además de un 5.447% del consumo dinámico, que se traduce en un % de reducción del consumo total. De nuevo, vamos a estudiar de qué manera afecta una bajada de 10 C en la temperatura ambiente y volviendo a alimentar la FPGA a tensiones nominales (tabla 6.23). Potencia (mw) % Reducción Dinámico (36.17) 0.00% Estático (139.29) 6.038% TOTAL (175.46) 4.793% Tabla 6.23: Reducción del consumo Virtex-4 IV Si además de la bajada de 10 C realizamos la bajada de la tensión de alimentación (tabla 6.24), obtenemos: Potencia (mw) % Reducción Dinámico (36.17) 5.447% Estático (139.29) % TOTAL (175.46) % Tabla 6.24: Reducción del consumo Virtex-4 V Se observa una reducción de hasta el 16.83% Conclusiones de la reducción del consumo En el apartado 6.3 hemos estudiado el consumo de nuestro circuito para dos FPGAs diferentes y las posibles maneras de reducirlo. Miguel García Ocón 125 Resultados
132 Estas posibilidades eran: Reducción del voltaje de alimentación. Reducción de la temperatura ambiente. Reducción del voltaje de alimentación y de la temperatura ambiente. En la tabla 6.25 se comparan las reducciones en el consumo totales debido a estas tres técnicas propuestas entre las dos FPGAs seleccionadas. Bajada de tensión Bajada de Bajada de tensión de de alimentación temperatura alimentación + temperatura Spartan % % % Virtex % 4.793% % Tabla 6.25: Comparación de la reducción del consumo Como vemos las reducciones producidas por la bajada de tensión son prácticamente iguales. Sin embargo, se observa una gran diferencia entre la bajada del consumo por cambio de la temperatura ambiente. Esto es debido, probablemente, a que la Virtex-4 utiliza tecnología más antigüa, es decir, un menor número de transistores, con el consecuente menor consumo de potencia estática. Se puede observar que la temperatura se convierte en una variable muy a tener en cuenta en las tecnologías actuales. Es por ello que el diseño para bajo consumo es crucial. Miguel García Ocón 126 Resultados
133 Capítulo 7 Conclusiones y trabajos futuros En el presente capítulo se presentarán las conclusiones que se han obtenido a lo largo del estudio realizado y se propondrán futuros trabajos Conclusiones Para concluir que el trabajo realizado ha sido satisfactorio es necesario recordar los objetivos que se propusieron al principio de este proyecto: Estudio del algoritmo AES. Descripción en VHDL, simulación funcional y síntesis. Emplazamiento, rutado y simulación postlayout. Estimación y reducción del consumo. Tras los estudios realizados, en los que se han realizado simulaciones satisfactorias con varios paquetes de hasta 100 vectores oficiales del NIST cada uno [Vec] (los cuales se adjuntan en el capítulo de anexos), podemos concluir que nuestra descripción funciona correctamente. A pesar de la drástica reducción de pines de entrada y salida que se realizó (se pasaron de un máximo de 517 a 165) el estudio del consumo ha revelado que la mayor parte (86.508% en Spartan-6) es consumo estático. La mayor importancia del consumo estático frente al dinámico es algo que limita mucho al diseñador a la hora de la reducción del consumo, ya que la mayor parte de las técnicas existentes están vinculadas a la reducción del consumo dinámico, que es realmente el que tiene posibilidades de ser Miguel García Ocón 127 Conclusiones y trabajos futuros
134 reducido. Recordemos que la potencia estática consumida está directamente relacionada con la tecnología. A pesar de ello y agotando las pocas posibilidades de las que disponíamos, hemos concluido que, en una Spartan-6, podemos reducir el consumo total hasta en un % bajando la tensión de alimentación hasta el mínimo recomendado por el fabricante. Además, hemos observado que, en tecnologías modernas, la temperatura se convierte en un factor de creciente importancia a tener en cuenta, ya que, con una reducción de 10 C en la temperatura ambiente, añadido a la mejora por bajada de tensión de alimentación, obtenemos una reducción en el consumo total de hasta un %. Por lo tanto sería de especial interés estudiar el uso de disipadores de calor Trabajos futuros En esta sección se propondrán una serie de trabajos futuros de interés con respecto al nivel de seguridad y reducción del consumo Modo de operación Existen varios modos de operación dentro del cifrado por bloques[dwo01]. Nuestro diseño comprende el modo de operación ECB (Electronic Code Book), en el que cada bloque se cifra de manera separada. Sin embargo, se ha observado que este modo de operación puede no ser completamente seguro, como se muestra en la figura 7.1. Figura 7.1: Codificación ECB [Mod] Miguel García Ocón 128 Conclusiones y trabajos futuros
135 Como vemos, la figura del pingüino sigue siendo reconocible. En nuestro proyecto hemos diseñado el modo de operación ECB porque nuestro objetivo era conseguir implementar un algoritmo AES completamente funcional. Sin embargo, está diseñado como un núcleo sobre el que sería relativamente sencillo aplicar cualquier mejora con la seguridad de que el diseño no perderá funcionalidad. Por lo tanto sería interesante estudiar otros modos de operación más seguros para aplicarlos sobre este algoritmo. Por ejemplo, otro modo de operación es el denominado CBC (Cipher Block Chaining). En este modo, cada bloque recién procesado se combina con el siguiente a procesar a través de una operación XOR, de esta forma se consigue que los bloques no se procesen de forma independiente, sino que cada uno dependa de todos los anteriores. Otros modos de operación son el CFB (Cipher Feedback), OFB (Output Feedback) y CTR (Counter) Reducción del consumo dinámico En nuestro proyecto nos hemos centrado en la reducción del consumo estático porque se trataba del que mayor proporción tenía. Sin embargo, sería interesante estudiar reducciones del consumo dinámico. Como se ha visto, casi la totalidad del consumo dinámico es producido por el reloj, por lo que la técnica más interesante a aplicar es la denominada gated clock [JK11]. Se trata de una técnica conocida que consiste en desactivar partes del circuito que no se necesitan en momentos determinados, evitando así que los biestables contenidos en dichas partes cambien de estado, evitando la disipación de potencia dinámica. Aunque se sabe que con esta técnica se obtendrían buenos resultados, en este proyecto se ha intentado reducir el consumo lo máximo con el menor esfuerzo posible, y no siempre es sencillo modificar la estructura del circuito, y más aun en una FPGA con una arquitectura rígida. Miguel García Ocón 129 Conclusiones y trabajos futuros
136 Por otra parte, en nuestro diseño hay definidas numerosas máquinas de estado, por lo que sería de especial interés estudiar la codificación de las mismas. Miguel García Ocón 130 Conclusiones y trabajos futuros
137 Capítulo 8 Presupuestos En este capítulo se expondrá el coste total que ha supuesto realizar este proyecto. Miguel García Ocón 131 Presupuestos
138 8.1. Costes en hardware PRESUPUESTO CÓDIGO DESCRIPCIÓN UNIDAD MEDICIÓN PRECIO IMPORTE CAPÍTULO C1 HARDWARE C101 HP Pavilion dv6 Notebook PC Ordenador portátil con procesador Intel Core i3 2,53 GHz y memoria RAM de 4,00 GB (3,80 GB utilizables). Ud TOTAL CAPÍTULO C1 HARDWARE: Miguel García Ocón 132 Presupuestos
139 8.2. Costes en software PRESUPUESTO CÓDIGO DESCRIPCIÓN UNIDAD MEDICIÓN PRECIO IMPORTE CAPÍTULO C2 SOFTWARE C201 Sistema Operativo Sistema Operativo Windows 7 Home Premium, Service Pack 1. Licencia incluida con el PC. Ud C202 Xilinx ISE Design Suite 13.2 Software de síntesis y análisis de diseños HDL. Capaz de realizar simulaciones del comportamiento y temporales. Ud C203 Modelsim 10.1c SE Entorno de simulación de diseños HDL, capaz de realizar simulaciones del comportamiento y temporales. Licencia de un año de duración. Ud 1 1, , C204 VIM Editor de texto que comprende múltiples lenguajes. Útil para la comparación entre diversos archivos de texto. Ud C205 TeXnicCenter 2.0 Editor de LaTeX que integra las herramientas necesarias para la composición de diversos tipos de textos. Ud TOTAL CAPÍTULO C2 SOFTWARE: 1, Miguel García Ocón 133 Presupuestos
140 8.3. Costes en personal PRESUPUESTO CÓDIGO DESCRIPCIÓN UNIDAD MEDICIÓN PRECIO IMPORTE CAPÍTULO C3 PERSONAL C301 Miguel García Ocón Ingeniero encargado del estudio del algoritmo AES, descripción en VHDL, optimización de la misma, simulaciones de comportamiento y temporales, estudio de los resultados, estudio del consumo de potencia y redacción del presente documento. Hora , C302 Dr. Luis Mengibar Pozo Ingeniero encargado de la dirección del proyecto Hora , TOTAL CAPÍTULO C3 PERSONAL: 28, Miguel García Ocón 134 Presupuestos
141 8.4. Otros costes PRESUPUESTO VWXYZ[ DESCRIPCIÓN UNIDAD MEDICIÓN PRECIO IMPORTE CAPÍTULO C4 OTROS COSTES C401 \]^_`b] dghijrico Consumo eléctrico estimado en modalidad sin discriminación horaria. KwH 597 0, TOTAL CAPÍTULO C4 OTROS COSTES: Miguel García Ocón 135 Presupuestos
142 8.5. Presupuesto general PRESUPUESTO - RESUMEN CAPÍTULO DESCRIPCIÓN IMPORTE ( ) % C1 HARDWARE 699,99 2, C2 SOFTWARE 1.148,57 3, C3 PERSONAL , C4 OTROS COSTES 91,08 0, TOTAL EJECUCIÓN: ,64 13,00% Gastos Generales: 3892,1532 Sumados G.G.: , % de IVA: 5413,08691 TOTAL: ,87 Asciende el presupuesto general a la expresada cantidad de TREINTA Y NUEVE MIL DOSCIENTOS CUARENTA Y CUATRO EUROS CON OCHENTA Y SIETE CÉNTIMOS Pinto, a 12 de Abril del 2013 Miguel García Ocón 136 Presupuestos
143 Capítulo 9 Referencias [Ana] Accedido 09-Junio [Dwo01] Morris Dworkin. Computer Security. Recommendation for Block Cipher Modes of Operation, pages 9 15, [Esc] kryptographie/skytale.html. Accedido 09-Junio [Est] Accedido 09- Junio [JK11] M. Ayoubkhan y Arti Noor Jagrit Kathuria. MIT International Journal of Electronics and Communication Engineering. MIT Publications, pages , [Lop02] Manuel Jose Lucena Lopez. Criptografia y Seguridad en Computadores. Tercera Edicion, pages 29 34, [Men03] Luis Mengibar. Contribucion al Diseno para bajo consumo en FP- GAs. Universidad Carlos III de Madrid, pages 17 21, [Mod] Accedido 09-Junio [MP96] J.M. Rabaey M. Pedram. Low Power Design Methodologies. Kluwer Academic Publishers, [Mun04] Alfonso Munoz Munoz. Seguridad europea para EEUU. Algoritmo Criptográfico Rijndael, pages 6 10, Miguel García Ocón 137 Referencias
144 [Nev09] Santiago Nevado. de técnicas de bajo consumo en FPGAs. Universidad de Alcalá de Henares, pages 6 7, [NIS01] NIST. Announcing the Advanced Encryption Standard (AES). Federal Information Processing Standards Publication 197, pages 7 24, [Spa] sheets/ds160.pdf. Accedido 09-Junio [Vec] Accedido 09- Junio [Vir] sheets/ds112.pdf. Accedido 09-Junio [Xil] Accedido 09-Junio Miguel García Ocón 138 Referencias
145 Capítulo 10 Anexos Miguel García Ocón 139 Anexos
146 10.1. Anexo I: Código VHDL Algoritmo AES Miguel García Ocón 140 Anexos
147 Miguel García Ocón 141 Anexos
148 Miguel García Ocón 142 Anexos
149 Miguel García Ocón 143 Anexos
150 Miguel García Ocón 144 Anexos
151 Miguel García Ocón 145 Anexos
152 Miguel García Ocón 146 Anexos
153 Miguel García Ocón 147 Anexos
154 Miguel García Ocón 148 Anexos
155 Componente SubBytes (AES) Miguel García Ocón 149 Anexos
156 Miguel García Ocón 150 Anexos
157 Miguel García Ocón 151 Anexos
158 Miguel García Ocón 152 Anexos
159 Componente SBox (SubBytes) Miguel García Ocón 153 Anexos
160 Miguel García Ocón 154 Anexos
161 Componente InvSBox (SubBytes) Miguel García Ocón 155 Anexos
162 Miguel García Ocón 156 Anexos
163 Componente ShiftRows (AES) Miguel García Ocón 157 Anexos
164 Componente MixColumns (AES) Miguel García Ocón 158 Anexos
165 Miguel García Ocón 159 Anexos
166 Miguel García Ocón 160 Anexos
167 Miguel García Ocón 161 Anexos
168 Componente Multiplicación (MixColumns) Miguel García Ocón 162 Anexos
169 Miguel García Ocón 163 Anexos
170 Miguel García Ocón 164 Anexos
171 Miguel García Ocón 165 Anexos
172 Miguel García Ocón 166 Anexos
173 Miguel García Ocón 167 Anexos
174 Miguel García Ocón 168 Anexos
175 Componente Módulo (Multiplicación) Miguel García Ocón 169 Anexos
176 Miguel García Ocón 170 Anexos
177 Miguel García Ocón 171 Anexos
178 Componente AddRoundKey (AES) Miguel García Ocón 172 Anexos
179 Componente Keygen (AES) Miguel García Ocón 173 Anexos
180 Miguel García Ocón 174 Anexos
181 Miguel García Ocón 175 Anexos
182 Miguel García Ocón 176 Anexos
183 Miguel García Ocón 177 Anexos
184 10.2. Anexo II: Ejemplo de encriptación En este anexo se expondrá un ejemplo real de encriptación de un documento de texto con clave de 128 bits utilizando el algoritmo descrito en este proyecto. La clave utilizada es: PFC-algoritmoAES Texto a encriptar: Texto encriptado: Como vemos, el texto se vuelve completamente ininteligible. Miguel García Ocón 178 Anexos
185 10.3. Anexo III: Testbench En este anexo se incluye el banco de pruebas que se ha utilizado para comprobar el correcto funcionamiento del algoritmo descrito utilizando los vectores del NIST para cualquier longitud de clave incluidos en el anexo V. Miguel García Ocón 179 Anexos
186 Miguel García Ocón 180 Anexos
187 10.4. Anexo IV: script.do Para que la simulación postlayout nos proporcione el archivo.vcd necesario para la estimación del consumo era necesario generar un script. Dicho script se incluye en este anexo. vlib work vcom -explicit -93 netgen/par/aes timesim.vhd vcom -explicit -93 test ficheros.vhd vsim -voptargs= +acc -t 1ps -sdfmax /uut=netgen/par/aes timesim.sdf -lib work work.test ficheros do {test ficheros wave.tdo} view wave view structure view signals do {test ficheros.udo} vcd file AES vcd.vcd vcd add /uut/* add list /uut/* run 750 us vcd checkpoint Tabla 10.1: Script.do Anexo V: Vectores de prueba utilizados En este anexo se incluyen los ficheros de texto que contienen los vectores de prueba del NIST que se han utilizado en este proyecto a través del banco de pruebas del anexo III para verificar la correcta funcionalidad del circuito descrito. También se incluyen las salidas esperadas de cada fichero Fichero 1: Entradas Encriptación con clave de 128 bits A0B0C0D0F CLAVE A45F08C889B97F B8359 DATOS A1B1C1E1F CLAVE 2 5C6D71CA30DE8B8B D2EC7D4B DATOS A2B2D2E2F A CLAVE 3 53F3F4C64F8616E4E7C56199F48F21F6 DATOS 3 Miguel García Ocón 181 Anexos
188 3C3D3E3F B4C4D4E CLAVE 4 A1EB65A FB0F1C27FF9959F703 DATOS A5B5C5D5F CLAVE ECF0B B08E350A98A39BFA DATOS A6B6C6E6F CLAVE B9711AE2B01DC497AFDE8 DATOS A7B7D7E7F A CLAVE C1F2AEC8BED192F5A8E161DD508 DATOS 7 8C8D8E8F B9C9D9E CLAVE 8 B5BF946BE19BEB8DB3983B5F4C6E8DDB DATOS 8 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2 CLAVE EE10E21BD907227C4450FF42324 DATOS 9 B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE 10 00A82F59C91C8486D12C0A80124F6089 DATOS 10 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA CLAVE 11 7CE0FD B4BBD9FAF8A1372FE DATOS 11 DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE A8243D BC5AD355B3129 DATOS 12 F0F1F2F3F5F6F7F8FAFBFCFDFE CLAVE 13 12A8CFA23EA764FD876232B4E842BC44 DATOS A0B0C0E0F CLAVE 14 BCAF32415E8308B3723E5FDD853CCC80 DATOS 14 2C2D2E2F B3C3D3E CLAVE 15 89AFAE685D801AD747ACE91FC49ADDE0 DATOS A4B4C4D4F CLAVE 16 F521D07B484357C4A69E76124A DATOS A5B5C5E5F CLAVE 17 3E23B3BC065BCC152407E23896D77783 DATOS A6B6D6E6F A CLAVE 18 79F0FBA002BE E7E99290D8F52 DATOS 18 7C7D7E7F B8C8D8E CLAVE 19 DA23FE9D5BD63E1D72E3DAFBE21A6C2A DATOS 19 A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE 20 E3F5698BA90B6A022EFD7DB2C7E6C823 DATOS 20 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2 CLAVE 21 BDC2691D4F1B73D C3BCBF9C6E DATOS A0B0D0E0F A CLAVE 22 BA74E EE1BA1B42BD A DATOS 22 6C6D6E6F B7C7D7E CLAVE 23 B5C593B5851C57FBF8B3F57715E8F680 DATOS A8B8C8D8F CLAVE 24 Miguel García Ocón 182 Anexos
189 3DA9BD9CEC F9387C3BBF4EE DATOS A9B9C9E9FA0A1A3A4A5A6 CLAVE F AB65D316B3C DATOS 25 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA CLAVE 26 9F46C62EC4F6EE3F6E8C62554BC48AB7 DATOS 26 BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE CLAVE FE9E699A4EBC8E0DBEB6979C8 DATOS 27 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2 CLAVE 28 B2B DED9BC8C2C23FF6F18867 DATOS 28 E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE 29 A7FACF4E301E984E5EFEEFD645B23505 DATOS 29 F8F9FAFBFDFEFE A CLAVE 30 F7C762E4A FD7ACFB6C4EEDCDD DATOS 30 0C0D0E0F B1C1D1E CLAVE 31 9B64FC21EA08709F FAA70F1BE DATOS A2B2C2D2F CLAVE 32 52AF2C3DE07EE6777F55A4ABFC100B3F DATOS A3B3C3E3F CLAVE 33 2FCA C57AA3F968CBE2C816F DATOS A4B4D4E4F A CLAVE C73658A4A9C EE2C132F DATOS 34 5C5D5E5F B6C6D6E CLAVE 35 AF60005A00A1772F7C07A48A923C23D2 DATOS A7B7C7D7F CLAVE 36 6FCCBC B6F0280AFAF20C6 DATOS A8B8C8E8F CLAVE 37 7D82A43DDF4FEFA2FC D386 DATOS A9B9D9E9FA0A2A3A4A5A7A8A9AA CLAVE 38 5D5A990EAAB9093AFE4CE254DFA49EF9 DATOS 38 ACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE CLAVE 39 4CD1E2FD3F4434B553AAE453F0ED1A02 DATOS 39 C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2 CLAVE 40 5A2C9A9641D FA1B B5E DATOS 40 D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6 CLAVE 41 B517FE34C0FA217D341740BFD4FE8DD4 DATOS 41 E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FA CLAVE BAF2278A69D331D E99A DATOS 42 FCFDFEFF B0C0D0E CLAVE 43 B529BD8164F20D0AA443D C DATOS A1B1C1D1F CLAVE 44 2E596DCBB2F33D4216A1176D5BD1E456 DATOS 44 Miguel García Ocón 183 Anexos
190 A2B2C2E2F CLAVE A1EA2B7EE2424E9A0E DATOS A3B3D3E3F A CLAVE 46 AE20020BD4F13E9D90140BEE3B5D26AF DATOS 46 4C4D4E4F B5C5D5E CLAVE 47 BAAC065DA7AC26E855E79C8849D75A02 DATOS A6B6C6D6F CLAVE 48 7C917D8D1D45FAB9E2540E CC DATOS A7B7C7E7F CLAVE 49 BDE6F89E16DAADB0E847A2A614566A91 DATOS A8B8D8E8F A CLAVE 50 C9DE163725F1F5BE44EBB1DB51D07FBC DATOS 50 9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE CLAVE 51 3AF57A58F0C07DFFA669572B521E2B92 DATOS 51 B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2 CLAVE 52 3D5EBAC306DDE4604F1B4FBBBFCDAE55 DATOS 52 C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6 CLAVE 53 C2DFA91BCEB76A1183C995020AC0B556 DATOS 53 D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EA CLAVE 54 C70F E9A0746D01EC56C8596B DATOS 54 ECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE CLAVE 55 C4F81B610E98012CE C0C2B2 DATOS A0B0C0D0F CLAVE 56 EAAB86B1D02A95D7404EFF67489F97D4 DATOS A1B1C1E1F CLAVE 57 7C55BDB40B88870B52BEC3738DE82886 DATOS A2B2D2E2F A CLAVE 58 BA6EAA88371FF0A3BD875E3F2A975CE0 DATOS 58 3C3D3E3F B4C4D4E CLAVE C4C24BD30CF0575E4E0373DC DATOS A5B5C5D5F CLAVE 60 9A8EAB004EF53093DFCF96F57E7EDA82 DATOS A6B6C6E6F CLAVE B589E2400C25F117B1D796C28129 DATOS A7B7D7E7F A CLAVE 62 2F CEC3F044F134B1B92BBE DATOS 62 8C8D8E8F B9C9D9E CLAVE A779FFC541B3A3805D90CE17580FC DATOS 63 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2 CLAVE 64 1A1EAE4415CEFCF08C4AC1C8F68BEA8F DATOS 64 B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE 65 Miguel García Ocón 184 Anexos
191 E6E7E4E5B0B3B2B5D4D5AAAB DATOS 65 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA CLAVE 66 F8F9FAFBFBF8F9E EFE0E1E2 DATOS 66 DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE A1A2A3A445444B4A DATOS 67 F0F1F2F3F5F6F7F8FAFBFCFDFE CLAVE B2D2C2B2A05FAFBF9 DATOS A0B0C0E0F CLAVE A7BEAE9E8EF DATOS A1B1D1E1F A CLAVE FDDDCDBDAA0AFAEAD DATOS 70 2C2D2E2F B3C3D3E CLAVE A1BBFBCBDBA75747B7A7F78797A DATOS A4B4C4D4F CLAVE B989996A3A2A5A4849B9A99 DATOS A5B5C5E5F CLAVE CACBF4F DATOS A6B6D6E6F A CLAVE 74 CECFCCCDAFACADB A DATOS 74 7C7D7E7F B8C8D8E CLAVE CDCECFC813121D1C DATOS A9B9C9D9FA0A1A2 CLAVE 76 D2D3D0D16F6C6D F5ED1EEEFEC DATOS 76 A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE 77 ACADAEAF F0E1110D5D2D3D0 DATOS 77 B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CA CLAVE E6E7E0E1757A7B78 DATOS 78 CCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE CLAVE 79 BABBB8B98A89888F74757A7B DATOS 79 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2 CLAVE 80 8D8C8F8E6E6D6C633B3A3D3CCAD5D4D7 DATOS 80 F4F5F6F7F9FAFBFCFEFE CLAVE F7F DATOS A0B0D0E0F A CLAVE 82 8E8F8C8D A8B8C8D010E0F0C DATOS 82 1C1D1E1F B2C2D2E CLAVE 83 C8C9CACB A7B7475E7E0E1E2 DATOS A3B3C3D3F CLAVE 84 6D6C6F6E D8C8D8A8BADD2D3D0 DATOS A4B4C4E4F CLAVE A2B393A3B3C DATOS 85 Miguel García Ocón 185 Anexos
192 58595A5B5D5E5F A CLAVE 86 A5A4A7A6B0B3B28DDBDADDDCBDB2B3B0 DATOS 86 6C6D6E6F B7C7D7E CLAVE E3F2C2B2A29 DATOS A8B8C8D8F CLAVE B0A B DATOS A9B9C9E9FA0A1A3A4A5A6 CLAVE B0AA3A4A5A6 DATOS 89 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA CLAVE C BDB2B3B0 DATOS 90 BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE CLAVE 91 4B4A E9F9091CEC9C8CB DATOS 91 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2 CLAVE A6B B9F9E9998D9E6E7E4 DATOS 92 E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE C5C6C7C0F0F1EEEF7C7B7A79 DATOS 93 F8F9FAFBFDFEFE A CLAVE C2C1C13F0D0C0B0A050A0B08 DATOS 94 0C0D0E0F B1C1D1E CLAVE 95 CDCCCFCEBEBDBCBBABAAA5A4181F1E1D DATOS A2B2C2D2F CLAVE BA0A1A6A7445B5A59 DATOS A3B3C3E3F CLAVE 97 0E0F0C0DA8ABAAAD2F2E DATOS A4B4D4E4F A CLAVE A E8F8889BDB2B3B0 DATOS 98 5C5D5E5F B6C6D6E CLAVE 99 CBCAC9C A9A8A7A6A5A2A3A0 DATOS A7B7C7D7F CLAVE C1C2C3CC9C9D9A9B0CF3F2F1 DATOS Fichero 1: Salidas Encriptación con clave de 128 bits D8F EF7D06B506A4FD5BE9C9 SALIDA 1 59AB30F4D4EE6E4FF9907EF65B1FB68C SALIDA 2 BF1ED2FCB2AF3FD41443B56D85025CB1 SALIDA D5C32233EDCB EAE8B2 SALIDA 4 408C073E3E B72625E68B8364B SALIDA 5 E1F94DFA776597BEACA262F2F6366FEA SALIDA 6 F29E986C6A1C27D7B29FFD7EE92B75F1 SALIDA 7 131C886A57F8C2E713ABA6955E2B55B5 SALIDA 8 D2AB7662DF9B8C740210E5EEB61C199D SALIDA 9 14C10554B2859C484CAB5869BBE7C470 SALIDA 10 DB4D498F0A49CF55445D502C1F9AB3B5 SALIDA 11 6D96FEF7D66590A77A77BB F7F SALIDA 12 Miguel García Ocón 186 Anexos
193 316FB68EDBA736C53E78477BF913725C SALIDA F2B93AF8397FD3A771FC011C8C37 SALIDA 14 F3F92F7A9C59179C1FCC2C2BA0B082CD SALIDA 15 6A95EA659EE E7A9152FF04EBC SALIDA E A5D432C90B93 SALIDA 17 E49BDDD2369B83EE66E6C75A1161B394 SALIDA 18 D3388F19057FF704B A74867D SALIDA 19 23AA03E2D5E4CD24F3217E596480D1E1 SALIDA 20 C84113D68B666AB2A50A8BDB222E91B9 SALIDA 21 AC CD4340B507963DB65CB7B6 SALIDA 22 8D F6BF SALIDA 23 5A1D6AB F7977E55B9A54D9B90 SALIDA 24 72E9C2D519CF555E AABE3B258 SALIDA 25 A8F3E81C4A23A39EF4D745DFFE026E80 SALIDA F646449D31458F9EB4EF5483AEE6C SALIDA 27 4DBE4BC84AC797C0EE4EFB7F1A07401C SALIDA 28 25E10BFB411BBD4D625AC8795C8CA3B3 SALIDA EC803614E43DEF SALIDA 30 60C5BC8A C6386C59E572A8 SALIDA FC8CA52DFE055D6A00A76471BA6 SALIDA 32 ECC EC612449C3F581E7D42FF SALIDA 33 6B7FFE4C602A154B06EE9C7DAB5331C9 SALIDA 34 7DA234C14039A240DD02DD0FBF84EB67 SALIDA 35 C7DC217D9E3604FFE7E91F080ECD5A3A SALIDA F5C81260EA41E7580CDA5 SALIDA 37 A07B9338E92ED105E6AD720FCCCE9FE4 SALIDA 38 AE0FB CC21A7DA816BBC61322C SALIDA 39 C826A193080FF91FFB21F71D3373C877 SALIDA B11B0E494E8D8B0AA6B1D5AC2C48 SALIDA C3D1519AB4F2CD9A78AB09A511BD SALIDA 42 DC55C076D52BACDF2EEFD952946A439D SALIDA B17B590FFC72B5C8E342B601E8003 SALIDA BB A537E1339F4AA21C75 SALIDA 45 3BA7762E C0F4FA39164C410C SALIDA 46 A0564C41245AFCA7AF8AA2E0E588EA89 SALIDA 47 5E36A42A2E099F54AE85ECD92E2381ED SALIDA F878CD0F6CA F106F2FE SALIDA 49 7E4E03908B CCF7C94E7C259 SALIDA A48C30613A242DD494C7F9185D SALIDA 51 B4C0F6C9D4D7079ADDF9369FC081061D SALIDA 52 D5810FE0509AC53EDCD74F89962E6270 SALIDA 53 03F17A16B3F ECDD38EBB2165 SALIDA 54 DA1248C BAD4A93B4D9856C9DF SALIDA 55 3D10D7B63F3452C06CDF6CCE18BE0C2C SALIDA 56 4AB823E7477DFDDC0E FCB6258 SALIDA 57 E6478BA56A77E70CFDAA5C843ABDE30E SALIDA FBEAF7F09C5429FF75772D SALIDA AE9F2EFD0CA9383BFCA1A94E9 SALIDA F3B8C8F9D6F46626CAC3C0BCB9217 SALIDA 61 E08C8A7E582E15E5527F1D9E2EECB236 SALIDA 62 CEC155B76AC5FFDA4CF4F9CA91E49A7A SALIDA 63 D5AC DD2A38CDC6862C29AD SALIDA FE19F7CE BE70E8204 SALIDA DF740C9781C388E94BB861CEB54F6 SALIDA BD60367F A074 SALIDA 67 E4DFA42671A02E57EF173B85C0EA9F2B SALIDA 68 ED11B89E D854700A78B9E SALIDA EAA51EA47AF33895F2B90B3B75 SALIDA 70 6BC6D616A5D7D0284A5910AB SALIDA 71 D2A920ECFE919D354B5F49EAE9719C98 SALIDA 72 3A061B17F6A92885EFBD B373D SALIDA 73 FADEEC16E33EA2F D157E20D8F SALIDA 74 5CDEFEDE59601AA3C3CDA36FA6B1FA13 SALIDA B D92EBBA7EE F8 SALIDA 76 9A9CF E FA SALIDA 77 2CDDD634C846BA66BB46CBFEA4A674F9 SALIDA 78 D28BAE029393C3E7E26E9FAFBBB4B98F SALIDA 79 EC27529B1BEE0A9AB6A0D73EBC82E9B7 SALIDA 80 3CB25C09472AFF6EE7E2B47CCD7CCB17 SALIDA 81 DEE33103A D725E44CA38F8FE5 SALIDA 82 27F9BCD1AAC64BFFC11E C1A69 SALIDA 83 5DF534FFAD4ED0749A9988E9849D0021 SALIDA 84 A48BEE75DB04FB60CA2B80F752A8421B SALIDA C8CF70BC86EE5CE03678CB7AF45F9 SALIDA 86 3C19AC0F8A3A3862CE E166B SALIDA 87 C5E355B796A57421D59CA6BE82E73BCA SALIDA 88 D ABFB05A69D15B6E386E2 SALIDA 89 24B36559EA3A9B9B958FE6DA3E5B8D85 SALIDA 90 20FD4FEAA0E8BF0CCE7861D74EF4CB72 SALIDA E20D B9EC314C501570A11D SALIDA 92 87A29D61B7C604D238FE73045A7EFD57 SALIDA 93 2C3164C1CC7D BDC0FAA362C52 SALIDA FE5E8A05A2ED594F6E4400EEE10B3 SALIDA 95 Miguel García Ocón 187 Anexos
194 E4663DF19B9A21A5A284C2BD7F SALIDA 96 21B88714CFB4E2A933BD281A2C4743FD SALIDA 97 CBFC3980D704FD0FC54378AB84E17870 SALIDA 98 BC5144BAA48BDEB8B63E22E03DA418EF SALIDA 99 5A1DBAEF1EE2984B8395DA3BDFFA3CCC SALIDA Fichero 2: Entradas Encriptación con clave de 192 bits A0B0C0D0F A1B1C CLAVE 1 2D33EEF2C0430A8A9EBF45E809C40BB6 DATOS 1 1E1F A2B2D2E2F A CLAVE 2 6AA375D1FA155A61FB72353E0A5A8756 DATOS 2 3C3D3E3F B4C4D4E CLAVE 3 BC B9490DCB8ED60EB26758ED4 DATOS 3 5A5B5C5D5F A6B6C6E6F CLAVE 4 AA214402B46CFFB9F761EC11263A311E DATOS A7B7D7E7F A8C8D8E8F CLAVE 5 02AEA86E572EEAB66B2C3AF5E9A46FD6 DATOS B9C9D9EA0A1A2A3A5A6A7A8AAABACADAFB0B1B2 CLAVE 6 E2AEF6ACC33B965C4FA1F91C75FF6F36 DATOS 6 B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6C8C9CACBCDCECFD0 CLAVE DF B DD9499F91D DATOS 7 D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE 8 49A44239C748FEB456F59C276A5658DF DATOS 8 F0F1F2F3F5F6F7F8FAFBFCFDFE A0B0C CLAVE F6E9D04525BDEDB2733B6A6BE37 DATOS 9 0E0F A1B1D1E1F A CLAVE F8DFC729C97F5480B950BC9666B0 DATOS 10 2C2D2E2F B3C3D3E CLAVE C8CE063F3234CF DBD71 DATOS 11 4A4B4C4D4F A5B5C5E5F CLAVE 12 FEC1C04F529BBD17D8CECFCC4718B17F DATOS A6B6D6E6F A7C7D7E7F CLAVE 13 32DF99B431ED5DC5ACF8CAF6DC6CE475 DATOS B8C8D8E A9B9C9D9FA0A1A2 CLAVE 14 7FDC2B746F3F B83710D1F82 DATOS 14 A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6B8B9BABBBDBEBFC0 CLAVE 15 8FBA1510A3C5B87E2EAA3F7A91455CA2 DATOS 15 C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE CLAVE 16 2C9B468B1C2EED92578D41B0716B223B DATOS 16 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFC CLAVE 17 0A2BBF0EFC6BC0034F8A03433FCA1B1A DATOS 17 FEFE A0B0D0E0F A CLAVE E1F31F4104D387222E B DATOS 18 1C1D1E1F B2C2D2E CLAVE 19 C527D25A49F08A5228D338642AE65137 DATOS 19 3A3B3C3D3F A4B4C4E4F CLAVE 20 3B49FC081432F5890D0E3D87E884A69E DATOS A5B5D5E5F A6C6D6E6F CLAVE 21 D173F9ED1E57597E166931DF2754A083 DATOS B7C7D7E A8B8C8D8F CLAVE 22 8C2B7CAFA5AFE7F13562DAEAE1ADEDE0 DATOS A9B9C9E9FA0A1A3A4A5A6A8A9AAABADAEAFB0 CLAVE 23 AAF4EC8C1A815AEB826CAB C DATOS 23 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBEC CLAVE 24 40BE8C5D9108E663F38F1A ECF DATOS 24 2A2B2C2D2F A3B3C3E3F CLAVE 25 0C8AD9BC32D43E AA4CFBE351 DATOS A4B4D4E4F A5C5D5E5F CLAVE B1D5F87D63357C8DC7EBBAEBBFEE DATOS A8B8C8E8F A9B9D9E9FA0 CLAVE 27 E62734D1AE3378C4549E939E6F DATOS 27 A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE CLAVE 28 5A752CFF2A176DB1A1DE77F2D2CDEE41 DATOS 28 C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDC CLAVE 29 A9C8C3A4EABEDC80C64730DDD018CD88 DATOS 29 1A1B1C1D1F A2B2C2E2F CLAVE 30 EE9B3DBBDB D305999A DATOS A3B3D3E3F A4C4D4E4F CLAVE 31 A7FA8C3586B8EBDE7568EAD6F634A879 DATOS A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE CLAVE 32 37E0F4A87F127D45AC936FE7AD88C10A DATOS B4C4D4E A5B5C5D5F CLAVE 33 3F77D8B5D92BAC148E4E46F697A535C5 DATOS A8C8D8E8F B9C9D9E CLAVE 34 D25EBB686C40F7E2C4DA CA DATOS 34 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBC CLAVE 35 Miguel García Ocón 188 Anexos
195 4F1C769D1E5B0552C7ECA84DEA26A549 DATOS 35 BEBFC0C1C3C4C5C6C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA CLAVE E2F882D7584D0FAFC54372B6633A DATOS 36 DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEEF0F1F2F3F5F6F7F8 CLAVE 37 87D7A336CB476F177CD2A51AF2A62CDF DATOS 37 FAFBFCFDFE A0B0C0E0F CLAVE 38 03B1FEAC668C4E485C1065DFC22B44EE DATOS A1B1D1E1F A2C2D2E2F CLAVE 39 BDA15E66819FA72D653A6866AA DATOS B3C3D3E A4B4C4D4F CLAVE 40 4D0C7A0D2505B80BF8B62CEB12467F0A DATOS A5B5C5E5F A6B6D6E6F70 CLAVE D34C9429B B94E5F DATOS A7C7D7E7F B8C8D8E CLAVE C3E6BF00656B088A17E5FF0E7F60A DATOS A9B9C9D9FA0A1A2A4A5A6A7A9AAABAC CLAVE ED0CDC0D2A2BC8C466D05EF9D2891 DATOS 43 AEAFB0B1B3B4B5B6B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CA CLAVE E78CC56C1693E64B2A6660C7B6 DATOS 44 CCCDCECFD1D2D3D4D6D7D8D9DBDCDDDEE0E1E2E3E5E6E7E8 CLAVE 45 7A48D6B7B52B29392AA2072A32B66160 DATOS 45 EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE CLAVE E64C8C5314D10F8D7A11C8618D DATOS A0B0D0E0F A1C1D1E1F CLAVE 47 B561F2CA2D6E65A4A98341F3ED9FF533 DATOS B2C2D2E A3B3C3D3F CLAVE 48 DF769380D212792D026F049E2E3E48EF DATOS A4B4C4E4F A5B5D5E5F60 CLAVE 49 79F374BC445BDABF8FCCB8843D6054C6 DATOS A6C6D6E6F B7C7D7E CLAVE 50 4E02F1242FA56B05C68DBAE8FE44C9D6 DATOS A8B8C8D8F A9B9C CLAVE 51 CF73C93CBFF57AC635A6F4AD2A4A1545 DATOS 51 9E9FA0A1A3A4A5A6A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA CLAVE E B C625 DATOS 52 BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCED0D1D2D3D5D6D7D8 CLAVE B723A022C F836A4207 DATOS 53 DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE 54 F84D9A5561B0608B1160DEE000C41BA8 DATOS 54 F8F9FAFBFDFEFE A0C0D0E0F CLAVE 55 C23192A0418E30A19B45AE3E3625BF22 DATOS B1C1D1E A2B2C2D2F CLAVE 56 B84E0690B28B AD82A15E501A7 DATOS A3B3C3E3F A4B4D4E4F50 CLAVE 57 ACEF5E5C108876C4F06269F865B8F0B0 DATOS A5C5D5E5F B6C6D6E CLAVE 58 0F1B3603E0F5DDEA A5E064 DATOS A7B7C7D7F A8B8C CLAVE 59 FBB D42B58C6D88CD3C1809E3 DATOS 59 8E8F A9B9D9E9FA0A2A3A4A5A7A8A9AA CLAVE 60 4BEF736DF150259DAE0C91354E8A5F92 DATOS 60 ACADAEAFB1B2B3B4B6B7B8B9BBBCBDBEC0C1C2C3C5C6C7C8 CLAVE 61 7D2D EF13D3C3FC93C128F4C7 DATOS 61 CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6 CLAVE 62 E9C1BA2DF415657A256EDB FD DATOS 62 E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF CLAVE 63 E23EE277B0AA0A1DFB81F7527C3514F1 DATOS B0C0D0E A1B1C1D1F CLAVE 64 3E7445B0B63CAAF75E4A911E12106B4C DATOS A2B2C2E2F A3B3D3E3F40 CLAVE A5BE6E1E0E3 DATOS A4C4D4E4F B5C5D5E CLAVE E7F7CE9E8EBEA696A6B6C DATOS A6B6C6D6F A7B7C CLAVE 67 DFDEDDDC C9C8CFCEF1EEEFEC DATOS 67 7E7F A8B8D8E8F A CLAVE 68 FFFE F5E5D5C B DATOS 68 9C9D9E9FA1A2A3A4A6A7A8A9ABACADAEB0B1B2B3B5B6B7B8 CLAVE 69 E0E1E2E F9E E2F2C DATOS 69 BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6 CLAVE EFEEED3B3A39384E4D4C4B DATOS 70 D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4 CLAVE 71 ECEDEEEF EA1A0A7A6A3ACADAE DATOS 71 F6F7F8F9FBFCFDFE A0B0C0D0F CLAVE C3D E9E8EBEACECDCCC3 DATOS A1B1C1E1F A2B2D2E2F30 CLAVE A8BB4B DATOS A3C3D3E3F B4C4D4E CLAVE F5FAFBF81F1E1D1C7C7F7E79 DATOS A5B5C5D5F A6B6C CLAVE 75 BEBFBCBD191A1B14CFCEC9C8546B6A69 DATOS 75 6E6F A7B7D7E7F A CLAVE 76 2C2D E8F8CBBBAB9B CE DATOS 76 Miguel García Ocón 189 Anexos
196 8C8D8E8F B9C9D9EA0A1A2A3A5A6A7A8 CLAVE BFBCBDBA FDFAFBF8 DATOS 77 AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE B B08090E DATOS 78 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4 CLAVE 79 BEBFBCBD B E DATOS 79 E6E7E8E9EBECEDEEF0F1F2F3F5F6F7F8FAFBFCFDFE CLAVE 80 8B8A D0D3D2DD DATOS A0B0C0E0F A1B1D1E1F20 CLAVE F1F2F3F4F8F9E6E DATOS A2C2D2E2F B3C3D3E CLAVE 82 A4A5A2A34F404142B4B5B6B DATOS A4B4C4D4F A5B5C CLAVE E1E2E3EC C9D9E DATOS 83 5E5F A6B6D6E6F A CLAVE D3C DEDFDCDDFFFCFDE2 DATOS 84 7C7D7E7F B8C8D8E CLAVE F1F2F3F4CECFC0C1DBDCDDDE DATOS 85 9A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE D4C4F1D1C1F1E DATOS 86 B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4 CLAVE 87 E6E7E4E5A8ABAAD F9E9D DATOS 87 D6D7D8D9DBDCDDDEE0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2 CLAVE F7E D7C7F7E C DATOS 88 F4F5F6F7F9FAFBFCFEFE A0B0D0E0F10 CLAVE AAAA DATOS A1C1D1E1F B2C2D2E CLAVE 90 9E9F9899ABA4A5A6CFCECDCC2B28292E DATOS A3B3C3D3F A4B4C CLAVE 91 C7C6C5C4D1D2D3DC A DATOS 91 4E4F A5B5D5E5F A CLAVE 92 F6F7E8E9E0E7E6E51D1C1F1E5B DATOS 92 6C6D6E6F B7C7D7E CLAVE 93 BCBDBEBF5D5E5F F4F3F2F1 DATOS 93 8A8B8C8D8F A9B9C9E9FA0A1A3A4A5A6 CLAVE B0AFAEAD9B9A99989B98999E DATOS 94 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4 CLAVE B6A F0F0E0908B4BBBAB9 DATOS 95 C6C7C8C9CBCCCDCED0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2 CLAVE 96 C7C6C9C8D8DFDEDD5A5B5859BEBDBCB3 DATOS 96 E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6F8F9FAFBFDFEFE00 CLAVE 97 DEDFDCDD787B7A7DFFFEE1E0B2B5B4B7 DATOS A0C0D0E0F B1C1D1E CLAVE 98 4D4C4B4A606F6E6DD0D1D2D3FBF8F9FE DATOS A2B2C2D2F A3B3C CLAVE 99 B7B6B5B4D7D4D5DAE5E4E3E2E1FEFFFC DATOS 99 3E3F A4B4D4E4F A CLAVE 100 CECFB0B1F7F0F1F2AEAFACAD3E3D3C23 DATOS Fichero 2: Salidas Encriptación con clave de 192 bits DFF4945E0336DF4C1C56BC700EFF837F SALIDA 1 B6FDDEF E347D5D2DC196D1252 SALIDA 2 D23684E3D963B3AFCF1A114ACA90CBD6 SALIDA 3 3A7AC027753E2A18C2CEAB9E17C11FD0 SALIDA 4 8F6786BD007528BA26603C1601CDD0D8 SALIDA 5 D17D073B01E71502E28B47AB551168B3 SALIDA 6 A469DA517119FAB95876F41D06D40FFA SALIDA AA3B695C11F5C0B6AD26D3D862FF SALIDA 8 70F9E67F9F8DF DC6E69364 SALIDA 9 D154DCAFAD8B207FA5CBC95E9996B559 SALIDA D541E8B46FA339C805A7AEB9E5DA SALIDA C738F3EFE186E1A127A0C4D3C61 SALIDA AA043986EB23693E23BEF8F3438 SALIDA 13 DF0B BADE848DEE3B4B85AA44B SALIDA D5FDED76582E4143C C SALIDA 15 C9B8D D3DFBCDD09B954ED4E92 SALIDA 16 5DCCD5D6EB7C1B42ACB008201DF707A0 SALIDA 17 A2A91682FFEB6ED1D E6F9 SALIDA 18 E45D185B D A68435D SALIDA 19 45E060DAE5901CDA8089E10D4F4C246B SALIDA 20 F6951AFACC0079A369C71FDCFF45DF50 SALIDA 21 9E95E00F351D5B3AC3D0E22E626DDAD6 SALIDA 22 9CB566FF26D92DAD083B51FDC18C173C SALIDA 23 C9C A9B228EB9A974A010B4FB SALIDA 24 D8E26AA D5137F1C1E1386E88 SALIDA 25 C0E024CCD68FF5FFA4D139C355A77C55 SALIDA 26 Miguel García Ocón 190 Anexos
197 0B18B3D16F491619DA338640DF391D43 SALIDA 27 DBE09AC8F66027BF20CB6E434F252EFC SALIDA 28 6D04E5E43C5B9CBE05FEB9606B6480FE SALIDA 29 DD1D6553B96BE526D9FEE0FBD SALIDA CA7E3F979FD015B0DD4690E16D2A SALIDA DE10EDCC8A67C3B110B8B8CC6 SALIDA 32 93B30B750516B2D18808D710C2EE84EF SALIDA 33 16F65FA47BE3CB5E6DFE7C6C37016C0E SALIDA 34 F D5391E E5ACB SALIDA CD223366D E6AF2643D SALIDA 36 1EA D1B806A1FD SALIDA 37 3B155D927355D737C6BE9DDA60136E2E SALIDA F7B66DAA91B6333DBD B3 SALIDA 39 E4F9A4AB52CED8134C649BF319EBCC90 SALIDA 40 B9DDD29AC6128A6CAB121E34A4C62B36 SALIDA 41 6FCDDAD898F2CE4EFF51294F5EAAF5C9 SALIDA 42 C9A6FE2BF BEA6F7FC417BD7E3 SALIDA 43 6A D8609D60F298A9C F SALIDA 44 2CB25C005E26EFEA44336C4C97A4240B SALIDA AB8680DDD73D09A0E4C7DCC8AA SALIDA 46 D5AF94DE93487D1F3A8C577CB84A66A4 SALIDA 47 84BDAC569CAE F267CC8376E90 SALIDA 48 F7401DDA5AD5AB712B7EB5D10C6F99B6 SALIDA 49 1C9D EBD4C3B5B7E37BF119F0 SALIDA 50 ACA572D65FB2764CFFD4A6ECA090EA0D SALIDA 51 36D9C627B8C2A886A10CCB36EAE3DFBB SALIDA EDBF5981E143A81D646E597A4A568 SALIDA 53 8DB44D538DC20CC2F40F3067FD298E60 SALIDA EB53BC71E6AC4B82972BDCD5AAFB3 SALIDA 55 6C42A81EDCBC9517CCD89C30C95597B4 SALIDA 56 DA389847AD06DF19D76EE119C71E1DD3 SALIDA 57 E018FDAE13D3118F9A5D1A647A3F0462 SALIDA 58 2AA65DB D FABDFAD20 SALIDA E9A4F780F1CEB44B07ECF4FDB SALIDA 60 C8273FDC8F3A9F72E B62397C SALIDA 61 66C8427DCD733AAF7B3470CB7D976E3F SALIDA CB17F1424D4F8DA91E6F80C1D0 SALIDA D0AD AE085266A88770DC SALIDA 64 38A2B5A974B0575C5D733917FB0D4570 SALIDA 65 E21D401EBC60DE20D6C486E4F39A588B SALIDA 66 E51D5F88C670B079C0CA1F0C2C4405A2 SALIDA A94788A642FB3D1B823C C8 SALIDA 68 B80C391C5C41A4C3B30C68E0E3D7550F SALIDA 69 B77C4754FC64EB9A1154A9AF0BB1F21C SALIDA 70 FB554DE520D159A06BF219FC7F34A02F SALIDA 71 A89FBA152D76B4927BEED160DDB76C57 SALIDA EAB4A98D2E8473B3F3D C SALIDA 73 4E8F068BD7EDE52A639036EC86C33568 SALIDA 74 F0193C4D7AFF1791EE4C07EB4A1824FC SALIDA 75 AC8686EECA9BA761AFE82D67B928C33F SALIDA 76 5FAF8573E33B145B6A369CD3606AB2C9 SALIDA E9944AB1C16B844ECAD0DF2E7DA SALIDA 78 D017FECD91148ABA37F6F3068AA67D8A SALIDA EF2F021A73CBA2794B616078A8500 SALIDA 80 5D1EF20DCED6BCBC12131AC7C54788AA SALIDA 81 B3C8CF961FAF9EA05FDDE6D1E4D8F663 SALIDA C C7FAC E459F SALIDA 83 A5AE12EADE9A87268D898BFC8FC0252A SALIDA F7CF2E877A4819F5244A360DCEA9 SALIDA 85 3D9E9635AFCC3E291CC7AB3F27D1C99A SALIDA 86 9D80FEEBF87510E2B8FB98BB54FD788C SALIDA 87 5F9D1A082A1A37985F174002ECA01309 SALIDA 88 A390EBB1D A44B E4 SALIDA FE918981C3195BB6C4BCB46B74E29 SALIDA F7BF2D17FB1EB15B673D747 SALIDA 91 C32A956DCFC875C2AC7C7CC8B8CC26E1 SALIDA E2EBFA9B820CF8424E9B9B6EB51 SALIDA FDA3A5BBD54C6D3C685816BD4EAD8 SALIDA 94 D4E DFAF18B152469BC5AC2F SALIDA 95 9D0635B9D33B6CDBD71F5D246EA17CC8 SALIDA 96 10ABAD1BD9BAE A2CC1A SALIDA E16544E355FF65A793C39C9A8 SALIDA 98 CC735582E68072C163CD9DDF46B91279 SALIDA 99 C5C68B9AEEB7F878DF578EFA562F9574 SALIDA 100 Miguel García Ocón 191 Anexos
198 Fichero 3: Entradas Encriptación con clave de 256 bits A0B0C0D0F A1B1C1E1F CLAVE 1 834EADFCCAC7E1B30664B1ABA44815AB DATOS A2B2D2E2F A3C3D3E3F B4C4D4E CLAVE 2 D9DC4DBA3021B05D67C0518F72B62BF1 DATOS A5B5C5D5F A6B6C6E6F CLAVE 3 A291D86301A4A739F AA3C604C DATOS A7B7D7E7F A8C8D8E8F B9C9D9E CLAVE B DE4DF79788A9F83E9390 DATOS 4 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE 5 EE9932B D5A83EF B6F6 DATOS 5 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE 6 E6248F55C5FDCBCA9CBBB01C88A2EA77 DATOS 6 F0F1F2F3F5F6F7F8FAFBFCFDFE A0B0C0E0F CLAVE 7 B8358E41B9DFF65FD461D55A DATOS A1B1D1E1F A2C2D2E2F B3C3D3E CLAVE 8 F0E2D72260AF58E21E015AB3A4C0D906 DATOS A4B4C4D4F A5B5C5E5F CLAVE 9 475B8B823CE8893DB3C44A9F2A379FF7 DATOS A6B6D6E6F A7C7D7E7F B8C8D8E CLAVE F F5F3076CF80412F DATOS A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE 11 08D1D2BC750AF553365D35E75AFACEAA DATOS 11 B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE CLAVE F47CC3EFCECA5F9A A1 DATOS 12 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE CLAVE 13 E51AA0B135DBA566939C3B6359A980C5 DATOS A0B0D0E0F A1C1D1E1F B2C2D2E CLAVE A007FC76A459F98BAF917FEDF9521 DATOS A3B3C3D3F A4B4C4E4F CLAVE C1723FBCF6C026D7D00B DATOS A5B5D5E5F A6C6D6E6F B7C7D7E CLAVE 16 D7C544DE91D55CFCDE1F84CA382200CE DATOS A8B8C8D8F A9B9C9E9FA0A1A3A4A5A6 CLAVE 17 FED3C9A161B9B5B2BD611B41DC9DA357 DATOS 17 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE CLAVE 18 4F634CDC F30B635832CF82 DATOS 18 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE CE98DB0DFB36734D9F B4E6 DATOS A7B7C7D7F A8B8C8E8F CLAVE 20 4EA6DFABA2D8A02FFDFFA DATOS A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE CLAVE 21 5AE094F54AF58E6E3CDBF976DAC6D9EF DATOS 21 C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6 CLAVE D8E8E0F29926DBE5122E66354FDBE DATOS 22 E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF B0C0D0E CLAVE 23 3F0418F888CDF29A982BF6B75410D6A9 DATOS A1B1C1D1F A2B2C2E2F CLAVE 24 E4A3E7CB12CDD56AA4A75197A DATOS A3B3D3E3F A4C4D4E4F B5C5D5E CLAVE AAC1EC1A160F44C4EBF3F26 DATOS A6B6C6D6F A7B7C7E7F CLAVE 26 D21E439FF749AC8F18D6D4B105E03895 DATOS A8B8D8E8F A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE CLAVE 27 D9F6FF44646C4725BD4C0103FF5552A7 DATOS 27 B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6 CLAVE 28 0B1256C2A00B976250CFC5B0C37ED382 DATOS 28 D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE CLAVE 29 B056447FFC6DC4523A36CC2E972A3A79 DATOS A0B0C0D0F A1B1C1E1F CLAVE 30 5E25CA78F0DE D38DA3FE4456 DATOS A2B2D2E2F A3C3D3E3F B4C4D4E CLAVE 31 A5BCF4728FA5EAAD8567C0DC24675F83 DATOS A5B5C5D5F A6B6C6E6F CLAVE E59F97ED84646B78B2CA022E9CA43 DATOS A7B7D7E7F A8C8D8E8F B9C9D9E CLAVE BEEC58F4775C7A7F5D D7 DATOS 33 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE FFCA461C67C8CBC78CD59F4756 DATOS 34 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE 35 FD7AD8D73B9B0F8CC F503D65 DATOS 35 F0F1F2F3F5F6F7F8FAFBFCFDFE A0B0C0E0F CLAVE DE52C6CBF8AF954CD65830BCD56 DATOS A1B1D1E1F A2C2D2E2F B3C3D3E CLAVE 37 F17C4FFE48E44C61BD891E257E DATOS A4B4C4D4F A5B5C5E5F CLAVE 38 9A5B4A402A3E8A59BE6BF5CD8154F029 DATOS A6B6D6E6F A7C7D7E7F B8C8D8E CLAVE 39 79BD40B91A7E07DC939D441782AE6B17 DATOS A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE 40 Miguel García Ocón 192 Anexos
199 D8CEAAF8976E5FBE1012D8C84F DATOS 40 B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE CLAVE E2751E2E388B083DA23DD6AC3FBE DATOS 41 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE CLAVE 42 8B7CFBE37DE7DCA C5816 DATOS A0B0D0E0F A1C1D1E1F B2C2D2E CLAVE 43 F23F033C0EEBF8EC FD58CE68 DATOS A3B3C3D3F A4B4C4E4F CLAVE 44 59EB34F6C8BDBACC5FC6AD73A59A1301 DATOS A5B5D5E5F A6C6D6E6F B7C7D7E CLAVE 45 DCDE8B6BD5CF7CC22D9505E3CE81261A DATOS A8B8C8D8F A9B9C9E9FA0A1A3A4A5A6 CLAVE 46 E33CF7E524FED781E7042FF9F4B35DC7 DATOS 46 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE CLAVE C8FACDF D164DF6D064C DATOS 47 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE 48 77B1CE386B551B995F2F2A1DA994EEF8 DATOS 48 F8F9FAFBFDFEFE A0C0D0E0F B1C1D1E CLAVE 49 F083388B013679EFCF0BB9B15D52AE5C DATOS A2B2C2D2F A3B3C3E3F CLAVE 50 C5009E0DAB55DB0ABDB636F C8 DATOS A4B4D4E4F A5C5D5E5F B6C6D6E CLAVE E26CD532D8514D3683F00F1B9 DATOS A7B7C7D7F A8B8C8E8F CLAVE 52 46CDDCD73D1EB53E675CA012870A92A3 DATOS A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE CLAVE 53 A9FB44062BB07FE130A8E8299EACB1AB DATOS 53 C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6 CLAVE 54 2B6FF8D7A5CC3A28A22D5A6F221AF26B DATOS 54 E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF B0C0D0E CLAVE 55 1A9527C29B8ADD4B0E3E656DBB2AF8B4 DATOS A1B1C1D1F A2B2C2E2F CLAVE 56 7F99CF2C75244DF015EB4B0C1050AEAE DATOS A3B3D3E3F A4C4D4E4F B5C5D5E CLAVE 57 E84FF85B0D C C4ED DATOS A6B6C6D6F A7B7C7E7F CLAVE 58 89AFD40F D5399B12404F6DB4 DATOS A8B8D8E8F A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE CLAVE 59 A09EF32DBC5119A35AB7FA38656F0329 DATOS 59 B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6 CLAVE F068C376C7829B93E696E716 DATOS 60 D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE CLAVE 61 A34F0CAE726CCE41DD498747D891B967 DATOS A0B0C0D0F A1B1C1E1F CLAVE F59496C7388EE2D2B1A27B DATOS A2B2D2E2F A3C3D3E3F B4C4D4E CLAVE 63 CB090C593EF7720BD95908FB93B49DF4 DATOS A5B5C5D5F A6B6C6E6F CLAVE 64 A0AC75CD2F1923D460FC4D457AD95BAF DATOS A7B7D7E7F A8C8D8E8F B9C9D9E CLAVE 65 2A2B E8E9EEEF525D5C5F DATOS 65 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE E0F0E A DATOS 66 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE D8E8F DATOS 67 F0F1F2F3F5F6F7F8FAFBFCFDFE A0B0C0E0F CLAVE B2D2C2B2A05FAFBF9 DATOS A1B1D1E1F A2C2D2E2F B3C3D3E CLAVE FEFDFCC31B1A1D1CA5AAABA8 DATOS A4B4C4D4F A5B5C5E5F CLAVE 70 DBDAD9D86A696867B5B4B3B2C8D7D6D5 DATOS A6B6D6E6F A7C7D7E7F B8C8D8E CLAVE 71 5C5D5E5FE3E0E1FE C3D3E DATOS A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6 CLAVE B B6A69 DATOS 72 B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE CLAVE 73 ECEDEEEFC6C5C4BB F5FAFBF8 DATOS 73 E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE CLAVE AC9C8CFCED2CDCCCF DATOS A0B0D0E0F A1C1D1E1F B2C2D2E CLAVE 75 E6E7E4E C C DATOS A3B3C3D3F A4B4C4E4F CLAVE CFCCCDC2F9F8FFFE710E0F0C DATOS A5B5D5E5F A6C6D6E6F B7C7D7E CLAVE EC3C2C5C4010E0F0C DATOS A8B8C8D8F A9B9C9E9FA0A1A3A4A5A6 CLAVE 78 A8A9AAAB5C5F5E51AEAFA8A93D DATOS 78 A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE CLAVE 79 DEDFDCDDF6F5F4EB FEF1F0F3 DATOS 79 D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6 CLAVE 80 BDBCBFBE5E5D5C530B0A0D0CFAC5C4C7 DATOS 80 F8F9FAFBFDFEFE A0C0D0E0F B1C1D1E CLAVE 81 8A8B F8F4F5F2F3636C6D6E DATOS 81 Miguel García Ocón 193 Anexos
200 A2B2C2D2F A3B3C3E3F CLAVE 82 A6A7A4A54D4E4F40B2B3B4B DATOS A4B4D4E4F A5C5D5E5F B6C6D6E CLAVE 83 9C9D9E9FE9EAEBF40E0F08099B DATOS A7B7C7D7F A8B8C8E8F CLAVE 84 2D2C2F2E DCCCDCACBED DATOS A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE CLAVE 85 F4F5F6F7EDEEEFD0EAEBECEDF7F8F9FA DATOS 85 C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6 CLAVE 86 3D3C3F3E282B2A A0B08 DATOS 86 E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF B0C0D0E CLAVE 87 B6B7B4B5F8FBFAE5B4B5B2B3A0AFAEAD DATOS A1B1C1D1F A2B2C2E2F CLAVE 88 B7B6B5B4989B9A BA4A5A6 DATOS A3B3D3E3F A4C4D4E4F B5C5D5E CLAVE 89 A8A9AAABE5E6E798E9E8EFEE A DATOS A6B6C6D6F A7B7C7E7F CLAVE 90 ECEDEEEFD9DADBD4B9B8BFBE657A7B78 DATOS A8B8D8E8F A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE CLAVE 91 7F7E7D7C696A6B74CACBCCCD929D9C9F DATOS 91 B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6 CLAVE A0B BFFFEF9F8B9C6C7C4 DATOS 92 D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE CLAVE A0BF1F2F3CCFCFDFAFB DATOS A0B0C0D0F A1B1C1E1F CLAVE 94 CACBC8C93A D DATOS A2B2D2E2F A3C3D3E3F B4C4D4E CLAVE 95 E9E8EBEA F8F8E B3A39 DATOS A5B5C5D5F A6B6C6E6F CLAVE BD0D1D6D7340B0A09 DATOS A7B7D7E7F A8C8D8E8F B9C9D9E CLAVE ECEFEE C6C9C8CB DATOS 97 A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6 CLAVE 98 EFEEEDECC2C1C0CF A5B58 DATOS 98 C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE CLAVE 99 5F5E5D5C3F3C3D221D1C1B1A DATOS 99 F0F1F2F3F5F6F7F8FAFBFCFDFE A0B0C0E0F CLAVE C1C1D1A1B8D DATOS Fichero 3: Salidas Encriptación con clave de 256 bits 1946DABF6A03A2A2C3D0B05080AED6FC SALIDA 1 5ED301D747D3CC715445EBDEC62F2FB4 SALIDA C8F43D13A6BEAB6419FC5935B9D0 SALIDA 3 2A5B56A596680FCC0E05F5E0F151ECAE SALIDA 4 F5D6FF414FD2C D20C37F2B8C4 SALIDA C01F59FFFB5204F19F8482F00B8 SALIDA B4C88A041DDF98144BC8D22E8E7 SALIDA 7 89BD5B73B356AB412AEF9F76CEA2D65C SALIDA C55FF F2FAC2F530 SALIDA 9 07FC76A872843F3F6E0081EE9396D637 SALIDA 10 E38BA8EC2AA741358DCC93E8F141C491 SALIDA 11 D028EE23E4A89075D0B03E868D7D3A42 SALIDA 12 8CD9423DFC459E547155C5D1D522E540 SALIDA E9517EB ACF AE3 SALIDA 14 7C A3991FC0ECDED0AB3E576B0 SALIDA 15 DABCBCC DB51E224FBE87435 SALIDA 16 68D56FAD A4DD27A7448C10F1D SALIDA 17 DA9A D1FFEE24BBF3719A9925 SALIDA 18 5E4BA572F8D23E738DA9B05BA24B8D81 SALIDA 19 A115A2065D667E3F0B883837A6E903F8 SALIDA 20 3E9E90DC33EAC2437D86AD30B137E66E SALIDA 21 01CE82D8FBCDAE824CB3C48E495C3692 SALIDA 22 0C9CFF163CE936FAAF083CFD3DEA3117 SALIDA BA9BD48F2BBA DF504B52 SALIDA 24 9DC503BBF09823AEC8A977A5AD26CCB2 SALIDA 25 9A6DB0C0862E506A9E D7 SALIDA BF E1AB6365FC6A6860C SALIDA EBC02F4886E6A5A E8CE8A SALIDA 28 07FA265C763779CCE224C7BAD671027B SALIDA 29 E8B72B4E8BE243438C9FFF1F0E SALIDA D4F999A0E11ACE1F05E6B22CBCB50 SALIDA 31 45A5E8D4C3ED58403FF08D68A0CC4029 SALIDA DB3D417B6BD4D586BCB7634 SALIDA AD45AC7D30D99195F815D98D2AE SALIDA 34 BB07A23F0B61014B197620C185E2CD75 SALIDA 35 5BC0B C854423AFF0751FE343B SALIDA 36 Miguel García Ocón 194 Anexos
201 7541A78F96738E6417D2A24BD2BECA40 SALIDA 37 B0A E464591F1546C5B9E SALIDA C06D8A355EEEE214FCEA14B4E0EEF SALIDA D15CBACE63227D06DB6BEEBB SALIDA 40 41B97FB20E427A9FDBBB358D D SALIDA 41 C1940F703D845F957652C2D64ABD7ADF SALIDA 42 D2D44FCDAE DB297EFCF21B SALIDA 43 EA8196B79DBE167B6AA9896E287EED2B SALIDA 44 D6B0B0C4BA6C7DBE5ED467A1E3F06C2D SALIDA 45 EC51EB295250C22C2FB01816FB72BCAE SALIDA 46 ADED6630A07CE9C7408A155D3BD0D36F SALIDA C9245B9937F32F5D1C82319F0363A SALIDA 48 AAD5AD50C6262AAEC30541A1B7B5B19C SALIDA 49 7D34B EC625BD6875AC18C0D SALIDA 50 7EF F83862F5D780E88F02B41 SALIDA 51 C377C AF2C9C93A8E70DF6 SALIDA 52 1DBDB3FFDC052DACC ABC6DE5 SALIDA 53 69A6EAB D0BF483C91C0963C7 SALIDA F41DC217C80446E1D514BD6AB197 SALIDA 55 9DFD A637C01343C58E011A03 SALIDA 56 ACF4328AE78F34B9FA9B459747CC2658 SALIDA 57 B0479AEA12BAC4FE2384CF C6 SALIDA 58 9DD52789EFE3FFB99F33B3DA A SALIDA 59 ABBB755E4621EF8F1214C19F649FB9FD SALIDA 60 DA27FB BCE2BED0E7354F380F9 SALIDA 61 C59A0663F F6E BDC5EF SALIDA 62 ED60B264B5213E831607A99C0CE5E57E SALIDA 63 E F3EB77B8C ED SALIDA CC7D21D6A E52D188EF0C SALIDA 65 0DFA5B02ABB18E5A D6D4F8E SALIDA C0EECEFE31D673395FB46FB99 SALIDA 67 73C679F7D5AEF2745C9737BB4C47FB36 SALIDA 68 B192BD472A4D2EAFB786E SALIDA 69 0EC327F6C8A2B147598CA3FDE61DC6A4 SALIDA 70 FC418EB3C41B859B38D4B6F SALIDA E5AC282B1C981EA64B609F3A154 SALIDA 72 5E6E08646D BB43C2D78A9703 SALIDA 73 FAEB3D5DE652CD3447DCEB343F30394A SALIDA 74 A8E F6993EF80D05C1C7B2CF0 SALIDA 75 8CED86677E6E00A1A1B15968F2D3CCE6 SALIDA 76 9FC7C23858BE03BDEBB84E90DB6786A9 SALIDA 77 B4FBD65B33F70D8CF7F1111AC4649C36 SALIDA 78 C5C32D5ED03C4B53CC8C1BD0EF0DBBF6 SALIDA 79 D1A7F03B773E5C212464B63709C6A891 SALIDA 80 6B7161D AC EA138D028 SALIDA 81 FD47A9F7E366EE7A09BC508B SALIDA 82 00D40B003DC3A0D9310B659B98C7E416 SALIDA 83 EEA4C79DCC8E2BDA691F20AC48BE0717 SALIDA 84 E78F43B11C204403E5751F89D05A2509 SALIDA 85 D0F0E3D1F1244BB979931E38DD1786EF SALIDA E639DC4E1E4DDE7B75B749EA6F765 SALIDA 87 BC032FDD0EFE29503A980A7D07AB46A8 SALIDA 88 0C93AC949C0DA6446EFFB86183B6C910 SALIDA 89 E0D343E14DA75C917B4A5CEC4810D7C2 SALIDA 90 0EAFB B937B626792E619 SALIDA 91 FA1AC6E02D23B106A1FEF18B274A553F SALIDA 92 0DADFE019CD DF33C1A1E9 SALIDA 93 3A0879B414465D9FFBAF86B33A63A1B9 SALIDA FADC76D0BE1805D3BA0B7D914BF SALIDA 95 1B06D6C5D333E CF78E719B4 SALIDA 96 F1F848824C32E9DCDCBF21580F SALIDA 97 1A09050CBD684F784D8E965E0782F28A SALIDA 98 79C2969E7DED2BA7D088F3F SALIDA A658A2F7444C16ACCB669450C7B63 SALIDA Fichero 4: Entradas Desencriptación con clave de 128 bits CLAVE 1 0edd33d3c621e546455bd8ba1418bec8 DATOS 1 c CLAVE 2 4bc3f883450c113c64ca42e1112a9e87 DATOS 2 e CLAVE 3 72a1da770f5d7ac4c9ef94d822affd97 DATOS 3 f CLAVE d634e2b e8e84d03ccd8 DATOS 4 f CLAVE 5 f17e79aed0db7e279e955b5f493875a7 DATOS 5 Miguel García Ocón 195 Anexos
202 fc CLAVE 6 9ed5a75136a940d0963da379db4af26a DATOS 6 fe CLAVE 7 c4295f83465c7755e8fa364bac6a7ea5 DATOS 7 ff CLAVE 8 b1d758256b28fd850ad cf1155 DATOS 8 ff CLAVE 9 42ffb34c743de4d88ca38011c990890b DATOS 9 ffc CLAVE f0ecea8b2172c0c1995f9182c0f3 DATOS 10 ffe CLAVE d7798fac20f82a8823f984d06f7f5 DATOS 11 fff CLAVE 12 a01bf44f2d16be928ca44aaf7b9b106b DATOS 12 fff CLAVE 13 b5f1a33e50d40d103764c76bd4c6b6f8 DATOS 13 fffc CLAVE c9fc0d4817e2d69de878aee8d DATOS 14 fffe CLAVE ecbe4a453269a0dd fb5b5 DATOS 15 ffff CLAVE 16 97d0754fe68f11b9e375d070a608c884 DATOS 16 ffff CLAVE 17 c6a0b3e998d05068a b4 DATOS 17 ffffc CLAVE 18 df556a33438db87bc41b1752c55e5e49 DATOS 18 ffffe CLAVE 19 90fb128d3a1af6e548521bb962bf1f05 DATOS 19 fffff CLAVE e9c1db517c215fadfb7d2a8d691 DATOS 20 fffff CLAVE 21 a6cb761d61f8292d0df393a279ad0380 DATOS 21 fffffc CLAVE 22 12acd89b13cd5f8726e34d44fd DATOS 22 fffffe CLAVE 23 95b1703fc57ba09fe0c3580febdd7ed4 DATOS 23 ffffff CLAVE 24 de11722d893e9f9121c381becc1da59a DATOS 24 ffffff CLAVE 25 6d114ccb27bf391012e8974c546d9bf2 DATOS 25 ffffffc CLAVE 26 5ce37e17eb4646ecfac29b9cc38d9340 DATOS 26 ffffffe CLAVE 27 18c1b6e d0243d8a165cddb DATOS 27 fffffff CLAVE e6a59d1366c74d823562d7e1431 DATOS 28 fffffff CLAVE 29 6c7c64dc84a8bba758ed17eb025a57e3 DATOS 29 fffffffc CLAVE 30 e17bc79f30eaab2fac2cbbe3458d687a DATOS 30 fffffffe CLAVE bc b923f0b01915ce5e7c4 DATOS 31 ffffffff CLAVE 32 9c28524a16a1e1c caa8d13476 DATOS 32 ffffffff CLAVE 33 ed62e fdd6ad f0 DATOS 33 ffffffffc CLAVE 34 5a8688f0b2a2c16224c161658ffd4044 DATOS 34 ffffffffe CLAVE 35 23f710842b9bb9c32f26648c786807ca DATOS 35 fffffffff CLAVE 36 44a98bf11e163f632c47ec6a49683a89 DATOS 36 fffffffff CLAVE 37 0f18aff d9b61848bd50ac5e5 DATOS 37 fffffffffc CLAVE c3e f833b6dda69 DATOS 38 fffffffffe CLAVE ff996947f0c7d1f43c8f3027b9b75 DATOS 39 ffffffffff CLAVE 40 7df4daf4ad29a3615a9b6ece5c99518a DATOS 40 ffffffffff CLAVE 41 c72954a48d0774db0b4971c DATOS 41 ffffffffffc CLAVE 42 1df9b76112dc6531e07d2cfda04411f0 DATOS 42 ffffffffffe CLAVE 43 8e4d8e699119e1fc87545a647fb1d34f DATOS 43 fffffffffff CLAVE 44 e6c4807ae11f36f091c57d9fb68548d1 DATOS 44 fffffffffff CLAVE 45 8ebf73aad49c82007f77a5c1ccec6ab4 DATOS 45 fffffffffffc CLAVE 46 4fb288cc d2c7585ad123fc DATOS 46 fffffffffffe CLAVE 47 Miguel García Ocón 196 Anexos
203 efb9dceb13e2b13fb DATOS 47 ffffffffffff CLAVE e6cb5a88e49634c9ab69eda0430 DATOS 48 ffffffffffff CLAVE 49 b ce9843ea66a81405dd50b345 DATOS 49 ffffffffffffc CLAVE 50 cb2f430383f9084e03a653571e065de6 DATOS 50 ffffffffffffe CLAVE 51 ff4e66c07bae3e79fb7d210847a3b0ba DATOS 51 fffffffffffff CLAVE 52 7b fad59b13c186dd66ce3 DATOS 52 fffffffffffff CLAVE 53 8b527a6aebdaec9eaef8eda2cb7783e5 DATOS 53 fffffffffffffc CLAVE 54 43fdaf53ebbc9880c228617d6a9b548b DATOS 54 fffffffffffffe CLAVE b9744b98f052c46f1c850d0b DATOS 55 ffffffffffffff CLAVE 56 b5ab3013dd1e61df06cbaf34ca2aee78 DATOS 56 ffffffffffffff CLAVE be fdcc73a8cd4fbb10 DATOS 57 ffffffffffffffc CLAVE 58 a35a63f5343ebe9ef8167bcb48ad122e DATOS 58 ffffffffffffffe CLAVE 59 fd8687f0757a210e9fdf181204c30863 DATOS 59 fffffffffffffff CLAVE 60 7a181e84bd5457d26a88fbae96018fb0 DATOS 60 fffffffffffffff CLAVE b9362b6f9b9e1a580e68d494b5 DATOS 61 fffffffffffffffc CLAVE c9dc0b689f03c45867b5faa5c18d1 DATOS 62 fffffffffffffffe CLAVE 63 77a4d96d56dda398b9aabecfc75729fd DATOS 63 ffffffffffffffff CLAVE 64 84be19e053635f09f2665e7bae85b42d DATOS 64 ffffffffffffffff CLAVE 65 32cd aea4aa6137bb2be2b5e DATOS 65 ffffffffffffffffc CLAVE d4a4f38ebb337d10aa84e9171a554 DATOS 66 ffffffffffffffffe CLAVE 67 d9bff7ff454b0ec5a4a2a69566e2cb84 DATOS 67 fffffffffffffffff CLAVE d565ace3f31eb249ba2cc6765d7a DATOS 68 fffffffffffffffff CLAVE 69 f60e91fc3269eecf3231c6e c6 DATOS 69 fffffffffffffffffc CLAVE 70 ab69cfadf51f8e604d9cc37182f6635a DATOS 70 fffffffffffffffffe CLAVE f24a0b6ed56e0d96fcdafb877 DATOS 71 ffffffffffffffffff CLAVE 72 1ea448c2aac954f5d812e9d a DATOS 72 ffffffffffffffffff CLAVE 73 acc5599dd8ac02239a0fef4a36dd1668 DATOS 73 ffffffffffffffffffc CLAVE 74 d bb103828cf7e1473ce DATOS 74 ffffffffffffffffffe CLAVE 75 1b0d b9f180458e4aa6b73982 DATOS 75 fffffffffffffffffff CLAVE 76 96d9b017d302df410a937dcdb8bb6e43 DATOS 76 fffffffffffffffffff CLAVE 77 ef1623cc44313cff440b1594a7e21cc6 DATOS 77 fffffffffffffffffffc CLAVE ca2fa35807b8b0ae4d19e11d7dbd7 DATOS 78 fffffffffffffffffffe CLAVE 79 f2e f9401d54f36e2a23a594 DATOS 79 ffffffffffffffffffff CLAVE 80 ec198a18e10e532403b7e20887c8dd80 DATOS 80 ffffffffffffffffffff CLAVE d50ebd919e4a6949d96ad47e46a80 DATOS 81 ffffffffffffffffffffc CLAVE 82 dbdfb527060e0a71009c7bb0c68f1d44 DATOS 82 ffffffffffffffffffffe CLAVE 83 9cfa1322ea33da2173a024f2ff0d896d DATOS 83 fffffffffffffffffffff CLAVE b1a75b0f3bd958dcd0e29318c521 DATOS 84 fffffffffffffffffffff CLAVE 85 38f67b9e98e4a97b6df030a9fcdd0104 DATOS 85 fffffffffffffffffffffc CLAVE afffb2c880e82b05926d0fc6c448b DATOS 86 fffffffffffffffffffffe CLAVE 87 6a7980ce7b105cf530952d74daaf798c DATOS 87 ffffffffffffffffffffff CLAVE 88 ea3695e1351b9d6858bd958cf513ef6c DATOS 88 Miguel García Ocón 197 Anexos
204 ffffffffffffffffffffff CLAVE 89 6da0490ba0ba0343b935681d2cce5ba1 DATOS 89 ffffffffffffffffffffffc CLAVE 90 f0ea23af c60009ab29ada2f1 DATOS 90 ffffffffffffffffffffffe CLAVE 91 ff13806cf19cc d7c0fcdcd4b DATOS 91 fffffffffffffffffffffff CLAVE af1f4f69bae9d85dd188dcdf0688 DATOS 92 fffffffffffffffffffffff CLAVE 93 36cf44c92d550bfb1ed28ef583ddf5d7 DATOS 93 fffffffffffffffffffffffc CLAVE 94 d06e3195b5376f109d5c4ec6c5d62ced DATOS 94 fffffffffffffffffffffffe CLAVE 95 c440de014d3d b13242a5c36 DATOS 95 ffffffffffffffffffffffff CLAVE 96 f0c5c6ffa5e0bd3a94c88f6b6f7c16b9 DATOS 96 ffffffffffffffffffffffff CLAVE 97 3e40c3901cd7effc22bffc35dee0b4d9 DATOS 97 ffffffffffffffffffffffffc CLAVE 98 b63305c72bedfab97382c406d0c49bc6 DATOS 98 ffffffffffffffffffffffffe CLAVE 99 36bbaab22a6bd4925a99a2b408d2dbae DATOS 99 fffffffffffffffffffffffff CLAVE c5b8fcd0533ab98bc51e27a6ce461 DATOS Fichero 4: Salidas Desencriptación con clave de 128 bits Todas las salidas esperadas tienen valor cero Fichero 5: Entradas Desencriptación con clave de 192 bits CLAVE 1 de885dc87f5a d02cc1e1b42c DATOS 1 c CLAVE 2 132b074e80f2a597bf5febd8ea5da55e DATOS 2 e CLAVE 3 6eccedf8de592c22fb81347b79f2db1f DATOS 3 f CLAVE 4 180b09f267c45145db2f826c2582d35c DATOS 4 f CLAVE 5 edd807ef7652d7eb0e13c8b5e15b3bc0 DATOS 5 fc CLAVE bcf8dd8fd ad24b31b8a4 DATOS 6 fe CLAVE f654343e8f27e12c83a48d24ff81 DATOS 7 ff CLAVE 8 833f71258d53036b02952c76c744f5a1 DATOS 8 ff CLAVE 9 eba83ff200cff9318a92f8691a06b09f DATOS 9 ffc CLAVE 10 ff620ccbe9f3292abdf2176b09f04eba DATOS 10 ffe CLAVE 11 7ababc4b3f516c9aafb35f4140b548f9 DATOS 11 fff CLAVE 12 aa187824d9c4582b ecbde8c57 DATOS 12 fff CLAVE 13 1c0ad553177fd5ea1092c9d626a29dc4 DATOS 13 fffc CLAVE 14 a5dc46c ecaebd680408ec DATOS 14 fffe CLAVE 15 e4f2f2ae23e9b10bacfa ba54 DATOS 15 ffff CLAVE 16 b7d67cf1a1e91e8ff3a57a172c7bf412 DATOS 16 ffff CLAVE be e847d137128ce47b3 DATOS 17 ffffc CLAVE 18 b2f8b409b aad3a7b5a219072a DATOS 18 ffffe CLAVE 19 5e4b7bff0290c78344c54a23b722cd20 DATOS 19 fffff CLAVE 20 Miguel García Ocón 198 Anexos
205 d ce161e9ebf7dd DATOS 20 fffff CLAVE 21 e1af1e7d8bc225ed4dffb771ecbb9e67 DATOS 21 fffffc CLAVE 22 ef d cfd9c11b145a DATOS 22 fffffe CLAVE 23 fb a5d4260c90cbd6da6c3fceb DATOS 23 ffffff CLAVE ee416f9ad1c103eb0cc96751c88e1 DATOS 24 ffffff CLAVE ae2a4637ac0a7890a8fd c9 DATOS 25 ffffffc CLAVE ec8faded0825fb2fa70ab30cbd DATOS 26 ffffffe CLAVE 27 cc8a64b46b5d88bf7f247d4dbaf38f05 DATOS 27 fffffff CLAVE 28 a e2cc81b42d1e DATOS 28 fffffff CLAVE 29 1b41f83b38ce5032c6cd7af98cf62061 DATOS 29 fffffffc CLAVE 30 61a89990cd d5fb0dc988447d4 DATOS 30 fffffffe CLAVE 31 b5accc8ed629edf8c68a539183b1ea82 DATOS 31 ffffffff CLAVE 32 b16fa71f846b81a13f361c43a851f290 DATOS 32 ffffffff CLAVE 33 4fad6efdff5975aee bcd54488 DATOS 33 ffffffffc CLAVE 34 ebfdb05a783d03082dfe5fdd80a00b17 DATOS 34 ffffffffe CLAVE 35 eb81b af6ba5529d3bdd8609 DATOS 35 fffffffff CLAVE 36 0cf4ff4f49c8a0ca060c443499e29313 DATOS 36 fffffffff CLAVE 37 cc4ba8a8e029f8b26d8afff9df133bb6 DATOS 37 fffffffffc CLAVE 38 fefebf64360f38e4e63558f0ffc550c3 DATOS 38 fffffffffe CLAVE 39 12ad98cbf725137d6a8108c2bed99322 DATOS 39 ffffffffff CLAVE 40 6afaa b3e ce1b3f78 DATOS 40 ffffffffff CLAVE 41 2a8ce6747a7e e d9 DATOS 41 ffffffffffc CLAVE e8b8f89ca1e37b6deab40facf1 DATOS 42 ffffffffffe CLAVE 43 c0f797e50418b95fa a9480 DATOS 43 fffffffffff CLAVE 44 a758de37c2ece2a02c73c01fedc9a132 DATOS 44 fffffffffff CLAVE 45 3a9b87ae77bae c66c73adbd DATOS 45 fffffffffffc CLAVE 46 d365ab8df8ffd782e358121a4a4fc541 DATOS 46 fffffffffffe CLAVE 47 c8dcd9e6f75e6c36c8daee0466f0ed74 DATOS 47 ffffffffffff CLAVE 48 c79a637beb1c0304f14014c037e736dd DATOS 48 ffffffffffff CLAVE f0a25e84ac930d996281a5f954dd9 DATOS 49 ffffffffffffc CLAVE 50 42e4074b e8d17ffa92f7fe615 DATOS 50 ffffffffffffe CLAVE 51 4fe2a9d2c c69e3e0398f12963 DATOS 51 fffffffffffff CLAVE 52 b7f29c1e1f62847a15253b28a1e9d712 DATOS 52 fffffffffffff CLAVE 53 36ed5d29b903f31e8983ef8b0a2bf990 DATOS 53 fffffffffffffc CLAVE 54 27b f9d023f9dd7ff3b4aa2 DATOS 54 fffffffffffffe CLAVE 55 94d46e155c1228f61d1a0db4815ecc4b DATOS 55 ffffffffffffff CLAVE 56 ca6108d1d eeceef1714b96dd DATOS 56 ffffffffffffff CLAVE 57 dc5b25b71b6296cf73dd2cdcac2f70b1 DATOS 57 ffffffffffffffc CLAVE 58 44aba95e8a06a2d9d3530d c80 DATOS 58 ffffffffffffffe CLAVE 59 a570d20e89b467e8f b81dd396 DATOS 59 fffffffffffffff CLAVE f4467a5d8f1e7307dc30b34e404f4 DATOS 60 fffffffffffffff CLAVE 61 bcea28e9071b5a ff352451bc5 DATOS 61 Miguel García Ocón 199 Anexos
206 fffffffffffffffc CLAVE c00bc177d331ad312e09c9015c1c DATOS 62 fffffffffffffffe CLAVE 63 ccac61e b3f5836da21a1bc4f4 DATOS 63 ffffffffffffffff CLAVE b b44189d3522b8c30 DATOS 64 ffffffffffffffff CLAVE d0c0e4a07593cf12ebb12be7688c DATOS 65 ffffffffffffffffc CLAVE 66 effbac1644deb0c784275fe56e19ead3 DATOS 66 ffffffffffffffffe CLAVE 67 a005063f30f4228b374e f26bb DATOS 67 fffffffffffffffff CLAVE b5f48bb68fcbbc7cea93b452ed7 DATOS 68 fffffffffffffffff CLAVE 69 cf3f2576e2afedc74bb1ca7eeec1c0e7 DATOS 69 fffffffffffffffffc CLAVE 70 07c403f5f966e0e3d9f296d6226dca28 DATOS 70 fffffffffffffffffe CLAVE 71 c8c ab4a34d6dd0a31327ff1a DATOS 71 ffffffffffffffffff CLAVE 72 c ecb6159ab23b7fc5e6a21bca DATOS 72 ffffffffffffffffff CLAVE 73 7aa1acf1a2ed9ba72bc6deb31d88b863 DATOS 73 ffffffffffffffffffc CLAVE bd8eddabb6f3bf0d5a8a27be1fe8a DATOS 74 ffffffffffffffffffe CLAVE c7d7685e14ec66bbb96b8f05b6ddd DATOS 75 fffffffffffffffffff CLAVE eefc8c2a93f91b6e73eb07cca6e DATOS 76 fffffffffffffffffff CLAVE 77 d893e7d62f6ce502c64f75e281f9c000 DATOS 77 fffffffffffffffffffc CLAVE 78 8dfd999be5d0cfa35732c0ddc88ff5a5 DATOS 78 fffffffffffffffffffe CLAVE c76a300c3173b841487eb2bae9f DATOS 79 ffffffffffffffffffff CLAVE df8b02f04b53adab028b4e01acd87 DATOS 80 ffffffffffffffffffff CLAVE b3bf4998aeb05afd87ec536533a36 DATOS 81 ffffffffffffffffffffc CLAVE f7bf44c97f065258a666cae03020 DATOS 82 ffffffffffffffffffffe CLAVE 83 aad4c8a63f de7b92cede1be1 DATOS 83 fffffffffffffffffffff CLAVE 84 cbfe61810fd5467ccdacb75800f3ac07 DATOS 84 fffffffffffffffffffff CLAVE d8a2590f7d8e1b55a737f4af45f34 DATOS 85 fffffffffffffffffffffc CLAVE 86 fffcd4683f858058e d43fa2c DATOS 86 fffffffffffffffffffffe CLAVE d0babbb82f46ebc9e70b1cd41ddd0 DATOS 87 ffffffffffffffffffffff CLAVE aab37080d7486f7d542a309e53eed DATOS 88 ffffffffffffffffffffff CLAVE 89 56c5609d0906b23ab9caca816f5dbebd DATOS 89 ffffffffffffffffffffffc CLAVE eedd91adc6d831cdf9894bdc6 DATOS 90 ffffffffffffffffffffffe CLAVE baa4f2b618fc9d9b021bf503d5a DATOS 91 fffffffffffffffffffffff CLAVE 92 fc9e0ea22480b0bac935c8a8ebefcdcf DATOS 92 fffffffffffffffffffffff CLAVE 93 29ca779f398fb04f867da7e8a44756cb DATOS 93 fffffffffffffffffffffffc CLAVE 94 51f89c bfc43c6df8ada36832 DATOS 94 fffffffffffffffffffffffe CLAVE 95 6ac1de5fb8f21d874e91c53b560c50e3 DATOS 95 ffffffffffffffffffffffff CLAVE 96 03aa eda306001a8a9f48d0ca7 DATOS 96 ffffffffffffffffffffffff CLAVE 97 e34ec71d6128d d617c30b37e3 DATOS 97 ffffffffffffffffffffffffc CLAVE 98 14be1c535b17cabd0c4d93529d69bf47 DATOS 98 ffffffffffffffffffffffffe CLAVE 99 c9ef beec9dd DATOS 99 fffffffffffffffffffffffff CLAVE e231fa5a5948ce2134e92fc0664d4b DATOS 100 Miguel García Ocón 200 Anexos
207 Fichero 5: Salidas Desencriptación con clave de 192 bits Todas las salidas esperadas tienen valor cero Fichero 6: Entradas Desencriptación con clave de 256 bits CLAVE 1 e35a6dcb19b201a01ebcfa8aa22b5759 DATOS 1 c CLAVE 2 b29169cdcf2d83e838125a12ee6aa400 DATOS 2 e CLAVE 3 d8f3a72fc3cdf74dfaf6c3e6b97b2fa6 DATOS 3 f CLAVE 4 1c777679d50037c79491a94da76a9a35 DATOS 4 f CLAVE 5 9cf4893ecafa0a0247a898e DATOS 5 fc CLAVE 6 8fbb a269bd3aa94b2 DATOS 6 fe CLAVE 7 60e32246bed2b0e859e55c1cc6b26502 DATOS 7 ff CLAVE 8 ec52a212f80a09df bc2a9819e DATOS 8 ff CLAVE 9 f23e5b600eb70dbccf6c0b1d9a68182c DATOS 9 ffc CLAVE 10 a3f599d63a82a968c33fe DATOS 10 ffe CLAVE 11 d1ccb9b cbac42c520b5d67722 DATOS 11 fff CLAVE 12 cc111f6c37cf40a1159d00fb59fb0488 DATOS 12 fff CLAVE 13 dc43b51ab a26e9cdd714 DATOS 13 fffc CLAVE 14 4dcede8da9e2578f39703d4433dc6459 DATOS 14 fffe CLAVE 15 1a4c1c263bbccfafc e3a8 DATOS 15 ffff CLAVE ad84880db d6d527a2823d DATOS 16 ffff CLAVE b71dfc688e150d8152c5b35ebc14d DATOS 17 ffffc CLAVE 18 27ef2495dabf323885aab39c80f18d8b DATOS 18 ffffe CLAVE cafea395bc03adae3a1e2068e4b4e DATOS 19 fffff CLAVE 20 6e1b482b53761cf631819b749a6f3724 DATOS 20 fffff CLAVE e6f851ab52c771998dbb2d71c75a9 DATOS 21 fffffc CLAVE 22 85f2ba84f8c307cf525e124c3e22e6cc DATOS 22 fffffe CLAVE 23 6bcca98bf6a835fa64955f72de4115fe DATOS 23 ffffff CLAVE 24 2c75e2d36eebd65411f14fd0eb1d2a06 DATOS 24 ffffff CLAVE 25 bd ffca5100b6007a0eade DATOS 25 ffffffc CLAVE 26 a190527d0ef7c70f459cd3940df316ec DATOS 26 ffffffe CLAVE 27 bbd1097a62433f79449fa97d4ee80dbf DATOS 27 fffffff CLAVE e408f5b99b0e0f061a1761b5b3b DATOS 28 fffffff CLAVE 29 5fd1f13fa0f31e37fabde328f894eac2 DATOS 29 fffffffc CLAVE 30 fc4af7c948df26e2ef3e01c1ee5b8f6f DATOS 30 fffffffe CLAVE fd7208fb92d44a074a677ee9861ac DATOS 31 ffffffff CLAVE 32 ad9fc613a703251b54c64a0e DATOS 32 ffffffff CLAVE 33 33ac9eccc4cc75e f80b1548e8 DATOS 33 ffffffffc CLAVE c74b8ad8f4cda17ee2049c4c902d DATOS 34 Miguel García Ocón 201 Anexos
208 ffffffffe CLAVE 35 f85ca05fe528f1ce9b790166e8d551e7 DATOS 35 fffffffff CLAVE 36 6f6238d d e0dad5a6c9 DATOS 36 fffffffff CLAVE 37 f2b21b4e7640a9b3346de8b82fb41e49 DATOS 37 fffffffffc CLAVE 38 f836f251ad1d11d49dc344628b1884e1 DATOS 38 fffffffffe CLAVE e9470ae7abea5a9769d c3 DATOS 39 ffffffffff CLAVE 40 e0dcc2d27fc f85223cf0d611f DATOS 40 ffffffffff CLAVE 41 be66cfea2fecd6bf0ec7b4352c99bcaa DATOS 41 ffffffffffc CLAVE 42 df31144f87a2ef523facdcf21a DATOS 42 ffffffffffe CLAVE 43 b5bb0f5629fb6aae5e1839a3c3625d63 DATOS 43 fffffffffff CLAVE 44 3c9db fe1ec612bdbfae6b6028 DATOS 44 fffffffffff CLAVE 45 3dd5c34634a79d3cfcc e6f5f4 DATOS 45 fffffffffffc CLAVE 46 82bda118a3ed7af314fa2ccc5c07b761 DATOS 46 fffffffffffe CLAVE a64f7d4f46fe6fea3b349ec78e38 DATOS 47 ffffffffffff CLAVE f068c ad671bb8f39f3 DATOS 48 ffffffffffff CLAVE 49 ae682c5ecd71898e08942ac9aa89875c DATOS 49 ffffffffffffc CLAVE 50 5e031cb9d676c3022d7f26227e85c38f DATOS 50 ffffffffffffe CLAVE 51 a78463fb064db5d52bb64bfef64f2dda DATOS 51 fffffffffffff CLAVE 52 8aa9b75e c53a00eae5af52b DATOS 52 fffffffffffff CLAVE 53 3f84566df23da48af692722fe980573a DATOS 53 fffffffffffffc CLAVE b5ed41c7eb42a1e83270a7ff0e6 DATOS 54 fffffffffffffe CLAVE 55 77dd d55f08365e477d3590eda DATOS 55 ffffffffffffff CLAVE 56 4c022ac62b3cb78d739cc67b3e20bb7e DATOS 56 ffffffffffffff CLAVE fa137ce18b5dfe7906f550bb13370 DATOS 57 ffffffffffffffc CLAVE 58 3e0cdadf2e68353c c97144dd3 DATOS 58 ffffffffffffffe CLAVE 59 d8c4b200b383fc1f2b2ea677618a1d27 DATOS 59 fffffffffffffff CLAVE f99b0e9bb3477c1c0713b015aac DATOS 60 fffffffffffffff CLAVE 61 f8b9fffb5c187f7ddc7ab10f4fb77576 DATOS 61 fffffffffffffffc CLAVE 62 ffb4e87a32b37d6f2c8328d3b DATOS 62 fffffffffffffffe CLAVE 63 d276c13a5d220f4da9224e ce DATOS 63 ffffffffffffffff CLAVE 64 94efe7a0e2e031e2536da01df799c927 DATOS 64 ffffffffffffffff CLAVE 65 8f8fd822680a85974e53a5a8eb9d38de DATOS 65 ffffffffffffffffc CLAVE 66 e0f0a91b2e45f8cc37b7805a d DATOS 66 ffffffffffffffffe CLAVE a e46d6364dbeeda31e279c DATOS 67 fffffffffffffffff CLAVE 68 f51a0f694442b8f fec7ee8bf DATOS 68 fffffffffffffffff CLAVE 69 9ff071b165b5198a93dddeebc54d09b5 DATOS 69 fffffffffffffffffc CLAVE 70 c20a19fd5758b0c4bc1a5df89cf73877 DATOS 70 fffffffffffffffffe CLAVE ca2280e e96f DATOS 71 ffffffffffffffffff CLAVE 72 4b3b9f1e099c2a09dc091e90e4f18f0a DATOS 72 ffffffffffffffffff CLAVE 73 eb040b891d4b37f6851f7ec219cd3f6d DATOS 73 ffffffffffffffffffc CLAVE 74 9f0fdec08b7fd79aa39535bea42db92a DATOS 74 ffffffffffffffffffe CLAVE 75 2e70f168fc74bf911df240bcd2cef236 DATOS 75 fffffffffffffffffff CLAVE 76 Miguel García Ocón 202 Anexos
209 462ccd7f5fd1108dbc152f3cacad328b DATOS 76 fffffffffffffffffff CLAVE 77 a4af534a7d0b643a d86dfb95 DATOS 77 fffffffffffffffffffc CLAVE 78 ab e1a c31da4bf6f3 DATOS 78 fffffffffffffffffffe CLAVE 79 f97d57b3333b6281b07d486db2d4e20c DATOS 79 ffffffffffffffffffff CLAVE 80 f33fa afe4c759ade6bd62eb6 DATOS 80 ffffffffffffffffffff CLAVE 81 fdcfac0c02ca538343c68117e0a15938 DATOS 81 ffffffffffffffffffffc CLAVE 82 ad4916f5ee5772be764fc027b8a6e539 DATOS 82 ffffffffffffffffffffe CLAVE 83 2e16873e d7e14c02d002ea845 DATOS 83 fffffffffffffffffffff CLAVE 84 4e6e627c1acc a8236d DATOS 84 fffffffffffffffffffff CLAVE 85 ab0c8410aeeead92feec1eb430d652cb DATOS 85 fffffffffffffffffffffc CLAVE 86 e86f7e23e835e114977f60e1a592202e DATOS 86 fffffffffffffffffffffe CLAVE 87 e68ad5055a367041fade09d9a70a794b DATOS 87 ffffffffffffffffffffff CLAVE a3c666bb e78606a7fe DATOS 88 ffffffffffffffffffffff CLAVE 89 dcca366a9bf47b7b868b77e25c18a364 DATOS 89 ffffffffffffffffffffffc CLAVE c9efc237e4a442965f84bce20247a DATOS 90 ffffffffffffffffffffffe CLAVE 91 a858411ffbe63fdb9c8aa1bfaed67b52 DATOS 91 fffffffffffffffffffffff CLAVE 92 04bc3da2179c b0e03910db5b8 DATOS 92 fffffffffffffffffffffff CLAVE eeab3f935dbc25d f DATOS 93 fffffffffffffffffffffffc CLAVE 94 0ebd7c30ed2016e08ba806ddb008bcc8 DATOS 94 fffffffffffffffffffffffe CLAVE 95 15c6becf0f4cec7129cbd22d1a79b1b8 DATOS 95 ffffffffffffffffffffffff CLAVE 96 0aeede5b91f721700e9e62edbf60b781 DATOS 96 ffffffffffffffffffffffff CLAVE af0dcfbed1585e0a242c64b8df DATOS 97 ffffffffffffffffffffffffc CLAVE dc911662ae473216ba22189a511a DATOS 98 ffffffffffffffffffffffffe CLAVE fa36d86473e6fb3a1bb0e2c0adf5 DATOS 99 fffffffffffffffffffffffff CLAVE e9e11fbb78e26ffb8899e96b9a DATOS Fichero 6: Salidas Desencriptación con clave de 256 bits Todas las salidas esperadas tienen valor cero. Miguel García Ocón 203 Anexos
Un Poco de Historia Criptografía, Criptografía Clásica
CRIPTOGRAFÍA Un Poco de Historia Criptografía, según el diccionario de la real Academia de la Lengua Española: -Arte de escribir con clave secreta o de un modo enigmático. Del griego kryptos, que significa
Criptografía y Seguridad de Datos Introducción a la Criptografía: Confidencialidad de los mensajes
Criptografía y Seguridad de Datos Introducción a la Criptografía: Confidencialidad de los mensajes Carlos Figueira. Carlos Figueira. Universidad Simón Bolívar Basado en láminas del Profesor Henric Johnson
Criptografía básica. (extracto de ponencia Administración Electrónica ) EUITIO Universidad de Oviedo. Alejandro Secades Gómez
(extracto de ponencia Administración Electrónica ) EUITIO Universidad de Oviedo La criptografía nació como la ciencia de ocultar mensajes,sea, cifrarlos para que sólo el receptor pueda acceder a ellos
Seguridad Informática
Seguridad Informática Introducción a la Criptografía Ramón Hermoso y Matteo Vasirani Universidad Rey Juan Carlos Índice 1 Terminología e historia 2 Primitivas criptográficas 3 Nociones de criptoanálisis
Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Arquitectura de Ordenadores Tutor: Antonio Rivero Cuesta Unidad Didáctica 1 Representación de la Información y Funciones Lógicas Tema 1 Representación de la Información
Redes de comunicación
UNIVERSIDAD AMERICANA Redes de comunicación Unidad III- Criptografía: Sistemas Asimétricos Recopilación de teoría referente a la materia Ing. Luis Müller 2011 Esta es una recopilación de la teoría referente
CRIPTOGRAFIA, ESTEGANOGRAFIA Y WATERMARKING
CRIPTOGRAFIA, ESTEGANOGRAFIA Y WATERMARKING TÉCNICAS PARA LA TRANSMISIÓN DE MENSAJES OCULTOS SIMPOSIO INTERNACIONAL DE TELECOMUNICACIONES MERIDA-VENEZUELA 2007 [email protected] Seguridad en Redes
CONFIANZA Uno de los principales desafíos a que se enfrentan los medios telemáticos es asegurar la identidad de las partes que intervienen en cualquie
Certificados digitales CONFIANZA Uno de los principales desafíos a que se enfrentan los medios telemáticos es asegurar la identidad de las partes que intervienen en cualquier operación, tanto del usuario
FIABILIDAD, CONFIDENCIALIDAD, INTEGRIDAD Y DISPONIBILIDAD
FIABILIDAD, CONFIDENCIALIDAD, INTEGRIDAD Y DISPONIBILIDAD Tema 1 SAD Vicente Sánchez Patón I.E.S Gregorio Prieto Fiabilidad La fiabilidad de un sistema es la probabilidad de que ese sistema funcione o
Matemáticas para proteger la Información
! Matemáticas para proteger la Información Ángel Martín del Rey Departamento de Matemática Aplicada Universidad de Salamanca [email protected] Bachillerato de Inves1gación, I.E.S. Vaguada de la Palma, 18
1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.
Capítulo 5 Campos finitos 5.1. Introducción Presentaremos algunos conceptos básicos de la teoría de los campos finitos. Para mayor información, consultar el texto de McEliece [61] o el de Lidl y Niederreiter
Asignatura: Horas: Total (horas): Obligatoria Teóricas 3.0 Semana 3.0 Optativa X Prácticas Semanas 48.0 de elección
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO Aprobado por el Consejo Técnico de la Facultad de Ingeniería en su sesión ordinaria del 15 de octubre de 2008 CRIPTOGRAFÍA
Que es la CRIPTOLOGIA
Que es la CRIPTOLOGIA 2008 Definición de criptología La criptología está formada por dos técnicas complementarias: criptoanálisis y criptografía. La criptografía es la técnica de convertir un texto inteligible,
W4IKS MANUAL DEL USUARIO
W4IKS MANUAL DEL USUARIO Introducción El controlador 170 es una mini computadora diseñada para controlar señales de transito. El hardware esta compuesto por el procesador, memoria (RAM y EPROM), una interfase
Sistemas Electrónicos Digitales
Sistemas Electrónicos Digitales Profesor: Carlos Herrera C. I. Unidad COMPUERTAS LOGICAS Las compuertas lógicas son dispositivos que operan con aquellos estados lógicos Binarios y que funcionan igual que
Los dos círculos deben quedar unidos al centro y con la posibilidad de girar cada uno de ellos de forma independiente.
MATERIAL NECESARIO PARA LAS SESIONES DE CRIPTOGRAFÍA CLÁSICA SUSTITUCIÓN MONOALFABÉTICA POLIGRÁMICA - 20 de Agosto REGLAS PARA EL ALGORITMO PLAYFAIR Regla Si m1 y m2: Entonces c1 y c2: 1 Se encuentran
Clase 4: 23/03/ Modos de operación para cifradores de bloque
Criptografía y Seguridad Computacional 2016-01 Clase 4: 23/03/2016 Profesor: Fernando Krell Notas: Manuel Cartagena 1. Modos de operación para cifradores de bloque En las clases pasadas hemos estudiadio
Memoria Cache. Departamento de Arquitectura de Computadores
Memoria Cache Departamento de Arquitectura de Computadores Índice Introducción. Conceptos básicos Características de los sistemas de memoria Jerarquías de memoria Memoria Principal Características físicas
SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos
TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus
Disco de Alberti. Y el disco interno: A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
Disco de Alberti Se encuentra descrito en un manuscrito del siglo XVI en el cual su creador, Leon Battista Alberti explica su funcionamiento y denota el uso básico de dos alfabetos de la siguiente manera:
Criptografía y firma digital
Criptografía y firma digital Paseo Bulnes 241, piso 5, Santiago, Chile Fono: (56 2) 688 6499 Fax: (56 2) 688 6499 www.acepta.com [email protected] La encriptación A grandes rasgos, la criptografía es una
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
Capítulo 13 Cifrado Asimétrico con Mochilas
Capítulo 13 Cifrado Asimétrico con Mochilas Seguridad Informática y Criptografía Ultima actualización del archivo: 01/03/06 Este archivo tiene: 30 diapositivas v 4.1 Material Docente de Libre Distribución
Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Conceptos previos. Algoritmos de cifrado: DES, AES, IDEA, RC5
Criptografía Definiciones Conceptos previos Criptografía Definiciones Criptografía clásica Clasificación de Criptosistemas Criptosistemas Simétricos Clasificación Cifradores de bloques Cifradores de flujo
CRIPTOGRAFÍA 5º CURSO DE INGENIERÍA INFORMÁTICA
CRIPTOGRAFÍA 5º CURSO DE INGENIERÍA INFORMÁTICA Criptografía simétrica E.T.S.I. Informática Universidad de Sevilla Curso 2007/2008 CRIPTOSISTEMAS SIMÉTRICOS Simétríco clave secreta compartida por Mensaje
Tema 2.- Formas Cuadráticas.
Álgebra. 004 005. Ingenieros Industriales. Departamento de Matemática Aplicada II. Universidad de Sevilla. Tema.- Formas Cuadráticas. Definición y representación matricial. Clasificación de las formas
T E M A. Algoritmos de criptografía simétrica. [2.1] Cómo estudiar este tema? [2.2] Cifradores de bloque. [2.3] Cifradores de flujo
Algoritmos de criptografía simétrica [2.1] Cómo estudiar este tema? [2.2] Cifradores de bloque [2.3] Cifradores de flujo [2.4] Funciones resumen T E M A 2 Esquema Algoritmos de criptografía simétrica Cifrado
SISTEMAS DE NUMERACION
SISTEMAS DE NUMERACION INTRODUCCION El número de dígitos de un sistema de numeración es igual a la base del sistema. Sistema Base Dígitos del sistema Binario 2 0,1 Octal 8 0,1,2,3,4,5,6,7 Decimal 10 0,1,2,3,4,5,6,7,8,9
TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS
TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS 1.- POLINOMIOS Recordemos que un monomio es una expresión algebraica (combinación de letras y números) en la que las únicas operaciones que aparecen entre las
Aritmética de Enteros
Aritmética de Enteros La aritmética de los computadores difiere de la aritmética usada por nosotros. La diferencia más importante es que los computadores realizan operaciones con números cuya precisión
CURSO CERO DE MATEMATICAS. Apuntes elaborados por Domingo Pestana Galván. y José Manuel Rodríguez García
INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIONES CURSO CERO DE MATEMATICAS Apuntes elaborados por Domingo Pestana Galván y José Manuel Rodríguez García UNIVERSIDAD CARLOS III DE MADRID Escuela Politécnica
Qué es un programa informático?
Qué es un programa informático? Un programa informático es una serie de comandos ejecutados por el equipo. Sin embargo, el equipo sólo es capaz de procesar elementos binarios, es decir, una serie de 0s
Matemáticas Discretas. Oscar Bedoya
Matemáticas Discretas Oscar Bedoya [email protected] http://eisc.univalle.edu.co/~oscarbed/md/ PARTE 2. * TEORÍA DE NÚMEROS * TÉCNICAS DE DEMOSTRACIÓN * RELACIONES * Notación a b * Números
TEMA 11 MEMORIAS. CIRCUITOS LÓGICOS PROGRAMABLES
TEMA 11 MEMORIAS. CIRCUITOS LÓGICOS PROGRAMABLES 1 CLASIFICACIÓN SEGÚN SU TECNOLOGÍA 2 PARAMETROS FUNDAMENTALES DE LAS MEMORIAS Modo de acceso: Aleatorio (RAM, Random Access Memory) Serie Alterabilidad
circuitos digitales números binario.
CIRCUITOS DIGITALES Vamos a volver a los circuitos digitales. Recordemos que son circuitos electrónicos que trabajan con números, y que con la tecnología con la que están realizados, estos números están
Capítulo 3. Qué es un Prestador de Servicios de Certificación?
INDICE DE CONTENIDOS Capítulo 1. Antes de comenzar Introducción La seguridad en las transacciones electrónicas Capítulo 2. Qué es la firma electrónica? En qué consiste la firma electrónica? Qué es la clave
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
GUION TÉCNICO AUDIO. El Conjunto De Los Números Reales. realidad, es una ciencia resultado de más de 4 mil años de
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. El Conjunto De Los Números Reales. Hablar de matemáticas, no es solo referirse a números. En realidad, es
Clase 8 Matrices Álgebra Lineal
Clase 8 Matrices Álgebra Lineal Código Escuela de Matemáticas - Facultad de Ciencias Universidad Nacional de Colombia Matrices Definición Una matriz es un arreglo rectangular de números denominados entradas
ANEXO APLICACIÓN DE FIRMA
ANEXO APLICACIÓN DE FIRMA Como se ha comentado anteriormente, uno de los principales usos del DNI electrónico es la realización de firma electrónica. Para utilizar esta funcionalidad de firma, numerosas
Esquema de cifrado DES
Esquema de cifrado DES DES es un esquema de cifrado en bloque que opera sobre bloques de texto de 64 bits, devolviendo bloques cifrados también de 64 bits. Así pues, DES sobre 2 64 posibles combinaciones
D.E.S. (Data Encryption Standard) Cifrado Convencional ANTECEDENTES
D.E.S. (Data Encryption Standard) Cifrado Convencional ANTECEDENTES Horst Feistel (IBM) Cómo usar sustitución monoalfabética y obtener un criptosistema aceptable? Incorporación de transposición Cambio
BLOWFISH,AES, AES192, AES256, TWOFISH)
Unidad 2 CRIPTOGRAFIA 2.1 Sistemas Criptograficos clasicos 2.1.1 Sustitución Monoalfabetica (Cifrario de Cesar) 2.1.2 Sustitución Polialfabetica (Cifrario Vigenere) 2.1.3 Tranposición 2.2 Criptografia
Criptografía de Clave secreta: Cifrado en flujo. Amparo Fúster Sabater Instituto de Física Aplicada C.S.I.C. [email protected]
Criptografía de Clave secreta: Cifrado en flujo Amparo Fúster Sabater Instituto de Física Aplicada C.S.I.C. [email protected] Contenido Introducción Procedimientos de cifrado en flujo Criptoanálisis de
I. Operaciones con matrices usando Mathematica
PRÁCTICA 9: RESOLUCIÓN DE SISTEMAS LINEALES II I. Operaciones con matrices usando Mathematica Introducir matrices en Mathematica: listas y escritura de cuadro. Matrices identidad y diagonales. El programa
Para convertir un decimal a un binario se necesita la siguiente tabla.
Conversiones Conversión de Decimal a Binario Para convertir un decimal a un binario se necesita la siguiente tabla. Para convertir el 33: Primero: Se busca en la tabla un número igual o menor a 33. Segundo:
Sistem as de ecuaciones lineales
Sistem as de ecuaciones lineales. Concepto, clasificación y notación Un sistema de m ecuaciones lineales con n incógnitas se puede escribir del siguiente modo: a x + a 2 x 2 + a 3 x 3 + + a n x n = b a
Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.
DIRECCIONAMIENTO IP Un computador puede estar conectado a más de una red. En este caso, se le debe asignar al sistema más de una dirección. Cada dirección identificará la conexión del computador a una
CRIPTOGRAFIA. Universidad Tecnológica Centroamericana
CRIPTOGRAFIA Universidad Tecnológica Centroamericana Como comienza todo Supondremos que un emisor desea enviar un mensaje a un receptor. El emisor quiere asegurarse que un intruso no pueda leer el mensaje
Criptografía Básica. Alberto Escudero Pascual
Criptografía Básica Alberto Escudero Pascual [email protected] 1 Cita del día Quis Custodiet Ipsos Custodes Juvenal, circa 128 AD 2 Código, Criptografía y Legalidad "$_='while(read+stdin,$_,2048) {$a=29;$c=142;
D.E.S. (Data Encryption Standard) Cifrado Convencional
D.E.S. (Data Encryption Standard) Cifrado Convencional ANTECEDENTES Horst Feistel (IBM) Cómo usar sustitución monoalfabética y obtener un criptosistema aceptable? Incorporación de transposición Cambio
SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97
SISTEMAS DE NUMERACIÓN Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. La norma principal en un sistema de numeración posicional es que un mismo símbolo
Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.
Que Es Excel? Excel es un programa que permite la manipulación de libros y hojas de calculo. En Excel, un libro es el archivo en que se trabaja y donde se almacenan los datos. Como cada libro puede contener
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Matemáticas Básicas para Computación
Matemáticas Básicas para Computación MATEMÁTICAS BÁSICAS PARA COMPUTACIÓN 1 Sesión No. 7 Nombre: Compuertas Lógicas Objetivo Al término de la sesión el participante aplicará los conceptos de compuertas
Comercio Electrónico y Dirección de Producción
Comercio Electrónico y Dirección de Producción Administración de la Producción 2010 Comercio electrónico Es la utilización de redes de computadores, principalmente a través de Internet, para comprar y
Cuaderno de notas del OBSERVATORIO LA CRIPTOGRAFÍA DESDE LA ANTIGUA GRECIA HASTA LA MÁQUINA ENIGMA
Cuaderno de notas del OBSERVATORIO Instituto Nacional de Tecnologías de la Comunicación LA CRIPTOGRAFÍA DESDE LA ANTIGUA GRECIA HASTA LA MÁQUINA ENIGMA Del griego criptos (oculto) y logos (tratado), la
2.Introducción a la seguridad
2.Introducción a la seguridad Las necesidades de seguridad de la información han ido evolucionando al igual que las ciencias de la computación y las tecnologías de la información. De este modo, las herramientas
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Introducción al Álgebra
Capítulo 3 Introducción al Álgebra L a palabra álgebra deriva del nombre del libro Al-jebr Al-muqābāla escrito en el año 825 D.C. por el matemático y astrónomo musulman Mohamad ibn Mūsa Al-Khwārizmī. El
Representación de la Información en los Sistemas Digitales
Representación de la Información en los Sistemas Digitales Luis Entrena, Celia López, Mario García, Enrique San Millán Universidad Carlos III de Madrid 1 Introducción a los computadores Computador: Máquina
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
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
Clave Pública y Clave Privada
Punto 5 Técnicas de cifrado. Clave Pública y Clave Privada Juan Luis Cano El cifrado de datos es el proceso por el que una información legible se transforma mediante un algoritmo (llamado cifra) en información
EXPRESIONES ALGEBRAICAS EXPRESIONES ALGEBRAICAS Y POLINOMIOS
EXPRESIONES ALGEBRAICAS Trabajar en álgebra consiste en manejar relaciones numéricas en las que una o más cantidades son desconocidas. Estas cantidades se llaman VARIABLES, INCÓGNITAS o INDETERMINADAS
Algoritmos de cifrado Definir el problema con este tipo de cifrado
Criptografía Temario Criptografía de llave secreta (simétrica) Algoritmos de cifrado Definir el problema con este tipo de cifrado Criptografía de llave pública (asimétrica) Algoritmos de cifrado Definir
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
NOTA TÉCNICA. FECHA: 29 de marzo de 2011. Airbag DTC Codes NºPSA.15
NOTA TÉCNICA FECHA: 29 de marzo de 2011 Airbag DTC Codes NºPSA.15 7150 Defecto información velocidad vehículo : No 71AD Defecto presente en el calculador de detección de choque con peatón : No 7362 Defecto
Complejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
5 centenas + 2 decenas + 8 unidades, es decir: = 528
Sistemas de numeración Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. Los sistemas de numeración actuales son sistemas posicionales, que se caracterizan
Seguridad en internet. La seguridad
1 La seguridad Seguridad física. Se entiende como el conjunto de medidas y protocolos para controlar el acceso físico a un elemento. A nivel general lo forman las puertas, cerraduras, rejas y paredes.
SISTEMAS DE ECUACIONES LINEALES. Método de reducción o de Gauss. 1º DE BACHILLERATO DPTO DE MATEMÁTICAS COLEGIO MARAVILLAS AUTORA: Teresa González.
SISTEMAS DE ECUACIONES LINEALES Método de reducción o de Gauss 1º DE BACHILLERATO DPTO DE MATEMÁTICAS COLEGIO MARAVILLAS AUTORA: Teresa González. SISTEMAS DE DOS ECUACIONES LINEALES CON DOS INCÓGNITAS.
Ingeniería Técnica en Informática de Sistema E.T.S.I. Informática Universidad de Sevilla
Fundamentos de Computadores Representación Binaria Ingeniería Técnica en Informática de Sistema E.T.S.I. Informática Universidad de Sevilla Versión 1.0 (Septiembre 2004) Copyright 2004 Departamento de
Juan Carlos Rodríguez (S21Sec) Juan José Carrasco (IZENPE) Rames Swart (SmartAccess)
Juan Carlos Rodríguez (S21Sec) Juan José Carrasco (IZENPE) Rames Swart (SmartAccess) Identificación y autenticación En la vida cotidiana necesitamos identificarnos en muchas situaciones:. Bancos. Compras
SISTEMAS DE TRANSMISIÓN Y REDES INALÁMBRICAS INTRODUCCIÓN
INTRODUCCIÓN Criptografía proviene del griego y significa Escritura secreta. Se debe hacer una distinción entre cifrados y códigos: Un cifrado es una transformación carácter a carácter o bit a bit, sin
Introducción Mic i ro r s o of o t t W or o d r
Introducción Microsoft Word Qué es el Microsoft Word? Word es uno de los procesadores de texto, más utilizados para trabajar con documentos en la actualidad. Casi no existe persona con computadora, que
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
4. NÚMEROS PSEUDOALEATORIOS.
4. NÚMEROS PSEUDOALEATORIOS. En los experimentos de simulación es necesario generar valores para las variables aleatorias representadas estas por medio de distribuciones de probabilidad. Para poder generar
CFGM. Seguridad Informática. Unidad 4 Sistemas de identificación. Criptografía
CFGM. Seguridad Informática Unidad Sistemas de identificación. Criptografía CONTENIDOS 1. Cómo aseguramos la privacidad de la información? 2. Un poco de historia de la criptografía 3. Criptografía simétrica
Curso de Manipulador de alimentos copia 2. Guía del alumno
Curso de Manipulador de alimentos copia 2 Guía del alumno 1/6 Contenidos: Introducción Conceptos básicos La formación del manipulador de alimentos Obligaciones del manipulador de alimentos Resumen Ejercicios
EXPRESIONES ALGEBRAICAS. POLINOMIOS
Unidad didáctica 5 EXPRESIONES ALGEBRAICAS. POLINOMIOS. EXPRESIONES ALGEBRAICAS. Estas expresiones del área son expresiones algebraicas, ya que además de números aparecen letras. Son también expresiones
CAPÍTULO 4 RECOPILACIÓN DE DATOS Y CÁLCULO DEL VPN. En el presente capítulo se presenta lo que es la recopilación de los datos que se tomarán
CAPÍTULO 4 RECOPILACIÓN DE DATOS Y CÁLCULO DEL VPN En el presente capítulo se presenta lo que es la recopilación de los datos que se tomarán para realizar un análisis, la obtención del rendimiento esperado
CAPITULO II SISTEMAS DE NUMERACIÓN Y CÓDIGOS
SISTEMA DE NUMERACIÓN Y CÓDIGOS CAPITULO II SISTEMAS DE NUMERACIÓN Y CÓDIGOS CÓDIGO Un código es un grupo de símbolos que representan algún tipo de información reconocible. En los sistemas digitales, los
Guía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
TEMA 7: INGENIERIA DEL SOFTWARE.
TEMA 7: INGENIERIA DEL SOFTWARE. 7.1. Definición de software 7.2. Características del software 7.3. Componentes del software 7.4. Ciclo de vida 7.4.1. Análisis de requisitos 7.4.2. Diseño 7.4.3. Implementación
ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:
ADMINISTRACION DE LA MEMORIA Función del Administrador de Memoria Registra qué parte de memoria está libre y ocupada Asigna y libera espacio en memoria a los procesos Administra el intercambio entre la
Bloques Aritméticos - Multiplicadores
Bloques Aritméticos - Multiplicadores La multiplicación es una operación cara (en términos de recursos) y lenta Este hecho ha motivado la integración de unidades completas de multiplicación en los DSPs
Representación de números enteros: el convenio exceso Z
Representación de números enteros: el convenio exceso Z Apellidos, nombre Martí Campoy, Antonio ([email protected]) Departamento Centro Informàtica de Sistemes i Computadors Escola Tècnica Superior d
XVI. utilizarlos de la forma más eficiente posible en el diseño de sistemas digitales.
INTRODUCCIÓN En la actualidad el diseño de circuitos y sistemas digitales ha avanzado mucho respecto a sus orígenes. Ningún diseñador se plantea en la actualidad realizar un sistema digital mediante circuitos
https://dac.escet.urjc.es/docencia/etc-sistemas/teoria-cuat1/tema2.pdf
1.3 Sistemas numéricos 1.3.1. Introducción Un sistema de representación numérica es un lenguaje que consiste en: Un conjunto ordenado de símbolos (dígitos o cifras) y otro de reglas bien definidas para
ARITMÉTICA. José María Muñoz Escolano Departamento de Matemáticas Facultad de Ciencias Humanas y de la Educación de Huesca Teruel, 6 de mayo de 2011
Taller de Talento Matemático Profundización ió de conocimientos i ARITMÉTICA SIMÉTRICA José María Muñoz Escolano Departamento de Matemáticas Facultad de Ciencias Humanas y de la Educación de Huesca Teruel,
SISTEMAS NUMERICOS. Ing. Rudy Alberto Bravo
SISTEMAS NUMERICOS SISTEMAS NUMERICOS Si bien el sistema de numeración binario es el más importante de los sistemas digitales, hay otros que también lo son. El sistema decimal es importante porque se usa
MEMORIA EJERCICIO 1 EJERCICIO 2
MEMORIA EJERCICIO 1 Determinar el mapa de memoria de un procesador con 16 señales de bus de direcciones, una señal de asentimiento de bus de direcciones AS, una señal de lectura R, otra de escritura W
Aritmética Modular MATEMÁTICA DISCRETA I. F. Informática. UPM. MATEMÁTICA DISCRETA I () Aritmética Modular F. Informática.
Aritmética Modular MATEMÁTICA DISCRETA I F. Informática. UPM MATEMÁTICA DISCRETA I () Aritmética Modular F. Informática. UPM 1 / 30 La relación de congruencia La relación de congruencia Definición Dado
