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.
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.
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.
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.
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.
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.
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.
İ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.
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.
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.
İ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 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.
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.
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.
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.
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.
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.
Ö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.
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.
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.
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.
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.
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.
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.