Microagregación en BB.DD. y en Encuestas

B

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.

Historieta

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.

Ejemplo de k-anonimización

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!

4
Nucklear

Interesante, va para favoritos y habrá que implementarlo para ponerlo en practica.

1 respuesta
elkaoD

Fav'd

C

#1, cuéntanos más. Vivo en el mundo del CRM y de las gandes bases de datos y me interesa mucho. De hecho, nos han llegado bases de datos de clientes con esos datos ya "anonimizados" xD. De primeras pensé que estaban mal. Son pruebas de acceso a universidades donde se hacen test psicotécnicos (para ver si el candidato está tronado). Además de estar codificadas las pruebas, los datos sociodemográficos de esa gente como la edad y el sexo venían con la técnica que comentas.

Insisto, cuéntanos más xdddd

2 respuestas
B

#2 yo tengo implementaciones en MATLAB por ahí de lo que hice yo para encuestas, cuando llegue a ello y si lo encuentro colgaré el algoritmo en pseudocódigo.

#4 mañana cuelgo gráficas del problema del MDAV y comparación con este algoritmo, he visto que está publicado el paper sobre él así que supongo que ya es público (buscad PCL microaggregation) y amplío info!

glolg

que grande, esto me lo he de leer con calma!

B

Lamento no poder ampliar info hoy, estoy un poco liado. Pero mañana en principio tengo tiempo :)

B

Vamos allá #4, no sé si te miraste el artículo que te pasé...

Siguiendo sobre el k-anonimato, no sé si quedó claro pero cuando haces los paquetes los haces multidimensionales. Es decir, lo que hice yo con las edades, si además añadiésemos alturas no haríamos paquetes en plan "22-25 años y 1.70-1.80" sino "círculo alrededor de los 23 años y 1.75", así que habría gente que con 22 años midiendo 1.70 no entraría en ese paquete (a partir de ahora celda) y gente que sí entraría con 23 años midiendo 1.70. Para esto te tienes que definir una distancia, obviamente. El algoritmo MDAV funciona más o menos así:

spoiler

El resultado final suponiendo que los datos están repartidos uniformemente en x = [0,1] e y = [0,1] sería algo así. (perdón por el descuadre, entre que estoy en un ordenador en alemán y uso paint...)

Veis aquí el problema? La celda 7 contiene todos los elementos con y alrededor de 0.5. Imaginad que estamos clasificando abajo por edades y arriba por alturas, esto podría traducirse a: Todos los que midan entre 1.70 - 1.75 tengan la edad que tengan diremos que tienen 50 años y miden 1.73. Pierdes MUCHA información aquí, supongo que se ve claro. El algoritmo PCL lo resuelve pero es complicado y no voy a entrar en detalles, baste decir que hace todas las celdas a la vez y quedan como hexágonos muy cucos.

Vayamos a la l-diversidad: Como ya comenté, tener 1000 individuos agregados en una celda puede no servir de nada si todos ellos tienen SIDA, por ejemplo. Así que necesitamos este concepto para evitar "ataques de homogeneidad". Necesitamos que en el grupo haya personas distintas en el apartado de "información importante" y hay varias maneras de hacerlo. Como una de ellas nos lleva al t-parecido, voy a hablar primero de esto.

t-parecido incluso aunque aseguremos l-diversidad, podemos recibir ataques con éxito si, por ejemplo un atacante compara las estadísticas globales de un dato con las estadísticas de nuestra celda. Pongamos que un 30% de la población tiene una ETS, y justo en la celda de la víctima resulta que hay un 80% de los individuos de ahí con ETS. El atacante puede usar esto para su beneficio como explica el paper del link (por cierto, si os interesa algo en concreto me puedo leer los papers y explicarlos, pero es que no los he leído xD y los detalles técnicos no los conozco) e identificar con cierta probabilidad a la víctima.

Maneras de solucionar estos problemas (también se pueden aplicar a k-anonimato):

  • Haciendo celdas más grandes, o generalizando más los datos importantes (no siempre es posible sin perder mucha información).
  • Eliminando información, es decir por ejemplo sustituir si alguien tiene 23 años por ****. Se hace mucho eh xD, es rudimentario pero bueno.
  • Añadiendo información aleatoria, o cambiando aleatoriamente datos (relevantes e irrelevantes) para que cuadre con la distribución de la población.

Una cosa está clara como podéis ver. Hay un compromiso entre anonimato e información extraíble. No podemos tener ambos en el momento en que tenemos una B.DD. de acceso público.

Detalles a tener en cuenta: Hay gente que se dedica más a macroagregación y otros a microagregación. Pese a que los problemas son los mismos, en microagregación hay que tener más cuidado con las celdas que se hacen porque un pequeño error puede suponer la pérdida total de privacidad o de información.
De cara al próximo post, que será sobre encuestas, otro detalle importante es: No se recomienda usar ninguno de los algoritmos para hacer celdas de los que he comentado arriba, ¿alguien me dice por qué? (xD más que nada para fomentar la participación).

2 1 respuesta
C

#8 Me he leído tus posts y el siguiente documento que he encontrado.
http://crises2-deim.urv.cat/docs/publications/conferences/201.pdf

La primera vez qleí el hilo, pensé que se trataba de algún algoritmo mágico para codificar la información y luego poder decodificarla xD. Pero no, estamos hablando de pérdida de información en favor del anonimato.

En este sentido, lo único que conocía hasta ahora es lo que comentas al final, es decir, ñapas del estilo:
1) Introducir registros aleatorios que cumplan con los promedios de la distribución para que a efectos estadísticos no distorsionen la muestra y sí la capacidad de "atacar" los datos.
2) Eliminar variables no relevantes

Y, si he entendido bien, lo que se consigue con estos algoritmos es el anonimato de la información pero con técnicas mucho más elegantes a nivel estadístico donde (como has comentado) lo que hay que decidir es el nivel de compromiso entre la pérdida de la información y el nivel de anonimato.

Y estas técnicas tienen que velar no sólo por promediar los valores, sino por asegurar que los diferentes intervalos de valores de una celda para una variable, no tienen relación con el resto de variables de la base de datos (el caso del sueldo que comentabas al principio).

Yo lo que veo es un campo nuevo de investigación que da para mucho. Tanto en nuevos algoritmos que encripten como que crackeen las bases de datos. Eso sí, los artículos dejan claro el coste computacional de esas técnicas.

Y también veo un conflicto entre estadísticos que pierden capacidad de análisis y departamentos legales que se cubren las espaldas xDA ver quién es el guapo que decide qué variables ocultar y con qué nivel de ocultación. Luego te viene el estadístico y te dice que esa base de datos no le sirve para nada. Y ahora ya no hay marcha atrás como no tengas copia de seguridad de los datos originales sin encriptar.

No te sé responder a tu última pregunta. Sigue contando más sobre encuestas, porfaplis ;)

1 1 respuesta
B

#9 está muy bien el documento que has colgado, explica muy claramente el MDAV (a mí me habían explicado el MD, vaya...) mejor que yo xD, que sin poder meter formulitas me lío.

Por desgracia hasta donde yo sé , no hay algoritmo mágico :(

En todo lo que has dicho tienes razón, de hecho la señora Latanya Sweeney está en el Data Privacy Lab donde se investiga a nivel tanto tecnológico como legal la mejor manera de garantizar privacidad a los usuarios.

Antes de entrar en las encuestas comento una aplicación de estos conceptos un poco alejada del k-anonimato y la microagregación:

Como sabéis, los buscadores tipo Google o Amazon, etc. recopilan datos de vuestras búsquedas. Estos datos, diréis, solo preocupan a un paranoico, pero no es cierto. Como personas físicas sí que importa relativamente poco que busques A o B en google, pero imaginad que sois trabajadores de una empresa como IBM y empezáis a investigar en un proyecto y a buscar el estado del arte de ciertas tecnologías. Esa información es MUY poderosa, ya sea para especuladores o competidores, y no tan difícil de conseguir.

Ahora bien, si nosotros sabemos qué tipo de datos recopila el buscador y cómo los agrega, podemos jugar esto a nuestro favor. ¿cómo? Desinformando con falsas búsquedas que nos acerquen al promedio de las búsquedas de todo el mundo.
No sé el nombre ni nada, pero me suena que estaba en desarrollo un pluguin que realizaba el cálculo automático de qué búsquedas realizar en Filmaffinity y cuántas para acercarte mucho al promedio de "cliente" y no "destacar".

Interesante eh :P .

Sobre las encuestas, doy una pista: Tiene que ver con la forma de las celdas.

1 respuesta
elkaoD

#10 con respecto a la pregunta, no sé si será esto, pero pensé esta mañana que:

  1. Con círculos pierdes aún más información clasificatoria (intuición, es lo que pasa usando k-Means).
  2. El espacio feo de 7 deforma con respecto al resto de categorías.

¿Van por alguna de esas los tiros?

Y por cierto, ¿por qué no se usa k-Means para hacer la clasificación? Hacerlo "creciendo" círculos lo hace demasiado reproducible, ¿no?

1 1 respuesta
B

#11 hay que pensar un poco en plan social, tienes personas que tienen que responder esas encuestas y tienen que fiarse de que serán anónimos. No es lo mismo que tener un estudio donde ya están todos los datos rellenados y tú los agrupas, sino que personas (probablemente no todos con una educación universitaria) tienen que rellenarlos.

Lo de k-Means la verdad es que no lo sé porque no lo conozco mucho, pero viendo la wikipedia parece que aunque sí que haces k-grupos, no puedes garantizar que cada grupo tenga un número mínimo de elementos no? Quiero decir, tú quieres hacer celdas de 1000 elementos en una población de 10000, es decir quieres hacer 10 grupos, tendrías 10-Means... Pero a lo mejor la solución óptima según 10-Means haría que en una de esas celdas tengas 500 elementos tal como está formulado el problema en wikipedia! Quizás es por eso.

1 respuesta
elkaoD

#12 no puedes garantizar que cada grupo tenga el número mínimo de elementos, pero asumía que podías hacer los truquitos que comentabas (eliminar/añadir datos random) para que casen los grupos.

Lo del primer párrafo mata k-Means es verdad, pero entonces ¿es el investigador el que tiene que buscar activamente gente con esos grupos de edad o me estoy perdiendo? Como dices que va "creciendo" el círculo hasta tener esos elementos, ahí ya tienen que estar los datos recogidos, ¿no? ¿No se anonimiza a posteriori?

Vuelvo a plantear la pregunta que me he quedado con la duda, ¿hacerlo con circulitos no lo hace reproducible?

Hago una distribución aleatoria sobre las variables, hago "crecer los grupos" hasta el tamaño deseado, sitúo a mi individuo en el grupo y ya puedo saber con cierta probabilidad quién es un individuo cruzado con el resto de variables, ¿no?

Voy a pegarle una releida porque me parece que no me estoy enterando de algo (y el tema es deeenso xD)

1 respuesta
B

#13 has dado en el clavo, en encuestas tienes que anonimizar a priori y además no puedes asegurar que todo el mundo responda! La idea es que tú pedirás que te den los datos correspondientes a los cuasiidentificadores por un lado (edad, sexo, estado civil, lo que sea vaya) y luego las respuestas interesantes (qué opinas de tu jefe, cuánto duras en una relación sexual, yo que sé). Y no le puedes decir que te dé todos los datos que tú ya lo harás anónimo luego, porque quizás no se fía, no sé si me explico. Si hubiera confianza total pues no habría problema, el problema está en que él cuando tenga la encuesta tiene que tener una cierta garantía de que cuando la envíe no le podrás identificar ni siquiera tú.

Sobre lo de k-Means, si puedes mezclarlo y tal quizás haya alguna solución "combinada", la verdad es que no conozco si se ha usado o no pero podría ser una vía de pruebas!
Sí, tanto con circulitos como con el PCL que usa un método similar a la codificación de vídeo es reproducible.

Y sí, por tanto puedes saber con cierta probabilidad quién es y sobretodo los atributos "principales" de un individuo cruzando datos, pero la idea al anonimizar (sobretodo con T-closeness) es que esa probabilidad sea prácticamente la misma que la de que un desconocido cualquiera, es decir que el hecho de saber en qué celda está no te aporte información. Ese es el anonimato más "fuerte", digamos, y por ende el más complicado de conseguir sin distorsionar mucho los datos claro.

edito: Más que denso creo que me he liado explicando alguna cosa y lo he complicado yo solo, acostumbrado a usar simbolitos para todo me cuesta explicarlo con palabras xD.

1 respuesta
elkaoD

#14 no hay algún pastebin con LaTeX o algo así?

1 respuesta
B

#15 existe mathbin, sí, la verdad es que en su momento pensé que no haría falta (al haber trabajado un año en el tema me parecía más sencillo de lo que era, hasta que lo empecé a explicar xD), pero ahora mismo voy a formularlo matemáticamente para que haya un resumen corto y claro.

edit: http://mathbin.net/159410

edit2: Maldita sea, estoy posteando la fe de erratas porque me he colado al final...

edit3: Y ahora no funciona :'(

Zerokkk

Hombre, leyéndolo así muy por encima, veo que es un método de aumentar el anonimato, pero claro, si lo haces pierdes información.

Más características relacionadas = mayor pérdida de anonimato, así como si no las relacionas entre sí, pierdes información. Luego está lo de usar rangos en los valores numéricos, que me parece una buena medida bastante buena tanto para mantener información como para mantener el anonimato, pero claro, una vez la relacionas con otras cosas, pierdes también el anonimato xD.

No sé, si esto es para evitar que los datos de índole pública no se carguen la privacidad ajena, creo que lo mejor es sólo mostrar la relación final, y no todos los datos. Porque si los muestras, vas a estar violando la anonimidad sí o sí, y si los muestras usando esto, van a ser poco precisos y explícitos, no sé si me explico.

Yo personalmente, para índole privada y no pública, prefiero infinitamente integridad en los datos que anonimidad xD.

1 respuesta
elkaoD

#17 la historia es que a mí me llega la encuesta:

  1. Fecha de nacimiento
  2. Código postal
  3. ¿Tienes VIH?

Y si tengo VIH no la relleno o miento en la 3.

¿Qué es mejor, perder información o no tenerla?

1 1 respuesta
B

Encuestas

Ahora tenemos los mismos individuos pero la situación cambia.

Tenemos que anonimizar a priori los datos, es decir que cuando el usuario responda ya tenga la sensación de ser anónimo, y no dependa de la confianza en el encuestador. Solo con esto el problema ya cambia un poco por la usabilidad, pero además tenemos el segundo factor a tener en cuenta: de nuestra población no responderán todos los individuos, hay una cierta probabilidad de que un individuo responda (esta probabilidad puede ser independiente o no de sus cuasiidentificadores).

Pongámonos en la siguiente situación: como profesores de una clase queremos dar al final del curso una encuesta preguntando del 1 al 5 qué útil ha sido y como datos para ver cómo enfocar el próximo preguntamos edad del encuestado, si trabaja o no ( y en qué tipo de trabajo ), y cuántos de los ejercicios extra ha hecho. Ahora, nosotros en nuestro censo de clase sabemos la edad de todos, si trabajan o no y en qué tipo de trabajo y además cuántos ejercicios extra ha entregado, así que los estudiantes sabiendo esto podrían pensar: coño, mejor digo que me ha parecido de puta madre y no me pone un 0.

Pero claro, nosotros sabemos anonimizar datos así que usaremos la técnica de microagregación. En este caso no podemos aleatorizar cuasiidentificadores ni sustituir por asteriscos porque no se lo podemos pedir a los encuestados (recordemos: anonimizamos a priori), a no ser que hagamos que alguna encuesta aleatoria tenga alguna respuesta ya marcada... Meh, esto no se hace. Usaremos la técnica de microagregación. Pongamos que tenemos 150 alumnos en 3 grupos, y haremos grupos de unos 10, porque consideramos que así perderán el miedo.

Problema 1: Qué les decimos? "Mira, coge tu edad, asigna un número a tu condición laboral, y los ejercicios entregados y de este gráfico de 150 puntos mira dónde caes e indica en qué grupo estás", enseñándoles algo parecido a la gráfica de #8. Esto es impráctico, y quizás a nuestros alumnos se lo podemos hacer (si alguien ha estudiado telecos en la UPC y ha visto los algoritmos de asignación de sillas en los exámenes finales me entenderá xD), pero a trabajadores de una línea de producción no. Así que tenemos que hacer celdas "rectangulares". Es decir, dar intervalos de edad, reducir los tipos de trabajo y dar intervalos de ejercicios pero que puedan responder cada cosa por separado, sin complicarse mucho.

Problema 2: Nosotros queremos un anonimato de unas 10 personas, pero ahora supongamos que estamos en una clase un tanto vaga y responderá un 60%-70% de los encuestados. Hm, malo. Esto nos da una probabilidad no tan baja (binomial) de que de un grupo de 10 personas respondan 3 o 4. Si hay alguna manera (asistencia a clase ese día, firmas al entregar la encuesta, métodos electrónicos de e-voting) de saber quién ha respondido y quién no, nos cargamos el anonimato!!

Solución a 1: Conseguir minimizar la distorsión no es fácil, de hecho no lo acabamos de resolver el año pasado, mi jefe creía que había una solución óptima pero la implementación en MATLAB no acababa de ir y no tuve tiempo de seguir. Una manera un poco rastrera que se me ocurre es calcular primero cuantas celdas en total debería haber, hacer la raíz enésima (n = número de cuasiidentificadores) y para cada cuasiidentificador hacer ese número de celdas más grandes, modificando al final quizás si alguna celda queda demasiado pequeña.

Solución a 2: Fácil si la probabilidad es independiente de los cuasiidentificadores (relativamente asumible). La probabilidad de que dentro de una celda de K' individuos respondan al menos K se puede calcular (binomial) y crece conforme crece K', así que podemos encontrar un K' que asegure que con un 99.5% de probabilidades participen al menos K elementos en una celda de K' elementos. Me explico? Hacemos las celdas más grandes de 10, por ejemplo con 60% de probabilidades así a ojo serían 15 individuos por celda, tenemos menos celdas pero aseguramos que con un 99.5% de probabilidades participarán 10 individuos en cada celda por lo menos y así tranquilizamos a los estudiantes que tuvieran en cuenta lo de la participación.

Como veis es una extensión al problema relativamente sencilla pero hace cambiar un par de detalles clave.

BTW a mí me pareció muy interesante lo de las búsquedas falsas, soy el único? xD

1
allmy

#18 Eso te va a ocurrir siempre, hay una cosa que se llama "deseabilidad social"; incluso si haces una encuesta y aseguras que la persona se sienta 100% anónima, que no haya ningún resquicio de identidad, la persona siempre tiende a mentir, en ocasiones para dar buena imagen "por si acaso" o en otras ocasiones para mentirse a si misma.

#1 Y porqué no utilizar datos constantes pero no identificativos? Por ejemplo, iniciar del nombre de tu abuela, inicial del nombre de tu abuelo, más últimos dos dígitos del número de teléfono. No se, hay muchas cosas así que no identifican y que reducen la probabilidad de colisión al mínimo.

1 respuesta
B

#20 y de qué sirve a la hora de analizar los datos la inicial de los nombres? Buscas tener estudios relevantes, no sé si me explico, si tus cuasiidentificadores son los que dices a lo mejor llegas a la conclusión de que la gente cuyo teléfono acaba por un número entre 30 y 50 tiene más propensión al SIDA pero no creo que haya una correlación real :P

1 1 respuesta
allmy

#21 Me refiero a que a veces, se recogen los datos por partes. Hoy recoges X info, dentro de unos meses otra información. Si quieres poder juntar la información, necesitas algo que la una. Por supuesto que si quieres estudiar la variable edad, tienes que recoger la edad xD

1 respuesta
B

#22 aah entiendo, pero bueno al final también haces microagregación aunque creo que quizás pierdes un poco el control de la distorsión de los datos (no puedes asegurar que tengas menos de 15 personas en el estudio con abuelos A y M por ejemplo). De todas formas es interesante esto que cuentas de cómo recoger datos y tal, la verdad es que de estadística descriptiva y teoría de la muestra no he dado casi nada :P

15 días después
wineMan

http://www.elmundo.es/elmundo/2013/03/11/ciencia/1363027585.html

2

Usuarios habituales