Privatizacion en el envio de datos entre medidores y un centro de Estadistica
Integrantes:
-Oscar Tapia
-Roberto Cifuentes
Descripcion
del problema y su solucion
Distintos
equipos de mediciones envian sus datos a una empresa de estadisticas
para tener observaciones de comportamiento sobre las mediciones, pero con
ello se conoce el dato de cada maquina en particular y esto puede
incurrir al aprovechamiento del exceso de informacion o facilidades
de un intruso que sepa estos datos.
Se
implementa un sistema de seguridad, llama encriptacion, en la que
los datos obtenidos se mantendran en oculto hasta el momento en que
se tengan los resultados de las operaciones matematicas necesarias
para usarlos en estadistica de datos, por lo que ahi no se conocera el valor de cada dato obtenido, sino que se conocera una
representacion de el conjunto de datos.
Analisis
del problema
El peligro de
filtracion de datos en el momento de su envio, es un problema que
se encuentra en desarrollo, con diversas tecnicas desarrolladas
tratando de dar cada vez mayor seguridad a los usuarios de aquellos
datos.
Un caso del problema
es el envio de mediciones obtenidas desde un sensor de temperatura
respectivamente. El caso se da cuando son varios sensores con los que
se esta trabajando, y como proposito de estos sensores se puede
obtener datos estadisticos (como el promedio) para fines de estudio
pertinentes. Para poder mantener de forma incognita cada dato
particular de temperatura, se trabajara con datos encriptados, por
los que desconoceran hasta el momento en que se tenga un resultado
global, como por ejemplo, la suma de los datos.
Metodo
de Encriptacion
Para lograr tener
informacion protegida, un metodo es usar la tecnica de
encriptacion asimetrica. Consiste en el uso de 2 llaves, una
publica y otra privada, de modo que lo que una de ellas cifra, solo
puede descifrarlo la otra, y viceversa. Se creo para no tener
problemas con el intercambio de claves del modo simetrico. Tanto el
emisor como el receptor poseen 2 claves, una clave publica que es
conocida por todos, y una llave privada que pertenece solo al
individuo.
En particular, se
implementara la tecnica de Encriptacion Homomorfica, que permite
el calculo matematico de valores encriptados sin la necesidad de
una llave secreta y se basa en resultados probabilisticos
(diferentes encriptaciones del mismo valor de fuente conlleva a
diferentes valores encriptados).
E(a) * E(b) = E(a+b)
Paillier
Dentro
de las distintas alternativas presentes
en la encriptacion homomorfica, se establece trabajar con el metodo
Paillier, consistente en las siguientes ecuaciones:
Diagrama
de la Situacion desarrollada y su explicacion
Los sensores toman datos de medicion, y se lo envian al Servidor en forma encriptada.
El servidor tiene los datos de medicion de cada sensor, pero no sabe cuando vale cada uno porque estos valores estan encriptados. Al servidor le interesa saber el valor de la sumatoria de cada tipo de medicion realizado, por lo que aplica la propiedad homomorfica realizando multiplicacion de estos valores encriptados, este resultado se lo envia al 3ro de confianza para que puede desencriptar la operacion realizada por el Servidor.
El 3ro de confianza recibe el calculo matematico realizado por el Servidor, y desencripta los valores encriptados usando su llave privada. El 3ro de confianza vuelve a mandar los datos al Servidor, pero ahora desencriptados.
El servidor recibe los datos desencriptados, por lo que tiene acceso solo a la sumatoria de los datos y no a cada valor especifico.
Elementos
de ELO330 a implementarla
Para
lograr el objetivo propuesto en este proyecto, se necesita primero la
conexion por red desde los sensores al servidor, y entre servidor y el 3ro de confianza, por lo que se desarrolla una conexion socket
tipo TCP.
Los
metodos implementados son los siguientes
int
socket(int domain, int type, int protocol);
// Crear el socket
int
connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
//
Conectar al servidor
ssize_t
send(int sockfd, const void *buf, size_t len, int flags);
//
Envío correspondiente de los datos por socket
ssize_t
recv(int sockfd, void *buf, size_t len, int flags);
//
Recibo del dato correspondiente por socket
int
bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
//
Unión
del socket al puerto del servidor
int
listen(int sockfd, int backlog);
// Puerto Servidor escucha por
posibles clientes a unirse a la conexión
new_fd
= accept(sockfd, (struct sockaddr *)&their_addr, &addr_size);
//
Se acepta la conexión entre el servidor y el cliente (sensor)
Para
la recepcion de distintos sensores en forma paralela, se utilizas
los hilos
de ejecucion,
uno para cada sensor que se quiera conectar con el servidor
threads[
i
]
= thread(&servidor::read_and_multiply, this, new_sd);
//
Creacion
e inicio del hilo i correspondiente a la funcion
//
read_and_multiply con el parámetro new_sd
threads[i].join();
//
Se espera a que el hilo i termine su funcionamiento para así
asegurar
// que se recibiran todos los datos necesarios enviados
por los sensores
Conclusiones
El mantener la privacidad de informacion en los sistemas de hoy en dia es algo que se esta buscando con mayor ambicion debido a que con la tecnologia actual se compromete la privatizacion del individuo que hace uso de esta. Con el uso de la encriptacion, se puede dar mayor nivel de seguridad a los datos que se desean mantener en privado, y a travez de demostraciones matematicas, se puede dar uso de la encriptacion homomorfica que permite realizar calculos y operaciones matematicas entre estos datos encriptados sin la necesidad de tener los valores en claro de cada operando.
El caso realizado en particular es el que se puede presentar en la mayor parte de las empresas que usan datos de mediciones para distintos propositos de estudio ya sea de conocer distintos comportamientos o para detectar fallas entre los medidores.
El uso de los conceptos aprendidos en elo330 ayudan a una optimizar el programa que se desea clear, utilizando los hilos de ejecucion y la conexion TCP, permite que el problema planteado comience a tener mayor confianza en cuanto a su solucion.
Dificultades
Correcto
funcionamiento de los hilos, refiriendose a que cuando los sensores estan todos dispuestos a realizar
conexion al mismo tiempo, el programa no sabe como proseguir,
perdiendo la esencia de lo que puede realizar un servidor que es
tener la capacidad de atender a clientes al mismo tiempo siendo que
los clientes estan dispuestos de manera simultanea.
- Se debe asumir el hecho que el servidor se debe comportar de forma correcta, refiriendome a que se puede dar el caso donde este envia por separado el dato de cada medicion al 3ro de confianza para desencriptar la informacion, por lo que asi podria tener en claro los datos de cada medicion, cosa que va en contra de las intenciones del proyecto
Anexos
- Introduction to Paillier Cryptosystem from Wikipedia
- Pascal Paillier, "Public-key-Cryptosystem Based on Composite Degree Residuosity Classes" EUROCRYPT99
- Codigo correspondiente https://drive.google.com/file/d/0ByeGCKnvkUNXLU5sVllINXFVS3M/view?usp=sharing