2.3 - הצפנות - הרצאה
הצפנה ברשתות מחשבים¶
למה צריך הצפנה ברשתות מחשבים?¶
בימינו, המידע שנע ברשתות מחשבים יכול להיות רגיש מאוד – החל מסיסמאות ועד מידע רפואי אישי, פרטי כרטיסי אשראי ועוד. רשתות מחשבים, במיוחד רשתות ציבוריות כמו אינטרנט, חשופות לאיומים כמו האקרים שיכולים להאזין לתעבורת המידע שלנו ולגנוב אותו. הצפנה נועדה להבטיח שהמידע שנע ברשת יהיה בלתי קריא למי שאין לו את הkey המתאים.
אם אנחנו לא משתמשים בהצפנה, כל אדם שיתפוס את המידע במהלך המסע שלו ברשת יכול לראות אותו. לדוגמה, אם אנחנו שולחים סיסמא באימייל או מבצעים רכישה באינטרנט, האקר יכול לעקוב אחרי התעבורה ולגלות את המידע האישי שלנו. הצפנה מבטיחה רק למי שצריך לגשת למידע (כמו השרת או הלקוח שלנו) את היכולת לפענח את המידע.
הצפנה סימטרית ולא סימטרית¶
הצפנה סימטרית¶
בצורת הצפנה זו, אותו key משמש הן לקיקוד (הצפנה) והן לפענוח המידע. כל אחד שמחזיק בkey יכול להצפין ולפענח את המידע, ולכן יש צורך לוודא שהkey נשאר בטוח בין השולח למקבל.
דוגמה פשוטה: נניח שאני רוצה לשלוח לך הודעה מוצפנת. אני משתמש בkey סודי להצפנה. אתה, עם הkey הזה, תוכל לפענח את ההודעה ולקרוא אותה. הבעיה היא שהkey צריך להיות מועבר בצורה בטוחה בין השניים, כי אם מישהו יוכל לגנוב את הkey, הוא יוכל לקרוא את ההודעה.
דוגמה טכנית (ב-OpenSSL): בכדי להחיל הצפנה סימטרית עם OpenSSL, אפשר להשתמש בפקודה הבאה:
בפקודה זו אנחנו מצפינים את הקובץ myfile.txt עם אלגוריתם AES בגודל key של 256 סיביות, ויוצרים את הקובץ המוצפן myfile.enc.
הצפנה לא סימטרית¶
בצורת הצפנה זו, יש שני keys שונים: הkey הציבורי וkey פרטי. הkey הציבורי משמש להצפנה, והkey הפרטי משמש לפענוח. הkey הציבורי ניתן לכל אחד להשתמש בו להצפין את המידע, אך רק בעל הkey הפרטי יכול לפענח אותו.
דוגמה: נניח שאני רוצה לשלוח לך הודעה מוצפנת, ואני שולח לך את הkey הציבורי שלי. כל מי שיש לו את הkey הציבורי שלי יכול להצפין את ההודעה ולשלוח אותה אלי. אך רק אני, עם הkey הפרטי שלי, יכול לפענח אותה ולקרוא את ההודעה.
דוגמה טכנית (ב-OpenSSL): כדי להצפין עם הkey הציבורי, נשתמש בפקודה:
כדי לפענח את הקובץ, נשתמש בkey הפרטי:
הצפנת SSL¶
SSL (Secure Sockets Layer) היא טכניקת הצפנה שמיועדת להבטיח את פרטיות המידע בזמן שהוא עובר ברשת. SSL מספקת תקשורת מאובטחת בין הלקוח לשרת באמצעות הצפנה של המידע שמועבר בין הצדדים.
SSL פועל ברמה בין שכבת התעבורה לשכבת האפליקציה. זה אומר שהוא לא משנה את המידע עצמו, אלא מספק שכבת אבטחה שמצפינה את המידע המועבר בין הלקוח לשרת. SSL משמש, לדוגמה, בהעברת נתונים דרך HTTPS, אך הוא גם נמצא בשימוש פרוטוקולים אחרים כמו FTPS ו-IMAPS.
דוגמה טכנית (OpenSSL): כדי להפעיל שרת SSL באמצעות OpenSSL, אנחנו צריכים ליצור certificate (תעודה) שמאמת את זהות השרת.
- יצירת key פרטי:
- יצירת תעודה עצמית:
openssl req -new -key private.key -out server.csr
openssl x509 -req -in server.csr -signkey private.key -out server.crt
- הגדרת SSL בשרת (למשל ב-Apache או Nginx) תדרוש להגדיר את הkeys והצפנה כדי לאפשר חיבור מאובטח.
הצפנת TLS¶
הצפנת TLS (Transport Layer Security) הוא פרוטוקול הצפנה שפותח כגרסה משודרגת ל-SSL. והוא לא שונה באופן עקרוני מ-SSL, אך יש לו יכולת הצפנה יותר חזקה ושיפורים נוספים בביצועים ובאבטחה. כיום, כמעט כל התקשורת המאובטחת באינטרנט מתבצעת באמצעות TLS במקום SSL.
פרוטוקול TLS מאפשר הצפנה ברמה גבוהה יותר, והוא משמש כמעט בכל אתר אינטרנט שמבצע תקשורת מאובטחת עם המשתמשים. TLS מתפקד בצורה דומה ל-SSL, ומספק את ההגנה הנדרשת לעסקאות מאובטחות, חיבורים פרטיים והגנה על מידע רגיש.
דוגמה טכנית (TLS עם OpenSSL): כדי לבדוק את החיבור המאובטח של שרת בעזרת TLS, אפשר להריץ את הפקודה הבאה:
הפקודה מתחברת לשרת www.example.com דרך פורט 443 (הפורט המשמש ל-TLS) ומבצעת את תהליך ההצפנה והחיבור המאובטח.
סרטיפיקטים (Certificates)¶
סרטיפיקט הוא קובץ דיגיטלי שמאמת את זהות השרת (או הלקוח) ברשת. הסרטיפיקט מכיל את הkey הציבורי של השרת, פרטי מזהה של השרת, ותעודת מאמתת (CA - Certificate Authority) שמאשרת את האותנטיות של הסרטיפיקט.
כדי להשתמש ב-TLS, השרת חייב להציג סרטיפיקט המהווה הוכחה שהוא באמת השרת שהוא טוען להיות. סרטיפיקטים יכולים להיות מבוקשים באופן עצמי (Self-Signed) או להיות מונפקים על ידי סמכות מאמתת (CA).
דוגמה:
- הלקוח בודק אם הסרטיפיקט שנשלח מהשרת מתאים למידע שלו.
- הלקוח בודק את שרשרת האימות של הסרטיפיקט עם ה-CA כדי לוודא שהשרת אמין.
סיכום¶
הצפנה היא אבן יסוד באבטחת רשתות מחשבים, במיוחד בעידן שבו כל המידע שלנו נע ברשתות מחשבים. הצפנה סימטרית מצריכה key משותף לשני הצדדים, בעוד הצפנה לא סימטרית משתמשת בkey ציבורי וkey פרטי. SSL ו-TLS הן טכניקות הצפנה שנמצאות בשימוש נרחב באינטרנט כדי להבטיח את פרטיות המידע בזמן שהוא מועבר בין הלקוח לשרת.
באמצעות כלים כמו OpenSSL, ניתן ליצור keys, סרטיפיקטים ולבצע הצפנה/פענוח בצורה מאובטחת. כל זה מסייע להבטיח שהמידע שנע ברשת יהיה בטוח ופרטי, מבלי לחשוש מאיומים של האקרים.