UNIVERSIDAD SIMÓN BOLÍVAR



Documentos relacionados
CAPÍTULO 1 Instrumentación Virtual

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Capítulo 5. Cliente-Servidor.

Semana 13: Encriptación. Cifrado simétrico

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

I2C. Ing. Pablo Martín Gomez

Introducción a la Firma Electrónica en MIDAS

Sistema Electoral Venezolano. Dirección General de Informática

4. Programación Paralela

UNIDADES DE ALMACENAMIENTO DE DATOS

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

App para realizar consultas al Sistema de Información Estadística de Castilla y León

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

SISTEMAS DE NUMERACIÓN. Sistema decimal

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

Semana 14: Encriptación. Cifrado asimétrico

Tema 4. Gestión de entrada/salida

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

Puedo estar tranquilo acerca de la información de mi empresa? Donde puedo poner mis archivos cuando viajo?

Anexo B. Comunicaciones entre mc y PC

Elementos requeridos para crearlos (ejemplo: el compilador)

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Metodologías de diseño de hardware

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas

QUE ES COMLINE MENSAJES? QUE TIPO DE MENSAJES PROCESA COMLINE MENSAJES?

CARACTERISTICAS DEL SISTEMA

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

GedicoPDA: software de preventa

Juan Carlos Pérez González. UD 9. Resolución de incidencias y asistencia técnica

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Sistema de Votaciones Electrónicas UNAM

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT)

TITULO: SERVICIO DE INFORMACIÓN A TRAVÉS DE UNA RED DE PUNTOS DE INFORMACIÓN ELECTRÓNICA EN ESPACIOS PÚBLICOS DE LA CIUDAD DE MADRID

Software Criptográfico FNMT-RCM

Práctica 5. Curso

Introducción a las redes de computadores

Arquitectura de sistema de alta disponibilidad

Clase 20: Arquitectura Von Neuman

Interoperabilidad de Fieldbus

Información sobre seguridad

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Dispositivos de Red Hub Switch

1. SISTEMAS DIGITALES

Resumen del trabajo sobre DNSSEC

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Información sobre seguridad

Central de incendios modular serie 5000 Tan flexible como sus planes

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

LiLa Portal Guía para profesores

Instalación de epass 3000 Token USB

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

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

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

Introducción. Algoritmos

by Tim Tran:

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes:

picojava TM Características

Tecnología IP para videovigilancia... Los últimos avances han hecho posible conectar cámaras directamente a una red de ordenadores basada en el

Ing. Cynthia Zúñiga Ramos

forma de entrenar a la nuerona en su aprendizaje.

CAPÍTULO II. Gráficos Dinámicos.

Información de Producto:

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

QUÉ ES BAJO LLAVE? POR QUÉ SER CLIENTE DE BAJO LLAVE?

Actividad 4: Comunicación entre PLC s vía Ethernet

Reprogramación de módulos de control

<Generador de exámenes> Visión preliminar

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

INTRODUCCION A LA PROGRAMACION DE PLC

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIVERSIDAD AUTÓNOMA DEL CARIBE PROCEDIMIENTO DE ATENCIÓN DE INCIDENTES Y REQUERIMIENTOS PARA EQUIPOS DE CÓMUPUTO Y/O PERIFÉRICOS GESTIÓN INFORMÁTICA

CRONO SISTEMA DE CONTROL DE PRESENCIA. Software abierto. Distintas opciones para realizar las picadas. Web personal para cada usuario

ESCUELA POLITECNICA DEL EJERCITO

Guía para configurar el monitor TCPIP


Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Placa de control MCC03

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

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

VPN RED PRIVADA VIRTUAL INTEGRANTES: ALEXANDER BERNAL RAMIREZ CARLOS TRANCA JOSUE FLORES MIGUEL ANGEL VILLANUEVA

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

Guía de uso del Cloud Datacenter de acens

Ingeniería de Software. Pruebas

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

Firma Digital. Cómo se realiza la solicitud de certificados que posibilitan la firma digital de documentos?

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Microsoft Access proporciona dos métodos para crear una Base de datos.

Laboratorio III de Sistemas de Telecomunicaciones Departamento de Telemática

Capítulo 1. Introducción

SOLUCIONES EN SEGURIDAD SERVICIOS GESTIONADOS

Ayuda de Symantec pcanywhere Web Remote

Resumen General del Manual de Organización y Funciones

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

18. Camino de datos y unidad de control

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

Naturaleza binaria. Conversión decimal a binario

TELEOPERACIÓN DE UN ROBOT MOVIL CON MANEJO DIFERENCIAL A BAJO COSTO

Transcripción:

UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA ELECTRÓNICA DESARROLLO DE UN MÉTODO DE AUTO-PROGRAMACIÓN AUTENTICADA DE LA MEMORIA DE PROGRAMA DE MICRO-CONTROLADORES ENCADENADOS Por: Aldemaro Fonseca INFORME FINAL DE CURSOS EN COOPERACIÓN TÉCNICA Y DESARROLLO SOCIAL Presentado ante la Ilustre Universidad Simón Bolívar Como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, Junio de 2011

UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA ELECTRÓNICA DESARROLLO DE UN MÉTODO DE AUTO-PROGRAMACIÓN AUTENTICADA DE LA MEMORIA DE PROGRAMA DE MICRO-CONTROLADORES ENCADENADOS Por: Aldemaro Fonseca Realizado con la asesoría de: Tutor Académico: Prof. Leonardo Fermín Tutor Industrial: Ing. Freddy Gómez INFORME FINAL DE CURSOS EN COOPERACIÓN TÉCNICA Y DESARROLLO SOCIAL Presentado ante la Ilustre Universidad Simón Bolívar Como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, Junio de 2011

UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA ELECTRÓNICA DESARROLLO DE UN MÉTODO DE AUTO-PROGRAMACIÓN AUTENTICADA DE LA MEMORIA DE PROGRAMA DE MICRO-CONTROLADORES ENCADENADOS INFORME FINAL DE CURSOS EN COOPERACIÓN TÉCNICA Y DESARROLLO SOCIAL Presentado por: Aldemaro Fonseca, 04-36986 Realizado con la asesoría de: Prof. Leonardo Fermín; Ing. Freddy Gómez RESUMEN El objetivo general de este trabajo consistió en el desarrollo de un método de auto-programación autenticada de la memoria de programa de micro-controladores encadenados. Para esto, se utilizaron tarjetas de desarrollo de Microchip que emulan el hardware de los productos fabricados en la empresa contratante. Este trabajo se desarrolló en varias etapas: investigación bibliográfica del estándares Criptográficos de autenticación, específicamente el FIPS 180-3 y FIPS 198-1 que describen los algoritmos de Secure Hash Estandard (SHS, Estándar seguro de Hash ) y Hash-based Message Authentication Code (HMAC, Código de autenticación de mensaje basado en hash), respectivamente; familiarización con las herramientas de desarrollo de firmware para la familia de micro-controladores PIC; desarrollo, bajo prácticas estándares de la empresa, de una librería para soporte de algoritmos criptográficos genéricos, específicamente SHA-256 (Algoritmo de hash de 256 bits) y HMAC; desarrollo de bootloaders o mecanismos de auto-programación de memoria de programa para tres familias de micro-controladores diferentes; integración de estos bootloaders a través de comunicación I 2 C ; soporte a bootloaders encadenados para la familia PIC24; integración de todas las partes del proyecto; y, finalmente, el estudio Darwin Information Typing Architecture (DITA, Arquitectura Darwin para Transcribir Información) como herramienta para documentar técnicamente las librerías desarrolladas. Este trabajo contribuyó a la versatilidad y portabilidad de diversos productos fabricados por la empresa, además de una documentación adecuada de las librerías implementadas en este trabajo. Palabras clave: SHS, SHA, HMAC, Bootloader, I 2 C, Microchip, Smartmatic, PIC iv

DEDICATORIA A mi abuela v

AGRADECIMIENTOS Agradezco a Dios por encima de todas las cosas, a mi Patria que me vio nacer, a mi universidad que me vio crecer, a mi familia que me ha nutrido de amor incondicional, a mis amigos, que han vivido conmigo experiencias inolvidables y me apoyan siempre, y por último a mi novia por mantenerse a mi lado cuando más lo he necesitado. Gracias totales... vi

ÍNDICE GENERAL Resumen... iv Dedicatoria... v Agradecimientos... vi Índice general... vii Índice de tablas... x Índice de figuras... xi Lista de abreviaturas... xii Introducción... 1 Capitulo 1: Descripción de la empresa... 4 1.1. Descripción General de la Empresa... 4 1.2. Historia... 5 1.3. Productos... 6 Capitulo 2: Fundamentos Teóricos... 10 2.1. Bootloader... 10 2.1.1. Características principales de un bootloader... 10 2.2. Criptografía... 12 2.2.1. Criptografía Moderna... 12 2.2.2. SHS (Secure Hash Standard)... 14 2.2.3. HMAC(Hash based Message Authentication code)... 23 2.3. Descripción del bus I 2 C... 26 2.3.1. Características del bus I 2 C... 27 2.3.2. Ventajas para los diseñadores... 27 2.3.3. Ventajas para los fabricantes... 29 2.3.4. Introducción a la especificación del bus I 2 C... 29 2.3.5. El concepto del bus I 2 C... 30 2.3.6. Características generales... 33 2.3.7. Transferencia de bits... 34 2.3.8. Transferencia de datos... 36 vii

2.3.9. Formato para direcciones de 7 bits... 38 2.4. Sistemas Embebidos... 39 2.4.1. Diferencias entre un controlador embebido y una computadora... 39 2.4.2. Componentes de un micro-controlador... 39 2.5. Darwin Information Typing Architecture (DITA)... 41 2.5.1. Propiedades de DITA... 43 Capitulo 3: Herramienta y Equipos Utilizados... 45 3.1. MPLAB Integrated Development Environment (IDE)... 45 3.2. Lenguaje de Programación C... 46 3.2.1. Características... 47 3.2.2. Aplicaciones embebidas... 49 3.3. Tarjetas de Desarrollo... 50 Capitulo 4: Métodos y procedimientos... 52 4.1. Implementar funciones para autenticar el origen de un nuevo firmware con el bootloader por memoria SD existente.... 52 4.1.1. Estudio de los algoritmos SHA256 y HMAC, y estudio de las herramientas y prácticas de desarrollo de firmware dentro de la empresa Smartmatic... 52 4.1.2 Revisión de códigos existentes de librerías criptográficas... 53 4.1.3 Implementar basado en librerías existentes una librería genérica de criptografía, que maneje algoritmos criptográficos como SHA-256 y HMAC... 54 4.1.4 Creación de una aplicación demostrativa de las capacidades de la librería de criptografía... 55 4.1.5. Revisión de bootloaders existentes por memorias SD... 56 4.1.6. Implementación de bootloader SD... 56 4.1.7. Integración del bootloader SD con la autenticación de las aplicaciones por MAC... 58 4.2. Desarrollar bootloaders para las familias PIC18 y PIC24 de microchip, que puedan funcionar a través de I 2 C, adaptando bootloader existente por UART... 59 4.2.1. Estudio de bootloaders existentes para las familias PIC24 y PIC18... 59 4.2.2. Descripción básica del Funcionamiento de los bootloaders encontrados... 60 4.2.3. Cambios en el funcionamiento de los bootloaders encontrados... 61 4.2.4. Creación de una librería de comunicación I 2 C genérica para PIC32 y PIC24... 63 4.2.5. Creación de métodos para la comunicación I 2 C para la familia PIC18... 63 4.2.6. Creación de una aplicación de puente de comunicación UART-I 2 C... 64 4.2.7. Desarrollo de bootloaders PIC24 y PIC18 a través de un bus I 2 C... 64 viii

4.3. Actualizar firmware del bootloader del MCU Principal para permitir la actualización del MCU A y del MCU B a través del uso de un bus I 2 C... 65 4.3.1. Actualización para la detección de programas para los MCU A y MCU B... 66 4.3.2. Ajustes al MCU principal para seleccionar parámetros dependientes del MCU que se vaya a programar.... 66 4.3.3. Inclusión de librería I 2 C para comunicarse como maestro con MCU A y MCU B... 67 4.4. Extender bootloader del MCU B para permitir la actualización del MCU B mediante el uso de un bus I 2 C entre el MCU B y el MCU B... 67 4.4.1. Actualización en bootloader del MCU B... 68 4.5. Documentar técnicamente las librerías de Firmware desarrolladas... 68 Capitulo 5: Resultados y discusiones... 69 5.1. Implementación de funciones para autenticar el origen de un nuevo firmware con el bootloader por memoria SD... 69 5.2. Bootloaders para las familias PIC18 y PIC24 de microchip, que puedan funcionar a través de I 2 C usando un PIC32 como maestro... 71 5.3. Bootloader del MCU B que permite la actualización del MCU B mediante el uso de un bus I 2 C... 73 5.4. Documentación técnica de las librerías de Firmware desarrolladas... 74 Conclusiones... 75 Recomendaciones... 76 Referencias... 77 Apéndices... 81 A. Glosario... 81 B. Documentación de librerías de firmware... 82 ix

ÍNDICE DE TABLAS Tabla 2.1: Propiedades de los Algoritmos Seguros de Hash (SHA)... 15 Tabla 2.2: Definición de parámetros del algoritmo SHA-256... 16 Tabla 2.3: símbolos usados por el algoritmo SHA-256... 17 Tabla 2.4: Constantes utilizadas por el algoritmo de SHA-256... 18 Tabla 2.5: Parámetros utilizados por el algoritmo HMAC... 24 Tabla 2.6: Descripción paso a paso del algoritmo HMAC... 25 Tabla 2.7: Definición de la terminología del bus I 2 C... 31 Tabla 5.1: Pines implementados para conexión de señales del PicTail SD... 70 x

ÍNDICE DE FIGURAS Figura I.1: Diagrama de Bloques del proyecto... 2 Figura 2.1: Descripción paso a paso del algoritmo HMAC... 26 Figura 2.2: diagrama de conexión del bus I 2 C con resistencias de pull up... 33 Figura 2.3: transferencia de datos en el bus I 2 C... 34 Figura 2.4: condiciones de START y STOP... 35 Figura 2.5: Transferencia de datos en el bus I 2 C... 36 Figura 2.6: bit de confirmación en el bus I 2 C... 37 Figura 2.7: Transferencia completa de datos en un bus I 2 C... 38 Figura 2.6 Diagrama de bloques de un micro-controlador estándar... 40 Figura 2.7 Ejemplo del encapsulado de un micro-controlador promedio... 41 Figura 3.1 Ambiente de desarrollo MPLAB... 46 Figura 3.2 Tarjeta Explorer 16... 50 Figura 3.3 SD/MMC PicTail... 51 Figura 3.5 Prototype PicTail... 51 Figura 4.1: Diagrama de bloques funcional del bootloader PIC32... 57 Figura 4.2: Diagrama de bloques funcional del bootloader PIC32 con comprobación de MAC... 58 Figura 4.3: Diagrama de bloques funcional de los bootloaders para las familias PIC18 y PIC24... 61 Figura 4.4: Diagrama de bloques funcional de los bootloaders con comunicación I 2 C para las familias PIC18 y PIC24... 65 Figura 5.1 Montaje con PicTail SD y una tarjeta Prototype sobre Explorer 16... 69 Figura 5.2 Montaje de resistencias de pull-up para un bus I 2 C... 71 Figura 5.3: PIC24 sobre una tarjeta Explorer 16, tarjeta Prototype con bus I 2 C conectado... 72 Figura 5.4: montaje de un PIC32 con un PIC24 mediante un bus I 2 C... 72 Figura 5.5: montaje de un dos PIC24 mediante un bus I 2 C... 74 xi

LISTA DE ABREVIATURAS AES CI CPU Estándar de Encriptación Avanzado, del inglés, Advanced Encryption Standard. Circuitos Integrados Unidad Central de Procesamiento, del inglés Central Processing Unit. EDMP Plataforma de Manejo del Día de la Elección, del inglés Election Day Management Platform. EEPROM EMS FAT HMAC Memoria de Sólo Lectura programable y borrable eléctricamente, del inglés Electrically-Erasable Programmable Read-Only Memory Sistema de Gestión Electoral, del inglés Electoral Management System. Tabla de asignación de archivos, del inglés, File Allocation Table. Código de autenticación de mensaje basado en algoritmos de hash, del inglés Hash based Message Authentication Code. IDE Entorno de Desarrollo Integrado, del inglés, Integrated Development Environment. I 2 C LCD LED MAC MCU Bus de comunicación, su nombre viene de Circuitos Inter-Integrados, del inglés Inter Integrated Circuit. Pantalla de Cristal Liquido, del inglés Liquid Crystal Display Diodo Emisor de luz, del inglés, Light-Emitting Diode. Código de Autenticación de Mensaje, del inglés, Message Authentication Code. Unidad de Micro-Controlador, del inglés, Micro-Controller Unit MD5 Algoritmo de Resumen del mensaje 5, del inglés Message-Digest Algorithm 5. NIST PCB PIC RAM Instituto Nacional de estándares y Tecnología de Estados Unidos de Norte América, del inglés National Institute of Standard and Technology Tarjeta de circuito impreso, del inglés Printed Circuit Board. Controlador de Interfaz Periférico, del inglés, Peripheral Interface Controller. Memoria de Acceso Aleatorio, del inglés, Random Access Memory. xii

REIS RAM ROM SAES SCL SD SDA SHA SHA-256 SHS SIMS UART Sistema de Información Electoral en Tiempo Real, del inglés, Real Time Electoral Information System. Memoria de Acceso Aleatorio, del inglés Random Access Memory. Memoria de Sólo Lectura, del inglés, Read Only Memory. Sistema de Elección Auditable Smartmatic, del inglés, Smartmatic Auditable Election System. Línea de reloj Serial, del inglés Serial CLock line Tarjeta de Memoria Digital Segura, del inglés Secure Digital memory card Línea de datos Serial, del inglés Serial DAta line Algoritmo de hash seguro, del inglés Secure Hash Standard. Algoritmo de hash seguro de 256 bits, del inglés 256 bits Secure Hash Standard. Estándar de hash seguro, del inglés Secure Hash Standard. Soluciones de Manejo de Identidad, del inglés, Smartmatic Identity Management Solutions. Transmisor-Receptor Asíncrono Universal, del inglés Universal Asynchronous Receiver-Transmitter. xiii

1 INTRODUCCIÓN La pasantía se realizó en la unidad de negocios Sistema de Elección Auditable Smartmatic (SAES, por sus siglas en ingles Smartmatic Auditable Election System) de la empresa Smartmatic; empresa que cuenta con recursos humanos en varios lugares del mundo, quienes diseñan y elaboran soluciones tecnológicas, en todas sus fases, para diversos tópicos, entre ellos, procesos electorales, plataformas de seguridad, registro y autenticación de personas. La solución electoral de Smartmatic, incluye productos con sistemas embebidos. Uno de estos productos, contiene un micro-controlador principal que gestiona, entre otros periféricos, a varios micro-controladores por medio de un bus I 2 C, y donde uno de estos micro-controladores puede estar encadenado a otro micro-controlador esclavo que ejecuta el mismo firmware. El microcontrolador principal es de la familia PIC32MX, este último es el maestro de un PIC18 y de un PIC24, adicionalmente el PIC24 puede a su vez ser maestro de otro PIC24 de idénticas funciones, mediante un bus I 2 C independiente. En la figura I.1, puede verse el diagrama de bloques simplificado del producto descrito anteriormente. En lo que sigue del trabajo, se usaran los nombres MCU Principal, MCU A, MCU B, y MCU B para aclarar las referencias a los distintos micro-controladores que componen el hardware del producto.

2 Figura I.1: Diagrama de Bloques del proyecto La compañía carecía antes de la realización de este trabajo, de un método eficiente y seguro para la programación de los micro micro-controladores controladores incluidos en su solución electoral, ya que, se debían programar directamente, cada uno de los micro micro-controladores controladores que componen el sistema, este método ineficiente de programación, supone uun n incremento en los costos de producción en masa, debido a pasos adicionales que deben darse en la línea de producción, existía un problema adicional, cuando nuevas versiones de firmware debían ser programadas en las maquinas terminadas, teniendo estas que ser desarmadas, y programadas de manera que cada micromicro controlador que la compone, fuese actualizado con la nueva versión de firmware, como consecuencia, el costo logístico para realizar dicha labor era muy alto, teniendo muchas veces que contratar personal al técnico, que se encargara solo de esa labor. Por otro lado, el método utilizado era inseguro, ya que no existía un método de autenticación de origen del firmware que permitiera verificar que los programas con los cuales se estaban actualizando los micromicro controladores, provenían de una fuente segura. Este trabajo permitió el desarrollo e implementación de un método de auto-programación auto autenticada del micro-controlador controlador principal y los micro micro-controladores controladores encadenados de manera de crear un método seguro y eeficiente, ficiente, para solucionar los problemas que se mencionaron anteriormente.

3 La autenticación se basa en la comprobación de un MAC (Código de Autenticación de Mensaje, del inglés, Message Authentication Code) calculado sobre el firmware a programar. Esto presupone la existencia de una clave secreta y un algoritmo criptográfico. El algoritmo criptográfico elegido es el SHA-256 Es importante mencionar que todas las aplicaciones se realizaron con tarjetas de desarrollo que emulan perfectamente el hardware de los productos garantizando la confidencialidad de la compañía, puesto que el diseño y estructura son de su propiedad. Los objetivos de este trabajo, enmarcados en el proyecto descrito, se desglosan a continuación: OBJETIVO GENERAL: Lograr el Desarrollo de un método de auto-programación autenticada de la memoria de programa del micro-controlador principal y de los micro-controladores encadenados. OBJETIVOS ESPECÍFICOS: Implementar funciones para autenticar el origen de un nuevo firmware con el bootloader por memoria SD existente. Desarrollar bootloaders para las familias PIC18 y PIC24 de microchip, que puedan funcionar a través de I 2 C, adaptando bootloader existente por UART (Transmisor- Receptor Asíncrono Universal, del inglés Universal Asynchronous Receiver- Transmitter). Actualizar firmware del bootloader del MCU Principal para permitir la actualización del MCU A y del MCU B a través del uso de un bus I 2 C. Extender bootloader del MCU Principal, y del MCU B para permitir la actualización del MCU B mediante el uso de un bus I2C entre el MCU B y el MCU B. Documentar técnicamente las librerías de firmware desarrolladas.

CAPITULO 1 DESCRIPCIÓN DE LA EMPRESA 1.1. Descripción General de la Empresa Smartmatic es una compañía multinacional que diseña y despliega soluciones tecnológicas que permiten a los organismos gubernamentales y a grandes empresas cumplir con sus ciudadanos de la manera más eficiente posible [1]. Fundada alrededor de un equipo élite guiado por el principio del mejoramiento continuo, Smartmatic suministra tecnología sin parangón en cuatro divisiones de negocios clave: Soluciones de votación (SAES) Plataformas inteligentes de seguridad (USP) Sistemas de registro y autenticación biométrica de personas (SIMS) Investigación, desarrollo y asesoría en tecnología. Smartmatic es la única empresa en el mundo que puede ejecutar todas las fases de una elección con máxima precisión y seguridad. Cuenta con las piezas necesarias para garantizar proyectos exitosos: tecnología, productos y servicios, pero sobre todo, conocimiento, compromiso y experiencia. Ha registrado más de 1.500 millones de votos auditados, y su tecnología ha sido reconocida por importantes organizaciones de observación internacional [2].

5 1.2. Historia Fundada como un grupo de investigación y desarrollo, especializado en la integración de sistemas, Smartmatic se convirtió en una empresa sólida de primera categoría con cientos de empleados y laboratorios de ingeniería alrededor del mundo [3]. En el año 2000, el fundador y Director Ejecutivo, Antonio Múgica, inició la compañía apalancándose en su inmensa fortaleza de investigación y desarrollo, y posicionándola en pocos años como líder en la innovación de tecnologías para la prosperidad de las sociedades del mundo [3]. Smartmatic se crea con el objetivo de interconectar toda clase de dispositivos a una variedad de redes existentes, permitiendo la interacción de equipos informáticos en la ejecución de diversas tareas, sin importar su nivel de complejidad. En el mercado electoral Venezolano durante el 2004, la empresa ganó un concurso abierto para la automatización de procesos electorales; desde entonces, su solución electoral se ha desplegado en 8 elecciones nacionales en este país. Esta empresa también realiza procesos electorales en Curazao desde el año 2007 y ejecutó un proyecto de automatización electoral en Filipinas, específicamente en la Región Autónoma de Mindanao. Y actualmente se encuentra concursando por licitaciones en varios países, entre ellos, Brasil. Entre el año 2005 y 2007, Smartmatic realizó elecciones en Estados Unidos a través de la que fue su subsidiaria, Sequoia Voting Systems. Así, Smartmatic ha registrado más de 150 millones de votos, todos con su comprobante impreso del voto, siendo la primera empresa en aplicar el comprobante en una elección nacional, en Venezuela durante el 2004. Adicionalmente, ha realizado pilotos vinculantes en varios países del mundo como Perú, Argentina, Colombia, y Mali. Su sistema de votación ha sido validado por organizaciones reconocidas de observación internacional. La visión de la empresa lo describe claramente: Imaginamos un mundo donde tecnologías de gran impacto social, contribuyen a un funcionamiento más elevado de la civilización [3].

6 1.3. Productos SAES: Es una herramienta consolidada de votación, escrutinio, totalización, adjudicación y difusión de resultados, para cualquier tipo de proceso electoral. El sistema emplea algoritmos de cifrado para el almacenamiento y la transmisión de cada voto, desde las máquinas de votación hasta los centros de totalización. Instancias de verificación de votos de SAES: El voto físico, el cual es impreso en papel con marcas de agua y tinta de seguridad. La memoria fija (interna). La memoria removible. El acta de escrutinio de la mesa de votación. El voto electrónico transmitido a los centros de totalización. El acta electrónica transmitida a los centros de totalización. El acta de totalización. Hardware 1. Boleta electrónica: Tarjetón en formato de acuerdo a los requerimientos del cliente y adaptados a las convenciones y necesidades específicas del electorado (perfil de los candidatos, cargos a elegir, partido político, nombre y fotografía). 2. Máquinas de votación: Se ha distribuido y desplegado al menos cuatro modelos de máquinas de votación (SAES3000, SAES3300, SAES4000, SAES1800). Estas máquinas son auditables por medio de la impresión del comprobante del voto y su memoria redundante. Cuentan con algoritmos de seguridad de 2046 bits, impresoras incorporadas, pantallas de diferentes tamaños (10.1, 10.4 ). Sus modelos más recientes cuentan con accesorios para facilitar el voto a personas con alguna discapacidad (audífonos, dispositivos para sorber y soplar, controles con botones con sistema Braille).

7 Software 1. Real Time Electoral Information System (REIS): Sistema informático desarrollado para las funciones de totalización y publicación de resultados. REIS soporta todas las categorías de fórmulas electorales, desde las más simples (referendos) hasta los métodos más complejos de sumatoria para obtener los resultados finales, incluyendo ganador único, múltiples ganadores así como reglas de mayoría y proporcionalidad representativa. 2. Electoral Management System (EMS): Sistema de gerencia electoral que permite la definición y configuración de la elección (se alimenta de los datos proporcionados por el ente electoral referente a: cargos, candidatos, división política, y partidos). Posteriormente genera los archivos de configuración de cada máquina de votación. 3. Election Day Management Plataform (EDMP): Software para controlar la asistencia de operadores y técnicos, y monitorear la instalación, apertura, cierre, transmisión y auditoría de las mesas electorales así como las incidencias de soporte durante el día del evento. Smartmatic Identity Management Solutions (SIMS): Las Soluciones de Gestión de Identidad de Smartmatic son la combinación plena entre tecnología y servicios para atender las necesidades específicas de gobiernos y grandes corporaciones en el área de registro de personas. Las Soluciones de Gestión de Identidad diseñadas por Smartmatic, incluyen la tecnología más avanzada para los procesos de registro civil y electoral, identificación, inmigración y naturalización [4].

8 Hardware 1. PARmobile: Dispositivo para el registro de personas naturales en aplicaciones de campo (portátil, estuche con cubierta de goma (plástico ABS), incluye cámara digital con flash, lector de huellas dactilares, lector de firma electrónica). No requiere instalación, salvo conectarlo a una toma de corriente. 2. PARkit: Permite la captación de información biométrica y biográfica y la verificación de identidad. Ideal para el despliegue en ciudades o en regiones remotas, esta unidad combina una computadora e impresora portátiles con componentes lectores de huellas dactilares, firma y fotografía en un estuche hermético. Software 1. ID management: Suite de aplicaciones de software que ejecutan el documento de identificación desde la producción hasta la entrega. 2. PARcentral: Es un sistema back-office que controla la consolidación de todos los datos capturados en las estaciones de registro y resguarda la información, de manera que solamente los usuarios y sistemas autorizados puedan acceder a la data consolidada. Unified Security Platform (USP): Es una Plataforma de Seguridad Unificada diseñada por Smartmatic para integrar dentro de un mismo ambiente operativo múltiples sistemas de seguridad: atención de llamadas de emergencia y despacho de unidades móviles, seguridad en transporte público, tele vigilancia y telemetría. Hardware a. Digital Versatile Controller (DVC) b. Cámaras IP / DVRs c. Car PC d. Devices sensors

9 Software a. SmartCAD: Software para procesar llamadas de emergencias a través de funciones como: identificación y atención de llamadas de la ciudadanía a un número único de emergencia, captura de datos del incidente, asignación del recurso más apropiado para atender el caso, generación de estadísticas, análisis de gestión y medición del servicio de las autoridades correspondientes. Otras soluciones Smartmatic provee soluciones llave en mano de seguridad ciudadana que permiten extender el alcance de las instituciones gubernamentales a cargo de la seguridad y operar de una manera más efectiva [5].

CAPITULO 2 FUNDAMENTOS TEÓRICOS 2.1. Bootloader Un bootloader es un programa sencillo que permite descargar programas a algún microcontrolador, sin necesidad de usar un programador dedicado para este fin. Las ventajas que trae esto, es que solo es necesario usar el programador dedicado una sola vez, para programar el bootloader, una vez cargado el bootloader en el micro-controlador, ya se puede descargar en él nuevos programas, a través de algún método de comunicación elegido, todas las veces que se quiera, sin necesidad de usar un programador dedicado. El uso de bootloaders en la industria permite además disminuir costos, ya que ofrece un método sencillo de programar y reprogramar máquinas sin acceder directamente al microcontrolador o tarjetas de circuitos internas, pudiendo programarse a través de algún método de comunicación externo que tenga el hardware de la máquina. 2.1.1. Características principales de un bootloader Para la elaboración de un bootloader, debe considerarse que este programa debe ser: Sencillo, debido a que el bootloader ocupa espacio en la memoria de programa de los micro-controladores, este debe ocupar el mínimo espacio posible, buscando la máxima eficiencia de código, ya que podría restarle espacio de memoria preciado a las aplicaciones finales. Robusto, debe poseer métodos que permitan la detección de errores y como evitarlos, estos pueden ser, por ejemplo, que una aplicación quiera escribir en las mismas direcciones de memoria en las que se encuentra alojado el bootloader, así como errores en la escritura o en el borrado de la memoria. Debe poseer un método de reentrada que permita regresar al modo bootloader desde la aplicación. De esta manera, se tendrá un

11 bootloader blindado en contra de fallas, es importante señalar, que cualquier error podría traer graves consecuencias en el correcto funcionamiento de la aplicación, e incluso podría llegarse a un estado en el que el programa se bloquee, debido a una falla en la programación de la aplicación. Debe incorporar uno o más métodos de comunicación, la idea de un bootloader es que la programación se realice desde un sistema de comunicación más versátil, que permita de manera rápida y sencilla la actualización del firmware, por lo tanto un bootloader debe aprovechar el hardware de la maquina, y sus diferentes formas de comunicación. La información sobre la aplicación a programar, debe cumplir por lo tanto con un protocolo de comunicación y debe ser codificada con algún método que permita la detección de errores en la transmisión. El micro-controlador debe ser capaz de auto-programarse, es decir, entre las instrucciones básicas del micro-controlador deben estar incluidas las funciones de escritura, lectura y borrado de la memoria de programa. Esta característica es esencial para poder realizar la actualización de las nuevas aplicaciones. Esto permite al bootloader interpretar la información recibida desde el sistema de comunicación y realizar la actualización del firmware mediante el uso de estas funciones, posterior a la escritura del nuevo programa, estas funciones permiten la lectura y comprobación de que en efecto el programa nuevo se ha escrito correctamente. Por último el bootloader hace un salto a la aplicación. Independencia entre bootloader y aplicación, hay que considerar que tanto el bootloader como la aplicación ocupan un lugar dentro de la memoria de programa del microcontrolador, por lo tanto, el bootloader y la aplicación final deben ser compatibles entre sí, esto implica en muchas ocasiones el uso de linker scripts, un linker script permite colocar partes de un programa en direcciones especificas dentro de la memoria de programa, esta herramienta permite entonces que ambos programas no intenten escribirse en las mismas zonas de la memoria, causando colisiones que podrían alterar de manera significativa el funcionamiento tanto del bootloader como de la aplicación.

12 2.2. Criptografía La criptografía es la técnica que altera las representaciones lingüísticas de un mensaje [6]. Para ello existen muchas técnicas, en donde la más común es el cifrado. Este método oculta las referencias originales del mensaje por un medio de un algoritmo que permita el proceso inverso o descifrado de la información. El uso de esta u otras técnicas, permite un intercambio de mensajes que solo pueden ser leídos por los destinatarios designados como coherentes. Un destinatario coherente es la persona a la que el mensaje se le dirige con intención por parte del remitente. Así pues el destinatario coherente conoce la técnica usada para el enmascaramiento del mensaje. Por lo que o bien posee los medios para someter el mensaje criptográfico al proceso inverso, o puede razonar e inferir el proceso que lo convierta en un mensaje de acceso público. La criptografía moderna utiliza las disciplinas de matemáticas, computación e ingeniería electrónica. Las aplicaciones de la criptografía incluyen: cajeros automáticos, seguridad informática y comercio electrónico. Previo a la edad moderna, la criptografía era casi sinónimo de encriptación, la conversión de información de una forma legible a algo aparentemente sin sentido [7]. Desde la segunda guerra mundial y la llegada de las computadoras, los métodos usados para llevar a cabo la criptografía han ido aumentando en complejidad y su aplicación se ha extendido notablemente. La criptografía moderna sigue un enfoque científico, y diseña algoritmos criptográficos con la finalidad de que estos sean computacionalmente robustos, asumiendo que los mismos sean difíciles de romper por un adversario. En teoría no hay ningún sistema que no sea indescifrable, pero es inviable hacerlo para cualquier adversario práctico. 2.2.1. Criptografía Moderna El campo de la criptografía moderna puede ser dividido en varias áreas de estudio, a continuación se presentan las principales: a. Criptografía de clave simétrica: La criptografía de clave simétrica se refiere a los métodos de encriptación en los cuales tanto el que envía, como el que recibe comparten la misma clave [8].