DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

56
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

Transcript of DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

Page 1: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Page 2: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Page 3: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Page 4: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 5: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 6: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …
Page 7: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

I

Í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

Page 8: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Page 9: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

III

Í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

Page 10: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

Í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

Page 11: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

V

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

Page 12: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 13: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

1

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.

Page 14: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 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)

Page 15: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 3

3. B elige una clave privada 𝑏 = 8, luego envía a A 𝐵 = 𝑔𝑏𝑚𝑜𝑑 𝑝 (clave pública)

𝐵 = 28𝑚𝑜𝑑 23 = 3 (1.4)

4. A calcula 𝐾 = 𝐵𝑎𝑚𝑜𝑑 𝑝

𝐾 = 36𝑚𝑜𝑑 23 = 16 (1.5)

5. B calcula 𝐾 = 𝐴𝑏𝑚𝑜𝑑 𝑝

𝐾 = 188𝑚𝑜𝑑 23 = 16 (1.6)

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.

Page 16: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 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

Page 17: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 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 )(pGF , denominado un campo primo, está

compuesto por el conjunto de enteros }1,...,1,0{ p con las siguientes operaciones aritméticas [9]:

1. Adición: Si )(, pGFba entonces rba , donde r es el residuo de la división

de ba entre p y 10 pr . Esta operación es conocida como la suma módulo p.

2. Multiplicación: )(, pGFba , entonces sba , donde s es el residuo de la

división de ba entre p. A esta operación se le conoce como multiplicación módulo p.

3. Inversión: Si a un elemento de )(pGF diferente de cero, el inverso de a módulo

p, denotado como 1a , es el entero único )(pGFc tal que 1 ca .

El campo finito 𝑮𝑭(𝟐𝒎)

Para el caso de los algoritmos de cifrado en bloque, es necesario trabajar con campos

de la forma )2( mGF debido a que los coeficientes son residuos del módulo 2 1,0 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

)2( 8GF . Cada byte B, se compone de 8 bits: ,0,1,2,3,4,5,6,7 bbbbbbbb Representado este

byte como un polinomio se tiene la ecuación 1.12:

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7 bxbxbxbxbxbxbxb (1.12)

Un posible polinomio irreducible de grado ocho se muestra en la ecuación 1.13:

1348 xxxx (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)

Page 18: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 6

Operaciones en el Campo )2( 8GF

Suma y resta en )2( 8GF

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.

24677246 )1()1( xxxxxxxxxx (1.15)

}11010100{}10000011{}01010111{ (1.16)

}4{}83{}57{ D (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.

2mod)...()( 01

2

2

1

1 axaxaxaxaxp n

n

n

n

(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]:

Page 19: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 7

137 xx (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.

Page 20: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 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]

Page 21: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 | 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

Page 22: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 23: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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].

Page 24: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Page 25: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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]

Page 26: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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]

Page 27: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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,

Page 28: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 29: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

17

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 PROPELLER Lenguaje Spin, ASM-Propeller

Soporta ANSI C/C++ No

Compilador Propeller Tool

Arquitectura Multinúcleo

MIPS 20-160

Ancho del bus de datos 32 bits

Memoria 2Kb RAM cada COG, 32Kb RAM 32Kb ROM

Velocidad Max. de reloj 20Mhz

Sistema de desarrollo Sí

Empaquetado DIP 40 Pines y QFN 44

Periféricos disponibles Keyboard-Mouse PS/2, VGA, AUDIO, UART

Disponibilidad en el país Sí

Precio Chip-Kit (COP) 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

Page 30: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 PIC16F PIC18F PIC24FJ PIC32

Lenguaje ASM, C/C++ ASM, C/C++ ASM, C/C++ ASM, C/C++

Soporta ANSI C/C++

Sí Sí Sí Sí

Compilador Mplab XC8, PICc CCS Mplab XC18, PICc CCS

Mplab XC16, PICc CCS

Mplab XC32

Arquitectura Multinúcleo Multinúcleo Multinúcleo Multinúcleo

MIPS 5 10 20 124

Ancho del bus de datos

8 Bits 8 Bits 16 Bits 32 Bits

Memoria 0.5-2Kb RAM 1-32Kb ROM

0.5-4Kb RAM 1-96Kb ROM

Hasta 32Kb RAM 256Kb ROM

8-32Kb RAM 32-512Kb ROM

Velocidad Max. de reloj

20 MHz 40 MHz 48 MHz 80 MHz

Sistema de desarrollo

No Sí Sí Sí

Empaquetado DIP/SOIC/QFN DIP/SOIC/QFN DIP/SOIC/QFN TQFP/QFN/XBGA

Periféricos disponibles

UART, SPI,I2,ADC10BIT,PWM

PIC16+CAN, USB

PIC24+CAN, USN

PIC32+CAN, USB

Disponibilidad en el país

Sí Sí Sí No

Precio Chip-Kit (COP)

5000-10000 13000-35000 13000-40000 5-10 USD

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.

Page 31: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 AVR Tiny AVR Mega AVR32 Lenguaje ASM, C/C++ ASM, C/C++ ASM, C/C++

Soporta ANSI C/C++ Sí Sí Sí

Compilador AVR Studio AVR Studio AVR-GOC, AVR_OS, AVR Studio

Arquitectura RISC RISC RISC

MIPS 20 20 33

Ancho del bus de datos

8 Bits 8 Bits 32 Bits

Memoria 0.5-2Kb RAM 2-8Kb ROM

1-16Kb RAM 16-128Kb ROM

Hasta 32Kb RAM 256Kb ROM

Velocidad Max. de reloj

20 MHz 20 MHz 66 MHz

Sistema de desarrollo No No Sí

Empaquetado DIP/SOIC/QFN DIP/SOIC/QFN LQFP

Periféricos disponibles

UART, SPI, I2C, ADC10bits

Igual Tiny + PWM, Qtouch, RTC

Qtouch, UART, SPI, ADC12bits

Disponibilidad en el país

Sí Sí Sí

Precio Chip-Kit (COP) 3000-6000 5000-25000 15000-30000 Fuente: Atmel Inc., Sigma Electrónica

Tabla 5. Características Chip’s de Texas Instrument

Microprocesador MSP 430 TI STELLARIS Lenguaje ASM, C/C++ ASM, C/C++

Soporta ANSI C/C++ Sí Sí

Compilador IAR KickStart, Code Composer IAR KickStart, Code Composer

Arquitectura RISC ARM Cortex M4

MIPS 16 40

Ancho del bus de datos

16 Bits 32 Bits

Memoria 0.5 RAM 8-16Kb ROM Hasta 32Kb RAM 256Kb ROM

Velocidad Max. de reloj

16 MHz 32 MHz

Sistema de desarrollo Sí Sí

Empaquetado DIP/SOIC LQFP

Periféricos disponibles

UART, SPI, I2C, ADC10bits, IrDa, Ultra low power

Igual MSP340 + 8 UART, 4 I2C, 4SPI, USB

Disponibilidad en el país

Sí Sí

Precio Chip-Kit (COP) 2500-51800 40000-90000 Fuente: Texas Inc., Electronilab.co

Page 32: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 PSOC1 PSOC3 PSOC5 Lenguaje ASM, C ASM, C/C++ ASM, C/C++

Soporta ANSI C/C++ Sí Sí Sí

Compilador Psoc Creator, Psoc Designer Psoc Creator, Psoc Designer

Psoc Creator, Psoc Designer

Arquitectura SISC Cypress M8C Core ARM Cortex M0 ARM Cortex M3

MIPS 6 48 80

Ancho del bus de datos

8 Bits 32 Bits 32 Bits

Memoria 0.5-2Kb RAM 1-16Kb ROM 16Kb RAM 128Kb ROM

32Kb RAM 512Kb ROM

Velocidad Max. de reloj

24 MHz 48 MHz 80 MHz

Sistema de desarrollo

No Sí Sí

Empaquetado DIP/SOIC/TQfP SOIC/TQFP TQFP

Periféricos disponibles

6 analog blocks, 4 digital blocks, Cap Sense, MOSFET

Igual PSOC1 + CAN, USB

Igual PSOC 4 + LCD Drive, DMA

Disponibilidad en el país

Sí Sí Sí

Precio Chip-Kit (COP)

5000-25000 30000-7000 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

Page 33: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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 FRDM.K20D50 Lenguaje ASM, C/C++ ASM, C/C++

Soporta ANSI C/C++

Sí Sí

Compilador MBED, Code Warrior, IAR, uVision MBED, Code Warrior, IAR, uVision

Arquitectura ARM Cortex M0 ARM Cortex M4

MIPS 48 50

Ancho del bus de datos

32 bits 32 Bits

Memoria 4-16Kb RAM 16-128Kb ROM 22Kb RAM 128Kb ROM SDA

Velocidad Max. de reloj

48 MHz 50 MHz

Sistema de desarrollo

Sí Sí

Empaquetado LQFP LQFP

Periféricos disponibles

UART, SPI, I2C, ADC16bits, 24PWM, Qtouch, Acelerometro, USB, USB serie

Igual KL25Z + Sensor de Temperatura, Sensor de luz

Disponibilidad en el país

Sí Sí

Precio Chip-Kit (COP)

5000-60000 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

Page 34: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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.

Page 35: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

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

Microprocesador MBED MBED FRDM-KL25Z NUCLEO-F446RE

Características

Microcontrolador NXP LPC11U24

Microcontrolador STM32

ARM Cortex-M0 de bajo consumo de potencia

ARM®32-bit Cortex®-M4 CPU with FPU

128KB Flash, 16KB RAM 512 KB Flash, 128 KB SRAM

Factor de forma y prototipado

USB (Host/Device), SPI (2), I2C (2), UART (3), PWM (TPM), ADC (16 bit), DAC (1x 12bit), Touch Sensor, GPIO (66)

Timers General Purpose (10), Timers Advanced-Control (2), Timers Basic (2), SPI (4), I2S (2), USART (4), UART (2), USB OTG Full Speed and High Speed, CAN (2), SAI (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 o 4.5-9V

USB VBUS o fuente externa (3,3 V, 5 V, 7 - 12 V)

Características de desarrollo

Compilador Online liviano Compilador Online liviano

Características de desarrollo

Compilador/EDI Mbed

Kit de desarrollo de software (SDK) de alto nivel C/C++

Kit de desarrollo de software (SDK) de alto nivel C/C++

Librerías y proyectos publicados como referencia inicial

Librerías y proyectos publicados como referencia inicial

Aplicaciones en la nube (no requiere instalación local)

Aplicaciones en la nube (no requiere instalación local)

Compilador/EDI Mbed

Editor de código, almacenamiento de archivos, control de versiones, importación de librerías

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

Posibilidad de exportar proyectos a EDI’s Offline como uVision, Code Red y Code Sourcery

Fuente: Freescale Inc., mbed.com

Page 36: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

24

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,

Page 37: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó 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

Page 38: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó 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

Page 39: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 27

hexadecimal para garantizar que se trabaje en el campo finito GF( ), al finalizar está función se genera un nuevo texto de 64 bits para realizar las funciones 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 F0 y F1 representadas en la figura 9, estas funciones se aplican a los bytes 6 y 2 en el caso de F0 y los bytes 0 y 4 en el caso de F1 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.

El último paso del proceso de cifrado es la transformación final representado en la Figura 11, esta función utiliza las últimas Whitening Key, y el texto de 8 bytes generado por las funciones de ronda, al igual que la transformación inicial, realiza operaciones XOR y adicción modular fácilmente implementadas en lenguaje C, el resultado de este proceso es un texto de 64 bits (8 bytes) denominado texto cifrado.

Bloque de descifrado

A continuación, se describe el paso a paso utilizado en el proceso de descifrado

1. La entrada del bloque de texto es el texto cifrado y utiliza la misma clave original, por lo cual todo el proceso de Key Schedule se realiza exactamente igual que en el proceso de cifrado.

2. Se aplican la transformación final primero y por último la transformación inicial, luego de las 32 rondas se aplica la inicial, es decir, se invierte el orden de aplicación de las funciones.

3. En el caso de las funciones de ronda, las dos funciones adicionales se aplican

a los bytes 6 y 2 en el caso de 𝐹1 y los bytes 0 y 4 en el caso de 𝐹0, es decir, en sentido contrario, la operación XOR se conserva igual, aunque la adición modular se cambia por resta modular, en lenguaje C solo es cambiar el signo + por -, a excepción de las operaciones que concatenan las funciones adicionales con las subclaves, en este caso conserva el signo aditivo.

Interfaz gráfica: Algoritmo HIGHT

Para la validación de resultados del algoritmo HIGHT, se desarrolló un entorno gráfico por medio de la herramienta matemática Matlab®, este entorno hace parte de una interfaz entre el dispositivo hardware y el PC a través de comunicación serial, a través de ésta el usuario ingresa el texto plano y la clave secreta, el programa creado en Matlab envía los datos al dispositivo MBED para realizar el proceso de cifrado y este devuelve el texto cifrado a la interfaz, el procedimiento para el proceso de descifrado funciona de manera análoga, la interfaz se muestra en la Figura 14.

Page 40: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 28

Fig. 14. Interfaz pruebas: Algoritmo HIGHT

Interfaz gráfica: Casos de uso cifrar texto algoritmo HIGHT

En la Figura 15 se evidencia el procedimiento para cifrar un texto plano, se procede a introducir el texto y la clave respectivamente (en valor hexadecimal) y se selecciona la opción del botón “Cifrar”, también se muestran las notificaciones de error ya sea por inconsistencia en la longitud de la clave o texto plano que debe ser de 128 y 64 bits respectivamente y en la Figura 16 se muestran mensajes por ingreso erróneo de los datos, es decir, formato distinto a Hexadecimal.

Fig.15. Interfaz gráfica y notificaciones para ingreso de los datos de entrada

Page 41: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 29

Fig. 16. Interfaz gráfica y notificaciones de error en el ingreso de los datos

Interfaz gráfica: Casos de uso descifrar texto algoritmo HIGHT

Para el caso del descifrado, en el campo “Introduzca texto a Cifrar/descifrar” se debe ingresar el texto cifrado, la misma clave que se utilizó para cifrar y por último seleccionar la opción descifrar y se obtendrá en el campo de resultado el texto plano original, para este proceso las notificaciones de formato de los datos y longitud de los mismos funcionan de igual manera que el proceso de cifrado descrito con anterioridad.

Prueba de funcionalidad algoritmo HIGHT

Para el caso de prueba de funcionalidad del algoritmo, se utilizó como ejemplo los vectores estándar establecidos por los creadores del algoritmo [11] mostrados en la tabla IX, en total son 4 vectores de prueba para comprobar la funcionalidad del algoritmo implementado, estos vectores contienen para cada uno un texto plano de 64 bits y una clave de 128 bits, a continuación, se evidencia en las Figuras 17, 18, 19 y 20 el resultado de cifrar los vectores propuestos con el cifrado implementado en este proyecto por medio de la interfaz creada.

Tabla 9. Vectores de prueba del algoritmo HIGHT [11]

Clave Texto plano Texto cifrado

1 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff 00 00 00 00 00 00 00 00 00 f4 18 ae d9 4f 03 f2

2 ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00 00 11 22 33 44 55 66 77 23 ce 9f 72 e5 43 e6 d8

3 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 01 23 45 67 89 ab cd ef 7a 6f b2 a2 8d 23 f4 66

4 28 db c3 bc 49 ff d8 7d cf a5 09 b1 1d 42 2b e7 b4 1e 6b e2 eb a8 4a 14 cc 04 7a 75 20 9c 1f c6

Page 42: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 30

Fig. 17. Pruebas implementación HIGHT: Cifrado vector de prueba 1 [11]

Fig. 18. Pruebas implementación HIGHT: Cifrado vector de prueba 2 [11]

Fig. 19. Pruebas implementación HIGHT: Cifrado vector de prueba 3 [11]

Page 43: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 31

Fig. 20. Pruebas implementación HIGHT: Cifrado vector de prueba 4 [11]

Recursos y rendimiento

En la Tabla X, se evidencia la cantidad de recursos utilizados en las dos plataformas utilizadas en el desarrollo del presente estudio:

Tabla 10. Recursos de memoria utilizados por la presente investigación

Plataforma RAM (Kbytes)

disponibes RAM (Kbytes)

Utilizados FLASH (Kbytes)

Disponibles FLASH (Kbytes)

utilizados FRDM-KL25Z 16 2.2 (13,7%) 128 27.3 (21%)

NUCLEO-F446RE 128 2.2 (1,7%) 525 27.3 (5%)

El throughput es un factor muy importante para determinar el rendimiento en cuanto a tiempo de un diseño. Se refiere a la cantidad de bits que el cifrador puede procesar, es decir, permite registrar la cantidad de bits por segundo al cual trabaja éste sistema digital y está dado por la ecuación (3.1).

𝑇ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡 = 𝑛ú𝑚𝑒𝑟𝑜𝑑𝑒𝑏𝑖𝑡𝑠 ∗ 𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎

El parámetro frecuencia está dado por el inverso de la cantidad de tiempo que el cifrador usa para cifrar/descifrar un bloque de texto plano de 64bits; para la medición de dicho parámetro se hizo uso de timers propios de las plataformas Mbed y su simulación con el ya mencionado software libre Tera term. En las Figura 21 y 22 se evidencia el resultado de la medición de tiempo de cifrado y tiempo de descifrado respectivamente en la plataforma FRDM-KL25Z y en las figuras 23 y 24 se evidencia el resultado de la medición de tiempo de cifrado y tiempo de descifrado respectivamente en la plataforma Nucleo-F446RE; ambas mediciones se realizaron utilizando el primer vector de prueba dado por la Tabla IX.

Page 44: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 32

Fig.21 Medición tiempo de cifrado: Mbed FRDM-KL25Z

Fig.22. Medición tiempo de descifrado: Mbed FRDM-KL25Z

Page 45: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 33

Fig. 23. Medición tiempo de cifrado: Mbed NucleoF446RE

Fig. 24. Medición tiempo de descifrado: Mbed NucleoF446RE

Page 46: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 34

3. Implementación del algoritmo de intercambio de

claves

Como ya se ha hecho referencia en el presente documento, el algoritmo de intercambio

seguro de claves utilizado es el modelo Diffie-Hellman, el cual especifica un método

de intercambio de clave pública que proporciona una manera para que dos puntos de

comunicación establezcan una clave secreta compartida que solo ellos conozcan,

aunque se comuniquen a través de un canal inseguro. Como todos los algoritmos

criptográficos, el intercambio de claves se basa en una secuencia matemática de

pasos [30]. A continuación, se detalla el pseudocódigo utilizado para la programación

del algoritmo en la plataforma MBED Nucleo-F446RE haciendo uso también el

Pequeño teorema de Fermat.

generate_PublicKeyA ()

generate_twos_complement (prime number)

generate_g^amod p ()

for r=0 to 63 do

for j=0 to 31 do

addComplement_g^a ()

end for

end for

generate_PublicKeyB ()

generate two's complement (prime number)

generate g^b mod p ()

for r=0 to 63 do

for j=0 to 31 do

addComplement_g^b ()

end for

end for

generate_B^a ()

for r=0 to 2399 do

decrease(a)

aVerifbit(B)

add_B_B ()

Fermats little theorem ()

end for

generate_A^b ()

for r=0 to 2399 do

decrease(b)

aVerifbit(A)

add_A_A ()

Fermats little theorem ()

end for

Page 47: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 35

generate_SecretKey ()

generate two's complement (prime number)

for r=0 to 2399 do

for j=0 to 31 do

addComplement_A^b ()

generat_ A^bmodp ()

end for

end for

generate_SecretKey ()

generate two's complement (prime number)

for r=0 to 2399 do

for j=0 to 31 do

addComplement_B^a ()

generat_ B^amodp ()

end for

end for

Pruebas de funcionalidad algoritmo Diffie-Hellman

El código de implementación el algoritmo de intercambio de claves se realizó de manera estándar garantizando que la migración a cualquier otra plataforma embebida en C sea posible, la programación se realizó en bloques y por funciones garantizando la operatividad de cada uno.

El programa está diseñado para que los usuarios ingresen únicamente sus claves privadas; a continuación, se describe el método de selección de los demás parámetros de entrada del algoritmo.

1. Selección de número generador: Como ya se mencionó en el capítulo 1, el algoritmo de intercambio de claves establece que el número llamado generador debe tener un valor de 2 o 5 en número entero. En la presente implementación se decidió tomar como referencia el número 2 debido a que el cálculo de potencias con esta base se facilita en programación C, limitándolo a un desplazamiento de bits a la izquierda.

2. Selección de número primo: El algoritmo no restringe el uso de números primos, bien pueden ser generados de forma aleatoria o pueden ser tomado de un listado estándar de números primos establecidos para el algoritmo llamados “safe prime”. Debido a que generar números primos es una tarea que requiere mucho tiempo de procesamiento, gran cantidad de uso de memoria y a la aplicación de la presente implementación, se decidió tomar un número primo estándar.

Una vez realizada la implementación, se realizaron pruebas en el software libre Tera term, que permite la simulación de terminales. En la Figura 25 se muestra un ejemplo de prueba de funcionalidad del algoritmo con números enteros para fácil entendimiento y comprensión del lector.

Page 48: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 36

Fig.25. Pruebas implementación Diffie-Hellman: números enteros

Implementación del HSM

Interfaz gráfica HSM

Para la interfaz final del desarrollo, se creó un entorno gráfico en la herramienta

Matlab®. Esta es una interfaz entre el usuario y la implementación, el entorno gráfico

recibe las claves privadas de los usuarios además de una instrucción que indica la

operación a realizar (cifrado o descifrado), envía los datos hacia la plataforma de

implementación mediante comunicación serial, éste procesa la información y envía los

resultados que son publicados en el mismo entorno gráfico, este proceso se muestra

en la Figura 26.

Recursos utilizados

La cantidad de recursos utilizados se determina a partir de la cantidad de RAM y

memoria Flash utilizados durante el proceso de generación de claves y

cifrado/descifrado en el dispositivo hardware, en la Tabla XI se muestran las métricas

finales y el uso de los recursos en relación con la capacidad total del dispositivo Mbed.

Tabla 11 Recursos utilizados de la plataforma Mbed en la implementación del HSM

Plataforma RAM (Kbytes)

disponibes RAM (Kbytes)

utilizados FLASH (Kbytes)

Disponibles FLASH (Kbytes)

utilizados

NUCLEO-F446RE 128 80.5 (63 %) 512 32 (6 %)

Page 49: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 37

Fig. 26. Diagrama de bloques de la Interfaz gráfica desarrollada en Matlab

4. Diagrama de bloques HSM

El diagrama de bloques que describe la implementación final del presente desarrollo

se muestra en la Figura 27.

5. Comparación de resultados

Como producto de la presente investigación, se logró la implementación del algoritmo de cifrado/descifrado HIGHT en dos plataformas MBED; para evaluar la misma implementación, se realiza comparación de resultados con una de las pocas implementaciones en microcontroladores de 8-bits como lo es [29] realizada por los mismos autores de la presente investigación.

Comparación en cifrado

En la Tabla XI se muestran los resultados de las implementaciones del presente desarrollo y la implementación de referencia para el proceso de cifrado. Debido a que el algoritmo HIGHT está optimizado para ser implementado en dispositivos embebidos de 8bits, para las implementaciones en las plataformas Mbed de 32 bits fue necesario realizar algunas modificaciones lo que derivó en un uso mayor de recursos de memoria.

Page 50: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 38

Fig. 27 Diagrama de bloques HSM

En cuanto a tiempo de cifrado y throughput se evidencia una clara superioridad de las implementaciones desarrolladas en la presente investigación: logrando una mejora en el rendimiento (Kbps) de 47 veces comparando la implementación de referencia (8-bits) con la implementación en Mbed FRDM-KL25Z (32-bits) y una mejora en el rendimiento de 274 veces con la implementación usando Mbed Nucleo-F446RE.

Page 51: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 3 . M e t o d o l o g í a , i m p l e m e n t a c i ó n y r e s u l t a d o s | 39

Comparación en descifrado

En la Tabla XII se muestran los resultados de las implementaciones del presente desarrollo y la implementación de referencia para el proceso de descifrado. Al igual que el proceso de cifrado, fue necesario realizar algunas modificaciones lo que derivó en un uso mayor de recursos de memoria.

En cuanto a tiempo de descifrado y throughput se evidencia una clara superioridad de las implementaciones desarrolladas en la presente investigación: logrando una mejora en el rendimiento (Kbps) de 44 veces comparando la implementación de referencia (8-bits) con la implementación en Mbed FRDM-KL25Z (32-bits) y una mejora en el rendimiento de 234 veces con la implementación usando Mbed Nucleo-F446RE.

Tabla 12. Comparación recursos y rendimiento del algoritmo HIGHT: Cifrado y descifrado

CIFRADO

Plataforma RAM (bytes) FLASH (bytes) Tiempo de cifrado (uS)

Throughput cifrado (kbps)

PIC18F2550 [29] 298 1374 9840 6.504

FRDM-KL25Z 2200 27300 226 283.185

NUCLEO-F446RE 2200 27300 39 1641.025

DESCIFRADO

Plataforma RAM (bytes) FLASH (bytes) Tiempo de descifrado

(uS)

Throughput descifrado

(bps)

PIC18F2550 [29] 298 1374 9840 6504

FRDM-KL25Z 2300 27500 224 285.714

NUCLEO-F446RE 2300 27500 42 1523.81

Page 52: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

40

Capítulo 4

Conclusiones y trabajo futuro

1. Conclusiones

El algoritmo HIGHT, propuesto por la Agencia de Seguridad e Internet de Corea es un algoritmo de 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. Al ser HIGHT un algoritmo tipo Lightweigth, lo hace viable para aplicaciones de bajo costo y exigencias de bajo consumo de energía. Ésta investigación se basó en crear un módulo completo de seguridad hardware que aprovecha las propiedades que ofrece el algoritmo HIGHT en cuando a su práctica implementación, pero garantizando la seguridad del mensaje cifrado enviado por canales de comunicación inseguros con la implementación del algoritmo de intercambio de claves Difiife-Hellman, garantizando que sea matemática y computacionalmente imposible conocer las claves privadas de las partes involucradas en la comunicación.

En anteriores investigaciones se implementó el algoritmo HIGHT en un microcontrolador de 8-bits logrando reducción en la cantidad de recursos de memoria utilizados con respecto a otras implementaciones documentadas. Con el presente desarrollo, se logró establecer comparaciones entre las implementaciones en microcontrolador y plataformas Mbed, observando ventajas de desarrollar el algoritmo HIGHT en dispositivos 32 bits y se logró mejoras de hasta 274 veces para el proceso de cifrado y 234 veces en proceso de descifrado en cuando a la cantidad de bits que el cifrador puede procesar (throughput)

El diseño de módulos de seguridad hardware, comúnmente es realizado por matemáticos criptográficos los cuales desarrollan las funciones matemáticas claves para cifrar un mensaje, dichos desarrollos muchas veces no son aptos para su implementación en dispositivos embebidos debido a la limitación de recursos computacionales; por otro lado, las implementaciones desarrolladas por informáticos hacen uso de herramientas externas para generación de números aleatorios, generación de claves públicas para el intercambio de información entre otros procesos, lo que resulta en la mayoría de casos en un uso excesivo de los recursos de memoria o tiempo de ejecución. La presente implementación del HSM requirió un extensivo estudio sobre cifradores de bloques, operaciones a nivel de bit, características de claves, campos finitos, redes de sustitución-permutación, logaritmos discretos, exponenciación modular entre otras funciones necesarias para su implementación; en el presente desarrollo todas las operaciones y funciones fueron diseñadas y orientadas para su implementación informática tanto en hardware como en software, garantizando

Page 53: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

C a p í t u l o 4 . C o n c l u s i o n e s y t r a b a j o f u t u r o | 41

así, la viabilidad de la implementación y el uso eficiente de los recursos limitados como memoria y tiempo de ejecución.

Cabe resaltar que en el proceso de desarrollo no fue posible encontrar implementaciones o investigaciones reportadas sobre el uso de algoritmos tipo Lightweigth en módulos de seguridad hardware, lo que hace que este trabajo sea único y marque un precedente para futuras implementaciones. A partir de un conocimiento a fondo de los cifradores en bloques, protocolos de intercambio de claves, arquitectura de módulos de seguridad hardware se logró una aplicación hardware flexible, y debido a la programación estandarizada, compatible con diversas plataformas. Al ser desarrollada la aplicación en lenguaje C, permite la generación de librerías estándar para futuras implementaciones y adaptaciones con diferentes algoritmos criptográficos tipo Lightweigth.

2. Trabajo futuro

• Realizar la implementación del módulo de seguridad hardware aprovechando las características del desarrollo en lenguaje C en diferentes plataformas embebidas y realizar comparaciones.

• Implementar el presente módulo de seguridad haciendo uso de otros algoritmos tipo Lightweigth como el algoritmo Present

• Publicación de dos artículos respecto al trabajo de esta investigación.

Page 54: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

42

Bibliografía

[1] J. R. Aguirre, “Una breve introducción a la criptografía.”

[2] J. R. Aguirre, “Seguridad informática y criptografía,” vol. Capítulo 3.

[3] W. Stallings, Fundamentos de seguridad en redes aplicaciones y estándares.

2004.

[4] F. Information, “Announcing the ADVANCED ENCRYPTION STANDARD ( AES

),” 2001.

[5] J. R. Aguirre, Seguridad informática y criptografía versión 4.1. 2006.

[6] A. Angel, “Criptografía Para Principiantes José de Jesús Angel Angel,” pp. 1–

59.

[7] E. Universidad Politécnica de Madrid, “Criptosistemas clásicos.” 2005.

[8] A. Y. Poschmann, “Cryptographic Engineering for a Pervasive World,” no.

February, 2009.

[9] P. Peris-lopez, J. C. Hernandez-castro, J. M. Estevez-tapiador, and A.

Ribagorda, “RFID Systems : A Survey on Security Threats and Proposed

Solutions,” pp. 159–170, 2006.

[10] Y. Lim, J. Lee, Y. You, and K. Cho, “Implementation of HIGHT cryptic circuit for

RFID tag,” vol. 6, no. 4, pp. 180–186, 2009.

[11] K. I. & S. Agency, “HIGHT Algorithm Specification,” 2009.

[12] R. Benadjila, J. Guo, V. Lomné, and T. Peyrin, “Implementing Lightweight Block

Ciphers on x86 Architectures,” vol. 2012, 2014.

[13] S. Khurana, S. Kolay, C. Rebeiro, and D. Mukhopadhyay, “Lightweight Cipher

Implementations on Embedded Processors,” pp. 82–87, 2013.

[14] P. Shor, “Polynomial-Time Algorithms for Prime Factorization and Discrete

Page 55: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

B i b l i o g r a f í a | 43

Logarithms on a Quantum Computer,” SIAM J. Comput., vol. 26, no. 5, pp.

1484–1509, 1997.

[15] M. an I. Company, “Needle in a Datastack Report,” 2014.

[16] “Delitos informáticos / El Espectador | ELESPECTADOR.COM.” .

[17] J. R. Aguirre, “Cifrado Simétrico en Bloque.”

[18] C. D. E. Cannière, A. Biryukov, and B. Preneel, “An Introduction to Block Cipher

Cryptanalysis,” vol. 94, no. 2, 2006.

[19] O. G. Casas, Implementación de los cifradores de bloque Rijndael, Serpent,

MARS, Twofish y RC6 para su uso en sistemas embebidos. Universidad de

San Buenaventura, Cali, 2010.

[20] D. Hong et al., “HIGHT : A New Block Cipher Suitable for Low-Resource

Device.”

[21] M. Feldhofer, S. Dominikus, and J. Wolkerstorfer, “Strong Authentication for

RFID Systems Using the AES Algorithm,” pp. 357–370, 2004.

[22] A. Rafael, “A low-memory implementation of 128 aes for 32 bits architectures,”

in Congreso Argentino de Sistemas Embebidos CASE, 2012, pp. 60–63.

[23] E. Encryption, D. Module, F. Implementation, A. E. S. Rijndael, V. Well, and S.

E. Applications, “Communication à un colloque ( Conference Paper ) ‘ Compact

and Efficient Encryption / Decryption Module for FPGA Implementation of the

AES Rijndael Very Well Suited for Small Embedded Applications ’ Référence

bibliographique Compact and Efficient Encrypti,” vol. 2004, no. April 2004.

[24] P. Yalla, J. Kaps, and A. Hight, “Lightweight Cryptography for FPGAs,” pp. 3–8,

2009.

[25] E. Jacinto and Fedry Martínez, “Análisis de desempeño del algoritmo

criptográfico PRESENT usando plataformas embebidas hardware y Software,”

2014.

Page 56: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE SEGURIDAD …

B i b l i o g r a f í a | 44

[26] “INTERNATIONAL STANDARD ISO / IEC Information technology — Security

techniques — Encryption algorithms — Part 3: block ciphers,” vol. 2010, 2010.

[27] N. Iso, F. D. Angelo, and L. Laviosa, “Norma ISO 9000-3.”

[28] I. Benjam, “Norma ISO / IEC 9126 :,” 2010.

[29] J. Aguilar Quiñones and Buitrago Sierra Stephanie, “IMPLEMENTATION OF

HIGHT ENCRYPTION ALGORITHM ON MICROCONTROLLER,” Visión

Eletrónica, 2014.

[30] S. Ahmadi, Z. Ahmadian, J. Mohajeri, and M. R. Aref, “Low Data Complexity

Biclique Cryptanalysis of Block Ciphers with Application to Piccolo and.”

[31] J. H. Paik, S. C. Seo, Y. Kim, H. J. Lee, H.-C. Jung, and D. H. Lee, “An Efficient

Implementation of Block Cipher in Android Platform,” 2011 Fifth FTRA Int. Conf.

Multimed. Ubiquitous Eng., pp. 173–176, Jun. 2011.

[32] W. Liu, “Cryptography Overhead Evaluation and Analysis for Wireless Sensor

Networks,” 2009.

[33] N. S. Publication, “Recommendation for Key Management – Part 1 : General,”

2007.

[34] E. A. Delgadillo, “Diseño de un criptosistema para redes de sensores

inalámbricos WSN basado en MPSOC,” 2008.