El voto de la línea del partido del Congreso permitirá a los ISP explotar los datos privados de su familia sin su consentimiento. Consulte " El Senado pone ganancias del ISP sobre su privacidad ".
Este script está diseñado para derrotar esta violación generando grandes cantidades de navegación web aleatoria realista para contaminar los datos del ISP y hacer que sea efectivamente inútil al ofuscar los datos de navegación reales.
Pago mucho mi ISP por el uso de datos todos los meses. Por lo general, no uso todo el ancho de banda que pago. Si mi ISP va a vender hábitos de navegación privados, entonces voy a contaminar la navegación con ruido y usar todo el ancho de banda que pago. Este método logra esto.
Si todos usan todos los datos que han pagado para contaminar su historial de navegación, entonces quizás los ISP reconsideren el modelo de negocio de vender el historial de navegación privado del cliente.
La alternativa de usar una VPN o TOR simplemente empuja el problema a la elección del proveedor de VPN, complica las redes y agrega el problema real de navegar a los captchas cuando aparece como un nodo de salida TOR. Además, el tráfico simplemente cifrado tiene demasiada información explotable en el canal lateral, y aún podría usarse para determinar cuándo están en casa los miembros de la familia específicos en el hogar y las actividades en las que están comprometidos.
Este rastreador utiliza ChromedRiver con la biblioteca de Python Selenium, usa listas negras para sitios web indeseables (ver el código para obtener detalles), no descarga imágenes y respeta robots.txt, que todos proporcionan buena seguridad.
python3 isp_data_pollution.py
python3 isp_data_pollution.py --help
python3 isp_data_pollution.py -bw 1024 # 1 TB per month
python3 isp_data_pollution.py -g # print debugging statements
El enfoque utilizado en este script es susceptible tanto para el ataque estadístico como para las anomalías del tráfico. El artículo de Jon Brodkin sobre la privacidad a través de la inyección de ruido cubre varias críticas válidas: el enfoque no está garantizado para ofuscar información privada confuso, e incluso si funciona inicialmente, puede no escalar. Los defectos y sugerencias conocidas de mejoras son bienvenidas en las páginas de problemas.
Sin embargo, existen buenas razones teóricas y probabilísticas para sugerir que un enfoque como este podría funcionar en muchas situaciones prácticas. La privacidad a través de la ofuscación se ha utilizado en muchos contextos. En las ciencias de los datos, Rubin propuso un método estadísticamente sólido para preservar la confidencialidad del sujeto al enmascarar datos privados con datos sintéticos ("Limitación de divulgación estadística", Jos 9 (2): 461–468, 1993). En un buen artículo relevante para este repositorio, Ye et al. Describa un modelo de privacidad del lado del cliente que use inyección de ruido ("inyección de ruido para protección de privacidad de búsqueda", Proc. 2009 Intl. Conf. CSE ).
Aquí hay dos argumentos de retroceso para la eficacia de este enfoque en el caso de la intrusión de privacidad del ISP. Estas no son pruebas, sino modelos simples que sugieren que se justifica cierto optimismo. La eficacia real debe determinarse probando estos modelos en el mundo real.
El enfoque de Ye et al. Intenta minimizar la información mutua entre los datos del usuario y los datos del usuario con ruido inyectado presentado a un servidor. La información mutua es la superposición entre la entropía de los datos del usuario y la entropía de los datos del usuario con ruido inyectado (área púrpura a continuación). La cantidad y distribución del ruido inyectado se seleccionan para que esta información mutua sea lo más pequeña posible, lo que dificulta la explotación de datos de usuarios en el lado del servidor.
El ejemplo en el artículo de Ye et al. Es consultas de búsqueda específicas. La analogía en este repositorio son dominios específicos. La información del dominio son los datos primarios filtrados a los ISP si se usan HTTP encriptados y, por lo tanto, son relevantes. El caso del tráfico no certificado con términos y contenido de consulta explícito se discute en la siguiente sección sobre la máxima probabilidad.
Ye et al. Demuestre que la información mutua desaparece si:
Número de llamadas de ruido ≥ (número de llamadas de usuario - 1) × número de posibles llamadas
Para esta aplicación, el número de llamadas posibles es el número de dominios que un usuario podría visitar (por día), y el número de llamadas es el número de visitas realizadas. Nielson informó en 2010 que la persona promedio visita 89 dominios por mes. Para ser extremadamente conservador en (sobre) estimar el número de llamadas de ruido necesarias para oscurecer estos datos de navegación, suponga que el usuario promedio visita los dominios O (100) por día, con O (200) solicitudes de usuario por día, o aproximadamente una cada cinco minutos durante un día largo.
La ecuación anterior afirma que (200-1) × 100 o alrededor de veinte mil (20,000) llamadas de ruido se requieren para lograr información mutua cero entre los datos del usuario y el usuario más los datos de ruido.
Esto equivale a una llamada de ruido aproximadamente cada cinco segundos, lo cual es muy fácil de lograr en la práctica, y se encuentra fácilmente dentro de un límite nominal de ancho de banda de 50 GB por mes.
Si el modelo teórico de información del lado del cliente de Ye et al. Es válido en la práctica, entonces es razonable esperar que los parámetros elegidos en este script puedan reducir o eliminar en gran medida la información mutua entre los datos del dominio del usuario real y los datos de dominio presentados al ISP.
Además, se pueden usar menos llamadas de ruido si se introduce un modelo de dependencia entre el usuario y las distribuciones de ruido.
HTTP sin cifrar las llamadas a filtrar datos de usuario altamente específicos al ISP. Los métodos de publicidad dirigidos utilizan estos datos capturados para clasificar al usuario y servir publicidad a medida en función de la categoría del usuario. Probilísticamente, este enfoque depende inherentemente de encontrar "picos" específicos en una distribución de consultas de usuarios, y luego usar estos picos para encontrar las categorías de consumidores más probables para el usuario. Inyectar una gran cantidad de llamadas no correlacionadas (o mejores, anticorrelacionadas) pueden obstaculizar el enfoque de máxima probabilidad utilizado para clasificar al usuario porque agrega muchos más picos a lo largo de la distribución medida de los intereses del usuario.
Además, el ancho de banda de transmisión del anunciante está muy limitado, solo muchos anuncios encajarán en una página web. Agregar llamadas de ruido no correlacionadas complica el problema de seleccionar el anuncio apropiado.
Tanto los excelentes artículos de Kaveh Waddell como Jon Brodkin sobre la privacidad del ISP en el Atlantic y ARS Technica abordan críticas importantes de este enfoque. Estos se resumen aquí junto con una respuesta, para que los usuarios estén al tanto de estos problemas y que soliciten sugerencias para abordarlos.
"Enmascarar la historia de la navegación de una persona mediante capas en copias de los patrones de navegación de otras personas podría ser más útil ..." Sería un sistema tipo TOR donde el anonimato se produce a través del uso compartido ". [Bruce Schneier]
"[No subestimen] la capacidad de los proveedores de Internet ... ver a través de tácticas de obfuscación de datos". [Bruce Schneier]
"Las búsquedas aleatorias en Google podrían enviar el programa por una madriguera oscura, sin el conocimiento del usuario". [Kenn White]
safe=active se agrega a las consultas de búsqueda. -Comentario 2: El tráfico de nodo de salida de TOR es casi seguro que contiene dicho tráfico, que es un tema importante para los operadores de nodos de salida. Por el contrario, es probable que el ruido autogenerado sea, y en la práctica parece ser, mucho más seguro."Alguna información es confidencial incluso si está rodeada de ruido ... Imagínese si los piratas informáticos se dirigieron a su ISP, su historial de navegación se filtró, y le mostró visitar sitios web controvertidos específicos ... [Jeremy Gillula]
El análisis de otros enfoques de ofuscación de datos muestran susceptibilidad a los ataques clasificadores de aprendizaje automático de los estantes: Pedinti y Saxena demostraron una clasificación significativa del usuario con el complemento del navegador TrackMenot destinado a derrotar un motor de búsqueda adversos ("en la privacidad de la búsqueda web basada en la obfusca de consultas: un estudio de caso de rastreot", en proc. Pets2010 , 2010).). El modelo adversario y los métodos de entrenamiento utilizados en este análisis no son directamente aplicables al caso de los intermediarios de ISP. Las características clave del ataque de Pedinti y Saxena son:
Ninguna de estas características de ataque es necesariamente aplicable a un modelo adversario de ISP. Es posible que un ISP pueda usar datos históricos de usuarios no contaminados para capacitar a un clasificador, sin embargo, esto supone que los intereses, números y identidades de los usuarios en una dirección IP de la cuenta no cambian de mes a mes, un evento poco probable para la mayoría de los usuarios y hogares. Sin datos de usuario no corruptos para entrenar, este documento ilustra las dificultades de la desanonimización de terceros incluso con cantidades limitadas de ruido. Sería útil cuantificar el rendimiento de la clasificación con y sin la capacidad de entrenar con datos de usuario no corruptos. Conocer la respuesta para ambos casos apuntaría a posibles mejoras en el enfoque de ofuscación.
La contaminación de datos es un componente para privatizar sus datos personales. Instale los https del EFF en todas partes y el tejón de privacidad en todos los navegadores. También vea el Repos OSX Forcress y OSX-Openvpn-Server para bloquear la publicidad, los rastreadores y el malware en todos los dispositivos.
El uso de un proxy privatizante para agrupar su propio tráfico personal con el tráfico de contaminación de datos agrega otra capa de ofuscación con el control del tráfico de encabezado. Los encabezados HTTP del tráfico contaminado aparecen como:
GET /products/mens-suits.jsp HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Accept-Language: en-US,*
Host: www.bananarepublic.com
Connection: keep-alive
Después de un tiempo de rastreo aleatorio se ve así:
This is ISP Data Pollution ??, Version 1.1
Downloading the blacklist… done.
Display format:
Downloading: website.com; NNNNN links [in library], H(domain)= B bits [entropy]
Downloaded: website.com: +LLL/NNNNN links [added], H(domain)= B bits [entropy]
http://eponymousflower.blogspot.com/2017/02/lu…: +6/32349 links, H(domain)=6.8 b
La captura de pantalla de una página web que se arrastra al azar se ve así. Tenga en cuenta que no hay imágenes descargadas.
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

Dependiendo de su instalación de Python (v. 3), las dependencias del módulo son numpy , requests , selenium y fake_useragent , así como chromedriver . La forma en que instala estos depende de su sistema operativo.
Esto implica elegir un administrador de paquetes Python (v. 3), generalmente pip o Anaconda .
Me gusta pip , así que en mis máquinas diría:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
Se recomienda que el chromedriver Binary se instale directamente desde [ChromedRiver.chromium.org] (http://chromedriver.chromium.org/downloads. Asegúrese de verificar el ETAG de la instalación descargada.
El comando de instalación de MacPorts es:
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
Esto es lo que también era necesario en MacOS:
sudo port install chromedriver
sudo -H pip-3.7 install selenium fake_useragent
# if chromedriver fails to install because of an Xode configuration error: test with
/usr/bin/xcrun -find xcrun
# then do this:
cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo ln -s xcodebuild xcrun
Homebrew es otra buena opción.
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y groupinstall development
sudo yum -y install python34 python34-pip python34-devel python34-pyflakes openssl-devel
sudo pip3 install --upgrade pip
sudo pip3 install numpy psutil requests selenium fake_useragent pyopenssl
sudo apt-get install git
git clone https://github.com/essandess/isp-data-pollution.git
cd isp-data-pollution/
sudo apt install python3-pip
pip3 install --upgrade pip
pip3 install numpy
pip3 install psutil
sudo -H pip3 install psutil --upgrade
sudo -H pip3 install --upgrade pip
sudo -H pip3 install selenium
sudo -H pip3 install fake_useragent
sudo -H pip3 install pyopenssl
sudo apt-get install fontconfig
sudo apt-get install libfontconfig
sudo apt-get install build-essential chrpath libssl-dev libxft-dev
sudo apt-get install libfreetype6 libfreetype6-dev
sudo apt-get install libfontconfig1 libfontconfig1-dev
#! Please update these commands for chromedriver
# export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
# sudo mv $PHANTOM_JS /usr/local/share
ls /usr/local/share
# sudo ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
# phantomjs --version
python3 isp_data_pollution.py
Si está detrás de un firewall, use sudo -EH para heredar la configuración del entorno http_proxy .
chromedriver requiere algún software gráfico, virtual o de otro tipo, por lo que en una computadora sin cabeza, necesitará el siguiente paquete del sistema y el paquete local.
Si no está usando VirtualEnv (a continuación), ejecute PIP como sudo.
sudo apt-get install xvfb
pip install pyvirtualdisplay
Para aislar los archivos de la biblioteca PIP, VirtualEnv es conveniente. Si prefiere este método, puede seguir los pasos a continuación:
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver