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

Anexos