Descargar

Tecnicas para la actualizacion de implementaciones de protocolos y mecanismos criptograficos para Tinyos


    Resumen

    Actualmente existe un incremento del numero de aplicaciones de las WSN y con ello surgen teorias e implementaciones de esquemas de seguridad para este tipo de redes. Este trabajo analiza dichas implementaciones y consecuentemente ofrece un conjunto de tecnicas que permiten su actualizacion o adaptacion descendente en las versiones del sistema operativo para sensores TinyOS.

    Abstract At present there is an increase in the number of WSN applications, which leads to the making of new theories and implementations of security schemes for this kind of networks. This paper analyzes these implementations and accordingly offers techniques that allow its update or descending adaptation on the versions of the operating system for sensors TinyOS.

    Palabras claves: redes inalambricas de sensores, seguridad, implementaciones, actualizacion de implementaciones

    Keywords: wireless sensor network, security, implementations, implementations update

    1. Introduccion

    Despues de iniciadas a finales de los años 90, las Redes Inalambricas de Sensores (WSN) han evolucionado hasta convertirse en una solucion tecnologica viable, implementada por diversas organizaciones. De modo general, este tipo de redes encuentra aplicacion en escenarios con problemas de monitorizacion, rastreo y control (monitorizacion ambiental e industrial, rastreo de posicion[1], control de la carga electrica en areas residenciales, etc). Dentro de las WSN se han realizado varias investigaciones con el objetivo de proporcionales servicios de seguridad. A pesar del reto que esto significa debido a las caracteristicas naturales de este tipo de redes (limitaciones de los recursos del hardware de los nodos y comunicacion inalambrica entre estos) estas investigaciones han dado lugar a varios protocolos de seguridad, entre los que podemos encontrar: Sistemas de Distribucion de Claves, Criptografia de Clave Publica y Sistemas de Deteccion de Intrusos, entre otros. No obstante, pocos de estos protocolos han sido llevado a la practica y algunas de esas implementaciones no funcionan sobre las versiones mas recientes de los sistemas operativos para sensores. Ademas, no se dispone de una documentacion que facilite el uso o actualizacion de estos protocolos.

    El proposito de este trabajo es, en primer lugar, documentar las implementaciones de Protocolos y Mecanismos de Seguridad (PMS) existentes para el sistema operativo para sensores TinyOS [2]. Por tanto, se estudiara a cabalidad, desde las generalidades hasta los detalles de cada aplicacion disponible que implemente un PMS para TinyOS. Dicha documentacion sera usada con el fin de crear un conjunto de tecnicas recomendadas para a la hora diseñar o actualizar estos protocolos. El segundo proposito de este trabajo es validar la utilidad de estas tecnicas recomendadas en la actualizacion de uno de una de las aplicaciones estudiadas. Por consiguiente, se muestran los detalles de las modificaciones realizadas al protocolo y los resultados en la puesta en practica de su actualizacion. Finalmente se hace una comparacion de los resultados obtenidos.

    2. Antecedentes

    En la presente seccion abordaremos algunos trabajos previos de los que veremos sus objetivos, resultados y relacion con este trabajo. Estos y otros como [3], [4], [5] y [6] evidencian la importancia del desarrollo e implementacion de mecanismos criptograficos sobre estas redes. Posteriormente en las Conclusiones (Seccion 5 en la pagina 16) se compararan nuestros resultados con los obtenidos en trabajos anteriores.

    Wireless Sensor Network Security: A Survey [7]

    Este trabajo fue realizado en el año 2006 por John P. Walters, Zhengqiang Liang, Weisong Shi y Vipin Chaudhary de la Universidad Estatal de Wayne, en el se hace un analisis profundo de los cuatro asuntos de mayor importancia en el tema de la seguridad en redes de sensores. Primeramente se analizaron los obstaculos con los que nos encontramos cuando pretendemos implementar seguridad para estas redes, es decir, limitacion de recursos y comunicacion de manera insegura, entre otros. Luego se estudiaron los requisitos de seguridad que seria necesario satisfacer, se mostraron los ataques mas comunes sobre este tipo de redes y finalmente se brindan medidas de defensa contra estos ataques.

    El estudio de este trabajo nos permitio identificar los ataques y medidas de seguridad de mayor importancia en las WSN. Luego, partiendo de esto, enfocar las implementaciones que dan soporte a estas medidas de seguridad. Estas implementaciones seran descritas en la seccion 4.2 en la pagina siguiente y en la seccion 4.4 en la pagina 14 se estudiara una de las que tiene como objetivo la distribucion de claves.

    Analysis of Security Threats, Requirements, Technologies and Standards in Wireless Sensor Networks [8] En el año 2009 Javier Lopez, Rodrigo Roman y Cristina Alcaraz de la Universidad de Malaga en España, publicaron este articulo que tiene como objetivo primario evidenciar la relacion entre el contexto de la aplicacion para la WSN, sus requerimientos y mecanismos de seguridad empleados. Ademas, se analizan algunos estandares de seguridad que tienen en cuenta esta relacion.

    Este trabajo presenta inicialmente de forma clara y amena conceptos fundamentales acerca de los sensores, las redes de sensores, amenazas y tecnologias de seguridad. A pesar de no ser este su tema esencial, nos sirvio para fomentar una base sobre el tema de la seguridad en estas redes. Posteriormente en la parte de este trabajo dedicada a la actualizacion de una aplicacion que implementa seguridad sobre una red, se tiene en cuenta el aporte de este trabajo.

    Implementaciones de algoritmos de seguridad En la actualidad existen varias implementaciones libres de algoritmos de seguridad, estas han estado motivadas por las amenazas demostradas en trabajos como los mencionados anteriormente. Varios de estos han sido sido llevados a la practica con resultados positivos [9] [10] y otros han servido de base al desarrollo de investigaciones posteriores. El cuadro 1 enumera y referencia cronologicamente las implementaciones de mecanismos de seguridad analizadas en este trabajo. Estas implementaciones son tratadas en detalles en la seccion 4.2 en la pagina siguiente.

    Cuadro 1. Implementaciones de mecanismos de seguridad

    Año

    Nombre

    Objetivo

    Version de TinyOS

    Referencia

    2005

    2005 2007

    2010

    2010

    2010

    2010

    TinyKeyMan

    TinyECC AES Triviun MMH Poly

    Distribucion simetrica de claves

    Distribucion publica de claves

    Cifrado por bloques

    Cifrado continuo

    Funcion Hash (Autenticidad) Funcion Hash (Autenticidad)

    1.x

    1.1.11

    2.x

    2.x

    2.x

    2.x

    [9]

    [10] [11]

    [11] [12] [11] [13] [11] [14]

    3. Descripcion del problema

    Se pretende compilar las implementaciones existentes de los protocolos de seguridad para TinyOS, de tal forma que se disponga de una documentacion que permita el uso de dichas implementaciones.

    Ademas, se estudia y proporciona un conjunto de "tecnicas recomendadas" que permitan actualizar aquellas implementaciones que no funcionen en la version mas reciente del sistema operativo para sensores TinyOS. Estas "tecnicas recomendadas" se utilizaran en la actualizacion de alguna implementacion, o en la creacion de una nueva implementacion de algun mecanismo especialmente importante que no haya sido implementado.

    4. Detalles de la propuesta

    En la presente seccion se abordaran los detalles de nuestra propuesta; comenzando por la tecnologia utilizada para la simulacion y modificacion de las implementaciones. Luego se describen brevemente las implementaciones compiladas, enfatizando en sus objetivos y funcionamiento. Posteriormente se expone un conjunto de tecnicas recomendadas para actualizar una implementacion y luego, estas tecnicas son usadas en la actualizacion de uno de los PMS descritos en la seccion 4.2. Finalmente se realiza un analisis comparativo de los resultados del trabajo con otros similares.

    4.1. Tecnologia Utilizada

    Teniendo en cuenta los objetivos propuestos abordados en la introduccion y la formulacion del problema; se hicieron necesarias herramientas para trabajar sobre el codigo de las implementaciones de PMS desarrolladas para TinyOS.

    TinyOS es probablemente el sistema operativo para sensores mas usado en la actualidad. Este sigue un modelo de programacion orientado a eventos y es escrito completamente en lenguaje nesC [15]. Dicho lenguaje es una extension del lenguaje C [16] que incorpora su sintaxis y permite ademas la Programacion Orientada a Componentes [17].

    Debido a que el manejo del lenguaje nesC fue fundamental para desarrollar este trabajo, la tecnologia seleccionada tuvo dos objetivos principales; en primer lugar la edicion y depuracion del codigo nesC de las implementaciones de PMS y en segundo lugar la simulacion de estas implementaciones. Por consiguiente, se usaron editores de codigo nesC que permitieran ademas la depuracion y se utilizo un simulador de TinyOS para Microsoft Windows. Cada una de estas herramientas es descrita a continuacion.

    4.1.1. Edicion y depuracion de codigo nesC NESCDT [18] es un plugin para la plataforma Eclipse SDK que permite la edicion de codigo nesC. Realiza completacion automatica de codigo y resalto de la sintaxis. Ademas identifica graficamente tipos de archivos (interfaces, componentes y modulos) de un proyecto en nesC.

    Otro editor usado fue Yeti 2 [19]. Este cuenta con las mismas ventajas de NESCDT, ademas de otras como: validacion en tiempo real, navegacion por medio de vinculos a traves de declaraciones, creacion de grafico de componentes, depuraracion y compilacion 1 . La figura 1 en la pagina siguiente muestra un ejemplo de la edicion de un codigo en nesC sobre Yeti 2.

    4.1.2. Simulador de TinyOS para Windows Normalmente la simulacion de TinyOS se hace sobre el sistema operativo Linux. Los desarrolladores de este simulador distribuyen paquetes RPM que instalan las herramientas necesarias para la simulacion. Ademas distribuyen paquetes para un simulador de Linux sobre Windows conocido como CygWin [21].

    Para la simulacion de las implementaciones de PMS se usaron los Paquetes de TinyOS para CygWin disponibles en [22]. Fueron instaladas conjuntamente las versiones 1.1.15 y 2.0.2 de TinyOS. La figura 2 en la pagina siguiente muestra la compilacion paralela de dos aplicaciones para versiones distintas de TinyOS.

    4.2. Implementaciones Existentes de Protocolos y Mecanismos de Seguridad

    Asuntos como la Autenticacion y la Administracion de Claves son criticos dentro de la seguridad en una red de sensores. Debido a las restricciones de hardware de sus nodos no es possible el uso de

    edu.red

    Figura 1. Edicion de codigo nesC sobre Yeti 2

    edu.red

    Figura 2. Versiones 1.1.15 y 2.0.2 de TinyOS instaladas conjuntamente

    Los esquemas tradicionales de seguridad como la Criptografia de Clave Publica (PKC) o un Centro de Distribucion de Claves (KDC). Debido a esto han surgido varias propuestas que intentan proveer esquemas de seguridad para este tipo especial de redes, aunque no todas han sido llevadas a la practica, se dispone actualmente de varias implementaciones basadas en estos esquemas.

    A continuacion analizaremos algunas de las implementaciones disponibles en la actualidad de PMS para redes de sensores. De cada una de estas veremos sus objetivos y version de TinyOS para la que fue diseñada, describiremos su funcionamiento y en caso de ser necesario, se expondra la estructura de la implementacion con sus componentes e interfaces.

    4.2.1. Algoritmos de cifrado y autenticidad para TinyOS

    Sylvain Pelissier del Ecole Polytechnique Federale de Lausanne ha desarrollado varias implementaciones de algoritmos criptograficos para TinyOS 2.x. Como resultado de esto ha obtenido las interfaces descritas a continuacion y los componentes que las implementan, ademas para cada una de estas la autora proporciona aplicaciones de ejemplo [11].

    AES Esta interfaz implementa una version del Algoritmo de Cifrado Estandar [23] para la codificacion por bloques, esta define los siguientes comandos: encrypt para cifrar un bloque de texto plano, decrypt descifra un bloque de texto (criptograma) y keyExpansion calcula la clave extendida por medio de un algoritmo de planificacion; dicha clave extendida depende de la secreta conocida por el cliente y es utilizada para el cifrado y descifrado de los bloques.

    Para el uso correcto de esta interfaz debe inicialmente contarse con una clave secreta. Esta pudiera obtenerse de los mecanismos descritos en las secciones 4.2.2 y 4.2.3 y partiendo de ella debe generarse la clave extendida mediante el comando keyExpansion, luego usar esta en la codificacion y decodificacion de los bloques con los comandos correspondientes. La figura 3 muestra el diagrama de componentes basico de una aplicacion que usa la interfaz AES, y la figura 4 muestra el resultado de la codificacion de 2 bloques de 16 bytes cada uno.

    edu.red

    Figura 3. Diagrama de componentes de una aplicacion que usa AES

    edu.red

    Figura 4. Resultado de la codificacion con AES

    Trivium Esta interfaz proporciona comandos para el cifrado continuo basandose en el metodo Trivium [12]. Dicha interfaz cuenta con tres comandos: gen keystream para generar bytes aleatorios que seran usados conjuntamente con el texto plano o el criptograma como entrada de una funcion XOR [24], el segundo comando se nombra key init y es usado para la inicializacion de la clave y del Vector de Inicializacion (IV) [12], el tercer comando se nombra process bytes y se usa para el cifrado y descifrado de los mensajes.

    Junto a la implementacion se proporcionan dos aplicaciones que ejemplifican el uso de esta interfaz: una de ellas para un procesador de 8 bits y otra para uno de 16 bits. En cada caso debe contarse con una clave secreta del cliente y un IV. Cada aplicacion simula un trasmisor y un receptor, para esto define estados en los que realiza cada funcion. La clave secreta y el IV se usan para la inicializacion de estos estados por medio del comando key init. Este seria el primer paso, le sigue, la codificacion y decodificacion del mensaje con el comando que corresponde. En la figura 5 se muestra los resultados de la codificacion/decodificacion de un mensaje con Trivium.

    Message: Hello world

    Encryption (hexadecimal): ec 5d 00 01 19 04 ef 50 98 e1 da 73

    Message decryted: Hello world

    Figura 5. Resultado de la codificacion con Trivium

    MMH y Poly Estas interfaces implementan funciones hash universales para proporcionar autenticidad a los mensajes. MMH es una Funcion Multimodular y Multilineal [13], mientras que Poly se basa en el modelo descrito por Ted Krovetz y Phillip Rogaway en [14]. Estas interfaces deben usarse conjuntamente con un mecanismo de cifrado como los proporcionados por AES o Trivium, un ejemplo de esto se muestra en la figura 6.

    edu.red

    Figura 6. Diagrama de componentes de una aplicacion que usa Trivium conjuntamente con MMH

    Ambas interfaces solo disponen del comando hash por medio del cual se obtiene un numero entero de 32 bits que representa el codigo de autenticidad del mensaje, este es calculado en funcion del mensaje y la clave del cliente. En la figura 7 se muestra el resultado de la aplicacion de la funcion de autenticacion de la interfaz MMH conjuntamente con Trivium.

    edu.red

    Figura 7. De izquierda a derecha: Resultado de la aplicacion de MMH y Poly con Trivium

    Puede notarse que no existen diferencias en cuanto a los resultados de cada funcion de autenticidad, pero si se realiza un analisis de complejidad a las correspondientes implementaciones se observa que Poly presenta mayor complejidad computacional que MMH lo cual debe ser considerado en las WSN.

    4.2.2. Distribucion de clave simetrica

    En la Criptografia de Clave Simetrica el tema de mayor importancia es el Establecimiento de Claves [23] cuyo objetivo es hacer disponible una clave secreta compartida para dos o mas partes interesadas en cifrar su comunicacion. Seguidamente veremos una propuesta de los investigadores Donggang Liu y Peng Ning, ambos de la Universidad Estatal de Carolina del Norte en los Estados Unidos. Estos implementaron una aplicacion para la version 1.x de TinyOS nombrada TinyKeyMan.

    TinyKeyMan es un mecanismo criptografico para el establecimiento de claves simetricas en una WSN. Este mecanismo implementa el Esquema Polinomico de Predistribucion de Claves Basado en Depositos, un Esquema Aleatorio de Asignacion de Subconjuntos y un Esquema Matricial de Predistribucion de Claves [9]. Segun los autores, estos esquemas garantizan una alta probabilidad de establecimiento de claves, tolerancia de captura de nodos y baja carga computacional y de comunicacion.

    El diagrama de la figura 8 corresponde a una aplicacion sobre TinyKeyMan. En este se muestra la relacion entre el componente principal de la aplicacion (Simulation) y los componentes de TinyKeyMan. Desde este componente principal se utiliza el comando SecretAssign de la interfaz SetupServer para obtener una Parte Polinomica [25] en funcion del ID del nodo solicitante.

    edu.red

    Figura 8. Diagramas de componentes de una aplicacion sobre TinyKeyMan

    Una vez que el nodo haya obtenido su parte polinomica puede establecer una clave compartida con otro nodo (conocido su ID) mediante el comando establish key de la interfaz Sensor. Esta interfaz define ademas el evento keyEstablished para notificar que se ha acordado una clave con el nodo especificado y pasar dicha clave al nodo solicitante como parametro del evento. Para establecer una clave compartida entre dos nodos, estos deben hacer llamadas semejantes a establish key. En la figura 9 se muestra un ejemplo del establecimiento de una clave compartida entre el nodo 0 (ID=0) y el nodo 1 (ID=1), donde la constante TOS LOCAL ADDRESS contiene el ID del nodo.

    Despues que la aplicacion recibe el evento keyEstablished notificando que ya se acordo la clave compartida con su vecino puede comenzar la transmision de mensajes cifrados con esta clave. En la figura 10 en la pagina siguiente se muestra el resultado del uso de TinyKeyMan para establecer una clave entre dos nodos.

    Una vez obtenida la clave compartida pudiera usarse uno de los algoritmos de cifrado tratados en la seccion 4.2.1 en la pagina 5 para la codificacion y decodificacion de los mensajes.

    Finalmente se tiene que TinyKeyMan implementa dos de los esquemas descritos anteriormente de forma separada: Simulation para el Esquema Aleatorio de Asignacion de Subconjuntos y SimulationG

    edu.red

    Figura 9. Codigo para establecer una clave entre dos sensores utilizando TinyKeyMan

    0: 0 and 1 have set up key

    0: key=B77B 8ADF 715A FBB2

    1: 1 and 0 have set up key

    1: key=B77B 8ADF 715A FBB2

    Figura 10. Resultado de TinyKeyMan

    Para el Esquema Matricial de Predistribucion de Claves. O sea, existen dos aplicaciones distintas en la distribucion de TinyKeyMan. Gracias a esto podemos obtener versiones distintas de la aplicacion y comparar los resultados de cada una [9]. Si se desea Compilar una o otra aplicacion debe modificarse el Makefile del proyecto TinyKeyMan.

    4.2.3. Distribucion de clave publica

    Anteriormente se ha descrito la dificultad del uso de algoritmos clasicos como RSA [26] o DSA [27] para la distribucion de claves publicas dentro de una WSN. A continuacion veremos una propuesta realizada por An Liu y Peng Ning, ambos del Departamento de Ciencias de la Computacion de la Universidad Estatal de Carolina del Norte. Dicha propuesta se nombra TinyECC y pretende la distribucion de claves publicas en una WSN.

    TinyECC es una implementacion del Esquema Criptografico de Claves Publicas [23], esta se basa en una especificacion para redes de sensores propuesta por An Liu y Peng Ning en [10] de la Criptografia de Curva Eliptica de Koblitz [28]. Se han desarrollado tres versiones de TinyECC para TinyOS 1.1.11, pero para el estudio en esta seccion describiremos solo la version 0.3, aunque en algun momento se hagan aclaraciones con respecto a las versiones anteriores.

    Desde su primera version, esta aplicacion cuenta en su implementacion con seis interfaces las cuales son comentadas a continuacion.

    NN Define operaciones algebraicas sobre numeros naturales grandes que normalmente no son soportadas por los tipos de datos primitivos de nesC.

    ECC Define operaciones basicas sobre una curva eliptica, ademas de otras operaciones extendidas basadas en el metodo de la ventana deslizante [29].

    ECDSA Define funciones para la generacion y verificacion de la firma de autenticidad adjunta al mensaje. Esta firma depende directamente del mensaje y de la clave privada.

    SHA1 Define las funciones del Algoritmo de Hash Seguro SHA-1 [30].

    CurveParam Define dos funciones: get param para obtener los parametros de la curva eliptica y omega mul para la multiplicacion optimizada con omega. En los modulos secp128*.nc, secp160*.nc y secp192*.nc se implementa esta interfaz. Dichos parametros de la curva pueden ser modificados en la seccion "choose curve parameter " del archivo Makefile.

    Una aplicacion que pretenda hacer uso de la distribucion de claves publicas proporcionada por TinyECC debe de incluir los componentes listados en el cuadro 2 en la pagina siguiente y hacer uso de las interfaces de la segunda columna de este cuadro. La figura 11 en la pagina siguiente muestra el ejemplo de una aplicacion que ademas de los componentes nativos de TinyOS, utiliza los componentes requeridos para el uso de TinyECC.

    Puede notarse en la figura 11 en la pagina siguiente, que la aplicacion que ella representa difiere de una aplicacion clasica para recibo y envio de mensajes, solamente en la inclusion de ECCC, ECDSAC y NNM

    EL PRESENTE TEXTO ES SOLO UNA SELECCION DEL TRABAJO ORIGINAL. PARA CONSULTAR LA MONOGRAFIA COMPLETA SELECCIONAR LA OPCION DESCARGAR DEL MENU SUPERIOR.