אני לא מבין איך הן עובדות..
ראשי > אבטחת מידע > הצפנות - חד כיווניות
נניח והטקסט המקורי הוא המספר 100, הפעולת הצפנה שלנו היא חילוק ב2, וחיבור בין הספרות.
אחרי החילוק, התוצאה שלנו (הסייפרטקסט) היא 50, לאחר חיבור הספרות התוצאה היא 5, אתה יודע כמה מספרים יכולים להניב את אותה התוצאה? לדוגמא:
10, לחלק ל2 זה 5, לחבר את הספרות- 5.
1000, לחלק ל2 זה 500, לחבר את הספרות- 5.
46, לחלק ל2 זה 23, לחבר את הספרות זה 5.
וכו’ וכו’ וכו’
וזאת דוגמא שאתה מקבל ע"י שתי פעולות מתמטיות בלבד! וככל שאלגוריתם יותר מורכב, האפשרויות רק גודלות!
ככה אתה מגיע למצב שאתנה מקבל סייפרטקסט ואין לך דרך לדעת מה היה הטקסט המקורי אפילו ע"י הפעולה ההפוכה של אותו האלגוריתם!
יש שימושים מסויימים להצפנות חד כיווניות, אתה לא תצפין בזה טקסט ענקי שאתה רוצה לשלוח לחבר- כי זה לא יעזור לו, הוא לא יצליח לפענח את הטקסט, אבל אתה כן תשתמש בזה בשביל לאמת כל מני התחברויות (הרבה מאוד מערכות פורומים משתמשות בהצפנות חד כיווניות/תמצותים בכדי לאמת סיסמאות כשאתה משתמש בלוגין, למשל PHPBB, היא משתמשת בMD5).
ובכדי לפצח את זה אכן משתמשים בברוט פורס, נגיד אנחנו יודעים שבפליינטקסט יש לנו 5 תווים, אז אנחנו לוקחים את המחרוזת AAAAA מצפינים אותה, ומשווים עם הסייפרטקסט שיש לנו, אם זה שווה- אנחנו יודעים שהמחרוזת שהוצפנה היא AAAAA, אם זה לא שווה, אנחנו מעלים את המחרוזת באחד: AAAAB ומנסים שוב, עד שמגיעים למצב שהסייפרטקסט שחוללנו שווה לסייפרטקסט שיש לנו- ואז אנחנו יודעים מה ההצפנה.
כמובן שזה לוקח הרבה מאוד זמן, ויש כל מני טריקים בכדי לקצר את העניין, אבל עדיין, כשיש מחרוזות ארוכות ביותר, זה יכול לקחת הרבה מאוד זמן.
אחד הטריקים הוא Rainbow tables ("טבלאות ריינבאו"), שזה טבלאות של פליינטקסט ושל סייפרטקסט של הרבה מאוד סיסמאות, ובמצב שיש לנו כאלה, אנחנו לא צריכים לבזבז זמן על לחולל את הסיסמאות אלה רק להשוות אותן עם הסייפרטקסט שיש לנו.
עוד טריק מוכר זה שכמה מחשבים עובדים על סיסמא אחת בו זמנית, כל מחשב מקבל טווח מסויים של סיסמאות, מחשב א’ מקבל למשל מAAAAA עד לBZZZZ, מחשב ב’ מקבל CAAAA עד לDZZZZ וככה מנסים לפצח את הסיסמאות בו זמנית, זה חוסך הרבה זמן, ביחוד שיש הרבה מחשבים שעושים את זה, טוב להפעיל את זה ברשתות של בית ספר, או של סיפריה, כי אף פעם לא מכבים בהם את המחשבים, ואפשר לבנות תוכנה שתנהל את ההרצת בדיקות ברשת, כי גם יש הרבה מחשבים, וגם הם ברשת במקום נגיש.
אם אתם רוצים עוד מידע על הנושא, תשאלו שאלות ואני אשמח לענות.
כל סטרינג שונה מהשני (אחרי הצפנה)
אם אתה מתעניין, הקוד מקור של מימוש האלגוריתם של הMD5:
http://www.cryptography-tutorial.com/cryptomd5.htm