רן בר-זיק לפני 5 שנים כ- 3 דקות קריאה
סטגנוגרפיה זו לא מילה גסה | אינטרנט ישראל
לפני כשבוע בערך הביצה הקטנה בטוויטר שוב רחשה בגלל גילוי נאה של מומחה לאבטחת מידע בשם אדין יוסופוביץ'. הוא בדק קבצי תמונה מפייסבוק ב-hex editor וראה שהם מוסיפים מידע לכל תמונה ומדובר במידע מוצפן הכולל את שם המשתמש ונעשה בכל תמונה שהיא.
— Edin Jusupovic (@oasace) July 11, 2019#facebook is embedding tracking data inside photos you download.
I noticed a structural abnormality when looking at a hex dump of an image file from an unknown origin only to discover it contained what I now understand is an IPTC special instruction. Shocking level of tracking.. pic.twitter.com/WC1u7Zh5gN
כתבתי על כך מאמר נאה ל'הארץ' כמיטב המסורת (למי שלא יודע, בנוסף לעבודתי הסדירה בורייזון, אני גם כתב לענייני טכנולוגיה ב'הארץ') וחשבתי להרחיב כאן על ענייני הסטגנוגרפיה – לאנשים טכניים יותר.
אז סטגנוגרפיה, למי שלא יודע, זו אמנות הכתיבה המכוסה (זה פירוש השם – סטגנו זה כיסוי וגרפיה זו כתיבה) ובגדול זה אומר להעביר מידע בצורה סודית. מה זאת אומרת? בקריפטוגרפיה אנו מצפינים את המידע אך לא מסתירים אותו. כל אחד יכול לדעת שאני מעביר מידע מוצפן ומטרת הקריפטוגרפיה היא לא להסתיר את עובדת קיום המידע, רק למנוע מאנשים לחטט שם בלי מפתח הצופן המקורי. מטרת הסטגנוגרפיה היא להסתיר את עובדת העברת המידע.
דוגמה? אחת הדוגמאות שאני ממש אוהב היא אקרוסטיכון. קחו למשל את הכתבה המהממת הזו על דוגמנית שנעצרה על העלמת מס. בזמן פרסום הכתבה, שם הדוגמנית היה אסור לפרסום, אבל הכתב השתמש באקרוסטיכון כדי לשדר את המידע החוצה כאשר הוא חבוי בטקסט.

כמובן שבעולם המחשוב יש לנו דרכים יותר מעניינות. הדרך שיוספוביץ' מצא היא דרך כזו. מה שקורה הוא שאפשר להוסיף לקבצים מסוימים (במיוחד תמונות) מידע בינארי בסוף שלהם. כאשר אנו מציגים את התמונה בדפדפן/עורך תמונות – בגלל שהתוכנה שמציגה את התמונה לא יודעת מה לעשות איתו – היא מתעלמת ממנו. כאשר אנו שומרים את התמונה – היא נשמרת עם המידע הזה כמובן.
בואו ונדגים. תורידו תמונה כלשהי. לא משנה איזו. בואו ונצמיד לה טקסט. איך? ניצור קובץ טקסט פשוט ונשים את התמונה ואת הטקסט באותה תיקיה. עכשיו נמזג אותם מבחינה בינארית – נוסיף את הטקסט לתחתית התמונה. איך?
בחלונות נפתח את ה-CMD שלנו ונקליד:
copy /b picture.jpg + data.txt hidden-data.jpg
אם יש לנו לינוקס/מק אז:
cat picture.jpg data.txt > hidden-data.jpg
נראה שנוצרה לנו תמונה בשם hidden-data.jpg. אם תפתחו אותה, לא תבדילו בינה לבין תמונה אחרת. הנה התמונה שאני יצרתי:

אבל יש בתמוה הזו מידע אחר. איך נמצא אותו? בשביל זה אנחנו צריכים להסתכל על המקור הבינארי. אבל כיוון שאף אחד מאיתנו לא יודע להסתכל על 0 ו-1, אנו נסתכל על ה-hex. אפשר לעשות את זה, תאמינו או לא, בעורך אונלייני. נסו את זה למשל – פשוט תעתיקו את כתובת התמונה אליו ותראו את המסר הסודי.

כמובן שזו דרך יחסית נאיבית, אבל זו דרך. והיא עובדת. אפשר לעשות דברים כאלו לקבצים נוספים. וכמובן שכל סקריפט יכול לקרוא את המידע הזה. וכן, יש לזה לא מעט שימושים. עכשיו אתם יודעים שזה לא קסם וגם איך עושים את זה. תודו שזה מגניב.
כמובן שזה לא סוד גדול ויש ספריות לא מעטות בהמון שפות שעוסקות בכתיבה וקריאה של מידע כזה. גם ניתן להכניס מידע כזה באופן לא פיראטי אלא בצורה מסודרת במקומות שנועדו להכניס מידע כזה.