סטגנוגרפיה זו לא מילה גסה

כך אני מעביר מידע סודי על גבי תמונות. שימושי מאוד להמון מקרים.

לפני כשבוע בערך הביצה הקטנה בטוויטר שוב רחשה בגלל גילוי נאה של מומחה לאבטחת מידע בשם אדין יוסופוביץ'. הוא בדק קבצי תמונה מפייסבוק ב-hex editor וראה שהם מוסיפים מידע לכל תמונה ומדובר במידע מוצפן הכולל את שם המשתמש ונעשה בכל תמונה שהיא.

כתבתי על כך מאמר נאה ל'הארץ' כמיטב המסורת (למי שלא יודע, בנוסף לעבודתי הסדירה בורייזון, אני גם כתב לענייני טכנולוגיה ב'הארץ') וחשבתי להרחיב כאן על ענייני הסטגנוגרפיה – לאנשים טכניים יותר.

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

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

מקור התמונה – הבלוג המומלץ 'מיזבלה' של האחד והיחיד דורי בן ישראל קריו

כמובן שבעולם המחשוב יש לנו דרכים יותר מעניינות. הדרך שיוספוביץ' מצא היא דרך כזו. מה שקורה הוא שאפשר להוסיף לקבצים מסוימים (במיוחד תמונות) מידע בינארי בסוף שלהם. כאשר אנו מציגים את התמונה בדפדפן/עורך תמונות – בגלל שהתוכנה שמציגה את התמונה לא יודעת מה לעשות איתו – היא מתעלמת ממנו. כאשר אנו שומרים את התמונה – היא נשמרת עם המידע הזה כמובן.

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

בחלונות נפתח את ה-CMD שלנו ונקליד:

copy /b picture.jpg + data.txt hidden-data.jpg

אם יש לנו לינוקס/מק אז:

cat picture.jpg data.txt > hidden-data.jpg

נראה שנוצרה לנו תמונה בשם hidden-data.jpg. אם תפתחו אותה, לא תבדילו בינה לבין תמונה אחרת. הנה התמונה שאני יצרתי:

מקור התמונה: Lorem Picsum

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

***This is secret data בעורך בינארי
***This is secret data

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

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

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

גלילה לראש העמוד