Pull to refresh

Comments 25

UFO just landed and posted this here
Нет. С виртуалкой из основной ОС можно делать что угодно. Пока что TAILS мне представляется наилучшим вариантом.

Нужен браузер, выдающий одинаковые результаты вне зависимости от окружения. То есть всегда одинаковые результаты. И нужен стандарт на эти результаты, чтобы разработчики средств анонимизации могли знать «мой браузер должен выдавать это, иначе моё средство можно отличить от большинства других средств». Замечу — измерять можно не только шрифты, но и производительность, следовательно нужно будет подтвикать движок так, чтобы у него была фиксированная производительность на всех машинах, при измерении её средствами JavaScript. Но JS всё равно желательно отключить — даже если отпечаток будет везде одинаковый, не факт что в реализации движка нет уязвимости (софт очень сложный, скорее всего там их тонны).
Таким браузером и должен быть TBB. Если в TBB по умолчанию утекает что-то, полезное для фингерпринтинга, то это надо исправлять. Проверялся на ip-check.info и ничего подозрительного с шрифтами не нашлось.
1. Загрузил ваш тест к себе (ссылка). Открываю в TBB, результата не вижу, в консоли появляется сообщение «SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data fingerprint.html:87».
2. Какой смысл в десятикратном тесте?
3. Не понял, как происходит фингерпринтинг в TBB, если в нём не работает функция получения содержимого canvas.
1 такое бывает, когда куки не чисты. Промежуточные результаты сохраняются в куках. Попробуйте набрать в консоли document.cookie="".
2 ТББ меняет рандомные шрифты на fallback-шрифт (задаётся в настройках, обычно это serif, на винде это Times New Roman). Соответственно мы хотим получить реальный отпечаток, поэтому отсеиваем на промежуточных итерациях отпечатки fallback-шрифта, и только перед выводом обрабатываем serif и sans-serif.
3 Мы получаем не содержимое холста, а размеры символов шрифтов.
Сделал New Identity, результат такой же. У вас моя ссылка работает?
PS этот скрипт изначально был написан под запуск на локальной машине. Если переделать под local storage, то будет работать и c сайта, НО НЕ В TBB.
Я запускал так: открывал папку и тащил хтмлку в окно TBB.
Уязвимость обычных браузеров к фингерпринтингу очевидна, тут и проверять нечего. Интересна именно атака на TBB и именно с сайта. Вдруг локальные html-файлы имеют в TBB больше привилегий, чем сайты? Кстати, я слышал, что возможность открывать локальные файлы в TBB закрыли. В общем, переделайте для просмотра через сайт, пожалуйста.
1 всё прекрасно открывается.
2 Я ещё тестировал на локалхосте через апач (с отключённой торификацией (вырубить аддон TorLauncher, отключить прокси в настройках, торбуттон не вырубать)). Работало.
3 насчёт привелегий — вряд ли, я не использовал никаких привелегированных апи.
Скрипт попробую сделать нечувствительным к посторонним кукам.
Действительно открывается file:///home/starius/test.html
Наверное, я спутал с блокировкой 127.0.0.1 и айпишников локальной сети в TBB.
Заранее благодарен за тест, работающий с сайта.
проверяйте. поскольку хранится в куках, можете на сервере аналитику прикрутить (в том числе поитерационную). Заранее благодарен.
Я об этой проблеме давно думал, мне кажется, что самым разумным было бы настроить запуск новой копии* браузера под каждый новый пользовательский переход с сайта на сайт.

* новая копия — отдельная виртуалка\контейнер с типовым скучным браузером под типовой скучной виндой, удаляющийся сразу, как копия теряет актуальность.
Мне ваше предложение напомнило проект Qubes.
Лично мне КАЖЕТСЯ, что возможно изолировать сайты друг от друга на уровне браузера. От малвари, разумеется, такое не защитит. Меры зависят от модели угроз. Ваше предложение, может защитить в том числе от малвари, если она не пробьёт гипервизор.
Если вас не затруднит, могли бы вы протестировать ваш скрипт в Whonix? Разработчик очень постарался, чтобы все пользователи Whonix были неразличимы.
Затруднит: guest additions в комплекте whonix не идут (в тейлсе идут), а ставить из репoзитория что-либо стрёмно, так как я изначально планировал обойтись 1й запущенной виртуалкой (машина двухядерная). Не могли бы вы протестировать, если вас не затруднит?
Для Whonix от host'а не нужно ничего, кроме собственно VirtualBox. Давайте разделим: вы подготовите работающий URL с тестом, а я проверю его из Whonix :)
Открыл обе ссылки в обычном Tor Browser (свежем, без куков, только что после New Identity). В обоих случаях произошла ошибка. Привожу текст ошибки для второй ссылки: «ReferenceError: BLAKE2s is not defined light:133».
Как минимум у меня на мобильном и на компе (без торбраузера, может он скрипты с других доменов фильтрует?) работает. странно.

а так: jsfiddle.net/fyw4qmdg/4/?
jsfiddle.net/fyw4qmdg/4/ у меня не заработал ни в Tor Browser, ни в Iceweasel.

jsfiddle.net/fyw4qmdg/5/ заработал и в Tor Browser, и в Iceweasel.

Iceweasel прошёл через все 10 итераций и выдал следующее:
{"Times New Roman":"c2c91d5b3c4fecd9109afe0e",
"Arial":"4917211a76ddf69db033e125",
"Courier New":"eb211de3b75234ea90a50c3f",
"Symbol":"709ab9f882b1808b323e7d09",
"Droid Sans":"fbc25f5e038a28b94454fa13",
"DejaVu Sans":"c0bf2bce71e4313758d1aba8",
"serif":{"d":"5daa940a38e3b137916aadcb",
"fonts":["Impact","Bookman Old Style","Consolas",
"MS Gothic","Constantia","Calibri","Cambria","Wingdings",
"Webdings","Ubuntu Mono","Inconsolata","Inconsolata LGC",
"Source Code Pro","Lucida Handwriting","Georgia","System","vgaoem"]},
"sans-serif":{"d":"46a9a2d351881662502ed793","fonts":[]}}


Обычный Tor Browser в Linux застрял на первой итерации. Постоянно загружает какие-то файлы из сети. Мне удалось скопировать следующее:
{"it":1,"fonts":{
  "Times New Roman":"c2c91d5b3c4fecd9109afe0e",
  "Arial":"4917211a76ddf69db033e125",
  "Courier New":"eb211de3b75234ea90a50c3f"},
"fontFingerprintingTotalTime":2404.465604000002,
"serifHash":"5daa940a38e3b137916aadcb",
"sansHash":"46a9a2d351881662502ed793"}


Tor Browser в Whonix аналогично застрял. Привожу результаты:
{"it":1,"fonts":{},
"fontFingerprintingTotalTime":3678.075286000002,
"serifHash":"6d0bcd365a1eaade9320ed12",
"sansHash":"3a84298716a4bca4cb4f4d0f"}


Результаты неутешительные. Пугают совпадения между Iceweasel и Tor Browser в Linux, а также расхождения Tor Browser в Linux и в Whonix.

Решения: 1) заблокировать функцию получения размера теста (подобно функции получения содержимого canvas); 2) вместе с Tor Browser распространять файлы шрифтов и использовать только их, а не системные шрифты, для рендеринга использовать один и тот же код на всех платформах, не использовать аппаратные и платформозависимые функции. Второе решение сложнее реализовать, так что пока можно ограничиться первым.

А для начала надо сообщить разработчикам Tor Browser, что найден источник фингерпринтинга и прикрепить ссылку на тест. Вы этим займётесь?
1 заблочить — слишком радикально.
2 именно так. Они знают, на баг-трекере висит тикет «распространять шрифты с торбраузером» trac.torproject.org/projects/tor/ticket/13313, но вообще-то нужен единый стандарт для всех.
Желательно w3cшный, и чтобы при введении новой фичи оговаривалось, как она должна вести себя в анонимизированном браузере.

Почему застрял — не знаю, попробуйте скачать файлы из гиста по одному (blake2s.min.js и fingerprinter.html) и запустить перетаскиванием. у меня так работало (вечером выложу свои результаты, сравним). все эти фиддлы не нужны, изначально их использовать не предполагалось.

разрабам сообщал, ссылка на тикет в статье есть
HTTP Public Key Pinning частично поможет (против смены ЦС, но ничего не мешает существующему ЦС перевыпустить сертификат)
Так не прикрепляйте промежуточный или корневой сертификат ЦС. Прикрепляйте сертификат сервера!
P.S. Примечательно, что мой комментарий идеально соответствует первым двум словам заголовка статьи.
Можно и так, вот только если нужно будет сменить сертификаты (напр. все отозвали, включая резервные) — будет трагедия. Но это неизбежно при пиннинге.

Кстати курл, насколько я понял, его не поддерживает. Но ему можно задать в командной строке открытый ключ.
Sign up to leave a comment.

Articles