Capacidade

Transparente para o olho humano, um pesadelo para leitores de tela de IA

As letras na página renderizada são trocadas silenciosamente por irmãos visualmente semelhantes do mesmo alfabeto — a transformado em e, b transformado em p, m transformado em w. A área ao redor do cursor do usuário revela os originais, para que uma pessoa lendo a página não perceba nenhuma mudança. Um motor OCR ou modelo de visão de IA alimentado com uma captura de tela dessa mesma página lê palavras completamente diferentes.

A distorção em nível de pixel está sendo erodida como defesa: modelos modernos de visão de IA como GPT-4V, Claude Vision e Gemini estão ficando progressivamente melhores em ler texto através de ruído, desfoque e padrões adversariais. A superfície de ataque mais profunda é o próprio texto. O ZeroLeak substitui silenciosamente uma porção das letras na página renderizada por irmãos visualmente semelhantes, mas semanticamente diferentes, do mesmo alfabeto latino. Onde o cursor do usuário está, uma área de revelação inverte o texto substituído de volta ao original — para que o humano leia onde olha, e o reconhecimento de padrões natural do cérebro preencha o restante. Quando a mesma página é capturada em uma captura de tela e alimentada em um modelo de IA, o modelo não tem área de revelação; ele lê os caracteres substituídos como o conteúdo real, e o que retorna é um documento diferente.

Same-script
Letras latinas trocadas por vizinhos latinos — nada para os normalizadores OCR desfazerem
Cursor-driven
Uma área de revelação ao redor do cursor mostra os originais — o usuário lê onde olha
DOM-layer
Opera nos dados de caracteres, complementar à distorção em nível de pixel

As defesas em nível de pixel estão se erodindo; os modelos de visão de IA leem através delas

As defesas anteriores contra leitura de tela por IA operavam na camada de pixel — ruído aleatório, perturbação no domínio de frequência, jitter sub-pixel, micro desfoque, deslocamentos cromáticos. Elas ainda são eficazes contra motores OCR clássicos e permanecem parte da defesa em camadas. Mas os Modelos de Visão-Linguagem modernos — GPT-4V, Claude Vision, Gemini e seus sucessores — têm codificadores de patch cientes de tokenizador que reconstroem progressivamente palavras a partir de evidências visuais parciais. Os pixels podem ser ruidosos e o modelo ainda recupera o texto subjacente.

A próxima superfície de ataque fica uma camada acima: o DOM. Dentro do navegador headless que renderiza a página protegida, possuímos os dados reais de caracteres sendo pintados na tela. Podemos decidir que a letra na posição 47 do terceiro parágrafo não é mais a original; ela é um caractere visualmente semelhante, mas diferente, do mesmo alfabeto. O OCR ou VLM que olha para uma captura de tela dessa página vê o caractere substituído e o reporta como verdade. O modelo não sabe que foi substituído; ele não tem nada para comparar.

A parte difícil é fazer isso sem quebrar a leitura para o usuário humano. O mecanismo de revelação — uma pequena área ao redor do cursor que inverte o texto substituído de volta ao original — é a resposta. As pessoas leem olhando: o olho se fixa em uma frase, o reconhecimento de padrões do cérebro preenche o restante a partir da visão periférica mais o contexto. A revelação do cursor se alinha com onde o usuário está realmente olhando; o resto da página pode permanecer substituído porque o usuário não está lendo caractere por caractere de qualquer forma. Um modelo de IA olhando para a mesma captura de tela não tem esse cursor, não tem essa revelação — ele lê tudo como texto substituído.

Substitua as letras, revele onde o usuário está olhando

Um script é injetado em cada página protegida pelo navegador headless do ZeroLeak. Na inicialização, o script percorre o DOM, escolhe substitutos visualmente semelhantes para uma porção das letras do mesmo alfabeto latino e os escreve na página. A posição do cursor orienta uma zona de revelação — onde quer que o usuário esteja olhando, os originais aparecem. Tudo fora da revelação permanece substituído.

Letras trocadas silenciosamente por irmãos visualmente semelhantes do mesmo alfabeto

Um caractere em uma posição na página se torna outro caractere que parece visualmente semelhante, mas é uma letra diferente — a transformado em e, b transformado em p, m transformado em w, n transformado em u. A troca é entre letras que compartilham uma família visual no alfabeto latino, não entre caracteres Unicode de aparência semelhante. Por que essa distinção importa: os pipelines de OCR e visão de IA normalizam homóglifos Unicode (Cirílico а se torna Latino a) de volta ao latino canônico. As substituições do mesmo script não deixam nada para o normalizador desfazer — o modelo lê o caractere substituído como a letra real.

Uma área de revelação ao redor do cursor mostra os originais

Onde quer que o usuário mova o cursor, uma área ao redor dele (círculo por padrão, configurável como banda horizontal) inverte os caracteres substituídos de volta aos originais. O usuário lê onde olha; o reconhecimento de padrões natural do cérebro cuida do restante a partir da visão periférica. Fora da revelação, a página permanece substituída — que é o que um modelo de IA olhando para a captura de tela vê.

Cipher estático — cada caractere recebe uma substituição que não muda

Quando a página carrega, cada letra substituída recebe uma substituição específica que permanece estável durante a vida útil da página. Não há cintilação, não há rotação temporal, não há animação na visão do usuário — o cipher fica silenciosamente atrás da revelação do cursor. Um design anterior rotacionava o cipher a cada poucos frames; testes de fadiga do usuário mostraram que causava desconforto de leitura mensurável, então o design final permanece estático.

Opera na camada DOM, complementar às defesas em nível de pixel

O text cipher opera dentro do DOM do navegador headless — diretamente nos dados de caracteres, não nos pixels renderizados. As defesas da camada de pixel contra modelos de visão de IA continuam funcionando por baixo; o text cipher adiciona uma superfície de ataque ortogonal que as técnicas de recuperação de pixel não conseguem ajudar. Um atacante que quebra a camada de pixel ainda tem que ler o texto substituído corretamente. Um atacante que de alguma forma recuperou os caracteres originais ainda tem que vencer a camada de pixel.

O que o cipher realmente faz

Cada comportamento abaixo faz parte do design de produção após a revisão empírica de fadiga; a implementação ao vivo corresponde exatamente a isso. A configuração é por serviço protegido via console do operador.

Substituição latina do mesmo script, tabela curada manualmente

As substituições ficam dentro do alfabeto latino. A tabela de substituição é curada por família visual: tigelas redondas (a, e, o, c), tigelas espelhadas (b, p, d, q), verticais estreitas (i, l, j, 1), arcos (m, n, u, h, w), descendentes (g, y, j, q). Cada letra na tabela tem 2-4 vizinhos visuais; a substituição escolhe um deles. A correspondência de largura é favorecida para que o reflow de layout não ocorra.

Zona de revelação — círculo ao redor do cursor ou banda horizontal

A forma padrão é um círculo de raio configurável (200 px por padrão). Uma forma alternativa de banda cobre uma faixa horizontal na altura do cursor — útil para leitura de conteúdo com linhas longas onde o movimento do olho é principalmente horizontal. A forma é compartilhada com outros efeitos baseados em cursor do ZeroLeak para que os operadores configurem uma vez.

Cipher estático persistido em um mapa por nó

Quando o script vê pela primeira vez um nó de texto, ele armazena o valor original em um mapa por nó e escreve o valor substituído no DOM. Atualizações subsequentes usam a mesma substituição — não há rotação por frame. O usuário percebe uma página estática; o cipher é invisível atrás da revelação do cursor.

Injetado via hook de script do navegador headless

O script de substituição é injetado pelo motor ZeroLeak em cada documento navegado dentro do Chromium headless. A aplicação web protegida não é modificada; o cipher opera como um auxiliar do lado da página entre o documento renderizado e a camada de visualização do usuário. Nenhuma coordenação com o código da aplicação protegida é necessária.

A entrada de formulário digitada pelo usuário é excluída

O texto que o usuário digita em inputs, textareas ou regiões contentEditable é excluído da substituição. A aplicação protegida recebe entrada limpa conforme o usuário escreveu. Caixas de busca, composição de mensagens, envio de formulários — todos não são afetados.

Apenas o texto visível no viewport é tocado

Um IntersectionObserver rastreia quais nós de texto estão realmente visíveis. O texto fora da tela não é substituído (o usuário não consegue vê-lo de qualquer forma). Quando o usuário rola uma seção oculta para a visualização, a substituição é aplicada a tempo. Isso mantém o custo de execução proporcional ao que está na tela, não ao tamanho total da página.

A tabela de substituição e o que permanece intocado

A substituição visual do mesmo script é o coração da técnica. A tabela abaixo é uma amostra do mapeamento real de produção; a tabela completa cobre todas as minúsculas, maiúsculas e dígitos selecionados.

01

Tigelas redondas — a, e, o, c

Esses quatro caracteres compartilham a forma de tigela fechada; substituir um pelo outro preserva a silhueta na distância de leitura. Uma palavra como 'data' pode se tornar 'doto' na forma substituída — um humano olhando através da revelação do cursor lê 'data' instantaneamente, um OCR ou modelo de IA lendo a forma substituída retorna 'doto'.

02

Tigelas espelhadas — b, p, d, q

Esses quatro são espelhos visuais uns dos outros; substituir um pelo outro preserva o padrão de haste vertical + tigela. A palavra 'database' pode se tornar 'patabose' na forma cipher — visualmente próximo o suficiente para que o reconhecimento de padrões do cérebro recupere o original, semanticamente não relacionado o suficiente para que um modelo de IA lendo retorne a palavra errada.

03

Arcos — m, n, u, h, w

Esses cinco compartilham o padrão de arco / arco invertido / arco repetido; a substituição dentro dessa família preserva o ritmo geral do texto. 'human' pode se tornar 'wuwon' — legível de relance sob o cursor, irreconhecível para uma IA lendo o texto substituído.

04

Por que não homóglifos Unicode (Cirílico, Grego)

Propostas anteriores usavam confusables Unicode (Cirílico а para Latino a, Grego ο para Latino o). Estas foram rejeitadas porque os pipelines de OCR e modelos de visão de IA normalizam esses de volta ao latino canônico durante seus estágios de modelo de linguagem. Um 'а' Cirílico inserido em texto latino é dobrado de volta a um 'a' latino regular — a substituição não deixa rastro. A substituição latina do mesmo script (a transformado em e) não tem nada para normalizar; o caractere substituído é a letra canônica que o modelo lê.

05

O que permanece intocado — canvas, texto SVG, entrada de formulário

O texto renderizado dentro de HTML5 canvas ou SVG não faz parte do conjunto de nós de texto DOM; o cipher não o toca. Da mesma forma, o texto que o usuário digita em inputs e textareas permanece limpo. Essas lacunas de cobertura são deliberadas: o conteúdo de canvas e SVG é tratado pelas defesas da camada de pixel em paralelo, e a entrada de formulário deve permanecer limpa para que a aplicação protegida funcione.

Onde o text cipher fecha o caminho

Modelos de visão de IA capturando a tela

Usuários com assistentes de IA pessoais no telefone ou ao lado da estação de trabalho — qualquer um pode colar uma captura de tela no GPT-4V ou Claude Vision e pedir para resumir. Com o text cipher ativo, o resumo da IA é construído sobre o texto substituído — ele retorna saída de aparência plausível que é, na inspeção, diferente do que estava na tela original.

Demonstrações financeiras e documentos de sala de negociações

Documentos lidos na tela, mas não destinados a serem exfiltrados por meio de uma ferramenta de IA. Uma captura de tela tirada e alimentada em uma IA para análise retorna números distorcidos e nomes alterados — a IA relata com confiança conteúdo que não corresponde ao documento real.

Prontuários de pacientes analisados por assistentes de IA

Profissionais médicos com acesso somente de visualização a prontuários de pacientes não conseguem usar de forma significativa uma IA externa para resumir ou consultar os dados — a IA vê texto substituído. O insight clínico permanece dentro do ambiente protegido; o caminho de ingestão de IA retorna um documento diferente.

Consoles de governo e inteligência

Conteúdo classificado visualizado por analistas. Qualquer ferramenta de IA consultada de fora do ambiente protegido lê texto substituído, não o material classificado original. O limite de divulgação se mantém no caminho de ingestão de IA da mesma forma que se mantém no caminho de captura de tela.

Perguntas frequentes

A substituição afeta a facilidade com que um humano pode ler a página?
A leitura acontece no cursor. A área de revelação mostra os originais onde o usuário está olhando; o reconhecimento de padrões natural do cérebro cuida do restante a partir da visão periférica, onde a legibilidade já é menor. Os testes empíricos de fadiga de leitura levaram ao cipher estático atual (não rotativo); o design rotativo anterior causava desconforto mensurável, a versão estática não.
E quanto a dispositivos touchscreen que não têm cursor?
O acesso somente por toque é incomum na implantação típica do ZeroLeak (operadores corporativos, analistas, contratados em estações de trabalho desktop), mas para contextos de toque o mecanismo de revelação reverte para um modelo de toque-e-segurar onde a área tocada é a zona de revelação. Para fluxos de trabalho predominantemente por toque e de leitura intensiva, o text cipher pode ser desabilitado por serviço protegido em favor das defesas da camada de pixel.
Por que não usar caracteres similares Cirílicos ou Gregos?
Os motores OCR e modelos de visão de IA normalizam homóglifos Unicode de volta ao latino canônico durante seu estágio de modelo de linguagem. Um 'а' Cirílico inserido em texto latino é dobrado de volta a um 'a' latino regular — a substituição não deixa rastro. A substituição latina do mesmo script (a transformado em e) não tem nada para normalizar; o caractere substituído é a letra canônica que o modelo lê.
O que o cipher NÃO cobre?
O texto renderizado dentro de HTML5 canvas ou SVG não faz parte do conjunto de nós de texto DOM; o cipher não o toca. As defesas da camada de pixel cobrem essas superfícies. O texto dentro de inputs e textareas que o usuário digitou também é excluído para que a aplicação protegida receba entrada limpa. Imagens de texto (fotografias, capturas de tela incorporadas na página) também estão fora do escopo de texto DOM.
Como isso se combina com as defesas de pixel anti-OCR?
Os dois são complementares, não sobrepostos. As defesas da camada de pixel (proteção anti-OCR) perturbam como a imagem renderizada é lida pelo reconhecimento de caracteres. O text cipher funciona uma camada acima — mesmo se um modelo de visão de IA contornar todas as defesas de nível de pixel e ler a página claramente, ele lê o texto substituído. Para derrotar ambos, um atacante precisaria quebrar a camada de pixel para ver caracteres limpos E recuperar as letras originais subjacentes dos substituídos — dois problemas ortogonais.
Qual é o impacto no desempenho na sessão do usuário?
O script de substituição é executado dentro do renderer do navegador headless, apenas em nós de texto que estão realmente visíveis no viewport. As atualizações de revelação orientadas por cursor são limitadas ao frame de animação do navegador e usam um limite de movimento para que pequenos movimentos do mouse não acionem redesenhos. Em hardware comum, o cipher adiciona uma pequena fração de milissegundo por frame; a interação visível pelo usuário permanece suave.

Veja o cipher em uma demo ao vivo

Carregaremos uma página, moveremos o cursor sobre o texto para você ver a leitura normal, tiraremos uma captura de tela e alimentaremos a captura de tela no Tesseract, GPT-4V e Claude Vision — e mostraremos o texto muito diferente que cada um retorna.