לדלג לתוכן

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

פתרון לתרגול: הצפנה ברשתות מחשבים

חלק 1: הצפנה סימטרית עם OpenSSL

  1. הצפנה סימטרית: על מנת להצפין את הקובץ myfile.txt באמצעות אלגוריתם AES-256, השתמש בפקודה הבאה:

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

    בפקודה זו, אנחנו משתמשים באלגוריתם AES-256 עם מצב CBC להצפנה. הפרמטר -salt מוסיף תיבול להצפנה, מה שמקשה על ההתקפה.

  2. פענוח קובץ מוצפן: על מנת לפענח את הקובץ המוצפן myfile.enc ולשחזר את הקובץ המקורי myfile.dec, השתמש בפקודה:

    openssl enc -d -aes-256-cbc -in myfile.enc -out myfile.dec
    

    כאן הוספנו את הפרמטר -d לצורך פענוח.

  3. שאלות לתרגול:

    • יתרון: הצפנה סימטרית היא מהירה ויעילה.
    • חיסרון: הצורך לשתף את המפתח בצורה מאובטחת, אחרת המידע יהיה חשוף.
    • שדרוג רמת הביטחון: ניתן לשדרג את הביטחון באמצעות שימוש במפתחות באורך גדול יותר או שיטות חיזוק נוספות כמו HMAC (Hash-based Message Authentication Code) להבטחת שלמות המידע.

חלק 2: הצפנה לא סימטרית עם OpenSSL

  1. הצפנה עם מפתח ציבורי: על מנת להצפין את הקובץ myfile.txt בעזרת המפתח הציבורי public.pem, השתמש בפקודה:

    openssl rsautl -encrypt -inkey public.pem -pubin -in myfile.txt -out myfile.enc
    
  2. פענוח עם מפתח פרטי: על מנת לפענח את הקובץ myfile.enc בעזרת המפתח הפרטי private.pem, השתמש בפקודה:

    openssl rsautl -decrypt -inkey private.pem -in myfile.enc -out myfile.dec
    
  3. שאלות לתרגול:

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

חלק 3: הגדרת SSL בשרת

  1. יצירת מפתח פרטי ותעודה עצמית: על מנת ליצור מפתח פרטי, השתמש בפקודה:

    openssl genpkey -algorithm RSA -out private.key
    

    על מנת ליצור תעודה עצמית עם המפתח הפרטי, השתמש בפקודות:

    openssl req -new -key private.key -out server.csr
    openssl x509 -req -in server.csr -signkey private.key -out server.crt
    
  2. הגדרת SSL בשרת: עליך להגדיר את המפתחות והתעודות בקובצי ההגדרה של השרת. לדוגמה, ב-Apache, עליך להוסיף את השורות הבאות לקובץ httpd.conf:

    SSLEngine on
    SSLCertificateFile /path/to/server.crt
    SSLCertificateKeyFile /path/to/private.key
    
  3. שאלות לתרגול:

    • על מנת להבטיח שלמות המידע בשרת SSL, השתמש במפתחות חזקים וודא שהתעודה נחתמה על ידי CA אמין.
    • תעודה עצמית: היא תעודה שלא נחתמה על ידי סמכות מאמתת (CA) ולכן נחשבת לפחות אמינה. היא מתאימה לשימוש פנימי או לסביבות פיתוח.

חלק 4: חיבור מאובטח עם TLS

  1. בדיקת חיבור מאובטח עם TLS: על מנת לבדוק את החיבור המאובטח עם TLS, השתמש בפקודה:

    openssl s_client -connect www.example.com:443
    
  2. שאלות לתרגול:

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

חלק 5: סרטיפיקטים

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

  2. שאלות לתרגול:

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