• No se han encontrado resultados

Diseño e Implementación de un Módulo de Seguridad Hardware (HSM) Sobre Microcontrolador Basado en el Algoritmo HIGHT

N/A
N/A
Protected

Academic year: 2020

Share "Diseño e Implementación de un Módulo de Seguridad Hardware (HSM) Sobre Microcontrolador Basado en el Algoritmo HIGHT"

Copied!
56
0
0

Texto completo

(1)DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD HARDWARE (HSM) SOBRE MICROCONTROLADOR BASADO EN EL ALGORITMO HIGHT. STEPHANIE JULIETH SIERRA BUITRAGO JEREMY AGUILAR QUIÑONES. UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS FACULTAD TECNOLÓGICA INGENIERÍA EN TELECOMUNICACIONES BOGOTÁ 2017.

(2) DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD HARDWARE (HSM) SOBRE MICROCONTROLADOR BASADO EN EL ALGORITMO HIGHT. STEPHANIE SIERRA BUITRAGO JEREMY AGUILAR QUIÑONES. MONOGRAFÍA PRESENTADA COMO REQUISITO PARCIAL PARA OPTAR AL TÍTULO DE: INGENIERÍA EN TELECOMUNICACIONES TUTOR MSC. ING. EDWAR JACINTO GÓMEZ. UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS FACULTAD TECNOLÓGICA INGENIERÍA EN TELECOMUNICACIONES BOGOTÁ 2017.

(3) DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD HARDWARE (HSM) SOBRE MICROCONTROLADOR BASADO EN EL ALGORITMO HIGHT. Nota de aceptación:. _____________________________________ _____________________________________ _____________________________________ _____________________________________. ______________________________ Msc. Ing.Edwar Jacinto Gómez Director del Proyecto. _______________________________ Ing.Gustavo Higuera Jurado 1. ______________________________ Ing.Henry Rimero Jurado 2. Bogotá D.C., 20 de septiembre de 2017.

(4) RESUMEN. El surgimiento de redes de comunicación, en particular de Internet, ha abierto nuevas posibilidades para el intercambio de información. Al mismo tiempo, son cada vez mayores las amenazas que caen sobre la seguridad de la información que se transmite. Es necesario entonces, crear diferentes mecanismos, dirigidos a alcanzar una alta confidencialidad, autenticidad y privacidad en el manejo de la información, para lo cual se han desarrollado módulos de seguridad de hardware (HSM), también llamados aceleradores criptográficos, los cuales permiten la administración segura de claves criptográficas y operaciones criptográficas rápidas. En este proyecto se diseña un módulo de seguridad hardware implementando en microcontrolador utilizando el algoritmo de cifrado HIGHT, un algoritmo de cifrado por bloques de alta seguridad y bajo peso con bloques de 64 bits de longitud y clave de 128 bits, cuya implementación es adecuada para aplicaciones de bajo costo, bajo consumo de energía y ultraligera. La ejecución de este proyecto está orientada al desarrollo de una herramienta de libre circulación, que cumpla con los requerimientos de un sistema criptográfico con las limitantes correspondientes al dispositivo empleado. En consecuencia, esto significa un aporte académico sobre la implementación de este tipo de llaves hardware poco conocidas en Colombia. Palabras Clave: Cifrado, Criptografía, Gestión de seguridad, Seguridad de datos..

(5) ABSTRACT The circle of communication networks, in particular Internet, has opened new possibilities for the exchange of information. At the same time, there are increasing threats to the security of the information being transmitted. It is necessary to create different mechanisms, aimed at achieving a high confidentiality, authenticity and privacy in the handling of the information, for all that they have developed hardware security modules (HSM), also called cryptographic accelerators, which allow the safe administration of Cryptographic keys and fast cryptographic operations. In this project, a security module is designed to be implemented in microcontroller using the HIGHT encryption algorithm, a high security, low weight block encryption algorithm with blocks of 64 bits in length and 128 bits key, with a suitable implementation. Low cost, low power consumption and ultra-light. The execution of this project is oriented to the development of a free circulation tool, which meets the requirements of a cryptographic system with the limitations according to the device used. Consequently, this means an academic on the implementation of these little-known hardware keys in Colombia. Key Words: Encryption, Cryptography, Security management, Data security..

(6)

(7) Índice general Índice general ............................................................................................................. I Índice de figuras ....................................................................................................... III Índice de tablas ........................................................................................................ IV Introducción............................................................................................................... V Fundamentación teórica y matemática ................................................................... 1 1.. Logaritmo discreto ............................................................................................ 1 Algoritmo Diffie-Hellman....................................................................................... 1 Pequeño teorema de Fermat ............................................................................... 4. 2.. Campos finitos .................................................................................................. 4 El campo finito 𝑮𝑭(𝒑) ........................................................................................... 5 El campo finito 𝑮𝑭(𝟐𝒎)........................................................................................ 5. 3.. LFSR ................................................................................................................ 6. 4.. Base teórica de la criptografía .......................................................................... 7 Criptografía .......................................................................................................... 7 Criptografía simétrica ........................................................................................... 8 Criptografía asimétrica ....................................................................................... 10 Cifradores en bloque .......................................................................................... 10 Criptografía ligera (Lightweigth cryptography) .................................................... 11 Aplicaciones algoritmos lightweight .................................................................... 12 Argumento de selección: Algoritmo HIGHT ........................................................ 12 Módulo de Seguridad Hardware ......................................................................... 15. Plataformas embebidas de desarrollo ................................................................... 17 1.. Plataformas soporte........................................................................................ 17 I.

(8) Multiprocesador PROPELLER ........................................................................... 17 Microcontroladores Microchip PIC16F/PIC18F/PIC24FJ/PIC32 ........................ 17 Microcontroladores Atmel................................................................................... 18 Texas Instruments .............................................................................................. 18 Cypress Semiconductors ................................................................................... 20 FreeScale ........................................................................................................... 20 2.. Argumento de Selección................................................................................. 21. Metodología, implementación y resultados .......................................................... 24 1.. Diseño del HSM .............................................................................................. 24. 2.. Implementación del algoritmo HIGHT ............................................................. 25 Bloque de cifrado ............................................................................................... 26 Bloque de descifrado ......................................................................................... 27 Interfaz gráfica: Algoritmo HIGHT ...................................................................... 27 Prueba de funcionalidad algoritmo HIGHT ......................................................... 29 Recursos y rendimiento...................................................................................... 31. 3.. Implementación del algoritmo de intercambio de claves ................................ 34 Pruebas de funcionalidad algoritmo Diffie-Hellman............................................ 35 Implementación del HSM ................................................................................... 36 Recursos utilizados ............................................................................................ 36. 4.. Diagrama de bloques HSM ............................................................................. 37. 5.. Comparación de resultados ............................................................................ 37. Conclusiones y trabajo futuro ................................................................................ 40 1.. Conclusiones .................................................................................................. 40. 2.. Trabajo futuro ................................................................................................. 41. Bibliografía............................................................................................................... 42.

(9) Índice de figuras Fig. 1. Ilustración gráfica del algoritmo de intercambio de claves Diffie-Hellman [5] ... 2 Fig. 2. Diagrama de bloques algoritmo Diffie-Hellman ................................................ 3 Fig. 3. Esquema de la criptografía simétrica o de clave secreta [6] ............................ 8 Fig. 4. Procesos de cifrado y cifrado inverso algoritmo asimétrico [22] ..................... 10 Fig. 5. Cifrador y descifrador de bloque [19].............................................................. 11 Fig. 6. Diseño compensaciones para la criptografía ligera [8] ................................... 12 Fig. 7. Pseudocódigo del proceso de cifrado del algoritmo HIGHT [11] .................... 13 Fig. 8. Pseudocódigo de la función de generación de subclaves [27] ....................... 14 Fig. 9. Pseudocódigo de la función F0 y F1[11] ........................................................ 14 Fig. 10. Pseudocódigo de las funciones de ronda en un solo proceso [11] ............... 15 Fig.11. Diagrama de Bloques del proceso de cifrado del algoritmo HIGHT .............. 25 Fig. 12. Pseudocódigo del proceso de cifrado del algoritmo HIGHT [11] .................. 26 Fig. 13. Diagrama de la función Whitening Key [29] .................................................. 26 Fig. 14. Interfaz pruebas: Algoritmo HIGHT .............................................................. 28 Fig.15. Interfaz gráfica y notificaciones para ingreso de los datos de entrada .......... 28 Fig. 16. Interfaz gráfica y notificaciones de error en el ingreso de los datos ............. 29 Fig. 17. Pruebas implementación HIGHT: Cifrado vector de prueba 1 [11] ............... 30 Fig. 18. Pruebas implementación HIGHT: Cifrado vector de prueba 2 [11] ............... 30 Fig. 19. Pruebas implementación HIGHT: Cifrado vector de prueba 3 [11] ............... 30 Fig. 20. Pruebas implementación HIGHT: Cifrado vector de prueba 4 [11] ............... 31 Fig.21 Medición tiempo de cifrado: Mbed FRDM-KL25Z ........................................... 32 Fig.22. Medición tiempo de descifrado: Mbed FRDM-KL25Z .................................... 32 Fig. 23. Medición tiempo de cifrado: Mbed NucleoF446RE ...................................... 33 Fig. 24. Medición tiempo de descifrado: Mbed NucleoF446RE ................................. 33 Fig.25. Pruebas implementación Diffie-Hellman: números enteros ........................... 36 Fig. 26. Diagrama de bloques de la Interfaz gráfica desarrollada en Matlab ............. 37 Fig. 27 Diagrama de bloques HSM ........................................................................... 38. III.

(10) Índice de tablas Tabla 1. Tabla comparativa de algunos algoritmos de cifrado .................................. 13 Tabla 2. Características del Multiprocesador Propeller ............................................. 17 Tabla 3. Características de los PIC’s de Microchip ................................................... 18 Tabla 4. Características de los Chips AVR’s ............................................................. 19 Tabla 5. Características Chip’s de Texas Instrument ................................................ 19 Tabla 6. Características de los Psoc’s ...................................................................... 20 Tabla 7. Características de los dispositivos Freescale .............................................. 21 Tabla 8. Características de la tarjeta de desarrollo MBED FRDM-KL25Z ................. 23 Tabla 9. Vectores de prueba del algoritmo HIGHT [11] ............................................. 29 Tabla 10. Recursos de memoria utilizados por la presente investigación ................. 31 Tabla 11 Recursos utilizados de la plataforma Mbed en la implementación del HSM ........................................................................................................................... 36 Tabla 12. Comparación recursos y rendimiento del algoritmo HIGHT: Cifrado y descifrado........................................................................................................... 39.

(11) Introducción El hombre a lo largo del tiempo se ha visto en la necesidad de comunicar información confidencial a otros individuos ya sea por motivos militares, diplomáticos, comerciales, etc., mantener la información en secreto es la pauta para conservar la integridad de un individuo o en ocasiones de una comunidad completa [1] [2]. El surgimiento de redes de comunicación, en particular de Internet, ha abierto nuevas posibilidades para el intercambio de información[3][4]. Al mismo tiempo, son cada vez mayores las amenazas que caen sobre la seguridad de la información que se transmite[5]. La seguridad, en general, se considera como un aspecto de gran importancia en cualquier corporación que trabaje con sistemas computarizados y es necesaria con el fin de impedir el espionaje, inyección y manipulación de los paquetes de datos[6]. Es necesario entonces, crear diferentes mecanismos, dirigidos a alcanzar una alta confidencialidad, autenticidad y privacidad en el manejo de la información[7]. En diversos entornos informáticos, se necesitan módulos de seguridad de hardware para proteger claves criptográficas y servicios de seguridad contra amenazas de fuga de información. Mejorar el rendimiento del tiempo y las comunicaciones seguras son algunos de los requisitos que imponen a los diseñadores de sistemas la necesidad de buscar implementaciones de algoritmos criptográficos en hardware más eficientes. Actualmente, hay una fuerte demanda de aplicaciones implementadas en dispositivos cuya memoria, potencia y poder computacional es limitada; los algoritmos de cifrado tradicionales no son adecuados para este tipo de dispositivos[8][9]. En consecuencia, en este proyecto se diseñó e implementó una llave hardware completa basada en la implementación del algoritmo HIGHT[10][11], cuyas simples operaciones lo hacen apto para implementaciones caracterizadas por el bajo consumo de energía y bajo costo que responda a los requerimientos básicos de la criptografía ligera para la protección de la información[12][13][10]. En Colombia no se conocen trabajos de este tipo por lo que se espera que el presente desarrollo sirva de apoyo para futuras implementaciones académicas en la Universidad Distrital y a nivel nacional. Para este proyecto se realizó un análisis de las aplicaciones y principales ventajas de utilizar un algoritmo Lightweigth en una llave de seguridad hardware, con el fin de determinar el microcontrolador adecuado y los tipos de funciones criptográficas a implementar para obtener un HSM de acuerdo a los objetivos propuestos, luego se diseña el módulo siguiendo los estándares de seguridad establecidos por cada bloque que compone la llave hardware. Por último, se realiza la evaluación de cada uno de los bloques y el funcionamiento del HSM en su totalidad con el fin de obtener las métricas necesarias para determinar las prestaciones y el desempeño del HSM para futuras comparaciones. V.

(12) I n t r o d u c c i ó n | VI. Descripción del proyecto Planteamiento del problema Conforme la tecnología a nivel computacional y de tratamiento de datos avanza, los principales problemas de seguridad y vulnerabilidad de la información también lo hacen, como se ha visto en los últimos años, donde la cantidad y el grado de impacto sobre las personas y empresas han crecido de manera crítica tanto a nivel nacional como internacional. Los principales riesgos que se tienen al momento de transmitir y procesar información son la baja seguridad en los sistemas de información, la baja confiabilidad en los datos entregados y recibidos por medio de canales de transmisión de información inseguros, la manipulación de los datos por parte de terceros con fines maliciosos, la suplantación de identidades por entes no autorizados y la pérdida de información. En la actualidad, existen múltiples herramientas para protección de los datos en los sistemas de información, bajo estándares caracterizados por la robustez de las funciones criptográficas implementadas, estos sistemas representan un alto costo de desarrollo y requieren de prestaciones de memoria y procesamiento elevadas en los equipos y módulos utilizados, lo que dificulta la implementación, especialmente en empresas y personas que no dispongan de una arquitectura física robusta en sus sistemas de información y procesamiento de datos.. Objetivos Objetivo general Diseñar un módulo de seguridad hardware implementando el algoritmo de cifrado por bloques HIGHT en microcontrolador. Objetivos específicos 1. Implementar el algoritmo HIGHT para el cifrado y descifrado de archivos de texto en un HSM. 2. Generar una aplicación hardware para realizar pruebas funcionales de cifrado y descifrado a la implementación del algoritmo HIGHT. 3. Practicar comparaciones para validar los resultados de la implementación de la llave hardware y analizar las respectivas métricas: cantidad de memoria RAM y ROM utilizada y de ser posible, velocidad de cifrado..

(13) Capítulo 1 Fundamentación teórica y matemática 1. Logaritmo discreto En teoría de grupos, los logaritmos discretos en su análisis se trabajan de la misma forma que los logaritmos ordinarios. Mientras que el cálculo de la inversa conocida como la exponenciación discreta es simple, en términos computacionales, el cálculo del logaritmo discreto es dificultoso en la mayoría grupos. En la presente implementación se hace uso de este tipo de logaritmo en el método de intercambio de claves de Diffie-Hellman ya que esto hace que computacionalmente no sea posible resolver el logaritmo de un número en aritmética modular en un tiempo razonable. Al mismo tiempo, el problema inverso, la exponenciación discreta, no es difícil (puede ser computada eficientemente usando Exponenciación binaria). Esta asimetría es análoga a la que ocurre entre la factorización de enteros y la multiplicación de enteros. Ambas asimetrías han sido explotadas en la construcción de sistemas criptográficos. Opciones populares para el grupo G en la criptografía usando logaritmos discretos son aquellos para los que no existen buenos algoritmos, entre los que se encuentran los grupos cíclicos como por ejemplo el Cifrado de ElGamal, Diffie-Hellman y el algoritmo de firma digital, también se encuentran los subgrupos cíclicos de curvas elípticas sobre cuerpos finitos [14] La función del logaritmo está dada por la siguiente definición: Sea (G,∙) un grupo cíclico finito de orden n donde n es la cantidad de elementos del grupo, es decir, 𝐺 = {𝑒, 𝑔, 𝑔2 , … , 𝑔𝑛−1 } para cierto elemento g de G. Dado ℎ perteneciente a 𝐺 existe un 𝑘 perteneciente a 𝒁 tal que ℎ = 𝑔𝑘 . Este valor de k es el logaritmo discreto de 𝑎 en base 𝑔: 𝑙𝑜𝑔𝑔 : 𝐺 → ℤ/𝑛ℤ. (1.1). Dada la función de asignación de valores 𝑙𝑜𝑔𝑔 (𝑥) = 𝑘 tal que 𝑥 ≡ 𝑔𝑘. (1.2). Algoritmo Diffie-Hellman El algoritmo propuesto en 1976 por Whitfield Diffie y Martin Hellman [14] es uno de los primeros ejemplos prácticos de intercambio de claves implementado en el campo de la criptografía. El método Diffie-Hellman permite que dos partes que se conocen mutuamente establecer conjuntamente una clave secreta compartida sobre un canal de comunicaciones inseguro. Ésta clave se puede utilizar para cifrar las comunicaciones posteriores utilizando un cifrado clave simétrico. 1.

(14) Capítulo 1. Fundamentación teórica y matemática|2. En la Figura 1 se muestra la idea general del intercambio de claves usando colores en lugar de números muy grandes. Supóngase que, dos partes (A y B) requieren intercambiar información por medio de un canal inseguro de comunicación, el algoritmo de intercambio de claves finalmente genera una clave idéntica que es computacionalmente difícil (imposible que los superordenadores modernos hagan en un tiempo razonable) para invertir para otra parte que podría haber estado escuchando la conversación. Las partes A y B ahora utilizarán este secreto común para cifrar y descifrar sus datos enviados y recibidos.. Fig. 1. Ilustración gráfica del algoritmo de intercambio de claves Diffie-Hellman [5]. Matemáticamente el proceso consiste en lo siguiente, la parte A y B acuerdan elegir un número primo p que es común entre los dos; ambas partes eligen un número (también llamado clave privada) para cada uno, ésta clave privada es la que se quiere proteger de transmitir en un medio inseguro. El algoritmo establece un número llamado generador (g), por lo general, 2 o 5. A partir de la aplicación de logaritmos discretos, se obtiene la clave pública que ambas partes intercambian para posteriormente realizar un proceso inverso que permita que la parte A y B lleguen a un número común, muy distinto a la clave privada que permitirá establecer que tanto el receptor y el emisor son auténticos y establecer comunicación entre ellos. A continuación, se muestra un ejemplo práctico del protocolo: 1. A y B acuerdan utilizar un número primo 𝑝 = 23 y un generador 𝑔 = 2 2. A elige una clave privada 𝑎 = 6, luego envía a B 𝐴 = 𝑔𝑎 𝑚𝑜𝑑 𝑝 (clave pública) 𝐴 = 26 𝑚𝑜𝑑 23 = 18. (1.3).

(15) Capítulo 1. Fundamentación teórica y matemática |3. 3. B elige una clave privada 𝑏 = 8, luego envía a A 𝐵 = 𝑔𝑏 𝑚𝑜𝑑 𝑝 (clave pública) 𝐵 = 28 𝑚𝑜𝑑 23 = 3. (1.4). 𝐾 = 36 𝑚𝑜𝑑 23 = 16. (1.5). 𝐾 = 188 𝑚𝑜𝑑 23 = 16. (1.6). 4. A calcula 𝐾 = 𝐵 𝑎 𝑚𝑜𝑑 𝑝 5. B calcula 𝐾 = 𝐴𝑏 𝑚𝑜𝑑 𝑝. 6. Ahora, ambas partes comparten una clave secreta K En la Figura 2 se muestra el diagrama de bloques del algoritmo de intercambio de claves Diffie-Hellman y en (1.7) se muestra la propiedad utilizada para hallar la clave secreta K.. Fig. 2. Diagrama de bloques algoritmo Diffie-Hellman. 𝐾 = 𝐴𝑏 𝑚𝑜𝑑 𝑝 = (𝑔𝑎 𝑚𝑜𝑑 𝑝)𝑏 𝑚𝑜𝑑 𝑝 = 𝑔𝑎𝑏 𝑚𝑜𝑑 𝑝 = (𝑔𝑏 𝑚𝑜𝑑 𝑝)𝑎 𝑚𝑜𝑑 𝑝 = 𝐵 𝑎 𝑚𝑜𝑑 𝑝 (1.7). Una vez que A y B calculan la clave secreta K, pueden usarlo como una clave de cifrado, conocida sólo por ellos, para enviar mensajes a través del mismo canal de comunicaciones abiertas. Por supuesto que para que el sistema alcance niveles óptimos de seguridad, valores más grandes de a, b y p serán necesarios de tal forma que incluso los ordenadores modernos más rápidos no pueden hallar a dados sólo g, p, A y B. El problema que una computadora necesita resolver es el problema del logaritmo discreto visto en el apartado anterior. El cálculo de 𝑔𝑎 𝑚𝑜𝑑 𝑝 se conoce como exponenciación modular y puede hacerse de manera eficiente incluso para grandes números..

(16) Capítulo 1. Fundamentación teórica y matemática|4. Pequeño teorema de Fermat Para números grandes de a y b y debido a que la operación de 𝑔𝑎 𝑚𝑜𝑑 𝑝 puede representar un desafío para los dispositivos con poca memoria, en la presente implementación se hizo uso del Pequeño teorema de Fermat en la exponenciación modular. Este teorema está relacionado con la divisibilidad en el campo de la teoría de números, es ampliamente utilizado en aritmética modular ya que se aplica al problema de la primalidad y la criptografía. Una pequeña generalización del teorema, que se sigue de él, dice lo siguiente: Si 𝑝 es primo y 𝑚 y 𝑛 son enteros positivos con 𝑚 ≡ 𝑛 (𝑚𝑜𝑑 𝑝 − 1), entonces 𝑎𝑚 ≡ 𝑎𝑛 (𝑚𝑜𝑑 𝑝) para todos los enteros 𝑎. La definición general para el pequeño teorema de Fermat está dada por: Si 𝑝 es un número primo, entonces para cada número natural 𝑎, con 𝑎 > 0, 𝑎𝑝 ≡ 𝑎(𝑚𝑜𝑑 𝑝). (1.8). Si 𝑝 es un número primo, entonces para cada número natural 𝑎 coprimo con 𝑝, 𝑎𝑝−1 ≡ 1(𝑚𝑜𝑑 𝑝). (1.9). A continuación, se muestra un ejemplo práctico del teorema: Si 538 ≡ 4 (𝑚𝑜𝑑 11) entonces: 538 = 510∗3+8 = (510 )3 (58 ) = (13 )(58 ) = 58 = (52 )4. (1.10). Dado 52 ≡ 3(𝑚𝑜𝑑11) 538 ≡ 4 (𝑚𝑜𝑑 11) = 34 = 81. (1.11). 2. Campos finitos En muchas operaciones relacionadas con algoritmos criptográficos se utilizan campos finitos. Éste tipo de operaciones son modulativas y se utilizan en criptografía con el objetivo de garantizar la propiedad clausurativa, para así conservar el tamaño de los datos [29]. En general, en los cifradores en bloque, todos los bytes se interpretan como elementos de un campo finito, los cuales se representan mediante un campo de Galois. La eficiencia, la velocidad y el espacio ocupado en un procesador por la aritmética de campos finitos, es un factor imprescindible en el momento de elegir un algoritmo para la implementación de cualquier operación en el campo. La investigación en esta área se encamina a lograr mayor eficiencia tanto en la representación de los campos finitos, como en la implementación de aritmética en estos campos, tanto en software como en.

(17) Capítulo 1. Fundamentación teórica y matemática |5. hardware [29]. Si 𝑞 = 𝑝𝑚 donde 𝑝 es un número primo y 𝑚 un entero positivo, entonces 𝑝 es denominado la característica del campo 𝐺𝐹(𝑞) y 𝑚 es denominado el grado de extensión de 𝐺𝐹(𝑞) [5]. El campo finito 𝑮𝑭(𝒑) Sea p un número primo. El campo GF ( p) , denominado un campo primo, está compuesto por el conjunto de enteros {0,1,..., p  1} con las siguientes operaciones aritméticas [9]: 1. Adición: Si a, b  GF ( p) entonces a  b  r , donde r es el residuo de la división de a  b entre p y 0  r  p  1 . Esta operación es conocida como la suma módulo p. 2. Multiplicación: a, b  GF ( p) , entonces a  b  s , donde s es el residuo de la. división de a  b entre p. A esta operación se le conoce como multiplicación módulo p. 3. Inversión: Si a un elemento de GF ( p) diferente de cero, el inverso de a módulo 1 p, denotado como a , es el entero único c  GF ( p) tal que a  c  1 . El campo finito 𝑮𝑭(𝟐𝒎 ) Para el caso de los algoritmos de cifrado en bloque, es necesario trabajar con campos m de la forma GF (2 ) debido a que los coeficientes son residuos del módulo 2 0,1 y esto permite una representación binaria. En este campo existe un inverso aditivo y multiplicativo que permite cifrar y descifrar en el mismo cuerpo [10]. En los cifradores en bloque las operaciones se realizan a nivel de byte en el campo GF (2 8 ) . Cada byte B, se compone de 8 bits: b7, b6, b5, b4, b3, b2, b1, b0, Representado este byte como un polinomio se tiene la ecuación 1.12:. b7 x 7  b6 x 6  b5 x 5  b4 x 4  b3 x 3  b2 x 2  b1 x1  b0. (1.12). Un posible polinomio irreducible de grado ocho se muestra en la ecuación 1.13: x8  x 4  x3  x  1. (1.13). La representación binaria del polinomio irreducible descrito en la ecuación 1.13 es representada por la ecuación 1.14:. 100011011. (1.14).

(18) Capítulo 1. Fundamentación teórica y matemática|6. Operaciones en el Campo GF (28 ) 8 Suma y resta en GF (2 ). Las funciones de suma y resta se realizan con una operación XOR, de esta forma si los coeficientes son iguales dará como resultado 0 y si los coeficientes son diferentes el resultado será 1 [11]. Ejemplo 1 [12]: Las siguientes expresiones son equivalentes: la ecuación 2.4 muestra la notación polinomial, la ecuación 2.5 la notación binaria y la ecuación 2.6 la hexadecimal.. ( x 6  x 4  x 2  x  1)  ( x 7  x  1)  x 7  x 6  x 4  x 2. (1.15). {01010111}  {10000011}  {11010100}. (1.16). {57}  {83}  {D4}. (1.17). Claramente, la adición puede ser implementada mediante la instrucción XOR bit a bit.. 3. LFSR El registro de desplazamiento con realimentación lineal (LFSR) son métodos para generar secuencias de números pseudoaleatorios utilizando bits que recorren un arreglo de celdas y que relacionan la salida con la entrada utilizado la operación XOR. La secuencia tiene un periodo de repetición, y cuando éste es máximo, ese LFSR tiene interés criptográfico [13]. Un LFSR puede modelarse con base en un polinomio modular. Al usar operaciones a nivel de bits, los coeficientes del polinomio de la ecuación 1.18 serán 1 o 0.. p( x)  (a n x n  a n1 x n1  ...  a 2 x 2  a1 x  a0 ) mod 2. (1.18). p(x) es llamado polinomio característico del LFSR, y sus coeficientes no-nulos representan las celdas que actuarán en la realimentación. Se considera que [14]: El grado 𝑛 del polinomio característico indicará el número de celdas y se producirá una secuencia de periodo 2𝑛−1. 1. El valor del término independiente es 𝑎0 = 1, y representa la entrada realimentada. 2. Las salidas que influyen en la entrada, se denominan taps. Para el algoritmo HIGHT se tiene el siguiente polinomio característico de la ecuación 1.19 [15]:.

(19) Capítulo 1. Fundamentación teórica y matemática |7. x7  x3  1. (1.19). El grado de este polinomio (7) indica el número total de celdas que tendrán los números generados pseudoaleatoriamente; los taps de éste polinomio son los ubicados en las celdas 7 y 3.. 4. Base teórica de la criptografía Criptografía La criptografía es una rama inicial de las matemáticas, y en la actualidad también de la informática y la telemática, que hace uso de métodos y técnicas con el objetivo principal de cifrar, y por tanto proteger, un mensaje por medio de un algoritmo usando una o más claves [3]. La criptografía no es el único medio para proporcionar seguridad a la información, pero sí es una de las técnicas más usadas [4]. La criptografía en sí, se divide en dos tipos de sistemas: la criptografía simétrica y la asimétrica. Esencialmente, con la primera se resuelven los problemas de confidencialidad e integridad, mientras que con la segunda se resuelven los de autenticidad y no rechazo; aquí sólo se dará una breve introducción a la criptografía asimétrica ya que no es objeto de investigación del presente proyecto. En la criptografía simétrica existirá una única clave que deben compartir emisor y receptor. Con ésta clave se cifra y descifra, o bien la clave para esta última deriva fácilmente de la primera, por lo que la seguridad reside en mantener dicha clave en secreto [3][4]. En este tipo de criptografía, la seguridad se garantiza principalmente por dos factores, la robustez del algoritmo implementado y la longitud de clave utilizada, la robustez del algoritmo permite que el criptoanálisis sea inservible al momento de violar la seguridad en el canal de información, cuando los métodos de criptoanálisis son insuficientes para revelar la información, la clave entra a desempeñar un papel fundamental ante posibles ataques denominados “por fuerza bruta” los cuáles consisten en intentar obtener la clave a través de probar las posibles combinaciones de la clave por medio de herramientas computacionales, la longitud de la clave determinará la seguridad del sistema. En la actualidad, los principales algoritmos de cifrado utilizan claves de por lo menos 128 bits, lo cual implica que hay posibles combinaciones, es decir diferentes combinaciones, lo que garantiza la seguridad de la información por mucho tiempo para los recursos computacionales existentes hoy en día [5]. Existe una clasificación de este tipo de criptografía en tres familias, la criptografía simétrica de flujo (stream cipher), la criptografía simétrica de resumen (hash functions) y la criptografía simétrica de bloques (block cipher), ésta última es la utilizada por el algoritmo HIGHT implementado en este proyecto..

(20) Capítulo 1. Fundamentación teórica y matemática|8. Criptografía simétrica La criptografía simétrica o de clave secreta consiste en una única clave (secreta) que deben compartir emisor y receptor. Con la misma clave se cifra y se descifra por lo que la seguridad reside en mantener dicha clave en secreto [17]. En este tipo de criptografía, la seguridad se garantiza principalmente por dos factores, la robustez del algoritmo implementado y la longitud de clave utilizada, la robustez del algoritmo permite que el criptoanálisis sea inservible al momento de violar la seguridad en el canal de información, cuando los métodos de criptoanálisis son insuficientes para revelar la información, la clave entra a desempeñar un papel fundamental ante posibles ataques denominados “por fuerza bruta” los cuáles consisten en intentar obtener la clave a través de probar las posibles combinaciones de la clave por medio de herramientas computacionales, la longitud de la clave determinará la seguridad del sistema, en la actualidad, los principales algoritmos de cifrado utilizan claves de por lo menos 128 bits, lo cual implica que hay 2^128 posibles combinaciones, es decir [(3.403*10)]^38 diferentes combinaciones, lo que garantiza la seguridad de la información por mucho tiempo para los recursos computacionales existentes hoy en día[18]. La criptografía simétrica implementa dos técnicas básicas utilizadas en la criptografía, que se conocen como confusión y difusión propuestas por el matemático e ingeniero electrónico estadounidense Claude Elwood Shannon que se emplean a través de la sustitución y la transposición. Los cifrados por sustitución aplican el principio de la de la confusión propuesta por Shannon, que consiste en sustituir caracteres del texto en claro por otros caracteres del mismo alfabeto o de otros alfabetos. Por su parte, los cifrados por transposición aplican el principio de la dispersión también propuesto por Shannon y que tiene como acción la permutación de los caracteres del texto en claro [7].. Fig. 3. Esquema de la criptografía simétrica o de clave secreta [6].

(21) Capítulo 1. Fundamentación teórica y matemática |9. Principales algoritmos simétricos o de clave secreta DES (Data Encryption Standard) El algoritmo de cifrado aplica permutaciones y sucesiones de manera consecutiva al texto en claro, este algoritmo utiliza una clave simétrica de 64 bits, de los cuales los primeros 54 bits se utilizan para el proceso de cifrado, los 8 bits restantes de la clave se utilizan para procesos de detección de errores, por lo cual la clave efectiva que utiliza DES es de 54 bits. En la actualidad este algoritmo ya no es un estándar seguro debido a que hoy en día se puede vulnerar este algoritmo por tres métodos de criptoanálisis: Criptoanálisis Diferencial, Criptoanálisis Lineal y ataque por fuerza bruta. 3DES (Triple Data Encryption Standard) Como su nombre lo indica, este algoritmo consiste en aplicar las mismas funciones que DES pero en tres ocasiones, utiliza una longitud de clave de 128 bits, que se divide a su vez en dos claves de 64 bits; 3DES aumenta de manera considerable la seguridad con respecto a DES pero consume recursos computacionales significativos a diferencia de DES, existe otra variante de este tipo de algoritmos aunque no es muy conocida por su alto consumo de recursos computacionales conocido como DES-EDE3, se utiliza una longitud de clave de 192 bits que se divide en tres claves, con este algoritmo se consigue mayor robustez. RC5 (Rivest Cipher 5) Este tipo de algoritmo se caracteriza por tener la capacidad de variar la longitud de clave, el número de iteraciones y los bloques de información, se aplican operación XOR a los bloques de información que pueden ser de 32,64 o 128 bits, la seguridad de este algoritmo aumenta con relación a la cantidad de iteraciones que se realicen. IDEA (International Data Encription Algorithm) Utiliza una clave de longitud de 128 bits que se aplica a bloques de datos de 64 bits, IDEA combina operaciones de matemática modular y operaciones lógicas de la OR exclusiva, debido a longitud de clave los ataques por fuerza bruta se hacen ineficientes y se considera un algoritmo bastante seguro para muchas aplicaciones. BLOWFISH Este algoritmo utiliza longitud de bloque de 64 bits, con longitudes de clave variable que por lo general son de 32, 64 y 128 bits, aunque tiene la posibilidad de implementar claves de hasta 448 bits, realiza un total de 16 iteraciones utilizando operaciones de matemática modular y OR exclusiva, la principal ventaja de este algoritmo es que es de uso libre en todo el mundo. AES (Advanced Encryption Standard) Este algoritmo utiliza longitud de clave variable que puede ser de 128, 192 o 256 bits, la longitud de los bloques es de 128 bits, la cantidad de iteraciones o rondas que utiliza depende de la longitud de clave utilizada en el algoritmo, utiliza en su mayoría cálculos realizados en estructuras de campos finitos. Este algoritmo es un estándar de cifrado adoptado por el gobierno de los Estados Unidos a partir del 2001 luego de ser el algoritmo.

(22) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 10. ganador en un concurso organizado por el Instituto de Normas y Tecnología (NIST) en 1997.. Criptografía asimétrica Es un algoritmo de cifrado que funciona mediante un par de llaves, la pública para cifrar y la privada para descifrar el mensaje. Aunque ambas llaves pertenecen al usuario que ha enviado el mensaje, la llave pública se puede entregar a cualquier persona mientras que la privada debe ser guardada y protegida por el usuario de modo que nadie tenga acceso a ella. Los algoritmos asimétricos están basados en funciones matemáticas complejas que dificultan la obtención de la llave privada desde la llave pública, permitiendo que esta última pueda ser compartida por cualquier medio. Debido a la complejidad de sus procesos y alto consumo de recursos es utilizado para cifrar y descifrar mensajes pequeños como las llaves de los algoritmos simétricos [22]. Fig. 4. Procesos de cifrado y cifrado inverso algoritmo asimétrico [22]. Cifradores en bloque Un texto cualquiera de información, denominado texto plano, está compuesto por un determinado número de bits, estos bits se dividen en bloques del mismo tamaño. El método de cifrado en bloque transforma cada bloque de datos en otro de igual tamaño[19]. Una característica de este tipo de cifrado es que todos los bloques se cifran en conjunto, implementando las mismas operaciones a cada uno de los bloques sin importar el orden en que estén, lo que permite ser funcional en usos prácticos como sistemas que necesiten velocidad y sean limitados en memoria..

(23) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 11. Cuando el texto en claro excede la longitud del bloque, existen modos operativos para los cifradores de bloque donde el mensaje puede ser particionado, operado con XOR y concatenado entre otras técnicas básicas.. Fig. 5. Cifrador y descifrador de bloque [19]. Criptografía ligera (Lightweigth cryptography) La criptografía ligera es un sub-campo de la ciencia relativamente joven, que está localizado en la intersección de la ingeniería eléctrica, la criptografía y la ciencia de la computación y se centra en nuevos diseños, adaptaciones o implementaciones eficientes de criptografías primitivas y protocolos criptográficos [8]. El diseño de algoritmos de cifrados ligeros, depende de un balance adecuado entre tres objetivos que rigen este tipo de criptografía que son, la seguridad, el costo y el rendimiento. Para cifrados en bloque, la longitud de la clave proporciona el balance adecuado entre seguridad y costo, mientras que la cantidad de rondas proporciona el balance adecuado entre seguridad y rendimiento, y por último la arquitectura de hardware es la encargada de proporcionar el balance adecuado entre costo y rendimiento. En términos generales, dos de los objetivos fundamentales de la criptografía liviana se pueden optimizar fácilmente, teniendo en cuenta que para poder optimizar los tres objetivos al mismo tiempo sin perder las características de liviandad que caracterizan la criptografía liviana es una tarea muy complicada y extensa de realizar por la cual perdería el sentido fundamental de este tipo de criptografía. En términos generales, hay tres enfoques para implementar criptografías primitivas para aplicaciones extremadamente ligeras tales como etiquetas RFID pasivas: 1. Optimizado de implementaciones de bajo costo para algoritmos estandarizados y de confianza. 2. Ligera modificación de un sistema de cifrado bien investigado y de confianza. 3. Diseño de nuevos sistemas de cifrado con el objetivo de tener una implementación con bajo costo de hardware [8]..

(24) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 12. Fig. 6. Diseño compensaciones para la criptografía ligera [8]. Aplicaciones algoritmos lightweight Hay varias áreas emergentes en las que los dispositivos altamente limitados están interconectados, trabajando en conjunto para lograr alguna tarea. Ejemplos de estas áreas incluyen: sistemas automotrices, redes de sensores, asistencia sanitaria, sistemas de control distribuido, Internet de las Cosas (IoT), sistemas cibernéticos y la red inteligente. La seguridad y la privacidad pueden ser muy importantes en todas estas áreas. Debido a que la mayoría de los algoritmos criptográficos modernos fueron diseñados para entornos de escritorio/servidor, muchos de estos algoritmos no se pueden implementar en los dispositivos restringidos utilizados por estas aplicaciones. Cuando los algoritmos actuales aprobados por el NIST fueron diseñados para encajar en los recursos limitados de entornos restringidos, su desempeño resultó no ser aceptable. Por estas razones, el NIST inició un proyecto criptografía ligera para investigar los problemas y luego desarrollar una estrategia para la estandarización de algoritmos criptográficos ligeros. Argumento de selección: Algoritmo HIGHT En la actualidad, tecnologías como por ejemplo identificación por radio frecuencia (RFID), se han visto afectadas por limitaciones de recursos para poder ser implementadas en sistemas de comunicación seguros [9], ya que los algoritmos de cifrado como AES, que es el estándar para cifradores en bloque, no se puede implementar en estos sistemas que requieren bajo consumo de energía sin reducir la eficiencia ni la seguridad del mismo, por lo cual se han desarrollado distintos tipos de.

(25) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 13. cifrado de bloque ligeros que estén en la capacidad de proteger la información bajo las limitaciones de este tipo de aplicaciones. En la Tabla I se muestran diferentes implementaciones que se han desarrollado de distintos algoritmos. Una de esas alternativas, que mejor se adaptan a tales limitaciones es HIGHT (high security and light weight), un algoritmo de cifrado de bloques de alta seguridad y bajo peso con bloques de 64 bits de longitud y clave de 128 bits, que es adecuado para aplicaciones de bajo costo, bajo consumo de energía y ultraligeras [20]. Las principales ventajas que hacen de HIGHT un algoritmo apropiado para tecnologías como RFID, son las simples operaciones que realiza en un total de 32 rondas, por tal motivo este algoritmo es orientado a hardware en lugar de software como muchos otros algoritmos de cifrado, esta característica hace que HIGTH tenga mayor rendimiento que las implementaciones de Hardware de bajo recursos de AES propuestas recientemente [21]. La implementación hardware del algoritmo HIGHT se basa en 4 funciones o bloques, estos bloques funcionan de manera secuencial, es decir, cada proceso es dependiente del proceso anterior [29], un esquema básico del proceso de cifrado se puede observar en la figura 7. Tabla 1. Tabla comparativa de algunos algoritmos de cifrado. Fuente: [25]. Fig. 7. Pseudocódigo del proceso de cifrado del algoritmo HIGHT [11].

(26) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 14. Key Schedule La función Key Schedule toma la clave principal (clave maestra) de 128 bits (MK15, MK14,..., MK0) y además genera dos algoritmos [8], [31]: 1. Whitening Key Generation: Genera ocho bytes (WK7, WK6,..., WK0), que serán añadidos antes de la primera y después de la última ronda. 2. Sub Key Generation: Éste algoritmo utiliza un subalgoritmo para generar 128 constantes de 7 bits (δ0,…, δ127) para luego generar 128 subclaves (SK127, SK126,..., SK0) que serán utilizadas en un ciclo de cifrado; cuatro subclaves son utilizadas por cada ronda.. Fig. 8. Pseudocódigo de la función de generación de subclaves [27]. Transformación Inicial La transformación inicial convierte el texto plano (P7, P6,…, P0) en entrada de la primera función ronda (X0=X0, 7, X0, 6,…, X0, 0) usando cuatro bytes de Whitening Key, desde WK0 hasta WK3 [32], [33]. Función de Ronda Las funciones de ronda reciben un texto de 64 bits dividido en 8 bytes, en el proceso de funciones de ronda se realiza reiterativamente 32 veces el mismo proceso, se utilizan dos funciones adicionales conocidas como 𝐹0 y 𝐹1 representadas en la figura 9, estas funciones se aplican a los bytes 6 y 2 en el caso de 𝐹0 y los bytes 0 y 4 en el caso de 𝐹1 para cada una de las rondas, al texto nuevo se le realiza adición modular o XOR con los resultados obtenidos por las funciones adicionales para el caso de los bytes 0,2,4 y 6, para el resto de bytes se utiliza sustitución con el byte anterior.. Fig. 9. Pseudocódigo de la función F0 y F1[11].

(27) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 15. Fig. 10. Pseudocódigo de las funciones de ronda en un solo proceso [11]. Transformación Final La transformación final se encarga mediante el desplazamiento hacia la derecha de cambiar la salida de 64 bits de la permutación de la última ronda (X32=X32, 7, X32, 6,…, X32, 0) en el texto cifrado (C7, C6,…, C0) de 64 bits haciendo uno de los cuatro bytes de Whitening Key, WK4, WK5, WK6 y WK7 [31], [34].. Proceso de descifrado El proceso de descifrado se realiza invirtiendo el proceso de cifrado. Key Schedule generará las subclaves de forma inversa. En la función ronda en el proceso de descifrado, la adición modular se convierte en sustracción modular y el desplazamiento de bytes se realiza en dirección opuesta que aquella en el proceso de cifrado [33].. Módulo de Seguridad Hardware Los módulos de seguridad hardware, se conocen como dispositivos criptográficos de hardware y software criptográfico. En general, se define como una pieza de hardware y software que por lo general se adjunta a un PC o servidor y proporciona por lo menos el mínimo de funciones criptográficas incluyendo cifrado y descifrado. El dispositivo físico (es decir, HSM) tiene una interfaz de usuario y una interfaz programable. Normalmente, los HSM administran las claves criptográficas y servicios de seguridad bancaria, pagos, etc. Para proteger la información crítica de los HSM, deben defender los accesos de personas no autorizadas, las conexiones de middleware y aplicaciones maliciosas y el robo de mensajes [15]. Los HSM son medidas eficaces con el fin de asegurar la seguridad de los mecanismos de seguridad debido a que [16]: 1. protege las medidas de seguridad del software actuando como ancla de seguridad de confianza, 2. genera, almacena y procesa de manera segura material crítico protegiéndolo de cualquier software potencialmente malintencionado, 3. restringe las posibilidades de ataques de manipulación de hardware,.

(28) C a p í t u l o 1 . F u n d a m e n t a c i ó n t e ó r i c a y m a t e m á t i c a | 16. 4. acelerar las medidas de seguridad mediante la aplicación de hardware criptográfico especializado, 5. reduce los costes de seguridad en volúmenes elevados mediante la aplicación de circuitos especiales altamente optimizados en lugar de hardware de uso general costoso..

(29) CAPITULO 2 Plataformas embebidas de desarrollo 1. Plataformas soporte Uno de los objetivos de este proyecto es generar una aplicación hardware para realizar pruebas funcionales de cifrado y descifrado a la implementación del algoritmo HIGHT, es por tal razón que se evaluaron las diferentes características y ventajas de los dispositivos programables disponibles en el mercado aptos para implementar de mejor manera el algoritmo HIGHT, teniendo en cuenta características las principales características del dispositivo como arquitectura, precio, lenguaje de programación, memoria, velocidad del dispositivo y facilidad de adquisición en Colombia.. Multiprocesador PROPELLER En la Tabla II se pueden observar las características de este dispositivo, es un multiprocesador producido por la marca Parallax Inc. Su arquitectura consiste en ocho procesadores que comparten pines de salida y recursos. Cada uno de los ocho procesadores es de 32 bits, estos procesadores son conocidos como COG [25] Tabla 2. Características del Multiprocesador Propeller. Microprocesador Lenguaje Soporta ANSI C/C++ Compilador Arquitectura MIPS Ancho del bus de datos Memoria Velocidad Max. de reloj Sistema de desarrollo Empaquetado Periféricos disponibles Disponibilidad en el país Precio Chip-Kit (COP). PROPELLER Spin, ASM-Propeller No Propeller Tool Multinúcleo 20-160 32 bits 2Kb RAM cada COG, 32Kb RAM 32Kb ROM 20Mhz Sí DIP 40 Pines y QFN 44 Keyboard-Mouse PS/2, VGA, AUDIO, UART Sí 30.000 Fuente: Parallax Inc.. Microcontroladores Microchip PIC16F/PIC18F/PIC24FJ/PIC32 Es una de las familias de dispositivos más usados en Colombia, en sus diferentes gamas y con todo tipo de características y empaquetados. En la Tabla III se muestra una visión general de los dispositivos producidos por Microchip Inc., los cuales, son de 17.

(30) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 18. uso masivo en el país. Además, varias empresas representan y distribuyen estos productos. Dichos dispositivos tienen un amplio respaldo y las universidades poseen las licencias de sus compiladores en C/C++, lo que hace que sean muy atractivos y de fácil uso. En este caso se conserva una compatibilidad en cuanto al uso de sus pines y lo más importante su compilador es estándar para las familias 16F, 18F y 24F. Tabla 3. Características de los PIC’s de Microchip. Microprocesador Lenguaje Soporta ANSI C/C++ Compilador. PIC16F ASM, C/C++ Sí. PIC18F ASM, C/C++ Sí. PIC24FJ ASM, C/C++ Sí. PIC32 ASM, C/C++ Sí. Mplab XC8, PICc CCS Multinúcleo 5 8 Bits. Mplab XC16, PICc CCS Multinúcleo 20 16 Bits. Mplab XC32. Arquitectura MIPS Ancho del bus de datos Memoria. Mplab XC18, PICc CCS Multinúcleo 10 8 Bits 0.5-4Kb RAM 196Kb ROM 40 MHz. Hasta 32Kb RAM 256Kb ROM 48 MHz. 8-32Kb RAM 512Kb ROM 80 MHz. No. Sí. Sí. Sí. DIP/SOIC/QFN UART, SPI,I2,ADC10BIT,PWM Sí. DIP/SOIC/QFN PIC16+CAN, USB Sí. DIP/SOIC/QFN PIC24+CAN, USN Sí. TQFP/QFN/XBGA PIC32+CAN, USB. 5000-10000. 13000-35000. 13000-40000. 5-10 USD. Velocidad Max. de reloj Sistema de desarrollo Empaquetado Periféricos disponibles Disponibilidad en el país Precio Chip-Kit (COP). 0.5-2Kb ROM 20 MHz. RAM. 1-32Kb. Multinúcleo 124 32 Bits 32-. No. Fuente: Microchip Inc., Sigma, Electronilab. Microcontroladores Atmel Es una de las familias más fuertes y significativas en el mercado de 8 bits a nivel mundial, siendo la familia AVR una de las más significativas y con mejor arquitectura en esta gama, ésta compañía fabrica los dispositivos hace ya varios años, pero en el último lustro ha mejorado bastante su campo de acción gracias a la inclusión del módulo Qtouch; en la Tabla IV se muestran algunas de sus principales características. Texas Instruments Históricamente una de las compañías más grandes y con mayor experiencia en la producción de microcontroladores, tiene una familia que ha sido bastante fuerte, en cuanto al manejo y consumo de potencia como lo es el MSP430, además de esto, dicha empresa ha adquirido la licencia del núcleo ARM y a puesto una serie de periféricos y hardware adicional, con varios sistemas de desarrollo bastante económicos. En la tabla V se muestra un listado de sus características..

(31) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 19. Tabla 4. Características de los Chips AVR’s. Microprocesador Lenguaje Soporta ANSI C/C++ Compilador. AVR Tiny ASM, C/C++ Sí AVR Studio. AVR Mega ASM, C/C++ Sí AVR Studio. Arquitectura MIPS Ancho del bus de datos Memoria. RISC 20 8 Bits. RISC 20 8 Bits. AVR32 ASM, C/C++ Sí AVR-GOC, AVR_OS, AVR Studio RISC 33 32 Bits. 0.5-2Kb RAM 2-8Kb ROM 20 MHz. 1-16Kb RAM 16-128Kb ROM 20 MHz. Hasta 32Kb 256Kb ROM 66 MHz. No DIP/SOIC/QFN UART, SPI, ADC10bits Sí. No DIP/SOIC/QFN Igual Tiny + Qtouch, RTC Sí. Sí LQFP Qtouch, UART, ADC12bits Sí. Velocidad Max. de reloj Sistema de desarrollo Empaquetado Periféricos disponibles Disponibilidad en el país Precio Chip-Kit (COP). 3000-6000. I2C,. PWM,. 5000-25000. RAM. SPI,. 15000-30000. Fuente: Atmel Inc., Sigma Electrónica Tabla 5. Características Chip’s de Texas Instrument. Microprocesador Lenguaje Soporta ANSI C/C++ Compilador Arquitectura MIPS Ancho del bus de datos Memoria Velocidad Max. de reloj Sistema de desarrollo Empaquetado Periféricos disponibles Disponibilidad en el país Precio Chip-Kit (COP). MSP 430 ASM, C/C++ Sí IAR KickStart, Code Composer RISC 16 16 Bits. TI STELLARIS ASM, C/C++ Sí IAR KickStart, Code Composer ARM Cortex M4 40 32 Bits. 0.5 RAM 8-16Kb ROM 16 MHz. Hasta 32Kb RAM 256Kb ROM 32 MHz. Sí DIP/SOIC UART, SPI, I2C, ADC10bits, IrDa, Ultra low power Sí. Sí LQFP Igual MSP340 + 8 UART, 4 I2C, 4SPI, USB Sí. 2500-51800. 40000-90000. Fuente: Texas Inc., Electronilab.co.

(32) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 20. Cypress Semiconductors Es una de las compañías que más ha incursionado en el mercado de éstos dispositivos en los últimos años, gracias a la versatilidad de sus dispositivos, tiene la gran ventaja de poseer bloques reconfigurables análogos y digitales, lo que hace que sea perfecto para trabajo con señales mixtas y le permite tener un sin número de periféricos según las necesidades del usuario. Dichas características se muestran en la tabla VI. Estos bloques reconfigurables aparecen desde la familia Psoc1 de 8 bits, junto con las familias Psoc4 y Psoc5 al adquirir la licencia de los núcleos ARM cortex M0 y M3 respectivamente, lo que lo hace compatible en cuanto a las herramientas de programación, librerías y RTOS Tabla 6. Características de los Psoc’s. Microprocesador Lenguaje Soporta ANSI C/C++ Compilador. PSOC1 ASM, C Sí Psoc Creator, Psoc Designer. PSOC3 ASM, C/C++ Sí Psoc Creator, Psoc Designer ARM Cortex M0 48 32 Bits. PSOC5 ASM, C/C++ Sí Psoc Creator, Psoc Designer ARM Cortex M3 80 32 Bits. Arquitectura MIPS Ancho del bus de datos Memoria. SISC Cypress M8C Core 6 8 Bits. 24 MHz. 16Kb RAM 128Kb ROM 48 MHz. 32Kb RAM 512Kb ROM 80 MHz. Velocidad Max. de reloj Sistema de desarrollo Empaquetado Periféricos disponibles Disponibilidad en el país Precio Chip-Kit (COP). No. Sí. Sí. DIP/SOIC/TQfP 6 analog blocks, 4 digital blocks, Cap Sense, MOSFET Sí. SOIC/TQFP Igual PSOC1 CAN, USB Sí. 5000-25000. 30000-7000. 0.5-2Kb RAM 1-16Kb ROM. +. TQFP Igual PSOC 4 + LCD Drive, DMA Sí 75000-4500000. Fuente: Cypress Semiconductors, Electronilab.co. FreeScale Actualmente ha sido una de las empresas con mayor inclusión de periféricos y módulos extra en sus chips y sus sistemas de desarrollo. En la tabla VII se muestran dos de sus sistemas de desarrollo más destacados con distribución en el país de bajo costo, tomando en cuenta sus módulos y funcionalidades. Por otro lado, un ítem importante y que lo hace muy atractivo, es su protocolo de programación tipo SDA, el cuál le permite ser detectado como un dispositivo de almacenamiento masivo y la programación del dispositivo únicamente se resume a mover un archivo a su carpeta. Una de las características que hace que estos sistemas de desarrollo sean.

(33) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 21. especialmente atractivos, es que son participes del proyecto Mbed (www.mbed.org), el cual da facilidades de programación por su código libre y abierto, el cual no requiere licencia, ya que su compilador es online. Éste proyecto tiene la gran ventaja de soportar múltiples plataformas ARM, haciendo que el código sea totalmente portable, tomando las ventajas de CMSIS y haciendo que sea totalmente transparente para el programador, en otras palabras, el código que se realice mediante éste compilador es absolutamente portable a más de 20 plataformas con procesadores de arquitectura ARM de por lo menos 5 diferentes compañías fabricantes de chips. Tabla 7. Características de los dispositivos Freescale. Microprocesador FRDM-KL25Z Lenguaje ASM, C/C++ Soporta ANSI Sí C/C++ Compilador MBED, Code Warrior, IAR, uVision Arquitectura ARM Cortex M0 MIPS 48 Ancho del bus de 32 bits datos Memoria 4-16Kb RAM 16-128Kb ROM Velocidad Max. de 48 MHz reloj Sistema de Sí desarrollo Empaquetado LQFP Periféricos UART, SPI, I2C, ADC16bits, disponibles 24PWM, Qtouch, Acelerometro, USB, USB serie Disponibilidad en el Sí país Precio Chip-Kit 5000-60000 (COP). FRDM.K20D50 ASM, C/C++ Sí MBED, Code Warrior, IAR, uVision ARM Cortex M4 50 32 Bits 22Kb RAM 128Kb ROM SDA 50 MHz Sí LQFP Igual KL25Z + Sensor de Temperatura, Sensor de luz Sí 10000-100000. Fuente: Freesclae Inc., Electronilab.co. 2. Argumento de Selección La selección del dispositivo a utilizar en la implementación del HSM se basó principalmente en el tipo de aplicación a la cual va enfocada este proyecto, es decir, una aplicación hardware de tipo Lightweigth y de código abierto que permita ser implementado en distintos dispositivos que trabajen con el mismo lenguaje de programación, por tal motivo, en un principio del desarrollo de la presente implementación se decidió utilizar el dispositivo FRDM-KL25Z de la empresa Freescale, ya que la relación costo-memoria-velocidad es apropiada para aplicaciones de sentido minimalista, trabaja con lenguaje C/C++ lo que permite migrar su código a.

(34) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 22. otras plataformas de manera sencilla y además la programación de este dispositivo es de código libre y abierto. En el proceso de la implementación y debido al uso de memoria del algoritmo de intercambio de claves y a sus operaciones complejas, se realizó a migración de la implementación a la plataforma microcontrolador STM32F446RET6 de la empresa STMicroelectronics que ofrece 128Kb de RAM y la cual posee las mismas características ya mencionadas sobre los dispositivos MBED, por lo que ningún cambio adicional en el código o compilación fue requerido en la migración. Una de las principales ventajas que se tiene al momento de utilizar el compilador para Mbed, es la posibilidad de obtener diferentes estadísticas del uso de memoria y los recursos utilizados por el código, velocidad de trabajo del procesador, tiempo de compilación, entre otros, también Mbed se caracteriza por disponer de una plataforma para los desarrolladores, la cual contiene múltiples librerías, tutoriales, ejemplos y una comunidad online, por tal motivo, Mbed es una de las herramientas más eficientes para proyectos de prototipado rápido. En la tabla VIII se observa una relación más detallada de las principales características de Mbed y en particular, de los dos dispositivos utilizados en este proyecto..

(35) C a p í t u l o 2 . P l a t a f o r m a s e m b e b i d a s d e d e s a r r o l l o | 23. Tabla 8. Características de la tarjeta de desarrollo MBED FRDM-KL25Z. Características. Factor de forma y prototipado. Características de desarrollo. Características de desarrollo Compilador/EDI Mbed. Compilador/EDI Mbed. Microprocesador MBED MBED FRDM-KL25Z NUCLEO-F446RE Microcontrolador NXP Microcontrolador STM32 LPC11U24 ARM Cortex-M0 de bajo ARM®32-bit Cortex®-M4 CPU with FPU consumo de potencia 128KB Flash, 16KB RAM 512 KB Flash, 128 KB SRAM USB (Host/Device), SPI Timers General Purpose (10), Timers (2), I2C (2), UART (3), Advanced-Control (2), Timers Basic (2), SPI PWM (TPM), ADC (16 (4), I2S (2), USART (4), UART (2), USB OTG bit), DAC (1x 12bit), Full Speed and High Speed, CAN (2), SAI Touch Sensor, GPIO (66) (2), SPDIF-Rx (1), HDMI-CEC (1), Quad SPI (1), Camera Interface, GPIO (50) with external interrupt capability, 12-bit ADC (3) with 16 channels,12-bit DAC with 2 channels Alimentación voltaje 5V USB VBUS o fuente externa (3,3 V, 5 V, 7 USB o 4.5-9V 12 V) Compilador Online liviano Compilador Online liviano Kit de desarrollo de software (SDK) de alto nivel C/C++ Librerías y proyectos publicados como referencia inicial Aplicaciones en la nube (no requiere instalación local) Editor de código, almacenamiento de archivos, control de versiones, importación de librerías Posibilidad de exportar proyectos a EDI’s Offline como uVision, Code Red y Code Sourcery. Kit de desarrollo de software (SDK) de alto nivel C/C++ Librerías y proyectos publicados como referencia inicial Aplicaciones en la nube (no requiere instalación local) Editor de código, almacenamiento de archivos, control de versiones, importación de librerías Posibilidad de exportar proyectos a EDI’s Offline como uVision, Code Red y Code Sourcery. Fuente: Freescale Inc., mbed.com.

(36) Capítulo 3 Metodología, implementación y resultados 1. Diseño del HSM Inicialmente se realiza un estudio de los bloques que componen un HSM y qué condiciones debe cumplir un sistema de comunicaciones para que sea seguro haciendo uso de un canal inseguro. Si bien es necesario implementar un algoritmo de cifrado de datos, dichos algoritmos por lo general requieren que el usuario ingrese el texto que desea cifrar junto con una clave de principal, como ya se vio en apartados anteriores, para el algoritmo HIGHT dicho texto es de 64bits y clave de 128bits. Al tratarse de un algoritmo simétrico, dados dos usuarios que deseen establecer comunicación, es necesario que ambas partes conozcan la clave principal para realizar el proceso de cifrado/descifrado, es decir, deben acordar usar una clave principal, que, si es transmitida, fácilmente puede ser robada por un intruso lo cual le daría acceso inmediato a la información que se cifró. Una llave HSM está diseñada para solventar los problemas de seguridad propios de un algoritmo simétrico al implementar un algoritmo seguro de intercambio de claves, lo que garantiza que sea matemática y computacionalmente imposible conocer las claves privadas de las partes involucradas en la comunicación. En la presente implementación, se eligió el algoritmo Diffie-Hellman, ampliamente conocido y usado en aplicaciones comerciales para realizar el intercambio de las claves, como se señaló en anteriores capítulos, éste algoritmo permite que dos partes que se conocen mutuamente establecer conjuntamente una clave secreta compartida sobre un canal de comunicaciones inseguro. Ésta clave se puede utilizar para cifrar las comunicaciones posteriores utilizando un cifrado clave simétrico. En el algoritmo Diffie-Hellman, ambas partes calculan claves públicas a partir de sus claves privadas según (1.3) y (1.4), como ya se demostró en el capítulo 1, es imposible matemática y computacionalmente para un intruso deducir las claves privadas de las partes que se desean comunicar únicamente conocimiento las claves públicas compartidas por ambos por medio del canal inseguro. Una vez solucionado el problema de protección de las claves privadas de las partes involucradas, ambos generan una clave secreta K, conocida sólo por ellos y que será común entre los dos, ésta clave pueden usarla como una clave de cifrado para enviar mensajes a través del mismo canal de comunicaciones abiertas La fase de implementación del presente proyecto se desarrolló como sigue: elección del dispositivo hardware, implementación de algoritmo de cifrado HIGHT, implementación de algoritmo de descifrado HIGHT, creación de interfaz de prueba del algoritmo HIGHT, pruebas de vectores estándar con el algoritmo HIGHT, medición de métricas en los dos dispositivos MBED seleccionados del algoritmo HIGHT, 24.

(37) Capítulo 3. Metodología, implementación y r e s u l t a d o s | 25 implementación de algoritmos para el intercambio seguro de claves para el cifrado/descifrado, creación de interfaz de prueba del algoritmo de intercambio, pruebas sobre algoritmo de intercambio de claves, integración de algoritmo de intercambio y algoritmo HIGHT, creación de interfaz final del HSM, y medición de métricas en el dispositivo final.. 2. Implementación del algoritmo HIGHT Para la implementación del algoritmo en código C se realizó de manera estándar, de tal manera que su migración a otros dispositivos no requiera ejecutar mayores acciones en la programación. Es así como se decidió utilizar dos dispositivos MBED: FRDM-KL25Z y NUCLEO-F446RE, en esta etapa se tiene en cuenta toda la estructura del algoritmo, especificaciones, operaciones matemáticas y las características del dispositivo Hardware utilizado, la estructura general del algoritmo se muestra en la Figura 11 y el pseudocódigo de la implementación en la Figura 12; la implementación se desarrolló en dos procesos o bloques principales: • •. Proceso o bloque de cifrado Proceso o bloque de descifrado. Fig.11. Diagrama de Bloques del proceso de cifrado del algoritmo HIGHT.

(38) Capítulo 3. Metodología, implementación y r e s u l t a d o s | 26. Fig. 12. Pseudocódigo del proceso de cifrado del algoritmo HIGHT [11]. Bloque de cifrado El funcionamiento del cifrado inicia con el texto plano y la clave (64 y 128 bits respectivamente), el bloque o función Key Schedule se encarga de generar las Whitening Key utilizadas en la transformación inicial y final, también se encarga de generar las subclaves para las funciones ronda. En la implementación, se toman los 4 primeros y los 4 últimos bytes de la clave original y se asignan de acuerdo a la distribución que se muestra en la Figura 13, estos 8 bytes componen la Whitening Key.. Fig. 13. Diagrama de la función Whitening Key [29]. El funcionamiento del cifrado inicia con el texto plano y la clave (64 y 128 bits respectivamente), el bloque o función Key Schedule se encarga de generar las Whitening Key utilizadas en la transformación inicial y final, también se encarga de generar las subclaves para las funciones ronda. En la implementación, se toma los 4 primeros y los 4 últimos bytes de la clave original y se asignan de acuerdo a la distribución que se mostró en la Figura 13, estos 8 bytes componen la Whitening Key. Luego de realizar el proceso de Key Schedule, se realiza la transformación inicial, esta transformación utiliza las primeras 4 Whitening Key generadas anteriormente y realiza operaciones XOR y adición modular con el texto plano, estas operaciones son fácilmente implementadas en lenguaje C, simplemente aplicando XOR y suma según corresponda y aplicando una operación AND de 8 bits en “1”, es decir, 0xFF en.

Figure

Fig. 1. Ilustración gráfica del algoritmo de intercambio de claves Diffie-Hellman [5]
Fig. 2. Diagrama de bloques algoritmo Diffie-Hellman
Fig. 3. Esquema de la criptografía simétrica o de clave secreta [6]
Fig. 4. Procesos de cifrado y cifrado inverso algoritmo asimétrico [22]
+7

Referencias

Documento similar

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

Esto viene a corroborar el hecho de que perviva aún hoy en el leonés occidental este diptongo, apesardel gran empuje sufrido porparte de /ue/ que empezó a desplazar a /uo/ a

Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

El desarrollo de una conciencia cáritas es esencial para identificar cuando un momento de cuidado se convierte en transpersonal, es necesaria para identificar

El diseño es realizado usando el lenguaje Verilog (lenguaje para descripción de hardware) y luego implementado en un FPGA. Sus resultados muestran que su diseño