CAPÍTULO 3. COMPROBACIÓN Y SIMULACIÓN MEDIANTE EL XILINX ISE
3.3 Realización y simulación del mini AES 128
El nuevo proyecto creado para el mini AES siguió el mismo procedimiento que en Triple DES. En este se añadieron nueve archivos de fuente en VHDL, que conformaron la siguiente jerarquía de diseño:
Figura 3.9 Organización de los archivos de fuente del proyecto mini AES.
Es notable la importancia que tiene la segmentación del código en los proyectos más complicados. Así es más fácil la depuración. No obstante a diferencia de otros lenguajes de programación, en los lenguajes de descripción de hardware esto tiene una connotación diferente, pues se trata de un planteamiento organizacional de un circuito a partir de módulos. Así mismo se pudo apreciar en el proyecto del Triple DES.
El chequeo de la sintaxis del modelo fue exitoso. El símbolo esquemático obtenido automáticamente, con los pines de entrada/salida se muestra en la Figura 3.10.
Figura 3.10 Símbolo del mini AES obtenido automáticamente y emplazado en esquemático con los pines de entrada/salida.
La configuración del nicho de pruebas para este proyecto también fue dada por el autor, pero al añadir los archivos del testbench al proyecto y chequear la sintaxis se encontró una gran cantidad de errores. Resulta que el nicho de pruebas para el Mini AES es complejo. Utiliza bibliotecas específicas para la simulación con el ModelSim SE 6.0, que es con el que el autor simuló el proyecto. La biblioteca en cuestión es la std_developerskit, dotada con un conjunto de funciones ideales para convertir tipos de cadena hexadecimal a std_logic, algo que particularmente se usa en el nicho de pruebas que entregó el autor. De hecho el nicho de pruebas toma los juegos de datos desde el archivo adjunto ecb_tbl.txt y entrega los resultados en los archivos ecb_tbl_result_dec.txt y ecb_tbl_result_enc.txt. Un testbench como ese no se genera en pocos minutos.
Existe una forma de que el Xilinx ISE utilice al ModelSim, configurando la opción al crear el proyecto. En ese caso habría que compilar las bibliotecas de simulación, previo al lanzamiento del ModelSim. Para compilar las std_developerskit hay que integrarlas al Xilinx ISE y eso fue algo que no se logró. Se conoce de una variante de ModelSim para Xilinx, integrada actualmente en un paquete de software denominado Vivado, pero no se pudo obtener para las simulaciones.
Una opción hubiese sido rehacer el nicho de estímulos para el ISim, pero iba a ser un desperdicio de tiempo y posibilidades. El autor del Mini AES, Arif E. Nugroho, tuvo la gentileza de entregar un archivo de macros con extensión .do, que contiene toda la configuración y los pasos para la simulación con el ModelSim. Fue por esto, que se buscó con intensidad una versión operable del ModelSim de Mentor Graphics, un software muy referenciado y utilizado por su potencial para la simulación de modelos para hardware lógico programable.
Se encontró el ModelSim en una instalación del Quartus II de Altera y se instaló. Una vez instalado se procedió a la creación de un proyecto de simulación y se añadieron los archivos del modelo del Mini AES. Como los caminos que utilizó el autor para los archivos no coinciden con los de este proyecto, se modificó el modelsim_bench.do para que los comandos no dieran errores debido a los caminos mal establecidos. Después se ejecutó el archivo modelsim_bench.do. La parte de los comandos que se pone a continuación no hace más que compilar en el orden apropiado las fuentes en VHDL del modelo:
quit -sim vlib work
vcom -cover bcesx ../source/bram_block_a.vhdl vcom -cover bcesx ../source/bram_block_b.vhdl vcom -cover bcesx ../source/counter2bit.vhdl vcom -cover bcesx ../source/key_scheduler.vhdl vcom -cover bcesx ../source/xtime.vhdl
vcom -cover bcesx ../source/mix_column.vhdl vcom -cover bcesx ../source/folded_register.vhdl vcom -cover bcesx ../source/io_interface.vhdl vcom -cover bcesx ../source/mini_aes.vhdl vcom -cover bcesx input.vhdl
vcom -cover bcesx output.vhdl
vcom -cover bcesx modelsim_bench.vhdl
Nótese como el último módulo en compilarse es el de mayor nivel en la jerarquía. En particular el mini_aes.vhdl se compila de último. También se compilaron los nichos de prueba. En el input.vhdl también se cambió el camino que apuntaba al archivo ecb_tbl.txt, en el que están los juegos de datos y claves.
Después la macro de comandos especifica la siguiente sentencia para invocar al simulador:
vsim modelsim_bench
El resto de las sentencias son para añadir las ondas que van a observarse en la ventana del simulador. Nótese cómo se especificó en algunas de ellas la base hexadecimal. Se añadieron dos juegos de ondas idénticos, uno para el cifrado y otro par el descifrado. El simulador maneja las dos simulaciones simultáneamente. Esta fue una forma muy ingeniosa de agenciar el análisis para los juegos de datos dados.
add wave sim:/modelsim_bench/clock_enc add wave sim:/modelsim_bench/done_enc add wave sim:/modelsim_bench/load_enc
add wave sim:/modelsim_bench/test_iteration_enc add wave -hex sim:/modelsim_bench/data_i_enc add wave -hex sim:/modelsim_bench/key_i_enc add wave -hex sim:/modelsim_bench/cipher_o_enc add wave -hex sim:/modelsim_bench/data_o_enc
add wave -hex sim:/modelsim_bench/my_output_enc/fifo_verifier add wave -hex sim:/modelsim_bench/my_output_enc/current_verifier add wave sim:/modelsim_bench/my_output_enc/passed
add wave sim:/modelsim_bench/my_output_enc/failed add wave sim:/modelsim_bench/clock_dec
add wave sim:/modelsim_bench/load_dec
add wave sim:/modelsim_bench/test_iteration_dec add wave -hex sim:/modelsim_bench/data_i_dec add wave -hex sim:/modelsim_bench/key_i_dec add wave -hex sim:/modelsim_bench/cipher_o_dec add wave -hex sim:/modelsim_bench/data_o_dec
add wave -hex sim:/modelsim_bench/my_output_dec/fifo_verifier add wave -hex sim:/modelsim_bench/my_output_dec/current_verifier add wave sim:/modelsim_bench/my_output_dec/passed
add wave sim:/modelsim_bench/my_output_dec/failed
Por último la orden de simulación para que se ejecute por 3us:
run 30000ns
El resultado de toda la secuencia de comandos es una ventana de ondas que se muestra en el Anexo I. La comprobación tomó un poco más de tiempo que el que tomó encontrar la vía hacia el ModelSim. El comportamiento de las colas FIFO para entrar y recibir los datos, no presenta problemas, gracias sobre todo al estímulo creado por el autor del Mini AES. Los protocolos de los datos, de la llave de entrada y el del dato de salida, también se comportan como es de esperarse. El diseño es un éxito.
Conclusiones del capítulo
Los tres diseños explorados mediante el montaje y la simulación fueron un éxito. Esto demuestra sobre todo la veracidad de estos trabajos publicados en OpenCores, independientemente de las críticas especializadas que se les haga en estudios más profundos, o de las debilidades en cuanto al consumo de recursos cuando se sintetice en una FPGA.
En la medida que el modelo es más complejo y el manejo de datos es más robusto, es más difícil operar las simulaciones para obtener ventanas de ondas apropiadas para el análisis. Tal fue el caso del Mini AES, con el cual tomó mucho más tiempo verificar los resultados que con DES y 3DES.
El ISim del Xilinx ISE no permite la creación de nichos de prueba mediante alguna variante gráfica. Los testbench para las simulaciones deben ser creados manualmente, lo cual implica un conocimiento bien definido del modelo a simular y un nivel de imaginación que permita figurarse de antemano lo que se quiere ver.
El ModelSim de Graphics Mentor se presenta como una herramienta muy poderosa para la simulación de modelos complejos. Aunque para este trabajo no se consiguió una versión integrada al Xilinx ISE, esta sí existe y sería muy sugerente para futuras investigaciones.
CONCLUSIONES
Como conclusiones del trabajo se tienen:
o Entre los algoritmos estandarizados como sistemas criptográficos sobresalen el DES, sus variantes y el AES, como algoritmo sustituto. El DES es un clásico de la criptografía que, aunque ya ha sido declarado obsoleto, no presenta vulnerabilidades en su diseño y todavía es empleado en alguna de sus variantes. El AES, por su parte, es el estándar vigente para muchas aplicaciones de comunicaciones.
o Diversos autores publican trabajos o proyectos documentados al respecto de la realización de estos y otros sistemas criptográficos sobre hardware lógico programable. Al parecer las ventajas que presentan los dispositivos FPGA, CPLD, etc. para este tipo de aplicaciones mueve a una comunidad de desarrollo muy especializada y capaz.
o Se encontraron diversos proyectos relacionados con la realización de núcleos criptográficos sobre FPGA. Del análisis primero de los códigos de fuente de tres de estos (Basic Des, Triple Des y Mini AES), se determinó que el de AES y el de Triple DES tienen un diseño jerárquico en virtud de su complejidad. El modelo del Basic DES es simple y plano. Están descritos en correspondencia con lo que está especificado en los estándares publicados, FIPS, y con las documentaciones que existen sobre sus principios de funcionamiento.
o El montaje de los modelos en el Xilinx ISE fue relativamente sencillo, incluso la generación automática de símbolo y esquemáticos; no así la simulación, que dependió de la construcción o, en el mejor de los casos, modificación de nichos de prueba para la obtención de resultados apropiados para el análisis. En la experiencia con Mini AES se determinó que el ModelSim es un muy buen software de simulación, incluso pagando el precio de utilizar una versión integrada con Altera; lo cual dificulta o desvía el flujo de diseño propuesto por Xilinx.
o Las simulaciones demostraron que los modelos son funcionales y por consiguiente un éxito, al menos hasta a lo que este punto de la metodología de diseño concierne.
RECOMENDACIONES
Con el objetivo de dar seguimiento al presente trabajo se proponen las siguientes recomendaciones.
o Continuar la metodología de diseño hasta la síntesis para un kit de desarrollo, que puede ser el Nexys2 de Digilent.
o Comprobar el nivel de utilización que cada variante hace de la FPGA, con tal de emitir juicios de optimización y desempeño.
o Preparar diseños para la FPGA que integren la utilización de interfaz VGA y PS2, para articular la interacción con los usuarios. Esto podría servir para su utilización en enseñanza de asignaturas sobre seguridad en las comunicaciones y electrónica digital.
REFERENCIAS BIBLIOGRÁFICAS
ASHENDEN, P. J. & LEWIS, J. 2008. VHDL-2008 Just the New Stuff, Boston, Morgan Kaufmann Publishers, Elsevier.
BIHAM, E. & SHAMIR, A. Year. Differential Cryptanalysis of the Data Encryption Standard. In: 12th Annual International Cryptology Conference (CRYPTO '92), August 16–20 1992 Santa Barbara, California, USA. 487-496.
BIRYUKOV, A. & BIHAM, E. 1997. An improvement of Davies‘ attack on DES. Journal of Cryptology, 10, 195-205.
BOZICH, E. 2005. Introducción a los Dispositivos FPGA. Análisis y ejemplos de diseño. Universidad Nacional de la Plata.
BURR, W. E. 2006. Data Encryption Standard. NIST's anthology "A Century of Excellence in Measurements, Standards, and Technology: A Chronicle of Selected NBS/NIST Publications, 1901–2000", 250-253.
DAEMEN, J. & RIJMEN, V. 2002. The design of Rijndael: AES - The Advanced Encryption Standard, Berlin, Springer.
DESCHAMPS, J. P. 2007. CRYPTOGRAPHIC APPLICATIONS IN FPGA. Latin American Applied Research, 37, 3-10.
ESPINOSA, R. D. C. 2009. Curso FPGA (Programación de Arreglos de Compuertas). GALINDO, Y. B. S. 2011. Metodología para desarrollar aplicaciones con el PicoBlaze de
Xilinx. BE, Universidad Central ―Marta Abreu‖ de Las Villas.
HERNÁNDEZ, Y. R. 2012. Desarrollo de aplicaciones utilizando System Generator y su implementación en un FPGA de Xilinx. BE, Universidad Central ―Marta Abreu‖ de Las Villas.
IEEE 2002. IEEE Standard VHDL Language Reference Manual. Institute of Electrical and Electronics Engineers.
KAPS, J.-P. 1998. High Speed FPGA Architectures for the Data Encryption Standard. MSc, Worcester Polytechnic Institute.
KOÇ, Ç. K. & PAAR, C. (eds.) 1999. Cryptographic Hardware and Embedded Systems – CHES 1999, Worcester, MA, USA: Springer.
KWOK, S. H. & LAM, E. Y. Year. FPGA-based high-speed true random number generator for cryptographic applications. In: TENCON 2006. 2006 IEEE Region 10
Conference, 2006. IEEE, 1-4.
LAGGER, A. 2002. Implementation of DES Algorithm Using FPGA Technology - Winter Semester Project. In: HATIRNAZ, I. (ed.). School of Computer and
Communication Sciences.
MATSUI, M. Year. Linear cryptanalysis method for DES cipher. In: Advances in Cryptology—EUROCRYPT‘93, 1994. Springer, 386-397.
MAZA, Y. E. A. 2008. Síntesis de circuitos digitales utilizando VHDL y FPGAs. Escuela Politécnica Nacional
NUGROHO, A. E. 2006. Mini AES 128. West Java, Indonesia: VLSI Research Group. OPENCORES.ORG. 2013. OpenCores.org [En línea]. OpenCores.org. Disponible en:
http://opencores.org/ [Accesado 11-2-2013].
PIÑEIROS, G. D. F. 2010. Implementación de la etapa de recepción de un sistema de comunicaciones utilizando la tecnología FPGA Escuela Politécnica del Ejército. PROUFF, E. & SCHAUMONT, P. (eds.) 2012. Cryptographic Hardware and Embedded
Systems – CHES 2012, Leuven, Belgium: Springer.
ROBLIMO, S. 1999. Crypto Guru Bruce Schneier Answers [En línea]. Slashdot. Disponible en: http://slashdot.org/story/99/10/29/0832246/crypto-guru-bruce- schneier-answers [Accesado 15-3-2013].
STALLINGS, W. 2011. CRYPTOGRAPHY AND NETWORK SECURITY PRINCIPLES AND PRACTICE. 5th ed. New York: Pearson Education, Inc., publishing as
Prentice Hall.
STANDAERT, F.-X., ÖRS, S. B., QUISQUATER, J.-J. & PRENEEL, B. 2004. Power analysis attacks against FPGA - Implementations of the DES. Field Programmable Logic and Application. Springer.
VARGAS, L. V. 2010. Estudio y Evaluación de Algoritmos de Encriptación para la Protección de Datos para su Implementación Usando Lenguajes de Descripción de Hardware. BE, Universidad de Costa Rica.
WOBST, R. 2007. Cryptology Unlocked. John Wiley & Sons, Ltd.
WOLLINGER, T., GUAJARDO, J. & PAAR, C. 2004. Security on FPGAs: State-of-the- art implementations and attacks. ACM Trans. Embed. Comput. Syst., 3, 534-574. WOLLINGER, T. & PAAR, C. 2003. How secure are FPGAs in cryptographic
applications? Field Programmable Logic and Application. Springer. ZAMORA, R. O. A. 2010. Metodología para el diseño de aplicaciones de media
complejidad en FPGAs de Xilinx. BE, Universidad Central "Marta Abreu" de Las Villas.