SSL

היסטוריה של TLS

פרוטוקול TLS זהה לפרוטוקול SSL גרסה 3, למעט מספר הבדלים מינוריים, בעיקר הטיפול בקוד אימות מסרים (הוספת HMAC) ושיטת גזירת המפתח. ב-TLS מפתח השיחה הוא פונקציה פסאודו-אקראית (PRF) של תוכן סודי אקראי שנוצר על ידי שני הצדדים במשותף. כמו כן מספר אלגוריתמים קריפטוגרפיים הוכרזו כמנדטוריים כמו פרוטוקול דיפי-הלמן, DSA ו-AES. גוף התקינה IETF המליץ על TLS גרסה 1.0 ב-1999 בהצעה RFC 2246 כשדרוג של SSL גרסה 3. ב-2006 פורסמה גרסה 1.1 ונכון לשנת 2015, הגרסה העדכנית היא TLS 1.2 לפי RFC 5246 שהוצעה באוגוסט 2008. ביוני 2015 פורסמה טיוטה TLS 1.3 שנכנסה לשימוש ב2018.

תמיכה בגרסאות

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

Datagram Transport Layer Security

פרוטוקול DTLS הוא הרחבה של פרוטוקול TLS לרשת תקשורת מיתוג מנות. הפרוטוקול מעוצב כך שהוא מאפשר זרימה של הנתונים בשיטת דטא-גרם. אבל צריך להביא בחשבון סידור מחדש או איבוד חבילות. הגרסה 1.2 של פרוטוקול DTLS פורסמה ב-2012 בהצעה RFC 6347 ונועדה לעבודה עם פרוטוקול UDP. גרסת DCCP מ-2008 נקראת RFC 5238. הצעה RFC 6083 עבור פרוטוקול SCTP והצעה RFC 5764 לפרוטוקול Secure Real-time Transport Protocol.
DTLS 1.1 מבוסס על TLS 1.1 ו-DTLS 1.2 מבוסס על TLS 1.2.

ביטחון

קיים קונצנזוס בין מומחי הצפנה שפרוטוקול SSL/TLS גרסה 3.0 אינו מכיל פגמים מהותיים. אף על פי שגרסאות ייצוא של הפרוטוקול (שריד מתקופת מגבלות הייצוא של ממשלת ארצות הברית על טכנולוגיות ההצפנה) עדיין נתמכות ושימוש לא נכון בהם עלול לגרום לנקודות תורפה. במרץ 2015 דווחה ההתקפה FREAK (בהמשך) המנצלת בדיוק חולשה זו כדי לפרוץ את הפרוטוקול.
דניאל בלייכבכר פרסם ב-1998 התקפת מוצפן-נבחר כנגד הפרוטוקול שנקראת "התקפת מיליון המסרים". הוא הראה שאפשר לחשוף את המפתח הסודי pre_master_secret בתוך  הודעות ClientKeyExchange. הרעיון הוא שתשתית מפתח ציבורי PKCS#1 של RSA שנעשה בה שימוש כחלק מתהליך לחיצת היד, מחייבת ריפוד המסר לפני ההצפנה בהתאם לתקן. אם המסר לא מפורמט נכון מוחזרת הודעת שגיאה כך שהתוקף יכול באמצעות ניסוי וטעייה לנחש את סיביות המפתח רק מהודעות השגיאה החוזרות. ההתקפה תצליח בתנאי שניתן להבחין בהודעת Alert שנוצרה עקב פורמט RSA שגוי לבין תקלות אפשריות אחרות. הפתרון במקרה זה ברור, יש לאפשר לשרת להמשיך לבצע את תהליך לחיצת היד בשלמותו גם אם פורמט RSA שגוי ולהחזיר הודעת שגיאה כללית רק בסוף התהליך. זאת במטרה שלא לאפשר לתוקף להבחין בין סוגי השגיאות. מסיבה זו יישום נכון קריטי להבטחת אמינות הפרוטוקול וחוסנו.

התקפות

להלן רשימה חלקית של התקפות ידועות מהתקופה האחרונה נגד פרוטוקול SSL/TLS והפתרונות שלהן.

BEAST

התקפת Browser Exploit Against SSL/TLS היא "התקפת גלוי-נבחר" בשיטת אדם באמצע לניחוש מפתח השיחה, שהתגלתה ב-2011 על ידי תאי דואונג וג'וליאנו ריזו. השיטה מנצלת חולשה ב-SSL/TLS גרסת 1.0 שבה וקטור האתחול של חבילות מידע מוצפנות היה תוצאת הצפנה של חבילה קודמת. החוקרים הדגימו באמצעות תוכנת "רחרוח" (sniffing) וקוד JavaScript קצר איך התוקף מחלץ וקטור אתחול מהעוגיות, מזריק מידע כלשהו לבקשות מוצפנות מנסה לנחש טקסטים גלויים כלשהם ומחפש התאמה לטקסט המוצפן בית אחר בית. ההתקפה מוסתרת על ידי מיזוג ההודעות הזדוניות עם הודעות הקורבן. את קוד ה-Java אפשר להסתיר בשרותי פרסום בתוך דף האינטרנט. בתוך כחצי שעה של האזנה לחיבור מוצפן עם כמות מסוימת של טקסטים מוצפנים שמקורם ידוע, התוקף יכול לפצח עוגיות מוצפנות, בקשות מוצפנות ובעצם להשתלט על השיחה. TLS בגרסאות העדכניות אינו מאפשר התקפה זו כיוון שוקטור האתחול נפרד כעת.

CRIME

CRIME ראשי תיבות Compression Ratio Info-leak Made Easy היא התקפת סייבר שהתגלתה ב-2012 על ידי מפתחי BEAST, המנצלת פרצת אבטחה בעוגיות מאובטחות. כאשר ההתקפה מנוצלת להשגת עוגיות המכילות מידע של אימות זהות סודיות, היא מאפשרת למתקיף לבצע "חטיפת שיחה" על שרת אינטרנט מאובטח, המאפשרת אז לבצע התקפות נוספות. ההתקפה היא שילוב של גלוי-נבחר ודליפת מידע בתהליך הדחיסה של הרשומות. היא מסתמכת על יכולת המתקיף לראות את גודל המידע הדחוס בבתים. על ידי ניתוח שינויים בשיעור הדחיסה של טקסטים שונים שהמתקיף מנחש, אפשר ללמוד על תוכן המידע בשיטת הפרד ומשול.

POODLE

POODLE (ראשי תיבות של: Padding Oracle On Downgraded Legacy Encryption) היא התקפת סייבר שהתגלתה על ידי בודו מולר (Bodo Möller), ת'אי דואונג (Thai Duong) וקריסטוף קוטוויץ' (Krzysztof Kotowicz) מצוות האבטחה של חברת גוגל שדיווחו עליה בפומבי באוקטובר 2014. זוהי התקפה מסוג התקפת אדם באמצע המבוססת על אורקל ריפוד נגד SSL 3.0 והיא ישימה כנגד פרוטוקול TLS בשל אופציית Fallback המאפשרת ירידה בגרסה ל-SSL. ההתקפה ניצלה 256 בקשות SSL כדי לנחש בית אחד מהמסר המוצפן. בין יתר הפתרונות האפשריים, הפתרון הטוב ביותר הוא למנוע לגמרי ירידה לגרסה SSL 3.0 הישנה על ידי הוספת טלאי (patch) שנקרא על ידי גוגל TLS_FALLBACK_SCSV.

FREAK

במרץ 2015 דווחה ההתקפה FREAK קיצור של Factoring RSA Export Keys. זוהי התקפת אדם באמצע שמתמקדת בתאימות גרסאות SSL. בגלל כשלים חמורים בגרסה 2 של הפרוטוקול, מתאפשר לתוקף לאלץ שימוש בגרסה מוחלשת (ישנה) מה שקרוי "שינמוך" לגרסת ייצוא של מפתח RSA בגודל 512 סיביות שאותה קל לפרק לגורמים בימינו בכוח גס על מחשב רגיל. הדרך למנוע התקפה זו היא להטמיע תבנית ייחודית מסוימת בערך האקראי המשמש לריפוד המסר בגרסה PKCS#1. בדרך זו השרת יכול להבחין בקלות בלקוח המבקש הורדה בגרסה אף על פי שהוא תומך בגרסה מתקדמת יותר.

התקפת בר מצווה

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