Yetenek

İnsan gözüne fark edilmez, AI ekran okuyucular için bir kabus

Render edilen sayfadaki harfler aynı alfabeden görsel olarak yakın kardeşleriyle sessizce değiştirilir — a, e'ye dönüşür; b, p'ye dönüşür; m, w'ye dönüşür. Kullanıcının imlecinin etrafındaki bölge orijinalleri gösterir, böylece sayfayı okuyan kişi hiçbir değişiklik hissetmez. Aynı sayfanın bir ekran görüntüsü OCR motoruna veya AI görme modeline verildiğinde model tamamen farklı kelimeler okur.

Piksel düzeyi bozulma bir savunma olarak aşınıyor: GPT-4V, Claude Vision ve Gemini gibi modern AI görme modelleri gürültü, blur ve adversarial desenler arasından metni giderek daha iyi okuyabiliyor. Daha derin saldırı yüzeyi metnin kendisi. ZeroLeak, render edilen sayfadaki harflerin bir kısmını aynı Latin alfabesinden görsel olarak yakın ama anlamsal olarak farklı kardeşleriyle sessizce değiştirir. Kullanıcının imlecinin olduğu yerde, bir reveal bölgesi ikame edilmiş metni orijinaline döndürür — böylece insan baktığı yere bakar ve beynin doğal pattern recognition'ı geri kalanını otomatik tamamlar. Aynı sayfa ekran görüntüsüne alınıp bir AI modeline verildiğinde, modelin reveal bölgesi yoktur; ikame edilmiş karakterleri gerçek içerik olarak okur ve döndürdüğü şey farklı bir belgedir.

Aynı alfabe
Latin harfler Latin komşularıyla değiştirilir — OCR normalizerlarının geri çevireceği bir şey yok
İmleç tabanlı
İmlecin etrafındaki bir reveal bölgesi orijinalleri gösterir — kullanıcı baktığı yere bakar
DOM katmanı
Karakter verisinde çalışır, piksel düzeyi bozulmaya tamamlayıcıdır

Piksel düzeyi savunmalar aşınıyor; AI görme modelleri onların arasından okuyor

AI ekran okumaya karşı önceki savunmalar piksel katmanında çalışıyordu — rastgele gürültü, frekans alanı bozması, piksel-altı titreşim, mikro blur, kromatik kaymalar. Bunlar klasik OCR motorlarına karşı hala etkili ve katmanlı savunmanın bir parçası olarak duruyorlar. Ama modern Görme-Dil Modelleri — GPT-4V, Claude Vision, Gemini ve halefleri — kısmi görsel kanıttan kelimeleri giderek daha iyi yeniden kuran token bilinçli yama kodlayıcılara sahip. Pikseller gürültülü olabilir, model yine de altta yatan metni geri kazanır.

Bir sonraki saldırı yüzeyi bir katman yukarıda: DOM. Korunan sayfayı render eden headless tarayıcının içinde, ekrana boyanan asıl karakter verisinin sahibi biziz. Üçüncü paragrafın 47. konumundaki harfin artık orijinal olmadığına karar verebiliriz; aynı alfabeden görsel olarak yakın ama farklı bir karakterdir. O sayfanın ekran görüntüsüne bakan OCR veya VLM ikame edilmiş karakteri görür ve bunu gerçek olarak raporlar. Model bunun ikame edildiğini bilmez; karşılaştıracağı bir şey yoktur.

Zor olan kısım, bunu insan kullanıcının okumasını bozmadan yapmak. Reveal mekanizması — imlecin etrafındaki, ikame edilmiş metni orijinaline döndüren küçük bir bölge — bunun yanıtı. İnsanlar bakarak okur: göz bir cümleciğe odaklanır, beynin pattern recognition'ı geri kalanını çevresel görüşten ve bağlamdan tamamlar. İmleç reveal'i kullanıcının gerçekten baktığı yerle hizalanır; sayfanın geri kalanı ikame edilmiş kalabilir, çünkü kullanıcı zaten onu karakter karakter okumuyor. Aynı ekran görüntüsüne bakan bir AI modeli ise böyle bir imlece, böyle bir reveal'a sahip değildir — her şeyi ikame edilmiş metin olarak okur.

Harfleri ikame et, kullanıcının baktığı yeri ortaya çıkar

ZeroLeak'in headless tarayıcısı korunan her sayfaya bir script enjekte eder. Boot anında script DOM'da gezer, harflerin bir kısmını aynı Latin alfabesinden görsel olarak yakın ikamelerle seçer ve sayfaya yazar. İmlecin konumu bir reveal bölgesini yönlendirir — kullanıcı nereye bakıyorsa orada orijinaller görünür. Reveal dışındaki her şey ikame edilmiş kalır.

Harfler aynı alfabeden görsel olarak yakın kardeşleriyle sessizce değiştirilir

Sayfadaki bir konumdaki karakter, görsel olarak yakın ama farklı bir harfe dönüşür — a, e'ye; b, p'ye; m, w'ye; n, u'ya. Bu değişim Latin alfabesinde görsel bir aile paylaşan harfler arasındadır, Unicode'un benzer görünen karakterleri arasında değil. Bu ayrımın neden önemli olduğu: OCR ve AI görme pipeline'ları Unicode homoglyphlerini (Kiril 'а' Latin 'a'ya) standart Latin'e geri normalize eder. Aynı alfabe ikameleri normalize edilecek hiçbir şey bırakmaz — model ikame edilmiş karakteri gerçek harf olarak okur.

İmlecin etrafındaki bir reveal bölgesi orijinalleri gösterir

Kullanıcı imleci nereye götürürse, etrafındaki bir bölge (varsayılan olarak daire, yatay bir bant olarak yapılandırılabilir) ikame edilmiş karakterleri orijinallerine geri döndürür. Kullanıcı baktığı yere bakar; beynin doğal pattern recognition'ı geri kalanını çevresel görüşten tamamlar. Reveal dışında sayfa ikame edilmiş kalır — ve bu, ekran görüntüsüne bakan bir AI modelinin gördüğü şeydir.

Statik cipher — her karakter değişmeyen tek bir ikame alır

Sayfa yüklendiğinde, ikame edilen her harf sayfa ömrü boyunca sabit kalan tek bir karşılık alır. Kullanıcının görüş alanında titreşim yok, zamansal dönüş yok, animasyon yok — cipher sessizce imleç reveal'ının arkasında durur. Daha önceki bir tasarım cipher'ı her birkaç karede bir döndürüyordu; kullanıcı yorgunluk testi ölçülebilir okuma rahatsızlığına yol açtığını gösterdi, bu yüzden son tasarım statik kalır.

DOM katmanında çalışır, piksel düzeyi savunmalarla tamamlayıcıdır

Text cipher headless tarayıcının DOM'unun içinde çalışır — render edilmiş piksellerde değil, doğrudan karakter verisinde. AI görme modellerine karşı piksel katmanı savunmaları altta çalışmaya devam eder; text cipher piksel kurtarma tekniklerinin yardımcı olamayacağı ortogonal bir saldırı yüzeyi ekler. Piksel katmanını aşan bir saldırgan yine ikame edilmiş metni doğru okumak zorundadır. Orijinal karakterleri bir şekilde geri kazanan bir saldırgan yine piksel katmanını aşmak zorundadır.

Cipher gerçekten ne yapıyor

Aşağıdaki her davranış, ampirik yorgunluk revizyonundan sonraki üretim tasarımının parçasıdır; canlı uygulama bunlarla tam olarak eşleşir. Yapılandırma korunan servis bazında operatör konsolu üzerinden yapılır.

Aynı alfabede Latin ikamesi, elle hazırlanmış tablo

İkameler Latin alfabesinin içinde kalır. İkame tablosu görsel aileye göre hazırlanmıştır: yuvarlak kaseler (a, e, o, c), aynalı kaseler (b, p, d, q), dar dikeyler (i, l, j, 1), kemerler (m, n, u, h, w), inişler (g, y, j, q). Tablodaki her harfin 2-4 görsel komşusu vardır; ikame bunlardan birini seçer. Düzen kayması olmaması için genişlik eşleşmesi tercih edilir.

Reveal bölgesi — imleç etrafında daire veya yatay bant

Varsayılan şekil yapılandırılabilir yarıçaplı bir dairedir (varsayılan 200 px). Alternatif bant şekli, imlecin yüksekliğinde yatay bir şerit kapsar — göz hareketinin çoğunlukla yatay olduğu uzun satırlı içerik okumak için yararlıdır. Bu şekil ZeroLeak'in diğer imleç tabanlı efektleriyle paylaşılır, böylece operatörler bir kez yapılandırır.

Node başına haritada saklanan statik cipher

Script bir text node'u ilk gördüğünde orijinal değeri node başına bir haritada saklar ve ikame edilmiş değeri DOM'a yazar. Sonraki güncellemeler aynı ikameyi kullanır — kare başına dönüş yoktur. Kullanıcı sabit bir sayfa algılar; cipher imleç reveal'ının arkasında görünmezdir.

Headless tarayıcı script hook'u üzerinden enjekte edilir

İkame script'i ZeroLeak motoru tarafından headless Chromium içindeki gezinilen her belgeye enjekte edilir. Korunan web uygulaması değiştirilmez; cipher, render edilen belgeyle kullanıcının görüntüleme katmanı arasında sayfa-tarafı bir yardımcı olarak çalışır. Korunan uygulamanın koduyla koordinasyon gerekmez.

Kullanıcının form alanlarına yazdığı metin hariç tutulur

Kullanıcının input'lara, textarea'lara veya contentEditable bölgelerine yazdığı metin ikameden hariç tutulur. Korunan uygulama, kullanıcının yazdığı gibi temiz girdi alır. Arama kutuları, mesaj kompozisyonu, form gönderimi — hepsi etkilenmez.

Yalnızca viewport'taki görünür metin dokunulur

Bir IntersectionObserver hangi text node'ların gerçekten görünür olduğunu izler. Ekran dışı metin ikame edilmez (kullanıcı zaten göremez). Kullanıcı gizli bir bölümü görünür hale kaydırdığında, ikame tam zamanında uygulanır. Bu, çalışan maliyeti toplam sayfa boyutuna değil, ekranda olana orantılı tutar.

İkame tablosu ve neyin dokunulmadan kaldığı

Aynı alfabe görsel ikame tekniğin kalbidir. Aşağıdaki tablo gerçek üretim eşlemesinden örneklerdir; tam tablo tüm küçük harfleri, büyük harfleri ve seçilmiş rakamları kapsar.

01

Yuvarlak kaseler — a, e, o, c

Bu dört karakter kapalı kase şeklini paylaşır; birini diğeriyle ikame etmek okuma mesafesinde silüeti korur. 'data' gibi bir kelime ikame edilmiş halinde 'doto' olabilir — imleç reveal'ı içinden bakan insan 'data' okur anında, ikame edilmiş hali okuyan bir OCR veya AI modeli 'doto' döndürür.

02

Aynalı kaseler — b, p, d, q

Bu dördü birbirinin görsel aynasıdır; birini diğeriyle ikame etmek dikey-gövde + kase desenini korur. 'database' kelimesi cipher halinde 'patabose' olabilir — beynin pattern recognition'ı orijinali geri kazanacak kadar görsel olarak yakın, ama bir AI model bunu okuduğunda yanlış kelimeyi döndürecek kadar anlamsal olarak ilgisiz.

03

Kemerler — m, n, u, h, w

Bu beşi kemer / ters kemer / tekrarlayan kemer desenini paylaşır; bu aile içinde ikame metnin genel ritmini korur. 'human' 'wuwon' olabilir — imleç altında bir bakışta okunabilir, ikame edilmiş metni okuyan bir AI için tanınmaz.

04

Neden Unicode homoglyph (Kiril, Yunan) değil

Önceki öneriler Unicode confusables kullanıyordu (Latin a için Kiril а, Latin o için Yunan ο). Bunlar reddedildi çünkü OCR pipeline'ları ve AI görme modelleri bunları kanonik Latin'e geri normalize eder — Latin-Kiril karışık metin üzerinde Rusça dil paketiyle Tesseract temiz Latin çıktısı verir, çünkü dil modelinin ikinci geçişi Kiril homoglyphlerini Latin karşılıklarına yansıtır. Aynı alfabe ikamesi normalize edilecek hiçbir şey bırakmaz.

05

Dokunulmayanlar — canvas, SVG metni, form girdisi

HTML5 canvas veya SVG içinde render edilen metin DOM text-node kümesinin parçası değildir; cipher ona dokunmaz. Bunun gibi, kullanıcının input'lara ve textarea'lara yazdığı metin de temiz kalır. Bu kapsam boşlukları kasıtlıdır: canvas ve SVG içeriği paralelde piksel katmanı savunmaları tarafından ele alınır ve korunan uygulamanın çalışması için form girdisinin temiz kalması gerekir.

Text cipher'ın yolu kapattığı yerler

Ekranı yakalayan AI görme modelleri

Telefonunda veya iş istasyonunun yanında kişisel AI asistanları olan kullanıcılar — herkes bir ekran görüntüsünü GPT-4V'ye veya Claude Vision'a yapıştırıp özetlemesini isteyebilir. Text cipher devrede olduğunda AI özeti ikame edilmiş metin üzerine kuruludur — incelendiğinde orijinal ekrandakinden farklı, makul görünen bir çıktı döndürür.

Finansal raporlar ve veri odası belgeleri

Ekranda okunan ama bir AI aracı üzerinden dışa aktarılması istenmeyen belgeler. Alınan ve analiz için AI'ya verilen bir ekran görüntüsü bozuk rakamlar ve değiştirilmiş isimler döndürür — AI gerçek belgeyle örtüşmeyen içeriği kendinden emin şekilde raporlar.

AI asistanlarınca analiz edilen hasta kayıtları

Hasta kayıtlarına sadece görüntüleme yetkisi olan tıbbi personel, veriyi özetlemek veya sorgulamak için anlamlı şekilde dış bir AI kullanamaz — AI ikame edilmiş metin görür. Klinik içgörü korunan ortam içinde kalır; AI girdi yolu farklı bir belge döndürür.

Kamu ve istihbarat konsolları

Analistlerin gördüğü sınıflandırılmış içerik. Korunan ortamın dışından danışılan herhangi bir AI aracı orijinal sınıflandırılmış materyali değil, ikame edilmiş metni okur. Açıklama sınırı AI girdi yolunda da ekran görüntüsü yolunda tuttuğu gibi tutar.

Sık sorulan sorular

İkame insanın sayfayı okuma kolaylığını etkiler mi?
Okuma imlecin olduğu yerde gerçekleşir. Reveal bölgesi kullanıcının baktığı yerdeki orijinalleri gösterir; beynin doğal pattern recognition'ı geri kalanını okunabilirliğin zaten daha düşük olduğu çevresel görüşten tamamlar. Ampirik okuma yorgunluğu testi şu anki statik (dönmeyen) cipher'a yol açtı; daha önceki dönen tasarım ölçülebilir rahatsızlığa neden oluyordu, statik versiyon yapmıyor.
İmleci olmayan dokunmatik cihazlar ne olacak?
Tipik ZeroLeak dağıtımında (masaüstü iş istasyonlarındaki kurumsal operatörler, analistler, yükleniciler) yalnızca dokunmatik erişim nadirdir. Ancak dokunmatik bağlamlar için reveal mekanizması, dokunulan alanın reveal bölgesi olduğu bir dokun-ve-tut modeline geri döner. Ağırlıklı olarak dokunmatik ve okuma yoğun iş akışları için text cipher korunan servis bazında devre dışı bırakılıp yalnızca piksel katmanı savunmaları tercih edilebilir.
Neden Kiril veya Yunan benzerleri kullanmıyoruz?
OCR motorları ve AI görme modelleri dil modeli aşamalarında Unicode homoglyphlerini kanonik Latin'e geri normalize eder. Latin metnin içine eklenen bir Kiril 'а', çıktı üretilene kadar normal Latin 'a'ya katlanır — ikame iz bırakmaz. Aynı alfabe Latin ikamesinin (a, e'ye) normalize edecek hiçbir şeyi yoktur; ikame edilmiş karakter modelin okuduğu kanonik harftir.
Cipher neyi kapsamıyor?
HTML5 canvas veya SVG içinde render edilen metin DOM text-node kümesinin parçası değildir; cipher ona dokunmaz. Piksel katmanı savunmaları o yüzeyleri kapsar. Kullanıcının form alanlarına ve textarea'lara yazdığı metin de hariç tutulur, böylece korunan uygulama temiz girdi alır. Sayfaya gömülü metin görüntüleri (fotoğraflar, ekran görüntüleri) de DOM metin kapsamı dışındadır.
Bu anti-OCR piksel savunmasıyla nasıl bir araya gelir?
İkisi tamamlayıcıdır, üst üste binmez. Piksel katmanı savunmaları (anti-OCR koruması) render edilen görüntünün karakter tanıma tarafından nasıl okunduğunu bozar. Text cipher bir katman yukarıda çalışır — bir AI görme modeli her piksel düzeyi savunmayı atlasa ve sayfayı temiz okusa bile, ikame edilmiş metni okur. İkisini de yenmek için bir saldırganın temiz karakterleri görmek için piksel katmanını kırması VE ikame edilmiş olanlardan orijinal alttaki harfleri geri kazanması gerekir — iki ortogonal problem.
Kullanıcı oturumunda performans etkisi nedir?
İkame script'i headless tarayıcının renderer'ı içinde, yalnızca viewport'ta gerçekten görünür olan text node'larda çalışır. İmleç tabanlı reveal güncellemeleri tarayıcının animation frame'ine throttle edilir ve küçük fare hareketlerinin redraw tetiklememesi için bir hareket eşiği kullanır. Sıradan donanımda cipher kare başına milisaniyenin küçük bir kısmını ekler; kullanıcının gördüğü etkileşim sorunsuz kalır.

Cipher'ı canlı demoda görün

Bir sayfa yükleyeceğiz, normal okuma görmeniz için imleci metnin üzerinde hareket ettireceğiz, bir ekran görüntüsü alacağız ve görüntüyü Tesseract, GPT-4V ve Claude Vision'a vereceğiz — ve her birinin döndürdüğü çok farklı metni göstereceğiz.