Осторожнее с копипастом: фингерпринтинг текста непечатаемыми символами

Mr.Varenik

Гуру форума
Регистрация
5 Янв 2018
Сообщения
287
Реакции
50
Символы нулевой ширины — это непечатаемые управляющие символы, которые не отображаются большинством приложений. Например, в это предложение я вставил десять пробелов нулевой ширины, вы это заметили? (Подсказка: вставьте предложение в Diff Checker, чтобы увидеть местоположение символов!). Эти символы можно использовать как уникальные «отпечатки» текста для идентификации пользователей.



Безусловно, он может здесь быть. И вы никогда не догадаетесь

Зачем?

Ну, изначальная причина не слишком интересна. Несколько лет назад я с командой участвовали в соревнованиях по различным видеоиграм. У команды была приватная страничка для важных объявлений, среди прочего. Но в итоге эти объявления стали репостить в других местах, с издевательствами над командой, раскрывая конфиденциальную информацию и командную тактику.

Защита сайта казалась довольно стойкой, поэтому мы выдвинули предположение, что действует инсайдер, который входит по логину и паролю, а потом просто копирует объявление и размещает в другом месте. Поэтому я разработал скрипт, который в каждом объявлении невидимо отпечатывает имя пользователя, которому отображается это объявление.

Заключение

Компании как никогда много внимания уделяют утечкам информации и поиску инсайдеров. Этот лишь один из многих трюков, которые можно использовать. В зависимости от направления вашей работы, может быть жизненно важно понимать риски, связанные с копированием текста. Очень немногие приложения отображают непечатаемые символы. Например, вы можете предположить, что ваш терминал попытается их отобразить (мой нет!).

Если вернуться к секретной доске объявлений, то план сработал как надо. Вскоре после внедрения скрипта вышло новое объявление. В течение нескольких часов текст распространили в другом месте с прикрепленной непечатаемой строкой. Имя пользователя виновника успешно идентифицировали, и его забанили: хэппи-энд!

Конечно, есть определённые оговорки по использованию этого метода. Например, если пользователь знает о скрипте, то теоретически может заменить непечатаемые символы, чтобы подставить другого человека. Так что лучше вместо имени пользователя вставлять уникальный секретный ID.
 

mrLom

♒︎
Регистрация
24 Дек 2014
Сообщения
938
Реакции
1.926
Хоть бы ссылки оставляли. Безусловно интересная статья! Для просмотра ссылки Войди или Зарегистрируйся

В продолжение темы еще один интересный Для просмотра ссылки Войди или Зарегистрируйся:

Символы с нулевой шириной
  • Эта публикация - перевод статьи. Ее автор - Zach Aysan. Оригинал доступен по ссылке ниже:
    Для просмотра ссылки Войди или Зарегистрируйся
Невидимый отпечаток текста

Журналисты, остерегайтесь - вы можете непреднамеренно раскрывать источники.

В начале 2016 года я понял, что можно использовать символы нулевой ширины, такие как Для просмотра ссылки Войди или Зарегистрируйся или другие символы - например, Для просмотра ссылки Войди или Зарегистрируйся для текста отпечатка пальца. Даже с одним типом символа нулевой ширины присутствие или отсутствие невидимого символа - это достаточное количество бит для отпечатка пальца даже самого короткого текста.

Мы не один и тот же текст, хотя мы и выглядим одинаково.
Мы не один и тот же текст, хотя мы и выглядим одинаково.

We're not the same text, even though we look the same.
We're not the same text, even though we look the same.

Так выглядит в diffchecker.com
Снимок экрана 2018-04-07 в 19.26.01.png

Так выглядит в терминале:
Снимок экрана 2018-04-07 в 19.26.49.png

В отличие от предыдущих методов отпечатков пальцев, символы нулевой ширины не удаляются при потере форматирования. Они часто даже не видны в тех контекстах, где эксперты по программному обеспечению ожидали бы их, например, на терминале программирования.

Я также понял, что можно использовать замену Для просмотра ссылки Войди или Зарегистрируйся (например, заменяя букву «а» ее кириллицей-копией «а»), но я отклонил ее как слишком легко обнаруживаемую из-за различий в характере рендеринга между шрифтами и системами. Тем не менее, различия в тире (en, em и дефисы), цитатах (прямые или "елочки"), правописание слови количество пробелов после окончаний предложения, вероятно, могут остаться незамеченными из-за их частого использования в реальном тексте.

Можно также использовать синонимы ("огромные" против "больших" или "массивных"), хотя для этого потребуется некоторая ручная настройка, потому что словам не хватает единых определений (из-за омонимов) и в некоторых контекстах было бы легче обнаружить.

Контрмеры для журналистов или других лиц, работающих с лицами, уклоняющимися от должности, в порядке убывания эффективности:

  1. Избегайте выхода отрывков и необработанных документов.
  2. Получите одни и те же документы из нескольких элементов, чтобы гарантировать, что они имеют одинаковый контент на байтовом уровне.
  3. Вручную повторите выдержки, чтобы избежать невидимых персонажей и гомоглифов.
  4. Храните отрывки в коротком варианте, чтобы ограничить объем общей информации.
  5. Используйте инструмент, который удаляет не белые символы из текста, прежде чем делиться им с другими.
Узнав эти методы, я поделился ими с некоторыми друзьями, чтобы попытаться выследить кибер-преступника, который, по их мнению, может быть угрозой для инсайдеров (это был не обычный хакер). Затем Белый дом начал течь, как старый шланг, поэтому я продолжал молчать. Причина, по которой я пишу об этом сейчас, заключается в том, что, как представляется, Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся обнаружены другими, поэтому журналисты должны быть проинформированы о существовании этих методов.

Если ваша новостная организация имеет уже существующую структуру документов, она должна быть достаточно простой, чтобы отсканировать их для символов нулевой ширины или смешанных кодировок символов. Обнаружение замены синонимов потребует нескольких документов и некоторого пользовательского кода, но должно быть достаточно простым для опытного научного сотрудника или разработчика программного обеспечения через некоторое время.

Обновление: Для просмотра ссылки Войди или Зарегистрируйся на основе отзывов читателей и других комментариев.
 
Последнее редактирование:
  • Нравится
Реакции: GiT

Mr.Varenik

Гуру форума
Регистрация
5 Янв 2018
Сообщения
287
Реакции
50
Я не претендую на авторство, на этом форуме много нарушений авторского права и вообще... Сами знаете :) я решил не заморачиваться. Статья понравилась, я ее сюда и скинул
 

mrLom

♒︎
Регистрация
24 Дек 2014
Сообщения
938
Реакции
1.926
Я не претендую на авторство, на этом форуме много нарушений авторского права и вообще... Сами знаете :) я решил не заморачиваться. Статья понравилась, я ее сюда и скинул
Не подумайте ничего плохого! За авторство тут не гоняют!
Безусловно, вопрос не в авторстве — всегда интересно почитать статью в полной мере, с примерами, пруфами и технологией. Понятное дело, что гугл не забанили. Но всё же
 
Последнее редактирование:

Mr.Varenik

Гуру форума
Регистрация
5 Янв 2018
Сообщения
287
Реакции
50
Договорились, буду ссылки оставлять :)
 

mrLom

♒︎
Регистрация
24 Дек 2014
Сообщения
938
Реакции
1.926
Господа!
Тема несколько меняет возможности доставки соли всяким барыгам.
 

Anastasiya96

Постоялец
Регистрация
14 Мар 2018
Сообщения
137
Реакции
141
Договорились, буду ссылки оставлять
а если я перед тем, как скопированный текст куда-то вставить, я его для начала помещаю в обычный блокнот. сразу пропадают ненужные символы, шрифты, форматы... это спасёт от символов нулевой ширины?)
 

mrLom

♒︎
Регистрация
24 Дек 2014
Сообщения
938
Реакции
1.926
Я проводил эксперемент.
Пастил в блокнот, из блокнота в маковский TextEdit. Символы оставались, что заметно в терминальных текстовых редакторах.

К слову, что бы вам стало понятнее — это те же символы в юникод кодировке, как буква "а", как "пробел", как "запятая", но они невидимые символы нулевой ширины. ³$‰↑∞← как видимые символы и не видимые символы.
 

mrLom

♒︎
Регистрация
24 Дек 2014
Сообщения
938
Реакции
1.926
Тут в тексте по ссылке:
Для просмотра ссылки Войди или Зарегистрируйся

Снимок экрана 2018-04-09 в 23.31.46.png
копируйте строку, содержащую пробелы нулевой ширины и эксперементируйте.

При помощи онлайн сервиса:
Для просмотра ссылки Войди или Зарегистрируйся

При помощи терминальных текстовых радакторов:
Снимок экрана 2018-04-09 в 23.38.27.png

Файл сохранял в разных форматах:
Снимок экрана 2018-04-09 в 23.39.24.png

Снимок экрана 2018-04-09 в 23.40.51.png

Как видно, при эксплуатации терминального редактора, эти символы очень заметны и выделяются на фоне всего текста. Но, уже в простом текстовом редакторе, в вебе, в ворде — их не видно.
При помощи Word~а:
Снимок экрана 2018-04-09 в 23.44.42.png

Что-то видно включив опцию "Показать редакторские правки":
Снимок экрана 2018-04-09 в 23.46.28.png

Но я очень сомниваюсь, что кто-то копирует все тексты и прогоняет их через подобные опции.
 
Сверху