- สามารถเข้ารหัสข้อมูลแบบกำหนดเองให้เป็นอีโมจิตัวเดียวได้
- ยูนิโค้ดแสดงข้อความเป็นลำดับของโค้ดพอยต์ โดยแต่ละโค้ดพอยต์คือตัวเลขที่ Unicode Consortium กำหนดความหมายไว้
- สำหรับข้อความอักษรละตินอย่างง่าย จะมีการจับคู่แบบหนึ่งต่อหนึ่งระหว่างโค้ดพอยต์ของยูนิโค้ดกับอักขระที่แสดงบนหน้าจอ
- ในระบบอักษรอื่น อักขระที่เห็นบนหน้าจออาจแทนด้วยโค้ดพอยต์หลายตัวได้
- ตัวเลือกการแปรผัน
- ยูนิโค้ดกำหนดโค้ดพอยต์ 256 ตัวที่เรียกว่า "ตัวเลือกการแปรผัน" ซึ่งจะไม่แสดงผลบนหน้าจอด้วยตัวเอง แต่ใช้เพื่อปรับเปลี่ยนการแสดงผลของอักขระก่อนหน้า
- อักขระยูนิโค้ดส่วนใหญ่ไม่มีรูปแบบแปรผัน และตัวเลือกการแปรผันควรถูกเก็บรักษาไว้แม้ระหว่างการแปลง
- ตัวเลือกการแปรผันทั้ง 256 ตัวนี้จึงเป็นวิธีสำหรับซ่อนข้อมูลได้หนึ่งไบต์
- การเข้ารหัสข้อมูล
- สามารถนำลำดับของตัวเลือกการแปรผันมาต่อกันเพื่อแทนสตริงไบต์แบบกำหนดเองได้
- ตัวอย่างเช่น สามารถเข้ารหัสข้อมูล [0x68, 0x65, 0x6c, 0x6c, 0x6f] ซึ่งแทนข้อความ "hello" ได้
- หลังจากแปลงไบต์เป็นตัวเลือกการแปรผันแล้ว ก็เชื่อมต่อไว้หลังอักขระฐานเพื่อทำการเข้ารหัส
- การถอดรหัสข้อมูล
- การถอดรหัสนั้นง่ายพอ ๆ กับการเข้ารหัส
- สามารถแปลงตัวเลือกการแปรผันกลับเป็นไบต์เพื่อกู้คืนข้อมูลเดิมได้
- ความเป็นไปได้ในการนำไปใช้ในทางที่ผิด
- เนื่องจากเป็นการใช้ยูนิโค้ดในทางที่ผิด จึงไม่แนะนำ
- อาจถูกใช้ในทางไม่ประสงค์ดี เช่น การหลบเลี่ยงตัวกรองเนื้อหาที่มนุษย์อ่าน หรือการฝังลายน้ำลงในข้อความ
- สรุป
- บทความนี้อธิบายวิธีซ่อนข้อมูลแบบกำหนดเองโดยใช้อีโมจิ ซึ่งอาศัยตัวเลือกการแปรผันของยูนิโค้ด
- วิธีนี้น่าสนุก แต่ก็อาจไม่เหมาะสำหรับการใช้งานจริง
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
PUA (Private Use Area) ของ Unicode ใช้สำหรับงานภายในและงานปรับแต่งเอง และจะไม่ถูกส่งต่อไปยังระบบภายนอก
การนำ Unicode ไปใช้ในทางที่ผิดเป็นเพียงแค่ยอดของภูเขาน้ำแข็ง
จากประสบการณ์ทำ penetration test ในอดีต เคยทำให้บัฟเฟอร์ของเว็บเซิร์ฟเวอร์ฝั่งแบ็กเอนด์ล้นได้ด้วยเพียงเครื่องหมายกำกับเสียงง่าย ๆ
Sanity ใช้เทคนิคนี้เพื่อเข้ารหัส Content Source Maps ลงในข้อความจริงบนหน้าเว็บ
ชอบไอเดียการใช้เทคนิคนี้ทำลายน้ำให้เอาต์พุตของ LLM
StegCloak ต่อยอดไอเดียนี้ไปอีกขั้นด้วยการเข้ารหัสเพย์โหลดที่ซ่อนไว้ผ่าน AES-256-CTR
นอกจากการทำลายน้ำเอาต์พุตของ LLM แล้ว ยังสามารถใช้แพ็กเกจข้อมูล log probability ได้ด้วย
ชื่อเรื่องค่อนข้างทำให้เข้าใจผิดเล็กน้อย
tokenizer จับสิ่งนี้ได้
ที่ทำงานเก่า ต้องใช้ code pointer ในการนับ 'ตัวอักษร' ของชื่อเล่นผู้ใช้และข้อความสถานะ เพราะมีการนำไปใช้ในทางที่ผิดหลายแบบ
Unicode tag character สะท้อน ASCII และมักมองไม่เห็นในองค์ประกอบ UI
มีกรณีการโจมตีจริงที่ Microsoft แก้ไขใน Copilot