Перейти к основному содержимому
Возможность

Прозрачен для человеческого глаза, кошмар для ИИ-считывателей экрана

Буквы на отображаемой странице незаметно заменяются визуально похожими «братьями» из того же алфавита — a превращается в e, b превращается в p, m превращается в w. Область вокруг курсора пользователя показывает оригиналы, поэтому человек, читающий страницу, не замечает разницы. Движок OCR или модель ИИ-зрения, получившая снимок экрана той же страницы, читает совершенно другие слова.

Пиксельные искажения как защита постепенно сходят на нет: современные модели ИИ-зрения, такие как GPT-4V, Claude Vision и Gemini, становятся всё лучше в чтении текста сквозь шум, размытость и состязательные паттерны. Более глубокая поверхность атаки — это сам текст. ZeroLeak незаметно заменяет часть букв на отображаемой странице визуально похожими, но семантически отличными «братьями» из того же латинского алфавита. Там, где находится курсор пользователя, зона раскрытия возвращает заменённый текст к оригиналу — поэтому человек читает то, на что смотрит, а естественное распознавание паттернов мозга заполняет остальное. Когда та же страница захватывается в снимок экрана и передаётся ИИ-модели, у модели нет зоны раскрытия; она читает заменённые символы как фактическое содержимое, и то, что она возвращает, — другой документ.

Same-script
Латинские буквы заменяются латинскими соседями — ничего для отмены нормализаторами OCR
Cursor-driven
Зона раскрытия вокруг курсора показывает оригиналы — пользователь читает там, где смотрит
DOM-layer
Работает на уровне символьных данных, дополняет пиксельные искажения

Пиксельные защиты деградируют; модели ИИ-зрения читают сквозь них

Более ранние защиты от ИИ-считывания экрана работали на пиксельном уровне — случайный шум, возмущение частотной области, субпиксельный джиттер, микроразмытость, хроматические сдвиги. Они по-прежнему эффективны против классических движков OCR и остаются частью многоуровневой защиты. Однако современные Vision-Language Models — GPT-4V, Claude Vision, Gemini и их преемники — имеют токенизатор-осведомлённые patch encoder'ы, которые всё лучше восстанавливают слова из частичных визуальных свидетельств. Пиксели могут быть зашумлённым, а модель всё равно восстанавливает исходный текст.

Следующая поверхность атаки находится уровнем выше: DOM. Внутри безголового браузера, отображающего защищённую страницу, у нас есть контроль над фактическими символьными данными, рисуемыми на экране. Мы можем решить, что буква в позиции 47 третьего абзаца больше не является оригинальной; это визуально похожий, но другой символ из того же алфавита. OCR или VLM, глядящий на снимок экрана этой страницы, видит заменённый символ и сообщает его как истину. Модель не знает, что он был заменён; ей не с чем сравнивать.

Сложная часть — сделать это, не нарушая чтение для пользователя-человека. Механизм раскрытия — небольшая область вокруг курсора, которая возвращает заменённый текст к оригиналу, — является ответом. Люди читают взглядом: глаз фиксируется на одной фразе, распознавание паттернов мозга заполняет остальное из периферийного зрения и контекста. Раскрытие по курсору совпадает с тем, где пользователь действительно смотрит; остальная часть страницы может оставаться заменённой, потому что пользователь всё равно не читает её посимвольно. ИИ-модель, глядящая на тот же снимок экрана, не имеет ни курсора, ни раскрытия — она читает всё как заменённый текст.

Замените буквы, раскрывайте там, где смотрит пользователь

Скрипт внедряется в каждую защищённую страницу безголовым браузером ZeroLeak. При загрузке скрипт обходит DOM, выбирает визуально похожие заменители для части букв из того же латинского алфавита и записывает их на страницу. Позиция курсора управляет зоной раскрытия — там, где смотрит пользователь, просвечивают оригиналы. Всё за пределами раскрытия остаётся заменённым.

Буквы незаметно заменяются визуально похожими «братьями» из того же алфавита

Символ в одной позиции на странице становится другим символом, который выглядит визуально похоже, но является другой буквой — a превращается в e, b превращается в p, m превращается в w, n превращается в u. Замена происходит между буквами, разделяющими визуальное семейство в латинском алфавите, а не между Unicode lookalike'ами. Почему это различие важно: конвейеры OCR и ИИ-зрения нормализуют Unicode homoglyph'ы (кириллическое a становится латинским a) обратно к каноническому Latin. Замены внутри того же скрипта не оставляют ничего для отмены нормализатором — модель читает заменённый символ как фактическую букву.

Зона раскрытия вокруг курсора показывает оригиналы

Куда бы ни переместил курсор пользователь, область вокруг него (по умолчанию круг, настраивается как горизонтальная полоса) возвращает заменённые символы к оригиналам. Пользователь читает то, на что смотрит; естественное распознавание паттернов мозга справляется с остальным из периферийного зрения. За пределами раскрытия страница остаётся заменённой — что и видит ИИ-модель, глядящая на снимок экрана.

Статичный шифр — каждый символ получает одну замену, которая не изменяется

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

Работает на уровне DOM, дополняет пиксельные защиты

Text cipher работает внутри DOM безголового браузера — непосредственно с символьными данными, а не с отображаемыми пикселями. Пиксельные защиты от ИИ-моделей зрения продолжают работать под ним; text cipher добавляет ортогональную поверхность атаки, с которой методы восстановления пикселей ничего не могут поделать. Злоумышленник, взломавший пиксельный уровень, всё равно должен правильно прочитать заменённый текст. Злоумышленник, каким-то образом восстановивший оригинальные символы, всё равно должен победить пиксельный уровень.

Что шифр на самом деле делает

Каждое поведение ниже является частью production-дизайна после пересмотра на основе эмпирической усталости; живая реализация точно соответствует этому. Конфигурация осуществляется для каждого защищённого сервиса через консоль оператора.

Замена латинских символов тем же скриптом, подобранная вручную таблица

Замены остаются внутри латинского алфавита. Таблица замен подобрана по визуальному семейству: круглые чаши (a, e, o, c), зеркальные чаши (b, p, d, q), узкие вертикали (i, l, j, 1), дуги (m, n, u, h, w), нисходящие элементы (g, y, j, q). У каждой буквы в таблице есть 2-4 визуальных соседа; замена выбирает одного из них. Предпочитается совпадение по ширине, чтобы не происходило перетекания макета.

Зона раскрытия — круг вокруг курсора или горизонтальная полоса

Форма по умолчанию — круг настраиваемого радиуса (200 пикселей по умолчанию). Альтернативная форма полосы охватывает горизонтальную полосу на высоте курсора — полезно для чтения контента с длинными строками, где движение глаз в основном горизонтальное. Форма используется совместно с другими эффектами ZeroLeak на основе курсора, чтобы операторы настраивали один раз.

Статичный шифр, сохранённый в карте на узел

Когда скрипт впервые видит текстовый узел, он сохраняет оригинальное значение в карте на узел и записывает заменённое значение в DOM. Последующие обновления используют ту же замену — нет ротации по кадрам. Пользователь воспринимает неподвижную страницу; шифр невидим за раскрытием по курсору.

Внедряется через хук скрипта безголового браузера

Скрипт замены внедряется движком ZeroLeak в каждый навигируемый документ внутри безголового Chromium. Защищённое веб-приложение не модифицируется; шифр работает как вспомогательный инструмент на стороне страницы между отображаемым документом и уровнем просмотра пользователя. Никакой координации с кодом защищённого приложения не требуется.

Ввод пользователем в формы исключён

Текст, который пользователь вводит в поля ввода, textarea или contentEditable-регионы, исключён из замены. Защищённое приложение получает чистый ввод, как написал пользователь. Поля поиска, набор сообщений, отправка форм — всё без изменений.

Затрагивается только видимый текст в области просмотра

IntersectionObserver отслеживает, какие текстовые узлы действительно видны. Внеэкранный текст не заменяется (пользователь всё равно не может его видеть). Когда пользователь прокручивает скрытый раздел в поле зрения, замена применяется своевременно. Это сохраняет текущую стоимость пропорциональной тому, что находится на экране, а не общему размеру страницы.

Таблица замен и то, что остаётся нетронутым

Визуальная замена тем же скриптом — это суть техники. Таблица ниже является образцом фактического production-маппинга; полная таблица охватывает все строчные, прописные буквы и отдельные цифры.

01

Круглые чаши — a, e, o, c

Эти четыре символа разделяют форму закрытой чаши; замена одного на другой сохраняет силуэт на расстоянии чтения. Слово 'data' может стать 'doto' в заменённой форме — человек, бросающий взгляд через раскрытие курсора, мгновенно читает 'data', тогда как OCR или ИИ-модель, читающая заменённую форму, возвращает 'doto'.

02

Зеркальные чаши — b, p, d, q

Эти четыре являются визуальными зеркалами друг друга; замена одного на другой сохраняет паттерн «вертикальный стержень + чаша». Слово 'database' может стать 'patabose' в шифре — визуально достаточно близко, чтобы распознавание паттернов мозга восстановило оригинал, но семантически достаточно несвязанно, чтобы ИИ-модель, читающая его, вернула неправильное слово.

03

Дуги — m, n, u, h, w

Эти пять разделяют паттерн дуги / перевёрнутой дуги / повторяющейся дуги; замена внутри этого семейства сохраняет общий ритм текста. 'human' может стать 'wuwon' — читаемым с первого взгляда под курсором, неузнаваемым для ИИ, читающего заменённый текст.

04

Почему не Unicode homoglyph'ы (кириллические, греческие)

Более ранние предложения использовали Unicode confusable'ы (кириллическое а для латинского a, греческое ο для латинского o). Они были отклонены, потому что конвейеры OCR и модели ИИ-зрения нормализуют их обратно к каноническому Latin — Tesseract с пакетом русского языка на смешанном латинско-кириллическом тексте возвращает чистый Latin-вывод, потому что второй проход языковой модели проецирует кириллические homoglyph'ы на их латинские эквиваленты. Замена тем же скриптом не оставляет ничего для нормализации.

05

Что остаётся нетронутым — canvas, SVG-текст, ввод в форму

Текст, отображаемый внутри HTML5 canvas или SVG, не является частью набора текстовых узлов DOM; шифр его не затрагивает. Аналогично, текст, который пользователь вводит в поля ввода и textarea, остаётся чистым. Эти пробелы в охвате намеренны: контент canvas и SVG обрабатывается пиксельными защитами параллельно, а ввод в форму должен оставаться чистым для корректной работы защищённого приложения.

Где text cipher закрывает путь

Модели ИИ-зрения, захватывающие экран

Пользователи с персональными ИИ-ассистентами на телефоне или рядом с рабочей станцией — любой может вставить снимок экрана в GPT-4V или Claude Vision и попросить его обобщить. При использовании text cipher резюме ИИ строится на заменённом тексте — оно возвращает правдоподобно выглядящий вывод, который при проверке отличается от того, что было на оригинальном экране.

Финансовые отчёты и документы комнаты переговоров

Документы, читаемые на экране, но не предназначенные для утечки через ИИ-инструмент. Снимок экрана, переданный в ИИ для анализа, возвращает искажённые цифры и изменённые имена — ИИ уверенно сообщает содержимое, не соответствующее фактическому документу.

Медицинские записи, анализируемые ИИ-ассистентами

Медицинский персонал с доступом только для просмотра к записям пациентов не может содержательно использовать внешний ИИ для обобщения или запроса данных — ИИ видит заменённый текст. Клинические сведения остаются внутри защищённой среды; путь загрузки в ИИ возвращает другой документ.

Государственные и разведывательные консоли

Засекреченный контент, просматриваемый аналитиками. Любой ИИ-инструмент, использованный вне защищённой среды, читает заменённый текст, а не оригинальные секретные материалы. Граница раскрытия сохраняется на пути загрузки в ИИ так же, как она сохраняется на пути снимков экрана.

Часто задаваемые вопросы

Влияет ли замена на лёгкость чтения страницы человеком?
Чтение происходит там, где находится курсор. Зона раскрытия показывает оригиналы там, где смотрит пользователь; естественное распознавание паттернов мозга справляется с остальным из периферийного зрения, где читаемость и так ниже. Эмпирическое тестирование на усталость при чтении привело к текущему статичному (не ротирующемуся) шифру; более ранний ротирующийся дизайн вызывал измеримый дискомфорт, статичная версия — нет.
Что насчёт сенсорных устройств без курсора?
Доступ только с сенсорного экрана нетипичен для стандартного развёртывания ZeroLeak (корпоративные операторы, аналитики, подрядчики на настольных рабочих станциях), но для сенсорного контекста механизм раскрытия переключается на модель нажатия и удержания, где затронутая область является зоной раскрытия. Для рабочих процессов, преимущественно сенсорных и интенсивных для чтения, text cipher может быть отключён для каждого защищённого сервиса в пользу только пиксельных защит.
Почему не использовать кириллические или греческие lookalike'ы?
Движки OCR и модели ИИ-зрения нормализуют Unicode homoglyph'ы обратно к каноническому Latin на этапе своей языковой модели. Кириллическое «а», вставленное в Latin-текст, сворачивается обратно к обычному Latin «a» к моменту получения вывода — замена не оставляет следа. Замена Latin тем же скриптом (a превратилось в e) не оставляет ничего для нормализации; заменённый символ является каноническим, который читает модель.
Что шифр НЕ охватывает?
Текст, отображаемый внутри HTML5 canvas или SVG, не является частью набора текстовых узлов DOM; шифр его не затрагивает. Пиксельные защиты охватывают эти поверхности. Текст внутри полей ввода и textarea, напечатанный пользователем, также исключён, чтобы защищённое приложение получало чистый ввод. Изображения текста (фотографии, снимки экрана, встроенные в страницу) также находятся вне области DOM-текста.
Как это сочетается с пиксельными защитами anti-OCR?
Они дополняют друг друга, а не перекрываются. Пиксельные защиты (anti-OCR protection) нарушают то, как отображаемое изображение читается системами распознавания символов. Text cipher работает уровнем выше — даже если модель ИИ-зрения обходит каждую пиксельную защиту и читает страницу чисто, она читает заменённый текст. Чтобы победить обе, злоумышленнику нужно было бы взломать пиксельный уровень для чистого чтения символов И восстановить оригинальные буквы из заменённых — две ортогональные задачи.
Каково влияние на производительность пользовательской сессии?
Скрипт замены работает внутри рендерера безголового браузера только на текстовых узлах, действительно видимых в области просмотра. Обновления раскрытия, управляемые курсором, регулируются в соответствии с кадром анимации браузера и используют порог движения, поэтому небольшие движения мыши не вызывают перерисовки. На стандартном оборудовании шифр добавляет небольшую долю миллисекунды на кадр; видимые пользователем взаимодействия остаются плавными.

Увидьте шифр в живом демо

Мы загрузим страницу, перемещём курсор по тексту, чтобы вы увидели нормальное чтение, сделаем снимок экрана и передадим его в Tesseract, GPT-4V и Claude Vision — и покажем вам совершенно разный текст, который каждый из них возвращает.