Skip to content
This repository has been archived by the owner on Jan 5, 2025. It is now read-only.

Open University Software Engenere project, client and server communication using encryption to transfer a file with checksum checking.

Notifications You must be signed in to change notification settings

azarankin/Defensive-Programming

 
 

Repository files navigation

מסמך סיכום

ניתוח הפרוטוקולים

בהמשך יוצג:

  • ניתוח הפרוטוקולים
  • ניתוח חולשות בפרוטוקולים והצעות לתיקונים
  • החולשות מתוך ספר הלימוד

ניתוח הפרוטוקולים

בפרוטוקול, משתמשים בהצפנה סימטרית באמצעות CBC-AES להצפנת המסרים ובהצפנה אסימטרית באמצעות RSA להצפנת המפתח.

הצפנה סימטרית (CBC-AES)

AES (Advanced Encryption Standard):
AES הוא אלגוריתם הצפנה מתקדם ונפוץ המשמש להצפנת מסרים בצורה סימטרית.

גודל המפתח: אורך המפתח הוא 128 ביט, מה שהוא רגיל לגרסאות AES-128.
הצפנה: CBC (Cipher Block Chaining): זהו מצב צפנה סימטרי המשמש להבטחת המסרים מתוך הקריפטוגרפיה בבלוקים.
כל בלוק מיישם הצפנה עם ביטי המסר של הבלוק הקודם.

IV (Initialization Vector): ערך אקראי ראשוני המתווסף לבלוק הראשוני ובכך בכל תהליך הצפנה, נעשה שימוש ב-IV כדי להבטיח שלא יתקבל אותו תוצאה עבור כל בלוק מסר זהה. בהקצאה קבועה כמו במקרה שהוזכר, ה-IV מאופס תמיד.

הצפנה אסימטרית (RSA)

RSA (Rivest–Shamir–Adleman):
אלגוריתם אסימטרי: RSA הוא אלגוריתם אסימטרי המשתמש בזוג מפתחות, מפתח ציבורי ומפתח פרטי.
גודל המפתח: בפרוטוקול הנוכחי נעשה שימוש במפתחות עם אורך של 1024 ביט.

הצפנת מפתח: בפרוטוקול זה, יתקבל מפתח AES בצורה סימטרית ויצפן באמצעות RSA כלומר המפתח יוצפן באמצעות RSA.

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

  • אורך המפתח ב-RSA:
    חולשה: אורך המפתח של 1024 ביט יכול להיות פחות מאובטח בימינו.
    תיקון: ממליץ לשקול הגברת אורך המפתח, לפחות ל-2048 ביט או אף יותר.

  • שימוש ב-IV מאופס:
    חולשה: שימוש ב-IV מאופס באופן קבוע עשוי להיחשב כחולשה במקרים בהם משתמשים באותו מפתח AES חוזר וחוזר.
    תיקון: שימוש ב-IV ייצמד למפתח AES ויהיה ייחודי לכל תהליך הצפנה, מה שימנע תופעת CBC replay ויבטיח עמידות נוספת.

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

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

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

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

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

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

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

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

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

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

החולשות מתוך ספר הלימוד

סוג החולשה או התקפה תיאור
Heap Spraying התקפה שבה יתקף מופע של ++C זר מכתובת זיכרון מוקצה לערמה, ויכתוב קוד בחלק מהזיכרון הזה.
Return Oriented Programming התקפה שבה התוקף משתמש ברצפים של קוד קיימים במערכת כדי להריץ קוד זר, ומסתמך על פונקציות קיימות במערכת.
Buffer Overflow חולשה באבטחה שבה התוקף יכול להכניס יותר מדי נתונים למערכת, על ידי כתיבה יתרה לתאי הזיכרון מחוץ לגבולות המוגדרים עבור משתנה מסויים.

About

Open University Software Engenere project, client and server communication using encryption to transfer a file with checksum checking.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 79.9%
  • C 19.0%
  • Python 1.1%