Buenas a todos,
Como ayer vi que había unas cuantas preguntas al respecto voy a empezar un pequeño ciclo sobre la privacidad (quizás me anime a acabar hablando del e-voting y todo, aunque es parecido a una autentificación normal añadiendo el "anonimato" ) de nuestros datos, y de cómo podemos diseñar bases de datos anónimas peeero útiles de cara a estudios estadísticos.
Por supuesto no soy un experto en el tema, si alguien sabe algo que desconozco o me equivoco en algo estoy más que abierto a corregir, a cambiar de idea o incluso si a alguno de vosotros se os ocurre una posible mejora en cuanto a uso de estas técnicas puede estar muy interesante.
Empiezo con un poco de historia.
¿Cuándo empezó a preocupar la privacidad de los datos?
Tenéis la historia completa aquí, pero voy a resumir un poco en español.
Idea: Olvidaos de la privacidad. Ya es imposible garantizarla. En alguna base de datos del mundo hay un dato sobre vosotros que se podría usar para chantajearos, suplantaros la identidad, acosaros, etc. Y solo es cuestión de esfuerzo lograr encajar las piezas para que ese dato se pueda relacionar con vosotros. Se puede incluso relacionar vuestros gustos en Filmaffinity con la probabilidad de que tengáis SIDA. Esto es lo que dice el profesor Paul Ohm, proponiendo un escenario catastrofista, pero no está tan alejado de la realidad.
El tema es que hasta hace poco, no se consideraban por ejemplo vuestros gustos en películas o en comida "datos de posible identificación personal", así que no hay nada que os proteja contra alguien que quiera identificaros de alguna manera. Imaginad que la seguridad social logra cruzar sus datos con los datos de compra en supermercados y descubre que cada semana compráis helados de chocolate. Quizás os haga pagar más por si las moscas. O una empresa de seguros de coche que descubra que vuestras pelis favoritas son las de tipo "Fast and Furious" y os pasáis el día jugando al "NFS: Underground". La idea está clara, ¿no?
Por otro lado, no podemos pretender que los centros comerciales, las tiendas online, etc. dejen de guardar datos nuestros para estudios estadísticos. Y ellos quieren sacar rendimiento de estos estudios, utilidad práctica. Un ejemplo de anonimato total sería "x personas han comprado pan hoy, y han comprado carne" (a menos que x = población total, entonces ya no serías anónimo!), pero esto no les interesa a las compañías. Ellos quieren saber qué edad tiene, si ha pagado con tarjeta de crédito, si es alto o bajito... Yo que sé, todo puede ser útil en esta era.
Si os he convencido de la importancia de la privacidad pasemos a los aspectos técnicos
La primera técnica usada para garantizar privacidad, y la más rudimentaria pero muy común es k-anonymity. La definición es bastante simple, en tu base de datos tienes lo que llamaremos "objeto de estudio", que pueden ser varias cosas (si tiene x enfermedad, si ha pagado con tarjeta, si ha comprado recientemente una peli porno) y lo que llamaremos "cuasiidentificadores", que también pueden ser varias cosas y es lo que sirve para identificar el sujeto. Decidir qué es qué depende de lo que queráis estudiar. Diremos que nuestra base de datos es k-anónima si cada cuasiidentificador o cada conjunto de cuasiidentificadores tiene por lo menos k elementos ahí.
Es decir, si usamos de cuasiidentificador la edad, diremos que nuestra base de datos es 100-anónima si tenemos 100 personas de cada edad en ella. Y si no, ¿qué hacemos? Muy fácil, agrupamos por edades y asignamos a todas ellas una etiqueta (en nuestro caso la media de estas edades). Recordad que queremos hacer esto maximizando su utilización, eso significa que no podemos coger al tuntún las etiquetas!
El algoritmo usado se llama MDAV, hay uno óptimo desarrollado pero no sé si está patentado o registrado y por si acaso no lo diré. En futuros posts si queréis me explayo más sobre el MDAV ya que es lo que yo usaría si tuviese una base de datos no muy conflictiva.
La segunda técnica va un poco más allá y os explicaré por qué es necesaria: Imaginad que habéis logrado un anonimato de 1000 personas en vuestra base de datos del salario que gana cada uno y queréis protegerlo de posibles ladrones que busquen gente "rica" para phishing, o lo que sea. Este anonimato va, por ejemplo en función de la edad y habéis hecho grupos en plan [18-20] - 1004 personas y ahora diremos que tienen 19 años todos ellos. Imaginad que todos estos ganan justo entre 2000-2500 € al mes. Pues ya han perdido el anonimato. El atacante puede recrear vuestra anonimización y saber quién gana ese dinero. Un ejemplo concreto que pasó aquí hace poco en las elecciones. En un pueblo de 4 personas todos votaron al PP. A ellos no les importa mucho claro, pero eso hace que pierdas todo el anonimato. Para eso se usa la l-diversidad (que haya al menos l elementos de tipos diferentes en cada celda).
Si os interesa seguiré explicando l-diversidad, t-parecido y el uso en encuestas y tal más adelante. Ya me diréis!