[Перевод] Brave внедряет защиту от фингерпринтинга по предпочитаемому языку
TL; DR
Мы продолжаем усиливать нашу защиту от фингерпринтинга: теперь наши пользователи защищены от идентификации по предпочитаемому языку браузера. Начиная с версии 1.39, Brave рандомизирует информацию о ваших языках по умолчанию и об установленных вами шрифтах, которую браузер отправляет сайтам. Тем самым мы продолжаем нашу борьбу с фингерпринтингом, в которой нам нет равных.
В чём опасность того, что трекеры узнают про ваш язык?
При посещении любого сайта, ваш браузер должен сообщить ему ваш язык по умолчанию. Это помогает сайту выдать вам контент на том языке, который вы понимаете. Браузеры делают это как явно (например, с помощью заголовка Accept-Language и Web API navigator.language и navigator.languages), так и неявно (например, с помощью установленных у вас шрифтов).
Однако же, как это часто бывает, технологии, которые задумывались для вашего удобства в сети, увеличивают риски для приватности. В этом случае трекеры могут использовать ваши явные и неявные языковые предпочтения для фингерпринтинга, идентифицируя вас на различных сайтах в разных браузерных сессиях.
Наша технология фарблинга предоставляет наилучшую защиту от фингерпринтинга среди всех популярных браузеров. Она добавляет немного рандомизации в те элементы браузера, которые позволяют идентифицировать вас: достаточно, чтобы запутать трекер, но не настолько много, чтобы сайты ломались. Теперь фарблинг работает и с языковыми предпочтениями.
Как Brave защищает от фингерпринтинга посредством Accept-Language
Заголовок HTTP Accept-Language сообщает сайту о ваших языковых предпочтениях. Если ваш компьютер или браузер настроены на несколько языков, заголовок обычно сообщает обо всех в выбранном вами порядке. Для каждого языка браузер добавляет «вес», который показывает, на сколько именно вы предпочитаете тот или иной язык.
Например, если вы настроили ваш браузер так, что он говорит «я предпочитаю читать сайты по-английски, но если английского нет, то испанский тоже сойдёт», браузер может выразить это в заголовке как
Accept-Language: en;q=.7,es;q=.5
Эта информация в дальнейшем отсылается с каждым запросом вашего браузера в сети. Похожей информацией браузер делится и с работающими на страницах скриптами JavaScript через свойства navigator.language и navigator.languages.
Интеграция со Щитами
Благодаря новой защите от фингерпринтинга по языку браузера, Brave уменьшает количество доступной через эти API информации и рандомизирует её. Эта защита теперь работает по умолчанию через Щиты Brave.
По умолчанию Brave будет сообщать только о вашем самом предпочитаемом языке. Например, если вы выбрали «English (United States)» в качестве первого языка, а корейский как второй, браузер покажет только «en-US, en.». Вдобавок Brave рандомизирует сообщаемый вес (q) внутри определённых значений.
Если вы включите агрессивную защиту от фингерпринтинга в щитах, Brave всегда будет сообщать о предпочтении английского языка (как это делает Tor), т.к. это является наибольшим анонимным множеством. При таких настройках Brave тоже рандомизирует сообщаемый вес (q) внутри определённых значений.
Как Brave защищает от фингерпринтинга по шрифтам
Шрифты можно разделить на три категории:
Веб-шрифты: шрифты, встроенные в сайт для использования на этом сайте. Поскольку они не имеют отношения к конкретному пользователю, они бесполезны для целей фингерпринтинга.
Системные шрифты: шрифты, установленные в ОС, и общие для всех пользователей этой ОС. Поскольку трекеры и так могут выяснить, что у вас за ОС (через строку user agent, JS API и т.д.), получение информации об этих шрифтах обычно не вредит конфиденциальности, хотя установка многочисленных наборов шрифтов для различных языков может увеличить вероятность идентификации.
Пользовательские шрифты: дополнительные шрифты, установленные пользователем, как напрямую (скачиванием и установкой шрифта с сайта), так и косвенно (если другие программы на вашем компьютере установили шрифты: офисные программы, программы для создания и редактирования презентаций и изображений, и т.д.). Это наиболее уязвимые для фингерпринтинга шрифты.
Трекеры также идентифицируют пользователей, проверяя наличие нестандартных шрифтов или шрифтов, которые редко встречаются вместе. Такие идентифицирующие вас шрифты могут быть установлены из-за языковых установок — или напрямую вами, или ОС.
Например, если вы сообщите Windows, что предпочитаете иврит и малайский, Windows установит дополнительные шрифты для этих языков. Трекер может воспользоваться этими данными для вашей идентификации, так как лишь незначительная доля пользователей сети пользуется такой комбинацией шрифтов.
В настоящий момент мы защищаем от фингерпринтинга по шрифтам пользователей на Android, macOS и Windows. Мы не применяем эту защиту на iOS из-за платформенных ограничений и потому что WKWebView включает в себя похожие, хоть и не такие надёжные, меры защиты (Brave для iOS построен на WKWebView; Apple не разрешает нам использовать другой движок). Мы не применяем эту защиту на Linux из-за трудностей в определении того, какие шрифты являются «системными» для каждого конкретного дистрибутива.
Обратите внимание, что нестандартные шрифты могут быть установлены независимо от языковых предпочтений. Некоторое ПО (офисные программы, программы по работе с презентациями и изображениями) добавляют новые шрифты в ОС, а люди иногда устанавливают новые шрифты самостоятельно.
Интеграция со Щитами
И в агрессивных настройках, и в настройках по умолчанию Brave разрешает сайтам доступ ко всем веб-шрифтам, системным шрифтам для выбранного вами в этот момент языка, и рандомизированному («сфарбленному») множеству пользовательских шрифтов. Как и со всеми такими рандомизирующими методами защиты от фингерпринтинга, множество пользовательских шрифтов, доступное странице, определяется случайным образом для каждого сайта и каждой сессии, а сайт всегда сможет получить доступ к одним и тем же шрифтам на протяжении одной браузерной сессии.
Что делать, если вам нужно поделиться большим количеством языковых предпочтений с сайтами?
Мы думаем, что вышеописанные меры защиты будут достаточны для абсолютного большинства пользователей. Тем не менее, мы понимаем, что для некоторых пользователей важно делиться более детальной информацией о своих языковых предпочтениях с сайтами. К примеру, вы можете говорить на языке, который неидеально поддерживается стандартными системными шрифтами, и поэтому можете быть частью сообщества, которое вынуждено пользоваться дополнительными отдельно устанавливаемыми шрифтами для работы в сети. В подобных случаях польза от сообщения сайтам о дополнительных языковых предпочтениях может превосходить риски для конфиденциальности. Для того, чтобы поддержать таких пользователей, и чтобы все могли пользоваться нашим безопасным и конфиденциальным браузером, мы сделали следующее:
Увеличение пользовательского контроля: пользователи Brave, которые хотели бы передавать больше информации о своих языковых предпочтениях сайтам, могут легко настроить свой браузер. Для отключения защиты от фингерпринтинга по языку и шрифтам нужно перейти на brave://settings/shields и выключить опцию Уменьшить идентифицируемость моих языковых предпочтений.
Гибкость: мы будем контролировать этот механизм защиты по мере его внедрения. Если мы увидим проблемы с совместимостью, мы откорректируем эту защиту так, что она не будет ломать сайты.
Сравнение с другими браузерами
Несмотря на то, что Brave — самый конфиденциальный из всех популярных браузеров, другие браузеры тоже предпринимают важные шаги в области подобной защиты. Вот что они умеют:
Safari: Наиболее похожая на Brave защита. Safari сообщает сайтам только самый предпочитаемый язык в Accept-Language и navigator.languages и даёт сайтам доступ только к системным шрифтам для текущего языка пользователя. Принципиальная разница заключается в том, что Brave немного рандомизирует источники данных для того, чтобы сбить трекеры с толку, и предоставляет возможность отключения такой защиты.
Firefox: предоставляет некоторые механизмы защиты от фингерпринтинга по языку браузера, но по умолчанию они отключены. Если пользователь включит защиту от фингерпринтинга, Firefox похожим образом ограничит набор шрифтов, которые сайт сможет использовать.
Chrome и Edge: не предоставляют защиту от фингерпринтинга по языку браузера, хотя оба браузера рассматривают возможность включения подобных защитных мер в рамках предложения Privacy Budget, которое вызывает у нас серьёзные опасения.