Logo Studenta

Tesis_MISTI_alpago2013

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO POLITÉCNICO NACIONAL 
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA 
Y ELÉCTRICA 
 
 
SECCIÓN DE ESTUDIOS DE POSGRADO 
E INVESTIGACIÓN 
 
 
 
 
 
 
Implantación del algoritmo de cifrado AES 
con CFB en FPGA para protección de datos 
 
 
 
 
T E S I S 
 
para obtener el grado de 
Maestro en Ingeniería en Seguridad y Tecnologías de la Información 
P r e s e n t a: 
 
 
ALEJANDRO PADRÓN GODÍNEZ 
 
 
 
Director de Tesis: José Velázquez López 
 
 
Agosto 2013, México D. F. 
 
II 
 
 
CARTA CESIÓN DE DERECHOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Alejandro Padrón Godínez 
 
 
 
 
 
 
INSTITUTO POLITÉCNICO NACIONAL 
SECRETARÍA DE INVESTIGACIÓN Y POSGRADO 
III 
 
Dedicatoria 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
IV 
 
Agradecimientos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
V 
 
ÍNDICE 
 Carátula .......................................................................................................................... I 
 Cesión de derechos ........................................................................................................ II 
 Dedicatoria ..................................................................................................................... III 
 Agradecimientos ............................................................................................................ IV 
 Índice ............................................................................................................................. V 
 Glosario .......................................................................................................................... VI 
 
• Introducción y Bosquejo .................................................................................................. 1 
 Objetivo General ............................................................................................................ 5 
 Objetivos Particulares .................................................................................................... 5 
1. Marco Teórico Contextual ............................................................................................... 6 
1.1 Del Algoritmo Rijndael al Algoritmo AES ........................................................... 6 
1.2 Servicios de Seguridad .......................................................................................... 8 
1.3 Problemática y Justificación ................................................................................ 11 
1.4 Estado del Arte ..................................................................................................... 11 
2. Antecedentes VHDL ....................................................................................................... 14 
2.1 Lenguajes de Descripción de Hardware ............................................................... 15 
2.2 Lenguajes de descripción de Hardware versus desarrollo de Software ............... 16 
2.3 Descripción de la tarjeta Spartan 3E Starter Kit XC3S500E ............................... 19 
3. Estándar Criptográfico .................................................................................................... 21 
3.1 Funcionamiento del Algoritmo AES .................................................................... 21 
3.2 Modo de Operación CFB para Cifrado y Descifrado de datos ............................ 31 
3.3 Diseño para la Implementación de AES con CFB en VHDL .............................. 34 
3.1.1 AES-128 …………………………………………………………………...35 
3.1.2 AES-192 …………………………………………………………………...35 
3.1.3 AES-256 …………………………………………………………………...36 
3.1.4 CFB8_AES128 …………………………………………………………….36 
4. Plataforma de Comunicación Serial para el Cifrado y Descifrado ................................. 38 
4.1 Comunicación Serial Segura ................................................................................ 38 
4.2 Diseño de la Plataforma Criptográfica ................................................................. 40 
4.3 Principales Características del UART .................................................................. 43 
4.4 Configuración de las Interfaces Seriales en la Spartan 3E ................................... 50 
5. Resultados ....................................................................................................................... 52 
5.1 Verificación de algoritmos implementados contra Normas FIPS y NIST ........... 52 
5.2 Comparación de resultados en software y hardware de un archivo texto ............ 58 
5.3 Resultados obtenidos en la plataforma de comunicación .................................... 61 
• Anexo I.- AES-128 mediante Matlab ............................................................................. 64 
• Anexo II.- Códigos en VHDL de los algoritmos: AES-128,AES-192, AES-256 y 
CFB8_AES-128 .............................................................................................................. 
 ......................................................................................................................................... 69 
• Anexo III. – Cifrado y Descifrado de un archivo.txt en Matlab ..................................... 81 
• Anexo IV.- Reportes de Mapeo y Traza sobre el proyecto de la Plataforma ................. 98 
• Conclusiones y Perspectivas ......................................................................................... 103 
• Referencias Bibliográficas ............................................................................................. 105 
 
VI 
 
GLOSARIO 
CFB: Cifrado por Retroalimentación 
SI: Seguridad Informática 
RSA: Rivest Shamir Adleman 
DES: Estándar de Cifrado de Datos 
AES: Estándar de Cifrado Avanzado 
PGP: Pretty Good Privacy, siglas en inglés 
DoD: Departamento de Defensa 
NSA: National Security Agency, siglas en inglés 
IDEA: Algoritmo Internacional de Cifrado de Datos 
GSM: Global System for Mobile communications, siglas en ingles. 
ISO: International Standard Organization, siglas en ingles. 
OSI: Open Systems Interconnection, siglas en ingles. 
ASIC: Applications-Specific Integrated Circuit, siglas en ingles. 
FPGA: Field Programable Gates Arrays, siglas en ingles. 
Soc: System on Chip, siglas en ingles. 
NIST: National Institute of Standart Technology, siglas en ingles. 
FIPS: Fedeal Information Processing Standart, siglas en ingles. 
IEC: International Electrotechnical Comission, siglas en ingles. 
ITU: International Telecommunication Union, siglas en ingles. 
CBC: Cipher Block Chaining, siglas en ingles. 
MAC: Message Autentication Code, siglas en ingles. 
CCMP: Combinación de CBC y MAC. 
USB: Universal Serial Bus. 
SSL: Secure Socket Layer, siglas en ingles. 
CCM: Cipher Counter Mode, siglas en ingles. 
VHDL: Very High Description Lenguage, siglas en ingles. 
LCD: Liquid Crystal Display, siglas en ingles. 
VHSIC: Very High Spped Integrated Circuit, siglas en ingles. 
IEEE: Institute of Electrical and Electronic Engineers, siglas en ingles. 
UART: Universal Asynchronous Receiver/Transmitter, siglas en ingles. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Introducción y Bosquejo 
 
Introducción y Bosquejo Objetivos 
alepadgo@gmail.com 1 IPN-ESIME 
Introducción y Bosquejo 
Desde la década de los 70s, los dispositivos de lógica estándar eran todo un avance tecnológico, 
y los tableros con circuitos impresos eran lo mejor de su momento. Pero algunos se preguntaron 
“¿qué sucede si le damos a los diseñadores la capacidad de poner diversas interconexionesen 
ejecución en un dispositivo más grande?” Esto permite que el diseñador integre muchos 
dispositivos de lógica estándar en una partición. Para ofrecer lo último en flexibilidad del diseño, 
Ron Cline Signetics (que fue comprado más adelante por Philips y convertido eventualmente a 
Xilinx), vino con la idea de dos planos de programación. Estos planos proporcionaron cualquier 
combinación de compuertas lógicas “AND” y “OR”, así como sustituir las compuertas AND en 
términos de múltiples ORs. 
En este nuevo siglo, los “Field programable Gates Arrays” (FPGA) son una de las tecnologías 
disponibles para el desarrollo de sistemas electrónicos. Representan una atractiva opción para la 
producción de pequeñas cantidades ya que sus costos fijos (costo del prototipo de la primera 
unidad) son bastante más bajos que los correspondientes en “Applications-Specific Integrated 
Circuit” (ASIC), circuitos integrados de aplicación específica. Además, en pos de reducir el 
tamaño y por tanto el costo unitario, una posibilidad interesante es reconfigurarlas mientras 
operan de modo que el mismo dispositivo pueda ejecutar diferentes funciones predefinidas. 
Actualmente los sistemas electrónicos están presentes en el quehacer cotidiano, desde la 
electrónica de consumo a los sistemas de control industrial, pasando por las aplicaciones para 
automotriz, seguridad y una gama extensa en diferentes ámbitos. La tendencia de estos 
dispositivos con respecto a su diseño electrónico radica en la complejidad de muchos de los 
elementos que lo conforman, donde se exige, por ejemplo, que sean de fácil utilización y 
adaptables a varias aplicaciones que consuman pocos recursos y que puedan estar rápidamente 
a la venta. La tecnología actual de circuitos integrados permite realizar e integrar estos complejos 
sistemas en muy poco espacio; son los llamados sistemas embebidos (o empotrados) o “System 
on Chip” (SoC) por sus siglas en ingles. Estos sistemas embebidos usados para resolver tareas 
específicas incluyen hardware y software diseñado exprofesamente para ello. En el caso de las 
FPGA, al ser dispositivos reconfigurables son altamente útiles para desarrollo de prototipos o 
pequeñas cantidades a un precio razonablemente bajo. 
La evolución de la microelectrónica desde su nacimiento ha sido impresionante, en poco más de 
diez años se pasó del primer dispositivo integrado (flip-flop con unos cuantos transistores) a las 
primeras memorias y procesadores. A los pocos años, el diseño de circuitos integrados salió de 
las fábricas y se hizo accesible a los ingenieros de aplicación, dando lugar a los ASIC. Luego a 
mediados de los 80´s, se puso de manifiesto la necesidad de disponer de un lenguaje estándar 
Introducción y Bosquejo Objetivos 
alepadgo@gmail.com 2 IPN-ESIME 
capaz de dar el soporte necesario al proceso completo de diseño de chips y sistemas electrónicos 
(desde la idea hasta la implementación y explotación de un desarrollo) en sus distintas etapas y 
niveles de abstracción y cuya complejidad, ya de por sí elevada, se iba a incrementar 
drásticamente hacia los años noventa, Terés L. et al, (1998). 
Estas inquietudes, canalizadas a través del “Departament Of Defense” (DoD) de los E.U.A., llevan 
al nacimiento del VHDL (1987), que tras ser adoptado como estándar del IEEE (Std.-1076, 1987), 
se presenta como el lenguaje estándar por excelencia del diseño electrónico. Desde el primer 
momento se convirtió en la herramienta y el motor de base que ha facilitado e impulsado los 
enormes avances de las metodologías, técnicas y herramientas CAD de diseño electrónico de los 
últimos diez años. Esta evolución arrastra al propio Verilog, ahora también convertido en estándar 
del IEEE (Std.- 1364, 1995), que es con quien compite y lleva de la mano al VHDL. 
En definitiva, aunque sólo se considere al VHDL como herramienta de base, la implantación de 
este lenguaje ha supuesto tal cantidad de cambios en el diseño electrónico (nuevas metodologías 
de diseño de alto nivel y flujos descendentes, herramientas CAD de simulación/síntesis de 
circuitos y sistemas, nuevos de los equipos de diseño, cambios en la organización y desarrollo de 
proyectos, etc.), que sin lugar a dudas, se puede hablar de un antes y un después del VHDL. 
Una línea de desarrollo de estos sistemas con las herramientas mencionadas, está dirigida a la 
protección de datos en dispositivos de almacenamiento masivo, para ello habría que crear los 
elementos y módulos electrónicos necesarios para el manejo de los datos en forma bidireccional 
(transceivers, memorias dinámicas, controladores de lectura y escritura), Padrón A., Velázquez J. 
et al, (2012). Ya sea escribiendo o leyendo los datos de forma segura, habría que detallar en 
donde sería el mejor sitio para el módulo criptográfico que proporcionará la seguridad de los 
datos. Para ello el desarrollo de una plataforma criptográfica de comunicación puede ayudar al 
concepto del manejo de información en una transmisión y recepción de datos cifrados, es decir 
proteger datos en canales de transmisión antes de almacenarlos. Como consecuencia de los 
desarrollos de protección de datos mediante sistemas en hardware, surgen desarrollos dedicados 
a optimizar las operaciones midiendo la eficiencia y el desempeño de las implementaciones para 
mejorar la velocidad de procesamiento. 
La idea de esta introducción es percibir que el desarrollo de este trabajo de tesis está siendo 
implementado con las nuevas técnicas y herramientas para el diseño electrónico. Donde se ha 
tenido que aprender nuevas técnicas de programación, existen muchas ayudas en los manuales 
y en la red para desarrollar e implementar los programas ante cualquier obstáculo encontrado, sin 
embargo tienen que ser modificadas e integradas a las tareas que se quieren resolver. 
Introducción y Bosquejo Objetivos 
alepadgo@gmail.com 3 IPN-ESIME 
Así el desarrollo del algoritmo criptográfico, el modo de operación y las interfaces de la plataforma 
de comunicación aquí mostrados están en el lenguaje de programación VHDL. Se utiliza además 
la ventaja de poder realizar una simulación de los módulos construidos, en algunos casos antes 
de llevar a cabo las implantaciones (programación de los FPGA) en hardware. 
Resumiendo el contenido de la tesis, ésta comienza por el marco contextual de una 
implementación en hardware de un algoritmo estándar para asegurar información mediante 
técnicas criptográficas. Mencionando su problemática y el estado del arte de este tipo de 
implementaciones siguiendo normas para implementar servicios de seguridad, así como sus 
mecanismos de control. 
En los antecedentes de esta tesis (capítulo dos), se presentarán las características genéricas de 
los lenguajes de descripción de hardware para su mejor comprensión. En el mismo capítulo se 
realiza una comparación entre el lenguaje de descripción de Hardware contra el desarrollo en 
Software. No se pretende con este trabajo desaparecer o echar abajo diseños que se han 
realizado sino por lo contrario mostrar que esos diseños pueden ser implementados con mucho 
menos elementos que un diseño original. Se debe tener en mente que estas implementaciones 
pueden ser utilizadas en aplicaciones que se desarrollarán en un futuro próximo, facilitando la 
funcionalidad al agregar en forma modular las interfaces de la plataforma. También en la parte de 
los antecedentes se describe físicamente a latarjeta Spartan 3E de Xilinx para conocer de qué 
elementos está conformada y cuáles otros subelementos pueden ser utilizados para el desarrollo 
del trabajo de tesis. Mostrando sus características y parámetros para señales de entrada y salida, 
sin dejar de mencionar que se puede consultar a detalle en el manual de la tarjeta para 
conectarlas pero no la programación de las mismas. Spartan-3E FPGA Starter Kit Board User 
Guide, (2008). 
Se describirán en el capitulo tres cada operación que se lleva a cabo en el algoritmo de cifrado y 
descifrado AES con algún ejemplo, el número de rondas si se usan claves de tamaño 128, 192 y 
256 bits, y se mostrará el modo de operación CFB integrado para cifrar por flujo. 
Para poder hacer alguna comparación entre implementaciones en software y hardware se 
mencionarán las herramientas usadas con una breve descripción de ellas en el capitulo cuatro de 
esta tesis. La plataforma diseñada para la comunicación vía el puerto serie de dos tarjetas 
Spartan 3E se mostrará junto con las interfaces empleadas para ello, en mismo capítulo. 
En el capítulo cinco se pueden verificar los resultados obtenidos de las implementaciones del 
cifrado y descifrado en software (Anexo I, implementación AES-128 en Matlab) y hardware con 
sus respectivas normas y estándares. Luego empleando Matlab se mostrarán cuales fueron los 
Introducción y Bosquejo Objetivos 
alepadgo@gmail.com 4 IPN-ESIME 
resultados después de la corrida para la implementación del algoritmo AES-128 cifrando y 
descifrando un archivo de texto (Anexo III). Se pueden comparar estos resultados con la 
simulación de la implementación (en hardware) en el sistema ISE suite 13.3 de Xilinx, del mismo 
archivo de texto dentro del mismo capítulo. 
Usan do la plataforma de comunicación vía puerto serie, se presentarán los resultados obtenidos 
de las implementaciones de este trabajo de tesis. En los anexos estarán los códigos en VHDL 
para los algoritmos empleados (Anexo II), así como los reportes que genera Xilinx para el 
proyecto plataforma criptográfica (Anexo IV). 
Por último se mostrarán las conclusiones y perspectivas de esta tesis, haciendo hincapié en las 
ventajas de la implantación en hardware. Al final del trabajo se encuentran las referencias 
bibliográficas que se consultaron. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Introducción y Bosquejo Objetivos 
alepadgo@gmail.com 5 IPN-ESIME 
Objetivo General 
• Diseñar e implementar un sistema de protección de datos en un arreglo de compuertas 
programables, empleando el algoritmo de cifrado AES en modo de operación CFB, para 
aumentar la seguridad de la información en sistemas portátiles. 
 
Objetivos Particulares 
• Implantar el algoritmo de cifrado por bloques AES mediante la programación en VHDL de 
los módulos principales. 
• Incluir el modo de operación CFB en VHDL para convertir el cifrado de bloques AES en 
cifrado por flujo. 
• Diseñar y desarrollar la implementación de una plataforma criptográfica de comunicaciones 
usando las interfaces integradas en la tarjeta Starter Kit Spartan 3E FPGA de Xilinx. 
• Realizar la comunicación vía puerto serie de datos cifrados escritura/lectura en la 
plataforma diseñada. 
 
 
 
 
 
 
 
 
 
 
 
Capítulo 1 
 
Marco Teórico Contextual 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 6 IPN-ESIME 
1. Marco Teórico Contextual 
Para poder situarse en el Marco Teórico Contextual sobre este trabajo de tesis, habrá que 
mencionar como surgió el algoritmo criptográfico estándar AES y como ha sido utilizado. Por otro 
lado se mencionarán bajo qué circunstancias aparecen los servicios y mecanismos de Seguridad 
Informática y cómo han sido implementados. Con esto se plantea la problemática a resolver 
mediante la implementación en hardware propuesta en esta tesis. Lo anterior lleva hacer una 
búsqueda del estado del arte en esta disciplina, sobre todo en sistemas embebidos con 
mecanismos de seguridad. 
1.1 Del Algoritmo Rijndael al Algoritmo AES 
El “Advanced Encryption Standard” (AES), también conocido como Rijndael (pronunciado "Rain 
Doll" en inglés), es un esquema de cifrado por bloques adoptado como un estándar de cifrado por 
el gobierno de los Estados Unidos. Se espera que sea usado en el mundo entero y analizado 
exhaustivamente, como fue el caso de su predecesor, el “Data Encryption Standard” (DES) por 
más de veintisiete años (1974 - 2001). El AES fue anunciado por el Instituto Nacional de 
Estándares y Tecnología (NIST) como FIPS PUB 197 de los Estados Unidos (FIPS 197) el 26 de 
noviembre de 2001 después de un proceso de estandarización que duró 5 años. Se transformó en 
un estándar efectivo el 26 de mayo de 2002. Desde 2006, el AES es uno de los algoritmos más 
populares usados en criptografía simétrica. El cifrador fue desarrollado por dos criptólogos belgas, 
Joan Daemen y Vincent Rijmen, ambos estudiantes de la Katholieke Universiteit Leuven, y enviado 
al proceso de selección AES bajo el nombre "Rijndael". 
Como dato curioso Rijndael fue un refinamiento de un diseño anterior de Daemen y Rijmen, el 
algoritmo Square; Square fue a su vez un desarrollo del algoritmo Shark. En 1997, el Instituto 
Nacional de Normas y Tecnología (NIST) decidió realizar un concurso para escoger un nuevo 
algoritmo de cifrado capaz de proteger información sensible durante siglo XXI. Este algoritmo se 
denominó “Advanced Encryption Standard” (AES). 
El 2 de enero de 1997 el NIST anunció su intención de desarrollar AES, con la ayuda de la 
industria y de la comunidad criptográfica. El 12 de septiembre de ese año se hizo la convocatoria 
formal. En esta convocatoria se indicaban varias condiciones para los algoritmos que se 
presentaran: 
– Ser de dominio público, disponible para todo el mundo. 
– Ser un algoritmo de cifrado simétrico y soportar bloques de, como mínimo, 128 bits. 
– Las claves de cifrado podrían ser de 128, 192 y 256 bits. 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 7 IPN-ESIME 
– Capaz de ser implementado tanto en hardware como en software. 
El 20 de agosto de 1998 el NIST anunció los 15 algoritmos admitidos en la primera conferencia 
AES: 
– CAST-256 (Entrust Technologies, Inc.) 
– CRYPTON (Future Systems, Inc.) 
– DEAL (Richard Outerbridge, Lars Knudsen) 
– DFC (CNRS – Centre National pour la Recherche Scientifique – Ecole Normale 
Superieure) 
– E2 (NTT – Nippon Telegraph and Telephone Corporation) 
– FROG (TecApro International, S.A.) 
– HPC (Rich Schroeppel) 
– LOKI97 (Lawrie Brown, Josef Pieprzyk, Jennifer Seberry) 
– MAGENTA (Deutsche Telekom AG) 
– MARS (IBM) 
– RC6 (RSA Laboratories) 
– RIJNDAEL (John Daemen, Vincent Rijmen) 
– SAFER+ (Cylink Corporation) 
– SERPENT (Ross Anderson, Eli Biham, Lars Knudsen) 
– TWOFISH (Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, 
Niels Ferguson) 
La segunda conferencia AES tuvo lugar en marzo de 1999 donde se discutieron los análisis a los 
que fueron sometidos los candidatos por la comunidad criptográfica internacional. Se admitieron 
comentarios hasta el 15 de abril. El NIST decidió en agosto de 1999 cuales serían los 5 finalistas: 
–MARS 
– RC6 
– RIJNDAEL 
– SERPENT 
– TWOFISH 
Estos algoritmos fueron sometidos a una segunda revisión, más exhaustiva, que duró hasta el 15 
de mayo de 2000. Durante este periodo el NIST admitió análisis de los algoritmos finalistas. 
Durante los días 13 y 14 de abril de 2000 tuvo lugar la tercera conferencia AES donde se 
discutieron los últimos análisis de los algoritmos finalistas. En ella estuvieron presentes los 
desarrolladores de los algoritmos finalistas. 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 8 IPN-ESIME 
El 15 de mayo de 2000 finalizó el periodo público de análisis. El NIST estudió toda la información 
disponible para decidir cuál sería el algoritmo ganador. El 2 de octubre de 2000 se votó cual sería 
el algoritmo que finalmente ganaría el concurso. El resultado fue el siguiente: 
– MARS: 13 votos 
– RC6: 23 votos 
– RIJNDAEL: 86 votos 
– SERPENT: 59 votos 
– TWOFISH: 31 votos 
 El algoritmo Rijndael ganó el concurso y en noviembre de 2001 se publicó FIPS 197 donde 
se asumía oficialmente. 
Las características del AES son: no es de tipo Feistel, implementado para trabajar en los 
procesadores de 8 bits usados en tarjetas inteligentes y en CPUs de 32 bits, tamaño de clave 
variable: 128, 192 y 256 bits (estándar) o bien múltiplo de 4 bytes, tamaño del bloque de texto: 128 
bits o múltiplo de 4 bytes. Otras características son: Operaciones modulares a nivel de byte 
(representación en forma de polinomios) y de palabra de 4 bytes: 32 bits, número de etapas flexible 
según necesidades del usuario y usa un conjunto de Cajas S similares a las del DES. Más 
características y propiedades del algoritmo se presentan en el capítulo tres de este trabajo de tesis. 
 
1.2 Servicios de Seguridad 
El documento de ISO/IEC 7498-1, que describe el Modelo de Referencia OSI, presenta en su Parte 
2 una Arquitectura de Seguridad. Según esta arquitectura, para proteger las comunicaciones de los 
usuarios en las redes, es necesario dotar a las mismas de los siguientes servicios de seguridad: 
• Autenticación de entidad par. Este servicio corrobora la fuente de una unidad de datos. La 
autenticación puede ser sólo de la entidad origen o de la entidad destino, o ambas 
entidades se pueden autenticar la una o la otra. 
• Control de acceso. Este servicio se utiliza para evitar el uso no autorizado de recursos. 
• Confidencialidad de datos. Este servicio proporciona protección contra la revelación 
deliberada o accidental de los datos en una comunicación. 
• Integridad de datos. Este servicio garantiza que los datos recibidos por el receptor de una 
comunicación coinciden con los enviados por el emisor. 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 9 IPN-ESIME 
• No repudio. Este servicio proporciona la prueba ante una tercera parte de que cada una de 
las entidades comunicantes han participado en una comunicación. Puede ser de dos tipos: 
 
o Con prueba de origen. Cuando el destinatario tiene prueba del origen de los datos. 
o Con prueba de entrega. Cuando el origen tiene prueba de la entrega íntegra de los 
datos al destinatario deseado. 
 
Para proporcionar estos servicios de seguridad es necesario incorporar en los niveles apropiados 
del Modelo de Referencia OSI los siguientes mecanismos de seguridad: 
 
• Cifrado. El cifrado puede hacerse utilizando sistemas criptográficos simétricos o 
asimétricos y se puede aplicar extremo a extremo o individualmente a cada enlace del 
sistema de comunicaciones. 
• El mecanismo de cifrado soporta el servicio de confidencialidad de datos al tiempo que 
actúa como complemento de otros mecanismos de seguridad. 
• Firma digital. Se puede definir la firma digital como el conjunto de datos que se añaden a 
una unidad de datos para protegerlos contra la falsificación, permitiendo al receptor probar 
la fuente y la integridad de los mismos. La firma digital supone el cifrado, con una 
componente secreta del firmante, de la unidad de datos y la elaboración de un valor de 
control criptográfico. 
La firma digital descrita por ITU y OSI en el Entorno de Autenticación del Directorio utiliza un 
esquema criptográfico asimétrico. La firma consiste en una cadena que contiene el resultado de 
cifrar con RSA aplicando la clave privada del firmante, una versión comprimida, mediante una 
función hash unidireccional y libre de colisiones, del texto a firmar. 
Para verificar la firma, el receptor descifra la firma con la clave pública del emisor, comprime con la 
función hash al texto original recibido y compara el resultado de la parte descifrada con la parte 
comprimida, si ambas coinciden el emisor tiene garantía de que el texto no ha sido modificado. 
Como el emisor utiliza su clave secreta para cifrar la parte comprimida del mensaje, puede 
probarse ante una tercera parte, que la firma sólo ha podido ser generada por el usuario que 
guarda la componente secreta. 
El mecanismo de firma digital soporta los servicios de integridad de datos, autenticación de origen 
y no repudio con prueba de origen. Para proporcionar el servicio de no repudio con prueba de 
entrega es necesario forzar al receptor a enviar al emisor un recibo firmado digitalmente. 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 10 IPN-ESIME 
• Control de acceso. Este mecanismo se utiliza para autenticar las capacidades de una 
entidad, con el fin de asegurar los derechos de acceso a recursos que posee. El control de 
acceso se puede realizar en el origen o en un punto intermedio, y se encarga de asegurar 
si el emisor está autorizado a comunicarse con el receptor y/o a usar los recursos de 
comunicación requeridos. Si una entidad intenta acceder a un recurso no autorizado, o 
intenta el acceso de forma impropia a un recurso autorizado, entonces la función de control 
de acceso rechazará el intento, al tiempo que puede informar del incidente, con el 
propósito de generar una alarma y/o registrarlo. El mecanismo de control de acceso 
soporta el servicio de control de acceso. 
 
• Integridad de datos. Es necesario diferenciar entre la integridad de una unidad de datos y 
la integridad de una secuencia de unidades de datos ya que se utilizan distintos modelos 
de mecanismos de seguridad para proporcionar ambos servicios de integridad. Para 
proporcionar la integridad de una unidad de datos la entidad emisora añade a la unidad de 
datos una cantidad que se calcula en función de los datos. Esta cantidad, probablemente 
cifrada con técnicas simétricas o asimétricas, puede ser una información suplementaria 
compuesta por un código de control de bloque, o un valor de control criptográfico. La 
entidad receptora genera la misma cantidad a partir del texto original y la compara con la 
recibida para determinar si los datos no se han modificado durante la transmisión. 
 
Para proporcionar integridad a una secuencia de unidades de datos se requiere, adicionalmente, 
alguna forma de ordenación explícita, tal como la numeración de secuencia, un sello de tiempo o 
un encadenamiento criptográfico. 
 
El mecanismo de integridad de datos soporta el servicio de integridad de datos. 
Intercambio de autentificación. Existen dos grados en el mecanismo de autenticación: 
 
1. Autentificación simple. El emisor envía su nombre distintivo y una contraseña al receptor, el 
cual los comprueba. 
2. Autentificación fuerte. Utiliza las propiedades de los criptosistemas de clave pública. Cada 
usuario se identifica por un nombre distintivo y por su clave secreta. Cuando un segundo 
usuario desea comprobar laautenticidad de su interlocutor deberá comprobar que éste 
está en posesión de su clave secreta, para lo cual deberá obtener su clave pública. Para 
que un usuario confíe en el procedimiento de autenticación, la clave pública de su 
interlocutor se tiene que obtener de una fuente de confianza, a la que se denomina 
Autoridad de Certificación. La Autoridad de Certificación utiliza un algoritmo de clave 
pública para certificar la clave pública de un usuario produciendo así un certificado. 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 11 IPN-ESIME 
Un certificado es un documento firmado por una Autoridad de Certificación, válido dunte el 
período de tiempo indicado, que asocia una clave pública a un usuario. 
 
El mecanismo de intercambio de autenticación se utiliza para soportar el servicio de autenticación 
de entidad par. 
 
1.3 Problemática y Justificación 
Problemática.- La mayor parte de las implementaciones de mecanismos de seguridad y por tanto 
los servicios de seguridad, han sido en software y se puede comprobar si se sigue el Modelo OSI 
de la ISO/IEC 7498. Donde claramente se muestra como en la capa de aplicación se pueden 
implementar todos los servicios de seguridad y por tanto todos son desarrollos en software bajo 
alguna plataforma de programación conocida. Un ejemplo en particular donde se implementa el 
AES-128 en software es el que usa la aplicación WinRAR para comprimir y cifrar un documento. En 
otras aplicaciones de cifrado y por la misma razón el diseño de protocolos de comunicación se 
consideran sólo implementaciones en software para cifrar la información como por ejemplo los 
usados en los protocolos IPSec, IPv6 y VozIP. En estos protocolos los servicios de seguridad son 
transparentes al usuario y como sea significa más carga en el canal de transmisión, y a veces se 
duplican los procesos para el envío de información, como en el caso del protocolo Counter CBC-
MAC (CCMP). Padrón A., Velázquez J., et al., (2011). 
 
Justificación.- Para resolver la problemática anterior se puede analizar la misma norma ISO/IEC-
7498, en la parte de implementación de los servicios de seguridad vía mecanismos de control y 
monitoreo, en la cual muestra que solamente dos servicios no se implementan con técnicas 
criptográficas (control de acceso y no repudio). La implementación en hardware de técnicas 
criptográficas en protocolos de comunicación produce una mejor eficiencia en las comunicaciones 
y sólo viaja información cifrada sobre el canal de transmisión. Estas implementaciones estarían 
contempladas dentro del Modelo OSI en la capa física. 
 
 
1.4 Estado del Arte 
En la actualidad existen ya algunas implementaciones de seguridad en sistemas embebidos, por 
ejemplo el procesador criptográfico de “Globull” es capaz de codificar datos sobre la marcha a 
velocidades de 100 Mbps utilizando tecnología “Advanced Encryption Standard” con clave de 256 
bits (AES-256). Sin la contraseña del legítimo usuario, la información no puede ser descifrada. El 
Globull tiene el tamaño y peso aproximado de un iPod Clásico. Dispone de una pantalla a color, 
unidad de disco duro de 60 GB y cable USB 2.0. Conectándolo a cualquier PC que pueda 
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 12 IPN-ESIME 
arrancarse desde una unidad USB 2.0 externa, encendiendo la máquina e introduciendo su 
contraseña en un diminuto panel táctil debajo de la pantalla del dispositivo, el usuario conseguirá 
acceso a sus datos, aplicaciones y, en general, a su entorno habitual de trabajo. Apagando 
después el ordenador, podrá llevarse los datos sin dejar rastro alguno sobre sus contraseñas. 
http://www.idg.es/. 
 
Otro ejemplo de estos dispositivos es el “IronKey”, que es una memoria flash para asegurar la 
información almacenada. Con IronKey nadie excepto el propietario o usuario autorizado puede 
acceder a los datos almacenados. El acceso a la memoria está protegido con un sistema único de 
autenticación de doble factor que consiste en un certificado digital y una contraseña. Los datos se 
guardan en la memoria flash con un cifrado AES-256 que cumple con estándares militares. En 
caso de violación física o ataque de fuerza bruta, las claves de cifrado se autodestruyen. Ahora los 
IronKey también tienen la posibilidad de realizar autenticación de dispositivos. 
http://www.ironkey.com/en-US/. 
 
Estos son muy buenos ejemplos de implementaciones en hardware de servicios de seguridad, sin 
embargo sólo son dispositivos para almacenar información. Los dispositivos portátiles de 
almacenamiento son una manera muy popular de transportar archivos entre ordenadores y hacer 
copias de seguridad de la información más importante. A pesar de eso, la ubicuidad de estos 
dispositivos aumentan las preocupaciones de seguridad al llevar datos confidenciales. Es 
importante evitar que esta información caiga en manos de usuarios no autorizados si el dispositivo 
se pierde o es robado. El cifrado es una manera eficaz de proteger la privacidad de los datos 
corporativos y de los datos personales. 
 
Si bien los programas de software de cifrado pueden ayudar a proteger los datos y proporcionan 
una buena primera línea de defensa, son vulnerables a una serie de ataques de descifrado. 
El hardware de cifrado ofrece una mayor protección contra los mismos modelos de amenaza para 
dispositivos. Ahora se vuelve interesante preguntar ¿qué hay en cuanto a los protocolos de 
comunicación? 
 
En comunicaciones existen los protocolos como el “Secure Sockets Layer” (SSL; en español capa 
de conexión segura) y su sucesor “Transport Layer Security” (TLS; en español seguridad de la 
capa de transporte), ambos son protocolos criptográficos que proporcionan a una red 
comunicaciones seguras, comúnmente el Internet. El protocolo SSL fue desarrollado originalmente 
por Netscape. La versión 1.0 nunca se entregó públicamente; la versión 2.0 se presentó en febrero 
de 1995 pero "contenía una cantidad de fallas de seguridad que al final llevaron al diseño de la 
versión SSL 3.0". Dicha versión, presentada en 1996, fue un rediseño completo del protocolo 
producido por Paul Kocher, quien trabajó con los ingenieros de Netscape Phil Karlton y Alan Freier. 
http://www.ironkey.com/en-US/�
Capítulo 1. Marco Teórico Contextual 
alepadgo@gmail.com 13 IPN-ESIME 
Las versiones más nuevas de SSL/TLS están basadas en SSL 3.0. El borrador de 1996 de SSL 3.0 
fue publicado por la IETF como el histórico RFC 6101. TLS 1.0 fue definido en el RFC 2246 en 
enero de 1999 y es una actualización de SSL versión 3.0. Como dice el RFC, "las diferencias entre 
este protocolo y SSL 3.0 no son dramáticas, pero son significativas en impedir la interoperabilidad 
entre TLS 1.0 y SSL 3.0". TLS 1.0 incluye una forma en la cual la implementación puede 
conectarse en SSL 3.0, debilitando la seguridad. https://es.wikipedia.org/wiki/TLS. 
 
Algunas de estas versiones usan el estándar AES con modos de operación: Cipher Block Chaining 
(CBC), Galois/Counter (GCM) y modo Cipher Counter Mode (CCM). Pero a pesar de que se usan 
técnicas Criptográficas no son implementaciones en hardware. 
 
En resumen en este estado del arte se presentaron desarrollos de implementaciones criptográficas 
para darle seguridad a dispositivos las cuales están desarrolladas tanto en software como en 
hardware pero sólo para almacenamiento de datos cifrados. Y también implementaciones en 
protocolos de comunicación pero sólo con desarrollos en software. Lo cual conduce a la motivación 
de este trabajo de tesis, proponiendo comunicacionesentre dispositivos por puerto serie mediante 
implementaciones en hardware. En particular se desarrollo la implementación en FPGA del 
algoritmo AES con modo de operación Cipher FeedBack (CFB) para cifrar y descifrar una 
comunicación serial de datos. 
 
 
 
 
 
https://tools.ietf.org/html/rfc2246�
https://es.wikipedia.org/wiki/TLS�
https://es.wikipedia.org/w/index.php?title=Modo_CCM&action=edit&redlink=1�
 
 
 
 
 
 
 
 
Capítulo 2 
Antecedentes VHDL 
 
 
 
 
 
 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 14 IPN-ESIME 
2. Antecedentes VHDL 
Conforme ha avanzado la tecnología en desarrollo y diseño de circuitos electrónicos, se ha logrado 
pasar del alambrado en “protoboard” a simulaciones de análisis y diseño asistido por computadora 
con herramientas tan complejas que a veces complica su entendimiento. Se buscaba acoplarse 
con una de estas herramientas para un manejo sencillo y poder implantar los diseños de los 
circuitos mediante una interfaz amigable con el usuario. Para ello era necesario iniciar con señales 
de entrada de acorde a la naturaleza del diseño implementado, esto a su vez para que la 
interpretación de los resultados, es decir las señales de salida fuera sencilla. Estos paquetes de 
software para diseño de circuitos eran los llamados CAD y algunos parecidos al SPICE en forma 
general. Una vez obtenidos los resultados requeridos se procedía a desarrollar el circuito impreso 
con otras herramientas diseñadas para tal tarea, un ejemplo de esto era el paquete OrCAD, en 
particular la herramienta PCB. 
Algunos de los modelos de circuitos neuronales electrónicos diseñados por el Laboratorio de 
Computación Adaptable antes Ingeniería Neuronal eran implementados con este tipo de 
herramientas. Padrón, (1997). Para modelos más complicados de redes se empezó a usar las 
herramientas de MATLAB, cuando las ecuaciones de los modelos se podían implementar en 
SIMULINK. La interpretación de los resultados era más fácil de realizar, cuantitativamente y 
cualitativamente. Padrón et al., (2000) pp. 338-349. 
Luego con la ayuda de las herramientas de Xilinx para el diseño de circuitos implementados en 
FPGA´s, en forma lógica o algorítmica ha permitido llevar a cabo las simulaciones e 
implementaciones tanto en software como en hardware. Se ha presentado un desarrollo de 
funciones para algunas interfaces genéricas sobre el sistema de desarrollo Spartan 3E de Xilinx, 
además de una interfaz para el control de periféricos entre un FPGA y un microcontrolador, en un 
reporte en los últimos años. Prieto, Padrón et al., (2011a). El uso que se dará a las interfaces 
desarrolladas están enfocadas a aplicaciones de visualización (LCD y display de 7 segmentos), 
introducción de datos (ratón y teclado) y almacenamiento masivo de datos (memoria y transceiver). 
Los desarrollos de interfaces asignados a cada tarjeta manufacturada por Xilinx tiene el propósito 
de que los usuarios puedan emplearlas de acuerdo a sus necesidades. Es decir, el tipo de interfaz 
que el usuario puede usar y desarrollar conforme al problema que enfrenta para resolver una tarea 
en particular. Programar los sistemas de desarrollo Xilinx para su implementación en los FPGA´s 
en el lenguaje Verilog o VHDL de su conveniencia, hacen que este tipo de tarjetas kit tengan la 
versatilidad de emplear varias interfaces en cuanto estén disponibles físicamente o sea posible 
desarrollarlas o programarlas e integrarlas al sistema diseñado. 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 15 IPN-ESIME 
2.1 Lenguajes de descripción del hardware 
Los lenguajes de descripción hardware (HDL, Hardware Description Language) surgen de la 
necesidad de los diseñadores de disponer de un conjunto de herramientas que permitan describir 
los sistemas digitales de formas diferentes, facilitando el diálogo entre los propios diseñadores, 
aunque también entre las herramientas de diseño asistido por computadora (CAD, Computer Aided 
Design) y entre diseñadores y herramientas. Los sistemas de desarrollo basados en lenguajes HDL 
permiten especificar y modelar la estructura y función de un circuito digital; incluyen herramientas 
para compilar, simular y sintetizar sistemas digitales. Terés L., et al, (1998). Estas herramientas de 
programación se utilizan para comprobar el funcionamiento del modelo antes de que sea 
construido. Ahora, los lenguajes HDL más utilizados son VHDL y Verilog, ya que están 
estandarizados por IEEE (Institute of Electrical and Electronic Engineers). 
VHDL proviene de VHSIC (Very High Speed Integrated Circuit) Hardware Description Language. 
VHDL es un lenguaje de descripción del hardware que puede utilizarse para modelar, documentar, 
simular, verificar y sintetizar un sistema digital. Por tanto, abarca el ciclo completo de diseño (salvo 
el trazado físico o layout) desde las especificaciones iniciales hasta la construcción del prototipo 
hardware. Proporciona el soporte necesario para especificar su comportamiento o estructura, 
incluyendo jerarquías. Así mismo, es útil para metodologías de diseño ascendentes (bottom-up) 
como, sobre todo descendentes (top-down). La semántica y construcciones del lenguaje permiten 
también diseñar con facilidad bancos de prueba (test-bench), mediante los que se lleva a cabo la 
simulación de los sistemas modelados. Entre las características del VHDL de ámbito general 
derivado del lenguaje de alto nivel ADA (que es un lenguaje para programar sistemas en tiempo 
real por excelencia), dispone de tipos abstractos para definir el formato y valores de señales, 
variables, constantes, etc. Y proporciona amplias facilidades para la realización de algoritmos. 
Admite casi todos los niveles de descripción, desde el algorítmico (nivel más alto) hasta el lógico 
(nivel más bajo). Para ello proporciona herramientas semánticas y sintácticas que se pueden 
agrupar como: 
• Aquellas orientadas a las descripciones del comportamiento del circuito. 
• Aquellas orientadas a la descripción de las relaciones entre los distintos bloques de un 
circuito, es decir, su estructura. 
Al realizar una descripción VHDL es importante elegir adecuadamente el nivel de función del 
objetivo perseguido. Por ejemplo, si se pretende sintetizar la descripción realizada, es decir, si el 
objetivo final es obtener un conjunto de puertas e interconexiones, no se debe emplear el nivel 
algorítmico, pues en general las herramientas actuales de síntesis no procesan de forma eficiente 
estas descripciones. Sin embargo, este nivel sí es adecuado cuando el objetivo es comprobar que 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 16 IPN-ESIME 
un sistema complejo funciona correctamente, pues se puede describir y simular de una forma 
rápida y eficaz. 
El lenguaje VHDL presenta tres métodos básicos para describir un circuito digital por software: 
• El nivel algorítmico es el que presenta un mayor grado de abstracción (alto nivel), aquí el 
diseñador solo describe el comportamiento del sistema, sin preocuparse de las señales o 
componentes internos del mismo. También llamado nivel de comportamiento o behavior. 
• El nivel RTL (Register-Transfer Level, nivel de transferencia de registros) proporciona un 
cierto grado de abstracción con respecto al hardware, pero el diseñador se ve obligado a 
describir las distintas señales que interactúan en un circuito y su comportamiento en 
función de las entradas por medio de ecuaciones lógicas y sentencias de asignación. 
También conocido como nivel de flujo de datos. 
• El nivel lógico describe la estructurainterna de un circuito basándose en unos 
componentes básicos definidos previamente (equivaldría a un diagrama lógico). 
Toda descripción en VHDL está constituida al menos por tres tipos de elementos: bibliotecas 
(libraries), entidades (entities) y arquitecturas (architectures). El diseñador generalmente realiza la 
descripción de las entidades empleando elementos almacenados en las bibliotecas. En la 
declaración de la entidad se define el diseño como si fuera un producto encapsulado, indicando el 
número de pines, los puertos de entrada y salida. La entidad puede definir bien las entradas y 
salidas de un circuito integrado por diseñar o puede definir la interfaz de un módulo que será 
utilizado en un diseño más grande. Para que la descripción de un circuito sea completa se 
necesita, además de su declaración como entidad, una especificación de su funcionamiento, la 
arquitectura es la encargada de ello. Es posible realizar descripciones del funcionamiento del 
circuito, por lo que pueden existir varias arquitecturas para una misma entidad. Baena A., (2010). 
 
2.2 Lenguajes de descripción de Hardware versus desarrollo de Software 
Desde siempre las distintas herramientas y entornos de CAD han hecho uso de lenguajes y 
formatos para describir y manejar los distintos objetos del diseño electrónico. Algunos de estos 
lenguajes eran notaciones explícitas para realizar las descripciones de entrada a una cierta 
herramienta; mientras que otros son formatos intermedios propios de cada herramienta para 
agilizar sus procesos y casi siempre transparentes y desconocidos para el usuario. Sin embargo, 
todos ellos se limitaban al entorno de CAD que les era propio. Los HDL’s, además del grado de 
estandarización que supusieron, adoptaron conceptos de la ingeniería del software para la 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 17 IPN-ESIME 
descripción y modelado del hardware. Desde el punto de vista de la sintaxis, los HDL’s son muy 
similares a los lenguajes de programación de alto nivel (HLL, High Level Languages) para el 
desarrollo de software. De hecho, en muchos casos, el HDL se deriva de un HLL, así el Verilog 
tiene muchas reminiscencias del lenguaje “C”; mientras que el VHDL procede del ADA, de quien 
hereda muchos de sus conceptos, propiedades y estructuras. Estas similitudes sintácticas entre 
ambos tipos de lenguajes, si bien pueden facilitar el aprendizaje inicial y el desarrollo de modelos 
de hardware a aquellos ingenieros con experiencia en programación, también encierran ciertos 
peligros, pues en aquellos casos en que el modelo en HDL se realiza para su posterior síntesis e 
implementación, el diseñador debe pensar y describir en términos de hardware aunque la sintaxis 
sea de software. Al usar estrategias de Software será aconsejable cuando el modelo a desarrollar 
sea exclusivamente para simulación, pues en ese caso se tratará de optimizar el modelo de cara a 
la ejecución de las distintas etapas y procesos de simulación. Los lenguajes de descripción de 
hardware (HDL) son lenguajes de alto nivel, similares a los de programación (C, PASCAL, ADA, 
etc.), con una sintaxis y semántica definidas para facilitar el modelado y descripción de circuitos 
electrónicos, desde las celdas de base de un ASIC hasta sistemas completos, pudiéndose realizar 
estas descripciones a distintos niveles de abstracción, precisión y estilos de modelado, tal y como 
se muestran en la Figura (2.1). 
Los HDL nacen para modelar el comportamiento de un componente de cara a su simulación, 
aunque también se utilizan para describir el diseño de un circuito para su implementación a través 
de etapas de síntesis validadas vía la simulación, Figura (2.2). 
Mientras en software se recurre a los lenguajes de alto nivel para implementar los algoritmos de 
forma independiente del procesador que los va a ejecutar, en el caso del hardware son los HDL, 
quienes permiten descripciones de los circuitos a alto nivel de abstracción e independientes de la 
implementación tecnológica final, Figura (2.2a). 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 18 IPN-ESIME 
 
Figura 2.1 Niveles de abstracción/precisión y estilos de modelado VHDL. 
A partir de tales descripciones, los procesos de diseño descendente (top-down) aplican 
procedimientos progresivos de síntesis, dando lugar a descripciones más detalladas de la 
implementación hasta alcanzar una descripción física concreta totalmente dependiente de la 
tecnología seleccionada. La validación de las distintas descripciones se realiza mediante los 
correspondientes procesos de simulación y análisis y las iteraciones de corrección resultantes, 
Figura (2b). 
 
Figura 2.2 Desarrollo en software versus hardware: (a) niveles de abstracción y lenguajes de alto 
nivel y (b) esquema básico del diseño descendente con HDL. 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 19 IPN-ESIME 
2.3 Descripción de la tarjeta Spartan 3E Starter XC3S500E 
La tarjeta Spartan 3E XC3S500E Starter suministra un poderoso y altísimo avance contenido 
dentro del desarrollo de la plataforma para diseños enfocados a la Spartan 3E FPGA de Xilinx. 
Este presenta un Puerto de 500K de Spartan 3E FPGA con un procesador RISC de 32 bit e 
interfaz DDR. La unidad “Spartan-3E starter Kit Board” proporciona las herramientas necesarias 
para probar el sistema. Incluye la placa de pruebas con una FPGA Spartan-3E modelo XC3S500E, 
fuente de alimentación, cable USB para programar el dispositivo, software para sintetizar e 
implementar los modelos diseñados y manuales de referencia. La tarjeta también presenta una 
plataforma flash Xilinx, USB y una interfaz programable paralela JTAG con numerosas opciones de 
configuración de FPGA a través de la tarjeta Intel StrataFlash y el ST Microelectronics Serial Flash. 
La tarjeta es compatible con todas las versiones de la herramienta ISE Xilinx incluyendo el 
WebPack gratuito. La tarjeta diseñada con fuente de poder puede ser implementada con costos no 
tan altos. La tarjeta Spartan 3E Starter es también compatible con el Kit de desarrollo embebido 
MicroBlaze y PicoBlaze de Xilinx. Spartan-3E FPGA Starter Kit Board User Guide, (2008). 
 
 
Figura 2.3. Tarjeta de desarrollo Spartan-3E. 
A continuación se presentan algunas características de la tarjeta: 
Capítulo 2. Antecedentes VHDL 
alepadgo@gmail.com 20 IPN-ESIME 
• Dispositivos Xilinx integrados: 
o FPGA de la familia Spartan-3E modelo XC3S500E-4FG320C (con 232 pines de 
E/S para el usuario, 1164 CLBs o bloques lógicos configurables y 10000 celdas o 
módulos lógicos) 
o Controlador CPLD CoolRunner-II CPLD (XC2C64A-5VQ44C) 
o 4 Mbits de memoria PROM Platform Flash 
o Incluye una Maxim DS2432 serial EEPROM con un SHA-1 integrado (firma digital) 
• Reloj: oscilador de 50 [MHz] 
• Otra memoria incluida: 
o 128 [Mbits] de memoria Parallel Flash 
o 16 [Mbits] de memoria SPI (Serial Peripheral Interface) Flash 
o 64 [MBytes] de memoria DDR SDRAM 
• Interfaces y conectores: 
o 4 interruptores tipo pulsador 
o 4 salidas DAC (Digital-to-Analog Converter) 
o 2 entradas ADC (Analog-to-Digital Converter) 
o Conexión Ethernet 10/100 
o Puerto USB de programación 
o 2 puertos serie RS-232 
o Puerto PS/2 para ratón o teclado 
o 4 interruptores tipo “slide” (deslizables) 
o Puerto VGA para despliegue vía un conector DB15 
o Puerto para un Reloj Auxiliar: Oscilador 
• Plataforma flash Xilinx XCF04 para almacenar configuraciones dela FPGA 
• 2MB ST Microelectronics Serial Flash 
• Fuente de poder con tecnología lineal 
• Texas Instruments TPS75003 con CI de manejo de Triple-Supply Power 
• SMSC LAN83C185 Ethernet PHY 
• 8 led de prueba 
• Display: Pantalla LCD de 2 líneas de 16 caracteres. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Capítulo 3 
 
Estándar Criptográfico 
 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 21 IPN-ESIME 
3. Estándar Criptográfico 
 
En este capítulo se presenta el funcionamiento de las operaciones llevadas a cabo para el 
algoritmo de cifrado AES por bloques, empleando diferentes tamaños de claves y calculando el 
número de rondas para cada caso. Se mostrará cómo trabaja el proceso para la expansión de 
claves necesarias para cada caso. Se toma la norma FIPS-197 (2001), como referencia para 
consultar y cotejar los algunos detalles en específico. Para el caso del modo de operación CFB se 
toma como referencia la norma NIST SP800-38A (2001), siguiendo el procedimiento que se debe 
integrar para cumplir con el propósito de este trabajo. 
 
3.1 Funcionamiento del Algoritmo AES 
 
Para entender cómo funciona el algoritmo AES será necesario mencionar algunos antecedentes en 
el campo de la Aritmética de Números Finitos y Matemáticas Discretas. Antecedentes que habrá 
que recordar o revisar consultando bibliografía específica en los temas de representaciones de 
números en diferentes bases (binaria, decimal, hexadecimal y polinomial), operaciones sus básicas 
en cada base (suma, resta, multiplicación y división). 
Estrictamente hablando, AES no es precisamente Rijndael (aunque en la práctica se los llama de 
manera indistinta) ya que Rijndael permite un mayor rango de tamaño de bloques y longitud de 
claves; AES tiene un tamaño de bloque fijo de 128 bits y tamaños de llave de 128, 192 ó 256 bits, 
mientras que Rijndael puede ser especificado por una clave que sea múltiplo de 32 bits, con un 
mínimo de 128 bits y un máximo de 256 bits. La mayoría de los cálculos del algoritmo AES se 
hacen en un campo finito determinado. AES opera en una matriz de 4×4 bytes, llamada state 
(algunas versiones de Rijndael con un tamaño de bloque mayor tienen columnas adicionales en el 
state). Ramió J. (2006). 
La estructura del algoritmo Rijndael está formada por un conjunto de “rondas”, entendiendo por 
rondas un conjunto de iteraciones de 4 funciones matemáticas diferentes e invertibles. El algoritmo 
representa el “estado” como una matriz rectangular de bytes, que posee 4 renglones y Nb 
columnas. Siendo el número de columnas Nb en función del tamaño del bloque y se puede calcular 
de acuerdo a: 
32/bitsenutilizadobloquedeltamañoNb = (3.1) 
Por ejemplo la representación de una matriz de estado para un tamaño de 160 bits (Nb = 5), se 
muestra en la Tabla (3.1). 
Tabla 3.1 Matriz del texto plano de 4X5 bytes. 
 
a00 a01 a02 a03 a04 
a10 a11 a12 a13 a14 
a20 a21 a22 a23 a24 
a30 a31 a32 a33 a34 
 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 22 IPN-ESIME 
La clave del sistema se representa con una estructura análoga a la del “estado”, es decir, se 
representa mediante una matriz rectangular de bytes de 4 renglones y Nk columnas. Siendo el 
número de columnas Nk en función del tamaño de la clave: 
 
32/bitsenclaveladetamañoNk = (3.2) 
 
Por ejemplo la representación de una clave de 128 bits (Nk = 4), en forma de matriz rectangular se 
muestra en la Tabla (3.2). 
 
Tabla 3.2. Representación de la matriz clave de 4X4 byte. 
k00 k01 k02 k03 k04 
k10 k11 k12 k13 k14 
k20 k21 k22 k23 k24 
k30 k31 k32 k33 k34 
 
Una vez establecidos estos parámetros iniciales el bloque que se pretende cifrar y descifrar se 
traslada byte a byte sobre la matriz de estado, siguiendo la secuencia a00, a01, a20, a30, a01, …,a34; y 
análogamente los bytes de la clave se copian en la matriz de la clave siguiendo el mismo criterio, 
k00, k10, k20, k30, k01, …,k33. 
A partir de este momento la matriz de estado sufre 4 transformaciones por ronda (iteración), 
utilizándose en el proceso subclaves para cada ronda que se generan de la clave original elegida. 
Las 4 transformaciones que aplica el algoritmo a la matriz de estado por ronda son: 
 
• Función ByteSub: sustitución con propiedades óptimas de no linealidad. 
• Función ShiftRow: Permiten un alto nivel confusión de la información a lo largo de las 
diferentes rondas. 
• Función MixColumn: Permiten un alto nivel difusión de la información a lo largo de las 
diferentes rondas. 
• Función AddRoudKey: Permite aplicar a la matriz de estado una operación “or” exclusiva 
con la subclave correspondiente a cada ronda. 
 
El número de iteraciones o rondas de las 4 transformaciones sobre la información, o mejor dicho 
sobre la matriz de estado intermedio depende de la versión del algoritmo que se utilice. Los 
autores definen que para tamaños de bloques y claves entre 128 y 256 bits (con incrementos de 32 
bits) el número de rondas Nr es determinado por la siguiente expresión: 
 
6),max( += bkr NNN (3.3) 
 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 23 IPN-ESIME 
Por ejemplo, para un algoritmo Rijndael de tamaño de clave y de bloque 128 bits, el número de 
rondas es 10. Se observa claramente que el número de vueltas o iteraciones del algoritmo 
dependen del tamaño de bloque y clave elegidos, Tabla (3.3). 
 
Tabla 3.3 Número de rondas para Rijndael en función de tamaños de clave y bloque: 
 
Clave/Bloque Nb = 4 (128 - bits) Nb = 6 (192 - bits) Nb = 8 (256 - bits) 
Nk = 4 (128 - bits) 10 12 14 
Nk = 6 (192 - bits) 12 12 14 
Nk = 8 (256 - bits) 14 14 14 
 
En la Figura (3.1) se muestra el proceso de cifrado. 
 
Figura 3.1 Esquema descriptivo del algoritmo por rondas. 
 
A continuación se describirán cada una de las funciones que se emplean en el algoritmo. 
 
 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 24 IPN-ESIME 
Función AddRoudKey 
 
En el paso AddRoundKey, la subclave se combina con el state (estado-actual). En cada ronda se 
obtiene una subclave de la clave principal, usando la iteración de la clave; cada subclave es del 
mismo tamaño del state. La subclave se agrega combinando cada byte del state con el 
correspondiente byte de la subclave usando la operación or-exclusiva. Para esto se necesita hacer 
la expansión de la clave dependiendo si es un AES – 128, 192 o 256. Figura (3.2). 
 
Figura 3.2 Esquema que describe la función AddRoundKey usando la operación or-exclusiva. 
 
En el paso AddRoundKey, cada byte del state se combina con un byte de la subclave usando la 
operación or-exclusiva (⊕). 
 
Cálculo de las Subclaves usando el esquema de claves de Rijndael 
 
La función de selección simplemente toma consecutivamente de la secuencia obtenida por la 
función de expansión de clave bytes que va asignando a cada subclave Ki, para formar bloques del 
mismo tamaño que la matriz de estado. Es decir, toma Nb*4 bytes para cada vuelta. La generaciónde las claves (expansión de la clave) para el proceso de descifrado se hace de forma idéntica al 
procesos de cifrado. La diferencia reside en la función de selección de la clave. En el proceso de 
descifrado se toman bytes de la lista de claves desde los valores finales hasta llegar a los iniciales, 
que es la propia clave del usuario. Es decir, la última clave que se utilizó para cifrar, será la primera 
que se utilizará para descifrar. La función de expansión de clave permite generar bytes útiles como 
subclaves a partir de la clave original K. Esta función de expansión se puede describir como un 
arreglo lineal, denominado W, de palabras de 4 bytes y con una longitud de Nb*(Nr+1). Las 
primeras Nk palabras de este arreglo contienen la clave de cifrado, ya que la clave del usuario se 
mapea tal cual al arreglo W, mientras que el resto de palabras se van generando a partir de estas 
primeras Nk palabras. 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 25 IPN-ESIME 
 
Figura 3.3 Ejemplo de subclaves de expansión para Nb=6 y Nk=4. 
 
Se observa cómo la función de expansión de clave depende del valor Nk, ante este hecho los 
autores definieron dos versiones para esta función, una para Nk ≤ 6 y otra para Nk > 6, por motivos 
de seguridad. Se mapea directamente la clave del usuario al arreglo W entonces se mapean Nk 
palabras. El resto del funcionamiento permite generar bytes para subclaves, en este proceso 
entran en juego la función ByteSub que devuelve el resultado de aplicar la S-BOX de Rijndale a 
cada uno de los bytes de los 32 bits de la palabra que se le pasa como parámetro. La función “Rot” 
que rota una posición a la izquierda los bytes de la palabra, de tal forma que si se le pasa como 
parámetros la palabra de 4 bytes (a, b, c, d) devuelve (b, c, d, a). Y la función “Rcon” que genera 
una constante teniendo en cuenta que: Rcon(j) = (R(j), 0, 0, 0). Cada R(j) es el elemento ∈ GF(28) 
correspondiente al valor xj-1. 
Cuando Nk ≤ 6, para todo valor de “i” que no sea múltiplo de Nk, las palabras de subclaves se 
calculan como: )1()()( −⊕−= iWNiWiW k . Para todo valor de “i” que sea múltiplo de Nk se 
calculan como: )]/()])1([([)()( kk NiRconiWRotByteByteSubNiWiW ⊕−⊕−= . La variable 
“i” denota la posición dentro del arreglo W (i) que contiene los bytes de subclaves del sistema. Si 
por ejemplo se utiliza una clave de 128 bits (Nk =4) y un bloque de 128 bits (Nb =4) la longitud del 
arreglo W sería 44, (4*[10+1]). En las cuatro primeras posiciones del arreglo (0 a la 3) se copia la 
clave de usuario, el resto de posiciones, de la posición 4 a la 43, se rellenaría con valores 
calculados. En este caso la variable “i” tomaría los valores de 4 a 43. Para las posiciones del 
arreglo W(i) con valor de “i” 4, 8, 12, 16, 20, 24, 28, 32, 36, 40 (i múltiplo de Nk), la palabra de 4 
bytes se calcularía tomando una palabra que se encuentra 4 posiciones antes que ella y realizando 
una operación or-exclusiva con una transformación de la palabra que se encuentra una posición 
antes. Para el resto de los valores de “i” la palabra correspondiente a W (i) se calcula realizando 
una operación or-exclusiva entre la palabra que se encuentra una posición antes que la posición en 
la que se encuentra actualmente. Este ejemplo permite observar el procedimiento que sigue el 
algoritmo para generar nuevos bytes de subclaves, apoyándose en palabras ya existentes en el 
arreglo W, ya sea palabras de la clave de usuario directamente o palabras generadas de esta. 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 26 IPN-ESIME 
Para Nk > 6, el funcionamiento es igual que para Nk ≤ 6 salvo cuando el valor de la variable “i” 
satisface que “i mod Nk =4”, ver figura (3.4), en este caso las palabras de subclaves se calculan 
como: 
])1[()()( −⊕−= iWByteSubNiWiW k (3.4) 
 
Figura 3.4 Esquema que describe la expansión de las subclave. 
 
Una vez conocido el funcionamiento de la función de expansión de clave, para finalizar con la 
explicación de la función un ejemplo real de generación de bytes de subclaves para un algoritmo 
Rijndael con clave de 128 bits. 
 
Se selecciona clave de usuario: 
 Clave = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c (Nk =4) 
Se mapea a las 4 primeras posiciones del arreglo la clave del usuario, 
W[0]=2b 7e 15 16 
W[1]=28 ae d2 a6 
W[2]=ab f7 15 88 
W[3]=09 cf 4f 3c 
A partir de este momento se empieza a generar bytes de subclaves. Calcular W[4]: 
i=4 (i múltiplo de Nk) 
temp = W[3]= 09 cf 4f 3c 
Se aplica la función Rot →temp = cf 4f 3c 09 
Se aplica la función Byte Sub →(temp) = 8a 84 eb 01 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 27 IPN-ESIME 
Rcon[4/4]=Rcon[1] = [x0, {00}, {00}, {00}] = [{01}, {00}, {00}, {00}] 
Temp = Rcon[1] ⊕ temp = 8a 84 eb 01 ⊕ 01 00 00 00 = 8b 84 eb 01 
W[4] = W[0] ⊕ temp = 2b 7e 1516 ⊕ 8b 84 eb 01 = a0 fa fe 17 
 
Siguiendo todos los criterios descritos en esta función se podrían generar todos los bytes de 
subclaves necesarios para la versión del algoritmo con la que se trabajará. 
 
 
Función ByteSub 
 
En la fase de ByteSub, cada byte en el state es reemplazado con su entrada en una tabla de 
búsqueda fija de 8 bits, S; bij = S(aij). Figura (3.5). 
 
Figura 3.5 Esquema de la Función ByteSub para el intercambio de bits. 
 
En la etapa ByteSub, cada byte en la matriz es actualizado usando la caja-S de Rijndael de 8 bits. 
Esta operación provee la no linealidad en el cifrado. La caja-S utilizada proviene de la función 
inversa alrededor del GF(28), conocido por tener grandes propiedades de no linealidad. 
Para evitar ataques basados en simples propiedades algebraicas, la caja-S se construye por la 
combinación de la función inversa con una transformación afín invertible. La caja-S también se 
elige para evitar puntos estables (y es por lo tanto una permutación), y también cualesquiera 
puntos estables opuestos. 
 
La transformación ByteSub consiste en una sustitución no lineal que se aplica a cada byte de la 
matriz de estado (estado intermedio 1) de forma independiente, generando un nuevo byte. Esta 
transformación consiste en la sustitución de cada byte por el resultado de aplicarle la tabla de 
sustitución S-BOX. Esta tabla lógicamente es invertible y se construye mediante dos 
transformaciones. 
1ª Transformación.- Cada byte es considerado como un elemento en GF(28) que genera el 
polinomio irreducible m(x)= x8+x4+x3+x+1, siendo sustituido por su inversa multiplicativa. El valor 
cero queda inalterado, ya que no tiene inversa. 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 28 IPN-ESIME 
2ª Transformación.- Al resultado de la 1ª transformación se le aplica la siguiente transformación 
afín en GF(28), siendo x0, x1, x2, x3, x4, x5, x6, y x7 los bits del byte resultante de la 1ª 
transformación, e y0, y1, y2, y3, y4, y5, y6 e y7 los bits del resultado final de la transformación 
ByteSub. 
 
Tabla 3.4 Transformación afínen GF(28). 
 
 
 
Por ejemplo, si el byte al cual se le aplica la función ByteSub es “A=11001011”, se debería calcular 
su inversa multiplicativa. Cada byte en Rijndael se representa como un polinomio a(x), calcular la 
inversa multiplicativa consiste en buscar un polinomio b(x) (que es único) que multiplicado por a(x) 
modulo m(x) es igual a 1, es decir: 
a (x) • b(x) mod x8+x4+x3+x+1 = 1 (3.5) 
El polinomio buscado en este caso es b(x)=x2 que tiene una representación binaria de 
“B=00000100”. Se dice entonces que B es la inversa en GF(28) de A. Una vez que se tiene el 
resultado de la primera transformación, se debe aplicarle la transformación afín definida: 
 
Tabla 3.5 Ejemplo de la transformación afín en GF(28). 
 
 
Se obtiene el valor final de “y=00011111”. Luego el byte “A=11001011” se convierte en y al aplicar 
la función ByteSub. 
Utilizando estas dos transformaciones para todos los valores posibles de entrada (256 valores ya 
que se trabaja con un byte) se calcula una tabla de sustitución denominada S-Box útil para el 
proceso de cifrado. Gracias a esta tabla aplicar la función ByteSub resulta trivial, consiste en dividir 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 29 IPN-ESIME 
el byte de la matriz de estado en dos partes de 4 bits. Los 4 bits más significativos, denominados 
por x (toma valores de 0 a 15) actúan del renglón en la tabla y los 4 bits menos significativos de 
columna, denominados por “y” (toma valores de 0 a 15). El valor para ese renglón y columna en la 
tabla es resultado de aplicar S-Box a un byte. 
Siguiendo con el ejemplo anterior, si se tiene el byte “A=00011111” y se aplica la función ByteSub 
el resultado será (x=1100 [renglón c] y=1011 [columna b]) “y=0x1F” que en binario equivale a 
“y=00011111”, valor que es idéntico al calculado previamente. 
 
Tabla 3.6 S-Box para un byte genérico xy (hexadecimal). 
 
 
Para el proceso de descifrado es necesario calcular la función inversa de ByteSub. Esta función 
inversa consiste en calcular una tabla inversa a la utilizada en el proceso de cifrado. 
 
Tabla 3.7 Tabla inversa S-Box (hexadecimal). 
 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 30 IPN-ESIME 
Función ShiftRow 
 
En el paso ShiftRows, los bytes en cada fila del state son rotados de manera cíclica hacia la 
izquierda. El número de lugares que cada byte es rotado difiere para cada fila. Figura (3.6). 
 
 
Figura 3.6 Esquema que describe la función ShiftRow para el desplazamiento de cada renglón. 
 
El paso ShiftRows opera en las filas del state; rota de manera cíclica los bytes en cada fila por un 
determinado offset. En AES, la primera fila queda en la misma posición. Cada byte de la segunda 
fila es rotado una posición a la izquierda. De manera similar, la tercera y cuarta filas son rotadas 
por los offsets de dos y tres respectivamente. De esta manera, cada columna del state resultante 
del paso ShiftRows está compuesta por bytes de cada columna del state inicial. (variantes de 
Rijndael con mayor tamaño de bloque tienen offsets distintos). 
 
Función MixColumns 
 
En el paso MixColumns, cada columna del state es multiplicada por un polinomio constante c(x). 
Figura (3.7). 
 
 
Figura 3.7 Esquema que describe la función MixColumns con multiplicación polinomial GF(28). 
 
 
En el paso MixColumns, los cuatro bytes de cada columna del state se combinan usando una 
transformación lineal invertible. La función MixColumns toma cuatro bytes como entrada y devuelve 
cuatro bytes, donde cada byte de entrada influye todas las salidas de cuatro bytes. Junto con 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 31 IPN-ESIME 
ShiftRows, MixColumns implica difusión en el cifrado. Cada columna se trata como un polinomio 
GF(28) y luego se multiplica el módulo x4 + 1 con un polinomio fijo c(x). El paso MixColumns puede 
verse como una multiplicación matricial en el campo finito de Rijndael. 
 
 
3.2 Modo de Operación CFB para Cifrado y Descifrado de datos 
 
La norma NIST SP800-38A, (2001) es una recomendación de confidencialidad del modo de 
operación de cinco algoritmos para criptografía simétrica por bloque, como el algoritmo que se 
empleará en este trabajo, el estándar avanzado de cifrado (AES). Los modos se pueden utilizar 
conjuntamente con cualquier algoritmo simétrico que cifra por bloques que ha sido aprobado por la 
NIST. Los cinco modos son: Código de Libro Electrónico (ECB), cifrado por encadenamiento de 
bloques (CBC), cifrado por retroalimentación (CFB), retroalimentación de la salida (OFB), y modo 
contador (CTR), pueden proporcionar confidencialidad de los datos. 
Esta recomendación asume que un algoritmo simétrico por bloques se ha elegido como el 
algoritmo estándar y que una clave secreta aleatoria K, se ha establecido entre todas las partes 
involucradas en la comunicación. La clave criptográfica regula el funcionamiento del algoritmo de 
cifrado por bloques y por consiguiente, regula el funcionamiento del modo. Las especificaciones de 
los algoritmos de cifrado por bloques y los modos operación son públicas, así que la seguridad del 
modo depende del secreto de la clave. 
Un modo de operación sobre un algoritmo de cifrado por bloques consiste en dos procesos que 
son contrarios, uno cifra y el otro descifra. El cifrado es la transformación de un mensaje, llamado 
texto-plano, en una forma ilegible, llamado el texto-cifrado; el desciframiento es la transformación 
que recupera el texto-plano a partir del texto-cifrado. Estos procesos son dos funciones que como 
parte de la opción del algoritmo de cifrado por bloques, una de las dos funciones se señala como la 
función de cifrado, CIPHK; y la otra función entonces se llama función inversa de cifrado, CIPHk-1. 
Las entradas y las salidas de ambas funciones se llaman los bloques de la entrada y los bloques 
de la salida. Los bloques de la entrada y de la salida del algoritmo de cifrado por bloques tienen la 
misma longitud en bits, llamado el tamaño de bloque, denotado por “b”. El objetivo de la 
implementación de este modo de operación CFB es convertir el algoritmo de cifrado y descifrado 
por bloques en un algoritmo que cifre y descifre por flujo de datos. 
 
Vectores de Inicialización 
La entrada a los procesos del cifrado del modo CFB, incluye además del texto-plano, un bloque de 
los datos llamado el Vector de Inicialización (IV). El VI utiliza en un paso inicial en el cifrado de un 
mensaje y en el desciframiento correspondiente del mensaje. 
Capítulo 3. Estándar Criptográfico 
alepadgo@gmail.com 32 IPN-ESIME 
El IV no necesita ser secreto, sin embargo, para los modos de CBC y de CFB, el IV para cualquier 
ejecución particular del proceso de cifrado debe ser imprevisible. Para el modo de OFB, IV es único 
y se debe utilizar para cada ejecución del proceso del cifrado. 
 
Modo de Operación de Cifrado por Retroalimentación 
El modo de cifrado por retroalimentación

Continuar navegando