2 puan yazan GN⁺ 2025-02-13 | 1 yorum | WhatsApp'ta paylaş
  • Keyfi verileri tek bir emoji içine kodlamak mümkün
    • Unicode, metni kod noktaları dizisi olarak ifade eder ve her kod noktası, Unicode Konsorsiyumu'nun anlam atadığı bir sayıdır.
    • Basit Latin alfabesi metinlerinde, Unicode kod noktaları ile ekranda görünen karakterler arasında bire bir eşleme vardır.
    • Diğer yazı sistemlerinde ekranda görünen bir karakter, birden fazla kod noktasıyla temsil edilebilir.
  • Varyasyon seçicileri
    • Unicode, "varyasyon seçicileri" olarak adlandırılan 256 kod noktası tanımlar; bunlar tek başlarına ekranda görünmez, ancak önceki karakterin gösterimini değiştirmek için kullanılır.
    • Unicode karakterlerinin çoğunun varyasyonu yoktur ve varyasyon seçicileri dönüşüm sırasında korunmalıdır.
    • 256 varyasyon seçicisi, tek bir baytı gizlemenin bir yolunu sunar.
  • Veri kodlama
    • Varyasyon seçici dizileri birleştirilerek keyfi bayt dizileri ifade edilebilir.
    • Örneğin, "hello" metnini temsil eden [0x68, 0x65, 0x6c, 0x6c, 0x6f] verisi kodlanabilir.
    • Baytlar varyasyon seçicilerine dönüştürülür ve ardından temel karakterin arkasına eklenerek kodlama yapılır.
  • Veri çözme
    • Çözme işlemi de kodlamaya benzer şekilde basittir.
    • Varyasyon seçicileri tekrar baytlara dönüştürülerek özgün veri geri elde edilebilir.
  • Kötüye kullanım potansiyeli
    • Bu, Unicode'un kötüye kullanılması anlamına geldiğinden önerilmez.
    • İnsan denetimli içerik filtrelerini aşmak veya metne filigran eklemek gibi kötü niyetli amaçlarla kullanılabilir.
  • Sonuç
    • Emoji kullanarak keyfi verilerin nasıl gizlenebileceğini açıklar; bu yöntem Unicode'un varyasyon seçicilerinden yararlanır.
    • Bu yöntem eğlencelidir, ancak pratikte kullanıma uygun olmayabilir.

1 yorum

 
GN⁺ 2025-02-13
Hacker News yorumu
  • Unicode'un PUA'sı (Private Use Area), dahili ve özel amaçlı kullanımlar için ayrılmıştır ve harici sistemlere aktarılmaz

    • Çoğu sistem ve kütüphane bunu olduğu gibi geçirecek şekilde tasarlanmıştır
    • Bu, potansiyel bir veri sızıntısı yolu olabilir
    • Çoğu geliştirici, "uluslararasılaştırma sorunlarından kaçınmak için her zaman Unicode kullan" tavsiyesinin ötesini pek bilmez
  • Unicode'u kötüye kullanmak buzdağının sadece görünen kısmı

    • Unicode dizelerini kabul eden sistemlerde buffer overflow'a yol açabilir
    • Genelde hata veya çökme yaratır, ama bazen beklenmedik derecede ilginç sonuçlara da neden olabilir
  • Geçmişteki bir sızma testi deneyimimde, basit bir aksan işaretiyle arka uç web sunucusunun buffer'ını overflow ettiğimi hatırlıyorum

    • Genellikle sunucu çöküyor ve otomatik yeniden başlatılıyordu, ancak yeterince iyi yönlendirilirse belirli sistemler veya yazılımlar istismar edilebilirdi
  • Sanity, bu tekniği Content Source Maps'i web sayfasındaki gerçek metnin içine kodlamak için kullanıyor

    • Bu sayede editörler metne tıklayarak içerik yapısını kolayca izleyebiliyor
    • Tarih, URL, ID gibi ayrıştırma gerektiren öğelere bunu eklememek daha iyi
  • Bu tekniğin LLM çıktısı filigranlamasında kullanılması fikri hoşuma gidiyor

    • Kopyala-yapıştır yapan üreticilerin %99'unu kolayca yakalayabilir
    • Her karaktere veya token'a ne kadar bilgi gömülebileceğini merak ediyorum
  • StegCloak, gizli payload'u AES-256-CTR ile şifreleyerek bu fikri bir adım ileri taşıyor

  • LLM çıktısı filigranlamasının yanı sıra, log probability verilerini paketlemek için de kullanılabilir

    • Üretim sürecinde şeffaflık sağlamak için her token'a ait olasılık bilgisi eklenebilir
    • Bu, OpenAI API spesifikasyonunun bir parçası ve diğer motorlarda da destekleniyor
  • Başlık biraz yanıltıcı

    • Temel karakterin emoji olması gerekmez ve variation selector'ların işlenmesi normal karakterlerle aynıdır
    • Emojilerle birlikte kullanıldığında daha eğlenceli oluyor
  • Tokenizer bunu yakalıyor

  • Önceki iş yerimde, çeşitli kötüye kullanım örnekleri nedeniyle kullanıcı takma adlarındaki ve durum mesajlarındaki 'karakterleri' saymak için code pointer kullanmak zorunda kalmıştık

    • Başka kullanıcıların profilinde gezinmek için 9 MB indirmek istemiyorduk
  • Unicode tag karakterleri ASCII'yi yansıtır ve UI öğelerinde çoğu zaman görünmez

    • Bazı LLM'ler gizli metni ASCII olarak yorumlayıp talimatlara uyuyor, hatta bunu yazabiliyor bile
  • Microsoft'un Copilot'ta düzelttiği gerçek bir istismar örneği var