1 / 18

הגנה במערכות מתוכנתות

הגנה במערכות מתוכנתות. תרגול 12 – אבטחה ברמת התובלה – SSL/TLS. הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד. אבטחה ברמת התובלה. SSL – Secure Socket Layer ( Netscape, 1994 ) נדרש להבחין בין חבילות מוגנות ע"י SSL וחבילות שאינן מוגנות על-ידו

ita
Télécharger la présentation

הגנה במערכות מתוכנתות

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. הגנה במערכות מתוכנתות תרגול 12 – אבטחה ברמת התובלה – SSL/TLS הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד.

  2. אבטחה ברמת התובלה • SSL – Secure Socket Layer (Netscape, 1994) • נדרש להבחין בין חבילות מוגנות ע"י SSL וחבילות שאינן מוגנות על-ידו • הקצאת מספר פורט שונה • http מעל SSL:פורט 443 • http רגיל: פורט 80 • גרסה נוכחית: 3.0 • TLS (Transport Layer Security) הגנה במערכות מתוכנתות - תרגול 12

  3. יתרונות וחסרונות • כותב האפליקציה לא צריך להתעסק בכתיבת שירותי אבטחה • פונה לשכבת ה-SSL כדי לקבל אותם • הפרוטוקול נהנה משירותי המהימנות של TCP. • מתאים לשימוש עם Packet Filtering Firewalls. • TCP/IP headers לא מוצפנים על-ידו – PF Firewall יכול לבחון אותם • מצד שני המידע המועבר בהם חשוף, ולא מוגן מפני התקפות הגנה במערכות מתוכנתות - תרגול 12

  4. שירותי אבטחה של SSL 3.0 • אימות זהות השרת • אימות הדדי של השרת והלקוח (אופציונלי) • מהימנות (Reliability) • מסתמך על TCP • שלמות ואימות ההודעות • ע"י חישוב MAC • סודיות ההודעות • באמצעות הצפנות • דחיסה הגנה במערכות מתוכנתות - תרגול 12

  5. מבנה פרוטוקול SSL אימות השרת (אופציונלית גם הלקוח), בניית ה-state • מורכב מארבעה תתי פורטוקולים, אשר נמצאים בשתי שכבות: הודעה לצד השני כי עליו לשנות state SSL פרוטוקול להעברת הודעות שגיאה הגנה על האפליקציה ועל תתי הפרוטוקולים האחרים הגנה במערכות מתוכנתות - תרגול 12

  6. SSL State • המידע המשמש לביצוע ההצפנה והאימות ע"י ה-SSL Record Protocol. • נבנה ע"י פרוטוקול ה-Handshake, שבו נתמקד. • מכיל: • אלגוריתם הצפנה • אלגוריתם עבור MAC • אלגוריתם דחיסה • שני IVs • שני מספרים סידוריים • ארבעה מפתחות סימטריים • ClientWrite • ServerWrite • ClientMAC • ServerMac אחד עבור חבילות הנשלחות ע"י הלקוח, ואחד עבור אלה הנשלחות ע"י השרת הגנה במערכות מתוכנתות - תרגול 12

  7. SSL Full Handshake • חמש הודעות שבסופן נוצר ה-state. Client Server ClientHello(version, cipher_suites, client_random, sid) Msg1: ServerHello(version, cipher_suite, server_random, sid), Cert, [CertRequest] Msg2: ClientKeyExchange, [Certificate],[CertVerify] Msg3: ChangeCipherSpec Msg4: FinishedClient רק אם יש צורך בבניית State חדש ChangeCipherSpec Msg5: FinishedServer הגנה במערכות מתוכנתות - תרגול 12

  8. הודעה ראשונה בשלב זה נתעלם מ-sid ונניח שערכו שווה ל-0 Client Server • יוזם הקשר ב-SSL הוא הלקוח. • version – גרסת SSL שהלקוח מריץ (למשל 3.0) • cipher_suites – רשימת cipher_suite בהם הלקוח תומך ומוכן להשתמש • כל אחד כולל אלגוריתם הצפנה ואלגוריתם MAC • client_random – מספר אקראי בן 256 סיביות • יעשה בו שימוש לגזירת המפתחות. ClientHello(version, cipher_suites, client_random, sid) Msg1: הגנה במערכות מתוכנתות - תרגול 12

  9. הודעה שניה בשלב זה נתעלם מ-sid ונניח שערכו שווה ל-0 Client Server • version – גרסת SSL בה ישתמשו • בד"כ "המכנה המשותף" בין השרת והלקוח • cipher_suite – נבחר מבין אלה שהלקוח הציע • השרת יבחר את החזק ביותר שהוא תומך בו • server_random – מספר אקראי בן 256 סיביות • יעשה בו שימוש לגזירת המפתחות. • Cert – סרטיפיקט של השרת (כולל את המפתח הפומבי שלו) • CertRequest – אופציונאלי במידה והשרת מעוניין באימות הלקוח. ServerHello(version, cipher_suite, server_random, sid), Cert, [CertRequest] Msg2: הגנה במערכות מתוכנתות - תרגול 12

  10. הודעה שלישית Client Server • הלקוח בודק את הסרטיפיקט שקיבל. • אם תקין, מייצר pre_master_secret • מספר אקראי באורך 384 סיביות (48 בתים) • מחשב ושולח לשרת את: ClientKeyExchange = EPubServer(pre_master_secret) ClientKeyExchange, [Certificate],[CertVerify] Msg3: הגנה במערכות מתוכנתות - תרגול 12

  11. הודעה שלישית - המשך Client Server • אם השרת ביקש לאמת את הלקוח: • הלקוח שולח בחזרה את הסרטיפיקט שלו ואת CertVerify, כאשר: CertVerify = SigClient(pre_master_secret, Msg1,Msg2) • הערה: משתמשים באלגוריתם חתימה בטוח: תוקף לא יכול לגלות את pre_master_secret מתוך CertVerify. • לא ניתן לבצע התקפת שידור חוזר על CertVerify, כיוון ש-Msg1 ו-Msg2 כוללות את client_random ואת server_random. ClientKeyExchange, [Certificate],[CertVerify] Msg3: הגנה במערכות מתוכנתות - תרגול 12

  12. עכשיו אפשר לחשב מפתחות • client_random, server_random עברו באופן גלוי. • pre_master_secret עבר באופן סודי. master_secret =h(pre_master_secret, client_random, server_random) • מחרוזת בגודל 384 סיביות. (מוגנת מפני שידור חוזר) • יתר המפתחות וה-IVs נגזרים מתוך ה-master_secret. • יוצרים מחרוזת key_block שאורכה גדול מסכום אורכי ארבעת המפתחות ושני ה-IVs: key_block = h(master_secret, server_random, client_random) • הסיביות הראשונות ישמשו ל-ClientMAC, אלה שאחריהן ל-ServerMAC, וכו'. הגנה במערכות מתוכנתות - תרגול 12

  13. לפני המשך הפרוטוקול... Client Server • הודעה זו אינה חלק מפרוטוקול ה-Handshake • הלקוח מודיע לשרת שכל ההודעות בהמשך יאובטחו ע"י המפתחות ClientWrite ו-ClientMAC עליהם הוסכם ב-State. ChangeCipherSpec הגנה במערכות מתוכנתות - תרגול 12

  14. הודעה רביעית Client Server • הודעה מוגנת ע"י ה-State • כוללת אימות של כל ההודעות שנשלחו ב-Handshake עד כה • לא כולל ההודעה הנוכחית והודעת ה-ChangeCipherSpec. FinishedClient=EkClientWrite(MACkClientMAC(Msg1,Msg2,Msg3)) • השרת יכול לוודא שהלקוח גזר את המפתחות הנכונים, ולכן הוא הלקוח האמיתי. Msg4: FinishedClient הגנה במערכות מתוכנתות - תרגול 12

  15. לפני המשך הפרוטוקול... Client Server • הודעה זו אינה חלק מפרוטוקול ה-Handshake • השרת מודיע ללקוח שכל ההודעות בהמשך יאובטחו ע"י המפתחות ServerWrite ו-ServerMAC עליהם הוסכם ב-State. ChangeCipherSpec הגנה במערכות מתוכנתות - תרגול 12

  16. הודעה חמישית Client Server • דומה להודעה שנשלחת ע"י הלקוח: FinishedServer=EkServerWrite(MACkServerMAC(Msg1, Msg2,Msg3,Msg4)) • הלקוח יכול לוודא שהשרת גזר את המפתחות הנכונים, ולכן הוא השרת האמיתי. Msg5: FinishedServer הגנה במערכות מתוכנתות - תרגול 12

  17. הפעלה מקוצרת של הפרוטוקול • ניתן לנצל master_secret שחושב בהרצה קודמת כדי לקצר את הפרוטוקול. (דורש לזכור אותו...) • זוכרים את sid? • מזהה את ה-session בין הלקוח לשרת • פרמטר באורך של עד 32 בתים הגנה במערכות מתוכנתות - תרגול 12

  18. SSL Abbreviated Handshake • נחסכה ההודעה השלישית מהפרוטוקול המלא. • מוותרים על Cert ועל CertRequest בהודעה השניה. • סדר שליחת הודעות ה-Finished התחלף. Client Server ClientHello(version, cipher_suites, client_random, sid10) Msg1: ServerHello(version, cipher_suite, server_random, sid2=sid1) Msg2: ChangeCipherSpec Msg3: FinishedServer ChangeCipherSpec Msg4: FinishedClient הגנה במערכות מתוכנתות - תרגול 12

More Related