Голосование партии Конгресса позволит интернет-провайдерам эксплуатировать частные данные вашей семьи без вашего согласия. См. « Сенат получает прибыль от интернет -провайдера над вашей конфиденциальностью ».
Этот скрипт предназначен для того, чтобы победить это нарушение путем создания больших объемов реалистичных, случайных веб -просмотров для загрязнения данных ISP и сделать его эффективно бесполезным, запутывая фактические данные о просмотре.
Я плачу своим интернет -провайдеру за использование данных каждый месяц. Я обычно не использую всю пропускную способность, за которую плачу. Если мой интернет -провайдер собирается продавать частные привычки просмотра, то я собираюсь загрязнять просмотр шумом и использовать всю пропускную способность, за которую я плачу. Этот метод выполняет это.
Если все используют все данные, за которые они заплатили, чтобы загрязнить историю просмотра, то, возможно, интернет -провайдеры пересмотрит бизнес -модель продажи истории частного просмотра клиента.
Альтернатива использования VPN или TOR просто подталкивает проблему на выбор поставщика VPN, усложняет сеть и добавляет реальную проблему навигации каптхов при появлении в качестве выходящего узла TOR. Кроме того, простой зашифрованный трафик имеет слишком много эксплуатационного побочного канала и все еще может использоваться для определения того, когда конкретные члены семьи находятся дома, и действия, в которых они занимаются.
Этот гусениц использует Chromedriver с библиотекой Selenium Python, использует черные списки для нежелательных веб -сайтов (подробности см. Код) не загружает изображения и уважает robots.txt, которые обеспечивают хорошую безопасность.
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
Подход, используемый в этом сценарии, восприимчив как к статистической атаке, так и к аномалиям движения. Статья Джона Бродкина о конфиденциальности с помощью шумовой инъекции охватывает несколько действительных критических замечаний: подход не гарантированно запутает конфиденциальную личную информацию, и даже если он работает изначально, он может не масштабироваться. Известные недостатки и предложения по улучшениям приветствуются на страницах проблем.
Тем не менее, существуют хорошие теоретические и вероятностные причины для предложения такого подхода, который может работать во многих практических ситуациях. Конфиденциальность через запутывание использовалась во многих контекстах. В науках данных Рубин предложил статистически надежный метод для сохранения конфиденциальности субъекта путем маскировки частных данных с синтетическими данными («Статистическое ограничение раскрытия», JOS 9 (2): 461–468, 1993). В хорошей статье, относящейся к этому репо, Ye et al. Опишите модель конфиденциальности на стороне клиента, которая использует шумовую инъекцию («Внедрение шума для защиты конфиденциальности поиска», Proc. 2009 Intl. Conf. CSE ).
Вот два аргумента с поддержкой обновления об эффективности этого подхода в случае вторжения в конфиденциальность интернет-провайдера. Это не доказательства, но простые модели, которые предполагают некоторый оптимизм, оправданы. Фактическая эффективность должна быть определена путем тестирования этих моделей в реальном мире.
Подход Ye et al. Пытается минимизировать взаимную информацию между пользовательскими данными и пользовательскими данными с инъецированным шумом, представленным на сервер. Взаимная информация - это перекрытие между энтропией пользовательских данных и энтропией пользовательских данных с инъецированным шумом (фиолетовая область ниже). Сумма и распределение инъецированного шума выбраны для того, чтобы сделать эту взаимную информацию максимально небольшой, что затрудняет использование пользовательских данных на стороне сервера.
Примером в статье Ye et al. Являются конкретные поисковые запросы. Аналогия в этом репо является конкретным доменом. Информация об домене является основным данным, протекающим в интернет -провайдеры, если используется зашифрованные HTTPS и поэтому актуальны. Случай незашифрованного трафика с явными условиями запроса и содержания обсуждается в следующем разделе по максимальной вероятности.
Ye et al. Покажите, что взаимная информация исчезает, если:
Количество шумовых вызовов ≥ (количество пользовательских вызовов - 1) × количество возможных вызовов
Для этого приложения количество возможных вызовов - это количество доменов, которые может посетить пользователь (в день), а количество вызовов - это количество посещений. В 2010 году Нильсон сообщил, что средний человек посещает 89 доменов в месяц. Чтобы быть чрезвычайно консервативным в (более), оценивая количество шумовых вызовов, необходимых для скрытия этих данных о просмотре, предположим, что средний пользователь посещает домены O (100) в день, с O (200) запросами пользователя в день или примерно по одному каждые пять минут в течение длительного дня.
Приведенное выше уравнение утверждает, что (200-1) × 100 или около двадцати тысяч (20 000) шумовых вызовов требуются для достижения нулевой взаимной информации между пользовательскими данными и данными пользователя плюс шум.
Это составляет один шум примерно каждые пять секунд, чего очень легко достичь на практике, и легко попадает в номинальную предел пропускной способности 50 ГБ в месяц.
Если теоретическая модель информации на стороне клиента Ye и др. На практике действительна, то разумно ожидать, что параметры, выбранные в этом сценарии, смогут значительно уменьшить или устранить взаимную информацию между фактическими данными домена пользователя и данными домена, представленными для провайдера.
Кроме того, может использоваться меньше шумовых вызовов, если между пользователем и распределением шума введена модель зависимости.
Невешимые HTTP -вызовы протекают очень конкретные пользовательские данные в интернет -провайдере. Целевые методы рекламы используют эти полученные данные для классификации пользователя и обслуживания индивидуальной рекламы на основе категории пользователя. Вероятно, этот подход по своей природе зависит от поиска конкретных «пиков» в распределении запросов пользователей, а затем использует эти пики, чтобы найти наиболее вероятные категории потребителей для пользователя. Внедрение большого количества некоррелированных (или лучших, антикоррелированных) вызовов может препятствовать подходу максимального правдоподобия, используемого для классификации пользователя, поскольку он добавляет гораздо больше пиков во время измеренного распределения интересов пользователей.
Кроме того, пропускная способность передачи рекламодателя сильно ограничена - только так много объявлений подойдут на веб -странице. Добавление некоррелированных шумовых вызовов усложняет проблему выбора подходящего объявления.
Отличные статьи Каве Уодделла и Джона Бродкина о конфиденциальности интернет -провайдера в Атлантике и Ars Technica рассматривают важную критику этого подхода. Они суммированы здесь наряду с ответом, чтобы пользователи знали об этих вопросах, так и для того, чтобы привести к их решению.
«Маскировка истории просмотра человека, наслойся в копиях моделей просмотра других людей, может быть более полезным.» Это была бы система, подобная TOR, где анонимность проходит через общее использование ». [Брюс Шнейер]
«[Не недооценивает] способность интернет-провайдеров… видеть с помощью тактики увязчивания данных». [Брюс Шнайер]
«Случайные поиски Google могут отправить программу по темной кроличьей дыре без знаний пользователя». [Кенн Уайт]
safe=active добавляется в поисковые запросы. -Комментарий 2: Трафик выхода из выхода TOR почти наверняка содержит такой трафик, что является важной проблемой для операторов выхода. Напротив, самого сгенерированного шума, вероятно, будет-и на практике, кажется,-гораздо безопаснее.«Некоторая информация чувствительна, даже если она окружена шумом.… Представьте себе, что если хакеры нацелены на вашего интернет -провайдера, была просочилась история просмотра, и это показало, что вы посещаете конкретные противоречивые веб -сайты… даже если бы это было окружено шумом, было бы очень сложно получить шум, который даст вам правдоподобное отклонение». [Джереми Гиллула]
Анализ других подходов к запутыванию данных показывает восприимчивость к готовым атакам классификации машинного обучения: Pedinti и Saxena продемонстрировали значимую классификацию пользователей с плагином браузера Trackmenot, предназначенным для победы над состязательной поисковой системой («О конфиденциальности веб-поиска, основанного на вопросах запроса: тематическое исследование TrackMenot», в Proc. Plets2010 , 2010). Совместная модель и методы обучения, используемые в этом анализе, непосредственно применимы к случаю посредников. Ключевые особенности атаки Пединти и Саксена:
Ни одна из этих функций атаки не обязательно применима к состязательной модели ISP. Вполне возможно, что интернет-провайдер мог использовать исторические незагрязненные пользовательские данные для обучения классификатора, однако, это предполагает, что интересы, цифры и личности пользователей на IP-адресе учетной записи не меняются с месяца в месяц, маловероятное событие для большинства пользователей и домохозяйств. Без неотреклы пользовательских данных для обучения, эта статья иллюстрирует трудности сторонней де-анонимизации даже с ограниченным количеством шума. Было бы полезно для количественной оценки производительности классификации с помощью и без возможности обучения с нерешимыми пользовательскими данными. Знание ответа для обоих случаев укажет на потенциальные улучшения в подходе запутывания.
Загрязнение данных является одним из компонентов приватизации ваших личных данных. Установите HTTPS от EFF и Badger для конфиденциальности во всех браузерах. Также см. Repos Osxfortress и OSX-Openvpn-Server, чтобы блокировать рекламу, трекеры и вредоносные программы на разных устройствах.
Использование приватизационного прокси для объединения вашего личного трафика с трафиком загрязнения данных добавляет еще один уровень запутывания с помощью управления трафиком заголовка. Заголовки HTTP из загрязненного трафика появляются как:
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
Через некоторое время случайного ползания выглядит так:
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
Снимок экрана случайно ползающей веб -страницы выглядит так. Обратите внимание, что нет загруженных изображений.
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

В зависимости от вашей установки Python (v. 3), зависимости модуля - это numpy , requests , selenium и fake_useragent , а также chromedriver . Как вы их установите, зависит от вашей ОС.
Это включает в себя выбор менеджера пакетов Python (v. 3), обычно pip или Anaconda .
Мне нравится pip , так что на моих машинах я бы сказал:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
Рекомендуется, чтобы двоичный файл chromedriver был установлен непосредственно из [chromedriver.chromium.org] (http://chromedriver.chromium.org/downloads. Обязательно проверьте ETAG загруженной установки.
Команда установки MacPorts:
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
Это то, что также было необходимо на 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 - еще один хороший вариант.
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
Если вы находитесь за брандмауэром, используйте sudo -EH чтобы наследовать настройки среды http_proxy .
chromedriver требует некоторого графического программного обеспечения, виртуального или иного, поэтому на безголовом компьютере вам понадобится следующий системный пакет и локальный пакет.
Если вы не используете VirtualEnv (ниже), запустите PIP как Sudo.
sudo apt-get install xvfb
pip install pyvirtualdisplay
Чтобы изолировать файлы библиотеки PIP, VirtualENV удобен. Если вы предпочитаете этот метод, вы можете выполнить шаги ниже:
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver