לדלג לתוכן

2.3 הצפנות הרצאה

הצפנה ברשתות מחשבים

למה צריך הצפנה ברשתות מחשבים?

בימינו, המידע שנע ברשתות מחשבים יכול להיות רגיש מאוד – החל מסיסמאות ועד מידע רפואי אישי, פרטי כרטיסי אשראי ועוד. רשתות מחשבים, במיוחד רשתות ציבוריות כמו אינטרנט, חשופות לאיומים כמו האקרים שיכולים להאזין לתעבורת המידע שלנו ולגנוב אותו. הצפנה נועדה להבטיח שהמידע שנע ברשת יהיה בלתי קריא למי שאין לו את המפתח המתאים.

אם אנחנו לא משתמשים בהצפנה, כל אדם שיתפוס את המידע במהלך המסע שלו ברשת יכול לראות אותו. לדוגמה, אם אנחנו שולחים סיסמא באימייל או מבצעים רכישה באינטרנט, האקר יכול לעקוב אחרי התעבורה ולגלות את המידע האישי שלנו. הצפנה מבטיחה רק למי שצריך לגשת למידע (כמו השרת או הלקוח שלנו) את היכולת לפענח את המידע.

הצפנה סימטרית ולא סימטרית

הצפנה סימטרית

בצורת הצפנה זו, אותו מפתח (key) משמש הן לקיקוד (הצפנה) והן לפענוח המידע. כל אחד שמחזיק במפתח יכול להצפין ולפענח את המידע, ולכן יש צורך לוודא שהמפתח נשאר בטוח בין השולח למקבל.

דוגמה פשוטה: נניח שאני רוצה לשלוח לך הודעה מוצפנת. אני משתמש במפתח סודי להצפנה. אתה, עם המפתח הזה, תוכל לפענח את ההודעה ולקרוא אותה. הבעיה היא שהמפתח צריך להיות מועבר בצורה בטוחה בין השניים, כי אם מישהו יוכל לגנוב את המפתח, הוא יוכל לקרוא את ההודעה.

דוגמה טכנית (ב-OpenSSL): בכדי להחיל הצפנה סימטרית עם OpenSSL, אפשר להשתמש בפקודה הבאה:

openssl enc -aes-256-cbc -salt -in myfile.txt -out myfile.enc

בפקודה זו אנחנו מצפינים את הקובץ myfile.txt עם אלגוריתם AES בגודל מפתח של 256 סיביות, ויוצרים את הקובץ המוצפן myfile.enc.

הצפנה לא סימטרית

בצורת הצפנה זו, יש שני מפתחות שונים: מפתח ציבורי ומפתח פרטי. המפתח הציבורי משמש להצפנה, והמפתח הפרטי משמש לפענוח. המפתח הציבורי ניתן לכל אחד להשתמש בו להצפין את המידע, אך רק בעל המפתח הפרטי יכול לפענח אותו.

דוגמה: נניח שאני רוצה לשלוח לך הודעה מוצפנת, ואני שולח לך את המפתח הציבורי שלי. כל מי שיש לו את המפתח הציבורי שלי יכול להצפין את ההודעה ולשלוח אותה אלי. אך רק אני, עם המפתח הפרטי שלי, יכול לפענח אותה ולקרוא את ההודעה.

דוגמה טכנית (ב-OpenSSL): כדי להצפין עם המפתח הציבורי, נשתמש בפקודה:

openssl rsautl -encrypt -inkey public.pem -pubin -in myfile.txt -out myfile.enc

כדי לפענח את הקובץ, נשתמש במפתח הפרטי:

openssl rsautl -decrypt -inkey private.pem -in myfile.enc -out myfile.dec

הצפנת SSL

SSL (Secure Sockets Layer) היא טכניקת הצפנה שמיועדת להבטיח את פרטיות המידע בזמן שהוא עובר ברשת. SSL מספקת תקשורת מאובטחת בין הלקוח לשרת באמצעות הצפנה של המידע שמועבר בין הצדדים.

SSL פועל ברמה בין שכבת התעבורה לשכבת האפליקציה. זה אומר שהוא לא משנה את המידע עצמו, אלא מספק שכבת אבטחה שמצפינה את המידע המועבר בין הלקוח לשרת. SSL משמש, לדוגמה, בהעברת נתונים דרך HTTPS, אך הוא גם נמצא בשימוש פרוטוקולים אחרים כמו FTPS ו-IMAPS.

דוגמה טכנית (OpenSSL): כדי להפעיל שרת SSL באמצעות OpenSSL, אנחנו צריכים ליצור certificate (תעודה) שמאמת את זהות השרת.

  1. יצירת מפתח פרטי:
openssl genpkey -algorithm RSA -out private.key
  1. יצירת תעודה עצמית:
openssl req -new -key private.key -out server.csr
openssl x509 -req -in server.csr -signkey private.key -out server.crt
  1. הגדרת SSL בשרת (למשל ב-Apache או Nginx) תדרוש להגדיר את המפתחות והצפנה כדי לאפשר חיבור מאובטח.

הצפנת TLS

הצפנת TLS (Transport Layer Security) הוא פרוטוקול הצפנה שפותח כגרסה משודרגת ל-SSL. והוא לא שונה באופן עקרוני מ-SSL, אך יש לו יכולת הצפנה יותר חזקה ושיפורים נוספים בביצועים ובאבטחה. כיום, כמעט כל התקשורת המאובטחת באינטרנט מתבצעת באמצעות TLS במקום SSL.

פרוטוקול TLS מאפשר הצפנה ברמה גבוהה יותר, והוא משמש כמעט בכל אתר אינטרנט שמבצע תקשורת מאובטחת עם המשתמשים. TLS מתפקד בצורה דומה ל-SSL, ומספק את ההגנה הנדרשת לעסקאות מאובטחות, חיבורים פרטיים והגנה על מידע רגיש.

דוגמה טכנית (TLS עם OpenSSL): כדי לבדוק את החיבור המאובטח של שרת בעזרת TLS, אפשר להריץ את הפקודה הבאה:

openssl s_client -connect www.example.com:443

הפקודה מתחברת לשרת www.example.com דרך פורט 443 (הפורט המשמש ל-TLS) ומבצעת את תהליך ההצפנה והחיבור המאובטח.

סרטיפיקטים (Certificates)

סרטיפיקט הוא קובץ דיגיטלי שמאמת את זהות השרת (או הלקוח) ברשת. הסרטיפיקט מכיל את המפתח הציבורי של השרת, פרטי מזהה של השרת, ותעודת מאמתת (CA – Certificate Authority) שמאשרת את האותנטיות של הסרטיפיקט.

כדי להשתמש ב-TLS, השרת חייב להציג סרטיפיקט המהווה הוכחה שהוא באמת השרת שהוא טוען להיות. סרטיפיקטים יכולים להיות מבוקשים באופן עצמי (Self-Signed) או להיות מונפקים על ידי סמכות מאמתת (CA).

דוגמה:

  1. הלקוח בודק אם הסרטיפיקט שנשלח מהשרת מתאים למידע שלו.
  2. הלקוח בודק את שרשרת האימות של הסרטיפיקט עם ה-CA כדי לוודא שהשרת אמין.

סיכום

הצפנה היא אבן יסוד באבטחת רשתות מחשבים, במיוחד בעידן שבו כל המידע שלנו נע ברשתות מחשבים. הצפנה סימטרית מצריכה מפתח משותף לשני הצדדים, בעוד הצפנה לא סימטרית משתמשת במפתח ציבורי ומפתח פרטי. SSL ו-TLS הן טכניקות הצפנה שנמצאות בשימוש נרחב באינטרנט כדי להבטיח את פרטיות המידע בזמן שהוא מועבר בין הלקוח לשרת.

באמצעות כלים כמו OpenSSL, ניתן ליצור מפתחות, סרטיפיקטים ולבצע הצפנה/פענוח בצורה מאובטחת. כל זה מסייע להבטיח שהמידע שנע ברשת יהיה בטוח ופרטי, מבלי לחשוש מאיומים של האקרים.