Está en la página 1de 61

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS

INDUSTRIALES Y DE TELECOMUNICACIÓN

UNIVERSIDAD DE CANTABRIA

Trabajo Fin de Grado

IMPLEMENTACIÓN DE UN PILOTO DE
CIFRADO HOMOMÓRFICO EN REDES DE
SENSORES
Homomorphic Ciphering Proof of Concept
applied to Wireless Sensor Networks

Para acceder al Titulo de

Graduado en
Ingeniería de Tecnologías de Telecomunicación
Autor: Marta Méndez Simón

Octubre - 2016
E.T.S. DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACION

GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN


CALIFICACIÓN DEL TRABAJO FIN DE GRADO

Realizado por: Marta Méndez Simón


Director del TFG: Luis Muñoz Gutiérrez
Título: “Implementación de un piloto de Cifrado Homomórfico
en redes de sensores”
Title: “Homomorphic Ciphering Proof of Concept applied to
Wireless Sensor Networks”

Presentado a examen el día: 28 de Octubre de 2016

para acceder al Título de


GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN

Composición del Tribunal:


Presidente (Apellidos, Nombre): Muñoz Gutiérrez, Luis
Secretario (Apellidos, Nombre): García Arranz, Marta
Vocal (Apellidos, Nombre): Via Rodriguez, Javier

Este Tribunal ha resuelto otorgar la calificación de: ......................................

Fdo.: El Presidente Fdo.: El Secretario

Fdo.: El Vocal Fdo.: El Director del TFG


(sólo si es distinto del Secretario)

Vº Bº del Subdirector Trabajo Fin de Grado Nº


(a asignar por Secretaría)

UNIVERSIDAD DE CANTABRIA

Abstract
ETS de Ingenieros Industriales y de Telecomunicación
Departamento de Ingenierı́a de Comunicaciones (DICOM)

Grado de Ingenierı́a de Tecnologı́as de Telecomunicación

por Marta Méndez Simón

A Boeing 787 aircraft generates 240TB on a 6-hour flight. 48 hours of video are uploaded
to YouTube every minute. Around 305.000 observations are made on SmartSantander
every single day... In a world where information is generated at such pace, it is essential
to deliver solutions that ease this traffic burden, by processing the data and providing
meaningful information to the end user. The Internet of Things being a giant network of
connected ’things’ (cellphones, lamps, engines... to even humans themselves) generates
huge amounts of data on a daily basis. The analyist firm Gartner says that by 2020
there will be over 28.5 billion connected devices. But having these much information
and not being able to derive any conclussions about it, leaves us with a great amount of
meaningless data.

Wireless Sensor Networks are a keyplayer in this so-called Internet of Things. Amongst
its applications we find area monitoring, health care monitoring, environmental sensing,
forest fire detection... to mention a few. Nodes in a WSN are characterized by very
limited computing capabilites. Power consumption constraints become a major concern,
therefore implying that communications should be kept at a minimum.

On the other hand, we are faced with security and privacy issues, which are a must in
nowadays world. With so many connected devices, how can we asure confidentiality on
our sensitive information? Wireless Sensor Networks, due to the limited power resources,
discard the use of conventional security solutions, such as AES. We must figure out a
way to keep eavesdroppers unaware of the sensed data being monitorized in these kind
of networks. The definition of secure and privacy aware solutions, that ensure at the
same time limited power consumption on transmitted data, poses a great challenge.

The level of engineering required to propose a solution that meets these restrictive
constraints is remarkable. We propose a special kind of encryption, with homomorphic
capabilities, that relies only on modular additions. These simple, non-expensive opera-
tions in computing terms make them perfectly suitable for WSNs. We propose a hybrid
mesh/sensor network scheme that delivers a transparent multi-hop wireless backhaul
able to handle in a secure way different kinds of data (temperature, humidity...) coming
from different kinds of wireless sensor networks. In such a scheme, end-to-end privacy
is ensured, as only sensor nodes and the server encrypt and decrypt the values. Forwar-
ding intermediate nodes, such as gateways, are kept unaware of the clear data being
transmitted, and are allowed to perform additions directly on the encrypted texts.

We have taken this scheme one step further, and implemented it on one of SmartSan-
tander testbed’s labs.
Agradecimientos
Quisiera agredecer sinceramente a mi director de Trabajo de Fin de Grado, el Catedrático
Luis Muñoz Gutiérrez, su esfuerzo y guı́a a la hora de plantear y llevar a buen fin este
trabajo; y por proponerme un tema con tanto potencial y de tal actualidad como es el
cifrado homomórfico.

Por otra parte, querrı́a destacar y agradecer la ayuda de Juan Ramón Santana Martinez,
quien ha seguido dı́a a dı́a el desarrollo de este trabajo, y ha sido el punto de referencia
a la hora de implementar el esquema en el entorno de SmartSantander.

iv
Índice general

Abstract ii

Agradecimientos iv

List of Figures vii

List of Tables viii

Abreviaciones ix

1 Introducción 1
1.1 Desafı́os de las Wireless Sensor Network (WSN) . . . . . . . . . . . . . . . 2

2 Objetivos y Estructura del Trabajo 5


2.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Cifrado Homomórfico 8
3.1 Bases del Cifrado Homomórfico . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 Definición Cifrado Homomórfico . . . . . . . . . . . . . . . . . . . 13
3.1.2.1 Cifrado Homomórfico Aditivo . . . . . . . . . . . . . . . . 13
3.2 Agregación en WSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Escenarios de agregación de datos . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 No Agregación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 Agregación salto a salto con descifrado . . . . . . . . . . . . . . . . 17
3.3.3 Agregación salto a salto sin descifrado . . . . . . . . . . . . . . . . 18
3.3.3.1 Cálculo de la Media . . . . . . . . . . . . . . . . . . . . . 19
3.3.3.2 Cálculo de la Varianza . . . . . . . . . . . . . . . . . . . . 19
3.3.3.3 Tamaño de los valores M y M’ . . . . . . . . . . . . . . . 20

4 Diseño y desarrollo de técnicas de cifrado homomórfico para la infra-


estructura SmartSantander 21
4.1 Arquitectura de SmartSantander . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.1 Infraestructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

v
Tabla de Contenidos vi

4.2.1 Nodos IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24


4.2.2 Gateways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2.3 Waspmote IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2.4 XCTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.5 Librerı́as SmartSantander . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.6 Librerı́a ZeroMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.6.1 Patrón PUB-SUB . . . . . . . . . . . . . . . . . . . . . . 27
4.3 Diseño de técnicas de Cifrado Homomórfico . . . . . . . . . . . . . . . . . 28
4.4 Modificación de las tramas de SmartSantander . . . . . . . . . . . . . . . 30
4.4.1 Tramas Nodos Sensores . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.2 Tramas Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5 Cálculo de medidas estadı́sticas . . . . . . . . . . . . . . . . . . . . . . . . 32
4.6 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6.1 Nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6.2 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6.3 Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.7 Ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5 Conclusiones y Futuras lı́neas 43


5.1 WSNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Cifrado homomórfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Bibliografı́a 47
Índice de figuras

3.1 Ejemplo algoritmo rot13 - Homomórfico respecto a la concatenación . . . 10


3.2 No Agregación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Agregación Hop-by-Hop con descifrado . . . . . . . . . . . . . . . . . . . . 18
3.4 Agregación Hop-by-Hop sin descifrado . . . . . . . . . . . . . . . . . . . . 19

4.1 SmartSantander - Diagrama de Red . . . . . . . . . . . . . . . . . . . . . 22


4.2 SmartSantander - Mapa del despliegue IoT [19] . . . . . . . . . . . . . . . 24
4.3 SmartSantander - Nodo IoT . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 SmartSantander - Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5 Programación nodo con Waspmote IDE . . . . . . . . . . . . . . . . . . . 26
4.6 PUB-SUB Escenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.7 Arquitectura de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.8 SmartSantander - Diagrama de Cajas con CH . . . . . . . . . . . . . . . . 30
4.9 Service Frame Over the Air Format - SmartSantander . . . . . . . . . . . 31
4.10 Generic Frame - SmartSantander . . . . . . . . . . . . . . . . . . . . . . . 32
4.11 Diagrama lógica nodo sensor . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.12 Diagrama lógica Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.13 Diagrama lógica Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.14 Ejecución programa Gateway . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.15 Trama recibida por el Gateway del primer nodo . . . . . . . . . . . . . . . 40
4.16 Ejecución programa Servidor . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.17 Extracto consulta base de datos . . . . . . . . . . . . . . . . . . . . . . . . 42

vii
Índice de cuadros

4.1 Tabla homomorphic cipher results . . . . . . . . . . . . . . . . . . . . . . 37


4.2 ID Nodos, Claves y valores cifrados y sin cifrar . . . . . . . . . . . . . . . 42

viii
Abreviaciones

TFG Trabajo de Fin de Grado


IoT Internet Of Things
SoC System On a Chip
WSN Wireless Sensor Networks
DoS Denial Of Service
CPU Central Processing Unit
AES Advanced Encryption Standard
RC5 Rivest Cipher 5
SAWN Secure Aggregation for Wireless Networks
SEDAN Secure and Efficient Data Aggregation protocol for wireless sensor Networks
HBH Hop-By-Hop
AMEX Agregated Message
IAMEX In-Cluster Agregated Message
FHE Fully Homomorphic Encryption
TLS Transport Level Security
CH Cifrado Homomórfico
API Application Programming Interface
IDE Integrated Development Environment

ix
Dedicado a mi abuelo José Simón Quintana, Dr. Ingeniero de
Telecomunicación.

x
Capı́tulo 1

Introducción

Vivimos en un entorno rodeados de dispositivos con capacidades diversas en términos de


sensado y actuación. Los encontramos en nuestros vehı́culos, casas, fábricas, bosques...
incluso en nuestros propios cuerpos. Disfrutamos de redes, viviendas y transportes inte-
ligentes; sistemas de infraestructura que conectan nuestro mundo mucho más de lo que
nunca se imaginó. La visión común de dichos sistemas se asocia normalmente con un
concepto: el Internet de las Cosas (Internet Of Things - IoT); donde a través del uso
de sensores, la infraestructura fı́sica pasa a estar estrechamente ligada a las tecnologı́as
de la información y comunicación, facilitando ası́ la monitorización y gestión de dichos
sistemas.

La investigación sobre redes de sensores inalámbricas (Wireless Sensor Networks - WSNs)


comenzó en los años 80, pero no fue hasta 2001 que captó especial interés desde el punto
de vista industrial y de investigación. La alta disponibilidad y bajo coste de compo-
nentes miniaturizados de baja potencia (procesadores, radios y sensores) normalmente
integrados en un único chip (System on a Chip - SoC) hacen de ésta una tecnologı́a
especialmente atractiva.

En paralelo a las WSNs se fue desarrollando la idea del IoT, referida a aquellos objetos
identificables de forma única y a sus respectivas representaciones virtuales en el contexto
de Internet. Estos objetos incluyen desde enormes edificios, plantas industriales, aviones,
coches, máquinas... hasta seres humanos, animales y plantas, o incluso partes especı́ficas
de sus cuerpos. En 2015, 13.5 mil millones de dispositivos IoT se encontraban conectados;
varios estudios apuntan a que este número ascenderá en 2020 a 38.5 mil millones; una
subida del 285 %.

Aunque el IoT no asuma una tecnologı́a de comunicación especı́fica, las tecnologı́as de


comunicación inalámbrica juegan un rol importante, en particular las WSNs. El bajo

1
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 2

coste y bajo consumo de energı́a de los nodos sensores de las WSNs, permitirá al IoT
llegar a los objetos más pequeños, instalados en cualquier tipo de ambiente, a un coste
razonable.

1.1 Desafı́os de las Wireless Sensor Network (WSN)

Una red de sensores inalámbrica (WSN) es una red formada por un gran número de
nodos sensores desplegados entorno a un fenómeno fı́sico para monitorizarlo. El objetivo
final de la red es poder inferir una decisión ligada a un determinado fenómeno o con-
texto, lo que requiere de la máxima coordinación y detección a nivel de sensor. Por otra
parte, las WSNs son conocidas por actuar bajo restricciones tecnológicas severas: los
nodos individuales presentan recursos limitados en cuanto a computación, comunicación
y energı́a (baterı́a).

Las comunicaciones en las WSNs suelen ser inalámbricas multi-salto, donde todos los
nodos de la red participan y cooperan. Debido a la naturaleza ad-hoc de las mismas,
los nodos no se limitan a enviar sus datos y a recibir instrucciones, sino que pasan a
ser infraestructura propia de la red, reenviando los datos recibidos de otros sensores
vecinos. Para llevar a cabo tal retransmisión de los datos, es esencial el árbol de entrega
(delivery tree), generado tras el despliegue de los nodos de la red, y que indica el camino
desde el sumidero (nodo encargado de recoger los datos sensados y puente entre la
WSN y el mundo exterior) hacia cada uno de los nodos sensores. De tal forma, los
paquetes recibidos por un sensor serán redireccionados hacia el sumidero, atravesando
todos aquellos nodos que se encuentren a lo largo de la ruta marcada por el delivery tree.

Es tal la popularidad de las redes de sensores y en tan diversos ámbitos (medicina,


agricultura, industria, militar, domótica...), que se llega a comparar su importancia con
la de Internet. Donde Internet permite el acceso a información desde cualquier lugar del
mundo, las redes de sensores permiten interactuar de forma remota con el mundo fı́sico.
En las últimas décadas se han ido definiendo muchas soluciones relativas a este tipos de
redes, y la investigación en en ciertos temas (protocolos de enrutamiento, algoritmos de
localización...) han alcanzado una gran madurez. Para mejorar la tolerancia ante fallos
de los nodos sensores (dispositivos que tienden a fallar debido a sus altas limitaciones)
y la calidad de las medidas sensadas, se suele incrementar la redundancia de datos
desplegando una alta densidad de sensores. Sin embargo, esta redundancia causa una
sobrecarga importante de energı́a e incrementa el número de colisiones. La eficiencia
energética, al ser factor clave y limitante de los nodos sensores, ha generado la necesidad
de establecer soluciones basadas en el procesamiento de la información dentro de la red
misma. Algunos estudios muestran que más de el 70 % de energı́a de las WSN se consume
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 3

en la transmisión de datos. Como la mayor parte del tiempo la información sensada es


redundante (debido a la localización geográfica de los sensores y a la alta densidad que
hemos mencionado) gran parte de esta energı́a se podrı́a salvar a través de la agregación
de datos, mejorando a su vez el uso de ancho de banda.

Las WSNs suelen desplegarse en zonas públicas o ambientes hostiles, por lo que son
potencialmente vulnerables a distintos ataques de seguridad (de gestión de claves, pri-
vacidad, control de acceso, autenticación, Denial Of Service - DoS...); que hay que tener
en cuenta y remediar. El primer desafı́o de las WSNs que hemos mencionado, ligado
a su escasa baterı́a, lo solventábamos aplicando esquemas de agregación de datos. Es-
ta agregación es especialmente vulnerable a atacantes que quieran inyectar información
falsa o forzar valores agregados dentro de la red sin ser detectados. Aunque se podrı́an
implementar muchos servicios de seguridad en esta capa de agregación, serı́a a base de
sacrificar en consumo de energı́a, perdiendo el sentido de la agregación en un primer
lugar. Soluciones tı́picas como el cifrado de clave pública quedan descartadas por la alta
carga computacional que conllevan. Nos encontramos por tanto con nuestro segundo
desafı́o: garantizar la seguridad y privacidad en WSNs.

La investigación sobre agregación de datos, seguridad y privacidad en WSNs es de total


actualidad. Algunos trabajos anteriores proponen soluciones basadas en la gestión de
claves ultraeficiente, como plantea [1] con su esquema simple de pre-distribución de
claves, que reduce la necesidad de almacenamiento a solo unas decenas o un par de
centenas de claves. En [2] se presentan tres esquemas de autenticación que tienen como
objetivo solventar el ataque de inyección de datos falsos en la red: la estación base será
capaz de verificar la autenticidad de un reporte recibido, siempre y cuando el número
de nodos comprometidos no supere un cierto lı́mite; por otra parte, se intentarán filtrar
aquellos paquetes falsos inyectados por los nodos comprometidos antes de que alcancen
la estación base, ahorrando ası́ la energı́a derivada de su rentrasnmisión. En cuanto a
temas de enrutamiento, [3] propone diez protocolos de routing y cuatro algoritmos de
topologı́a para el mantenimiento y conservación de energı́a. Otros trabajos, tales como [4]
analizan cómo resistir ataques DoS en WSNs. Mientras tanto, otra lı́nea de investigación
ha focalizado su atención en los problemas derivados de la eficiencia en la comunicación,
tal y como hacemos nosotros en este trabajo.

Ya hemos mencionado que para maximizar el tiempo de vida del sensor es esencial mi-
nimizar el número de bits enviados por dispositivo. Un enfoque consiste en ir agregando
los datos recibidos de otros sensores con los propios del sensor, a lo largo del camino
marcado por el delivery tree. Hay que tener en cuenta que esta agregación de datos no
es equivalente a almacenar las medidas individuales de cada sensor. De tal manera, en
algunas aplicaciones (como en control de acceso perimetral) la agregación carecerá de
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 4

sentido porque se perderı́an las medidas individuales de cada sensor, que son las que
realmente resultan de interés. Por el contrario, muchos otros escenarios de redes de sen-
sores, como aquellos que monitorizan un microambiente entero (temperatura o actividad
sı́smica), no requieren los datos medidos por cada sensor, sino que se benefician más de
cantidades estadı́sticas: la media, la mediana, la varianza...

Aunque sencilla y fácil de entender, la agregación pasa a ser problemática si tenemos


que garantizar privacidad extremo a extremo entre los sensores y el sumidero. Si asu-
mimos que se puede confiar en todos los sensores, éstos podrı́an cifrar los datos en cada
salto. Para un sensor intermedio (uno que recibe y reenvı́a los datos), esto conllevarı́a:
1) compartir una clave con cada nodo sensor vecino, 2) para cada vecino downstream1 ,
descifrar el valor cifrado recibido, 3) agregar todos los valores recibidos y, 4) cifrar el
resultado para transmisión upstream. Aunque viable, este enfoque es bastante complejo
y poco eficiente. No solo por tener que descifrar cada valor recibido antes de agregarlo,
sino también por la sobrecarga que impone la gestión de claves. Además, el cifrado salto
a salto asume que se confı́a a todos los sensores con la autenticidad y privacidad de los
datos de otros. Una conjetura que puede resultar poco realista en ciertas configuracio-
nes. De forma alternativa, si se usase únicamente una clave global común a todos los
sensores, valdrı́a con que un adversario alterase un nodo sensor para hacerse con todas
las medidas de la red. Al ser el sumidero única y exclusivamente, aquel con una visión
general de las medidas de la WSN, este enfoque deja de resultar atractivo.

1
Utilizamos los términos downstream y upstream para referirnos a ’desde’ y ’hacia’ el sumidero
respectivamente.
Capı́tulo 2

Objetivos y Estructura del


Trabajo

2.1 Objetivos

El objetivo de este trabajo es la implementación de un piloto de cifrado homomórfico en


redes de sensores, susceptible de operar sobre la infraestructura de SmartSantander. Para
superar las limitaciones que presentan las WSNs en términos de seguridad y rendimiento
energético, proponemos un modelo de arquitectura de red hı́brida, donde se combinan
las redes de sensores con las redes malladas; asi como un tipo de cifrado especial que
permite realizar operaciones aritméticas sobre los datos cifrados: el cifrado homomórfico.

La red hı́brida mallada/IoT objeto de este trabajo y basada en la propuesta de R.


Riggio [5], asume un componente inalámbrico, multi-salto troncal transparente, capaz
de soportar diferentes tipos de datos (temperatura, presión, humedad...) provenientes de
una WSN. Más especificamente, en tal contexto los nodos sensores utilizarán sus recursos
(su energı́a) únicamente para el sensado y cifrado; mientras que los gateway serán los
encargados de implementar la agregación segura a los datos cifrados, y de enviar el
resultado al sumidero de la red. Se asegura tanto el cifrado extremo a extremo, en tanto
que es únicamente el sumidero quien descifra las medidas; como la autenticación salto a
salto. Finalmente, la aproximación elegida aborda los problemas de consumo en grandes
WSNs (por ejemplo en área metropolitana) pues las n medidas cifradas enviadas por
los n sensores al gateway más cercano, se agregarán por primera vez en este dispositivo,
reduciendose el número de muestras a enviar a uno. La ganancia de ancho de banda es
por tanto significativa.

5
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 6

Para lograr este objetivo, empleamos el algoritmo definido por Castelluccia [6] basado en
el cifrado homomórfico, y que permite la agregación eficiente de los datos cifrados. Al usar
únicamente sumas modulares, es especialmente útil para dispositivos con limitaciones de
CPU (Central Processing Unit) como son nuestros nodos sensores. El gateway sumará
las medidas recibidas de la WSN, y será el sumidero quien descifre y compute las medidas
estadı́sticas: media y varianza.

Otro punto fundamental a garantizar es la confidencialidad de los datos, para prevenir


que un atacante pasivo (intruso) obtenga información sobre los datos medidos. El ata-
cante se asume como global, es decir, capaz de monitorizar cualquier punto de la red, o
incluso la WSN entera. Es más, asumimos al atacante capaz de leer el estado interno de
algunos de los sensores. Aunque la anterior suposición pueda parecer que llega demasiado
lejos, ya que un atacante global serı́a capaz de medir todos los datos por si mismo; hasta
un atacante omnipresente puede carecer de los medios para instalar sus propios senso-
res, especialmente considerando que no siempre miden fenómenos relativamente simples
(como la temperatura ambiente); sino que pueden usarse para monitorizar parámetros
más complejos, como el nivel de radiación, salinidad del agua, o contaminación en el
aire. En otro enfoque, un atacante con recursos limitados podrı́a posicionarse cerca del
sumidero, y ası́ obtener toda la información sobre los datos medidos.

La agregación por adición se vuelve especialmente compleja al tener que garantizar


privacidad extremo a extremo entre los sensores y el sumidero. En gran parte porque
los cifrados en bloque y de flujo populares, como AES (Advanced Encryption Standard)
[7] o RC5 (Rivest Cipher 5) [8], no son homomórficos respecto a la suma. En otras
palabras, la suma de los valores cifrados no permite recuperar la suma de los valores en
texto plano.

Asumiremos que cada uno de los n sensores comparte una clave diferente de larga du-
ración con el sumidero, y que la distribución de las mismas ya viene dada.

Tal y como refleja Castelluccia en su artı́culo [6], aunque estemos consiguiendo cifrado
extremo a extremo, asumiremos autenticación salto a salto. De forma opuesta al cifrado,
los esquemas de autenticación que a su vez permitan la agregación parecen ser complejos,
quizá imposibles, de diseñar. Es más, incluso si existiera un esquema tal de agregación,
no resulta claro cómo de útil podrı́a ser realmente en la práctica, ya que en una WSN
el atacante puede influir fácilmente en la agregación simplemente actuando sobre el am-
biente que se está midiendo (por ejemplo incrementando artificialmente la temperatura
alrededor de un sensor). En este tipo de ataque no hace falta que el atacante compro-
meta ningún nodo. En las WSN, la autenticación no garantiza la originalidad de los
datos, sino que puede usarse para control de acceso (por ejemplo previniendo a nodos
no autorizados de inyectar paquetes falsos en la red). Este control de acceso puede ser
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 7

generado de forma eficiente con autenticación salto a salto, de forma que no se requiera
invocar la autenticación extremo a extremo. Se han definido ciertos mecanismos como
SAWN (Secure Aggregation for Wireless Networks) [9] y posteriormente SEDAN (Se-
cure and Efficient Data Aggregation protocol for wireless sensor Networks) [10] para
garantizar la verificación salto a salto. En el caso de SEDAN, cada nodo puede verificar
inmediatamente la integridad de los datos de sus vecinos que estén a dos saltos, y la
agregación de los vecinos inmediatos; de forma que se evita la transmisión de datos falsos
inyectados en la red, ahorrando los limitados recursos energéticos de los sensores. SAWN
por otra parte, es un protocolo de agregación segura salto a salto basado en un meca-
nismo de verificación de dos saltos: su solución permite que cualquier nodo prevenga la
modificación de datos en el siguiente salto durante la agregación. En este trabajo, no
abordaremos directamente la autenticación salto a salto, y asumiremos que previamente
se ha aplicado algún mecanismo para tal fin.

2.2 Estructura

La memoria se ha organizado en base a cinco capı́tulos. Tras el capı́tulo 1 de introducción


y el presente dedicado a los objetivos; el capı́tulo 3 presenta las bases teóricas del cifrado
homomórfico. Analizaremos la teorı́a subyacente a este tipo de cifrado, y veremos sus
otras posibles aplicaciones. Explicaremos cómo combinar el cifrado homomórfico con la
agregación en redes de sensores para garantizar privacidad en la comunicación, y reducir
el consumo energético. En el Capı́tulo 4 abordamos la arquitectura de SmartSantander,
y la implementación real llevada acabo en en uno de sus laboratorios; seguido por el
Capı́tulo 5 donde analizamos los resultados y exploramos futuras lı́neas de trabajo.
Capı́tulo 3

Cifrado Homomórfico

Todos conocemos la forma de proteger nuestros datos más privados y valiosos de acceso
no autorizado: cifrando aquellos. Cuando un bloque de información M se cifra bajo una
clave K para obtener un mensaje cifrado C = EncK (M ), solo el receptor intencionado
(que conoce la clave de descifrado correspondiente S) será capaz de revertir la función
de cifrado y recuperar el texto original utilizando el algoritmo de descifrado DecS (C) =
DecS (EncK (M )) = M .

El despliegue de aplicaciones del cifrado - tanto simétrico (donde S = K) como asimétri-


co (donde S permanece oculto mientras K se hace público) es muy amplio: banca
electrónica, comercio online, Virtual Private Networks... Normalmente se emplea el ci-
frado como parte de un protocolo más amplio, como en el caso de las aplicaciones
mencionadas, que emplean el protocolo TLS (Transport Level Security) para garantizar
la seguridad de la comunicación a través de Internet.

Generalmente, el uso de cifrado para proteger los datos sensibles o valiosos puede ser muy
limitado e inflexible, puesto que los datos, una vez cifrados, actúan como una caja negra
para nosotros y todo lo que podemos hacer es mantenerla cerca para poder abrirla o
cerrarla a la hora de acceder y operar sobre los datos [11]. Aunque en muchos escenarios,
sea precisamente ese el objetivo que buscamos, cuando salimos de los modelos conven-
cionales de almacenamiento/recuperación, nos enfrentamos a un problema. Digamos que
queremos que un sistema remoto sea capaz de otorgar una funcionalidad más compleja,
como un sistema de base de datos que pueda indexar y buscar en nuestros datos, o que
responda a solicitudes relacionales semiestructuradas bastante complejas. Si empleáse-
mos la tecnologı́a de cifrado estándar, harı́amos frente al siguiente dilema: ¿almacenamos
nuestros datos sin cifrar y revelamos nuestra valiosa información al proveedor de ser-
vicios de almacenamiento?. ¿O lo ciframos y hacemos posible que el proveedor opere
sobre ello?. Si decidiéramos cifrar la información, el responder a una consulta tan simple

8
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 9

como un contador (por ejemplo el número de archivos que contienen una palabra clave)
requerirı́a descargar y descifrar el contenido de la base de datos en su totalidad.

Éste es un problema central de criptografı́a que el cifrado homomórfico pretende resol-


ver. Tal tipo de cifrado permite llevar a cabo funciones arbitrarias sobre datos cifrados
sin necesidad de conocer la clave de descifrado. Por ejemplo, dados los datos cifrados
E(m1 ),...,E(mt ) de los valores en claro m1 ,...,mt ; se podrı́a calcular eficientemente un
valor cifrado compacto f (m1 , ..., mt ) para cualquier función eficiente de computación f .
Hasta la fecha, todos los esquemas conocidos de cifrado homomórfico soportaban esen-
cialmente una única operación básica (como por ejemplo la adición que emplearemos
nosotros y analizaremos en más detalle en las siguientes secciones). Pero realmente es
el cifrado homomórfico completo (FHE - Fully Homomorphic Encryption), donde por
completo asumimos que permite realizar computaciones arbitrarias relativamente com-
plejas; el que ofrece un potencial sin lı́mite. Imaginemos poder cifrar las consultas antes
de enviarlas a un motor de búsqueda, y recibir el resultado cifrado manteniendo siempre
al buscador completamente ajeno a qué se estaba consultando. O pensemos poder eje-
cutar aquellos programas con mayor carga computacional sobre grandes bases de datos,
en un conjunto de ordenadores remotos (como un ambiente en la nube), manteniendo
al mismo tiempo programas, datos y resultados cifrados y estrictamente confidenciales.
Esta idea que puede resultar tan revolucionaria, fue expuesta por primera vez por Rivest,
Addleman y Dertouzos en 1978 [12].

De forma más general, podemos afirmar que los esquemas de cifrado homomórfico ofrecen
una mejora significativa en cuanto a eficiencia y seguridad computacional en ambientes
con múltiples individuos involucrados.

En este capı́tulo, analizaremos las bases del cifrado homomórfico como tal, y buscaremos
su aplicación práctica en un problema especı́fico: las redes de sensores.

3.1 Bases del Cifrado Homomórfico

3.1.1 Antecedentes

Homomórfico es un adjetivo que describe una propiedad del esquema de cifrado. Esta
propiedad, en términos sencillos, es la habilidad de llevar a cabo computaciones sobre el
texto cifrado sin tener que descifrarlo en un primer lugar.

El simple pero inseguro esquema de cifrado rot-13 (también conocido como Cifrado
César) [13], es parcialmente homomórfico, especı́ficamente con respecto a la operación
de concatenación. Este tipo de cifrado por sustitución consiste en reemplazar cada letra
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 10

del texto original por otra que se encuentra un número fijo de posiciones por delante
en el alfabeto. Dicho número será la clave secreta a usar en las funciones de cifrado
y descifrado. Si utilizamos como clave 13 y ciframos la palabra HELLO y la palabra
WORLD, obtendremos URYYB y JBEYQ respectivamente. Si concatenamos ambos
textos y procedemos a descifrarlos, llegaremos al resultado HELLOWORLD.

Al no haber sido necesario descifrar los dos fragmentos del texto antes de llevar a cabo
la operación de concatenación, podemos afirmar que rot-13 es homomórfico respecto a la
concatenación. En otras palabras, somos capaces de coger dos piezas cifradas y realizar
una operación sobre ellas, que resulta directamente en el texto cifrado que habrı́amos
obtenido concatenando ambas piezas sin cifrar y cifrándolas en conjunto.

Figura 3.1: Ejemplo algoritmo rot13 - Homomórfico respecto a la concatenación

Como refleja la Figura 3.1, la concatenación homomórfica (concatenar los dos fragmen-
tos cifrados) es en este caso la misma operación que la concatenación no-homomórfica
(concatenar dos fragmentos sin cifrar). No siempre se da esta situación. Lo importante
es que podamos llevar a cabo algún tipo de operación sobre la información inicial cifrada
que produzca una nueva información cifrada tal que, al descifrarla, equivalga al resultado
que se habrı́a obtenido de haber aplicado la operación directamente sobre el texto sin
cifrar.

Aunque rot-13 no sea para nada seguro, resulta que algunos sistemas criptográficos
ampliamente conocidos como seguros también presentan propiedades homomórficas. Tal
es el caso del RSA puro y sin relleno, homomórfico respecto a la multiplicación.

La primera noción real relacionada con el cifrado homomórfico (originalmente denomi-


nado privacy homomorphism) fue introducido por Rivest, Adleman y Dertouzous [12]
poco después de la invención del RSA por Rivest, Shamir y Addleman [14]. El RSA
básico es un esquema de cifrado homomórfico multiplicativo con las siguientes funciones
criptográficas:
Enc(m) = me = c mód n (3.1)
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 11

Dec(c) = cd = m mód n (3.2)

donde 3.1 se utiliza para cifrar y 3.2 para descifrar.

n=p∗q (3.3)

siendo (p y q) dos primos grandes. e y d se corresponden con los exponentes de cifrado


y descifrado, de forma que:

e ∗ d = 1 mód (p − 1)(q − 1) (3.4)

Dados dos textos cifrados c1 y c2 , (que se corresponden respectivamente con m1 y m2 )


es fácil ver que:
c1 ∗ c2 ≡ me1 ∗ me2 ≡ (m1 ∗ m2 )e mód n (3.5)

Por tanto, se pueden multiplicar directamente los dos datos cifrados c1 ∗c2 , y al descifrarlo
se obtendrá el mismo valor que se hubiera generado de haber multiplicado los dos valores
en claro sin cifrar, m = m1 ∗ m2 mód n.

Puede ser que, tras haber llegado al homomorfismo multiplicativo, Rivest et al [12] se
preguntaran qué podrı́a llegar a hacerse en caso de obtener un esquema completamente
homomórfico: un esquema con un algoritmo tan eficiente que permitiera realizar cual-
quier tipo de operaciones, no solo multiplicaciones. La respuesta: se podrı́an llevar a cabo
computaciones sobre cualquier tipo de dato cifrado. Por ejemplo, se podrı́an procesar
datos cifrados (llevar a cabo solicitudes, escrituras, o hacer cualquier cosa expresable
de forma eficiente como un circuito) sin poseer la clave de descifrado. Como aplicación
sugirieron las bases de datos privadas. En tal entorno, un usuario podrı́a almacenar su
información en un servidor desconfiable en una forma cifrada. Más adelante podrı́a reali-
zar solicitudes a los datos del servidor, de forma que el servidor expresase dicha solicitud
como un circuito a aplicar sobre los datos, y utilizase el algoritmo para construir una
respuesta a la solicitud del usuario (cifrada), quien entonces procederı́a a descifrarla.
Obviamente se desea una respuesta por parte del servidor más concisa que la solución
trivial, en la que el servidor simplemente devuelve toda la información cifrada al usuario
para que la procese por si mismo.

Aunque hay un gran número de esquemas de cifrado con una única operación homomórfi-
ca, hasta muy recientemente no estaba claro si el cifrado completamente homomórfico
era siquiera posible. Rivest, Adleman y Dertouzos sugirieron que tal esquema serı́a po-
sible en 1978, pero fueron incapaces de encontrar un esquema seguro. Otro esquema,
propuesto por Boneh et al [15] soporta dos operaciones, pero solo se puede ejecutar
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 12

una de las dos cada vez. Cuando se considera la complejidad de un lenguaje de pro-
gramación tı́pico, dos operaciones no parecen mucho, pero como estamos interesados en
operaciones que transforman la información (de forma opuesta a mantener un puntero a
la instrucción actual), resulta que soportar las operaciones and y or es suficiente como
para considerar un esquema completamente homomórfico, siempre y cuando se ejecuten
esas operaciones un número ilimitado de veces.

Desde entonces se han ido concibiendo aplicaciones con gran potencial que se basan en el
esquema de cifrado homomórfico completo. No fue hasta 2009 cuando realmente se llegó
a tener una propuesta teórica de este tipo de cifrado (hasta entonces pensado como ideal
e irrealizable) gracias al investigador de IBM Craig Gentry que propuso como parte de
su tesis doctoral de Stanford, el primer esquema de cifrado completamente homomórfico
[16].

Desafortunadamente el método de Gentry añade unos requisitos computacionales des-


mesurados para atender a tareas computacionales que serı́an simples sobre los datos sin
cifrar. Con su esquema original, una búsqueda de Google tardarı́a tres trillones de veces
más que en la actualidad. Estimó que serı́a necesaria una década o más antes de que el
esquema pasase a ser prácticamente utilizable. En caso de llegar a funcionar, un con-
tratista de defensa o un laboratorio de investigación médico podrı́a enviar información
confidencial a un tercero para ser analizada, sin miedo de comprometer la seguridad o
de infringir la regulación. Esto podrı́a hacer que las compañı́as y agencias que hoy en dı́a
impiden que tales datos salgan de sus servidores, se sientan más cómodos subcontratando
trabajos de alto valor.

Tal y como dice Scott Aaronson, catedrático asistente en Ingenierı́a Eléctrica e Informáti-
ca en el MIT (Massachussets Institute of Technology) “This is one of the biggest theo-
retical developments in cryptography in decades”. Y no podrı́a estar más en lo cierto, ya
que las aplicaciones prácticas son ilimitadas, sobre todo en el mundo del cloud computing
que está en moda hoy en dı́a. Podrı́amos fácilmente descargar carga computacional a un
tercero a quien no queramos confiar la naturaleza y valor de los datos, y recuperar los
resultados totalmente cifrados sin haber tenido que revelar ningún tipo de información
sensible.

Aaronson explica que, como los esquemas de cifrado homomórfico permiten llevar a ca-
bo operaciones sin necesidad de descifrado, al estar la información en la misma forma
(homomórfica) tanto cifrada como sin cifrar, las operaciones aplicadas sobre ésta son
equivalentes. Pero también hay que destacar que añadir complejidad al tipo de opera-
ciones permitidas debilita de forma crı́tica el sistema, ya que permite que se descubra
más información relativa a los datos cifrados.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 13

El trabajo de Gentry hace uso del cifrado de clave pública aplicándole un modelo ma-
temático llamado ideal lattice, y un método de corrección de errores que permite llevar
a cabo tareas básicas de análisis sobre los datos, sin llegar a ver nunca dichos datos o los
resultados derivados de ellos en claro. No entraremos a analizar con detalle su propuesta,
al estar más allá del alcance de este proyecto.

Gentry ha contribuido además, en su reciente propuesta junto a Van Dijik, Halevi y


Vaikuntanathan [17], con una descripción muy accesible de su método general para
conseguir un cifrado homomórfico completo, junto a una posible instanciación del mismo.
Explican con gran detalle los resultados técnicos complejos a los que llegan (algunos de
los cuales toman sus raı́ces en la criptografı́a basada en lattices) a través del uso de
un sı́mil de un joyero y su empeño por mantener sus materiales a salvo permitiendo al
mismo tiempo a sus trabajadores trabajar sobre ellos.

3.1.2 Definición Cifrado Homomórfico

A continuación describiremos de modo formal los esquemas de cifrado homomórfico:

• Enc() denota el esquema de cifrado homomórfico (⊕, ⊗)

• Dec() denota el esquema de descifrado

• C es el espacio de mensajes cifrados, y tiene estructura de grupo bajo la operación


• M es el espacio mensaje (datos en claro), y tiene estructura de grupo bajo la


operación ⊕

De forma que dado c1 = Enck1 (m1 ) y c2 = Enck2 (m2 ), existe una clave k tal que:

c1 ⊗ c2 = Enck (m1 ⊕ m2 )

En otras palabras, el resultado de aplicar la función ⊕ a valores sin cifrar puede obtenerse
descifrando el resultado de ⊗ aplicado a los valores cifrados correspondientes.

3.1.2.1 Cifrado Homomórfico Aditivo

Ya hemos comentado a alto nivel las posibilidades del cifrado homomórfico, especial-
mente del cifrado completamente homomórfico. El problema que queremos solventar,
destinado a reducir el consumo de energı́a y garantizar la privacidad extremo a extremo
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 14

en las redes de sensores; no precisa del esquema de cifrado homomórfico completo, sino
que resulta suficiente encontrar un algoritmo de cifrado (y su correspondiente descifrado)
homomórfico únicamente respecto a la suma.

Para ello, retomaremos la idea principal propuesta por Castelluccia [6] para obtener un
esquema de cifrado homomórfico aditivo; fundamentado en los siguientes puntos:

Cifrado

1. Representamos el mensaje m como un entero m ∈ [0, M − 1] donde M es un entero


largo

2. Generamos un flujo de clave aleatoria k de forma que k ∈ [0, M − 1]

3. Calculamos c = Enc(m, k, M ) = m + k mód M

Descifrado

1. Llevamos a cabo m = Dec(c, k, M ) = c − k mód M

Suma de valores cifrados

1. Si c1 = Enc(m1 , k1 , M ) y c2 = Enc(m2 , k2 , M )

2. Para k = k1 + k2 , entonces Dec(c1 + c2 , k, M ) = m1 + m2

Debido a la propiedad conmutativa de la suma, el esquema anterior es homomórfico


respecto a la suma. De hecho, si c1 = Enc(m1 , k1 , M ) y c2 = Enc(m2 , k2 , M ) entonces:

c1 + c2 = Enc(m1 + m2 , k1 + k2 , M ) (3.6)

Si se suman n datos cifrados distintos ci , es necesario destacar que M ha de ser mayor


! !
que ni=1 mi , ya que de otra forma no se cumplirı́a la igualdad. En caso de que ni=1 mi
fuera mayor que M , el descifrado darı́a valor a unos resultados cuya m′ es menor que
M , cuando en realidad la suma obtenida anteriormente tendrı́a que ser superior. En
práctica, si p = max(mi ) entonces M deberı́a ser seleccionado como M = 2log(p∗n) .

Las claves individuales ki generadas de forma aleatoria, tienen que ser conocidas por
cada nodo ni y el sumidero.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 15

3.2 Agregación en WSN

Las técnicas de agregación permiten reducir la cantidad de datos que se envı́an dentro de
una WSN, prolongando ası́ el tiempo de vida de los dispositivos. Los sensores individuales
registran medidas de forma periódica, que han de ser reunidas y procesadas para generar
una representación global de los datos de la WSN (por ejemplo la media y/o varianza de
la temperatura dentro de un área). Un enfoque natural consistirı́a en hacer que los nodos
sensores envı́en los valores recogidos a ciertos nodos especiales, llamémosles agregadores.
Cada agregador condensarı́a los datos recibidos antes de enviarlos al siguiente nodo o
sumidero. En términos de ancho de banda y consumo energético, la agregación resultarı́a
beneficiosa siempre y cuando el proceso no requiera mucha CPU.

Los agregadores pueden ser nodos especiales (con mayor capacidad en términos de
cómputo o energı́a) o nodos sensores normales. En este trabajo asumiremos que úni-
camente los gateway son agregadores, y que los datos se agregan en su camino de pro-
pagación hacia el sumidero. En esta configuración, debido a las limitadas capacidades
de los nodos y a que no queremos añadir mucha carga computacional que repercuta
negativamente en la eficiencia de la red; la agregación tiene que ser simple y no incluir
cálculos complicados o caros. De forma ideal, solo se requerirı́an unas pocas operaciones
aritméticas simples, como sumas y multiplicaciones 1 .

La agregación requiere que todos los sensores envı́en sus datos al sumidero dentro del
mismo periodo de muestra. Para ello, sus relojes han de estar más o menos sincronizados,
o bien tienen que ser capaces de responder a consultas explı́citas del sumidero.

Una forma natural y común de agregar datos consiste en sumar los valores mientras son
encaminados hacia el sumidero. Por supuesto, este tipo de agregación es útil cuando el
sumidero está interesado exclusivamente en medidas estadı́sticas. Como destacamos en
el Capı́tulo 1, algunas aplicaciones de WSN que precisan de todos los datos individuales
sensados, no se beneficiarán de estas técnicas de agregación. De forma similar, aquellas
aplicaciones que buscan valores lı́mite, como el mı́nimo o máximo, tampoco sacarán
provecho a la agregación.

Con la agregación por adición, el gateway suma todos los valores xi recibidos de sus k
hijos (definidos por el delivery tree) y envı́a la suma a su nodo padre. Al final, el sumidero
obtiene la suma total de todos los valores enviados por los n sensores. Al dividir la suma
por n (número total de sensores) obtiene la media de los datos medidos.
1
Enfoque de Castelluccia [6]
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 16

Esta simple agregación es muy eficiente, ya que cada gateway realiza únicamente k − 1
sumas aritméticas 2 . También es robusto porque no requiere de la participación de todos
los sensores para llevar a cabo la suma; siempre y cuando el sumidero conozca el número
total de sensores que participaron en la medida obtenida.

La agregación por adición también se puede utilizar para calcular la varianza, desviación
tı́pica, y muchos otros momentos sobre los datos medidos. Por ejemplo, en el caso de
!
la varianza, cada agregador no solo ha de calcular la suma S = ki=1 xi de los valores
individuales cifrados mandados por sus k hijos, sino también la suma de sus cuadrados:
!
V = ki=1 x2i . Cada nodo sensor tendrá que enviar dos valores al sumidero: la medida
cifrada y la medida al cuadrado cifrada. El sumidero calcula dos valores: la suma de de
las medidas (con lo que puede calcular la media), y la suma de los cuadrados (con lo
que puede calcular la varianza).

Como ya hemos comentado, necesitamos unas operaciones simples computacionalmente


hablando. Por ello, el esquema de cifrado homomórfico aditivo propuesto en la Sección
3.1.2.1, que emplea única y exclusivamente sumas modulares, resulta perfecto para esta
aplicación.

3.3 Escenarios de agregación de datos

3.3.1 No Agregación

Como ya hemos recalcado, la agregación eficiente en WSNs se vuelve extremadamente


complicada cuando se requiere confidencialidad de los datos de extremo a extremo.
Una solución consiste en ignorar la agregación conjunta para mejorar la privacidad. Es
decir, los nodos sensores envı́an sus propias medidas cifradas, ası́ como otras medidas
recibidas de sus nodos hijos, hacia el sumidero. Éste, tras recibir tantos paquetes de
datos como sensores activos haya en la red, procede a descifrar cada dato cifrado y
los suma para calcular las medidas estadı́sticas deseadas. Este planteamiento tiene dos
obvias desventajas. Primero, al enviar todos y cada uno de los paquetes al sumidero, se
consume mucho ancho de banda (y por tanto potencia). Segundo, hay un desequilibrio
extremo entre los sensores en términos de la cantidad de datos comunicados: los sensores
más cercanos al sumidero envı́an y reciben bastantes órdenes de magnitud más de bits
que aquellos que se encuentran en la periferia del delivery tree.

2
El gateway no contribuye con una medida propia, por tanto se necesitan k − 1 sumas
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 17

Figura 3.2: No Agregación

3.3.2 Agregación salto a salto con descifrado

Un segundo enfoque que no garantiza privacidad extremo a extremo, pero si agrega


datos, es el método de cifrado salto a salto (hop-by-hop en inglés - HBH). En este
esquema, todos los nodos crean claves pares con sus padres e hijos durante una fase
inicial de arranque. Para contestar a una solicitud, los nodos descifran los paquetes
recibidos, y agregan estos datos junto a los suyos mismos antes de volver a cifrar el
resultado, ahora sı́ agregado, y enviarselo a su nodo padre. Este enfoque es más eficiente
en términos de ancho de banda que el primero, ya que el mismo paquete no se envı́a dos
veces. Aun ası́, el coste asociado al descifrado y posterior cifrado llevado a cabo en cada
nodo (no periférico) de la WSN, incrementa el consumo de energı́a. Y más importante
si cabe, desde el punto de vista de la privacidad, los nodos periféricos de este esquema
son vulnerables a ataques, ya que sus datos aparecerán en texto plano (la privacidad
extremo a extremo queda descartada). Por otra parte, los nodos cercanos al sumidero se
vuelven objetivos especialmente atractivos a los atacantes, ya que sus valores agregados
son representativos de una gran porción de los datos de la WSN.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 18

Figura 3.3: Agregación Hop-by-Hop con descifrado

3.3.3 Agregación salto a salto sin descifrado

En lugar del anterior escenario, se propone un enfoque de agregación con privacidad


extremo a extremo en el que cada sensor cifra sus datos sensados utilizando el esquema de
cifrado presentado en la sección 3.1.2.1. Este esquema, al ser homomórficamente aditivo,
permite agregar los valores cifrados mientras son direccionados hacia el sumidero.

El sumidero puede recuperar el valor en claro de la suma cifrada que recibe, y derivar
ciertos valores estadı́sticos. Este modelo combina las caracterı́sticas positivas de la no
agregación (privacidad extremo a extremo) y la agregación hop-by-hop con descifrado
(eficiencia energética).
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 19

Figura 3.4: Agregación Hop-by-Hop sin descifrado

3.3.3.1 Cálculo de la Media

Cuando se usa el esquema anteriormente propuesto, cada sensor cifra sus medidas xi
para obtener cxi = Enc(xi , ki , M ).

Cada nodo sensor envı́a cxi a su padre, quien procede a agregar todos los cxj de sus k
hijos simplemente haciendo la suma (en módulo M); y envı́a el valor resultante a su nodo
padre. Finalmente, cuando llegamos al extremo del delivery tree, el sumidero computa
!
la suma de los datos recibidos por sus hijos y obtiene el valor Cx = ni=1 cxi mód M .
!n
Descifrando este valor Sx = Dec(Cx , K, M ) = Cx − K mód M , donde K = i=1 ki
puede derivar la media haciendo: Avg = Sx /n.

3.3.3.2 Cálculo de la Varianza

Ya hemos mencionado anteriormente que este esquema permite derivar otro tipo de datos
estadı́sticos como la varianza. Aplicando esperanzas llegamos a la siguiente expresión:

V ar = E(x2 ) − E(x)2 (3.7)

donde
n
"
E(x2 ) = x2i /n (3.8)
i=1
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 20

n
!
E(x) = xi /n (3.9)
i=1
.

En este caso, cada sensor i debe calcular yi = x2i (donde xi es la muestra medida) y
cifrar yi para obtener cyi = Enc(yi , ki′ , M ′ ). Además, ha de cifrar xi como hemos indicado
en la anterior sección, para que el sumidero sea capaz de calcular la media. El sensor
envı́a ambas medidas cyi y cxi a su padre; quien procede a agregar todos los cyj y los
cxj (de forma separada) de sus k hijos simplemente sumándolos. A continuación envı́a
los dos valores resultantes a su nodo padre. El sumidero termina con los valores Cx y
"n
Cy = i=1 cyi mód M . A partir de Cx derivará la media Av; y Cy lo utilizará para
"
calcular la varianza: Vx = Dec(Cy , K ′ , M ) = Cy − K ′ mód M , donde K ′ = ni=1 ki′ . La
varianza entonces se calcula como: V ar = Vx /n − Av 2 .

3.3.3.3 Tamaño de los valores M y M’

Como ya hemos comentado, M tiene que ser lo suficientemente grande como para prevenir
posibles desbordamientos. De tal forma, para calcular la media:

p = max(xi ) (3.10)

M = 2log2 (p∗n) (3.11)

log2 (M ) = log2 (p ∗ n) = log2 (p) + log2 (n) (3.12)

M =p∗n (3.13)

Por tanto, tendremos M = p ∗ n y una longitud de log2 (M ) = log2 (p) + log2 (n) bits por
cada valor cifrado xi .

En caso de querer calcular la varianza necesitaremos los anteriores log2 (M ) = log2 (p) +
log2 (n) bits para xi , además de los necesarios para x2i :

M ′ = 2log2 (p∗p∗n) (3.14)

log2 (M ) = log2 (p ∗ p ∗ n) = 2 ∗ log2 (p) + log2 (n) (3.15)

Es decir, un total de log2 (M ) = (2∗log2 (p)+log2 (n))+(log2 (p)+log2 (n)) = 3∗log2 (p)+
2 ∗ log2 (n) bits para poder sumar sin desbordamiento todos los cxi y cx2 .
i
Capı́tulo 4

Diseño y desarrollo de técnicas de


cifrado homomórfico para la
infraestructura SmartSantander

En este capı́tulo abordaremos cómo se ha diseñado e implementado el cifrado homomórfi-


co en la infraestructura SmartSantander. Para ello, primero se presentan los aspectos
más relevantes de la arquitectura de SmartSantander. A continuación se identifican las
necesidades para llevar a cabo el proyecto. Una vez fijados los requisitos, procederemos
a explicar punto por punto la lógica seguida en la implementación: desde las modifica-
ciones llevadas a cabo al formato de tramas de SmartSantander, hasta la programación
de los nodos, gateway y servidor; acompañado de capturas de una ejecución real del
proyecto.

4.1 Arquitectura de SmartSantander

El proyecto de SmartSantander1 [18] se basa en la creación de una infraestructura que


permite la investigación y experimentación de arquitecturas, tecnologı́as y servicios para
el Internet de las Cosas en el contexto de una ciudad, a través del despliegue de 12.000
nodos sensores. De forma adicional, para poder gestionar el banco de pruebas, Smar-
tSantander trabaja como una plataforma y permite ser incrementada en tamaño con
nuevos sensores heterogéneos. Aunque el proyecto de SmartSantander considera la crea-
ción de cuatro entornos de pruebas a lo largo de toda Europa, el principal se encuentra
localizado en la ciudad de Santander, y todos los desarrollos se han llevado a cabo en el
contexto de dicha ciudad.
1
http://www.smartsantander.eu

21
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 22

Figura 4.1: SmartSantander - Diagrama de Red

Su arquitectura distingue tres niveles (reflejados en la Figura 4.1):

Nivel IoT Los nodos IoT son los responsables del sensado del parámetro co-
rrespondiente (temperatura, CO, ruido, luminosidad, presencia de
coches, etc). La mayor parte de ellos se encuentran integrados en
repetidores, mientras que otros son autónomos y se comunican de
forma inalámbrica con su correspondiente repetidor (como es el caso
de los sensores de parking enterrados en el asfalto). Estos últimos,
debido a la falta de alimentación de energı́a continua, requieren del
uso de baterı́as. Los repetidores se localizan a cierta altura en faro-
las, semáforos, paneles de información, etc; para actuar como nodos
de reenvı́o que transmitan la información asociada a los distintos
parámetros medidos. Los nodos están equipados con dos interfaces
diferentes de comunicación, ambas actuando en 2.4 GHz: la primera
implementa el protocolo IEEE 802.15.4 de forma nativa, mientras
que la segunda implementa sobre IEEE 802.15.4 un protocolo pro-
pietario llamado Digimesh. Este protocolo crea automáticamente
una red mallada entre los nodos, permitiendo que se direccionen de
forma fácil y directa. Todos los nodos pueden actuar reenviando los
paquetes o como puntos finales, permitiendo por tanto comunica-
ciones multisalto entre el nodo origen y nodo destino.

Nivel Gateway Tanto los nodos IoT como los repetidores están configurados pa-
ra enviar toda la información de sensado (a través del protocolo
Digimesh), aprovisionamiento de servicio ası́ como gestión de red
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 23

al gateway. Una vez recibe la información, el gateway la reenvı́a


a capas más altas de SmartSantander a través de sus distintas in-
terfaces (WiFi, GPRS/UMTS o Ethernet). La mayor parte de los
gateway disfrutan además de suficiente inteligencia como para ges-
tionar y controlar la red con distintas herramientas (OTAP, escaneo
de nodos...).

Nivel Plataforma Es la capa más alta de la arquitectura de SmartSantander. Esta


capa permite acceso a todos los dispositivos desplegados en San-
tander, ası́ como el resto de servicios que inyectan datos a la plata-
forma.

4.1.1 Infraestructura

La infraestructura de SmartSantander está compuesta por unos 3.000 dispositivos IEEE


802.15.4, 200 módulos GPRS y 2.000 etiquetas RFID/Código QR desplegados tanto en
localizaciones fijas (farolas, fachadas, paradas de autobús) como en vehı́culos móviles
(autobuses, taxis). A lo largo del despliegue, se han ido implementando diferentes casos:

• Monitorización medioambiental: sobre 2.000 dispositivos IoT desplegados (ma-


yormente en el centro de la ciudad) ofrecen medidas de distintos parámetros am-
bientales (temperatura, C0, ruido, luminosidad, presencia de coches...).

• Parking en exteriores: alrededor de 400 sensores de parking (basados en tecno-


logı́a ferromagnética) han sido enterrados bajo el asfalto de las principales áreas de
aparcamiento de la ciudad para detectar la disponibilidad de plazas en esas zonas.

• Monitorización móvil medioambiental: para extender el caso de monitori-


zación medioambiental, aparte de medir parámetros en puntos estáticos, se han
localizado dispositivos en vehı́culos para obtener parámetros medioambientales
asociados a determinadas partes de la ciudad. Hay sensores instalados en 150
vehı́culos públicos, que incluyen tanto autobuses, como taxis y coches de policı́a.

• Monitorización de intensidad de tráfico: alrededor de 60 dispositivos locali-


zados en las entradas principales de la ciudad de Santander. Tienen como objetivo
medir parámetros de tráfico: volumen de tráfico, ocupación de la carretera, velo-
cidad de los vehı́culos o longitud de la cola.

• Guiado a plazas de parking libres: analizando la información obtenida por


los sensores de parking, hay 10 paneles localizados en las principales intersecciones
para guiar a los conductores a plazas de aparcamiento libres.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 24

• Irrigación de parques y jardines: se han instalado cerca de 50 dispositivos en


dos zonas verdes de la ciudad, para monitorizar parámetros relacionados con la
irrigación: humedad, temperatura, pluviómetro, anenómetro... garantizando que la
irrigación sea lo más eficiente posible.

• Etiquetas NFC/QR: más de 2.000 etiquetas se han desplegado y distribuido en


distintos lugares estratégicos del centro de Santander. Estas etiquetas se encuen-
tran mayoritariamente en puntos de transporte, puntos de interés y tiendas. Toda
su información está disponible online y se puede actualizar en cualquier momento.

Figura 4.2: SmartSantander - Mapa del despliegue IoT [19]

4.2 Recursos

4.2.1 Nodos IoT

Los nodos IoT se pueden dividir en las siguientes partes:

• Placa base: Esta placa (llamada waspmote) se encarga del procesamiento y ges-
tión de memoria. Ofrece un conjunto de interfaces a las cuales fijar los sensores
(tanto analógicos como digitales); ası́ como los distintos módulos radio que per-
miten la comunicación con otros nodos. La waspmote está equipada con un mi-
crocontrolador ATmega1281, y diferentes tipos de memoria: 8KB SRAM, 4KB
EEPROM, 128KB FLASH y una memoria extra SD con 2GB de capacidad. De
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 25

forma adicional, contiene otras 7 interfaces analógicas y 8 digitales para conectar


sensores externos, junto a 1 interfaz PWM, 2 UART, 1 I2C y 1 USB para añadir
diferentes modulos de comunicación.

• Dos módulos radio XBee-PRO: Ambos módulos creados por la compañia Digi
[20]. Operan en la banda de 2.4 GHz. La interfaz 802.15.4 se dedica a la experi-
mentación, mientras que la que incluye el protocolo Digimesh se reserva al servicio
de provisión de datos, control y gestión del tráfico.

Figura 4.3: SmartSantander - Nodo IoT

4.2.2 Gateways

El dispositivo Gateway (llamado meshlium [21]) ofrece una mayor capacidad en términos
de procesador (500MHz) y memoria (256MB RAM y un disco duro de hasta 32GB). Está
equipado asimismo de dos interfaces: una Digimesh y otra 802.15.4. De forma adicional,
contiene interfaces Wi-Fi, GPRS y Ethernet para conectarse a Internet. Una vez que la
información de los nodos y repetidores alcanza el gateway, el gateway la hace accesible
de forma global.

4.2.3 Waspmote IDE

El IDE (Integrated Development Environment) que se va a utilizar es el compilador de


la plataforma Arduino, siguiendo el mismo estilo de librerı́as y funcionamiento.

Libelium ha desarrollado una API (Application Programming Interface) en C/C++,


para facilitar la programación de aplicaciones utilizando Waspmote. Esta API engloba
todos los módulos que se integran en Waspmote, ası́ como el manejo de otras funciona-
lidades como las interrupciones o los diferentes estados energéticos.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 26

Figura 4.4: SmartSantander - Gateway

El IDE-Waspmote [22] incluye todas las librerı́as del API [23] necesarias para compilar
los programas.

Figura 4.5: Programación nodo con Waspmote IDE

4.2.4 XCTU

XCTU [24] es una aplicación multiplataforma diseñada para permitir que los desarrolla-
dores interactuen con los módulos RF Digi a través de una interfaz gráfica fácil de usar.
Incluye las herramientas para configurar y testear los módulos RF Xbee.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 27

En nuestro trabajo, emplearemos esta aplicación en una de las etapas iniciales para
comprobar la correcta recepción de las tramas (a las cuales se ha aplicado el cifrado
homomórfico) en el gateway.

4.2.5 Librerı́as SmartSantander

Emplearemos las librerı́as desarrolladas en el marco de SmartSantander y extenderemos


su funcionalidad para incorporar el cifrado homomórfico.

4.2.6 Librerı́a ZeroMQ

La mayor parte de aplicaciones hoy en dı́a (tal y como el despliegue de nodos que nos
ocupa en este trabajo) están formadas por componentes ubicados en algún tipo de red,
bien LAN o Internet. La mayor parte de desarrolladores terminan enfrentándose a algún
tipo de mensajerı́a en dichas aplicaciones. Algunos utilizan productos de mensajerı́a de
cola ya existentes; pero la mayor parte del tiempo acaban desarrollándolo ellos mismos
usando TCP o UDP. Aunque estos protocolos no son difı́ciles de utilizar, hay una gran
diferencia entre enviar unos pocos bytes de A a B, a hacer mensajerı́a de una forma
fiable.

Haremos uso de ZeroMQ [25], una librerı́a de mensajerı́a que actúa como un framework
de concurrencia. Ofrece a las aplicaciones una única API de sockets para trabajar, sin
importar el transporte real subyacente (TCP, multicast, in-process, inter-process). Per-
mite conectar sockets con patrones N-to-N: FAN-OUT, PUB-SUB, distribución de tareas
y REQUEST-REPLY. Es lo suficientemente rápido como para emplearse en productos
clusterizados. Su modelo ası́ncrono I/O permite desarrollar aplicaciones multicore esca-
lables, construido como tareas ası́ncronas de procesado de mensajes. Su API es sencilla
y se puede ejecutar sobre la mayor parte de sistemas operativos.

4.2.6.1 Patrón PUB-SUB

Publish/Subscriber es un patrón clásico donde los transmisores de mensajes, llamados


publishers, no programan el envı́o de los mensajes directamente a un conjunto de re-
ceptores especı́ficos, llamados subscribers; sino que los mensajes se publican sin tener
consciencia de si habrá algún subscriber para ellos.

El escenario B de la Figura 4.6 es el más conocido: múltiples subscribers se suscriben a


los mensajes/topic publicados por un publisher. El escenario A sin embargo, ofrece mayor
interés en tanto que tenemos un único subscriber suscribiéndose a múltiples publishers.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 28

Figura 4.6: PUB-SUB Escenarios

En este esquema, los datos se publican junto a un topic, y los subscribers normalmente
establecen un filtro con aquellos topics que les interesan.

La comunicación PUB-SUB es ası́ncrona. Si un servicio publish ya ha sido arrancado, y


se inicializa un servicio subscribe, no se recibirán aquellos mensajes que ya habı́an sido
publicados con anterioridad por el publisher. El comienzo del publisher y subscriber es
independiente uno del otro.

Este patrón de mensajerı́a será recurrente en el desarrollo del trabajo. Nos encontraremos
frente a escenarios del tipo A, donde el gateway actuará como subscriber de las tramas
enviadas por los nodos (publishers); y pasarán a tomar el papel de publishers cuando
envı́en tramas hacia el servidor, quien se suscribirá a sus respectivos topics.

4.3 Diseño de técnicas de Cifrado Homomórfico

El esquema de la Figura 4.7 representa el modelo de red que nos ocupa. Como puede
apreciarse, tenemos diferentes clústeres de sensores que explotan un troncal inalámbrico
multisalto para enviar sus datos medidos al sumidero de la red. Cada cluster está com-
puesto por un número variable de nodos y un gateway. Cada gateway será encargado
de reunir los mensajes cifrados recibidos de los nodos sensores locales a su cluster, y de
implementar nuestro esquema seguro de agregación.

Para la implementación del cifrado homomórfico en la red, modificaremos la programa-


ción existente tanto de los nodos IoT, como del gateway y servidor. Los sensores tomarán
medidas del ambiente (en nuestro caso únicamente de temperatura) y procederán a cifrar
el valor sensado y su cuadrado antes de enviarlo al gateway. Una vez el gateway haya
recibido las medidas cifradas de sus nodos hijos, computará la suma de las mismas, y
reenviará dos únicos valores (la suma de los valores cifrados, y la suma de los valores al
cuadrado cifrados) al servidor. Finalmente, el servidor descifrará los datos recibidos de
los diferentes gateway y derivará las medidas estadı́sticas correspondientes: la media y
la varianza.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 29

Figura 4.7: Arquitectura de red

Una importante consecuencia de utilizar el esquema de cifrado propuesto por Castelluc-


cia [6] para agregación de datos en WSNs, es que el nodo sumidero necesita conocer los
identificadores de todos los nodos sensores que han participado en la suma final, para
poder generar la clave correcta para el descifrado. No se requiere que todos los nodos
sensores contesten a todas las solicitudes. De hecho, los nodos en una WSN pueden
no estar disponibles por variadas razones: una falta temporal de conectividad, baterı́a
limitada, o simplemente fallos de hardware o una extracción maliciosa. Por tanto, se
vuelve esencial definir un mecanismo que haga saber al sumidero los identificadores de
los nodos que han colaborado en la medida agregada conjunta.

Es importante destacar que el cifrado se realiza única y exclusivamente por parte de


los nodos sensores. Los gateway por su lado, realizan la suma de éstos datos cifrados; y
el descifrado de los valores finales se realiza solo en el sumidero (nuestro servidor). Los
únicos dispositivos conocedores de las claves para llevar a cabo el cifrado homomórfico,
serán los de los extremos: nodos y servidor. Como resultado, nuestra arquitectura encaja
perfectamente con el backhaul mallado de SmartSantander, donde, aparte de soportar
múltiples WSNs, aseguraremos confidencialidad extremo a extremo y supondremos au-
tenticación salto a salto.

La Figura 4.8 se corresponde con la parte de la arquitectura de SmartSantander con la


que hemos trabajado, e incluye los programas de cifrado homomórfico del gateway y del
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 30

servidor; además de la base de datos que almacena los resultados.

Figura 4.8: SmartSantander - Diagrama de Cajas con CH

4.4 Modificación de las tramas de SmartSantander

4.4.1 Tramas Nodos Sensores

Las tramas enviadas por los nodos sensores mantendrán el formato de las de servicio de
SmartSantander (ver Figura 4.9), con las siguientes salvedades:

• Frame Type (1-byte). Llevará en vez del valor por defecto 0x00, el valor 0x66 para
indicar que el payload contiene las medidas xi y x2i cifradas.

• Payload. Se enviarán dos tripletas TLV (Type-Length-Value)2 :

– Medida cifrada. Mantendrá el identificador del tipo correspondiente al even-


to monitorizado (humedad, temperatura...), y el valor irá cifrado homomórfi-
camente.
– Medida al cuadrado cifrada. El identificador del tipo será 0x1 y el valor
se correspondrá con el cuadrado del valor sensado cifrado homomórficamente.

2
Todos los valores (dentro del payload) se envı́an como strings
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 31

Figura 4.9: Service Frame Over the Air Format - SmartSantander

4.4.2 Tramas Gateway

Por su parte, la comunicación de los nodos gateway con el servidor seguirá el formato de
las tramas genéricas de servicio de SmartSantander (ver Figura 4.10), con las siguientes
modificaciones:

• Node ID (2-bytes). Tomará el valor 0xAAAA.

• Sequence Number (1-byte). Para futura implementación, por el momento tomará


0xAA por defecto.

• Sensor Type (1-byte).

– 0x67. Indica que la trama ha sido enviada por el gateway siguiendo el esque-
ma de cifrado homomórfico, por lo que el payload contendrá tres tripletas.

• Payload. Tres tripletas TLV:

– Suma de las medidas cifradas. Se mantendrá el identificador del tipo de


evento sensado recibido de los nodos hijos (humedad, presión, temperatura...),
y el valor será la suma de las n medidas cifradas.
– Suma de las medidas al cuadrado cifradas. El identificador del tipo será
0x91 3 , e indicará que el valor lleva la suma de los cuadrados de las medidas
(cuyo evento viene indicado en la primera tripleta) cifrado homomórficamente
(x2i ).
– IDs de los nodos El tipo de esta tripleta será 0x99 para indicar que el
campo valor contiene el array de los IDs de los nodos (2 bytes cada uno) que
han participado en las medidas.

3
Al igual que en las tramas de los nodos sensores
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 32

Figura 4.10: Generic Frame - SmartSantander

4.5 Cálculo de medidas estadı́sticas

Para obtener la media y la varianza, el gateway tiene que realizar los siguientes cálculos
con las medidas recibidas de sus nodos hijos:

n
!
Cx = c xi (4.1)
i=1

n
!
Cy = c x2 (4.2)
i
i=1

donde xi es el valor individual medido por el nodo sensor, cxi es el anterior valor cifrado,
cx2 el cuadrado de la medida cifrado, y n el número total de sensores que han colaborado
i

en la medida; y enviará ambos al sumidero.

El sumidero tendrá que descifrar estos dos valores para calcular la media E(x) y la
varianza V ar(x) de los datos medidos:

Dec(Cx , K, M ) Cx − K mód M
E(x) = = (4.3)
n n

Dec(Cy , K, M ) Cy − K mód M
E(x2 ) = = (4.4)
n n

V ar(X) = E(x2 ) − E(x)2 (4.5)

"n
teniendo en cuenta que K = i=1 ki , y cada ki se corresponde con la clave compartida
entre cada nodo i y el sumidero.

En el escenario concebido para este piloto, cada nodo sensor muestrea periódicamente
(cada 30 segundos) la temperatura ambiente. Las muestras se envı́an entonces al gateway,
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 33

quien implementa el esquema de agregación segura con aquellas recibidas dentro de un


periodo de tiempo de 1 minuto.

4.6 Implementación

En esta sección detallaremos el proceso seguido en nuestra implementación de un piloto


de cifrado homomórfico, junto a la lógica de cada programa.

4.6.1 Nodos

Programaremos cada nodo de forma individual a través de la herramienta software


Waspmote IDE. Añadiremos como argumento a la función sendTemperatureServiceFra-
meUsingHomomorphicCipherWithKeystream(uint16 t keystream) la clave secreta pre-
viamente compartida con el servidor. Dicha clave, junto con el ID del nodo, se registrará
en un archivo de texto node keys.txt para futura referencia por parte del servidor.

En el entorno del laboratorio, encenderemos los diez nodos sensores para que comiencen
a monitorizar la temperatura y envı́en sus muestras cifradas.

Los nodos hacen uso de las librerı́as de SmartSantander programadas en C++, las
aportaciones hechas en este trabajo se encuentran en los archivos SmartSantander.cpp
y SmartSantander.h.

Cada nodo:

1. Invoca a la función sendTemperatureServiceFrameUsingHomomorphicCipherWith-


Keystream(uint16 t keystream) donde keystream es la clave del nodo previamente
compartida con el sumidero (servidor).

2. Llama a la función createTemperatureEncryptedFrameWithKeystream(uint16 t keys-


tream, uint8 t type, uint8 t seqNum) donde type es 0x66, siguiendo el formato
definido en la Sección 4.4.1

3. Se toman 5 muestras de temperatura y se calcula la media, valor que se introduce


como value en la funcion createTemperatureEncryptedFrameWithValueAndKeys-
tream(float value, uint16 t keystream, uint8 t type, uint8 t seqNum)

4. Se cifra homomórficamente el valor medido: cxi = Enc(xi , ki , M ) donde k es el


argumento keystream y M vale 4293999999.

5. Se calcula el cuadrado del valor medido yi = x2i , y se cifra: cyi = Enc(yi , ki , M )


Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 34

Figura 4.11: Diagrama lógica nodo sensor

6. Se rellenan los campos de la cabecera de la trama de servicio de SmartSantander


(node ID, sequence number, sensor type, frame type), y en el payload se añaden
dos tripletas:

(a) (T,L,V) - (0x02, length(cxi ), ASCII(cxi )4 )


(b) (T,L,V) - (0x91, length(cyi ), ASCII(cyi ))

7. Enviamos la trama al gateway

4.6.2 Gateway

El gateway seguirá la lógica del código desarrollado para esta aplicación gateway subscription.c
y reflejado en la Figura 4.12

Cada gateway:

1. Abre el socket a la dirección de loopback 127.0.0.1 y puerto 5554 haciendo uso de


las librerı́as ZMQ

2. Se suscribe a aquellas tramas que tengan por tópico ”SERVICE”


4
ASCII(x) denota la representación del valor x en ASCII)
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 35

3. Entra en un bucle infinito, donde:

(a) Inicializa el array con los ID de los nodos a cero, asi como el array que
almacena los cálculos, sum encrypted value for type donde la posición 0
!
guarda el tipo de sensor, la posición 1 Cx = ni=1 cxi mód M y la posición 2
!
Cy = ni=1 cyi mód M
(b) Entra en un bucle de duración 1 minuto, donde:
i. Recibe las tramas de los nodos sensores a las que se ha suscrito, que siguen
el formato de los mensajes multiparte de ZMQ; y analiza la segunda parte,
que es la trama de la Seccion 4.4.1
ii. Extrae el ID del nodo, tipo de sensor, tipo de trama y longitud del payload
iii. Analiza el payload solo de aquellas tramas cuyo tipo de trama sea 0x66
iv. Almacena el tipo recibido en TLV, y lleva a cabo la suma si el tipo se
encuentra dentro del array de tipos cifrados conocidos por el gateway (en
nuestro caso únicamente la temperatura)
v. Añade el node ID al array de IDs de los sensores
(c) Cuando el minuto expira, comprueba que la cuenta de nodos sea mayor que
cero, y crea la trama a enviar al servidor, siguiendo el formato definido en la
Sección 4.4.2, donde:
i. Rellena un buffer con los el ID de SmartSantander 0xBBBB, el ID del
nodo 0xAAAA, el número de secuencia 0xAA, el tipo de sensor 0x67, el
tipo de trama 0x00
ii. Añade el payload con las tres tripletas:
A. (T,L,V) - (0x02, length(Cx ), ASCII(Cx )
B. (T,L,V) - (0x91, length(Cy ), ASCII(Cy ))
C. (T,L,V) - (0x99, length(nodeCount ∗ 2), ASCII(nodeIDs))
iii. Copia la trama a un array del tamaño exacto
(d) Abre un socket con el servidor, mu.tlmat.unican.es en el puerto 8083 y envı́a
un mensaje multiparte de tres partes:
i. 0x03
ii. MDEV.smartsantander.eu
iii. La trama creada anteriormente
(e) Cierra el socket con el servidor

4. En caso de salir del bucle infinito (no deberı́a darse tal y como está programado),
cerrar el socket a localhost y el contexto ZMQ.
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 36

Figura 4.12: Diagrama lógica Gateway

4.6.3 Servidor

El servidor hará uso del programa gateway subscription.c que sigue el siguiente algoritmo
reflejado en la Figura4.13.

El servidor:

1. Lee del archivo node keys.txt las claves compartidas con cada nodo, junto al ID
del mismo

2. Abre el socket a localhost con puerto 8086 haciendo uso de las librerı́as ZMQ

3. Se suscribe a aquellas tramas cuyo tópico sea ”0x03”

4. Entra en un bucle infinito, donde:

(a) Recibe las tramas de los gateway a las que se ha suscrito, que siguen el formato
de los mensajes multiparte de ZMQ; y analiza la tercera parte de los mismos,
que se corresponde con la trama de la Seccion 4.4.2
(b) Extrae el tipo de sensor y analiza el payload solo de aquellas en las que sea
0x67
(c) Lee las tres tripletas y almacena su valor
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 37

(d) Calcula la clave maestra (K) sumando las claves (ki ) correspondientes a cada
ID de nodo leı́do de la tercera tripleta TLV
(e) Descifra la suma (Cx ) de la primera tripleta haciendo: Sx = Dec(Cx , K, M ) =
Cx − K mód M
(f) Descifra la suma (Cy ) de la segunda tripleta haciendo: Vx = Dec(Cy , K ′ , M ) =
Cy − K ′ mód M
(g) Calcula la media como: Avg = Sx /n donde n es el número de nodos
(h) Calcula la varianza como: V ar = Vx /n − Av 2
(i) Abre la conexión con la base de datos MySQL
(j) Inserta en la tabla homomorphic cipher results el valor de la suma cifra-
da, la suma del cuadrado cifrado, la suma descifrada, la suma del cuadrado
descifrada, la media, la varianza, los IDs de los nodos, y la clave maestra
(k) Cierra la conexión con la base de datos

5. En caso de salir del bucle infinito (no deberı́a darse tal y como está programado),
cierra el socket con localhost y el contexto ZMQ

Se ha creado una base de datos en el servidor, con una única tabla, homomorp-
hic cipher results cuya estructura es la mostrada en la Tabla 4.1.

Tipo Nombre
encrypted sum float
sum float
encrypted square sum float
square sum float
average float
variance float
nodes varchar(255)
key int(11)
timestamp timestamp PK

Cuadro 4.1: Tabla homomorphic cipher results


Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 38

Figura 4.13: Diagrama lógica Servidor

4.7 Ejecución

La Figura 4.14 refleja una ejecución real en el Gateway dentro del ambiente del labo-
ratorio. De los 10 nodos que han enviado tramas, únicamente 7 han implementado el
protocolo de cifrado homomórfico. Cada vez que el gateway recibe una trama de un
nodo, comprueba si sigue nuestro esquema de cifrado, y en caso de hacerlo la analiza y
suma sus valores a los contadores:
7
!
Cx = cxi = 37228,85 (4.6)
i=1

7
!
Cy = cyi = 40676,2151 (4.7)
i=1

Los valores de las expresiones 4.6 y 4.7 son los que el gateway procederá a enviar al
servidor, seguido de los identificadores de los 7 nodos.

5
Tanto las medidas como la suma son redondeadas a dos decimales
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 39

Figura 4.14: Ejecución programa Gateway


Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 40

Tomemos como referencia la trama enviada por el nodo con identificador 271A (FIgura
4.15), que el gateway ha analizado y ha devuelto información. Lo primero que ha hecho
ha sido comprobar que el frame type vale 0x66, ya que al tomar ese valor, puede afirmar
que el payload sigue la estructura del esquema de cifrado homomórfico. A continuación
procede a leer del payload las dos tripletas TLV con tipos 0x02 (temperatura cifrada)
y 0x92 (temperatura al cuadrado cifrada) que toman los valores 7322,87 y 7779,2968
respectivamente; y lo suma a sus contadores.

Figura 4.15: Trama recibida por el Gateway del primer nodo

Vamos a inferir los valores en claro que midió el sensor - para lo cual emplearemos la
clave compartida entre el nodo 271A y el servidor, desconocida en todo momento por el
gateway:

xi = Dec(7322,87, 7301, M ) = 7322,87 − 7301 mód M = 21,87 (4.8)

yi = Dec(7779,2968, 7301, M ) = 7779,2968 − 7301 mód M = 478, 2968 = 21,872 (4.9)

con M = 4293999999. La temperatura inicial que midió el sensor era 21, 87o C.

La Figura 4.16 refleja la misma ejecución pero en el lado del servidor. La primera trama
se corresponde con aquella que generó el gateway con los datos recibidos de sus 10 nodos
hijos (Figura 4.14). Analizando la estructura de tramas SmartSantander que definimos
en la Sección 4.4.2, extraemos las tres tripletas TLV del payload. En esta ocasión los
tipos serán 0x02, 0x92 y 0x99 - suma de temperatura cifrada, suma de temperaturas
al cuadrado cifradas y array con los identificadores de los nodos respectivamente. Si
leemos los ID, podemos comprobar que efectivamente hemos recibido las medidas de los
7 nodos que enviaron tramas al gateway. El servidor, al conocer las claves individuales
compartidas con cada uno de esos sensores, calcula la clave maestra (4.10) y descifra los
valores recibidos (4.11, 4.12):
7
!
K= ki = 37070 (4.10)
i=1

Sx = Dec(37228,8, 37070, M ) = 37228,8 − 37070 mód M = 158,8 (4.11)

Sy = Dec(40676,2151, 37070, M ) = 40676,2151 − 37070 mód M = 3606,2151 (4.12)


Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 41

Figura 4.16: Ejecución programa Servidor

Teniendo ya estos dos valores, puede calcular fácilmente la media y la varianza:

Avg = Sx /n = 158,8/7 = 22,6857 (4.13)

V ar = Sy /n − Avg2 = 3606,2151/7 − 22,692 = 0,5326 (4.14)

La Tabla 4.2 contiene las claves compartidas con cada uno de los nodos y los valores
cifrados que enviaron al gateway. A partir de ambas podemos descifrar estos valores
individualmente, y realizar la suma de todos ellos en claro. Como podemos observar,
obtenemos el mismo valor 158.8 y 3606.2151 que calculó el servidor en 4.11 y 4.12.
Podemos por tanto afirmar que el cifrado de nuestro protocolo se comporta de forma
homomórfica respecto a la operación suma.

Tras descifrar los datos recibidos por cada uno de los gateway, el servidor inserta los
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 42

NodeID Clave cx c x2 x x2
271A 7301 7322.87 7779.2968 21.87 478.2968
2712 9571 9594.22 10110.1679 23.22 639.1679
271C 4775 4796.54 5238.9716 21.54 463.9716
2714 1680 1702.38 2180.8642 22.38 500.8642
2711 8931 8954.48 9482.3105 23.48 551.3104
271B 3701 3723.77 4219.4726 22.77 518.4726
2713 1111 1134.54 1665.1315 23.54 554.1315
SUMA 37228.8 40676.2151 158.8 3606.2151

Cuadro 4.2: ID Nodos, Claves y valores cifrados y sin cifrar

valores en una base de datos. La Figura 4.17 es un extracto de los contenidos en dicha
base de datos, correspondientes a esta ejecución.

Figura 4.17: Extracto consulta base de datos


Capı́tulo 5

Conclusiones y Futuras lı́neas

Podemos diferenciar dos claras lı́neas de trabajo posteriores a este trabajo: una primera
enfocada a las redes de sensores y a la aplicación de técnicas de cifrado homomórfico; y
otra relacionada con las potenciales aplicaciones del cifrado homomórfico.

5.1 WSNs

En este trabajo se ha seleccionado, diseñado e implementado un esquema de cifrado


homomórfico sobre una WSN que posibilita que los gateway intermedios agreguen los
datos cifrados de sus hijos sin necesidad de descifrarlos. Como resultado, incluso si
se da la situación en la que un gateway es comprometido, en términos de seguridad
el atacante no podrá espiar el valor real de los datos. Esto resulta en una privacidad
mucho más robusta que la de aquellos esquemas de agregación basados en cifrado salto a
salto. La propuesta satisface ası́ los requisitos de seguridad y las limitaciones de energı́a
caracterı́sticas de las WSNs. Siguiendo nuestro modelo, se pueden realizar aplicaciones
que se apoyen en una infraestructura troncal del mallado inalámbrico, y den soporte a
múltiples WSNs, asegurando agregación de datos y al mismo tiempo seguridad extremo
a extremo.

La privacidad que garantizamos con nuestra solución es comparable a la protección ofre-


cida en esquemas que utilizan cifrado de extremo a extremo sin agregación. Nuestro
esquema no es solo mucho más eficiente en términos de ancho de banda que este anterior
enfoque (enviamos una trama en total por clúster, en vez de una por cada sensor per-
teneciente al clúster), sino que redistribuye la carga de comunicación de forma mucho
más equitativa entre los nodos de la red, extendiendo en la vida útil de la WSNs.

43
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 44

Una limitación de nuestra propuesta va ligada a la necesidad de enviar las identidades de


los nodos junto a las medidas cifradas; ya que puede conllevar una sobrecarga importante.
Una futura lı́nea de actuación podrı́a buscar métodos capaces de reducir este coste.

Hemos testeado e implementado la solución desarrollada en un laboratorio de Smar-


tSantander con un número reducido de nodos sensores. Un siguiente paso consistirı́a en
desplegar e integrar este mecanismo en todos los sensores de la ciudad. En las pruebas
realizadas, el sumidero recibe directamente las medidas agregadas por el gateway. Serı́a
recomendable realizar un estudio del despliegue de los sensores de temperatura y sus
correspondientes gateway en el escenario de SmartSantander, y establecer una metodo-
logı́a a seguir para agrupar los nodos y gateway en clústers. Dado que la información
estadı́stica de temperatura se obtiene de los clústers, podrı́amos relacionar dicha agru-
pación con la posición fı́sica de los dispositivos. Por el momento no hemos definido qué
valores han de tomar los bytes de SmartSantander ID, Node ID, Sequence Number y
Frame Type (Figura 4.10). Se podrı́an proponer extensiones del protocolo que hagan uso
de estos campos de información.

La solución propuesta es independiente del tipo de información sensada y manejada por


los nodos. Aunque en este trabajo nos hemos centrado en un evento como la tempera-
tura, se podrı́a ampliar su área de aplicación a otro tipo de redes de sensores de mayor
complejidad, como redes de sensores multimedia cuyos nodos intercambian señales de
video y audio. En el caso de SmartSantander, se podrı́a estudiar a qué eventos de moni-
torización tiene sentido aplicar el cifrado homomórfico, y proceder a su implementación.

5.2 Cifrado homomórfico

En el Capı́tulo 3 dimos una primera visión del cifrado homomórfico. Un trabajo futuro
deberı́a analizar con un mayor nivel de detalle el esquema de cifrado completamente
homomórfico propuesto por Gentry. Aunque la base matemática y técnica de su primera
propuesta [16], basada en ideal lattices, no fuera sencilla; el esquema posteriormente
creado junto a Marten van Dijk, Shai Halevi y Vinod Vaikuntanatha [17], hace uso
de operaciones aritméticas simples tales como la división, con algunas variaciones poco
comunes pero fáciles de abordar.

Otra interesante lı́nea de actuación consiste en analizar las posibles aplicaciones de este
tipo de esquemas de cifrado. Algunas requieren de cifrado completamente homomórfi-
co (fully homomorphic encryption, mientras que otras necesitan algo de cifrado ho-
momórfico (somewhat homomorphic encryption) [26]. Un esquema completo permite
realizar cualquier computación sobre el texto cifrado, mientras que los esquemas algo
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 45

homomórficos son más restrictivos. El cifrado homomórfico aditivo que hemos aplicado
en SmartSantander pertenece a este segundo grupo, donde solo podemos llegar a aplicar
sumas sobre los datos medidos.

Una posible aplicación del CH se basa en la privacidad del consumidor y la pu-


blicidad. Aunque normalmente no deseada, la publicidad puede resultar útil cuando
se enfoca a las necesidades del usuario. Aun asi, muchos usuarios están preocupados
con la privacidad de sus datos. [27] diseña una red social donde las recomendaciones se
basan en los gustos de los amigos del usuario con la condición de confidencialidad. En
tal sistema, el cifrado homomórfico se aplica para que el usuario reciba recomendaciones
de “amigos”sin desvelar la identidad del recomendador. En [28] se presenta un sistema
en el que el usuario recibe recomendaciones cifradas sin que el sistema sea consciente
del contenido. Otro enfoque de publicidad personalizada [29] consiste en un dispositivo
móvil que envı́a la localización de un usuario a un proveedor, quién envı́a publicidad
customizada (como códigos de descuento) de vuelta al usuario.

Otras aplicaciones se incluyen en el ámbito de la medicina. En [29] se propone un


escenario en el que los datos médicos de un paciente se suben de forma continuada a
un proveedor de servicios en forma cifrada. El usuario es el dueño de los datos, y es el
único capaz de descifrarlos. El proveedor de servicios puede computar sobre los datos
cifrados (presión, ritmo cardiaco, peso...) para predecir la probabilidad de que ocurran
ciertas condiciones, o para hacer un seguimiento de la salud del paciente.

La búsqueda y procesamiento de datos en amplias cantidades de información ofre-


cen un gran valor, pero a expensas de comprometer la privacidad del usuario. Se podrı́an
aplicar técnicas de CH como solución a esta problemática [30].

Imaginemos un escenario en el que una corporación tiene datos sensibles ası́ como algo-
ritmos propietarios que no quieren hacer públicos (por ejemplo algoritmos de predicción
de precios de bolsa en el sector financiero). En relación a la privacidad financiera,
[29] propone el uso de cifrado homomórfico para subir tanto los datos como el algoritmo
cifrados, de forma que se puedan subcontratar las computaciones a un servidor en la
nube.

Las elecciones son una de las actividades más importantes en las sociedades democráti-
cas. La mayor parte de los protocolos de voto electrónico [31] [32] [33] que se han
investigado se basan en técnicas de cifrado homomórfico. Una de las caracterı́sticas que
hacen que el cifrado homomórfico encaje tan bien en esta aplicación, es el recuento de
votos. En tal sistema, los votantes cifran su voto, y al estar cifrado se puede manejar
con cierta facilidad: no hay problemas para relacionar el voto con el votante. Los votos
se pueden acumular en un boletı́n público y cada uno puede comprobar que su voto se
Implementación de un Piloto de Cifrado Homomórfico en Redes de Sensores 46

ha contabilizado, y que nadie ha votado dos veces. Cuando se han obtenido todos los
votos, se aplica el cifrado homomórfico para sumar los votos, y se descifra la suma.

Como podemos ver, las aplicaciones del cifrado homomórfico son extensas y de gran
actualidad. Nosotros hemos implementado tan solo una de ellas en el ámbito de las
redes de sensores, pero la investigación en este tema puede avanzar enormemente.
Bibliografı́a

[1] L. Eschenauer and V. D. Gligor. A Key Management Scheme for Distributed Sensor
Networks. ACM CCS, pages 41–47, 2000.

[2] Sencun Zhu, Sanjeev Setia, Sushil Jajodia, and Peng Ning. An Interleaved Hop-by-
Hop Authentication Scheme for Filtering False Data in Sensor Networks. Security
and Privacy, 2004.

[3] Chris Karlof and David Wagner. Secure Routing in Wireless Sensor Networks:
Attacks and Countermeasured. Workshop on Sensor Network Protocols and Appli-
cations, 2003.

[4] Anthony D. Wood and Ohn A. Stankovic. Denial Of Service in Sensor Networks.
IEEE Computer, pages 54–62, 2002.

[5] Robert Riggio and Sabrina Sicari. Secure Aggregation in Hybrid Mesh/Sensor
Networks. 2009.

[6] C. Castelluccia, E. Mykletun, and G. Tsudik. Efficient Aggregation of Encrypted


Data in Wireless Sensor Networks. 2009.

[7] V. Rijmen J. Daermen. AES Proposal: Rijndael. National Institute of Standards


and Technology.

[8] R. L. Rivest. The RC5 Encryption Algorithm. Proceedings of the Second Interna-
tional Workshop on Fast Software Encryption (FSE), pages 86–96, 1994.

[9] Lingxuan Hu and David Evans. Secure Aggregation for Wireless Networks. Works-
hop on Security and Assurance in Ad hoc Networks, 2003.

[10] Miloud Bagaa, Noureddine Laslaa, Abdelraouf Ouadjaout, and Yacine Challal. SE-
DAN: Secure and Efficient Data Aggregation protocol for wireless sensor Networks.
IEEE Local Computer Networks / Workshop on Network Security, pages 1053–1060,
2007.

[11] D. Micciancio. Technical Perspective: A First Glimpse of Cryptography’s Holy


Grail. 2010.
47
Bibliografı́a 48

[12] L. Adleman R. Rivest. and M. Dertouzos. On Data Banks and Privacy Homomorp-
hism. Foundations of Secure Computation, pages 169–180, 1978.

[13] C. Swenson. Modern Cryptanalysis: Techniques for Advanced Code Breaking, edi-
tor= John Wiley Sons ISBN = 9780470135938.

[14] R. Rivest. A. Shamir and L. Adleman. A Method For Obtaining Digigtal Signatures
and Public-Key Cryptosystems. Communications of the ACM, pages 120–126, 1978.

[15] E. Goh D. Boneh and K. Nissim. Evaluating 2-DNF Formulas on Ciphertexts.


Proceedings of Theory of Cryptography (TCC), pages 325–341, 2005.

[16] C. Gentry. A Fully Homomorphic Encryption Scheme. 2009.

[17] S. Halevi M. van Dijk, C. Gentry and V. Vaikuntanathan. Fully Homomorphic


Encryption over the Integers. Advances in Cryptology - EUROCRYPT 2010, pages
24–43, 2010.

[18] J. A. Galache P. Sotres J. R. Santana V. Gutierrez R. Ramdhany A. Gluhak S.


Krco E. Theodoridis L. Sanchez, L. Mu oz and D. Pfisterer. SmartSantander: IoT
Experimentation over a Smart City Testbed. Computer Networks, 2013.

[19] SmartSantander deployed facility in the city of Santander. URL


http://maps.smartsantander.eu/.

[20] Digi. Wireless Machine-to-Machine (M2M) Device Networking Products. URL


http://www.digi.com.

[21] Libelium Wireless Distributed Communications. URL


http://www.libelium.com/.

[22] Libelium Comunicaciones Distribuidas. Waspmote IDE User Guide. 2014.

[23] Waspmote API. URL http://www.libelium.com/api/waspmote/.

[24] XCTU Next Generation Configuration Platform for Xbee RF Solutions. URL
https://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu.

[25] ZeroMQ Distributed Messaging. URL http://zeromq.org.

[26] C. Carr K. Gjosteen A. Jaschke C. A. Reuter F. Armknecht, C. Boyd and M. Strand.


A Guide to Fully Homomorphic Encryption. 2005.

[27] A. Peter A. Jeckmans and P. H. Hartel. Efficient Privacy-enhanced Familiarity-


based Recommender System. 8134 of Lecture Notes in Computer Science:400–417.
Bibliografı́a 49

[28] F. Armknecht and T. Strufe. An Efficient Distributed Privacy Preserving Recom-


mendation Protocol. The 10th IFIP Annual Mediterranean Ad Hoc Networking
Workshop, Med-Hoc-Net 2011, pages 65–70, 2011.

[29] K. E. Lauter M. Naehrig and V. Vaikuntanathan. Can Homomorphic Encryption


be practical? Proceedings of the 3rd ACM Cloud Computing Security Workshop,
CCSW, pages 113–124, 2011.

[30] Z. Yang et al. Privacy-perserving Classification of Customer Data Without Loss


of Accuracy. Proceedings of the 2005 SIAM International COnference on DAta
Mining, SDM 2005, pages 92–102, 2005.

[31] A. Acquisti. Receipt-Free Homomorphic Elections and Write-in Voter Verified


Ballots. Technical Report 2004/105, CMU-ISRI-04-116, 2004.

[32] A. Huszti. A Homomorphic Encryption-based Secure Electronic Voting Scheme.


2011.

[33] S. Shukla S. S. Shinde and D.K. Chitre. Secure E-voting Using Homomorphic Tech-
nology. International Journal of Emerging Technology and Advanced Engineering.

También podría gustarte