Mostrando entradas con la etiqueta OSINT. Mostrar todas las entradas
Mostrando entradas con la etiqueta OSINT. Mostrar todas las entradas

domingo, 4 de septiembre de 2016

El mercado y el mercadeo del typosquatting (2)

Whois y dominios .es

Visto lo que hace el plugin del post anterior, posiblemente te interese saber quién es su propietario. Y para eso están las consultas a Whois. En el caso de los dominios ".es" podemos hacer la consulta a través de "http://www.dominios.es". Curioso que no me funcionen las consultas a través de HHTPS: "https://www.dominios.es". Curioso y preocupante.

En la parte derecha encontrarás un formulario que te permite consultar si un dominio está disponible. Si lo usas, la respuesta te llegará desde otro domino, "nic.es", y esta vez, sí, sobre HTTPS. Te mostrará diversas variaciones sobre el dominio consultado, indicándote si está libre o no y, en el primer caso, incluyendo un enlace para ver sus datos. Eso sí, antes tendrás que resolver un CAPTCHA.
Como todo esto es mucho rollo, te cuento como hacerlo un poco más fácil. Hace algún tiempo me encontré en una página que lamento no recordar (con lo que a mí me gusta citar mis fuentes...) una URL que, poniendo el nombre de dominio como parámetro GET, te lleva directamente a la página del CAPTCHA. Y me hice un pequeño fichero HTML con un formulario. Os lo copio:

=========
<form onsubmit="visita()">
Dominio: 
<input type="text" id="dominio" />.es<br />
<input type="submit" value="Consultar" />
</form>

<script>

function visita(){
window.open("https://www.nic.es/sgnd/dominio/publicValidacionDetalleWhois.action?volverWhoIs=1&TDominio.nombreDominio=" +
document.getElementById("dominio").value + ".es"
);
document.getElementById("dominio").value = "";
return false;
}

</script>
=========

Y no creo que sea necesario un manual para utilizarlo:

Si esto te parece demasiado difícil... estás de suerte. Hay un sitio web que ofrece datos sobre dominios ".es" sin necesidad de resolver ningún CAPTCHA. Y que además está siendo indexado por los buscadores y utilizado como fuente por sitios como Domain Big Data. Se trata de http://www.whoises.com. Dejemos que sea él mismo quien se presente y diga qué es capaz de hacer:


Eso sí, sin querer meterme donde no me llaman, creo que hoy no es mi día con eso del HTTPS. Porque si visito WhoisEs con ese protocolo, tras recibir avisos relativos al certificado...



Queden ahí estos "trucos y consejos". Que, por otro lado, no sé cuánto tiempo seguirán siendo útiles.

El dominio del plugin

En esta ocasión usé "nic.es" para ver los datos del dominio:

¿Que por qué tapé los datos del propietario? La verdad es que, ante la duda, preferí hacerlo. Por un lado, porque de las imágenes del post anterior parece desprenderse que se trata de un dominio aparcado. O sea, que el propietario no es quien lo está explotando. Por otro lado, no sería la primera vez que se usa un nombre falso para registrar un dominio y podríamos estar poniendo en evidencia a una persona que no tiene nada que ver con este negociete.

En todo caso, los Whois son públicos y si alguien tiene interés en el dato concreto no tendrá problema en saberlo. Ni tampoco le será difícil encontrar otros dominios del mismo dueño. Puede hacerlo con buscadores:

O, mejor aún con un servicio que agregue datos de whois como Domain Big Data, buscando por el nombre del propietario:

Si me dejas hacer un inciso te señalaré que tienes que tener cuidado siempre con los datos de dominios. Porque, salvo que los obtengas de las fuentes originales, pueden haber cambiado desde que el buscador o el sistema utilizado los obtuvo. Quizá el propietario consiguió venderlos. Quizá expiraron.

En todo caso, creo que está clara la estrategia que este registrante tiene a la hora de elegir sus nombres de dominios. Visité algunos de ellos. En algún caso se me volvió a invitar a instalar un plugin ("quien no te conozca... que te compre", que decía aquel cuento):

Otros no mostraban nada raro. El típico listado de enlaces que sueles encontrar en cualquier dominio aparcado. Pero hice más pruebas utilizando una página llamada BrowserStack que es muy útil cuando Browserling se te queda pequeño.

Lo bueno de BrowserStack es que no sólo te permite probar con distintos sistemas operativos y navegadores para PC o Mac. También soporta dispositivos móviles. Y lo que me encontré fue un montón de redirecciones, tanto mediante JavaScript como mediante HTTP, que terminaban en páginas del tipo "has ganado este gran premio, rellena esta encuesta" o "participa en este sorteo, que casi lo tienes ganado". Y si probabas varias veces te salían cosas distintas. Así ocurría con un HTC One M8:

O con un Chrome sobre Windows 8.1:


Pero, como veremos, en esto del plugin y este registrante de dominios ni son todos los que están ni están todos los que son. 


viernes, 24 de junio de 2016

Desanonimizando Dominios (5)

No es lo mismo


Si realizamos una petición a un servidor utilizando su dirección IP y la respuesta es de naturaleza parecida a la que obtendríamos usando alguno de sus nombres de dominio, todo parece apuntar a que estamos tratando con un servidor controlado por alguien. No con un hosting compartido, sino con un equipo que tiene un único propietario que lo aprovecha para sus propios fines.

Ahora bien, ese equipo puede estar utilizando un servicio de housing. O, como prefieren llamarlo los angloparlantes, de "colocation" o "colo". Con esas denominaciones nos referimos a empresas que tienen sus CPD con redes de conexión a Internet y alquilan espacio y recursos a quienes quieran ubicar en ellos sus ordenadores.

Y ese es el caso en los servidores que vimos anteriormente, como puede comprobarse consultando el registro de Whois asociado a sus direcciones IP:

Establecemos así otro vínculo entre propietarios de sitios web y empresas con las que contratan servicios. Y que algo sabrán de sus identidades porque, como poco, les cobran el servicio de forma periódica.

Esto también quiere decir que una misma IP puede fácilmente haber pasado por varios inquilinos a lo largo de los últimos años. No debe olvidarse que parte del modelo que estamos descubriendo se basa en crear muchos dominios "de usar y tirar" que no suelen registrarse por más de un año y que, en muchos casos, no llegan siquiera a eso porque suelen ser reportados por SPAM y otras prácticas no deseadas. Una cosa a tener en cuenta a la hora de correlacionar información.


La segunda "trampa"

Sea como sea, algo raro hay cuando en un pequeño rango de IPs se encuentra un elevado número de servidores que han sido denunciados en diversos medios por tener un comportamiento poco recomendable. Por ejemplo, tenemos esta página

La mayor parte de estos dominios ya no existen. Pero podemos intentar averiguar qué camino siguieron. En este caso vamos a utilizar la herramienta "Domain History" de WhoisRequest para ver cómo evolucionaron los servidores DNS asignados al primero de los dominios:

Hay que tener en cuenta que las fechas pueden no ser exactas. Porque una cosa es la fecha en que se actualiza la base de datos de Whois (que es la mostrada en la imagen) y otra distinta aquella en la que los cambios tuvieron lugar. De hecho, utilizando DomainHistory.NET (no confundir con el anetrior), una herramienta para encontrar datos de whois antiguos, encontré una copia del Whois de este dominio y pude comprobar que entre ambos eventos había una pequeña diferencia:


La historia de los DNS es relevante por varias razones:
  • Si un domino utiliza los DNS de otro, posiblemente haya una relación entre ambos. 
  • Un nombre de dominio puede ser registrado por una organización, que lo usa durante un tiempo y después lo cancela. Y, al cabo del tiempo, puede venir otra empresa o persona y volver a registrarlo. Son "vidas" distintas que pueden ser apreciadas por la creación y eliminación de los registros de DNS (como en el mensaje "Domain dropped or Nameservers Removed" del final).
  • Y por acabar esta lista, necesariamente no exhaustiva, tenemos el tema del "parking de dominios". En la imagen anterior puede observarse como el 17 de marzo de 2014 se observó un cambio de DNS, Anteriormente había venido siendo equipos cuyo nombre estaba asociado al dominio pero después pasaron a otro cuyo nombre "park...." apunta en esta dirección.
Esto del parking de dominos es un negocio relacionado normalmente con el SEO o la venta de visitantes. Si tienes un dominio que no usas, se lo "cedes", normalmente a cambio de una contraprestación económica, a una empresa de parking  para que ellos sí lo utilicen. 

¿Y qué hacen las empresas de parking con los dominios que consiguen? Seguro que lo has adivinado: poner enlaces publicitarios a otros sitios. O hacer que el tráfico que llegue a estos dominios se redirija a otros servidores. Y, claro, los destinos en ambos casos pagan por lo que reciben. Una dato que quizá sea revelador es que si buscas "domain parking cloaking" aparecen 405.000 resultados. Por si no sabes lo que es cloaking...aquí tienes un poco de lectura.

¿Qué historia nos cuentan las tres imágenes anteriores? La de un dominio que, a poco de ser creado, ya era objeto de denuncia pública por SPAM. Había sido registrado por sólo un año y cuando este tiempo terminó, comenzó el "plazo de gracia" que suele darse a los registrantes, durante los cuales ya no controlan el dominio pero sigue siendo posible renovarlo, que suele ser de alrededor de un mes. Y durante ese tiempo, parece que el dominio estuvo "apacado".

Resumiendo: a la hora de atribuir un comportamiento a un dominio hay que ver si éste se encuentra aparcado o no. En este caso, parece que fue el comprador original del dominio quien lo instaló en esa IP de un servicio de housing y posteriormente fue denunciado por SPAM.

Y no es una historia de un dominio solitario. Muchos de los denunciados en aquella página vivió similar aventura


Usando DomainHistory.NET se puede encontrar datos antiguos sobre algunos de estos dominios. Interesante similitud:

Mismo agente registrador. Fechas parecidas. Y, aunque distinto nombre y distintas cuentas de correo (eso sí, gratuitas) el mismo teléfono. Uno que, cuando se busca, aporta muchos resultados. La inmensa mayoría, relativos a la misma materia:

Por cierto, que StatsInfinity es otra herramienta de las buenas a la hora de investigar dominios. Y nos puede ayudar a comprobar que, aunque haya varias direcciones de correo involucradas, cada una de ellas fue utilizada unas cuantas veces.






jueves, 23 de junio de 2016

Desanonimizando Dominios (4)

Todos tenemos una historia

Sigamos con la historia de ayer y esas IPs cercanas entre sí que parecen tener cierta relación. En todas se fue encontrando dominios web relacionados con la venta de fármacos. Algunas incluso ofrecían este comportamiento si se visitaba directamente la dirección IP.

En los casos que revisé me encontré con sitios que no eran realmente tiendas. Algunos, incluso, eran blogs con contenidos bien elaborados (al menos en su forma, que yo no sería capaz de distinguir si lo que decían era verdad o no).

Pero, si se navegaba un poco por ellos, la mayoría terminaban ofreciendo un enlace a un sitio externo que sí parecía vender fármacos. O que parecían haberlo hecho en el pasado, ya que con frecuencia estos dominios de destino habían caducado.

Hubo un caso gracioso. Recordarás la imagen con la que acabábamos el último post:

La última de las ventanas hablaba de que próximamente habría contenidos para un dominio "recién creado" ("just created"). Pues bien, ese dominio, a fecha de hoy, no está registrado.

Pero... en su día lo estuvo. Y algunos servicios permiten comprobar que estuvo funcionando hasta el año 2015

Este dominio se registró sin usar un servicio de anonimización, aunque posiblemente bajo una identidad falsa. En todo caso, la dirección de correo puede llevarnos a descubrir otros dominios de la "misma marca":

Y, como se recordará, estamos hablando de un dominio asociado a una IP de aquel bloque en el que había cosas interesantes. Claro que, como el dominio ya no existe, un nslookup no nos podría confirmar que éste se encontraba en su día efectivamente alojado en la dirección IP detectada.

... salvo porque todos tenemos un pasado e Internet se encarga a menudo de recordárnoslo. Hay por ahí servicios que permiten consultar registros históricos de DNS. Historical DNS les suelen llamar. "DNS History" es uno de ellos:
Sí. Hay registros de que ésa fue su IP.

Pero que un equipo tenga un IP no quiere decir que el dueño del equipo sea dueño de la IP...

(continuará)

miércoles, 22 de junio de 2016

Desanonimizando dominios (3)

Compañeros de viaje



¿Será un dominio aislado o formará parte de una red? Una posible forma de salir de dudas consistiría en analizar sitios web que han sido vulnerados para promocionarlo e intentar determinar qué otros dominios fueron promocionados en el mismo ataque.

Por supuesto, en estos casos siempre cabe la posibilidad de que dos dominios independientes sean promocionados de forma conjunta. Quizá dos webmasters encargaron al mismo delincuente trabajos parecidos y éste cobró a ambos por separado pero "trabajó" sólo una vez. De modo que habrá que hacer comprobaciones posteriores y analizar los datos en conjunto.

Y para ver dónde pusieron enlaces a un sitio, tanto si es por las buenas como si por las malas... ¿Qué mejor que una herramienta de SEO?



No queda más que ir probando páginas, quizá utilizando Referers o User Agents falsos para simular tráfico procedente de búsquedas o buscadores, e ir viendo enlaces. Ahí encontraremos tanto otras víctimas como dominios que fueron promocionados a costa de aquellas.

En este caso, se trata de dos dominios con datos de Whois muy distintos:

... pero IPs relativamente parecidas

IPs que, además, si se visitan tienen un aspecto similar y peculiar
Y que no por raras están solas. Si se miran unas cuantas de las más próximas a ellas...


(continuará)

martes, 21 de junio de 2016

Desanonimizando Dominios (2)

Relacionando datos

En el post anterior vimos como a la hora de registrar dominios cada vez más gente utiliza sistemas de protección de la privacidad.

Y también como a veces estos sistemas tienen sus fallos y permiten saber si varios sitios comparten o no propietario. Esta agrupación de datos mejora considerablemente la posición del que investiga (y empeora la del investigado) ya que un pequeño despiste a la hora de gestionar o promocionar un dominio puede revelar información y, en estas condiciones, el alcance de la misma se extendería a todos los dominios.

Por poner un ejemplo, en cierta ocasión me encontré con alguien que había publicado un anuncio en Internet. Buscaba trabajadores para su nuevo sitio web, y en el anuncio indicaba su dominio y... su nombre y su teléfono móvil. Datos que, a partir de ese momento, quedaban relacionados no sólo con el mencionado dominio sino también con cualquier otro que esa persona pudiera tener.

Afiliaciones

Comencemos con este resultado de Google.

El sitio web al que pertenece corresponde a una escuela infantil en Florida.  Y de hecho, eso es a lo que se llega si se copia la URL en la barra de direcciones del navegador. Pero si se hace clic en el enlace del buscador, la "magia" del cloaking hace que termines en una tienda:

... la cual tiene un enlace interesante en la parte inferior.

De esto ya hablamos en otra ocasión: la tienda a la que llegamos antes no era en realidad una farmacia. Lo reconocen, si alguien tiene ganas de leerlo, en su página de "About us". En definitiva, participan en un programa de afiliados cuya matriz paga a otros para que vendan sus productos o le proporcionen oportunidades de negocio.

En estos casos es habitual que cuando envías un potencial cliente o asociado, algo en la petición HTTP indique tu identidad. Un código de afiliado, muchas veces en forma de parámetro GET. Es la forma de decirles "oye, que te envío esto... después me pagas mi parte".

Y puede que encuentres alguna URL con dicha información al visitar la página o quizá en algún foro en el que estén publicitándose. O quizá lo halles al utilizar herramientas SEO para investigar la web matriz del programa de afiliados:

Si es así, con otras herramientas SEO podrás encontrar sitios en los que se referencia dicha dirección. Puede que sea una cuenta lanzando SPAM en un foro. Puede que una página gratuita creada expresamente para ello. Puede que incluso sean dominios que, como en el siguiente caso, redirigen a la URL. Pero, dado que nadie hace nada gratis en este negocio, podrás afirmar, con poco riesgo de equivocarte, que hay una misma persona detrás de todos estas acciones:


Si se mira la IP de ambos dominios, resulta ser la misma. Y el registro Whois dice algo parecido:
Por cierto... la cuenta de correo pertenece a un dominio que dice dedicarse a proteger tu identidad en los registros Whois. Pero parece que uno de esos que dan una dirección distinta a cada cliente.

... y si buscas bien encontrarás más dominios asociados:

No me cansaré de repetirlo. Dedicarse al SEO no tiene por qué ser malo. Hay muchos profesionales que trabajan de forma honesta en este campo. Pertenecer a un programa de afiliados, o dirigirla, tampoco tiene por qué ser señal de cosas oscuras. Pero en cada una de estas actividades hay quien utiliza técnicas que sí entran en el campo de lo ilegal o lo ilegítimo.

Y quienes los contratan, los buscan o los aceptan expresamente en sus negocios:

(continuará)

lunes, 20 de junio de 2016

Desanonimizando Dominios (1)

Anonimizar y Desanonimizar Dominios ¿Para qué?

Comienzo aquí un spin-off de la serie de posts sobre SPAM en comentarios. Ya sabes: temas relacionados pero distintos. Como recordarás, teníamos una lista de dominios que estaban siendo promocionados mediante SPAM en foros, blogs y similares y habíamos echado un vistazo a algunos de ellos en dos entregas (1 y 2).

Si quieres saber a quién pertenece un dominio, puedes empezar mirando sus páginas. ¿Quién sabe? Quizá des con un teléfono del que tirar o en la sección de "Quiénes Somos" encuentres datos interesantes. El siguiente paso sería, en buena lógica, consultar los datos de registro de Whois, en las que se recogen el nombre del registrante del dominio, su dirección, su dirección de correo, su teléfono,...

Pero cada vez es más frecuente toparse aquí con datos anonimizados. Datos puestos por empresas que se dedican a ocultar los datos de los registrantes. No hace falta que un sitio web se dedique a actividades ilegítimas para que un servicio como éste tenga sentido: la razón puede ser, por ejemplo, evitar el correo no deseado. O salvaguardar de la privacidad de un particular que registra un dominio y no quiere que sus datos anden sueltos por ahí.

Pero cuando tenemos un montón de dominios y queremos determinar si pertenecen a una misma organización, o a una determinada red de sitios para SEO, estas ventajas juegan a favor de quienes están haciendo lo que no deben.

Programas para consultar Whois

Cuando se trata de analizar un buen número de dominios siempre es conveniente tener unos cuantos scripts y herramientas a mano. En lo que a Whois respecta, mis programas para Windows preferidos son tres. Y no necesariamente en el orden que los pongo:
  •  El primero nos lo proporciona la propia Microsoft y es una herramienta de línea de comandos creada por el bien conocido Mark Russinovich. Su nombre no podía ser más claro: Whois.
  • También para línea de comandos es "WhoisCL", de Nirsoft. 
  • Finalmente, uno con su GUI, de nuevo creado por Nirsoft: "Whois This Domain".
Mi experiencia es que lo mejor es crearse unos cuantos scripts con herramientas de línea de comandos. Pero si se tiene prisa y/o pocas ganas de complicarse la vida, en unos minutos puede bajarse "Whois This Domain" y el fichero de servidores Whois disponible en la misma página de descarga. Se arranca el programa, se copia en él la lista de dominios a estudiar, se hace clic en el botón de "OK" y, al cabo de un rato, la información estará ahí:

Si se quiere copiar el resultado a una hoja de cálculo, basta con seleccionar todos los elementos y hacer clic en el botón correspondiente de la barra de herramientas. Eso sí, como el programa no siempre consigue extraer toda la información de la respuesta del servidor Whois,  es conveniente realizar una revisión manual antes de dar los datos por buenos.

Correlaciones

El problema a la hora de investigar son aquellos dominios que en la imagen anterior tienen un "Yes" en la columna "Private Registration". Los que han anonimizado los datos del registrante.

Hay cosas que, sin ser definitivas, pueden constituir indicios de que dos sitios comparten propietario. Formas de llamar a los dominios, uso de la misma entidad de registro (registrar), dominios registrados en la misma fecha, sitios webs con contenidos muy parecidos, cruces de enlaces entre dominios, enlaces a varios dominios en un mismo sitio que ha sido vulnerado o en un mismo apunte que ha sido víctima del SPAM, etc. 

O la forma de publicitarse. En algunos casos he encontrado cuentas de foros que, tras dedicarse durante un tiempo a hablar bien de un determinado sitio web, de pronto pasa a comentar también de forma positiva las cualidades de otros. Y... ¿sabes qué? Al final terminé comprobando que todos pertenecían a la misma persona.

Por otro lado, no todos las empresas "anonimizadoras" son igual de efectivas. Y no ya porque puedan dejar de ocultar algún dato (que de todo hay) sino por la forma en que proporcionan su protección. Así, algunas utilizan la misma cuenta de correo de contacto para todos sus clientes, encargándose ellas de redirigir los mensajes oportunos. Eso parece bastante seguro. 

Otras crean una dirección para cada dominio, lo que proporciona privacidad pero menor grado de protección contra el SPAM. 

Y, finalmente, están las que asignan a cada cliente una cuenta de correo. Lo cual no sé cómo irá para el SPAM, pero permite detectar redes de dominios. Como en este ejemplo:
Dos dominios que ahora sabemos que pertenecen (o perteneció en el caso del último resultado, porque ya expiró) a la misma persona. Aparte de usar los buscadores, hay herramientas, como Whoisology, que ya vimos en otra ocasión, DomainBigData, Whoismind o el "Reverse Whois Lookup" de ViewDNS, por citar algunos, que pueden ser de utilidad en esta tarea. Los resultados pueden ser de lo más interesante:


(continuará)




jueves, 9 de junio de 2016

¿Quieres aprender magia de la buena?

Esto de la investigación en fuentes abiertas da para mucho. Y, además, variado.

Quizá seas, como yo, una de esas personas a las que, sin entender demasiado, le gusta la magia. En ese caso, habrás echado un vistazo a todos esos videos de Youtube que en pocos minutos te destripan un truco sencillote pero, en ocasiones, efectivo. Y puede que lo hayas pasado bomba leyendo a Juan Tamariz, Arturo de Ascanio o Penn Jillette, por citar algún autor que se me viene a la cabeza.

Si crees que te ha llegado el momento de dar el salto y pasar  a cosas verdaderamente grandes, si quieres saber cuál es el secreto oculto tras las últimas novedades en materia de ilusionismo y aprender cómo funcionan los artilugios y dispositivos más avanzados que los magos ponen sobre el escenario... estás de suerte.

¿Sabes dónde puede encontrarse ese tipo de información?

Hace poco encontré un artículo que seguro que te interesa. Su nombre es "LOS TRUCOS DE MAGIA Y LAS PATENTES". Y ya sabes dónde irás si haces clic en el enlace.

Cortito, pero muy recomendable. OSINT en estado puro.

La idea, como ya habrás imaginado, es que con frecuencia los "trucos" se patentan. En parte para dejar claro eso de "yo lo vi primero" y en parte para evitar que alguien que te vea hacerlo y que sepa de la materia te lo pueda copiar. La cosa es que la Clasificación Internacional de Patentes tiene un código, el "A63J 21/00", cuyo nombre es "Aparatos de magia; Accesorios para prestidigitadores".

¿Te pica la curiosidad? Pues venga, que ya no te entretengo más.

lunes, 6 de junio de 2016

La fiabilidad de algún procedimiento de disociación

No hace mucho, en un debate sobre OSINT mencioné un dato que había leído por ahí. Lo malo era que no recordaba dónde y, como quien haya leído algo escrito por mí seguramente sabrá, me gusta citar mis fuentes.

Así que, tarde o temprano, tenía que corregir los efectos de mi olvido.

El asunto está relacionado con lo que en la LOPD se denomina "procedimiento de disociación" y que se define en su artículo 3, letra f, como "todo tratamiento de datos personales de modo que la información que se obtenga no pueda asociarse a persona identificada o identificable".

Pongamos un ejemplo. Supóngase que se tiene una tabla con datos de una serie de personas. Y sean las columnas de esta tabla las siguientes:
  • DNI.
  • Nombre y apellidos.
  • Calle y número.
  • Código postal.
  • Ingresos brutos anuales.
  • Los antecedentes penales que pudiera tener.
  • Los problemas de salud que pudiera tener.
  • Fecha de nacimiento
  • Sexo. (Quiero decir: si es hombre o mujer)
Publicar esta información, con los datos sensibles que contiene, o darla a conocer a terceros sin el debido consentimiento, constituiría una grave vulneración de la normativa sobre Protección de Datos de Carácter Personal. Pero la cosa cambiaría si antes se la somete a un procedimiento de disociación. Supongamos que quitamos las tres primeras columnas y nos quedamos con:
  • Código postal.
  • Ingresos brutos anuales.
  • Los antecedentes penales que pudiera tener.
  • Los problemas de salud que pudiera tener.
  • Fecha de nacimiento
  • Sexo. (Quiero decir: si es hombre o mujer)
Ahora las personas a las que pertenecen los datos dejarían de ser identificables y, por consiguiente, ya no habría tanto problema en proporcionar a alguien esta información. ¿Verdad?

Pues... lo siento, pero no. La tabla aún contiene un conjunto de datos que es capaz de identificar de forma única a cerca del 90% de la población: la combinación de código postal, fecha de nacimiento y sexo.

Ya encontré el paper donde lo leí por primera vez. Y no es nada nuevo. Data del año 2.000, su autor es Latanya Sweeney  y se denomina "Simple Demographics Often Identify People Uniquely". Quien quiera leerlo, lo tiene disponible en este enlace.

La idea es la siguiente: Supón que dispones de la tabla con los datos pretendidamente disociados. Vas por un barrio, te cruzas con alguno de sus vecinos o alguna de sus vecinas y le preguntas su fecha de nacimiento. Cuando te la diga, le puedes responder algo del tipo: "¡Ah! Y tus ingresos anuales son de X euros y no tienes antecedentes penales, pero sí hay algo de una lesión muscular".

Y lo puedes saber porque conoces el código postal del barrio en el que estás, si la persona es hombre o mujer (normalmente se sabe) y el día en que vino a este mundo.

Para hacernos una idea de hasta qué punto la combinación de estos valores son únicos en una población, podemos usar este programa escrito en Ruby:
# Calcula cúantas repeticiones de datos habrá en promedio
# en un grupo de un número determinado de sujetos
# y un número de posibles valores
def repetidos(numero_de_valores, numero_de_sujetos)
 con_datos_repetidos = 0.0
 con_datos_unicos = 0.0

 (1..numero_de_sujetos).each do |n|
  probabilidad_de_repeticion =  (n - 1) / numero_de_valores.to_f;

  # Si se repite valor, hay que distinguir si el valor ya estaba repetido o no
  # Si no estaba repetido y se repite ahora dato, son dos los que repiten
  # Si ya estaba repetido, los que lo tenían ya han sido contados  
  probabilidad_de_repeticion += probabilidad_de_repeticion * 
     con_datos_unicos /  (n - 1) if n>1
  
  # Calcular cuántos sujetos tienen valores repetidos o únicos
  con_datos_repetidos += probabilidad_de_repeticion
  con_datos_unicos = n - con_datos_repetidos
 end

 print "No Repetidos: #{con_datos_unicos.to_i} (#{con_datos_unicos})\n"
 print "Porcentaje: #{100 * con_datos_unicos / numero_de_sujetos} %\n\n" 
 
 print "Repetidos: #{con_datos_repetidos.to_i} (#{con_datos_repetidos})\n"
 print "Porcentaje: #{100 * con_datos_repetidos / numero_de_sujetos} %\n\n" 
end

Con objeto de simplificar el código, el cáculo de la probabilidad de repetición es bastante conservador. En realidad, la probabilidad de repetición podría ser menor si ya se hubieran encontrado datos repetidos. Ahora, sabiendo que en España, según Wikipedia, hay 11.752 códigos postales, 46.770.000 habitantes y una esperanza de vida de más de 82 años, se podría obtener una idea de cuan única es la combinación de código postal, sexo y fecha de nacimiento con una llamada a la función anterior como

repetidos((82*365.25).to_i * 2 * 11_752, 46_770_000)

Que arrojaría los siguientes resultados
No Repetidos: 43730297 (43730297.615365796)
Porcentaje: 93.50074324431428 %

Repetidos: 3039702 (3039702.384634202)
Porcentaje: 6.499256755685701 %

O sea: los datos son únicos en un 93,5% de los casos. Claro que hemos simplificado mucho. La distribución de edades, por ejemplo, no es homogénea y eso alteraría el resultado. OK. Podemos rebajar un poco el porcentaje y aceptar lo que dicen por ahí: un 87%.

NOTA: Para quienes prefieran las simulaciones, también hice un subprograma con ese enfoque. Ahí va...

# Simula el comporatmiento de una población
def simula(anos, codigos_postales, numero_de_sujetos)
 # Sitios donde almacenar conteos de sujetos con unos determinados datos 
 buzones = Hash.new(0)

 # Días a contemplar
 dias = (anos * 365.25).to_i
 
 # Ir simulando personas
 (1..numero_de_sujetos).each do
  dia = rand(dias)
  sexo = rand(2)
  codigo_postal = rand(codigos_postales)
  
  # Generar la clave a partir de los datos aleatorios
  clave = dia + sexo*dias + codigo_postal*dias*2
  buzones[clave] += 1
 end
 
 # Generar estadística de tamaño de grupo
 conteo = Hash.new(0)
  buzones.each_value do |v|
  conteo[v] += 1
 end
 
 # Mostrar resultados
 conteo.each do |tamano, cuenta|
  print "Grupos de coincidentes de #{tamano} sujetos: #{cuenta}\n"
 end
 
 # Probabilidad de ser identificable
 print "\nProbabilidad de ser identificable: " +
    "#{100.0*conteo[1] / numero_de_sujetos} %"
 print "\nProbabilidad de no ser identificable: " + 
    "#{100.0*(numero_de_sujetos - conteo[1]) / numero_de_sujetos} %"
end

Y la salida que produciría para un par de ejecuciones sería
simula(82, 11_752, 46_770_000)
Grupos de coincidentes de 2 sujetos: 1455587
Grupos de coincidentes de 1 sujetos: 43759933
Grupos de coincidentes de 3 sujetos: 32231
Grupos de coincidentes de 4 sujetos: 540
Grupos de coincidentes de 5 sujetos: 8

Probabilidad de ser identificable: 93.56410733376096 %
Probabilidad de no ser identificable: 6.4358926662390425 %




simula(82, 11_752, 46_770_000)
Grupos de coincidentes de 1 sujetos: 43764169
Grupos de coincidentes de 2 sujetos: 1453453
Grupos de coincidentes de 3 sujetos: 32296
Grupos de coincidentes de 4 sujetos: 503
Grupos de coincidentes de 5 sujetos: 5
Probabilidad de ser identificable: 93.5731644216378 %
Probabilidad de no ser identificable: 6.426835578362198 %

Los datos no se diferencian demasiado de los de antes. Buena señal.