עבור לתוכן

שאלה לגבי SSL

Featured Replies

פורסם

שלום

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

אנחנו מזהים התחברות כזו לפי התחילית https במקום http.

העניין הוא כזה:

התקשורת ב-SSL מוצפנת,

אבל ממה שידוע לי, כשמצפינים משהו, צריך להצפין אותו עם Key כלשהו, או במילים פשוטות - סיסמה כלשהי.

והרי כשאנחנו גולשים למגוון אתרים שעובדים ב-SSL, הם לא מגדירים מול הדפדפן שלנו את סיסמאת ההצפנה..

אז אני תוהה לעצמי,

האם זה אומר בעצם שההצפנה של כל המשתמשים, כשהם משתמשים בדפדפן שלהם עם SSL, נעשית עם אותו Key לכולם?

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

בניגוד למצב שלכל אחד היה Encryption Key אחר,

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

מקווה שמישהו יכול לחדד את הסיפור

תודה

נערך על-ידי card

פורסם

הצפנה "רגילה" עם מפתח או סיסמא היא הצפנה סימטרית - הצפנה שבה גם ההצפנה וגם הפענוח נעשים ע"י שימוש באותו מפתח.

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

https://youtu.be/ERp8420ucGs?t=1m46s

נערך על-ידי m1ke

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

בעצם כתבת פה שבשלב האסימטרי, הצד שלי יכול לשלוח נתונים מוצפנים, והצד של ה-server יכול לקבל אותם..

אבל מה לגבי הכיוון ההפוך?

הכיוון ההפוך נדרש, בדיוק בגלל מה שכתבת אחרי זה:

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

ה-Server הוא זה ששולח ל-Client (אני) את המפתח הסימטרי? ואני אמור לקבל את זה?

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

(או שייצור המפתח הסימטרי נעשה דווקא אצל ה-Client, ואז ה-Client הוא זה ששולח אותו ל-Server, בצורה מוצפנת)

נערך על-ידי card

פורסם

מספיק לך להעביר נתונים רק בכיוון אחד בשביל ליצור ערוץ מאובטח בשני הכיוונים. לדוגמה אתה יכול לייצר מפתח מאוד גדול ולשלוח אותו בצורה מוצפנת לצד השני (בעזרת public key), כדי שהצד השני ידע ליצור אתך קשר חזרה בקו המאובטח ע"י המפתח הסימטרי. ככה בגדול עובדת שיטת RSA להעברת מפתחות. לאחר העברת המפתחות (או חלקים של מפתחות) שמאובטחת ע"י הצפנה אי סימטרית, ההצפנה הופכת להיות סימטרית. אם מעניין אותך עוד, תחפש על key exchange.

נערך על-ידי m1ke

פורסם

קודם כל אתה צריך להבין את הרעיון של certificate.

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

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

בשביל זה מחתימים את התעודה עם חתימה דיגיטלית ע"י certificate authority. החתימה הדיגיטלית של אותה רשות מופיעה בתעודה שהשרת מציג.

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

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

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

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

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

פורסם
  • מחבר

תודה רבה לשניכם!!!

הבנתי :)

ממש מגניב

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

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

אבל אני מבין עכשיו שהמפתח הסימטרי לא משותף לכולם אלא מיוצר ע"י ה-Client ונשלח ל-Server,

וגם השליחה נעשית בצורה מוצפנת אסימטרית.

נחמד..

אגב,

אפשר להגיד שעדיין יש פה סוג של נקודת חולשה..

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

הנקודה היא זו:

אחרי שהדפדפן שלי מייצר את המפתח הסימטרי הייחודי עבורו, הוא שולח אותו לסרבר כשהוא מוצפן עם ה-Public Key.

טכנית, רק הסרבר יכול לפענח את ההודעה הזו, עם ה-Private Key שיש לו.

אבל!

בגלל שה-Public Key משותף לכל הדפדפנים,

אז בן אדם יכול לקחת את ה-Public Key מהדפדפן שלו,

ואז לכתוב(או להשיג) פונקציה כלשהי שמקבלת Public Key, וממירה אותו ל-Private Key המתאים לו..

אני מבין שהפוקנציה כזו לא עובדת באפס זמן, אלא יכולה לקחת המון זמן אפילו,

בין אם היא עובדת ע"י חישוב (ארוך),

או בין עם ע"י Brute Force שפשוט ינסה את כל האפשרויות (של ה-Private Key) עד שיגיע למתאימה...

כלומר פונקציה כזו (המרה מ-Public Key ל-Private Key המתאים לו) היא בעצם כל מה שמפריד בין מי שרוצה לפענח את הנתונים, לבין הנתונים עצמם..

נערך על-ידי card

פורסם

בהינתן מספיק זמן וכוח מחשוב, כל שיטת הצפנה נוכחית יכולה להיפרץ. העקרון מאחורי שיטות ההצפנה המודרניות שניסיון לעקוף אותן באמצעות brute force יקח מאות שנים למחשבי על. חוזק ההצפנה עולה באופן זהה לכוח העיבוד. הצפנות שהיו חזקות לפני 10 שנים, היום כבר לא בשימוש.

נערך על-ידי m1ke

פורסם
  • מחבר

מגניב

מעניין הסיפור..

תודה רבה m1ke

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים