criptografía de curvas - uniandes

92
DISEÑO DE UN CRIPTOSISTEMA PARA REDES DE SENSORES INALAMBRICOS WSN BASADO EN MPSOC EDUARDO ALBERTO DELGADILLO GOMEZ Proyecto de grado Dr. Néstor Peña Traslaviña Asesor del proyecto Msc Mauricio Guerrero Hurtado Coasesor del proyecto UINIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA DEPARTAMENTO DE INGENIERIA ELECTRICA Y ELECTRONICA BOGOTA D.C.,COLOMBIA 2008

Upload: others

Post on 14-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Criptografía de Curvas - Uniandes

DISEÑO DE UN CRIPTOSISTEMA PARA REDES DE SENSORES INALAMBRICOS WSN BASADO EN MPSOC

EDUARDO ALBERTO DELGADILLO GOMEZ

Proyecto de grado Dr. Néstor Peña Traslaviña

Asesor del proyecto Msc Mauricio Guerrero Hurtado

Coasesor del proyecto

UINIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA

DEPARTAMENTO DE INGENIERIA ELECTRICA Y ELECTRONICA BOGOTA D.C.,COLOMBIA

2008

Page 2: Criptografía de Curvas - Uniandes

A Dios por haberme dado la posibilidad de trabajar en este

proyecto, a mis padres, Esposa e hijos quienes son la luz de mi vida.

Page 3: Criptografía de Curvas - Uniandes

 AGRADECIMIENTOS

El autor desea expresar sus agradecimientos: A Dios, fuente de suprema sabiduría Al Dr. Néstor Peña Traslaviña ,director del grupo de redes de sensores inalámbricos WSN, por su apoyo durante el desarrollo del proyecto. Al Ingeniero Mauricio Guerrero Hurtado, por su apoyo y asesoría en todas las fases del proyecto. Al ingeniero Javier castaño, por sus valiosos aportes, durante la ejecución del proyecto. Al ingeniero Fabián Velásquez, por sus valiosos aportes durante la ejecución del proyecto. Al Dr. Julio López, profesor de UNICAMP por sus valiosos aportes. Al Ingeniero Germán Castillo, por sus valiosos aportes en todas las fases del proyecto.

Page 4: Criptografía de Curvas - Uniandes

CONTENIDO

CONTENIDO .................................................................................................................................................. 4 

INTRODUCCION........................................................................................................................................... 5 

1  DEFINICION DEL PROBLEMA......................................................................................................... 7 

1.1. SERVICIOS BÁSICOS EN CRIPTOGRAFÍA............................................................................................ 8 1.2. CRIPTOGRAFÍA DE LLAVE PÚBLICA.................................................................................................. 9 1.3. PROBLEMA DEL LOGARITMO DISCRETO......................................................................................... 10

1.3.1. Grupos ...................................................................................................................................... 10 1.3.2. Logaritmo Discreto Generalizado............................................................................................ 11 1.3.3. Parámetros de Dominio en Curvas Elípticas ........................................................................... 11 1.3.4. Generación de Llaves ............................................................................................................... 11

2  FUNDAMENTOS MATEMÁTICOS ................................................................................................. 12 

2.1 CAMPOS FINITOS ................................................................................................................................ 12 2.1.1 Aritmética Modular .................................................................................................................. 13 2.1.2 Campos Finitos Primos ............................................................................................................ 13 2.1.3 Campos Finitos Binarios .......................................................................................................... 13

2.2 CURVAS ELÍPTICAS............................................................................................................................. 15 2.2.1 Curvas Elípticas sobre campos finitos...................................................................................... 15

2.3 LEY DE GRUPO.................................................................................................................................... 16 2.4 REPRESENTACIÓN DE PUNTOS ............................................................................................................ 18

2.4.1 Coordenadas Proyectivas......................................................................................................... 18 2.4.2 Coordenadas de López-Dahab ................................................................................................. 19

2.5 MULTIPLICACIÓN ESCALAR ELÍPTICA................................................................................................. 20 2.6 REPRESENTACIÓN DEL FACTOR ESCALAR........................................................................................... 21

2.6.1 Representación Binaria ............................................................................................................ 21 3  DISEÑO ESL......................................................................................................................................... 21 

3.1 INTRODUCCIÓN ................................................................................................................................... 21 3.2 DISEÑO DE SISTEMAS .......................................................................................................................... 22 3.3 DISEÑO ESL (ELECTRONIC SYSTEM LEVEL) ...................................................................................... 23 3.4 SYSTEMC............................................................................................................................................ 24

3.4.1 Proceso de Diseño .................................................................................................................... 25 3.5 SOC’S................................................................................................................................................. 27 3.6 MPSOC’S ........................................................................................................................................... 29

3.6.1 Tipos de MPSOC’s ................................................................................................................... 30 3.6.2 Sistemas multiprocesador......................................................................................................... 30 3.6.3 Arquitecturas MPSoC............................................................................................................... 30 3.6.4 Software.................................................................................................................................... 32 3.6.5 Consumo................................................................................................................................... 33

4  ARQUITECTURA MPSOC SELECCIONADA .............................................................................. 33 

4.1 MPSOC PROPELLER........................................................................................................................... 33 4.1.1 Proceso de encendido o reset ................................................................................................... 34 4.1.2 Proceso de Ejecución ............................................................................................................... 35 4.1.3 Proceso de Apagado................................................................................................................. 35

4.2 ARQUITECTURA INTERNA ................................................................................................................... 35 4.2.1 Descripción de los Procesadores ............................................................................................. 36 4.2.2 Procesador Maestro ................................................................................................................. 38 4.2.3 Memoria ................................................................................................................................... 39 4.2.4 Lenguaje SPIN.......................................................................................................................... 40 4.2.5 Procesamiento Paralelo ........................................................................................................... 41

Page 5: Criptografía de Curvas - Uniandes

5  DISEÑO DEL CRIPTOSISTEMA...................................................................................................... 43 

5.1 FLUJO DE DISEÑO .............................................................................................................................. 43 5.1.1 Requerimientos ......................................................................................................................... 43 5.1.2 Especificación Funcional ......................................................................................................... 44 5.1.3 Desarrollo de la Especificación Funcional .............................................................................. 44

5.2 DESARROLLO ARITMÉTICA DE CAMPOS FINITOS ................................................................................ 46

5.2.1 Suma en )2( 163GF ................................................................................................................ 47

5.2.2 Multiplicador en )2( 163GF .................................................................................................. 47 5.2.3 Inversión ................................................................................................................................... 51

5.2.4 Generador de Pseudoaleatorios en )2( 163GF ..................................................................... 54 5.3 ARITMÉTICA DE CURVAS ELÍPTICA..................................................................................................... 55

5.3.1 Suma de puntos (Madd) ............................................................................................................ 58 5.3.2 Doblado de un punto (Mdouble)............................................................................................... 59

5.4 DISEÑO DEL SCHEDULING Y RTOS ..................................................................................................... 60 5.10 COMUNICACIÓN DE DATOS Y CONTROL.............................................................................................. 76

6  RESULTADOS ..................................................................................................................................... 77 

6.1 TIEMPO Y ESPACIO ...................................................................................................................... 77 7 CONCLUSIONES Y TRABAJO FUTURO ..................................................................................... 81 

REFERENCIAS ............................................................................................................................................ 83 

ANEXOS ........................................................................................................................................................ 88 

Page 6: Criptografía de Curvas - Uniandes

Índice de Figuras

FIGURA 1.1: MODELO BÁSICO DE COMUNICACIÓN …………………………………………………………………………………… ……………….5

FIGURA 1.2: MODELO BÁSICO DE LA LLAVE PÚBLICA ............................................................................................5 FIGURA 2.2: CURVAS ELÍPTICAS DEFINIDAS SOBRE ...........................................................................................15 FIGURA 2.3: ADICIÓN Y DOBLADO DE PUNTOS GEOMÉTRICO. ...............................................................................17 FIGURA 3.2. FLUJO DE DISEÑO DE UN SISTEMA....................................................................................................23 FIGURA 3.3. DISEÑO ELECTRÓNICO A NIVEL DE SISTEMA......................................................................................24 FIGURA 3.4.1. CDFG EJEMPLO .......................................................................................................................26 FIGURA 3.5.SOC DIGITAL ...................................................................................................................................27 FIGURA 3.5.1 SOC DIGITAL ...............................................................................................................................27 FIGURA 3.5.2. SOC DIGITAL ..............................................................................................................................28 FIGURA 3.5.3. CSOC ARQUITECTURA .................................................................................................................28 FIGURA 3.5.4. CSOC CON ELEMENTOS DISTRIBUIDOS .........................................................................................29 FIGURA 3.5.5. SOC DEDICADO A COMUNICACIONES............................................................................................29 FIGURA 3.6.2. MULTIPROCESAMIENTO MEMORIA COMPARTIDA ............................................................................31 FIGURA 3.6.3. ARQUIETECTURA DE MEMORIA COMPARTIDA Y QUEUES ................................................................32 FIGURA 3.6.4 METODOLOGÍA DE DISEÑO MPSOC’S............................................................................................33 FIGURA 4.2. ARQUITECTURA DEL PROPELLER DE PARALLAX................................................................................36 FIGURA 4.2.1. ARQUITECTURA DEL PROCESADOR ................................................................................................37 FIGURA 4.2.1.1. REGISTROS DE PROPÓSITO GENERAL ..........................................................................................38 FIGURA 4.2.2. INTERACCIÓN ENTRE PROCESADORES MAESTRO – ESCLAVO............................................................38 FIGURA 4.2.3. MAPA DE MEMORIA ROM PROPELLER ..........................................................................................39 FIGURA 4.2.4. DESARROLLO DE APLICACIONES PROPELLER..................................................................................40 FIGURA 4.2.4.1 DESCARGA DE APLICACIÓN ALA RAM..........................................................................................40 FIGURA 4.2.5 .DOS COG’S EN EJECUCIÓN. .........................................................................................................41 FIGURA 5.1.3. NIVELES JERÁRQUICOS EN DESARROLLO DE CRIPTOGRAFÍA ECC...................................................45 FIGURA 5.2.1. SIMBOLOGIA OPERACIONES EN EL CAMPO ......................................................................47 FIGURA 5.3.2.2 MULTIPLICADOR EN EL CAMPO mF2 ..........................................................................................48 FIGURA 5.2.3.4. ELEVADOR AL CUADRADO..........................................................................................................54 FIGURA 5.3.3 LFSR FIBONACCI..........................................................................................................................55 FIGURA 5.9.1. ARQUITECTURA TOTAL DEL SISTEMA ..............................................................................................76

Page 7: Criptografía de Curvas - Uniandes

Índice de Tablas

TABLA 4.1. CARACTERÍSTICAS DEL PROCESADOR PROPELLER..............................................................................34 TABLA 5.1.3: COMPARACIÓN DE IMPLEMENTACIONES EN WSN............................................................................45 TABLA 5.2.3.1: EJEMPLO EXPONENCIACIÓN (LSB-FIRST) ....................................................................................53 TABLA 5.3.4.1: COSTO COMPUTACIONAL ARITMÉTICA ELÍPTICA (SUMA) ...............................................................56 TABLA 6.1.1. RESULTADOS OPERACIONES EN EL CAMPO......................................................................................77 TABLA 6.1.2. RESULTADOS OPERACIONES ARITMÉTICA DE CURVAS ELÍPTICAS......................................................78 TABLA 6.1.3 TABLA DE CONSUMO DE ENERGIA ...................................................................................................79 TABLA 6.1.3 IMPLEMENTACIONES EN EL CAMPO ...............................................................................80

Page 8: Criptografía de Curvas - Uniandes

INTRODUCCION Las redes de sensores inalámbricos están compuestas por grupos de pequeños dispositivos (nodos sensores) que tienen como fin interactuar para lograr un objetivo común. Su tarea principal es monitorear una variable física (aire, humedad, luz, etc.), o también pueden enviar o recibir mensajes de avisos, o recibir mensajes de consulta de alguna estación base, que puede ser un dispositivo con mayores recursos que los nodos sensores, y sirve como enlace entre los nodos y la aplicación. Este tipo de redes es vulnerable en la parte de seguridad, por ser un campo todavía en desarrollo con una tecnología muy nueva, que hoy por hoy está siendo muy demandada en diferentes campos de aplicación, sin importar la variada información que allí se maneje. Cabe resaltar que uno de los retos planteados por los expertos en el campo es básicamente asegurar todos los niveles [1] incluyendo los datos, protocolos y tipos de servicio. Labor nada sencilla teniendo en cuenta que las plataformas desarrolladas son bastante limitadas en sus recursos. Como ejemplo de nodos en redes de sensores. Sobresalen dos básicamente, el nodo Mica [2] y el nodo TelosB [3], cada uno de los cuales está compuesto por procesadores de baja gama y muy poca memoria RAM Y ROM.1 En este documento se desarrolla una breve introducción a la criptografía por curvas elípticas, se plantea una metodología de trabajo basada en ESL, y se realiza una implementación en un sistema MPSOC2 como desarrollo de prototipado para sistemas multicore, teniendo en cuenta que el núcleo fundamental de todo el problema es la multiplicación escalar. Los motivos de la vulnerabilidad se deben ante todo a restricciones hardware y software existentes en los nodos que restringen la inclusión de mecanismos de seguridad. Otro factor importante es de hecho la comunicación inalámbrica utilizada, debido al carácter distribuido y las posibilidades de fallo en los nodos que repercuten en el funcionamiento de todo el sistema. En seguridad de redes en general la criptografía ha sido ampliamente utilizada, tipos de criptografía de claves simétricas y de clave pública, han sido utilizadas en redes convencionales y tienen sus extensiones en las redes de sensores inalámbricos, 1 RAM (Random access memory) ROM (Read Only Memory) 2 MPSOC Multiprocessor system on chip

5

Page 9: Criptografía de Curvas - Uniandes

La Criptografía de Curvas Elípticas (ECC) [4]. Se Fundamenta en conceptos algebraicos relacionados con curvas elípticas cuya estructura se puede

representar con la ecuación sobre un campo finito o . Dados a y c, la seguridad de este tipo de criptografía, está en el cálculo que se debe realizar de la ecuación ab = c, y que se conoce como el problema del logaritmo discreto.

baxxy ++= 32pF )2( mF

El avance tecnológico que ha impactado a la comunidad permitiendo la implementación de algoritmos de criptografía basados en problemas como la factorización entera y el problema del logaritmo discreto, de una forma eficiente con el segundo problema se interactúa en el desarrollo de este proyecto, la criptografía de curvas elípticas desarrollada por Koblitz y Miller en 1985 , ha tomado adeptos debido a la capacidad de proveer la misma funcionalidad comparada contra esquemas criptográficos como el RSA, los niveles de seguridad son bastantes interesantes, una llave de 160 bits en curvas elípticas equivale a una llave de 1024 bits en RSA.[5] La criptografía de curvas elípticas aparece en el campo WSN un poco más tarde que en otros campos aunque la mayoría de implementaciones se encuentra sobre los nodos antes mencionados y librerías que integran en el entorno, la mayoría de implementaciones que puede encontrarse consumen gran cantidad de tiempo y energía, de que nace el interés por presentar una arquitectura basada en un MPSOC que presente un buen desempeño en tiempo de computo y en consumo de energía. En este trabajo se presenta un diseño MPSOC basado inicialmente en los procesadores de la firma Tensilica[6], pero la implementación final queda en un pequeño pero poderoso sistema llamado propeller de la firma Parallax. Aunque las plataformas hardware presentan un excelente desempeño debido a que la aritmética en el campo se implementa de manera eficiente y la relación que tiene la multiplicación escalar con la aritmética modular un excelente plataforma podría ser hardware o un asic, pero la idea inicial se centro en trabajar multiprocesamiento, donde el campo de WSN no muestra todavía publicaciones en este tipo de plataformas, también se tuvo en cuenta el costo a nivel de consumo de potencia. Los objetivos del proyecto son los siguientes:

• Diseñar un sistema para criptografía de curvas elípticas basado en una plataforma MPSOC.

• Diseñar una arquitectura multiprocesador que resuelva la aritmética modular.

• Diseñar una arquitectura para operaciones con aritmética elíptica. • Superar el desempeño en WSN en el área de criptografía de curvas

elípticas. • Realizar un cifrado y descifrado tipo “El Gamal” • Poner a punto lo anterior con una implementación y además realizar una

validación.

6

Page 10: Criptografía de Curvas - Uniandes

1 DEFINICION DEL PROBLEMA De acuerdo a lo expuesto en la introducción se hace necesario incursionar en campos como el de MPSOC, el cual ha tenido un auge inesperado en los últimos cinco años, y el alcance del proyecto pretende abrir una brecha tecnológica en el uso de plataformas como la empleada en el proyecto no solo para realizar criptografía sino transcender su uso a un sin número de aplicaciones posibles, en el área de WSN. El tipo de criptografía como ya se ha mencionado es curvas elípticas, en el campo WSN3 como se menciono anteriormente esta en vía de desarrollo pero uno de los retos en general es optimizar operaciones en el campo y aceleramiento de la multiplicación escalar, tomando como punto de referencia que las aplicaciones realizadas y reportadas en WSN la gran mayoría son software. Teniendo en cuenta el anterior, en este proyecto se realizan las tareas como se indica a continuación.

• Plantear una metodología tipo ESL4 para la solución del problema concreto, en este caso criptografía de curvas elípticas.

• Diseño de una arquitectura para la aritmética modular • Diseño de una arquitectura para la aritmética elíptica • Selección de un modelo de computo • Realizar mediciones espacio – temporales de las arquitecturas antes

mencionadas. • Diseñar un protocolo de pruebas con todo lo anterior.

El proceso de optimización debe tener en cuenta los siguientes aspectos:

• Acelerar las operaciones de aritmética modular y por ende las de aritmética elíptica, obviamente dentro del contexto WSN.

• Reducir el consumo de energía consumida al realizar la operación de cifrado y descifrado.

Vale la pena comentar que aunque existen plataformas hardware con desempeño muy eficiente, el desarrollo con plataformas MPSOC debe tomarse como el nuevo paradigma en las aéreas de desarrollo en el campo, buscando en el futuro nuevas aplicaciones y explorar nuevos campos de aplicación del área en cuestión WSN.

3 WSN wireless sensors netwowrks 4 ESL Electronic System Level

7

Page 11: Criptografía de Curvas - Uniandes

1.1. Servicios Básicos en Criptografía La criptografía engloba un amplio conjunto de diseños y análisis de técnicas matemáticas para lograr una comunicación segura. Y garantiza los cinco servicios más reconocidos, confidencialidad, autenticidad, integridad, no repudio en la Figura 1.1 se observa un esquema básico.

Canal Inseguro

E

B

A

FIGURA 1.1: MODELO BÁSICO DE COMUNICACIÓN En la Figura 1.1 A y B se comunican por un canal inseguro. Los servicios que provee la criptografía son confidencialidad, integridad de información, autenticación de origen de datos y de los participantes y no repudio. Pueden ser definidos como sigue a continuación:

1. Confidencialidad: Mantener el contenido de la comunicación secreta para quien no esté autorizado.

2. Integridad de Información: Asegurar que la información en la comunicación

no será alterada por usuarios no autorizados.

3. Autenticación del origen de los datos: Poder corroborar la fuente de origen de los datos.

4. Autenticación de usuarios: Poder corroborar la identidad de los usuarios

autorizados en la comunicación. 5. No Repudio: Garantizar que el canal de comunicación es seguro y la

comunicación entre usuarios se garantiza. El mensaje que intercambian los usuarios A y B es llamado texto en claro. Codificar el contenido del mensaje de tal forma que el contenido, no pueda ser atacado por un usuario externo se le llama cifrado. El proceso de recuperar el texto plano a partir del mensaje cifrado, es llamado descifrado. Los procesos de cifrado y descifrado hacen uso de un elemento llamado llave. La única forma de recuperar el texto plano a partir de la cifra es a través del conocimiento de la llave correcta.

8

Page 12: Criptografía de Curvas - Uniandes

1.2. Criptografía de Llave Pública La criptografía se puede categorizar en dos clases secreta y publica [8], en la primera el núcleo son operaciones básicas como rotaciones, operaciones xor, permutaciones, generación de secuencias pseudoaleatorias , en la criptografía de clave publica el problema radica en la dificultad para resolver algunos problemas matemáticos [9]. En el caso de la criptografía de llave publica la llave con que se cifra el mensaje no es la misma que con la que se descifra. Las llaves son llamadas pública y privada respectivamente. Dichas llaves se seleccionan de tal forma que el problema que obtener la llave privada a partir la llave pública sea equivalente a un problema computacionalmente imposible. Los problemas matemáticos más utilizados para en criptografía de clave pública son:

1. El problema de la factorización de enteros, se usa en RSA para cifrar y firmar.

2. El problema del logaritmo discreto utilizado en el El Gamal .

3. El problema del logaritmo discreto en curva elípticas.

Los algoritmos más usados bajo este esquema son RSA, DSA, El Gamal y Criptografía de Curvas Elípticas (Elliptic Curve Cryptography, ECC) [10]. Para que A establezca una comunicación segura con B es necesario que conozca la llave pública de B, eB, la cual es de dominio público. En cambio B es el único usuario que posee la llave privada correspondiente dB. Si A quiere enviar un mensaje confidencial a B entonces usa la función de cifrado ENC en el mensaje m para obtener la cifra c = ENCeB(m). La única forma de recuperar el mensaje original es conociendo la correspondiente llave privada y usando la función de descifrado m = DECdB(c).. eB

ENC Cifra de m

dB

DEC m=Texto Plano

m=Texto Plano

FIGURA 1.2: MODELO BÁSICO DE LA LLAVE PÚBLICA

9

Page 13: Criptografía de Curvas - Uniandes

1.3. Problema del Logaritmo Discreto El problema del logaritmo discreto puede ser descrito en términos de un grupo cíclico finito. Se hace indispensable hacer uso de la teoría de números y el algebra abstracta, como se desarrolla

1.3.1. Grupos Un grupo abeliano (G, *) consiste de un conjunto G con una operación binaria * : G×G ← G que satisface las propiedades de conmutación, asociatividad, elemento identidad, e inverso. La operación de grupo es llamada adición (+) o multiplicación (·). En los grupos aditivos el elemento identidad se nota con un 0 y el inverso de α se nota con −α. A diferencia en multiplicativos , el elemento identidad es el 1 y el inverso multiplicativo del elemento α se nota con α−1. El grupo es finito si el conjunto G es finito. La cantidad de elementos en G es llamado el orden de G. Al definir las operaciones se hace teniendo en cuenta el conjunto de elementos que componen al grupo, sea el conjunto Fp = {0, 1, 2, . . . , p − 1} de los enteros operación + como la adición de enteros módulo p. cumpliendo con lo mencionado en el apartado anterior se tiene un modulo para la adicion y otro para la multiplicación elementos fundamentales en el campo. Sea G un grupo multiplicativo de orden n y g є G. Si t es el entero positivo más pequeño que cumple que gt = 1, t y se le llama orden del elemento g; t existe siempre y, es un divisor de n. El conjunto generado por las potencias de t,

es un grupo bajo la misma operación que G y es llamado subgrupo cíclico de G generado por g. Las mismas definiciones pueden ser aplicadas a un grupo aditivo de manera análoga. Si definimos tg como la adición entre t copias de g, entonces decimos que el orden t de un elemento g є G es el elemento más pequeño que cumple que tg = 0 y es el subgrupo cíclico de G generado por g. Finalmente si existe un elemento g є G de orden n, entonces G es llamado un grupo cíclico y g es llamado generador de G.

10

Page 14: Criptografía de Curvas - Uniandes

1.3.2. Logaritmo Discreto Generalizado Una vez definido una grupo cíclico (G, ·) sobre un operador · de orden n con un generador g, se puede establecer un esquema de llave pública. Los parámetros g y n describen el grupo y la generación de sus elementos y son llamados parámetros de dominio. La llave pública es escogida al azar entre los n elementos pertenecientes al conjunto G potencialmente generados por g, ]. La llave privada y es generada como el -ésimo elemento generado por g, El problema de determinar la llave privada y a partir de la llave pública se conoce como el problema del logaritmo discreto. Cualquier grupo cíclico del mismo orden , son básicamente los mismos, diferenciándose por la representación de sus elementos. La elección de la representación de estos elementos puede llevar a mejoras en recursos de velocidad y/o memoria en algoritmos aplicados en el cálculo de su aritmética y por lo tanto en la solución del problema del logaritmo discreto. Los grupos más comúnmente utilizados para la definición de esquemas de firma digital son los subgrupos cíclicos multiplicativos sobre campos finitos, y los subgrupos cíclicos aditivos sobre curvas elípticas [11].

1.3.3. Parámetros de Dominio en Curvas Elípticas Una curva elíptica E se describe por un conjunto de parámetros, de la misma manera, el desarrollo de un esquema de firma digital basado en el problema del logaritmo discreto necesita la descripción de un subgrupo cíclico sobre el cual generar elementos. La elección de los parámetros de dominio es fundamental para ofrecer un nivel de seguridad óptimo.

1.3.4. Generación de Llaves

Sea con orden , donde E es una curva elíptica. Entonces es posible generar un subgrupo cíclico [12] El campo q, la ecuación de la curva E, el punto P y el orden de son parámetros de dominio público. La llave privada es un entero seleccionado al azar entre el intervalo cerrado y la llave pública correspondiente es el punto . El problema de determinar a partir de los puntos es el problema del logaritmo discreto en curvas elípticas [12].

11

Page 15: Criptografía de Curvas - Uniandes

Procedimiento para la generación de llaves con curvas elípticas

e la curva Entrada: Parámetros d dominio público de y llave privada . Salida: Llave pública

1. Seleccion l ar d a azar del intervalo cerrado 1, =

3. Regresar

Fundamentos Matemáticos

.1 Campos Finitos

, posee un conjunto de elementos y se ueden realizar las siguientes operaciones.

n grupo es llamado abeliano si cumple las siguientes condiciones:

5. Elementos Inversos

ciones definidas en sus lementos, qué básicamente son adición y multiplicación.

ión es conmutativa y cada elemento, excepto el 0, tiene un inverso multiplicativo.

son los campos primos, los campos inarios y los campos óptimos extendidos.

mentos en el campo, y se puede efinir matemáticamente de la siguiente forma:

2. Calcular Q kP

),( dQ

2

2 Un grupo es un objeto matemático abstractop U

1. Cerradura 2. Asociatividad 3. Conmutatividad: 4. Elemento Neutro:

Un anillo está formado por un conjunto, con dos operae Una estructura es llamada un campo si F es un anillo en el cuál la multiplicac

La substracción de un elemento está definida en términos de la adición: Un campo se dice finito si tiene un número finito de elementos. Los campos finitos más comúnmente usados en criptografía b El orden del campo finito es el número de eled

12

Page 16: Criptografía de Curvas - Uniandes

2.1.1 Aritmética Modular

s operaciones básicas son la suma y productos modul es pueden definirse como:

La aritmética de residuos módulo n es llamada aritmética modular, la

ar

2.1.2 Campos Finitos Primos

toEl conjunto de dos los residuos módulo n, para cualquier entero positivo , y la adición modular conforman un grupo abeliano. Este rupo es nomb o enteros módulo n y notag rad se de .

Un grupo puede ser llamado cíclico finito si existe un elemento g de este grupo el cua esarl puede expr cualquier otro elemento en G a través de sumas consecutivas de . Sea un número primo. El conjunto de los enteros módulo junto con las operaciones de adición y a multiplicación módulo

l, conforman un campo ito de orden fin . El campo se denota es

el módulo de . Cual apeado dentro delquier entero a puede ser m conjunto se define como el residuo obtenido dir al divi

. A esta operación se le llama reducción módulo .

.1.3 Campos Finitos Binarios

2 Los campos finitos de orden 2m llamados campos binarios. La aritmética sobre campos binarios tiene aplicaciones en criptografía. Los elementos de se representan como polinomios y se hace uso de las aritmrtica polinomial para el manejo de estos.

xiste E se define con grado igual .

Se pue siti

de definir un campo de 2m elementos para cualquier entero po vo . Los conjunto de elementos son el c unto de polinomonj ios residuo m

a partir de un polinomio irreducibleobtenidos ) de grado m.

El cual tiene 2m lementos. e

13

Page 17: Criptografía de Curvas - Uniandes

La suma y adición se definen módulo La leyes asociativa, conmutativa y distributiv n parte de las operaciones en itmética entera y polinomial. El conjunto

a hace ar junto con la adición módulo conforman un grupo abeliano.

Los elementos e dif rentes de cero de forman un grupo abeliano bajo la ultiplicación m

El conjunto de residuos generados por , además de las operaciones de adici ultiplicación módulo ón y m ) forman un campo finito el cual se denota omoc ) que se refiere se a l ois.

Cualquier entero positivo

os campos de Gal

existe un polinomio irreducible de grado .

Los coeficientes del polinomio se pueden tratar como una secuencia de bits y su atamiento digital se hace más sencillo. Como ejemplo se puede ver lo siguiente.

tr

Las operaciones en el campo se pueden definir de la siguiente forma:

Cuerpo Finito

• abeliano (0) • abeliano (1)

• ara todo

P  

•  

 

 

14

Page 18: Criptografía de Curvas - Uniandes

 

 

2.2 Curvas Elípticas La criptografía de curvas elípticas se basa en las operaciones existentes en rupos abelianos , existen dos posibilidades que el campo finito se binario o primo, n muchos casos la selección depende de la plataforma bien sea hardware o oftware. La aplicación de operaciones a un conjunto de puntos finito, de una lasificación en especial, para el caso en cuestión son las curvas elípticas.

.2.1 Curvas Elípticas sobre campos finitos

Una curva elíptica

gesc

2

sobre un campo se puede definir con la ecuación de Weirstrass:

FIGURA 2.2: CURVAS ELÍPTICAS DEFINIDAS SOBRE

es el discriminante de y se define como:

15

Page 19: Criptografía de Curvas - Uniandes

Las curvas de mayor interés para el presente trabajo son aquellas definidas sobre cam narios y no-supersi gulares. Las u as de acuerdo a la característica del campo base:

1.

pos bi n

c rvas elípticas pueden ser clasificad

• a c va se puede definir como: L ur

o El discrimin nte a

2.

se puede definir como: o La curva

El discriminante

2.3 Ley de Grupo El conjunto de puntos que pertenecen a la curva elíptica, en este caso no upersingular se conoce como orden del grupo se puede notar cómo E (k)

l finitos, es posible ab n de

untos sobre

s Cumpliendo con as propiedades de campos crear grupos

elianos partiendo de la definició adición entre puntos que cumplan con todas las leyes para el campo finito La adición se puede definir geométricamente sobre los números reales. Sean dos p distintos entre sí , El punto

correspondiente a la suma entre se puede obtener de la siguien e forma se traza una línea que intercepte los puntos y a continuación se hace la proyección y a este punto se le pue e atribuir el valor de la suma de dos puntos sobre una curva elíptica, como lo indi a la figura 3.23(a).

t

dc

El doblado de un punto se puede ver como la adición de un punto

con el mismo. Su representación geométrica puede ser obtenida a partir de l adición. Siendo el mismo punto, la secante

a se convierte en la tangente a l curva E

sobre el punto P.

a

16

Page 20: Criptografía de Curvas - Uniandes

FIGURA 2.3: ADICIÓN Y DOBLADO DE PUNTOS GEOMÉTRICO.

La tangente t interseca a la curva en un segundo punto definido como . Será el reflejo de sobre el eje . El proceso se muestra en la Figura 2.3(b). eje .Un grupo abeliano aditivo sobre el conjunto de puntos de una curva elíptica

, cuya ecuación se indica a continuación:

Y campo finito binario base se define de la siguiente forma:

1. Identidad: . 2. Inverso Aditivo: Sea El

punto se denota por y es conocido como el .

3. Adición entre puntos: Sea donde .

Entonces se obtiene:

donde

4. Doblado de un punto: Sea , donde Definimos como:

17

Page 21: Criptografía de Curvas - Uniandes

donde

2.4 Representación de Puntos Las dos operaciones básicas en aritmética de curvas elípticas son suma y doblado de puntos, cuando se da la representación de un punto es necesario dar en forma de una coordenada el resultado de las operaciones y el soporte para estas operaciones esta en las operaciones en el campo finito multiplicaciones e inversiones, en el primer tipo de coordenadas afines el costo computacional es bastante alto por lo que se busca otra opción la cual se describe a continuación. La otra forma de lograr un mejor desempeño es trabajar con coordenadas proyectivas es una forma equivalente de realizar el manejo, en este tipo de coordenadas se usan tres coordenadas en vez de dos y cada punto en coordenadas afines tiene su equivalente en proyectivas, además el costo computacional se reduce bastante. En el caso de estas coordenadas la reducción en costo computacional esta en las inversiones ya que solamente se reduce en muchos casos a una sola.

2.4.1 Coordenadas Proyectivas

Sean enteros positivos sobre un campo Es posible definir una clase de

equivalencia en el conjunto de la siguiente forma.

La equivalencia en el espacio vectorial, puede expresarse de la siguiente forma y a esto se le denomina una clase:

. Se llama punto proyectivo, que representa a dicha clase, o sea que, cualquier punto dentro de la clase es un punto representativo.

18

Page 22: Criptografía de Curvas - Uniandes

Se puede decir que, si , es un punto representativo de la clase de equivalencia (X: Y: Z). Se define el conjunto de todos los puntos proyectivos, para cada posible en el campo como se obtiene una correspondencia uno-a uno entre el conjunto y el conjunto de puntos afines:

Cada punto en sistema de coordenadas afines, puede ser mapeado con el conjunto definido por una clase de equivalencia en particular. El conjunto de puntos pertenecientes a es llamado la línea al infinito, porque esta clase no corresponde con ningún elemento en el conjunto de puntos afines. La ecuación de Weirstrass para la curva elíptica puede ser definida en

coordenadas proyectivas al reemplazando por y . Los valores de las constantes determinarán las características de la aritmética de curvas elípticas y los algoritmos de adición que deben emplearse usando este tipo de coordenadas..

2.4.2 Coordenadas de López-Dahab

El sistemas de coordenadas proyectivas más usadas son las estándar, donde

, las jacobianas, con y las coordenadas proyectivas de López-Dahab. Estas últimas presentan algoritmos para calcular la suma entre un punto en coordenadas afines y otro en coordenada proyectivas con tan solo 8 multiplicaciones. Al definir la suma entre coordenadas mixtas en pocas operaciones de campo hace este sistema ideal para la implementación en el multiprocesador López y Dahab proponen un representación en puntos proyectivos para puntos sobre curvas elípticas donde . El punto proyectivo

19

Page 23: Criptografía de Curvas - Uniandes

corresponde al punto afín y el punto 1 corresponde a , y finalmente, el punto negativo de

Las fórmulas para calcular la suma son:

La ganancia de este método en el uso de la inversión modular ya que solo se necesita realizar una vez cuando se retorna al sistema de coordenadas afines además se ultra bajo consumo en potencia.

2.5 Multiplicación Escalar Elíptica El corazón de la criptografía por curvas elípticas es la multiplicación escalar elíptica, operación análoga a la exponenciación en grupos multiplicativos. Dado un entero y un punto , la multiplicación escalar elíptica es el resultado de sumar P consigo mismo veces. Cada sistema criptográfico se basa en un problema matemático difícil, improbable de resolver por medios computacionales en un tiempo razonable. El problema del logaritmo discreto es la base para la seguridad de muchos criptosistemas, incluidos los criptosistemas de curvas elípticas. Más específicamente la seguridad de curvas elípticas se basa en el problema del logaritmo discreto en curvas elípticas (ECDLP por sus siglas en inglés Elliptic Curve Discrete Logarithm Problem). Las operaciones de suma y doblado de puntos pueden ser usadas para obtener la suma de cualquier número de copias de un punto El cálculo del punto es llamado la multiplicación escalar de un punto.

20

Page 24: Criptografía de Curvas - Uniandes

El ECDLP está basado en la dificultad de obtener el escalar a partir de los puntos .

2.6 Representación del Factor Escalar La gran mayoría de algoritmos propuestos para calcular el producto de una forma eficiente está basado en la representación polinomial de Horner:

. Donde el escalar es representado en forma polinómica y finalmente calculado el producto como una secuencia de Horner. La forma clásica de representación polinomial de un coeficiente es su representación binaria

2.6.1 Representación Binaria El método más simple y antiguo para calcular está basado en la

representación binaria de . Si donde cada , entonces puede ser calculado como:

Este método requiere doblados y sumas, donde es el peso Hamming (cantidad de coeficientes ) de la representación binaria de 3 DISEÑO ESL

3.1 Introducción En la evolución electrónica y lo propuesto por Moore en crecimiento a nivel de escala de integración se plantea hoy un nuevo reto a nivel de metodologías de diseño y más concretamente con los SOC’s (system on chip) [14], dispositivos donde pueden residir CPU’s, Memorias, Mems, componentes análogos, RF, en aplicaciones diversas como video, multimedia, redes entre otros. Un plan estratégico desarrollado por los asiáticos buscando ser los número uno en MPSOC’s dentro de una década, hace pensar que un país como el nuestro se

21

Page 25: Criptografía de Curvas - Uniandes

debe tener un plan, capacitando una nueva generación de ingenieros y buscando una relación universidad empresa.

3.2 Diseño de sistemas En el diseño de un sistema se inicia con la funcionalidad del sistema, se piensa en un sistema como la colección de varios subsistemas (sistemas embebidos). Además del modelamiento necesario para ensamblar todos los componentes ya que debido a su carácter heterogéneo demanda nuevas técnicas de modelamiento, lo que implica explorar nuevos lenguajes para especificación en donde interviene el carácter de la especificación a realizar; sincrónico, asincrónico, flujo de datos o algorítmico [15] En el diseño de un sistema se tienen las siguientes fases: Modelamiento

• Descripción a nivel de sistema • Descripción a nivel de comportamiento

Validación (verificación) • Verificación • Co-simulación • Emulación

Estimación del Desempeño Mapeo y particionamiento

• Entrada especificación funcional • Salida Arquitecturas HW/SW • Mecanismos de interconexión • Funciones optimizando costo,tiempo,area,comunicación • Síntesis Hardware en los diferentes niveles de abstracción. • Síntesis Software algoritmos simples, concurrentes • Síntesis de la interfaz a nivel de buses, mecanismos de comunicación

En la grafica [16] se muestra el flujo de diseño para un sistema, la parte de codiseño está implícita en el diagrama.

22

System

Compil

System Validatio

Partitionning and

Partitioned Performace

Interface Hw SW Evaluati

Page 26: Criptografía de Curvas - Uniandes

FIGURA 3.2. FLUJO DE DISEÑO DE UN SISTEMA.5

3.3 Diseño ESL (Electronic System Level) El nivel de complejidad en los algoritmos requiere el uso de lenguajes de alto nivel como el medio más eficaz para la descripción de sistemas, la flexibilidad y cambio en los requerimientos en un mercado en expansión, exige nuevas metodologías a niveles de integración que van desde las 1.5M compuertas, solicitando desarrollos rápidos de nuevas tecnologías , donde se requieren ingenieros especializados en diseño de hardware y un error en el diseño puede tener como costo la oportunidad de mercado. Todos los problemas que mencionaron anteriormente se relacionan con las ciencias de lo complejo y el manejo que hay desde los niveles de abstracción para dar solución, a medida que se ha evolucionado ejemplo esquemático a HDL, assembler, HLL(High level Language), el diseño de sistemas ha tomado un carácter netamente a nivel de sistema [17], en donde lenguajes como C,C++ y el codiseño HW/SW, las IP y el concepto de reuso son parte del flujo de una herramienta, en la figura[3.3], se muestra el flujo general de diseño en un SOC.

23

5 Tomado de www.celoxica.com

Requiremen

ts

AlgorithmDevelopmen

Emdedded Software

Developme

Hardware/Software/

Coverificati

Hardware Developme

nt

System Integration / Implementation

Pre-existing Software

System Level Design

Pre-existing Hardware

Page 27: Criptografía de Curvas - Uniandes

FIGURA 3.3. DISEÑO ELECTRÓNICO A NIVEL DE SISTEMA6

Si se une la brecha existente entre HW/SW, se da un paso hacia el diseño de sistemas donde conviven las dos cosas, en la mayoría de soluciones al especificar un sistema se expresa como algoritmo de software y hoy los lenguajes más utilizados son C/C++ , se facilita en un tiempo más corto la verificación de todo el sistema, se reducen los riesgos en el diseño, se hace reuso(IP’), se utilizan las técnicas de desarrollo software, se simplifica además el particionamiento HW/SW, lo cual implica que un algoritmo escrito en C por ejemplo puede ser fácilmente portado a un dispositivo de lógica programable (Ej. FPGA), su código fácil de mantener y algunas ventajas que ya se mencionaron. La aplicación ideal debe tomar la descripción hecha en alto nivel y realizar la partición HW/SW de forma optima, el uso extensivo de estructuras en C/C++ debe aprovecharse (Depuradores, compiladores, lenguajes estándar), los desarrolladores y su fácil integración hacen de estos lenguajes los más adecuados para soportar los diferentes niveles de abstracción. En el caso de ESL (electronic system level) emergen como soporte a la descripción de sistemas, están basados en C/C++, permiten el modelamiento HW/SW, tienen soporte a vectores, concurrencia, sincronización, manejo de excepción características de lenguajes de alto nivel orientados a nivel de sistema.

3.4 SystemC SystemC es una librería de clases que permite: modelar, desarrollar, verificar, sintetizar, un sistema en un solo lenguaje [18]. En la comunicación se soportan señales para comunicación entre procesos y memorias FIFO para transferir datos entre procesos usando un buffer. Los procesos con hilos también son soportados, existe una función que permite síntesis sincrónica de hardware. Se pueden trabajar en tiempo de compilación o tiempo de ejecución.

6 Tomado de www.celoxica.com

24

Page 28: Criptografía de Curvas - Uniandes

Los tipos de datos soportados son los mismos de C++, con algunas restricciones para la síntesis [19], los tipos de datos manejados son de punto fijo, donde los efectos de cuantizacion y saturación no se tienen en cuenta. En el manejo de estructura de datos con apuntadores, uniones, estructuras. La síntesis depende de lo que suceda en tiempo de compilación, si es solucionable o no al igual que sus contenidos. A nivel de operadores y sentencias SystemC, tiene la misma sintaxis que C++, se pueden implementar un buen número de funciones ejemplo transcendentes e hiperbólicas.

3.4.1 Proceso de Diseño Se describen las siguientes fases en el proceso de diseño para las herramientas tipo systemC:

• Generar un modelo de simulación del diseño en SystemC/C++. • Generar un testbench ( SystemC/C++). • Simular y verificar el modelo. • Refinar el diseño en simulación y convertirlo en código sintetizable. • Compilar el diseño a RTL. • Verificar el modelo sintetizable • Compilar para convertir a HDL (EDIF, VHDL). • Verificaciones temporales y de área. • Optimización en la síntesis • Ubicación y ruteo con las herramientas correspondientes.

El código debe tener los encabezados necesarios y de soporte para SystemC, las funciones necesarias de síntesis, los hilos y métodos necesarios para describir la lógica del sistema, señales y memorias FIFO’s necesarias para comunicar los procesos. Las restricciones permiten realizar síntesis directa del proceso o afectar su salida , pueden estar en el modulo principal, reloj , Memoria, recursos, o la salida, en cada caso el papel que juegan las restricciones se mide retardos de tiempo necesarios para la sincronización entre submodulos especialmente cuando se hace uso de múltiples relojes. En el diseño de sistemas se pueden tomar dos alternativas, la primera corresponde a la programación secuencial donde se tiene un flujo de datos unido a una maquina de estados finitos, la segunda es la síntesis de alto nivel (HLS), donde se involucran los CDFG (control dataflow Graph)[3.6] figura [3.3], cada circulo encierra un recurso ejemplo multiplicadores, sumadores, otros y se debe optimizar el grafo compartiendo los recursos, para ello existen diferentes metodologías una de las mas promulgadas es la de Gjaski y Catapult C[20] herramienta de Mentor Graphics trabaja con esta metodología.

25

dx 3

2 x

1 x

3 x

8 x

7 -

11

dx

3 4 x

5 x

6 +

9 +

dx

dx

10 <

x

D

D

xl

yl

u

y

X

u

u

Page 29: Criptografía de Curvas - Uniandes

FIGURA 3.4.1. CDFG EJEMPLO7Al comparar la síntesis de alto Nivel con la de software tradicional, en la primera se forma de un datapath propietario y una unidad de control que básicamente es una máquina de estados finito, en la segunda el datapath es fijo y el control está en la instrucciones residentes en memoria. En síntesis de alto nivel la especificación es sensitiva a desempeño, área, potencia, mientras que en software lo es al tiempo de compilación. Cuando se hace descripción a nivel de comportamiento, funcional se utiliza VHDL, Verilog que son los dos lenguajes más usados por los diseñadores de hardware, el uso de procesos, lazos, condicionales, detección del reloj acercan el diseño a nivel del hardware. Cuando se usa descripción a alto nivel se puede decir que el nivel de abstracción es mejor, el código es compacto y algo bien interesante es que la simulación es mucho más rápida, puede estar de 10 a 1000 veces. La existencia de herramientas tipo C va en aumento y las capacidades que se adicionan en este momento: concurrencia, temporización, estructura, son un agregado para el desarrollador. Aunque hay algunas desventajas en este momento con este tipo de lenguajes tales como; existen pocas arquitecturas y es poco intuitivo para diseñadores de hardware. SystemC se ve como el estándar de codiseño para la próxima generación de desarrolladores de grandes sistemas HW/SW,[21] gracias al manejo que tiene a nivel de lenguaje, concurrencia jerarquía, temporización y otras propiedades. Al ser cada día los algoritmos más complejos en muchas de las áreas que tiene la electrónica ejemplo: telecomunicaciones, procesamiento de señal, se hace más importante trabajar en un nivel de abstracción que facilite la descripción , tenga niveles de jerarquía y permita el trabajo de equipos de desarrollo., existen otras posibilidades en diseño ESL como System Verilog con su versión mejorada de BLUESPEC [22] ,para el caso de este proyecto se analizaron otras posibilidades que se discuten a continuación.

7 Tomado de www.mentorgraphics.com

26

Page 30: Criptografía de Curvas - Uniandes

3.5 SOC’s En esta categoría se define como chip dentro del sistema [23], en una primera aproximación se analiza una tendencia a tener sobre una pastilla un ASIC mas una parte programable, que se puede asociar a una FPGA por ejemplo, en la figura [3.5], se observa un esquema de lo descrito anteriormente:

FIGURA 3.5.SOC DIGITAL8

En este caso el ASIC cumpliría con unas labores preestablecidas, por ejemplo de velocidad y en la FPGA puede estar la aplicación de usuario, en la figura [3.5.1], se muestra un diagrama.

FIGURA 3.5.1 SOC DIGITAL Existe la posibilidad de integrar otras fuentes de procesamiento, se puede tener en un SOC varios mundos, ejemplo análogo + digital +mcu, a continuación se muestra una posibilidad en hardware programable y que aparece como una tendencia en el mundo electrónico moderno, aunque no se haya alcanzado el grado de integración de la parte digital es un campo en vía de expansión, en la figura [3.5.2] se observa un híbrido de un modulo digital o FPGA un procesador , periféricos y además la capacidad de procesamiento analógico, con un conversor análogo a digital. El diagrama muestra la posibilidad de integrar MPU, FPGA, periféricos en un mismo dispositivo, además de tener un A/D, que en la mayoría de los casos es de alta velocidad, en cuanto al procesador los fabricantes han tenido la tendencia de tener embebidos o dar la posibilidad con procesadores de 32 bits.

8 Tomado de www.laticcesemi.com

27

Page 31: Criptografía de Curvas - Uniandes

FIGURA 3.5.2. SOC DIGITAL9

Cada día es más frecuente ver SOC’s con mayor escala de integración y mas robustez en sus periféricos, en la figura [3.5.3], se muestra un diagrama de bloques de un CSOC, [24] el procesador empleado es un ARM 32 bits lo cual ha sido una tendencia en los fabricantes de este tipo de dispositivos, en la figura [3.5.3] un ejemplo.

FIGURA 3.5.3. CSOC ARQUITECTURA10

En algunos grandes fabricantes el control de tareas puede estar distribuido en chip, como se muestra en la figura [3.5.4].

28

9 Tomado de www.atmel.com 10 Tomado de www.atmel.com

Page 32: Criptografía de Curvas - Uniandes

FIGURA 3.5.4. CSOC CON ELEMENTOS DISTRIBUIDOS11

Cuando las aplicaciones son muy especificas los fabricantes de SOC’s tienen variedad en el tipo de aplicación, en la figura [3.5.5], se muestra un sistema de comunicaciones con todos sus periféricos a bordo.

FIGURA 3.5.5. SOC DEDICADO A COMUNICACIONES12 En la siguiente sección se revisara las generalidades de los sistemas MPSOC, que son el eje del presente proyecto.

3.6 MPSOC’s Los sistemas en general hoy por hoy exigen capacidades de computo debido a que cada día la tendencia a incrementar el número de funciones es más grande, si se toma como ejemplo la telefonía celular se observan funciones como audio, video, conectividad con redes y demás, sumándole la aparición de nuevos algoritmos en diferentes áreas y cuya complejidad es cada vez más alta, sobre todo en el campo de procesamiento digital de señales [25]. Históricamente se ha venido incrementando la velocidad del reloj en los procesadores comerciales, pero obviamente este es un punto crítico pues entre mayor sea la velocidad, mayor será el consumo de energía [26].

11 Tomado de www.atmel.com 12 Tomado de www.atmel.com

29

Page 33: Criptografía de Curvas - Uniandes

Con el aumento de las necesidades computacionales de los sistemas embebidos actuales, los procesadores de propósito general se quedan relegados y se han desarrollado nuevas oportunidades [27] Las tendencias de incremento del reloj se han ido relegando por lo mencionado anteriormente y las nuevas oportunidades se han abierto a sistemas con múltiples procesadores, para conformar lo que hoy se denomina como MPSoC (Multiprocessor System on Chip), al ser este un tema bastante extenso el proyecto desarrollado muestra tan solo una parte del universo de computo.

3.6.1 Tipos de MPSOC’s

Existen diferentes categorías de MPSOC’s, se podría dar la siguiente división MPSOC’s de propósito general y de propósito especifico. El tipo de procesadores les da otra categoría si los núcleos son idénticos se habla de homogéneos y si son diferentes heterogéneos, en lo desarrollado hasta hoy los homogéneos se utilizan en tareas de propósito general, mientras que los heterogéneos en tareas especificas, como ejemplo un dispositivo de telefonía celular.

3.6.2 Sistemas multiprocesador Existen básicamente dos divisiones los procesadores Hard-Core, y los Soft- Core Processors (SCP), popularizados los segundos por fabricantes de lógica programable como Xilinx y Altera respectivamente y de forma más evolucionada están los de Arc, Tensilica y Coware lideres en este tipo de tecnología.

3.6.3 Arquitecturas MPSoC

Las arquitecturas son extensas pero en este proyecto se enfoco en una pequeña parte, la cual se describe a continuación. Las arquitecturas estudiadas y usadas están basadas en MPSoc’s homogéneos con una arquitectura interna donde se utiliza como estrategia de comunicación la memoria , que en este caso es compartida, usando como estrategia de comunicación entre procesadores el esquema productor-consumidor , a continuación se muestra uno de los posibles esquemas en la figura 3.6.2 , donde hay una memoria global que se comparte con los procesadores al igual que a través de otra sección también se comparten periféricos o recursos.

30

Page 34: Criptografía de Curvas - Uniandes

FIGURA 3.6.2. MULTIPROCESAMIENTO MEMORIA COMPARTIDA13

Aunque en el ejemplo anterior se muestran diferentes núcleos o diferentes tipos de procesadores, la vía para paralelizar esta en usar varios procesadores dedicados y compartir la memoria [28], con esto me permite interrelacionar las tareas y compartir información entre ellas. La arquitecturas se fundamentan en nuevos conceptos NOC(Network on chip)[29], y las tradicionales con topologías maestro-esclavo, donde un procesador reparte las tareas a otros procesadores, en este proyecto se combinan las dos opciones memoria compartida y una topología preestablecida maestro esclavo, con algunos procesadores ejecutando tareas independientes. Partiendo de las arquitecturas básicas mencionadas: red, maestro-esclavo, memoria compartida, se logra desarrollar una metodología de diseño para cumplir con el objetivo planteado. En cada una de las configuraciones de memoria se trata de optimizar al máximo la arquitectura y se logre el mejor desempeño, como un agregado para optimizar en la grafica se observa una arquitectura de memoria compartida pero que agiliza la transferencia de información a través de buffers circulares o Queues, figura 3.6.2.

13 Tomado de www.tensilica.com

31

Page 35: Criptografía de Curvas - Uniandes

FIGURA 3.6.3. ARQUIETECTURA DE MEMORIA COMPARTIDA Y QUEUES14 En general lo que se busca es que el acceso a memoria sea mínimo, gracias a la gestión realizada por el sistema en general, un acceso a memoria tiene implicaciones en tiempo y energía, distribuyendo adecuadamente los accesos y realizando una planificación se logra un buen rendimiento en el dominio temporal igual que se reduce el consumo de energía.

3.6.4 Software

Las aplicaciones con MPSoC’s son relativamente nuevas y no existe en este momento un estándar, aunque muchos fabricantes tomo SystemC [30] estándar para definir algunas partes en los entornos de desarrollo, los sistemas operativos son muchos aunque en el ámbito académico Linux es bien aceptado existen otro sistemas como QNX,VX-works muy bien posicionados en el area industrial, en el trabajo desarrollado se implemento un sistema tipo time triggered [31],con bastantes limitaciones pero que se ajusta bien a los recursos de la plataforma. Como algunas de las cosas innovadoras e importantes están las metodologías desarrolladas por investigadores académicos y de la industria, para enfrentar este nuevo paradigma que parece es el futuro de los sistemas embebidos y SOC’s, a continuación se muestra la metodología que sugiere uno de los fabricantes seleccionados.

14 Tomado de www.tensilica.com

Essential Input/Output

interfaces

Essential Computational Requirements

Express I/O and computation as abstract tasks with communicaitons

Allocate tasks to processors, parallelize tasks across processors, and optimize processors to task

Select and optimize communications mode and interconnect mechanisms

Com

putatiO

ptimizatiom

puta

tion

ptim

izat

ion

32

Page 36: Criptografía de Curvas - Uniandes

FIGURA 3.6.4 METODOLOGÍA DE DISEÑO MPSOC’S

3.6.5 Consumo Una de las restricciones a tener en cuenta a la hora de diseñar con MPSoCs es el consumo de energía. Los sistemas multiprocesador se pueden usar, además de para aumentar el rendimiento de la aplicación, para reducir el consumo de energía de algunas aplicaciones. En este proyecto se presenta un sistema multiprocesador que al reducir la frecuencia de reloj, puede reducir de forma drástica el consumo de energía sin afectar el rendimiento en general, para el caso de esta aplicación el procesador escogido trabaja en un rango de frecuencia bajo pero al equipararlo con un procesador convencional se tendría que triplicar la frecuencia para igualar el desempeño lo que afectaría enormemente el consumo de energía.

4 Arquitectura MPSOC Seleccionada

4.1 MPSOC Propeller

33

Page 37: Criptografía de Curvas - Uniandes

En el universo de cómputo existente se escogió un MPSOc de baja gama aunque no muy potente permite abordar el tema de multiprocesamiento desde una óptica bastante interesante, en el campo de criptografía por curvas elípticas en el entorno de redes de sensores inalámbricos. El procesador Propeller está diseñado para proporcionar un buen desempeño a sistemas embebidos mantiene un bajo consumo de energía rápido, el Propeller posee ocho procesadores, llamados Cogs, que tienen la capacidad de trabajar simultáneamente en tareas independientes. Dentro de algunas de sus características se encuentran las siguientes: • El mapa de memoria es plano. No hay necesidad de paginar los bloques del código, de datos o de variables. • Los acontecimientos asíncronos son más fáciles de controlar que con dispositivos que utilizan interrupciones. El Propeller puede funcionar de manera óptima para programarse en el dominio de la frecuencia, donde se permite revisar las tareas de cada procesador y realizar sus tareas a diferentes frecuencias. • El lenguaje ensamblador del Propeller tiene un set poderoso de instrucciones que permite un rápido desarrollo y tomar toda su capacidad de procesamiento (20 MIPS). Características del propeller se muestran en la tabla 4.1.

Modelo P8X32A Requerimientos de

arranque 3.3 VDC

Velocidad de Reloj Externo DC a 80MHz (4MHz a 8 MHz con el Reloj PLL en ejecución)

Velocidad de Reloj del Sistema

DC a 80 MHz

Oscilador RC Interno 12 MHz 0 20 KHz (aprox. Rango de 8 MHz-MHz, o 13 kHz-33 kHz, respectivamente)

RAM/ROM Global 64 K bytes; 32 K RAM/32K ROM Cog RAM 2 K bytes; 32 K RAM/ 32 K ROM

Organizacion RAM/ROM 32 bits (4 bytes) Pines E/S 32, CMOS, VDC, 1/” VDD umbral lógico de 1.65 V.

Fuente/Sumidero Actual por E/S

50 mA

Fuente/Sumidero actual por chip

TBD mA

Current Draw @ 3.3 Vdc, 70°F

500 uA por MIPS (MIPS=Freq en MHz/4* Número de Cogs Activos)

Tabla 4.1. Características del procesador Propeller

4.1.1 Proceso de encendido o reset Consta de tres pasos:

34

Page 38: Criptografía de Curvas - Uniandes

1. El oscilador interno RC comienza a funcionar a 12 MHz; entonces, después de un retardo en el reset de 50 ms, el primer procesador (Cog 0) carga el Boot Loader y arranca. 2. El Boot Loader realiza las siguientes funciones: a. Detecta la comunicación de un host, con esta comunicación se puede enviar un programa a la RAM del sistema o la EEPROM. b. Si no se detectó host, el Boot Loader busca la EEPROM externa . c. Si no se detectó EEPROM, el Boot Loader para, detiene el Cog 0, el chip queda en un modo especial de parada. 3. Si los pasos anteriores pueden cargar un programa en la RAM general, y el host no ha mandado un comando de suspensión, el Cog 0 se re arranca con el intérprete Spin embebido y el código del usuario se ejecuta desde la RAM global.

4.1.2 Proceso de Ejecución El propeller posee dos lenguajes uno de alto nivel llamado “SPIN” el cual es interpretado en tiempo de ejecución por un procesador dedicado, aunque el verdadero potencial este en el lenguaje de maquina en este proyecto se mezclo el alto nivel con el desarrollo a bajo nivel, normalmente el Cog0 es el encargado de realizar este proceso, de ahí en adelante el sistema tiene el control sobre los procesadores y periféricos en general, aunque puede variar en tiempo de ejecución

4.1.3 Proceso de Apagado Este proceso es vital en el proyecto ya que una de los requerimientos a nivel funcional es el bajo consumo, este modo se obtiene llevando al propeller a un modo de apagado, donde todos los procesadores se detienen y la aplicación solicita un evento de reinicio.

4.2 Arquitectura Interna En la siguiente grafica se muestra la arquitectura del MPSOC de PARALLAX:

35

Page 39: Criptografía de Curvas - Uniandes

FIGURA 4.2. ARQUITECTURA DEL PROPELLER DE PARALLAX

La arquitectura se basan en algunos recursos propios y otros compartidos por todos estos, existe un procesador maestro el cual coordina el acceso a cada tipo de recurso, el tipo de procesamiento para esta arquitectura es un multiprocesamiento simétrico y homogéneo [32], debido a que todos los procesadores tienen la misma arquitectura. Cuando se dice recursos comunes se está haciendo referencia a los que cualquier procesador puede acceder en cualquier momento, pero uno y solo uno tiene este privilegio.

4.2.1 Descripción de los Procesadores El Propeller contiene ocho procesadores, llamados Cogs, Cada Cog contiene: un procesador, RAM 2 KB (512 x 32 bits), E/S y PLLs, un generador video.

36

Page 40: Criptografía de Curvas - Uniandes

Cada Cog puede ejecutar tareas independientes y se manejan desde la misma fuente de reloj. Los Cogs se pueden arrancar y parar en ejecución y se pueden programar para realizar tareas simultáneamente, con diferentes mecanismos de sincronización y comunicación que pueden ser independientes o a cargo de otros procesadores, teniendo en cuenta los esquemas de de sincronización productor- consumidor, para este caso concreto con el uso de memoria compartida [33]. En la figura 4.2.1 se muestra la arquitectura del procesador y su estructura tipo token bus, con el mecanismo de acceso al HUB y el intérprete del lenguaje de alto nivel en la RAM del COG.

FIGURA 4.2.1. ARQUITECTURA DEL PROCESADOR

Con lo descrito anteriormente se logra tener un control sobre la planificación de tareas y algo vital el consumo de energía [3], factor importante en este proyecto. Cuando un Cog arranca, las posiciones desde la 0 ($000) a la 495 ($1EF) se cargan de la RAM principal/ROM y las de propósito especial, desde 496 ($1F0) a la 511 ($1FF), se inicializan a cero. Después, el Cog comienza a ejecutar teniendo en cuenta la posición inicial de la RAM del procesador, en este paso se evidencia la relación tiempo – energía para tener un buen desempeño [34].

37

Page 41: Criptografía de Curvas - Uniandes

FIGURA 4.2.1.1. REGISTROS DE PROPÓSITO GENERAL

4.2.2 Procesador Maestro En el esquema de multiprocesamiento, un procesador maestro mantiene la integridad del sistema [35], permitiendo que los recursos no sean accedidos sino por un solo procesador, se tiene un sistema cooperativo [36], el cual hace un barrido de todos los procesadores El maestro (HUB) le da la mano cada 16 ciclos de reloj del sistema, cuando se hace una descripción de lenguaje a bajo nivel el número de ciclos baja a 7. En la grafica se muestra uno de los casos básico de arbitramiento por parte del maestro:

FIGURA 4.2.2. INTERACCIÓN ENTRE PROCESADORES MAESTRO – ESCLAVO

El procesador posee un contador base que puede ser accesado por cualquiera de los recursos, permite ser utilizado como mecanismo de sincronización y espera, los procesadores pueden leerlo simultáneamente, así un procesador puede crear una base se tiempo y usarla como referencia o mecanismo de coordinación.

38

Page 42: Criptografía de Curvas - Uniandes

Adicionalmente se pueden usar como mecanismo de planificación y acceso de recursos ocho semáforos, teniendo en cuenta que el esquema empleado es el de productor consumidor, el acceso a memoria compartida [7] se optimiza a través de estos mecanismos y con la ayuda del maestro quien mantiene la planificación y hace que el acceso se haga de forma eficiente.

4.2.3 Memoria La memoria principal es de 64 K bytes (16 K longs) accesible por todos los Cogs como recurso mutuo-exclusivo a través del Hub. Se conforma por 32 KB de RAM y 32 KB de ROM. En la figura 6.2.3, se muestra el mapa de memoria del procesador.

FIGURA 4.2.3. MAPA DE MEMORIA ROM PROPELLER

La primera mitad de la memoria se emplea para guardar variables, cuando se utiliza un host o una memoria externa para cargar la configuración de un programa, en las primeras posiciones se encuentra el interprete 0x0000 a 0x0010, a continuación se encuentra la aplicación. En la memoria ROM se encuentra el Boot loader y el intérprete, además de un conjunto de caracteres para poder implementar aplicaciones que relacionen video. En las últimas posiciones están el boot loader y el intérprete del lenguaje SPIN quien trae el programa de la RAM .

39

Page 43: Criptografía de Curvas - Uniandes

4.2.4 Lenguaje SPIN Es un lenguaje interpretado y puede funcionar en altos niveles de abstracción, normalmente se utiliza para coordinar las rutinas de bajo nivel, desde un lenguaje de alto nivel como lo es SPIN, trabajo con la filosofía de programación orientada a objetos donde existen métodos y objetos de carácter privado y público. Ejemplos de objetos pueden ser el Mouse, el teclado y otros periféricos que son hechos en el lenguaje nativo del procesador , y que luego pueden ser invocados desde el lenguaje SPIN. A continuación se muestra en las grafica 4.2.4, el proceso de desarrollo.

FIGURA 4.2.4. DESARROLLO DE APLICACIONES PROPELLER

Cuando hay una aplicación y se quiere transferir existen dos posibilidades, la primera se muestra en la figura 6.2.4.

La cual como se había comentado al principio la descarga sobre la RAM, existe otra forma y esta utiliza una memoria EEPROM externa y luego si se descarga a la memoria RAM, en la grafica 6.2.4.1, se observa lo siguiente:

FIGURA 4.2.4.1 DESCARGA DE APLICACIÓN A LA RAM

40

Page 44: Criptografía de Curvas - Uniandes

En el lenguaje SPIN a continuación alguna directiva: CON – Define constante VAR – Definición de variables globales OBJ – Definición de objetos de referencia PUB – Definición de métodos públicos DAT – Definición de datos,Buffer’s, rutinas en bajo nivel

4.2.5 Procesamiento Paralelo En el procesador se activan y desactivan los COG’s, cuando se tiene más de un COG realizando una tarea es que está trabajando procesamiento paralelo , en el lenguaje SPIN o nativo existen directivas para arrancar o parar un COG, ejemplo: PUB Main cognew(Toggle(16, 3_000_000, 10), @Stack) Toggle(17, 2_000_000, 20) Esta instrucción enciende un procesador, para ejecutar el método Toggle, los argumentos en el interior describen el pin que se está activando con una frecuencia que en este caso es de 10 y 20 veces, como se menciono antes cada vez que uno de los COG’s vaya a correr una aplicación el interprete lo baja a la RAM del procesador, en la figura 4.2.5 se observa el esquema cuando hay una ejecución paralela.

FIGURA 4.2.5 .DOS COG’S EN EJECUCIÓN.15

Para el caso del proyecto se utilizaron cuatro procesadores un maestro y tres esclavos los cuales realizaban tareas muy parecidas en operaciones en el campo finito, se hace uso de una programación orientada a objetos para dar solución integral al problema de criptografía por curvas elípticas al igual que un esquema

15 Tomado de www.parallax.com

41

Page 45: Criptografía de Curvas - Uniandes

de scheduling para sistemas MPSOC[8] donde se combina el procesamiento paralelo y el modelo de computo. Cuando se requiere del arranque de varios procesadores el esquema puede funcionar como se muestra a continuación: dira[16..23]~~ LED[NextObject].Start(16, 3_000_000, 0) LED[NextObject].Start(17, 2_000_000, 0) LED[NextObject].Start(18, 600_000, 300) LED[NextObject].Start(19, 6_000_000, 40) LED[NextObject].Start(20, 350_000, 300) LED[NextObject].Start(21, 1_250_000, 250) LED[NextObject].Start(22, 750_000, 200) LED[NextObject].Start(23, 400_000, 160) LED[0].Start(20, 12_000_000, 0) repeat En este método se activan seis procesadores, cada procesador usa un objeto ya predeterminado, en cada caso se puede planificar teniendo una aproximación temporal y el espacio de memoria compartida para realizar un trabajo productor consumidor. Otro punto vital es el manejo del reloj ya que está directamente relacionado con el consumo de energía en este caso 20 Khz y 12 Mhz, en cada caso la corriente que se consume está relacionada con la velocidad del reloj, considerando la posibilidad de agregar un nodo al criptoprocesador se debe tener en cuenta el momento de entrar en un modo lento o en otro caso de sueño (sleep). De la tabla de características se puede tomar la descripción para calcular el consumo de corriente que consumiría el propeller, que se puede calcular como se indica a continuación. 500 uA * MIPS (MIPS=Freq en MHz/4* Número de Cogs Activos) Las dos frecuencias posibles 12Mhz y 20khz da el total de corriente, además el numero de procesadores encendidos también. Debido a que las herramientas suministradas por los fabricantes son bastante limitadas, se utilizaron las librerías de manejo de TV (NTSC) y con ello se implemento un núcleo que sirvió de emulador durante todo el proceso de desarrollo, se abrió la posibilidad de construir una herramienta de desarrollo que permita depurar y tener puntos de ruptura (Breakpoints) para seguir cada uno de los pasos involucrados en el desarrollo del criptoprocesador.

42

Page 46: Criptografía de Curvas - Uniandes

5 Diseño del Criptosistema

5.1 Flujo de Diseño La metodología que se propone para el criptosistema en el entorno multiprocesador consta de los siguientes pasos.

5.1.1 Requerimientos Para el caso en cuestión se desarrolla un sistema de seguridad para redes de sensores inalámbricos basado en la técnica de criptografía por curvas elípticas. Los requerimientos están ligados con la capacidad de proceso y restricciones de memoria existentes, debido a que no todos los tipos de criptografía son aplicables a nodos de redes de sensores inalámbricos. El consumo de energía es un factor importante para el criptoprocesador por lo que uno de los requerimientos más importantes es que este sea mínimo, siendo prioritario comparado contra el desempeño en velocidad [37]. El manejo de la información garantiza; la confidencialidad , integridad, disponibilidad, actualización de los datos por lo que un requerimiento es lograr que estos tres factores se optimicen, para lograr tener un buen servicio en el criptosistema. La diversidad de ataques como el físico, replicación de nodos, Sybil [38], análisis de tráfico hacen que este sea otro los requerimientos más importantes. La distribución de llaves (LEAP)16 [39] siempre ha generado problemas, en este caso se escoge la opción como requerimiento de redistribución de la llave, la cual será almacenada en memoria. Como requerimiento principal un acelerador de operaciones en el campo finito seleccionado, en la aritmética de curvas elípticas, además un canal de comunicación con el nodo con un protocolo de alta velocidad, poder generar las llaves secretas y almacenarlas en el criptoprocesador previamente, para el caso del proyecto se dedico un procesador a generar la llave permanentemente lo que quita el carácter de pseudoaleatorio y lo convierte en aleatorio totalmente y con alto grado de seguridad. En general el uso del multiprocesador fue en procesadores fue del 80%, el resto se deja para una segunda fase donde se podría realizar un complemento a lo hoy diseñado.

16 LEAP (Localizad Encryptionand authentication protocol)

43

Page 47: Criptografía de Curvas - Uniandes

5.1.2 Especificación Funcional Las especificaciones funcionales se subdividen básicamente en las tareas hardware – software a desarrollar. Las tareas de hardware – software están concentradas en primera instancia en las operaciones en el campo, para este caso GF ( ), la suma, multiplicación, cuadrado, exponenciación, inversión de cada una. Se realizo una investigación y posibilidades de realización en diferentes bases(Normal , Polinomial,Gaussiana).

1632

Después se revisaron las operaciones de curvas elípticas, doblado, suma y con estas dos se obtuvo la multiplicación escalar. Usando como modelo de cómputo las Khan Process Networks, las cuales se utilizaron para comunicación entre los procesadores disponibles En una primera aproximación se buscaron herramientas de síntesis tipo SystemC celoxica [40] y SystemVerilog Bluespec [41], aunque son bastante interesantes se descartaron por que no cubren de forma íntegra los entornos multiprocesador. Luego se revisaron, los trabajos académicos, más relevantes en el campo de los MPSOC’s donde se destaca Metropolis[42], de igual forma se reviso la parte comercial donde se encontraron, tres empresas líderes Arc[43] , Coware [44], Tensilica[45], el común denominador de las tres empresas esta en los procesadores configurables, de las tres se hizo contacto con dos en especial Coware y Tensilica y con esta ultima se realizo un convenio académico, para el uso de sus herramientas. Los requerimientos iníciales plataforma tipo MPSOC y descripción en alto nivel, para ser llevada al multiprocesador

5.1.3 Desarrollo de la Especificación Funcional Las descripciones se realizaron inicialmente con Matlab (anexo 5), adicionalmente se hizo uso de las herramientas de Tensilica que reciben entradas en lenguaje C, C++, ya que en el nuevo paradigma de desarrollo con SOC’s, se pretende tener un buen numero de procesadores, funcionando bajo un mismo substrato, como lo propone RAMP [46] en el proyecto de investigación que se dedica al desarrollo con MPSOC’s. En la primera fase se utilizo una librería de libre dominio Miracl[47],la cual se adapto para las herramientas de MPSOC de tensilica con los procesadores de la familia Diamond donde se obtuvieron los resultados mostrados en la tabla 5.1.3, los tiempos están en µs.

44

Page 48: Criptografía de Curvas - Uniandes

Operaciones Pentium 4, 3 Ghz

PXA270550 Mhz

Diamond 108 mini 400 Mhz

Optimización Diamond 108 mini

Generación Clave

177 4070 2200 1250

Generación Firma

191 2399 2950 1450

Verificación Firma

641 7408 4350 2670

Tabla 5.1.3: Comparación de Implementaciones en WSN

El diseño del criptosistema se cubre teniendo en cuenta los niveles jerárquicos en El desarrollo de aplicaciones en criptografía por curvas elípticas, en la figura se observa la jerarquía antes mencionada.

FIGURA 5.1.3. NIVELES JERÁRQUICOS EN DESARROLLO DE CRIPTOGRAFÍA ECC

El desarrollo se debe planear y ejecutar de la siguiente forma se hace primero un

desarrollo para la aritmética de campo finito .A continuación se hace un desarrollo para la aritmética de curvas elípticas. Finalmente se hace un desarrollo de un protocolo de criptografía. La plataforma se desarrolla para realizar el proceso de cifrado y descifrado, se comunican por medio de un puerto serial y como esquema de `prueba se utiliza un sniffer y varias interfaces humano máquina para poner a punto el buen funcionamiento de todo el proyecto.

)2( 163GF

Por último, se aborda el diseño del protocolo criptográfico. Además, el criptoprocesador cuenta con una etapa de comunicación para poder ser usado según los objetivos del trabajo de grado. A continuación se explican cada uno de los componentes del diseño.

45

Page 49: Criptografía de Curvas - Uniandes

5.1.3.1 Selección de Parámetros

El campo finito seleccionado fue un campo comercial estandarizado por NIST, la implementación final se hace sobre el multiprocesador PROPELLER de la firma PARALLAX.

)2( 163GF

Se selecciona la representación en base polinomial por ser la que más se ajusta a la arquitectura utilizada, para las operaciones en el campo se emplea el polinomio irreducible recomendado para las curvas de este campo B-163 ,

. 1)( 367163 ++++= zzzzzf La curva elíptica seleccionada está definida en el campo como

, cuya característica principal es el ser una curva supersingular.

baxxxyyFE ++=+ 2322 :)( 7

Los coeficientes de a y b de la curva al igual que otros parámetros se toman de las recomendaciones para la base seleccionada y por que ya están estandarizadas. Aunque el número de puntos de la curva se puede definir mediante técnicas especiales para este proyecto se asumió que las curvas estandarizadas eran las indicadas. Como estos puntos forman un grupo abeliano, cada uno de ellos posee un orden, parámetro importante a la hora de realizar la multiplicación escalar. A este valor lo llamaremos .

5.2 Desarrollo Aritmética de Campos Finitos

Para la implementación de la aritmética en el campo se exploto la arquitectura del multiprocesador, pero inicialmente el desarrollo se hizo sobre un procesador aprovechando la capacidad de computo 32 bits para después crear el objeto, que sería utilizando en la siguiente fase en la etapa de scheduling y modelo de computo. Se implementaron las operaciones de suma, multiplicación, inversión, elevación al cuadrado, exponenciación.

46

Page 50: Criptografía de Curvas - Uniandes

5.2.1 Suma en )2( 163GFDebido a que realizamos aritmética modular la operación se suma en el campo

, se realiza modulo 2 dado en esta base polinomial es un campo generado de la base , la operación se reduce a realizar una XOR bit a bit , explotando un poco la arquitectura se realiza la operación en palabras del tamaño de palabra del multiprocesador en este caso 32 bits y para un total de seis long en todo el proceso.

)2( 163GF )2( mGF2F

Una simbología para representar las operaciones básicas entre bits, se muestra en la figura 5.2.1,

FIGURA 5.2.1. SIMBOLOGIA OPERACIONES EN EL CAMPO

5.2.2 Multiplicador en )2( 163GF La multiplicación utiliza los conceptos de aritmética polinomial y modular donde existen dos tipos de implementaciones las orientadas al bit y las orientadas al vector, con una mejor capacidad de memoria se pueden pre computar las multiplicaciones, con esto se logra incrementar en un buen porcentaje el desempeño en velocidad, pero se necesita una muy buena capacidad en memoria, como los recursos del MPSOC son limitadas se escogió la opción a nivel bit para la implementación. Aunque se puede implementar un multiplicador paralelo [48], el cual agilizaría bastante el cálculo de las operaciones, la latencia estaría en la propagación existente entre procesadores y consumiría gran cantidad del recurso en de estos al trabajar todos simultáneamente, se escoge la opción de trabajo con procesamiento simétrico donde cada procesador puede ejecutar la operación en cualquier momento, depende de la planificación. La operación se puede representar de la siguiente forma sea:

∑−

=

=1l

oi

kii zBb

47

Page 51: Criptografía de Curvas - Uniandes

En la anterior expresión cada digito de es un polinomio binario de grado, el producto que se necesita está enmarcado en el campo de la aritmética polinomial [28] y puede expresarse de la siguiente forma:

iB

)(mod..1

0zfzBaba

l

i

kii ⎟

⎞⎜⎝

⎛= ∑

= De aquí se puede obtener la siguiente expresión:

)(mod)(mod(1

0zfzfazB

l

i

kii ⎟

⎞⎜⎝

⎛= ∑

= Donde es el polinomio de reducción mencionado , el algoritmo implementado básicamente usa un registro de corrimiento donde se encuentra el operando

)( zf

a y en otro registro de desplazamiento esta el operando b y un tercer registro c, donde se acumula el resultado de la operación, la longitud ideal del registro sería equivalente al tamaño del campo, pero como se menciono el registro se divide en seis registros debido a la arquitectura del procesador en la esima iteración el contenido de

mi

aes , al producto de

se conoce como “digit multiplication” , técnica desarrollada por Montgomery y empleada en los multiplicadores de Karatsuba [49] , al resultado anterior se le debe hacer una XOR con el acumulador

)(mod zfazki

)))(mod.( zfazB kii

c, como se muestra en la figura 5.3.2.2.

FIGURA 5.3.2.2 MULTIPLICADOR EN EL CAMPO mF2

b

C

a CONTROLLER

r

48

Page 52: Criptografía de Curvas - Uniandes

Cabe resaltar que las operaciones de aritmética polinomial y sus propiedades se pueden extender a los campos finitos ampliamente usados en criptografía. Al realizar la operación de multiplicación el orden del campo se supera, cuando

esto sucede se dice que no pertenece al campo finito . Pero el campo está definido con modulo el polinomio irreducible

)2( 163GF1367163 ++++ zzzz , se realiza

una reducción modular para que el resultado de la operación quede nuevamente en el campo donde se está operando. Al cumplir con las propiedades de grupo Abeliano se tiene en cuenta que el inverso aditivo de un elemento del campo es el mismo, se aprovecha la propiedad de los grupos cíclicos y campos de Galois [50] para realizar la operación de reducción. Quiere decir lo anterior que cuando tenga la mayor potencia, el exponente se puede descomponer, usando como referencia el polinomio irreducible, esto referido a la operación necesaria que hay que realizar para que todos los elementos que intervienen, pertenezcan al campo finito seleccionado. La teoría de Galois nos permite realizar las equivalencias necesarias para que

toda operación no esté fuera del campo, en este caso la extensión de

seria el campo que se está utilizando , esto equivale a

)2( mGF

)2( 163GF )(2

zpZ

donde es el polinomio irreducible. )( zp

Al trabajar la base polinomial todas las operaciones se reducen atrabajar con valores binarios 1 o 0, de esta forma se evidencia que las operaciones involucradas para la multiplicación en el campo son la XOR que representa la adición y la AND que representa al producto, teniendo en cuenta la reducción modular.

mF2

En total la operación realizada con estos polinomios se hace sobre una estructura algebraica conocida como anillo cociente y que se maneja como datos binarios, en el caso de la implementación realizada consumió un tiempo considerable de ejecución debido a que la arquitectura es portada en forma secuencial, a diferencia del hardware donde una multiplicación en el campo puede ser simplemente un ciclo de reloj.

49

Page 53: Criptografía de Curvas - Uniandes

Una representación matemática y algorítmica se da a continuación: Método Binario para multiplicar en

 

 

 for from to do

 if then  endfor El método de multiplicación sobre el campo se puede expresar como: Método Binario para multiplicar en

 

 

50

Page 54: Criptografía de Curvas - Uniandes

if then ; else for from 1 to do  

if then  endfor

5.2.3 Inversión Sin duda la operación más complicada, existen diferentes algoritmos entre algunos el baso en la extensión del algoritmo de Euclides[51] y sus variantes, Debido a su que este algoritmo demanda bastante carga computacional bastante compleja computacionalmente, se aprovecho el diseño del multiplicador para realizar una implementación basada en multiplicaciones básicamente. la operación de inversión afecta directamente las operaciones de aritmética elíptica puesto que existen dos formas de entregar los resultados en criptografía de curvas elípticas, la primera coordenadas afines donde el uso de la operación de inversión es mayor, que en el formato de coordenadas proyectivas donde algoritmos como el de Lopez-Dahab [52],la redujeron ostensiblemente el tiempo de computo. En todo grupo y campo finito se cumple la propiedad básica de unicidad, que dice que existe un elemento tal que se cumple que , donde es elemento neutro de la operación producto.

1−a eaa =−1*

De igual manera una forma de realizar la división está basada en la inversión, que puede expresarse como :

0* 1 <>= − sibbaba

Con lo expuesto en el “Pequeño teorema de Fermat “, el cual dice que para todo

elemento que no sea cero en un campo , se tiene lo siguiente: mF2

221 −− =m

aa

Esto demuestra que por propiedades de los campos , cumple con lo siguiente:

mF2

aam

=2

Se realizan algunas sustituciones y se obtiene la siguiente expresión, para hallar el inverso multiplicativo.

222221 )( −−− ==mm

aaa

51

Page 55: Criptografía de Curvas - Uniandes

De esta manera se puede reducir la complejidad de la inversión a un número de menores elevaciones al cuadrado. En la literatura Itoh –Tsujii [53], propusieron otra forma de reducir la complejidad del cálculo, haciendo algunas sustituciones obtuvieron lo siguiente:

Existen dos posibilidades que m sea impar y en el otro caso que me sea par, para el caso del presente proyecto la operación de inversión fue una de las más costosas y se dedico un procesador para que la realizara exclusivamente. Para el caso en concreto de la aplicación la idea es descomponer en el mayor numero de factores que se puedan elevar a una potencia par y recurrir lo mínimo a la multiplicación esto debido a que elevar al cuadrado consume muchísimo menos tiempo que multiplicar y en el caso particular del cuadrado multiplicar por sí mismo, para la longitud del campo finito empleado se necesitan nueve multiplicaciones y ciento sesenta y dos cuadrados.

5.2.3.1 Exponenciación en ) La operación de exponenciación es importante en las operaciones de criptografía, la operación de inversión hace uso de ella. A continuación se describe un algoritmo implementado en el multiprocesador:

Sea M un elemento arbitrario en el campo puede expresarse como: )2( 163GF

imi

iimM α∑

−=

=

=1

0 Y se a k un numero cualquiera cuya representación binaria se puede dar de la siguiente forma:

{ }1,0),,,........,,(2 01

1

021 === ∑

=−− i

n

inn

ii kkkkkkk

. El algoritmo binario revisa bit a bit y realiza las operaciones de multiplicación y Elevar al cuadrado, siempre verificando el bit del escalar con el que se esté operando, a continuación se muestra un ejemplo de aplicación en la tabla 4.2.3.1. K=01001110 k 1=ik 0=ik 0 1 22 MM =

52

Page 56: Criptografía de Curvas - Uniandes

1 1* 2M ( ) 422 MM = 0 2M ( ) 824 MM = 0 2M ( ) 1628 MM = 1 18162 * MMM = ( ) 32216 MM = 1 503218 * MMM = ( ) 64232 MM = 1 1146450 * MMM = ( ) 128264 MM = 0 114M ( ) 2562128 MM =

Tabla 5.2.3.1: Ejemplo exponenciación (LSB-first) El uso del cuadrado en el algoritmo es intensivo pero como se muestra adelante en la tabla de resultados para las operaciones, el tiempo de cómputo se disminuye con la implementación de este algoritmo y el uso del cuadrado en la forma indicada. El método utilizado es un clásico en aritmética entera y polinomial [54], el agregado se encuentra en el multiprocesador pues uno o varios procesadores pueden estar realizando al tiempo la misma operación, para este caso varios procesadores elevan al cuadrado y varios multiplican, logrando tener un tiempo de ejecución bastante aceptable Para elevar al cuadrado simplemente se utilizan los fundamentos de aritmética polinomial, donde un polinomio, se puede representar de la siguiente forma:

im

ii xaa ∑

=

=1

0 i

m

ii xaa 2

1

0

2 ∑−

=

=

En aritmética polinomial elevar al cuadrado un polinomio en el campo equivale en a insertar ceros, como se indica en el ejemplo a continuación, y que finalmente se implemento en el multiprocesador.

1357 +++= xxxa Equivale a 10101001

1610142 +++= xxxa Equivale a 0100010001000001 En una arquitectura con más capacidad en memoria de programa seria mucho más eficiente pre computar y tener una tabla con toda la posibilidad de valores, para el cálculo de esta operación , lo que haría que el tiempo de ejecución disminuyera bastante, para el caso del multiprocesador los recursos en memoria son limitados por lo que se implemento un algoritmo para realizar lo descrito en el apartado anterior.

53

Page 57: Criptografía de Curvas - Uniandes

En el desarrollo de la operación de exponenciación este artificio fue clave ya que reduce en una proporción interesante el tiempo de computo. En la grafica 5.2.3.4 se muestra la implementación hardware para la operación de elevar al cuadrado.

54

FIGURA 5.2.3.4. ELEVADOR AL CUADRADO

5.2.4 Generador de Pseudoaleatorios en )2( 163GF El criptosistema diseñado genera números pseudoaleatorios, para generar las llaves tanto pública como privada, una de las fortalezas de este diseño consiste en dejar a un procesador para que siempre este generando números y cuando se le pida el entregara el que este generando en el momento lo que lo convierte en casi totalmente aleatorio. Este modulo se emplea en la unidad de cifrado y en la unidad de descifrado, tanto en el intercambio de claves como en el protocolo son fundamentales.

Se implementa al interior del procesador un LFSR (Linear Feedback Shift Register), registro con retroalimentación lineal, con la realimentación se logra un carácter pseudoaleatorio en la generación de los números y que esté funcionando al interior de un procesador al estilo de un código rotativo permanente lo hace aleatorio. La arquitectura empleada se muestra en la grafica 4.3.3, se conoce como LFSR tipo Fibonacci.

Page 58: Criptografía de Curvas - Uniandes

FIGURA 5.3.3 LFSR FIBONACCI

La generación de los números pseudoaleatorios al interior del procesador tiene unas restricciones que tienen que ver con el orden del punto empleado, estos deben generarse en un rango que no sea ni n ni tampoco , condiciones dadas por algoritmo de multiplicación escalar empleado en las operaciones de criptografía por curvas elípticas.

1−n

En el caso del algoritmo implementado el de Lopez-Dahab el bit de mayor peso en la generación de números siempre va estar en uno.

5.3 Aritmética de Curvas Elíptica El criptosistema de curvas elípticas se basa en la operación de grupo denominada suma de puntos racionales, como se explico en el Marco Teórico. Se eligió el método de López-Dahab por sus ventajas en la implementación y el manejo de la operación de inversión. El algoritmo tiene tres componentes principales; por un lado se tiene la configuración inicial, la cual tiene como resultado la carga de los valores iníciales de X1, Z1, X2 y Z2. Las dos operaciones fundamentales son doblado y suma, pero hay que tener en cuenta que las operaciones dependen del campo finito seleccionado, a continuación se definen la dos operaciones del grupo elíptico en el campo utilizado.

Grupo Elíptico • Suma: •

 

55

Page 59: Criptografía de Curvas - Uniandes

 

 

En la definición de suma en el grupo elíptico se observan las operaciones necesarias y su costo computacional se describe en la tabla 4.3.4.1 Operación Inversos 1 1 Multiplicación 2 2 Cuadrados 2 1 Sumas 8 7

Tabla 5.3.4.1: Costo computacional aritmética elíptica (suma) Dado un número entero y un punto elíptico

 

 

Se necesitan tres doblados y dos sumas para calcular 14P Algoritmos eficientes para calcular :

• Punto conocido (off-line) • , P Punto arbitrario (on-line)

56

Page 60: Criptografía de Curvas - Uniandes

•   Para el caso de este proyecto el punto se tomo de las recomendaciones de NIST para un tipo muy particula vas las B-163, los parámetros se muestran a ontinuación:

Cu

r de cur

c

  

rva aleatoria sobre

 •

 • • •  

  

• • •  

En segundo lugar, se tienen iterativa que evalúa bit a bit de mayor a menor peso del escalar k, comenzando por Km-2 por el cual se va a multiplicar el punto P. de acuerdo al valor de ese bit en cada iteración se implementa una suma y

uplicación de los puntos repd resentados en coordenadas proyectivas, solamente

nto kP y las coordenadas X2, Z2

e coordenadas

asa en la ropuesta de Montgomery [55], a continuación se hace una descripción.

o para calcular

con sus coordenadas X y Z. Una vez evaluado el bit k0 y realizada la última suma y duplicación, se obtienen omo resultado las coordenadas X1, Z1 del puc

del punto (k+1)P en coordenadas proyectivas.

a tercera etapa del algoritmo implementa la conversión dLproyectivas a fines, obteniendo las coordenadas x,y del punto kP. Para el tratamiento del escalar k, el cual debe ser evaluado bit a bit, se usa un registro de corrimiento de derecha a izquierda de 163 bits, dividido en palabras de 32 bits lo que da un total de seis registros para la evaluación del escalar.

l esquema de algoritmo utilizado para la multiplicación escalar se bEp

  Método binari

 

57

Page 61: Criptografía de Curvas - Uniandes

 

 

 for to 0 do

 if then  endfor

y se divide en tres pasos a doblado de un punto,

.3.1 Suma de puntos (Madd)

cificado, el coeficiente b de la curva

sta operación puede verse como los siguientes pasos:

El algoritmo implementado es el de Lopez-Dahab básic mente; suma de puntos,

5 Tiene como entradas el campo finito espeelíptica, la coordenada x (X/Z) del punto P. Como salida se tiene la coordenada X/Z para el punto 2PE

1. 2. 3. 4. 5. 6. 7. 8.

58

Page 62: Criptografía de Curvas - Uniandes

5.3.2 Doblado de un punto (Mdouble) Tiene como entradas el campo finito especificado, el coeficiente b de la curva elíptica, la coordenada x del punto P, las coordenadas x (X1/Z1) y (X2/Z2) e los puntos P1 y P2. Como salida se tiene la coordenada X1/Z1 para el punto P1 y P2 Esta operación puede verse como los siguientes pasos:

1. 2. 3. 4.

5. 6.

7. 5.3.3 Conversión a coordenadas afines (Mxy) Tiene como entradas el campo finito especificado, las coordenadas afines del punto P=(x,y), coordenadas x de X1/Z1 y X2/Z2 de los puntos P1 y P2. Como salida se tiene las coordenadas afines (Xk,yk)= (X2,Z2) para el punto P1=kP Esta operación puede verse como los siguientes pasos.

1. 2.

3. 4.

5. 6. 7. 8. 9.

10.

59

Page 63: Criptografía de Curvas - Uniandes

11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.

En todos los casos los parámetros utilizados fueron los recomendados por NIST, en cuanto a orden y parámetros de la curva elíptica sugerida en campo finito y la base polinomial seleccionada.

5.4 Diseño del scheduling y RTOS El porqué usar múltiples procesadores, para implementar el criptosistema radica básicamente en tener un acelerador que no involucre al nodo para el cifrado y descifrado si se quiere realizar el proceso de cifrado, por otra parte el criptosistema diseñado además de servir de coprocesador en la parte de seguridad, realiza otras funciones como comunicaciones, interface humano maquina y podría realizar otras más, que un solo procesador difícilmente cumpliría. El flujo metodológico se centra en los siguientes temas:

• Diseñar una estrategia para sacarle provecho a los procesos concurrentes existentes en la aplicación.

• Paralelizar varias tareas y asignarlas, a la plataforma desarrollada. • Paralelizacion de la aritmética modular, la cual se implementa como

software, pero puede ser distribuida en varios procesadores, de igual forma la paralelizacion de la multiplicación escalar, que usa aritmética en curvas elípticas.

• Metodologías de interconexión global, memoria compartida, subsistemas necesarios y cuál es el mejor para tener un buen ancho de banda, latencia baja y una comunicación efectiva.

60

Page 64: Criptografía de Curvas - Uniandes

Se esta analizando la combinación hardware y software existente en el multiprocesador, para lograr tener de la forma más efectiva disipación de potencia, consumo de energía, modelo programación y verificación del modelo en el entorno. Una de las consideraciones más importantes en un diseño paralelo en vez de uno secuencial es sin duda el consumo de energía [56], debido a que al distribuir tareas el consumo disminuye y aumenta su eficiencia, tomando esto como precepto se tuvieron en cuenta los siguientes ítems:

• Se analizo donde era posible paralelizar y donde era netamente secuencial.

• Se analizo el impacto en la latencia, cuando se paraleliza y como afecta la comunicación entre tareas.

• Se analizo la estabilidad de la aplicación cuando se paralelizaban tareas. • Se trabajo en la especificación desde varios modelos de programación,

ejemplo se inicio el proceso con una descripción en Matlab y luego C. 5.4.1 Diseño de la arquitectura en el MPSOC El desarrollo a nivel de SOC’s ha mostrado el avance en aplicaciones como telefonía, audio, video entre otras donde no son ajenas las metodologías propuestas ESL, propuestas. En el presente trabajo, el primer paso estuvo en ubicar los procesos concurrentes en el criptosistema. Existen desarrollos hardware extremadamente paralelos [57], pero un factor muy importante para el campo WSN es el consumo de energía, depende de la velocidad del reloj básicamente, en el desarrollo del proyecto se buscaron referencias de trabajos, pero se encontraron muy pocos con el tema antes mencionado [58]. En el proceso se busco la dependencia entre tareas y se hizo un análisis para llegar a describir el núcleo principal de la aplicación, la multiplicación escalar con sus grafos de dependencia, donde se muestra la paralelizacion de la tarea y se muestran las dependencias, en la sección donde se explica el esquema de planificación se entra en el detalle. 5.5 Proceso de paralelizacion Se definieron tres estrategias que se describen a continuación:

• Particionamiento: Se dividió el criptosistema en las siguientes tareas: aritmética en el campo finito ), aritmética de curvas elípticas, comunicaciones, generación de números aleatorios, interface humano maquina.

1632(GF

61

Page 65: Criptografía de Curvas - Uniandes

• Diseño de tareas: Por cada una de las tareas mencionadas anteriormente se asigno uno o varios procesadores.

• Diseño del los sistemas de comunicación: se implemento un sistema operativo y se con un modelo de computo.

En el proceso de partición se dividieron las tareas grandes en subtareas como ejemplo; en la aritmética modular se tomaron las operaciones básicas en el campo suma, multiplicación, inversión, exponenciación y luego se crearon canales de comunicación entre estas subtareas. El por qué escoger esta plataforma de múltiples procesadores esta en buscar la flexibilidad en las tareas, debido a que día a día los requerimientos cambian, ejemplo se trabajo con un campo finito , pero un requerimiento puede ser cambiar el campo y además el tipo de base, lo que requeriría otro tipo de tareas y otras estructuras.

)2( 163GF

También se debe garantizar la flexibilidad en cuanto a la cantidad de tareas y su comunicación, pues esto influye en la complejidad computacional que demanda la aplicación en criptografía de curvas elípticas, las operaciones se realizan con grandes enteros, una primera aproximación se consiguió al diseñar una calculadora básica para verificar las operaciones en el campo (ver anexo 1). Los tipos de concurrencia analizados al realizar la primera fase del proyecto se ubicaron de acuerdo a la granularidad que tenían y su uniformidad, haciéndose énfasis en la aritmética en campo. El universo de computo abarca procesadores vectoriales , arreglos de procesadores, ILP17, múltiples procesadores independientes y en cada caso el factor de granularidad y uniformidad tiene sus pros y contras, para el caso de este desarrollo se opto en principio por explorar varias arquitecturas con algunos fabricantes de herramientas al final la selección se inclino por el PX8A32, multiprocesador pues se necesitaba procesar una cantidad diferentes de tareas y comunicarlas, el Mpsoc seleccionado tipo homogéneo cumplió las expectativas. 5.6 Ancho de banda y estructura de comunicación: Los mecanismos de comunicación entre procesadores como se explico en el capítulo de arquitectura seleccionada son mutuo-exclusivos y usa la memoria, por tanto se habla de transferencias entre un proceso y la memoria , debido al mecanismo inherente del multiprocesador hay un barrido de un maestro a cada procesador cada 16 ciclos de reloj a menos que se quiera una excepción con algún mecanismo de sincronización (semáforo, pej), el esquema empleado en la aplicación, consiste en el esquema productor – consumidor la latencia es grande

17 ILP Instruction level parallelism

62

Page 66: Criptografía de Curvas - Uniandes

cuando un procesador debe acceder a un recurso, debido a que la arquitectura es rígida y no permite mayor flexibilidad. La latencia se refiere al punto en el tiempo cuando la información está disponible[59], ya sea a través de buffers de memoria o un bus, en el criptosistema los accesos a memoria para el desarrollo del algoritmo de multiplicación escalar son los que tienen mayor latencia, pues se deben hacer transferencias del tamaño del campo en el que se esta operando , en una segunda fase de implementación unos de los puntos a mejorar es estas transferencias hechas en el lenguaje SPIN , realizarlas en el lenguaje nativo del procesador, accediendo directamente a la memoria del HUB con un mecanismo más elaborado de sincronización.

)2( 163GF

La siguiente fase en el diseño fue determinar como la estructura comunicación afecta al criptosistema, en primer lugar un reto a superar con las implementaciones en WSN , el acceso a memoria aunque se disminuye el tiempo, las transferencias generan latencias grandes. Otro aspecto es la contención de esta latencia al compartir recursos, en el caso más critico la memoria compartida, pues cada 16 ciclos de reloj, a un procesador se le da el turno, se tiene en cuenta que para agilizar el proceso usar queues, es una buena solución. La arquitectura propuesta es mas software que hardware, esto le da mayor dinamismo al proyecto en cuanto a estructuras de programación e intercomunicación entre procesadores, a asignación dinámica de buffers de memoria. El kernel desarrollado aunque sencillo cubre las necesidades del proyecto, básicamente; administración de recurso y planificación del algoritmo para la multiplicación escalar, e utilizan todas las operaciones en el campo, y se puede comparar el desempeño de los ocho procesadores con un reloj de 80 MHz a un procesador convencional de aproximadamente 500 Mhz . 5.7 Paralelizacion de las tareas La paralelizacion se diseña en el dominio temporal, teniendo en cuenta el consumo de cada operación en tiempo y así decidir cuándo se arranca un procesador o cuando se para. Además cuando se comparte información con el HUB. La paralelizacion se concentra en dividir las tareas que tiene la multiplicación escalar y activar procesadores ejecutando operaciones en el campo finito, los recursos son mutuos exclusivos y se comparten con el HUB.

63

Page 67: Criptografía de Curvas - Uniandes

5.7 .1 Asignación de tareas a los procesadores En la fase inicial se identificaron las tareas más representativas, se entiende por representativa las tareas que tienen un alto costo computacional y a estas se les asigno un procesador. Se analizo la capacidad de los procesadores y se determino que con 80 Mhz y 20 MIPs18, los ocho procesadores tienen 160 mips cuando se describen las aplicaciones en el lenguaje nativo. El procesamiento distribuido con el que opera el multiprocesador esta en un rango aceptable para aplicaciones WSN. 5.7 .2 Selección de estructura de comunicación adecuada La arquitectura se construye con el numero de nodos por comunicar con tareas de software, aprovechando la arquitectura hardware ya preestablecida en este caso comparte un bus y un maestro controla el acceso alos recursos. El diseño de un hardware eficiente es un punto vital, en las herramientas de diseño estudiadas se comenzó con EDK de xilinx pero la sola construcción de la arquitectura demanda demasiado tiempo [60], plataformas ideales Tensilica, Coware, Arc donde fácilmente se selecciona estructura del bus, procesadores y el total de la especificación puede cumplir con cualquiera de las características mencionadas en paralelizacion atraves de un conjunto de procesadores. 5.7 .3 Modos de comunicación software Los modos de comunicación se dividen en dos categorías implícitos y explícitos, la estructura empleada en el proyecto se basa en el paso de mensajes, en cada caso un mensaje se envía para comunicar procesadores, esto se cumple siempre y cuando el buffer de memoria no esté lleno. La arquitectura está casada con el esquema de memoria compartida, pero se permite una lectura y una escritura en el instante de intercambio de información. La arquitectura es eficiente siempre y cuando se creen objetos y estos objetos se usen como objetos públicos compartidos por los COG’s El consumo de energía se calcula de acuerdo al número de procesadores funcionando, que depende de la frecuencia de operación [61].

18 MIPs millions of instruction per second

64

Page 68: Criptografía de Curvas - Uniandes

5.7 .4 Esquema de planificación del Criptosistema El esquema de planificación usa mensajes y estos mensajes, se envían y reciben en el entorno como comandos que van dando el turno al procesador una vez se han inicializado los motores de la aritmética modular por ejemplo, se refuerza este modelo con algunos mecanismos de sincronización como semáforos y el modelo de cómputo para garantizar un funcionamiento optimo. Se describe uno de los mecanismos empleados donde se usa el esquema productor-consumidor. el comando de creación de un nuevo engine (procesador), Se describe a continuación: okay := cog := cognew(@getCommand_B, @command_B) + 1 en los argumentos están los tokens que intercambian los procesadores y apuntan a la memoria del HUB donde se encuentra la operación a realizar. En la grafica se observa un esquema general del multiprocesador y su esquema de trabajo, además un diagrama básico de los procesadores (Cogs)

FIGURA 5.7.4.1 SISTEMA MULTIPROCESADOR P8X32A

65

Page 69: Criptografía de Curvas - Uniandes

Los procesadores hacen un ciclo de búsqueda (fetch ) en la memoria del Cog, por lo que es crítica la lectura y escritura del HUB, cuando los programas son muy grandes el modelo de memoria con el que se trabaja originalmente no sirve, y debe acudirse a otros esquemas. El espacio de memoria del HUB es apuntado, como aparece en la expresión que se da continuación: okay := cog := cognew(@getCommand_B, @command_B) + 1 El objeto arranca la maquina de la aritmética en el campo y la expresión que se da a continuación la para: if cog cogstop(cog~ - 1) command_A~ Así se tiene un mecanismo de intercambio de mensajes entre procesadores donde se activan y se desactivan los motores de la aritmética en el campo finito, la variable COG sirve de mecanismo de sincronización, con esta se verifica si el recurso está disponible o no, se debe tener en cuenta que el turno en el modo básico esta de 16 ciclos de reloj. Aunque este método de sincronización por ventanas de tiempo [62], es bastante estable, hay un sacrificio con el ancho de banda bastante significativo, pues para leer del HUB se necesitan de 7 a 22 ciclos de reloj, depende en la posición que se encuentre el COG, en el momento de la transferencia , quiere decir que una vez se sincroniza 16 periodos de reloj después , en ese momento se puede escribir a la memoria del HUB, estos procedimientos se agilizan con rutinas a bajo nivel para leer y escribir la memoria del HUB, con las instrucción RDLONG,WRLONG, se logra esto, a continuación parte del código desarrollado. org getCommand_A rdlong t1_A, par wz ' wait for command if_z jmp #getCommand_A ' no comando ' get_pa ' copy a(z) to An mov offset_A, par ' cargue puntero @ buffer interface add offset_A, #8 ' point to 'a' 'copy a <-- a[] rdlong a0_A, offset_A add offset_A, #4 rdlong a1_A, offset_A add offset_A, #4 rdlong a2_A, offset_A add offset_A, #4 rdlong a3_A, offset_A add offset_A, #4 rdlong a4_A, offset_A

66

Page 70: Criptografía de Curvas - Uniandes

add offset_A, #4 rdlong a5_A, offset_A El verdadero desempeño se logra aprovechando la verdadera arquitectura RISC que posee el P8X32A, a diferencia de otros procesadores en este no existen las interrupciones y no se utiliza una zona de memoria para guardar las dirección del contador de programa convencional, el 4 que aparece en todas las instrucciones son los cuatro bytes de dirección del HUB. La rutina en assembler getCommand_A (ver anexo 2),carga la operación que envía a través de mensajes y hace parte de una zona de memoria en el HUB , con este mecanismo una vez se han arrancado los motores de trabajo para la rutina de aritmética modular, El planificador compara y obtiene el comando de la operación, con esto se apunta a la dirección de memoria correspondiente, para luego iniciar los motores de estas operaciones, después de leer la zona de memoria del HUB Se crea una estructura que siempre va estar verificando el comando que se envía al procesador , el RTOS diseñado aunque muy sencillo barre todas las tareas y adquiere la información, es un sistema ejecutivo cíclico y deterministico. La aritmética del procesador es bastante limitada en el set de instrucciones solo están la operación de suma ADD, substracción SUB, comparación CMP todas en 32 bits, soporta aritmética sin signo, operaciones lógicas básicas y un buen conjunto de instrucciones para desplazamiento, aunque no posea instrucciones de multiplicación y división la arquitectura implementada en el multiplicador tipo “digit serial” se fortalece con todo el conjunto de instrucciones mencionadas anteriormente. Como ejemplo se muestra parte del código del multiplicador. loop_0_A ' shift_C_left shl c0_A, #1 wc mov bit_A, #0 if_c mov bit_A, #1 En el lenguaje nativo los condicionales le dan mayor potencia al igual los bits de satus, pueden seleccionarse o descartarse. En el código anterior se está incluyendo el carry en la instrucción: shl c0_A, #1 wc Uno de los incovenientes cuando se trabaja con esta arquitectura es acostumbrarse a leer y escribir de la memoria del HUB, este proceso se hace efectivo si previamente se pre computan las direcciones del HUB, se arma una tabla para ser consultada. Existen diferentes métodos de manejo para acceder al HUB , en este proyecto se explotaron algunos , se deja a una segunda fase del proyecto ahondar en objetos

67

Page 71: Criptografía de Curvas - Uniandes

para transferir información y crear objetos de lecto-escritura, que agilicen el proceso de intercambio de información. El análisis de una instrucción y la forma de explotar el “pipeline” en el procesador depende del número de ciclos de reloj que gasta una instrucción para el caso del P8X32A es de seis ciclos y su ejecución se muestra a continuación: T0 Fetch T1 Decodificación T2 Fetch de operando “destino” T3 Fetch de operando “fuente” T4 Ejecución T5 Salva el resultado en “destino” Lo que se exploto de esta arquitectura es la forma en que siempre se usa la memoria, pues a la par que se realizan las microinstrucciones mencionadas se realizan otras para optimizar los resultados de “pipeline” en el multiprocesador, pues esto hace que el scheduling y el Rtos se mas efectivos. Entre los mecanismos que posee el procesador están los seguros y semáforos aunque interesantes se reemplazaron por algunos creados en la descripción. Sincronizan en el sistema operativo el acceso al HUB y permiten el intercambio de información, aunque una mejora para asegurar el acceso a la memoria del HUB puede ser usar los recursos que este tiene disponible. La multiplicación escalar se manejo desde un procesador dedicado el cual iniciaba o paraba los motores dedicados a la aritmética en el campo, aunque el algoritmo de Montgomery implementado revisa bit a bit al escalar, el scheduling planteado ayuda a mejorar el desempeño. A continuación se muestra parte del código del procesador que realiza las operaciones de aritmética para curvas elípticas. repeat while ((v=>0)&(v=<5)) '''(v =< 5) '''h++ '''term.dec(v) '''waitcnt( cnt + clkfreq / 8 ) if ( (msk[v] & k[v]) <> 0 ) 'term.out(13) 'term.out("1")'''' Madd_1 Mdouble_1 else 'term.out(13) 'term.out("0")'''' Madd_0 Mdouble_0 ' if ( ++h => 162 ) 'resultados parciales ' seevars_x1z1'''''''''''''' ' repeat'''''''''''''''''''' msk[v] >>=1 if ( msk[v] == 0 )

68

Page 72: Criptografía de Curvas - Uniandes

--v Mxy El algoritmo verifica cada bit del escalar y realiza la operación de suma o doblado, dependiendo del valor del bit, la operación se realiza en coordenadas proyectivas y al final se convierten nuevamente a afines. Después de estudiar las posibles metodologías de paralelizacion del sistema de criptografía, se realizaron varias aproximaciones por divisiones en tiempo, finalmente se diseño un grafo de dependencia entre tareas para la multiplicación escalar el cual se muestra a continuación:

b X1 Z1 X2 Z2 X

*^2

*^2

*^2

-*^2

* ^2

- *

-

X2 Z2X1 Z1 FIGURA 5.7.4.2. GRAFO DE DEPENDENCIA DE TAREAS

La ejecución del algoritmo se implemento con mensajes que comunican tareas, a continuación parte del código desarrollado, utilizando la estrategia de sincronización por mensajes estructura productor consumidor. Se observa inicialmente la transferencia de información, luego se envía el mensaje y se enciende el motor de aritmética la cual se distribuye sobre varios

69

Page 73: Criptografía de Curvas - Uniandes

procesadores, se observa el paralelismo pues mientras un procesador eleva al cuadrado, otro procesador también lo hace o realiza otras operaciones. pri Mdouble_1 b_A[0] := X2[0] b_A[1] := X2[1] b_A[2] := X2[2] b_A[3] := X2[3] b_A[4] := X2[4] b_A[5] := X2[5] command_A := PolySquaring_A ' x2^2 b_B[0] := Z2[0] b_B[1] := Z2[1] b_B[2] := Z2[2] b_B[3] := Z2[3] b_B[4] := Z2[4] b_B[5] := Z2[5] command_B := PolySquaring_B ' z2^2 ' en c_B[] <-- z2^2 Teniendo en cuenta que el trabajo se esta realizando mas en software que en hardware se implemento el algoritmo de López -Dahab y el trabajo de Orlando [62] para el uso de coordenadas proyectivas en la operación de multiplicación escalar. Con esto prácticamente se anula la operación de inversión la cual tiene un costo computacional muy grande, el resto de la paralelizacion se dedica a otros dos procesadores como se describe a continuación. Un procesador se dedica únicamente a la operación de doblado y a medida que realiza la operación se utiliza un queue para la comunicación entre procesadores, existe un mecanismo en el buffer queue para sincronizar el almacenamiento de la información y además que permite la transferencia al procesador de suma, el procesador utilizado no posee un bus de alta velocidad. El procesador dedicado a suma se comunica con el procesador de doblado y obtiene el dato a través de un queue, una vez en la memoria de este se borra el dato del buffer y se continua el proceso con todos los bits en este caso concreto de GF y el algoritmo utilizado es binario, la operación termina cuando el procesador de doblado halla recorrido todos los bits del campo.

)2( 163

Se debe garantizar el tamaño del queue para que acumule un número de puntos óptimo y el espacio en tiempo al otro procesador para sincronizar la información, el tamaño está restringido a la arquitectura empleada, pero puede tomarse un rango mínimo de puntos que tienen directa relación con la ejecución del algoritmo de doblado y suma en cada procesador. El resultado es bastante bueno comparando con otros algoritmos en WSN mencionados en el trabajo relacionado en criptografía de curvas elípticas, al ser un

70

Page 74: Criptografía de Curvas - Uniandes

algoritmo binario el numero de ocurrencias en unos y ceros puede minimizarse teniendo en cuenta métodos de ventanas y códigos de minimización tipo ventana hamming, en el caso de esta implementación el escalar se evaluó puro sin tener en cuenta lo anteriormente mencionado. En este punto se tomo la experiencia única de Sakiyama[64], una de las pocas referencias de trabajo con multiprocesadores para criptografía con curvas elípticas. El algoritmo de scheduling para los ocho procesadores se distribuye de acuerdo a la arquitectura mostrada anteriormente, con técnicas de ILP[65], se genera el scheduling para los ocho procesadores. Para la depuración se aprovecho el recurso disponible en el multiprocesador en cuanto a la generación del color NTSC, para esto se utiliza un COG y se puede configurar en VCFG y VSCL , los cuales permiten hacer un manejo de buena calidad para el video generado. Para realizar la interface humano maquina se utilizaron dos pantallas de TV se realizo una especificación que permitió la visualización de todas la variables y generación de llaves del criptosistema , comprobado con las especificaciones en Matlab y C. .

71

Page 75: Criptografía de Curvas - Uniandes

5.8 Diseño del modelo de computo en el MPSOC 5.8.1 Khan process Networks En la aplicación todos los procesadores están conectados con una estructura de procesamiento estática, esta estructura es homogénea pues sus procesadores son idénticos y además simétrica pues también se comparte la memoria. El modelo de computo planteado es el de “ Khan process networks”[66], que usa memorias FIFO para interconectar los procesadores , en el esquema planteado estas memorias se implementan en el espacio de memoria compartida aunque lo ideal es que sean elementos totalmente independientes y se tenga la conexión entre procesadores. En esta aplicación se consideran concurrentes todos los procesos que intervienen en ella, el modelo de computo toma todos los procesos concurrentes y los comunica a través de memorias FIFO’s. Los procesos concurrentes se tomaron de los procesos que se dan en la especificación, se pueden dividir en aritmética de cuerpo finito, aquí se tienen procesos concurrentes, pues al realizar la paralelizarían de la multiplicación escalar, esta se puede realizar en varios procesadores donde se realizan las siguientes operaciones: multiplicaciones en el campo, elevar al cuadrado, inversión, exponenciación. Al mismo tiempo se están realizando los procesos de comunicación, interface humano maquina, generación aleatoria de números, en cada uno de los casos y según la necesidad el mecanismo de comunicación se realiza por medio de queues. Aunque los niveles de abstracción que se manejan en el desarrollo con el PX832A , a con los procesadores de tensilica el esquema productor consumidor se manejo para el intercambio de información en toda la aplicación, con la arquitectura de memoria compartida que posee el multiprocesador. Aunque lo ideal sería describir desde un lenguaje de alto nivel como C,C++ como lo hace tensilica y otros fabricantes, para el caso de esta aplicación la arquitectura se mapeo a mano y se puso a punto en el entorno de desarrollo creado para la aplicación. Se describen tantas FIFOS como procesadores por comunicar existan, los objetos que corren en cada procesador están diseñados en lenguaje de bajo nivel y la descripción que maneja a la mayoría de procesadores en un lenguaje de alto nivel descrito con anterioridad.

72

Page 76: Criptografía de Curvas - Uniandes

El modelo tiene en cuenta que cada proceso concurrente puede compartir su información, en la grafica 5.8.1 se observa un modelo simplificado.

FIGURA 5.8.1 MODELO SIMPLE DE UNA KPN.

En los modelos con KPN’s, la especificación de cada proceso es secuencial, para el caso de este proyecto criptografía, comunicación, generación de números aleatorios, comunicación, interface humano maquina se están ejecutando concurrentemente. Existen tres primitivas mostradas en el diagrama y las cuales se describen a continuación: Read: Se emplea para comunicación de eventos, lee de la FIFO a traves de la memoria compartida, se sincroniza con un semáforo. Write: Se emplea para comunicar eventos, escribe en la FIFO. Execute : toma los datos de la memoria compartida para asignar al procesador y i activar el motor (engine)19 necesario. Para la especificación se realizo, tuvo en cuenta el caso más crítico está en la aritmética de curvas elípticas, donde se emplea la aritmética de campo finito y se paraleliza toda la operación. Aunque en esta labor y moldeamiento todo está completamente distribuido, y no hay un planificador global, es posible tener una KPN por cada proceso concurrente en el proceso general.

19 Engine denominación de propeller hacia los procesadores del PX832A

73

Page 77: Criptografía de Curvas - Uniandes

En la estructura de memoria hay un factor importante a mencionar, los procesadores comparten recursos con la memoria del HUB, así que la KPN implementada es un hibrido debido a que hay contención con los recursos y el modelo original no tiene este problema. La metodología desarrollada para el criptosistema tuvo en cuenta los siguientes pasos:

• Se utilizan un procesador por cada nodo de la red Khan. • Una FIFO se coloca en cada nodo de la KPN • Se desarrolla un mecanismo de control para las memorias FIFO existentes

en cada nodo de la red, para este diseño el mecanismo es software. • Se define un área de memoria para cada procesador. • El esquema de memoria es memoria compartida donde existen objetos a

compartir local y globalmente por cada procesador. En este caso el mapeo a la plataforma se hizo con la herramienta del multiprocesador en los lenguajes soportados, se siguió el esquema de la pirámide de criptografía, donde se desarrollaron aritmética del campo, aritmética elíptica y protocolos. Definido el software para cada procesador en el entorno y realizada la parte de multiprocesamiento, se asignaron posiciones de memoria para la sincronización de cada proceso como lo requiere el modelo en una KPN. Todos los mecanismos de sincronización de las memorias y procesadores se implementan como servicios en software dentro del multiprocesador, en el anexo 3 hay una descripción detallada del software. De hecho la facilidad impuesta por la arquitectura ya fija es de cierta forma una ventaja, pues el solo mapear la plataforma es una etapa en el diseño bastante complejo, sin mencionar la etapa de depuración y verificación de la aplicación, todo esto redunda en tiempo para el desarrollo de cada fase en el proyecto en general. Para explotar de forma óptima las KPN el nivel de complejidad en la tareas debe descomponerse a forma atómica, para el criptosistema básicamente: operaciones en el campo con diferentes grados de complejidad, siendo la más costosa la inversión. Se realizo una medida en tiempo que fue distribuida en el modelo para realizar las diferentes operaciones en la pirámide, las KPN implementadas tienen el modelo explicado.

74

Page 78: Criptografía de Curvas - Uniandes

5.9 Protocolo de criptografía implementado 5.9.1 Metodo de Menezes –vanstone Este método implementa la generación de claves, la encriptación y des encriptación de los datos, para lo cual requiere.

• Para generar un par de claves (privadas y pública) requiere la generación de un elemento pseudoaleatorio (clave privada d) y su almacenamiento en memoria, luego se realiza el producto dG=Q, siendo G el punto base y Q la clave pública.

• Para encriptar, dos multiplicaciones escalares, en cada una de las cuales se debe generar un elemento pseudoaleatorio; luego implementa una multiplicación en el cambo finito, para lo cual se selecciona en memoria las coordenadas del punto.

• Para desencriptar, requiere dos multiplicaciones escalares por clave privada d, el cálculo de un universo multiplicativo.

Se generan las claves teniendo en cuenta el espacio del campo y sus restricciones, una de las más importantes se debe seleccionar la clave en el intervalo , luego se calculan clave pública y privada, realizando la multiplicación escalar, conocida en términos criptográficos como doble operación en el campo[67].

[ 1,1 −n ]

PuntoivadaPublica PdQ .Pr= El cifrado hace una doble operación en el grupo, como se describe a continuación:

kPC =1 kQC =2

Se calcula la componente en x de la clave 2, como se indica a continuación: [ ]2Cmc = X

Luego se transmite cC ,1

En el descifrado se realiza otra multiplicación escalar en la forma indicada: 1dCR =

Luego se realiza la recuperación del mensaje como se muestra a continuación: [ ][ ]kdPkdPmm =

Con lo cual se recupera el mensaje original y finaliza el proceso de descifrado.

75

Page 79: Criptografía de Curvas - Uniandes

5.10 Comunicación de Datos y control Se utilizo una comunicación estándar entre los dos procesadores , un PC que envía el mensaje a cifrar y otro PC donde se tiene un sniffer para rastrear el criptograma, en este caso se dedico un procesador para realizar la parte de comunicaciones , los parámetros se muestran a continuación

• Tasa de transmisión de 9600 baudios/s • Bit de no paridad • Bit de inicio activo alto • Protocolo RS-232D • Longitud de la palabra de 8 bit

De igual forma se aprovecho la IP, que posee el MPSOC para manejo de video (NTSC). Se empleo como interface humano maquina y de emulación del software de todo el sistema, existe la opción de realizarlo con la pantalla pero en el diseño inicial no se incluyo aunque es bastante sencillo. 5.10.1 Implementación de la etapa de transmisión de datos y HMI El criptoprocesador con su etapa de comunicación, visualización se integran, bajo el modelo que se muestra en la figura 5.9.1

FIGURA 5.9.1. ARQUITECTURA TOTAL DEL SISTEMA

76

Page 80: Criptografía de Curvas - Uniandes

En la grafica se observa la arquitectura general del sistema y finalmente la implementación definitiva, los elementos finales se describen a continuación:

• Una etapa que genera el mensaje desde un PC • Un MPSOC para realizar la parte de cifrado • UN MPSOC para realizar la parte de descifrado • Un sniffer en un PC para observar el criptograma completo • Dos pantallas de TV para depurar todos los pasos de generación e

intercambio de llaves en cada MPSOC. El computador que genera el mensaje esta simulando el envió de información que haría un nodo WSN, al tomar la lectura de una variable, el paso a seguir consiste en enviarle una petición de cifrado al multiprocesador una vez este la recibe empieza el proceso de generación e intercambio de llaves. Adicional se puede verificar el proceso completo con el uso de las interfaces humano maquina que permiten depurar todo el proceso en cada multiprocesador, finalmente el otro computador tiene un sniffer para ver el criptograma completo. 6 RESULTADOS Todos los resultados fueron corroborados con la herramienta de emulación desarrollada para el proyecto. Para este caso se tuvo en cuenta que el cifrado con el Gamal consume un tiempo considerable debido a que utiliza la multiplicación escalar, se utilizaron las recomendaciones de NIST para el proceso de prueba del criptosistema. La mayoría de resultados en WSN se encuentran en segundos debido a los procesadores empleados, en el área netamente de hardware se encuentran en algunos ms y este trabajo estad en la mitad ya que posee algunas limitaciones. En la tabla 2 se presentan los resultados de las operaciones en el campo GF )2( 163

6.1 TIEMPO Y ESPACIO Tal y como se menciono al comienzo del trabajo, el proyecto se desarrollo con el multiprocesador P8X32A, la herramienta de desarrollo utilizada fue propeller tool software v 1.2 y el emulador desarrollado para el proyecto con el que se pudo depurar y probar toda la aplicación.

Operación Tiempo en µs Adición 20 Multiplicación 400 Cuadrado 47 Inversión 4000

Tabla 6.1.1. Resultados operaciones en el campo

77

Page 81: Criptografía de Curvas - Uniandes

Para operaciones en el campo se obtuvieron los resultados que se muestran en la tabla 6.1.1 en tiempo medidos en microsegundos, la operación que más tiempo consume es la inversión. Pero como se menciono el paso de coordenadas afines a proyectivas, requiere de tan solo una inversión, y pore so el impacto en el desarrollo de multiplicación scalar no es notorio. La operación de multiplicación consume también un tiempo considerable debido a la arquitectura poco flexible del multiprocesador, sin embargo se ratifica que en el campo de redes de sensores está bien. Las operaciones de aritmética escalar, como ya se explico se trabajaron con un procesador maestro y tres esclavos encargados de realizar las operaciones en el campo, aunque el cuello de botella sigue siendo las transferencias cuando que hay que realizar para efectuar las diferentes operaciones, los resultados obtenidos están en un rango aceptable en el área de redes de sensores inalámbricos y una mejora esta en mejorar las transferencias a memoria utilizando un COG, y optimizar el acceso a la memoria del HUB en el lenguaje native del procesador. Los resultados obtenidos en la aritmética para curvas elípticas se presentan a continuación en la tabla 6.1.2

Operación Tiempo en µs Adición puntos 1700 Doblado de puntos 1000 Multiplicación Escalar 277100

Tabla 6.1.2. Resultados operaciones aritmética de curvas elípticas La operación de multiplicación escalar tuvo un costo computacional aceptable, comparado con aplicaciones hardware y de procesadores con la aritmética en el chip se puede catalogar esta aplicación en un nivel medio, en la tabla 6.1.3 se hace un comparativo con todas las plataformas que tenían la misma base polinomial y mismo campo. En la tabla 6.1.3 se observa lo siguiente, los resultados espacio – tiempo muestran lo siguiente, se ocupo la capacidad de la memoria en este caso 16k aproximadamente, el tiempo de ejecución que se muestra ahí es el total de tiempo empleado en la operación de la multiplicación escalar . En el proceso de cifrado donde se hace la doble operación en el campo, el costo computacional es de 400 ms. Otro de los resultados interesantes es decir que algunas pequeñas variaciones se puede escalizar este diseño, simplemente adicionando posiciones de memoria en el caso de un campo finito más grande y la mayor aunque no se encontró con que compararla de forma eficiente el desempeño en potencia, el cual se resume a continuación. Numero de procesadores Operación Frecuencia Mhz I(mA)

78

Page 82: Criptografía de Curvas - Uniandes

Cuatro(4) Multiplicación Escalar

12 6

Uno (1) Generación aleatoria

12 1.5

Siete (7) Aplicación total

12 10.5

Uno(1) Modo de espera

0.012 0.006

Ocho(8) Modo especial

0.012 0.024

Tabla 6.1.3 Tabla de consumo de energía

La expresión para calcular la cantidad de corriente consumida es la siguiente: 500 uA por MIPS (MIPS=Freq en MHz/4* Número de Cogs Activos). En el modo de espera se puede trabajar con un reloj de 12 khz lo que hace que el consumo baje de manera significativa, en este modo se estaría esperando la petición para realizar el cifrado, hoy se simula atra vez del puerto serial, pero en la siguiente fase debe ser el nodo quien haga la petición de cifrado para arrancar el proceso de cifrado y posterior descifrado. En la tabla se hace un comparativo en varios escenarios donde se enciende uno o más procesadores para ver Como resultado adicional cabe hacer notar que para este proyecto se dedico un procesador a la generación de números pseudoaleatorios, se está realizando en todo instante del tiempo, lo que favorece el desempeño pues la generación de los números es casi inmediata solo depende de la transferencia que hay que hacer para tener un recurso compartido. La posibilidad de tener una interface humano máquina para todo el proceso de generación de llaves y demás es una ventaja que brinda el multiprocesador, para el desarrollo del proyecto se diseño una herramienta de emulación que permitió hacerle un buen seguimiento a todos las operaciones de la pirámide criptográfica, esto debido a que la herramienta proporcionada por el fabricante no permite simular ni m emular, la herramienta solo permita compilar y transferí el archivo ejecutable.

79

Page 83: Criptografía de Curvas - Uniandes

Referencia Tecnología/ FPGA

Fmax [Mhz]

Area [Slices/Gat

es]

Campo Galois

Polinomio irreducible

Desempeño [µsec]

Comentarios

ECC 393 Kgates GF(2163)

Arbitrario 70 / 54

CONFIG-I (α=6) 6-MALU 97X12 + 6-RF 97X32

292

244 kgates GF(2163)

Arbitrario

76 / 54

CONFIG-II (α=6)

6-MALU 97X12 + 6-RF 97X16

[31]

0.13 -µm CMOS

500

115 Kgates

GF(2163) X163+x1+x6+x3+1

38 / 29 4-MALU 163X12 + RF 163X16

90 Kgates2 209 / - Multiplicador ,divisor, cuadrado

[29] 0.13 -µm CMOS

416.7

113 Kgates2

GF(2163) Arbitrario

- / 30 Dos multiplicadores divisor y cuadrado

[15] 0.13 -µm CMOS

510.2 117.5 Kgates

GF(2163) Arbitrario 190 / - soporta GF(p) multiplicador 64 –bit x 64 bit

GF(2163)

Arbitrario

- / 300

[30] Virtex-E (xcv2000E-7)

66.4 10.34 Slices +

GF(2163)

Fijo

- / 140

Multiplicador , divisor, cuadrado

tamaño 255

233 / - [32]

Virtex-E

(xcv2000E)

66

5.009 Slices+

GF(2163)

X163+x1+x6+x3+1 75 / - Curvas de Koblitz

[32] EP2A70B724C47

82.43 110 GF(2163)

Fijo 819 Univalle

[PAX] PAX-270 500 N:D GF(2163)

Fijo 4074 Implementacion software

[pentium4] Pentium 4 3000 N.D GF(2163)

Fijo 177 Implementacion Software

WSNUA Propeller 80 16200 GF(2163) Fijo 277000 Implementacion Software WSN UNIANDES

[9] Atmega 128 12 34432 GF(2163) Fijo 34000000 Implementacion Software WSN

[10] Atmega 128 12 11592 GF(2163) Fijo 13900000 Implementacion Software WSN

[11] MPS430 12 NA GF(2163) Fijo 4240000 Implementacion Software WSN

[12]

MICA2 ND20 32.4 GF(2163) Fijo 2160000 Implementacion Software WSN

[12] TMOTE SKY ND 32.1 GF(2163) Fijo 1040000 Implementacion Software WSN

Tabla 6.1.3 Implementaciones en el campo

20 ND information no disponible

80

Page 84: Criptografía de Curvas - Uniandes

7 CONCLUSIONES Y TRABAJO FUTURO En este trabajo se presenta el diseño de un criptosistema de clave público basado en curvas elípticas y desarrolladas en un entorno multiprocesador. El criptosistema realiza operaciones en el campo usando bases polinomiales, además utiliza el método de López-dahab, adicionalmente se utiliza un modelo de computo basado en Khan Process Networks el cual utiliza queues para el intercambio de información, en el contexto se encuentran a lo sumo dos referencias del mismo autor en cuanto a desarrollos en multiprocesadores.

)2( 163GF

Se logra poner a punto una plataforma MPSOC aunque pequeña es bastante eficiente, arquitectura del multiprocesador es bastante limitada pero se logro poner a punto el sistema en el entorno de multiprocesamiento y aunque los trabajos de hardware superan significativamente el trabajo, en el desarrollo realizado se abren muchas posibilidades en cuanto a criptografía por curvas elípticas no solo en el campo WSN sino en otros donde la portabilidad de un criptosistema juegue un papel importante. El procesador se desarrollo en el lenguaje nativo del multiprocesador puesto que es ahí donde se obtiene mayor eficiencia, aunque presenta un buen desempeño en el área WSN en otras áreas no lo seria, esto debido a las limitaciones y arquitectura del dispositivo. La implementación multiprocesada de la multiplicación escalar evidencia un muy buen desempeño, son implementados en el entorno y se refuerzan con el modelo de computo. Los niveles de encripcion y operaciones de cifrado y descifrado se realizan en un alto nivel lo que le resta desempeño a la aplicación. Los dispositivo inalámbricos están en auge y cada día son más susceptibles de ataques, la seguridad que proporcionan las curvas elípticas, cada día toma más adeptos, lo que permitiría en el campo de redes de sensores generar nuevas estrategias para consolidar nuevas aplicaciones, que incorporen seguridad al sistema, la viabilidad de aplicación es total y el siguiente paso es incorporar el criptosistema a una red WSN. El entorno multiprocesador utilizado es ideal para la aplicación por las razones expuestas anteriormente, pero debe buscarse la opción de un verdadero entorno para el multiprocesamiento donde se exploten otro tipo de bases y campos y además exista la posibilidad de escalar el sistema. El trabajo futuro se puede resumir en los siguientes ítems:

81

Page 85: Criptografía de Curvas - Uniandes

Integrar el criptoprocesador a un nodo WSN y realizar pruebas en un ambiente, primero académico y luego real. Hacer un desarrollo que mejore el desempeño de la aritmética dedicando otro procesador (COG) a las transferencias de información. Implementar métodos de aceleramiento tipo “Halving” en el sistema para incrementar el desempeño en la multiplicación escalar. Explorar la posibilidad de otras bases en el entorno multiprocesador, Gaussiana, primos. En este diseño se cifro y descifro únicamente, valdría la pena realizar un estudio y posterior implementación de la parte superior de la pirámide, ejemplo intercambio firma digital. Combinaciones que agilicen el proceso se deben tener en cuenta y una de ellas es, dedicar un COG a realizar el proceso de AES y realizar algún proceso de ECC con el resto de procesadores. Explorar la posibilidad de otros algoritmos con otros modelos de cómputo, ejemplo CSP21 y otros. Sería de gran utilidad realizar un estudio y posterior implementación en Identity Based el nuevo paradigma en criptografía de clave pública y al parecer el futuro en esta área de la criptografía debido a los posible ataques por suplantación que puede haber cuando se trabaja con el esquema de hoy. En los dos últimos años han aparecido nuevas curvas y nuevas metodologías que vale la pena estudiar y desarrollar.

21 CSP Comunicatting sequential programs

82

Page 86: Criptografía de Curvas - Uniandes

REFERENCIAS [1] I. F. Akyildiz, W. Su, Y. Sankarasubramaniam, E. Cayirci (2002). Wireless sensor networks: a survey. Computer Networks: The International Journal of Computer and Telecommunications Networking, vol. 38, no. 4, pp. 393-422, March 2002. [2] Crossbow Technology, Inc. Wireless Measurement Systems. http://www.xbow.com[3] Moteiv Corporation. http://www.moteiv.com[4] I. Blake, G. Seroussi, N. P. Smart. Elliptic Curves in Cryptography. Cambridge University Press, ISBN 0-521-65374-6, 2000. [5] Darrel Hankerson, Alfred J. Menezes, and Scott Vanstone. Guide to Elliptic Curve Cryptography. Springer-Verlag New York, Inc., Secaucus, NJ, USA, 2003. [6] Tensilica inc http://www.tensilica.com/[7] Parallax inc, Propeller information desponible en http://www.parallax.com/Default.aspx?tabid=407. [8] A public cryptosystem based on the generated data in extension set Kaiquan Shi; Yo-Ping Huang; Systems, Man, and Cybernetics, 2001 IEEE International Conference on Volume 1, 7-10 Oct. 2001 Page(s):18 - 23 vol.1 [9] mproved group signature scheme based on discrete logarithm problem [comment and reply]Hung-Min Sun; Yuh-Min Tseng; Jinn-Ke Jan;Electronics Letters Volume 35, Issue 16, 5 Aug. 1999 Page(s):1323 – 1325 [10] An implementation of ElGamal elliptic curves cryptosystems Sutikno, S.; Surya, A.; Effendi, R.; Circuits and Systems, 1998. IEEE APCCAS 1998. The 1998 IEEE Asia-Pacific Conference on 24-27 Nov. 1998 Page(s):483 - 486 [11 ]Elliptic Curve Cryptography Engineering Cilardo, A.; Coppolino, L.; Mazzocca, N.; Romano, L.; Proceedings of the IEEE Volume 94, Issue 2, Feb. 2006 Page(s):395 – 406. [12] Design of a New Security Protocol Chahar, R.K.; Datta, G.; Rajpal, N.; Conference on Computational Intelligence and Multimedia Applications, 2007. International onference on Volume 4, 13-15 Dec. 2007 Page(s):132 – 13. [13] An Elliptic Curve Cryptography Coprocessor over GF(2m) on a Low-Cost Embedded System Zhao, Hui; Wang, Long; Bai, Guo-Qiang; Electron Devices and Semiconductor Technology, 2007. EDST 2007. Proceeding of 2007 International Workshop on 3-4 June 2007 Page(s):190 – 193. [14] A Component-Based Design Environment for ESL Design Schaumont, P.; Verbauwhede, I.; Design & Test of Computers, IEEE Volume 23, Issue 5, May 2006 Page(s):338 – 347. [15] A Platform-Based Taxonomy for ESL Design Densmore, D.; Passerone, R.; Design & Test of Computers, IEEE Volume 23, Issue 5, May 2006 Page(s):359 – 374.

83

Page 87: Criptografía de Curvas - Uniandes

[16] Bacchini, F.; Smith, G.; Hosseini, A.; Parikh, A.; Chin, H.T.; Urard, P.; Girczyc, E.; Bloch, S.;Building a common ESL design and verification methodology - is it just a dream? Design Automation Conference, 2006 43rd ACM/IEEE 24-28 July 2006 Page(s):370 – 371 [17] Schlebusch, H.-J.;SystemC based hardware synthesis becomes reality Euromicro Conference, 2000. Proceedings of the 26th,Volume 1, 5-7 Sept. 2000 Page(s):434 vol.1 [18] Martin, G.;SystemC: from language to applications, from tools to methodologies Integrated Circuits and Systems Design, 2003. SBCCI 2003. Proceedings. 16th Symposium on 8-11 Sept. 2003 Page(s):3 [19] Namballa, R.; Ranganathan, N.; Ejnioui, A.Control and data flow graph extraction for high-level synthesis;VLSI, 2004. Proceedings. IEEE Computer society Annual Symposium on 19-20 Feb. 2004 Page(s):187 – 192 [20] Nikhil, R.;Bluespec System Verilog: efficient, correct RTL from high level specifications Formal Methods and Models for Co-Design, 2004. MEMOCODE '04. Proceedings. Second ACM and IEEE International Conference on 23-25 June 2004 Page(s):69 – 70 [21] Hattori, T.;Challenges for Low-power Embedded SOC's VLSI Design, Automation and Test, 2007. VLSI-DAT 2007. International Symposium on 25-27 April 2007 Page(s):1 – 4. [22] Wallner, S.;Design methodology of a configurable system-on-chip architecture Field-Programmable Custom Computing Machines, 2004. FCCM 2004. 12th Annual IEEE Symposium on 20-23 April 2004 Page(s):283 - 284 [23] Martin, G.;Overview of the MPSoC design challenge Design Automation Conference, 2006 43rd ACM/IEEE 24-28 July 2006 Page(s):274 – 279 [24] Loghi, M.; Poncino, M.; Exploring energy/performance tradeoffs in shared memory MPSoCs: snoop-based cache coherence vs. software solutions Design, Automation and Test in Europe, 2005. Proceedings,005 Page(s):508 - 513 Vol. 1. [25] Jiang Xu; Wolf, W.; Henkel, J.; Chakradhar, S.; A methodology for design, modeling, and analysis of networks-on-chip Circuits and Systems, 2005. ISCAS 2005. IEEE International Symposium on 23-26 May 2005 Page(s):1778 - 1781 Vol. 2. [26] Youngmin Yi; Dohyung Kim; Soonhoi Ha; Fast and Accurate Cosimulation of MPSoC Using Trace-Driven Virtual Synchronization Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on Volume 26, Issue 12, Dec. 2007 Page(s):2186 – 2200. [27 ] Sutikno, S.; Surya, A.; An architecture of F(22N) multiplier for elliptic curves cryptosystem Circuits and Systems, 2000. Proceedings. ISCAS 2000 Geneva. The 2000 IEEE International Symposium on Volume 1, 28-31 May 2000 Page(s):279 - 282 vol.1 Digital Object Identifier 10.1109/ISCAS.2000.857084. [28] Al-Somani, T.F.; Amin, A.; High performance elliptic curve point operations with pipelined GF(2m) field multiplier Computer Systems and Applications, 2008. AICCSA 2008. IEEE/ACS International Conference on March 31 2008-April 4 2008 Page(s):82 – 88.

84

Page 88: Criptografía de Curvas - Uniandes

[29] Ehtiba, F.O.; Samsudin, A.; Multiplication and exponentiation of big integers with hybrid Montgomery and distributed Karatsuba algorithm Information and Communication Technologies: From Theory to Applications, 2004. Proceedings. 2004 International Conference on 19-23 April 2004 Page(s):421 – 422. [30] Batina, L.; Mentens, N.; Ors, S.B.; Preneel, B.;Serial multiplier architectures over GF(2/sup n/) for elliptic curve cryptosystems Electrotechnical Conference, 2004. MELECON 2004. Proceedings of the 12th IEEE Mediterranean Volume 2, 12-15 May 2004 Page(s):779 - 782 Vol.2. [31] Jin Park; Jeong-Tae Hwang; Young-Chul Kim;FPGA and ASIC mplementation of ECC processor for security on medical embedded system, Information Technology and Applications, 2005. ICITA 2005. Third International Conference on, Volume 2, 4-7 July 2005 Page(s):547 - 551 vol.2. [32] Fong, K.; Hankerson, D.; Lopez, J.; Menezes, A.; Field inversion and point halving revisited Computers, IEEE Transactions on Volume 53, Issue 8, Aug. 2004 . Page(s):1047 - 1059 Digital Object Identifier 10.1109/TC.2004.43. [33] T. Itoh y S.Tsujii, “ A fast algorithm for computing multiplicative inverses in

GF using normal bases”, Information and computation,1988. )2( m

[34] Knuth, D.E. : “The art of computer programming, vol.II: Seminumerical algorithms”, (Adison-Wesley, MA, 1969). [35]J. Lopez and R. Dahab. Improved algorithms for elliptic curve arithmetic in GF(2n). Technical Report IC-98-39, Relat´orio T´ecnico, October 1998. [36 ] P. Montgomery: Speeding the Pollard and elliptic curve methods of factorization. Mathematics of Computation, Vol. 48. (1987) 243–264 Referencias Propeller [37] R. Kannan and S. Wei, ”Approximation Algorithms for Power-Aware Scheduling of Wireless Sensor Networks with Rate and Duty-Cycle Constraints”, Distributed Computing in Sensor Systems (DCOSS 06), 2006, [38] Zhu, S., Setia, S., and Jajodia, S. 2003. Leap: Efficient security mechanisms for large-scale distributed sensor networks. In 10th ACM Conference on Computer and Communications Security (CCS ’03). [39] T. Stefanov , C.Zissulescu, A. Turjen B. Kienhuis, E.Depretterre, “ System design using Kahn Process Networks: the Compaan/Laura approach”, in proceedings of the design, automation and test in Europe conference and exhibition (DATE’ 04). [40] [14] Celoxica inc http://www.celoxica.com/[41] Bluespec inc http://www.bluespec.com/[42] Metropolis: design environment for hetregenous systems. http://www.gigascale.org/metropolis/[43] Arc inc. http://www.arc.com/[44] CoWare inc http://www.coware.com/[45] Tensilica inc http://www.tensilica.com/

85

Page 89: Criptografía de Curvas - Uniandes

[46] Arvind, et, al, RAMP : Research accelerator for multiple processors –A comunity vision for a shared experimental HW/SW platform ,Technical report UCB/CSD 05-1412 september 2005. [47] Librería Miracl disponible en: http://www.shamus.ie/index.php?page=Downloads[48] J.M . Masgonty et al., “ Low power design of an embedded miroprocessor core.” In proceedings of the european solid state circuits conference 96,pp 17-19,september 1996. [49] von zur Gathen, J.; Shokrollahi, J.; Fast arithmetic for polynomials over F2in hardware ,Information Theory Workshop, 2006. ITW '06 Punta del Este. IEEE,13-17 March 2006 Page(s):107 – 111. [50] Truong, T.K.; Reed, I.S.; Shih, M.T.; Efficient multiplication algorithm over the finite fields GF(q/sup m/) where q=3, 5,Computers and Digital Techniques, IEE Proceedings -Volume 140, Issue 2, Mar 1993 Page(s):92 – 94. [51] Kaliski, B.S., Jr.; The Montgomery inverse and its applications,Computers, IEEE Transactions on Volume 44, Issue 8, Aug. 1995 Page(s):1064 – 1065 [52] J. Lopez , R. Dahab, “Fast multiplication on elliptic curves over GF(2n) without precomputation”, Cryptographic hardware and embedded systems- CHES`99, LNCS 1717, 1999, 316-327. [53] T. Itoh y S.Tsujii, “ A fast algorithm for computing multiplicative inverses in GF using normal bases”, Information and computation,1988. )2( m

[54] Joseph, G.; Penzhorn, W.T.; High-speed algorithms for public-key cryptosystems, AFRICON, 2004. 7th AFRICON Conference in Africa,Volume 2, 2004 Page(s):945 - 951 Vol.2 [55] Kamala, R.V.; Srinivas, M.B.; Modified Montgomery Modular Inversion with Reduced Number of Multiplications, TENCON 2006. 2006 IEEE Region 10 Conference 14-17 Nov. 2006 Page(s):1 – 4 [56]Loghi, M.; Poncino, M.; Exploring energy/performance tradeoffs in shared memory MPSoCs: snoop-based cache coherence vs. software solutions, Design, Automation and Test in Europe, 2005. Proceedings 2005 page(s):508 - 513 Vol [57] K. Sakiyama, E. De Mulder, B. Preneel, and I. Verbauwhede, "A Parallel Processing Hardware Architecture For Elliptic Curve Cryptosystems", Proceedings of ICASSP, Vol. 3, 2006, pp. 904-907. [58] Coskun, A.K.; Rosing, T.S.; Whisnant, K.A.; Gross, K.C.; Temperature-aware MPSoC scheduling for reducing hot spots and gradients ,Design Automation Conference, 2008. ASPDAC 2008. Asia and South Pacific, 21-24 March 2008 Page(s):49 – 54 [59] Medardoni, S.; Ruggiero, M.; Bertozzi, D.; Benini, L.; Strano, G.; Pistritto, C.;capturing the interaction of the communication, memory and I/O subsystems in memory-centric industrial MPSoC platforms,Design, Automation & Test in Europe Conference & Exhibition, 2007. DATE '07 16-20 April 2007 Page(s):1 – 6 [60] Flake, P.; Davidmann, S.; Schirrmeister, F.; System-level exploration tools for MPSoC designs Design Automation Conference, 2006 43rd ACM/IEEE, 24-28 July 2006 Page(s):286 – 287

86

Page 90: Criptografía de Curvas - Uniandes

[61] Kumar, A.; Fernando, S.; Yajun Ha; Mesman, B.; Corporaal, H.; Multi-Processor System-Level Synthesis for Multiple Applications on Platform FPGA Field Programmable Logic and Applications, 2007. FPL 2007. International Conference on 27-29 Aug. 2007 Page(s):92 – 97-62 [62] Masaharu Imai,; System level design methodologies in the multi-processor SoC era Computer Engineering & Systems, 2007. ICCES '07. International Conference on 27-29 Nov. 2007 Page(s):xix – xx [63] G. Orlando. “Efficient elliptic curve processor architectures for field programmable logic”. Tesis, Worcester Polytechnic Logic, 2002. [64] Hu Yue-li; Ding Qian; Design of an architecture for multiprocessor system-on-chip (MPSoC) High Density Microsystem Design and Packaging and Component Failure Analysis, 2006. HDP'06. Conference on 2006 Page(s):63 – 66 [65] Richter, K.; Racu, R.; Ernst, R.;Scheduling analysis integration for heterogeneous multiprocessor SoC Real-Time Systems Symposium, 2003. RTSS 2003. 24th IEEE,2003 Page(s):236 – 245. [66] Dulloo ,J.Marquet,” Design of a Real-Time Scheduler for Kahn Process Networks on Multiprocessor Systems”, Rapport LIFL, sepetember 2006. [67] Chang-Soo Ha; Joo-Hong Kim; Byeong-Yoon Choi; Jong-Hyoung Lee; Ho-Won Kim, GF(2191) Elliptic Curve Processor using Montgomery Ladder and High Speed Finite Field Arithmetic,Unit;TENCON 2005 2005 IEEE Region 10

87

Page 91: Criptografía de Curvas - Uniandes

Anexos Anexo 1. Código MPSOC prueba curvas elípticas: Carpeta 1 CD anexo nombrada codigo1 Anexo 2 Código MPSOC Cifrador Carpeta 2 CD anexo nombrada codigo2 Anexo 3 Código MPSOC Descifrador Carpeta 3 CD anexo nombrada codigo3 Anexo 4. Descripción en lenguaje C Carpeta 4 CD anexo nombrada codigo4 Realizado en Borland Bulider 6 Tiene un .BAT pata imprimir todos los resutados obtenidos con el MPSOC para cifrar y descifrar. Anexo 6 Descripción en Matlab (Librería de curvas elípticas) Carpeta 5 CD Nombrada codigo5 Anexo 7 Diseño PCB y esquemático de la plataforma Carpeta 6 CD Nombrada PCB&Esquematicos Anexo 8 Parámetros NIST utilizados para la implementación, curva no sipersingular y una base polinomial B-163.

Curva B-163

r = 5846006549323611672814742442876390689256843201587

Base polinomial:

b = 2 0a601907 b8c953ca 1481eb10 512f7874 4a3205fd

G x = 3 f0eba162 86a2d57e a0991168 d4994637 e8343e36

88

Page 92: Criptografía de Curvas - Uniandes

G y = 0 d51fbc6c 71a0094f a2cdd545 b11c5c0c 797324f1

89