La huella digital de sonido de la computadora a trav茅s de la API AudioContext



Las compa帽铆as que rastrean la actividad de los usuarios en Internet necesitan una identificaci贸n confiable de cada persona sin su conocimiento. Las huellas digitales a trav茅s de un navegador encajan perfectamente. Nadie se dar谩 cuenta si la p谩gina web solicita dibujar un fragmento gr谩fico a trav茅s del lienzo o genera una se帽al de sonido de volumen cero, midiendo los par谩metros de respuesta.

El m茅todo funciona de forma predeterminada en todos los navegadores, excepto Tor. No requiere ning煤n permiso de usuario.

Seguimiento total


Recientemente, el periodista del NY Times Kashmir Hill descubri贸 que una compa帽铆a poco conocida Sift hab铆a acumulado expedientes de 400 p谩ginas . Hay una lista de compras para varios a帽os, todos los mensajes a los anfitriones en Airbnb, la billetera de Coinbase lanza un registro en un tel茅fono m贸vil, direcciones IP, pedidos de pizza para iPhone y mucho m谩s. Una colecci贸n similar es realizada por varias compa帽铆as de puntuaci贸n. Toman en cuenta hasta 16,000 factores al compilar una "calificaci贸n de confianza" para cada usuario. Los rastreadores de cribado se instalan en 34,000 sitios y aplicaciones m贸viles .

Dado que las cookies y los scripts de seguimiento no siempre funcionan bien o est谩n deshabilitados en el cliente, el seguimiento de los usuarios se complementa con huellas digitales: este es un conjunto de m茅todos para obtener una "huella digital" 煤nica del navegador / sistema. La lista de fuentes instaladas, complementos, resoluci贸n de pantalla y otros par谩metros en total proporcionan suficientes bits de informaci贸n para obtener una identificaci贸n 煤nica. Las huellas digitales a trav茅s del lienzo funcionan bien.

Huellas digitales a trav茅s de la API de Canvas


La p谩gina web le indica al navegador que dibuje un objeto gr谩fico a partir de varios elementos.

<canvas class="canvas"></canvas> 

  const canvas = document.querySelector('.canvas'); const ctx = canvas.getContext('2d'); // Maximize performance effect by // changing blending/composition effect ctx.globalCompositeOperation = 'lighter'; // Render a blue rectangle ctx.fillStyle = "rgb(0, 0, 255)"; ctx.fillRect(25,65,100,20); // Render a black text: "Hello, OpenGenus" var txt = "Hello, OpenGenus"; ctx.font = "14px 'Arial'"; ctx.fillStyle = "rgb(0, 0, 0)"; ctx.fillText(txt, 25, 110); // Render arcs: red circle & green half-circle ctx.fillStyle = 'rgb(0,255,0)'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI*3, true); ctx.closePath(); ctx.fill(); ctx.fillStyle = 'rgb(255,0,0)'; ctx.beginPath(); ctx.arc(100, 50, 50, 0, Math.PI*2, true); ctx.closePath(); ctx.fill(); 

El resultado se parece a esto:



Una funci贸n de la API de Canvas llamada toDataURL () devuelve un URI con datos que coinciden con este resultado:

  console.log(canvas.toDataURL()); /* Ouputs something like: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNby mblAAAWDElEQVQImWNgoBMAAABpAAFEI8ARexAAAElFTkSuQmCC" */ 

Este URI es diferente en diferentes sistemas. Luego se procesa en hash y se usa junto con otros bits de datos que conforman la huella digital 煤nica del sistema. Entre otras cosas:

  • fuentes instaladas (aproximadamente 4.37 bits de informaci贸n de identificaci贸n);
  • complementos instalados en el navegador (3.08 bits);
  • Encabezados HTTP_ACCEPT (16,85 bits)
  • agente de usuario;
  • idioma
  • zona horaria
  • tama帽o de pantalla
  • c谩mara y micr贸fono;
  • Versi贸n del sistema operativo
  • y otros

El hash de la huella digital del lienzo agrega 4.76 bits adicionales de informaci贸n de identificaci贸n. El hash de huellas digitales WebGL es de 4.36 bits.

Prueba de huella digital

Recientemente, adem谩s de un conjunto de par谩metros, se ha agregado otro: una huella digital de audio a trav茅s de la API AudioContext .

En 2016, este m茅todo de identificaci贸n ya fue utilizado por cientos de sitios como Expedia, Hotels.com y otros.

Huellas digitales a trav茅s de la API AudioContext


El algoritmo de acciones es el mismo: el navegador realiza la tarea, y registramos el resultado de la ejecuci贸n y calculamos un hash 煤nico (huella digital), solo en este caso los datos se extraen de la pila de audio. En lugar de la API de Canvas, se est谩 accediendo a la API de AudioContext , es la API de Web Audio que admiten todos los navegadores modernos.

El navegador genera una se帽al de audio de baja frecuencia, que se procesa teniendo en cuenta la configuraci贸n de sonido y el equipo instalado en el dispositivo. En este caso, no se graba ni reproduce sonido. Los altavoces y el micr贸fono no est谩n involucrados.

La ventaja de este m茅todo de huellas digitales es que es independiente del navegador, por lo que puede rastrear al usuario incluso despu茅s de cambiar de Chrome a Firefox, luego a Opera y as铆 sucesivamente.

Prueba de huellas digitales a trav茅s de AudioContext API



C贸mo obtener una huella digital, tutorial :

  1. Primero, debe crear una matriz para almacenar los valores de frecuencia.

      let freq_data = []; 

  2. Luego, se crea un objeto AudioContext y varios nodos para generar una se帽al y recopilar informaci贸n utilizando los m茅todos integrados del objeto AudioContext.

      // Create nodes const ctx = new AudioContext(); // AudioContext Object const oscillator = ctx.createOscillator(); // OscillatorNode const analyser = ctx.createAnalyser(); // AnalyserNode const gain = ctx.createGain(); // GainNode const scriptProcessor = ctx.createScriptProcessor(4096, 1, 1); // ScriptProcessorNode 

  3. Apague el volumen y conecte los nodos entre s铆.

      // Disable volume gain.gain.value = 0; // Connect oscillator output (OscillatorNode) to analyser input oscillator.connect(analyser); // Connect analyser output (AnalyserNode) to scriptProcessor input analyser.connect(scriptProcessor); // Connect scriptProcessor output (ScriptProcessorNode) to gain input scriptProcessor.connect(gain); // Connect gain output (GainNode) to AudioContext destination gain.connect(ctx.destination); 

  4. Usando ScriptProcessorNode , creamos una funci贸n que recopila datos de frecuencia durante el procesamiento de audio.
    • La funci贸n crea una matriz Float32Array de Float32Array con una longitud igual al n煤mero (frecuencia) de valores de datos en AnalyserNode , y luego la llena con valores.
    • Estos valores se copian en la matriz que creamos anteriormente ( freq_data ) para que podamos escribirlos f谩cilmente en la salida.
    • Apague los nodos y muestre el resultado.

        scriptProcessor.onaudioprocess = function(bins) { // The number of (frequency) data values bins = new Float32Array(analyser.frequencyBinCount); // Fill the Float32Array array of these based on values analyser.getFloatFrequencyData(bins); // Copy frequency data to 'freq_data' array for (var i = 0; i < bins.length; i = i + 1) { freq_data.push(bins[i]); } // Disconnect the nodes from each other analyser.disconnect(); scriptProcessor.disconnect(); gain.disconnect(); // Log output of frequency data console.log(freq_data); }; 

  5. Comenzamos a reproducir el tono, de modo que el sonido se genera y procesa de acuerdo con la funci贸n.

      // Start playing tone oscillator.start(0); 
El resultado es algo como esto:

  / *
 Salida:
 [
 -119.79788967947266, -119.29875891113281, -118.90072674835938,
 -118.08164726269531, -117.02244567871094, -115.73435120521094,
 -114.24555969238281, -112.56678771972656, -110.70404089034375,
 -108.64968109130886, ...
 ]
 * / 

Esta combinaci贸n de valores se codifica para crear una huella digital, que luego se utiliza con otros bits de identificaci贸n.

Para protegerse contra dicho seguimiento, puede usar extensiones como AudioContext Fingerprint Defender , que mezclan ruido aleatorio en la huella digital.

NY Times proporciona direcciones de correo electr贸nico donde puede contactar a las compa帽铆as de rastreo y pedirles que muestren la informaci贸n recopilada sobre usted.

  • Zeta Global : formulario en l铆nea
  • Ecuaci贸n minorista : returnnactivityreport@theretailequation.com
  • Riesgo : privacy@riskified.com
  • Kustomer : privacy@kustomer.com
  • Sift : privacy@sift.com, el formulario en l铆nea se desactiva despu茅s de la publicaci贸n del art铆culo.




Source: https://habr.com/ru/post/475586/


All Articles