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

Тема в разделе "Анонимность в сети", создана пользователем Mr.Varenik, 7 апр 2018.

  1. Mr.Varenik

    Mr.Varenik

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



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

    Зачем?

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

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

    Заключение

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

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

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

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    929
    Симпатии:
    1.825
    Хоть бы ссылки оставляли. Безусловно интересная статья! https://habrahabr.ru/post/352950/

    В продолжение темы еще один интересный перевод статьи:

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

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

    В начале 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. Используйте инструмент, который удаляет не белые символы из текста, прежде чем делиться им с другими.
    Узнав эти методы, я поделился ими с некоторыми друзьями, чтобы попытаться выследить кибер-преступника, который, по их мнению, может быть угрозой для инсайдеров (это был не обычный хакер). Затем Белый дом начал течь, как старый шланг, поэтому я продолжал молчать. Причина, по которой я пишу об этом сейчас, заключается в том, что, как представляется, гомоглифы и нумерация отпечатков пальцев обнаружены другими, поэтому журналисты должны быть проинформированы о существовании этих методов.

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

    Обновление: последующая статья на основе отзывов читателей и других комментариев.
     
    Последнее редактирование: 7 апр 2018
    GiT нравится это.
  3. Mr.Varenik

    Mr.Varenik

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

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    929
    Симпатии:
    1.825
    Не подумайте ничего плохого! За авторство тут не гоняют!
    Безусловно, вопрос не в авторстве — всегда интересно почитать статью в полной мере, с примерами, пруфами и технологией. Понятное дело, что гугл не забанили. Но всё же
     
    Последнее редактирование: 8 апр 2018
  5. Mr.Varenik

    Mr.Varenik

    Регистр.:
    5 янв 2018
    Сообщения:
    288
    Симпатии:
    46
    Договорились, буду ссылки оставлять :)
     
  6. mrLom

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    929
    Симпатии:
    1.825
    Господа!
    Тема несколько меняет возможности доставки соли всяким барыгам.
     
  7. Anastasiya96

    Anastasiya96 Постоялец

    Регистр.:
    14 мар 2018
    Сообщения:
    70
    Симпатии:
    34
    а если я перед тем, как скопированный текст куда-то вставить, я его для начала помещаю в обычный блокнот. сразу пропадают ненужные символы, шрифты, форматы... это спасёт от символов нулевой ширины?)
     
  8. mrLom

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    929
    Симпатии:
    1.825
    Я проводил эксперемент.
    Пастил в блокнот, из блокнота в маковский TextEdit. Символы оставались, что заметно в терминальных текстовых редакторах.

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

    Anastasiya96 Постоялец

    Регистр.:
    14 мар 2018
    Сообщения:
    70
    Симпатии:
    34
    а есть такой текст, чтобы проверить? невидимый текст это же знаки в ascii от 0 до 31?
     
  10. mrLom

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    929
    Симпатии:
    1.825
    Тут в тексте по ссылке:
    https://www.zachaysan.com/writing/2017-12-30-zero-width-characters

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

    При помощи онлайн сервиса:
    https://www.diffchecker.com/

    При помощи терминальных текстовых радакторов:
    Снимок экрана 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

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