MD5, RSA, Certificate

הצצה לנושאי ההצפנה והמפתחות.

בעמוד הבא תצללו לעקרונות ההצפנה המודרנית.

תבינו כיצד הצפנה סימטרית שונה מהצפנה אסימטרית ומה היתרון בזוג מפתחות של RSA.

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

נעבור על חולשות MD5 ונראה מדוע SHA-256 נחשב בטוח יותר.

נבחן איך HMAC משלב מפתח סודי בגיבוב ומגן מפני שינוי הודעות.

נסקור את מעבר הארגונים ל-ECC ואת חשיבות מנגנוני Padding במניעת מתקפות מתמטיות.

הקריאה תספק בסיס יציב לפני העמקה בסמינרים או בהכנה למיוני גאמא סייבר.

הקדמה

תחום האבטחה בעולם הדיגיטלי מסתמך רבות על הבנת עקרונות כמו הצפנה, גיבוב וניהול מפתחות.
ככל שהמידע הופך לנכס חשוב יותר, עולה הצורך לשמור עליו מפני גישה לא מורשית או שינויים זדוניים.
במדריך זה נעסוק בנושאים מרכזיים הנוגעים ל‪Asymmetric Encryption‬, הצפנה סימטרית, אלגוריתמי גיבוב דוגמת ‪MD5‬ ו‪SHA-256‬, וכן במנגנוני תעודות דיגיטליות ורשויות מאשרות.
הבנה זו חיונית למגוון תפקידים בתחום אבטחת המידע, לרבות מי שמבצע הכנה למיונים גאמא סייבר, וכן למי שמתעניין במסלול טכנולוגי ביחידה 8200.
במדריך ניגע בשאלות שונות שנוגעות ליתרונות הצפנה אסימטרית לעומת סימטרית, תפקיד המפתח הפרטי והציבורי, הסיכונים בשימוש ב‪MD5‬, וגם משמעות שרשרת האמון בתעודות דיגיטליות.
כל אלו יאפשרו קבלת רקע מספק לענות על הסוגיות המעשיות והעיוניות הכרוכות בנושא.

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

הצפנה סימטרית מתבססת על מפתח בודד שמשמש הן להצפנה והן לפענוח.
בשיטה זו נדרש לשמור על סודיות המפתח ולשתף אותו בצורה בטוחה בין שני הצדדים.
לעומת זאת, הצפנה אסימטרית (או ‪Asymmetric Encryption‬) עושה שימוש בשני מפתחות: מפתח ציבורי ומפתח פרטי.
המפתח הציבורי יכול להיות חשוף לכל דורש, ומשמש להצפנת המידע.
רק באמצעות המפתח הפרטי המתאים, אשר נשמר בסוד אצל בעליו, ניתן לפענח את המידע המוצפן.
היתרון המרכזי הוא שניתן לשתף בבטחה את המפתח הציבורי ברבים, מבלי להסתכן בחשיפת המפתח הפרטי.
המשמעות המעשית היא שנחסך הצורך לשלוח מפתח סודי דרך ערוץ מאובטח מראש.
כך ניתן להתחיל תקשורת מאובטחת גם בלי מפגש מוקדם להחלפת מפתחות.

הדוגמה הנפוצה להצפנה אסימטרית היא ‪RSA‬.
ב‪RSA‬ נוצרים זוג מפתחות: ציבורי לפרסום ופרטי לשמירה רק אצל הבעלים.
כשמדברים על גודל המפתח ב‪RSA‬, מתכוונים לאורך הביטים (למשל 2048 ביט).
כדי להשיג רמת אבטחה גבוהה, מומלץ להשתמש באורך מפתח של 2048 ביט ומעלה.
בסביבה הדורשת הגנה מוגברת יש העדפה גם למפתח באורך 4096 ביט, אם כי הדבר כרוך בעומסי חישוב מוגדלים.

תפקיד המפתח הפרטי ב‪RSA‬

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

גיבוב (‪Hash‬) לעומת הצפנה

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

חולשות ב‪MD5‬ והעדפה ל‪SHA-256‬

בעבר היה מקובל להשתמש רבות ב‪MD5‬ לצורך בדיקת שלמות קבצים או לצורך אימות.
אך עם הזמן נמצאו התנגשויות באלגוריתם ‪MD5‬, כלומר מצבים שבהם שתי הודעות שונות מפיקות את אותו ערך גיבוב.
תופעה זו מעמידה בספק את יכולת האימות ש‪MD5‬ מספק, שכן תוקף עלול ליצור שתי גרסאות של מסמך עם אותו ערך גיבוב.
לכן ביישומים מודרניים ובתעודות דיגיטליות מעדיפים להשתמש באלגוריתמים חזקים יותר, כגון ‪SHA-256‬.
ב‪SHA-256‬, נכון להיום, לא ידוע על התנגשויות מעשיות, ולכן רמת האמון באלגוריתם גבוהה יותר.

מדוע גיבוב בלבד לא מספיק להגנת הודעה

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

חתימה דיגיטלית ב‪RSA‬ ואימות המסמך

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

רשויות מאשרות (‪CA‬) ותעודות דיגיטליות

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

שרשרת האמון (‪Chain of Trust‬)

שרשרת האמון בנויה מסדרת תעודות, כאשר כל תעודה נחתמת על ידי גורם מוסמך בדרגה גבוהה יותר ממנה.
בראש השרשרת נמצאת רשות מאשרת עליונה (‪Root CA‬), אשר מובנית כבר כגורם מהימן במערכות הפעלה ודפדפנים.
כאשר דפדפן בודק תעודה, הוא למעשה בודק גם את התעודות של הרשויות החתומות מעליה, עד שמגיעים ל‪Root CA‬ המוכרת.
כך אפשר לאמת באופן מלא שהתעודה הופקה על ידי גורם מורשה שאישר את זהות האתר או השירות.

סיכוני שימוש ב‪MD5‬ לחתימת תעודות

כאשר תעודה דיגיטלית נחתמת בעזרת אלגוריתם גיבוב חלש כמו ‪MD5‬, תוקף עלול ליצור התנגשויות ולהפיק תעודה מזויפת.
במקרה כזה, הדפדפן עשוי לקבל את התעודה המזויפת כתקפה, כי חתימתה תיראה זהה לחתימת התעודה המקורית.
כדי למנוע סיכון זה, רשויות מאשרות ודפדפנים מודרניים חדלו להנפיק או לתמוך בתעודות המבוססות על ‪MD5‬.
השימוש באלגוריתמים חזקים כמו ‪SHA-256‬ מגן יותר מפני מתקפות המבוססות על התנגשויות.

מתקפות על אלגוריתמי גיבוב (‪Prefix Collision Attack‬ ו‪Length Extension Attack‬)

ב‪Prefix Collision Attack‬, התוקף יוצר מראש שני קבצים שונים בעלי מקטע פתיחה זהה, באופן שמוביל לאותו ערך גיבוב בסוף.
כך ניתן לחתום על קובץ אחד (התמים) ולספח את החתימה גם לקובץ הזדוני, שה‪Hash‬ שלו זהה, לכל הפחות באזורים הרלוונטיים.
מתקפה נוספת נקראת ‪Length Extension Attack‬, שבה תוקף יכול להרחיב הודעה מקורית באופן שעדיין שומר על מבנה גיבוב מתאים.
אלגוריתמים כמו ‪MD5‬ ו‪SHA-1‬ רגישים יותר להתקפות אלה, בעוד גרסאות מתקדמות כמו ‪SHA-2‬ ו‪SHA-3‬ עמידות יותר.

חשיבות ‪Padding‬ בהצפנה ובחתימה דיגיטלית

ב‪RSA‬, שימוש ב‪Padding‬ נכון חיוני למניעת התקפות מתמטיות המנצלות את המבנה האלגברי של ההצפנה.
ללא מנגנון ‪Padding‬ (כמו ‪PSS‬ בחתימות או ‪OAEP‬ להצפנה), תוקף עשוי לנחש או לבנות חתימה כך שתיראה חוקית למסמך אחר.
לכן יש להקפיד שהיישום ישתמש במודלי ‪Padding‬ סטנדרטיים ובדוקים כדי לשמור על אבטחת החתימה.

מתקפות מסוג ‪Chosen Plaintext Attack‬

ב‪Chosen Plaintext Attack‬, התוקף יכול להזין הודעות לבחירתו לתוך מערכת ההצפנה, ולראות את התוצאות המוצפנות.
אם במערכת ‪RSA‬ אין שימוש במנגנוני הגנה כמו ‪OAEP‬, ייתכן שהתוקף ילמד מכך מידע על המבנה הפנימי של ההצפנה או על המפתח הפרטי.
לכן בהצפנה אסימטרית מודרנית מקפידים להשתמש ב‪Padding‬ מאובטח ובפרוטוקולים תקניים המונעים פענוח חלקי או תבניות ניתנות לחיזוי.

מעבר ל‪EC‬ ו‪ECC‬ כתחליף ל‪RSA‬

קריפטוגרפיה מבוססת עקומות אליפטיות (‪EC‬ או ‪ECC‬) מציעה רמת אבטחה דומה ל‪RSA‬ אך באורך מפתח קצר יותר.
המשמעות היא שניתן להשיג חוזק הצפנה מקביל עם עומסי חישוב נמוכים יותר.
זו הסיבה שארגונים רבים עוברים לשימוש בחתימות דיגיטליות ועבודת מפתח המבוססות על ‪ECC‬ (דוגמת ‪ECDSA‬).
עם זאת, ביישומים מסוימים עדיין קיים שימוש נרחב ב‪RSA‬ מטעמי תאימות ומורשת מערכות קודמות.

אימות הודעה והגנתה מפני מתקפות ‪MITM‬

אימות הודעה באמצעים קריפטוגרפיים נועד למנוע מצבים שבהם תוקף משבש את המסר בזמן מעברו.
מתקפה מסוג ‪MITM‬ (איש באמצע) מאפשרת לתוקף ליירט ולשנות את המידע תוך כדי העברתו, אם המידע אינו מוגן כראוי.
אם משתמשים רק ב‪MD5‬ לצורך בדיקת שלמות, התוקף עלול לשנות גם את ההודעה וגם את ה‪Hash‬ ולהשאיר את הצד המקבל ללא חשד.
שימוש ב‪HMAC‬ או בחתימה דיגיטלית מגביר משמעותית את ההגנה, כי נדרש מפתח או מפתח פרטי כדי ליצור את האימות הנכון.

לסיכום

במדריך זה ראינו כיצד הצפנה אסימטרית פועלת, ולמה יש יתרון מהותי בכך שמפתח ציבורי ניתן לשיתוף רחב בעוד המפתח הפרטי נשמר בסוד.
למדנו שגיבוב (‪Hash‬) הוא תהליך חד-כיווני, ושמדוע ‪MD5‬ נחשב לא בטוח עקב התנגשויות.
חתימות דיגיטליות, תעודות ורשויות מאשרות (‪CA‬) מעניקים בסיס לאמון במרחב הדיגיטלי, ומספקים דרך לוודא את זהותו של גורם ואת שלמות המסמך החתום.
ראינו גם כיצד שרשרת האמון (‪Chain of Trust‬) מאפשרת לדפדפנים ולמשתמשים לבדוק אם התעודה נחתמה על ידי גורם מהימן.
בשל סיכוני ‪Prefix Collision Attack‬ ו‪Length Extension Attack‬, קיימת עדיפות להשתמש במשפחות גיבוב מתקדמות יותר כמו ‪SHA-256‬.
בנוסף, הבנו את חשיבות ה‪Padding‬ ב‪RSA‬ ואת הצורך במנגנוני הגנה מפני מתקפות כמו ‪Chosen Plaintext Attack‬.

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

תודה! בזכותכם נוכל להשתפר