כיום יותר אנשים מחוברים לאינטרנט מאי פעם – ומיותר מקומות.
יש לנו חיבור באמצעות מחשבים ניידים, טלפונים וטאבלטים, ובקרוב סביר להניח שבקרוב גם מספיק תהיה לנו אביזרים ומכשירים אישיים. אנחנו ניגשים לאינטרנט מרשתות לא מהימנות ולפעמים אפילו מרשתות עוינות. מכיוון שחלק גדול מהחיים שלנו עובר לאינטרנט, יש חשיבות רבה להגן על הנתונים שלנו ועל הנתונים של המשתמשים שלנו.
מעל לכל, כמפתחים, עלינו להבין את הצורך והמעשיות של SSL.
מה זה SSL? זהו פרוטוקול שנקרא Secure Sockets Layer, והוא פרוטוקול קריפטוגרפי שמיועד לספק אבטחת תקשורת באינטרנט. כך מובטחת שמירה על פרטיות, באמצעות הצפנה ותקינות, למניעת מעקב לא רצוי או גרימת נזק בחיבור לאינטרנט. ל-SSL יש חסרונות, אבל זוהי הדרך העיקרית – ולמעשה הדרך היחידה – להבטיח אבטחת תקשורת נתונים כלשהי באינטרנט.
לפי הבהוב SSL, לפני שנה היו לנו פחות מ-15% מהאימוץ של SSL; עכשיו אנחנו משתמשים ביותר מ-50%.
שני ראשי תיבות:
TLS (אבטחת שכבת התעבורה): לרוב ה-Intents והמטרות זהות ל-SSL. ליתר דיוק, השם של SSL 3.1 שונה ל-TLS, ו-TLS הוא השם הסטנדרטי של IETF. אבל הם ניתנים להחלפה!
HTTPS: זהו HTTP ב-SSL, כלומר שכבות של יכולות האבטחה של SSL ו-HTTP סטנדרטי. ראשית, לחיצת היד של השרת-הלקוח, באמצעות קריפטוגרפיה של מפתח ציבורי/פרטי כדי ליצור מפתח משותף - משמש את החלק השני של פרוטוקול SSL להצפנת התקשורת.
רישות באינטרנט עשויה להרגיש בטוחה, מיידית ומהירה. אנחנו מרגישים שאנחנו פונים ישירות לאתר. אבל למעשה, אין זה חיבור ישיר. התקשורת שלנו עוברת דרך נתב Wi-Fi, ספק אינטרנט ושרתי Proxy מתווכים אחרים שעשויים להיות מתווכים בין המכשיר שלכם לאתר. בלי HTTPS, כל התכתובות יהיו בטקסט פשוט.
הבעיה היא שלעיתים נדירות משתמשים מקלידים כתובת URL מלאה שמציינת HTTPS – או שהם לוחצים על קישור באמצעות HTTP. גרוע מכך, יש אפשרות לטעון התקפה מסוג (wo)man-in-the-middle ולהחליף את HTTPS ב-HTTP. בדיוק בשביל זה קיימת כלי בשם SSLstrip שהושק בשנת 2009. Firesheep, משנת 2010, האזין עכשיו לרשתות Wi-Fi פתוחות עבור קובצי cookie שנשלחים באופן ברור: כלומר, אפשר היה להאזין לצ'אט או להתחבר לחשבון Facebook של מישהו.
אבל SSL הוא (יחסית) זול, מהיר וקל לפריסה (עיין בספר של ssllabs.com ושל איליה גריגוריק, High Performance Browser Networking). לשימוש לא מסחרי, אפשר אפילו לקבל אישורים בחינם מהכתובת startssl.com! מטרת הצמדת מפתח ציבורי היא לספק למפעילי אתרים אמצעים להגביל את רשויות האישורים שיכולות להנפיק אישורים לאתרים שלהם בפועל.
"בינואר השנה (2010), Gmail עבר להשתמש ב-HTTPS עבור הכל כברירת מחדל. .. כדי לעשות זאת, לא היה צורך לפרוס מכונות נוספות או חומרה מיוחדת. במכונות החזיתיות של הייצור שלנו, ה-SSL מהווה פחות מ-1% מעומס המעבד (CPU), פחות מ-10KB של זיכרון לכל חיבור ופחות מ-2% מתקורת הרשת...
אם מפסיקים לקרוא עכשיו, צריך לזכור רק דבר אחד: SSL כבר לא יקר יותר מבחינת חישוב".
– חריגה של SSL, אדם לאנגלי (Google)
לסיום, כמה באגים שאנחנו נתקלים בהם בדרך כלל:
- תוכן מעורב: אתרים המשתמשים ב-HTTP וגם ב-HTTPS. המשתמש מתעצבן כי הוא צריך ללחוץ על לחצן הרשאה כדי לטעון תוכן. (למעשה, Chrome ו-Firefox חוסמים תוכן מעורב ממסגרות iframe). צריך לוודא שכל המשאבים בדף HTTPS נטענים באמצעות HTTPS. כדי לעשות את זה צריך להשתמש בכתובות URL יחסיות או יחסיות של סכימה, לדוגמה
<style src="//foo.com/style.css"> - קובצי cookie לא מאובטחים: נשלחים באופן ברור דרך חיבור HTTP. כדי להימנע מכך, אפשר להגדיר את המאפיין המאובטח בכותרות של קובצי cookie. תוכלו גם להשתמש בכותרת חדשה מסוג "Strict Transport Security" כדי לדרוש אבטחה ב-SSL Transport Security (HSTS).
חטיפות דסקית
- אם חשוב לכם לשמור על הפרטיות והשלמות של נתוני המשתמשים, עליכם להשתמש ב-SSL. הוא מהיר יותר, קל יותר וזול יותר מתמיד.
- יש להימנע משגיאות הטמעה נפוצות, כמו באגים בתוכן מעורב או אי-הגדרה של הביטים הנכונים של כותרת ה-HTTP.
- מומלץ להשתמש בכתובות URL יחסיות או בסכמה של כתובות URL יחסיות.
- הנה כמה מהדברים המגניבים החדשים, כמו HSTS והצמדת אישורים
Slides: יש לך SSL?