אבטחת מחשבים ורשתות 203.4448 (2011) סמסטר חורף תשע”ב SSL/TLS – 10 הרצאה :עזר ספרות Dierks, Allen: The TLS Protocol. RFC 2246, 1999. Dierks, Rescorla: The Transport Layer Security Protocol (v1.2). RFC 5246, 2008. © אבטחת מחשבים ורשתות – חורף תשע”ב SSL – Secure Socket Layer ● ● ● ● ● 2 פרוטוקול שפותח ע”י חברת Netscapeבמטרה לאפשר גלישה בטוחה ברשת החל מ.1995- גרסא 1היא גרסת בטא שלא יצאה מהחברה ,וגרסא 2 שוחררה בפברואר .1995 כתוצאה ממספר בעיות אבטחה ,גרסא ,3פותחה ב1996- ע”י קוצ'ר ,קרלטון ופרייר. בשלב מאוחר יותר ,עבר פיתוח SSLלידי ה ,IETF-אשר שינה את שם הפרוטוקול ל) TLS-גרסא (1.0וערך מספר שינויים/שיפורים. נכון להיום ,גרסת הפרוטוקול העדכנית היא ,1.2אבל מרבית השרתים לא משתמשים בה באופן נפוץ )אם כי מומלץ שיעשו כך(. © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 מטרות הפרוטוקול ● ● ● ● ● 3 פרוטוקול SSLנועד לאפשר מסחר אלקטרוני בטוח. הרעיון הבסיסי הוא לאבטח את התעבורה בין משתמש לשרת ,כך שזהות השרת מאומתת באמצעים קריפטוגרפיים. זהות המשתמש עשויה להיות מאומתת באמצעים קריפטוגרפיים ,אבל הפרוטוקול אינו מחייב זאת )מה שדורש אימות המשתמש באמצעים אחרים(. כדי לאמת את השרת ,משתמשים בסרטיפיקטים ,אשר מאפשרים החלפת מפתחות קריפטוגרפיים בצורה בטוחה. מטעמי יעילות ל SSL/TLS-יש אופציה לנצל החלפות מפתח קודמות כדי לבצע את החלפת המפתח הנוכחית יעילה יותר. © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 דרישות מSSL/TLS- ● ● ● ● ● ● ● ● ● 4 אימות זהות השרת אימות אופציונאלי של הלקוח מהימנות )מבוססת על (TCP שלמות ואימות מקור הודעות )(MAC סודיות הודעות )הצפנה( דחיסה חסינות להתקפות Man in the middle גמישות בבחירת האלגוריתמים הקריפטוגרפיים פרוטוקול פשוט למימוש ואנליזה © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 שימושי SSL/TLS ● ● ● 5 מאז פיתוחו של ,SSL/TLSהוא הוכנס לשימוש נרחב הן בגלישה ברשת ,והן בפרוטוקולים אחרים. היתרונות הגדולים של אבטחה ברמת ה transport-הוא ששכבת האפליקציה כמעט לא רגישה לשינוי ,ובתמורה מקבלת אבטחה חזקה שאינה מפריעה לstateless- .packet filters עם זאת ,הפרוטוקול איננו מוגן כנגד התקפות ברמת ה IP-או ה) TCP-דוגמת syn attackאו .(IP spoofing © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 ( )במבט עלSSL Handshake Client Server ClientHello(version, cipher_suite, client_random, sid) ServerHello(version, cipher_suite, server_random, sid), Cert, [CertRequest] ClientKeyExchange, [Certificate], [CertVerify] ChangeCipherSpec FinishedClient ChangeCipherSpec FinishedServer המפתחות החלפת לפרוטוקול קשורות אינן ChaneCipherSpecה הודעות 9 הרצאה © אבטחת מחשבים ורשתות – חורף תשע”ב 6 ההודעה הראשונה ● ● ההודעה הראשונה בפרוטוקול נשלחת ע”י הלקוח היא מכילה את המידע: גרסת הפרוטוקול שהלקוח מריץ, רשימה של אלגוריתמים קריפטוגרםיים בהם תומך הלקוח )כולל הצפנה ואימות(, ערך רנדומי בן 256ביט ) (client_randomאשר משמש בהמשך לגזירת המפתחות, מזהה ה) session-שבשיחה הראשונה נשלח כ(0- 7 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 ההודעה השניה ההודעה השניה בפרוטוקול נשלחת ע”י השרת היא מכילה את המידע: גרסת הפרוטוקול שהשרת מריץ, האלגוריתמים שהשרת בחר )אמורים להיות החזקים ביותר מבין אלה שבחר הלקוח(. ערך רנדומי בן 256ביט ) (server_randomאשר משמש בהמשך לגזירת המפתחות, מזהה ה) session-שבשיחה הראשונה נשלח כ(0- השרת גם שולח את הסרטיפיקט שלו במקרה שהוא מעוניין באימות הלקוח ע”י סרטיפיקטים ,הוא גם יבקש את סרטיפיקט הלקוח. 8 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 ההודעה השלישית ההודעה השלישית בפרוטוקול נשלחת ע”י הלקוח אם הסרטיפיקט ששלח השרת תואם לשרת שהלקוח מעוניין לתקשר עימו ,הסרטיפיקט בתוקף )ולא בוטל!( וחתום ע”י CA מוכר ,הלקוח בוחר מחרוזת pre_master_secretבאורך 384ביט ומחשב את: = ClientKeyExchange )EpubServer(pre_master_secret במקרה של בקשת הסרטיפיקט מהלקוח ,הלקוח ישלח את הסרטיפיקט שלו ,ואת = CertVerify )SigClient (pre_master_secret, Msg1, Msg2 9 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 ההודעה השלישית )המשך( מה pre_master_secret-ושתי מחרוזות ה,random- גוזרים את המפתח הראשי להמשך הפרוטוקול master_secret = h(pre_master_secret, client_random, )server_random זהו מפתח סודי ומשותף בן 384ביט. הגנה משידור חוזר נובעת מהשימוש בערכי random שמשתנים בין ההרצות. מה master_secret-גוזרים את יתר המפתחות ,ואפילו את ה IVs-להמשך התקשורת. 10 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 המפתחות המעורבים מחושב ערך מפתח,master_secret-לאחר גזירת ה : אשר ממנו נגזרים המפתחות העיקריים,key_block ClientMAC, ServerMAC, ClientWrite, ServerWrite, כאשר key_block = h(master_secret, server_random, client_random) 10 הרצאה © אבטחת מחשבים ורשתות – חורף תשע”ב 11 ההודעה הרביעית לפני ההודעה הרביעית ,הלקוח שולח לשרת הודעת .ChangeCipherSuite לאחריה ,כל התעבורה בינו לבין השרת מוצפנת ומאומתת ע”י ClientWriteו.ClientMAC- ההודעה הרביעית ,היא האימות של הלקוח ,ושווה ל- = FinishedClient ))EClientWrite(MACClientMAC (Msg1, Msg2, Msg3 12 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 ההודעה החמישית לפני ההודעה החמישית ,השרת שולח ללקוח הודעת ,ChangeCipherSuiteהמאשרת את בקשת הלקוח. לאחריה ,כל התעבורה בינו לבין השרת מוצפנת ומאומתת ע”י ServerWriteו.ServerMAC- ההודעה החמישית ,היא האימות של השרת ,ושווה ל- = FinishedServer EServerWrite(MACServerMAC (Msg1, Msg2, Msg3, ))Msg4 13 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 SSL Abbreviated Handshake Client Server ClientHello(version, cipher_suite, client_random, sid) ServerHello(version, cipher_suite, server_random, sid) ChangeCipherSpec FinishedServer ChangeCipherSpec FinishedClient המפתחות החלפת לפרוטוקול קשורות אינן ChaneCipherSpecה הודעות 9 הרצאה © אבטחת מחשבים ורשתות – חורף תשע”ב 14 הגרסא המקוצרת במקרה שהלקוח והשרת כבר תיקשרו ביניהם ,הם יכולים לנסות להמשיך את ה session-הקודם. השרת בהודעה הראשונה שולח את ה sid-שנשלח ע”י השרת בפעם הקודמת שדיברו. אם השרת מעוניין להמשיך את ה session-עם אותו ,sid הוא עונה בחבילה שלו את ה sid-שנשלח ע”י הלקוח ,אחרת הוא עונה ע”י sidאחר )וממשיכים בהרצת הפרוטוקול הרגיל(. במקרה ששני הצדדים מעוניינים בהמשך ה,session- ממשיכים עם הפרוטוקול המקוצר. 15 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 הגרסא המקוצרת )המשך( שינוי אחד עיקרי הוא שהודעת החלפת המפתחות כבר לא דרושה. שינוי שני ,הוא שהשרת שולח את ההודעה השלישית )במקום הלקוח( ,וההודעה הרביעית נשלחת ע”י הלקוח. גזירת המפתחות משתמש ב master_secret-שרשום ב- ,sidאבל גם ב client_random,server_random-של החיבור הזה )שאמורים להיות שונים מהריצה הקודמת(. 16 © אבטחת מחשבים ורשתות – חורף תשע”ב הרצאה 10 (הגרסא המקוצרת )המשך המפתחות נגזרים לפי key_block = h(master_secret, client_random, server_random) כאשר FinishedServer = EServerWrite(MACServerMAC (Msg1, Msg2)) FinishedClient = EClientWrite(MACClientMAC (Msg1, Msg2, Msg3)) 10 הרצאה © אבטחת מחשבים ורשתות – חורף תשע”ב 17
© Copyright 2024