Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > הצפנות - חד כיווניות

31/12/2005 21:45:28 dick
איך בעצם זה עובד? אי אפשר לעשות את הפעולות ההפוכות ממה שעשו בשביל להצפין בשביל לקבל את המחרוזת בחזרה?
אני לא מבין איך הן עובדות..
31/12/2005 21:53:11 cp77fk4r
לא, אי אפשר לעשות את הפעולה ההפוכה, כי פשוט אין כזאת, אני אסביר לך את זה ע"י דוגמא פשוטה:

נניח והטקסט המקורי הוא המספר 100, הפעולת הצפנה שלנו היא חילוק ב2, וחיבור בין הספרות.
אחרי החילוק, התוצאה שלנו (הסייפרטקסט) היא 50, לאחר חיבור הספרות התוצאה היא 5, אתה יודע כמה מספרים יכולים להניב את אותה התוצאה? לדוגמא:

10, לחלק ל2 זה 5, לחבר את הספרות- 5.
1000, לחלק ל2 זה 500, לחבר את הספרות- 5.
46, לחלק ל2 זה 23, לחבר את הספרות זה 5.

וכו’ וכו’ וכו’

וזאת דוגמא שאתה מקבל ע"י שתי פעולות מתמטיות בלבד! וככל שאלגוריתם יותר מורכב, האפשרויות רק גודלות!

ככה אתה מגיע למצב שאתנה מקבל סייפרטקסט ואין לך דרך לדעת מה היה הטקסט המקורי אפילו ע"י הפעולה ההפוכה של אותו האלגוריתם!
31/12/2005 22:58:30 אודי
ואו..תודה! עכשיו אני מבין כמה המתמטיקה באמת חשובה בהצפנות.
01/01/2006 00:39:04 Zibi
סיפי,לפי מה שאמרת או איך שאני הבנתי מהדברים שאמרת בעצם אין דרך לפצח הצפנות כאלה!!זאת אומרת אין שום דרך להגיעה לplaintext.כי האפשרויות כל כך רבות שעד שתצליח לפצח יעבור מיליון שנה.
01/01/2006 02:23:13 cp77fk4r
זה נכון, אבל זה לא עוזר, אני אסביר לך למה.

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

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

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

אחד הטריקים הוא Rainbow tables ("טבלאות ריינבאו"), שזה טבלאות של פליינטקסט ושל סייפרטקסט של הרבה מאוד סיסמאות, ובמצב שיש לנו כאלה, אנחנו לא צריכים לבזבז זמן על לחולל את הסיסמאות אלה רק להשוות אותן עם הסייפרטקסט שיש לנו.

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

אם אתם רוצים עוד מידע על הנושא, תשאלו שאלות ואני אשמח לענות.
04/01/2006 14:01:01 dick
אז איך בMD5

כל סטרינג שונה מהשני (אחרי הצפנה)
04/01/2006 20:38:41 cp77fk4r
זה מפני שיש עוד הרבה קריטריונים, ב"אלגוריתם" שאני נתתי הפעולות פשוטות וחסרות כל היגיון, באלגוריתם MD5 הפקודות הרבה יותר מסורבלות ובעלות היגיון מאחוריהן.

אם אתה מתעניין, הקוד מקור של מימוש האלגוריתם של הMD5:

http://www.cryptography-tutorial.com/cryptomd5.htm
עמודים: 1