|
||||
|
||||
בוא ננצל את הפורום ואת העובדה שאני מניח מדבריך שיש לך ידע כלשהו בתחום כדי שתסביר לי אחת ולתמיד איך מצליחים לפענח הודעה מוצפנת (שאין לך חלק ממנה) על ידי ניסוי כל המפתחות. האם הודעות מוצפנות מכילות תמיד בתוכן קטע שבו כתוב "ברכותי, פיצחת את הצופן!"? כי אחרת, איך המחשב שבודק את המפתחות יכול לזהות שההודעה שהוא בודק באמת פוענחה? שהרי הודעה מפוענחת, מנק' המבט של המחשב, היא אוסף תווים כמו כל אוסף תווים אחר. יש לו מילון פנימי והוא בודק האם יש דיוק בהסתברות גבוהה? לי זה נראה שבנוסף לקריפטוגרפיה, צריך כאן קצת בינה מלאכותית. |
|
||||
|
||||
ואיך יודעים מה גודל המפתח? ומי בכלל מצפין מידע סודי ראוי לתוארו במפתח קטן מאורך ההודעה? |
|
||||
|
||||
ממה שאני זוכר מהספר "סודות ההצפנה" המפתח ה"קצר" משמש להצפנת המחולל ( ה SEED) של המפתח הארוך. כלומר את ההודעה מצפינים עם מפתח "פסאודו" אקראי כדי למנוע פיצוח בשיטות סטאטיסטיות ( תדירות אותיות וכולי). את הפארמטרים של המחולל של המספרים האקראיים מצפינים עם דברים כמו RSA. |
|
||||
|
||||
נכון, אבל זו עדיין הגנה בלתי מושלמת. הצפנה בעזרת מפתח שאורכו כאורך ההודעה היא הצפנה מושלמת, כזו שאין שום דרך לפרוץ ("פנקס חד פעמי" בלשון סודות ההצפנה). למרות שזה מאוד מסורבל להשתמש בשיטה הזו כל הזמן, כשמדובר במידע סודי ביותר, אני מניח שאכן משתמשים בה. למפתחות פסואודו אקראיים יש את הבעיות שלהם. אם אני זוכר נכון, החבר'ה שפיצחו את ה-GSM עשו את זה תוך ניצול פאשלה במפתח פסאודו אקראי מסוג זה, שעשתה אותו קל לגילוי. |
|
||||
|
||||
יש שתי דרכים עקרוניות להצפין. אחת, באמצעות מה שקרוי one-time pad, שהוא מפתח השווה באורכו לאורך ההודעה. לכל סיבית מידע A וסיבית מפתח K, שולחים את הסכום A+K (מודולו 2), והצד השני לוקח את הסכום הזה, מוסיף לו שוב את K, ומקבל את A. בשיטה הזו, לכל A אפשרי מתאים K אחד ויחיד - ואם המפתחות סבירים באותה מידה, באמת אין שום דרך להבדיל בין פענוח אפשרי אחד לאחר. הבעיה היא שהצפנה כזו דורשת מפתחות גדולים מאד (אם אתה רוצה לשלוח תמונות מוצפנות, תצטרך להקדיש חצי דיסק למפתחות - ולדאוג שהצד השני יחזיק באותו מפתח, כמובן). לכן משתמשים במנגנונים סטנדרטיים כמו DES, שיש להם מפתח קטן יחסית, והם מצפינים הודעות שונות בעזרת אותו מפתח. אם מנחשים את המפתח, בבת-אחת כל ההודעות מתאימות למבנה של המידע שרצו להעביר (למשל: קוד ה- ASCII מתאים ברובו הגדול לאותיות) וכך אפשר לזהות שעלינו על המפתח הנכון. |
|
||||
|
||||
זה תלוי במצב, כמובן, אבל אני לא מכיר מקרים בהם נדרשים ממש לבינה מלאכותית כדי לזהות פענוח. נביט בשני מקרים קיצוניים ופשוטים: אחד, "צופן קיסר", בו מזיזים את כל האותיות הזזה קבועה (אם ההזזה היא 3, א' תהפוך ל-ד', ב' ל-ה' וכו'). נתון טקסט מוצפן באורך סביר ועליך למצוא מהי ההזזה ("המפתח") ולפענח את הכתוב. רק ההזזה הנכונה תניב טקסט בעברית, וזאת מחשב יכול לזהות בקלות ע"י מילון או ע"י סטטיסטיקה של האותיות (או צמדי-האותיות): אם ט' יוצאת האות הנפוצה ביותר בטקסט, כנראה שטרם פענחת. באנגלית האותיות הנפוצות הן (בערך בסדר הזה) ETAOIN SHRDLU, ואם אחרי כל Q בא U אתה כנראה במצב טוב. בצופן קיסר, מרחב האפשרויות הוא קטן ויהיה קל מאוד לזהות אם הסטטיסטיקה "נכונה" בטקסט המפוענח. שניים, סוג של "מפתח חד-פעמי" (one-time pad). יש לך טקסט המיועד להצפנה באורך 100 אותיות המיוצגות ע"י מספרים בין 0 ל-27 נניח (0 הוא רווח, 1 הוא א' וכו'). אתה מגריל (באמת מגריל, נניח ע"י הטלות מטבע) 100 מספרים בין 0 ל-27, ומזיז כל אות בטקסט במידה המתאימה - כלומר, מחבר את המספר של האות למספר שהגרלת (ומחסר 27 אם התוצאה גבוהה מ-27). זה נקרא "חד-פעמי" כי הרעיון הוא שאתה משתמש ב-100 המספרים שהגרלת בשביל ההודעה הזו ואח"כ זורק אותם ולא משתמש בהם שנית לעולם (אחרת אתה מועד לצרות). כעת השאלה ששאלת מחריפה עד כדי כך שהפענוח בשיטת "ניסוי כל המפתחות" הופך באמת לבלתי-אפשרי, ושום בינה לא מלאכותית לא תעזור. מדוע? כי אם נופל לידיך טקסט שהוצפן בשיטה הזו, אתה יכול "לפענח" אותו לכל טקסט בן 100 אותיות שתרצה ע"י "ניחוש" מפתח מתאים. במילים אחרות, גודל מרחב המפתחות הוא כגודל מרחב הטקסטים האפשריים, ובאמת שאין סיבה להעדיף טקסט אחד על משנהו. המצב הרגיל הוא לרוב איפשהו באמצע, וכל עוד מספר המפתחות קטן בהרבה ממספר כל הטקסטים האפשריים סביר שרק טקסט מפוענח אחד ייראה כמו עברית והשאר ייראו כמו ג'יבריש מוחלט, ואת זה אפילו מחשב חסר בינה יכול לגלות (בשיטות שהזכרתי קודם, למשל). |
|
||||
|
||||
תודה על הסקירה הרחבה, אבל עשית פחות או יותר מה שעשו כל מי ששאלתי אותו על זה - הרחבת על הדברים שכבר הכרתי. אני מכיר את המפתח החד פעמי, ולא עליו דיברתי, אלא על השיטות "סטטיסטיקה/מילון" שלך. אבל הרי קל מאוד לעבוד על שיטות כאלו, כשמעבירים הודעה שרוצים להיזהר איתה. אפשר לשלוח הודעה בלי רווחים, שבה יש אחת משלוש או ארבע אותיות מוסכמות מראש (כאלו בתדירות נמוכה, כמו Z) שמוכנסות אחרי כל שלוש אותיות, למשל, ואז ההודעה המפוענחת לא תענה על הדרישות שהצגת, למרות שקרוב לודאי שאדם שיביט בה יבין מייד שהיא פיענוח. יש שיטות יותר משוכללות למחשב לוודא דברים שכאלה? ואגב, האם זה באמת איך שמפצחי צפנים עובדים? עם מחשב שמכיל מילון? |
|
||||
|
||||
או-קיי, סליחה, אבל אולי השאלה המקורית לא היתה ברורה לגמרי. בכל אופן, למחוק רווחים עוזר אבל לא הרבה, ולא משנה במידה מהותית את הסטטיסטיקות, וגם להוסיף Z-ים לא ממש. זה ממש לא קל להפוך באופן מכני שכזה משהו בשפת אנוש למשהו שנראה כמו רעש (ואם הצלחת, פשוט הוספת עוד שכבת הצפנה שגם אותה בן-זוגך צריך איכשהו לפענח). ואם פעם אחת פענחת הודעה כזו, תוכל ללמד את המחשב שלך להתכונן יותר טוב לפעם הבאה. עוזי גם הזכיר את האפשרות שההצפנה תעבוד על הסיביות הבודדות ואז אתה יכול לזהות שפענחת ולו באמצעות הפורמט. |
|
||||
|
||||
השעלה אי עיח שיתות הפאנואך שמכפסוט התעמא מילונית מטמודדות אים שגיעות קטיב? ויש גם העניין החביב ההוא עם שליחת הטכסט כתמונה עמומה, כמו באותם אתרים שרוצים לנפות בוטים. |
|
||||
|
||||
סטטיסטיקה, כאמור, יותר מוצלחת ממילון; שגיאות כתיב בודדות לא מזיקות במיוחד בכל מקרה, ומשהו סדרתי כמו מחצית הודעתך הוא א. לא ממש נוח ב. אפשר גם אליו להתרגל (גם מחשב). (אגב, נדמה לי שב"חלום בתכלת שחור" של יפתח ספקטור הופיע איזה משפט משעשע, משהו כמו "אל תשאל שטויות ולא יספרו לך שקרים".) |
|
||||
|
||||
תוכל להיות טיפה יותר טכני ולהסביר למה הוספת Z לא תשנה את הסטטיסטיקות? היא תגרום לכך שהאות הפופולרית ביותר תהיה Z - אנטי סטטיסטיקה. היא תגרום לכך שאף מילה לא תתאים למילון - אנטי סטטיסטיקה. ואם תגיד שאפשר לראות בקלות שZ חוזרת כל הזמן באינטרוולים קבועים, כאמור אפשר לעשות את זה עם ארבע או חמש אותיות שונות בו זמנית. נכון, זו עוד שכבת הצפנה, אבל בדיוק על זה אני מדבר - זו הצפנה מסוג שונה, שנגדה המחשב הרבה פחות ערוך להתמודד, לעומת אדם שיפתור אותה בשניות. אבל אדם לא יראה בכלל את ההודעה בצורה המוצפנת הזו. |
|
||||
|
||||
במצבים שאינם מפתח חד-פעמי, אלא מפתח קצר המשמש לייצור מפתח ארוך, כל ניחוש לא נכון יניב פענוח שהוא ג'יבריש *מוחלט*, כלומר חלק מבחינה סטטיסטית: כל האותיות, או הסיביות, תופענה בהסתברות שווה בערך. בטקסט המפוענח הנכון, עם או בלי Z-ים, זה לא המצב. זה לא מאוד חשוב מהי האות הנפוצה ביותר, כל עוד יש כזו. אם תנסה ליצור מצב שההודעה מוחלקת לגמרי "לפני" ההצפנה, אחת משתיים: או שבן זוגך לא יוכל לקרוא אותה, או שתסביר לו בדיוק איך להפוך את ההחלקה שלך, כלומר - תעביר לו עוד מפתח. זו איננה הצפנה מסוג שונה. |
|
||||
|
||||
כל ניחוש לא נכון יניב ג'יבריש מוחלט? אני מתקשה לקבל את זה אינטואיטיבית. תן לי לחזור אלייך עוד כמה סמסטרים, ונראה מה אני אגיד (כנראה "צדקת"). בכל מקרה, תודה. |
|
||||
|
||||
חשוב על זה כך. למידע המקורי יש מבנה מובהק (ובפרט אותיות שכיחות יותר ושכיחות פחות). כדי להצפין, מפעילים פונקציה מסובכת התלויה במפתח K, שבגלל המורכבות שלה מרסקת את המבנה ומחזירה רצף אקראי-לכאורה של אותיות. הפענוח מפעיל את הפונקציה ההופכית, שמחזירה אותנו למצב המקורי. פענוח במפתח שגוי מפעיל את הפונקציה ההופכית הלא-נכונה, שגם היא בעלת אותו מבנה מסובך כמו של הפונקציה המקורית. אם אחרי ערבוב אחד התוצאה אחידה וחלקה, ערבוב (בלתי תלוי) נוסף רק מרע את המצב. |
|
||||
|
||||
או כך: במרחב כל ההודעות באורך 100, אלו החלקות תופסות נפח עצום, ואלו הלא-חלקות-עד-מאוד נפח זעיר. אם יש מפתח חד-פעמי ארוך, אתה עובר על כל המרחב, אבל אם יש מפתח קצר, אתה עובר על חלק פצפון של המרחב. אתה יודע שהזעיר והפצפון נחתכים בנקודה אחת (הפענוח הנכון), אבל אין שום סיבה להניח שהם נחתכים בעוד נקודות. |
|
||||
|
||||
לרוב כל השיטות שאתה מציע (הוספת רעש וכו') יהיו פחות בטוחות מאשר להוסיף עוד כמה ביטים לאורך המפתח. יתרה מזו, שיטות כאלה, שמאוד קשה להבין עד כמה הן באמת תורמות לבטיחות, עלולות לתת לך אשליה של בטיחות ולכן בסופו של דבר להזיק. בדרך כלל כאשר מפתחי צפנים עובדים זה בגלל שהצופן מסובך כך שגם מי שמשתמש בו לא מבין עד כמה הוא בטוח או בגלל שהמפתח קצר מדי. בנוסף, אם המשתמש בצופן משתמש באותה שיטה (למשל הוספת Z) שוב ושוב אז בסופו של דבר המידע על השיטה ידלוף, וזה יכול לסייע למפצחי הצפנים. עד עכשיו מפצחי צפנים לא הצליחו לפרוץ באמת צפנים מודרנים שמשתמשים במפתחות ארוכים (אפילו אם המפתחות קצרים בהרבה מאורך ההודעה). |
|
||||
|
||||
השאלה הייתה על היכולת של המחשב לגלות שהוא מצא את המפתח הנכון בהתקפות ברוטאליות. ניסיתי לדבר דווקא מנקודת המבט של המפצח - הוא לא בהכרח יודע אם ההודעה שהוא מנסה לפצח היא ''תקינה'' או ש''הוסיפו לה רעש'', ולכן לא בהכרח יודע מה להורות למחשב לחפש. אבל אם מה שעוזי ואלון כתבו נכון, אני מניח שזה לא רלוונטי. |
חזרה לעמוד הראשי | המאמר המלא |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |