
הטקסט המלא של הדקות הראשונות בהרצאה «פתיחת הצפנה של SSL - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
זאת השכבה הכי מעניינת אותנו שזה שכבת ההצפנה של SSL, אתם רואים? SSL, Secure Socket Layer ולמעשה SSL כבר החליף את השם שלו ל-TLS V1.2 ויש כבר V1.3 ומה אנחנו רואים? שבחבילת מידע הזאת שתכלס בשביל זה שלחנו אותה, הרי לא שלחנו מידע בשביל IP, פורט, מספר שיחה, כל המטרה הייתה להעביר את המידע המוצפן הזה.
בואו נראה את המידע המוצפן הזה, אנחנו עושים פה Packets, נלחץ כפתור ימני ביט והנה אנחנו רואים את המידע המוצפן זה מה המשמעות של ההצפנה הזאת אף אחד לא יודע כאן כתוב שיש 343 בתים מוצפנים אבל מה המשמעות של זה צריך מפתח הצפנה בשביל לפתוח אותו אין לנו את המפתח הזה כי אנחנו האקרים שיושבים באמצע אז אין לנו את המפתח אי אפשר לפתוח את זה
זאת המשמעות של תקשורת מוצפנת ובואו אני אפתח לכם אותה כי אני לא באמת האקר אני שולט על הדפדפן ואמרתי לו לרשום לי את כל המפתחות לתיקייה מסוימת נכון אה, הוא לא רשם לי, הוא לא רשם לי.
בואו ננסה עוד פעם, אנחנו באים למשתנה סביבה, מוסיפים משתנה סביבה חדש שנקרא בשם הזה ssl-key-log-file, זה חייב להיות זה.
הולכים לכונן c, לוקחים את הנתיב הזה של c-log, מכניסים לכאן c-log, נקרא לזה ssl-secret-key-log.txt. את השם הזה אני אצטרך להכניס ל-wireshark אחרי שהדבדפן ירשום לקובץ הזה את הערכים שלו.
בואו נבדוק שזה באמת תפס. נפתח CMD, נפתח לי PowerShell, אני כותב CMD, Set. אני רוצה לראות שהמשתנה סביבה הזה אכן תפס.
SSA Log File Name, טה טה טה טה טה טה טה, אני רואה שזה תפס, מצוין. סוגר את החלון הזה, מפעיל WireShark, שיתחיל לתפוס פאקטים בפרפרנסס שלו.
כרגע אני לא מגלה לו איפה נמצא הקובץ של המפתחות, כי אנחנו רוצים לראות שהוא באמת לא יודע, ואחרי זה שיפתח לי את זה. הנה, כאן יש לו כבר את ההגדרה, אז אני מוחק אותה, עושה אוקיי.
עוד פעם, בודק שההגדרה הזאת לא מפריעה לנו פה. SSL, אין את ההגדרה, יפה מאוד. מתחילים לתפוס את הפאקטים. אתם יודעים מה, אפילו אני אסגור אותו ואפתח אותו עוד פעם.
התחלנו לתפוס את הפאקטים. נכנסים לאתר HTTPS, זה מה שהכי חשוב לי להגיד לכם, שזה יהיה הכל מוצפן. כניסה לאזור האישי.
בינתיים עד שהוא נכנס לאזור האישי אתם יכולים לראות שברקע פאקטים רצים אתם רואים פה פאקטים רצים והצפנה tls רצה נכניס פה תעודת זהות [email protected] נכנס כמובן שהוא יגיד לי שהפרטים שגויים אבל זה לא מה שבאמת מעניין אותי סוגר את הדפדפן עוצר את התפיסה של הפאקטים
יש פה מלא תקשורת כי הוא לא עושה רק מול האתר של פרקטיקיו אלא כל מיני פלאגינים בתוספים וכל מיני JavaScript שהיה בפנים פתח מלא תקשורות לכל מיני אתרים להביא תמונות להודיע שמה מי גלש לאיזה עמוד סטטיסטיקה של גוגל אז אני אומר לו תקשיב רק מה שנשלח לשרת של פרקטיקיו השיחות הן מזוהות לפי IP ופורט גם סורס וגם דיסטנשן ייחודיים IP פורט סורס IP פורט דיסטנשן השילוב של כל אלו שיהיה ייחודי
זה שיחה אחת מבחינת TCP וככה אנחנו מתחילים ב- TCP את השיחה אנחנו רואים שאנחנו רוצים לעשות שיחה בין פורט 63,688 אצל הקליינט, אתם רואים זה ה-IP שלי, של הקליינט, של התחנה הזאת, לשרת, בשרת זה חייב להיות 443, כי זה הפורט שבו הוא מצפה לקבל תקשורת, את
הפאקט הראשוני מאיתנו, ואחרי זה קליינט אומר, הנה אני רוצה עוד שיחה, אתם רואים, הוא רוצה שתי שיחות, גם בפורט 688 וגם ב-689 הוא רוצה שתי שיחות לנהל איתי, אבל מעניין אותי ההצפנה הזאת, נכון?
הינה איפה שיש אפליקיישן דאטה, הנה איפה שיש מידע מוצפן, הנה אתם רואים יש פה למטה מידע מוצפן, אני רוצה את האפליקיישן דאטה המוצפן הזה, אם אנחנו נפתח פה tcp, בואו נגלגל את זה שיהיה לנו מסך, זאת השורה המובהרת, אנחנו רואים שזה 63.689, עכשיו הוא סתם ממספר אותם ואמר שזה שיחה מספר
5, סתם, זה מספור פנימי שלו שכולל גם tcp וגם udp, כל מה ששילוב של IP ופורט ייחודיים הוא ממספר, שיהיה לנו נוח ואנחנו יכולים אפילו לבודד את זה לפי זה, להגיד לו תקשיב תראה לי רק את השילובים הייחודיים, אז אני עושה לו על הדבר הזה Apply Filter and Selected,
ואז הוא כותב פה למעלה רק ל-IP הזה ורק שיחה מספר 5, עכשיו ב-TCP אין באמת שיחה מספר 5, זה הוא עושה לי טובה, הווייר שרק עושה לי טובה ומוסיף לי מידע שלא קיים ב-TCP, מה שקיים ב-TCP זה Source Port ו-Distant Nation Port, ב-Source IP ו-Distant Nation IP, השילוב הייחודי של זה הוא עוקב אחריו, ויודע לבודד את הפאקטים
האלו ואנחנו פה רואים שהנה כל מה שיש לו 689 ו-443 ו-IP ו-IP בגלל שזה גם ככה ייחודי אני בכלל יכול להוריד את הסינון לפי ה-IP שזה גם ככה סינון לפי ה-IP זה אותו דבר אתם רואים שום דבר לא השתנה במסך בשביל מה אנחנו פה אנחנו רוצים לפנח מידע מוצפן שמוצפן בטכנולוגיה של 1.2 TLS TLS זה
המחליף של SSL היה SSL 1.2.3 ואז החליטו לשדרג אותו וקראו לזה tls אבל כולם קוראים לזה ssl אולי רק מישהו שמתקרצץ לכם ברעיון עבודה ישאל מה ההבדל אז תדעו שזה אותו דבר רק במקום לעשות ssl גרסה 4 עשו tls ואני אראה לכם בדיוק איך הוא עובד מאחורי הקלעים דבר ראשון שאני מראה לכם שבשכבה שאחרי tcp אמור להיות שכבת האפליקציה וכל המידע מוצפן הוא לא יכול לפענח אותו כי זה ג'יבריש אם
אתם ממש רוצים לראות את הג'יבריש על זה אתם יכולים לעשות packets bytes ממש לראות את הבתים איפה הפקטים קץ באץ שלי הנה הוא פה מתחבא לי למטה הנה הוא ואני רואה פה שזה ה-688 וזה פה המידע עצמו המוצפן המשמעות של זה אנחנו לא יודעים כי ערבבו לנו אותו בלבלו לנו אותו עם מפתח ההצפנה קליינט
כשהוא התחיל את התקשורת שימו לב אחרי שהוא עשה את ה-TCP ואמר אני רוצה לדבר איתך הוא אמר בסדר אני אדבר איתך גם אני רוצה לדבר איתך החליטו לנהל שיחה מסודרת בין שני הפורטים האלו ולאשר כל פעם שמגיע מידע זה כל ה-TCP בוא נגיע למידע עצמו ופה כבר נשלח המידע אחרי שהסשן כבר, מה שנקרא, התחיל.
איך מתחילה התקשורת של מידע תכלס? קליינט שולח Client.io בפרוטוקול של TLS, אתם רואים? עכשיו עזבו אתכם שזה פאקט מספר 1, הוא אישר לו שעד עכשיו הוא לא קיבל ממנו כלום, הוא מצפה ממנו לקבל פאקט ראשון, וכרגע שולח לו 517. דרך אגב, בגלל שהוא שולח לו פה 517 בתים, שורה מתחת הוא מאשר לו שהוא מחכה כבר ל-518
והמידע הגיע תקין. עכשיו בוא נעזוב את כל הנושא של TCP, נתרכז רק בשכבת ההצפנה, בשכבת האפליקציה. ואנחנו רואים שקליינט שולח ראשון בקשת TLS, קליינט הלו, אני רוצה לדבר איתך ב-TLS, ובוא נראה מה הוא מציג לשרת, מה הוא מציג לשרת.
הוא אומר לו שתומך בסוגי ההצפנות האלו, תכף אני אעיף את כל זה, כי זה לא מעניין אותי איך זה באמת היה במקור על הקו, אז אני פה מעיף את זה, בפאקט הראשון שהקליינט שלח לשרת.
הוא אומר, תקשיב, אני הקליינט, אני יודע להצפין בטכנולוגיות הבאות, זה מה שהדפדפן שלי יודע לעשות. כל הטכנולוגיות ההצפנה האלו, תבחר מהן משהו, זה מה שאני יודע, משהו אחר אני לא יודע.
הדפדפן שלי של חום יודע 17 טכנולוגיות הצפנה. עכשיו, חוץ מזה, אני רוצה גם להעביר לך מספר אקראי שבעזרתו נבנה מפתח חסודי בעתיד. עכשיו, המספר הזה הוא לא מוצפן ולא שום דבר, הוא עובר גלוי על הקו.
גם האקר יכול לראות אותו, וזה דרך אגב המספר שאנחנו גם רואים בקובץ של הלוג. דרך אגב, בואו נראה שהקובץ של הלוג באמת תפס לנו.
איפה הקובץ של הלוג? הנה הקובץ של הלוג, וזה Client Random. בואו נראה איפה הערך שלנו, של הפאקט הזה. עכשיו, אין לי מושג מה יש בתוך הפאקט.
אני עושה פה Edit, Find, עושה לו Paste, שיחפש את הערך הזה. אה, פה זה עם נקודתיים, ובקובץ הוא בלי נקודתיים.
אז בואו נמחק את הנקודתיים, אני ארשה לעצמי לחפש רק לפי הזנב. הנה, אתם רואים? זה זה. ואם תסתכלו טוב טוב, אתם רואים 82E00C, זה זה, זה בדיוק זה.
איך אני אראה לך? הנה, C00E82, E82C00, תראו שזה זה, בקיצור. זו את השורה, מה זה אומר? זה אומר שהדבדפן תפס את המפתח ההצפנה הזה, זה המפתח דרך אגב בסוף, זה המפתח ההצפנה שממנו הצפנו את כל התקשורת, ושם לי את זה בקובץ לוג.
יופי, הדבדפן עובד תקין. אנחנו רואים פה את המספר רנדומלי הראשון שעבר על הקו, בעזרתו בעתיד ניצור את המפתח הסודי עוד נדבר על זה בהמשך וזה כל מיני תוספות שהוא יודע להבין אותם אחד התוספים הכי חשובים זה Server Name בזכות התוסף הזה של Server Name אפשר לשים הרבה אתרי אינטרנט עם HTTPS על אותה כתובת IP. בואו נבין שקודם כל הוא
עושה TCP אחרי שהוא עשה את ה-TCP והקים סשן הוא מתחיל משא ומתן על הצפנה על SSL באיזה פרוטוקול נעבוד באיזה אלגוריתם נעבוד? בואו נבנה מפתח סימטרי, תביא לי תעודה דיגיטלית לבדוק את הזהות שלך.
אז כל המשא ומתן, כל ה-TLS Handshake מתבצע עכשיו. ורק אחרי שנסיים את המשא ומתן על ההצפנה, נתחיל לדבר ב-HTTP מוצפן. רק אז יהיה לנו גט עם שם האתר.
זאת אומרת שבשלב של TLS Handshake במשא מתן על הצפנה עוד לא ידוע לנו מה יהיה בעתיד הפקודה של גט לאתר זאת אומרת אנחנו בשלב הזה בכלל לא יודעים לאן הקליינט רוצה להתחבר לאיזה מאתרים הוא רוצה להתחבר על השרת שלי כרגע אנחנו רק מנהלים משא ומתן כיצד להצפין את המידע עם איזה מפתח הרי אנחנו לא יודעים מה יהיה המידע בהמשך איזה http get לאיזה אתר
נקבל בהמשך כי אנחנו עדיין בשלב של משא ומתן על ההצפנה אנחנו עוד לא מעבירים את המידע אז אנחנו לא יודעים לאיזה אתר אינטרנט בדיוק הלקוח רוצה לגלוש בשרת שלנו ואז אנחנו לא יודעים איזה תעודה דיגיטלית להביא לו כי למעשה אנחנו נביא לו תעודה דיגיטלית בפקט הבא של סרבר הלו הוא למטה ואנחנו עוד לא יודעים איזה
תעודה בכלל הסרבר צריך להציג לו כי המידע על הגלישה עדיין לא עבר ולכן עד שנת אני חושב 2003 היה בלתי אפשרי לשים כמה אתרי HTTPS על אותו שרת Web, על אותה כתובת IP. בזכות התוסף שנקרא Server Name הקליינט יכול לתת לי מראש לאיזה אתר הוא רוצה להתחבר כדי שאני כשרת אדע איזה תעודה דיגיטלית להציג לו.
אז לדוגמה Server Name Extension הזה הוא מאוד מאוד קריטי לי, הוא זה שפתר את הבעיה שמשא ומתן בעצם מתנהל לפני שעובר המידע. במובן שמדובר על מידע של HTTP-GET שאמור לעבור מוצפן ב-SSL מאוחר יותר.
בזכות התוסף הזה אני יודע מראש לאיזה אתר ווב הוא רוצה להתחבר. אני זוכר את הימים ההם שהיינו צריכים לכל אתר HTTPS להביא כתובת IP נפרדת ואתר HTTP רגילים, יכולנו לשים הרבה על אותו שרת כי שרת ה-S ידע לפי ה-GET,
לפי הבקשה של ה-GET, לדעת בדיוק מה הוא מבקש. הבעיה שמשא ומתן על התעודה מתבצע לפני הגט של HTTPS ויש תוספים שהם מסוכנים ובגרסה 1.3 ביטלו חלק מהתוספים כי יש בהם בעיית אבטחה או שהם לא מספיק חזקים באבטחה אז ב-1.3 יש גם תוספים רק חלק מהם בוטל פשוט רגע איפה היינו היינו בקליינט הלואו היינו עברנו על הזה הוא אומר תקשיב אני יודע לעבוד 1.2 אני לא יודע לעבוד 1.3 וזהו זה מה שהוא שלח לשרת
השרת צריך לבחון מתוך הסייפר סיוץ אלגוריתם ההצפנה שהוא רוצה חשוב לציין שהקליינט שולח את הרשימה הזאת לפי סדר העדיפויות שלו, את מה שהוא הכי מעדיף הקליינט שם למעלה ומה שהוא פחות מעדיף למטה יותר.
אז עדיף שהשרת יבחר את מה שהקליינט רוצה אבל הוא לא חייב. ובואו נראה מה הוא עושה, מה השרת עונה לי. קודם כל השרת אומר לי אין בעיה, קיבלתי ממך עד עכשיו 512 בתים והכל מצוין.
הנה עוד פעם הוא אומר אני קיבלתי ממך עד עכשיו 518 בתים, לא יודע למה הוא שולח את זה פעמיים, אה אני אגיד לכם למה, יש לו פה סגמנטציה, חלוקה לשני חלקים.
אתם רואים, בפאקט הראשון הוא סתם מאשר אותו ל-length 0, בפאקט השני הוא כבר שלח 1460 בתים, אבל 1460 בתים האלו שהוא שלח לא מספיקים לו להעביר את כל התוכן, אז הוא פירק אותו לחלקים, אתם רואים? חילק אותו לשני חלקים, ובפאקט מספר 220 הוא יראה לי אותם אחרי שהוא אסף את שני החלקים ביחד.
אז זה הפאקט הראשון שעבר לתקשורת, ויהיה בו חלק מהמידע, ואנחנו ממש יכולים לראות את החלק מהמידע הזה, שזה 1,460 בתים שאנחנו לא יודעים את המשמעות כי אנחנו צריכים את החלק השני, זה החלק השני שזה עוד 1,460 בתים ובהודעה 220 הוא עושה לנו חיבור מחדש, reassemble, מחבר לנו את הכל ביחד ויוצאת לנו הודעה, הנה זאת ההודעה האסופה,
אז תראו מה שבסוגריים מרובעים זה משהו שהווייר שאר כאילו עוזר לי, הוא לא אומר לי לך לבד תחבר את הדברים בידנית, אז יש לי פה שימו לב חיבור של כל ההודעה אחרי שהוא קיבל, חיבר לי את שלושת החלקים אנחנו יכולים לראות שהוא חיבר לי אתם רואים
את זה את זה ואת ה-220 החלק האחרון שהגיע אחרי שהוא חיבר את שלושת החלקים והכל הסתדר לו אז הוא נותן לי את הפירוש