- Data arbitrer dapat dikodekan ke dalam satu emoji
- Unicode merepresentasikan teks sebagai urutan code point, dan setiap code point adalah angka yang diberi makna oleh Unicode Consortium.
- Untuk teks alfabet Latin sederhana, ada pemetaan satu banding satu antara code point Unicode dan karakter yang muncul di layar.
- Pada sistem penulisan lain, karakter yang muncul di layar dapat direpresentasikan oleh beberapa code point.
- Variation selector
- Unicode menetapkan 256 code point yang disebut "variation selector", yang tidak tampil sendiri di layar, tetapi digunakan untuk memodifikasi representasi karakter sebelumnya.
- Sebagian besar karakter Unicode tidak memiliki variasi, dan variation selector harus dipertahankan selama proses konversi.
- Ke-256 variation selector ini menyediakan cara untuk menyembunyikan satu byte.
- Pengodean data
- Dengan menghubungkan urutan variation selector, kita dapat merepresentasikan string byte arbitrer.
- Sebagai contoh, data [0x68, 0x65, 0x6c, 0x6c, 0x6f] yang merepresentasikan teks "hello" dapat dikodekan.
- Setelah byte diubah menjadi variation selector, hasilnya dikodekan dengan menempelkannya setelah karakter dasar.
- Dekode data
- Dekode semudah proses pengodean.
- Data asli dapat dipulihkan dengan mengubah variation selector kembali menjadi byte.
- Potensi penyalahgunaan
- Karena ini merupakan penyalahgunaan Unicode, metode ini tidak direkomendasikan.
- Ini dapat digunakan untuk tujuan berbahaya, seperti melewati filter konten berbasis manusia atau menyisipkan watermark ke dalam teks.
- Kesimpulan
- Artikel ini menjelaskan cara menyembunyikan data arbitrer menggunakan emoji, dengan memanfaatkan variation selector Unicode.
- Metode ini menarik, tetapi mungkin tidak cocok untuk penggunaan nyata.
1 komentar
Komentar Hacker News
PUA (Private Use Area) Unicode digunakan untuk keperluan internal dan kustom, serta tidak diteruskan ke sistem eksternal
Penyalahgunaan Unicode hanyalah puncak gunung es
Dari pengalaman uji penetrasi di masa lalu, ada ingatan tentang membuat buffer backend web server overflow hanya dengan tanda diakritik sederhana
Sanity menggunakan teknik ini untuk mengenkode Content Source Maps ke dalam teks nyata di halaman web
Menyukai ide menggunakan teknik ini untuk watermark pada output LLM
StegCloak membawa ide ini selangkah lebih jauh dengan mengenkripsi payload tersembunyi melalui AES-256-CTR
Selain watermark output LLM, ini juga bisa digunakan untuk mengemas data log-probability
Judulnya agak menyesatkan
Tokenizer menangkap ini
Di tempat kerja sebelumnya, karena berbagai kasus penyalahgunaan, harus menggunakan code pointer untuk menghitung 'karakter' pada nama panggilan pengguna dan pesan status
Karakter tag Unicode mencerminkan ASCII dan sering kali tidak terlihat di elemen UI
Ada kasus eksploitasi nyata yang diperbaiki Microsoft di Copilot