קרברוס (פרוטוקול)
מתוך ויקיפדיה, האנציקלופדיה החופשית
קרברוס (Kerberos) הוא פרוטוקול קריפטוגרפי המהווה חלק מפרויקט "אתנה" לשרותי אימות מבוזרים שמקורו במכון הטכנולוגי של מסצ'וסטס (MIT). קרברוס כולל מפרטים לשלמות מידע, הצפנה, תוכנה ליישום הפרוטוקול ותהליכים להרצת התוכנה. ביניהם פרוטוקול האימות עצמו, שבאמצעות טכניקות סימטריות בלבד, בשיתוף צד שלישי נאמן, מאפשר גם אימות זהויות וגם שיתוף מפתח.
מקור השם קרברוס הוא במיתולוגיה היוונית ופרושו "שד מהתהום", זוהי מפלצת דמוית כלב בעל שלושה ראשים, ששירתה את האדס - "אל השאול", בשמירה בשער הגהינום.
פרוטוקול קרברוס מספק מה שקרוי "אימות חזק", בשל העובדה שהפרוטוקול מערב אלגוריתם הצפנה לצורך האימות ולא עושה שימוש בסיסמה בצורה הרגילה. הלקוח אינו נדרש לחשוף את סיסמתו כלל במהלך הפרוטוקול וכל המידע הרגיש העובר בערוץ התקשורת במהלך הפרוטוקול, מוגן מפני ציתות.
פרוטוקול קרברוס הבסיסי מערב את הישויות: A - לקוח, B - שרת (לצורך הפרוטוקול קרוי גם מאמת). ו-T - שרת ייעודי של קרברוס, המתפקד בעצם כשרת הפצת מפתחות (KDC). לפני כניסה לפרוטוקול, A ו-B משתפים מראש עם השרת T (כל אחד מהם בנפרד), סוד כלשהו (סיסמה המומרת למפתח הצפנה עם פונקציה מתאימה). המטרה העיקרית של הפרוטוקול היא: B יאמת את זהותו של A באופן בטוח. כתוצר לוואי של הפרוטוקול, המשתמשים יוכלו גם לשתף ביניהם מפתח סודי (שאינו ידוע ל-T) להתקשרות עתידית. אופציה נוספת היא אימות הדדי, בכך שהלקוח A יאמת גם הוא את זהותו של השרת B באמצעות מסר נוסף.
תוכן עניינים |
[עריכה] מהלכי הפרוטוקול
פרוטוקול קרברוס הבסיסי מכיל את המהלכים הבאים (לא כולל אלמנטים לא קריפטוגרפיים, למען הפשטות):
- A מייצר ערך זמני חד-פעמי (Nonce) ומשדר ל-T ערך זה יחד עם בקשה מתאימה הקרויה המלצה (Credential) עבור התקשרות עם B.
- T מכין מפתח שיחה k, מגדיר תוחלת זמן - טווח זמן המוגדר מראש לתקפות הבקשה. T מצפין את המפתח, הערך האקראי שקיבל מ-A, תוחלת הזמן ופרטי השרת B, במסר אחד, תוך שימוש במפתח אותו הוא משתף עם הלקוח A. כמו כן מכין "טיקט" (Ticket), הכולל את מפתח השיחה k, פרטי זהותו של A ותוחלת הזמן שהוגדרה. אותו הוא מצפין באמצעות המפתח המשותף לו ול-B. את שני מסרים הללו ישדר T ל-A.
- עם קבלת המסרים, יפענח A את המסר המתאים לו, באמצעות המפתח שברשותו. מתוכו יחלץ את מפתח השיחה k ושאר הערכים האמורים לצורך בדיקתם. A מכין בקשת אימות המכונה "מזהה" (Authenticator), המכילה "חותם זמן" (Time stamp) טרי, שמקורו בשעון המקומי שלו, פרטי זהותו, פרטי הבקשה ונתונים (אפוציונאליים) נוספים. מצפין את הבקשה בעזרת מפתח השיחה k ושולח אותה ל-B יחד עם הטיקט האמור. (שים לב! תוכנו של הטיקט נסתר מעיני A מאחר והוא מוצפן תחת המפתח שהשרת B משתף עם T בנפרד).
- B מפענח את הטיקט בעזרת המפתח הפרטי שלו ובודק את המידע הכלול בו. עם המפתח k שחילץ מן הטיקט הוא מפענח את המזהה שקיבל מ-A. מצליב נתונים ובודק בעיקר את תוחלת הזמן של הבקשה. אם הנתונים נמצאו תקינים, B מאשר את זהותו של A כאותנטית ומאפשר לו גישה.
- אופציונלית (לצורך אימות הדדי), B מכין ושולח ל-A מסר המכיל את חותם הזמן שקיבל קודם לכן ונתונים נוספים אם יש צורך, מוצפנים תחת מפתח השיחה הטרי k.
- בקבלת מסר זה A מסוגל לאמת את זהותו של B, אם חותם הזמן תואם את זה שהכין בעצמו. היות שרק השרת B האותנטי, היה מסוגל לשדרו, A מקבל את זהותו כאותנטית.
בכל שלבי הפרוטוקול מפתח השיחה וכן מידע סודי אחר, אינם מועברים באופן גלוי אלא מוצפנים תחת מפתחות הצפנה מוגדרים מראש. צד שלישי המאזין לחילופי המסרים בין A ל-B וכן בינם לבין T לא יחלץ כל מידע שימושי, מלבד נתונים מוצפנים בכמות מועטה. בניגוד לשיטת הסיסמה הקונבנציונלית בה המשתמש מתבקש לשדר את סיסמתו או ערך מעורבל שלה באופן גלוי, בכל פעם שנדרש לאמת את זהותו. הרעיון הבסיסי של קרברוס הוא הסתמכות על מידע סודי הקיים מראש אצל צד שלישי כדי לבצע התקשרות מאובטחת, כאשר המשתמשים לא נדרשים להעביר את סיסמתם באופן גלוי כלל.
[עריכה] פרמטרים
להלן פירוט מקצת מהפרמטרים המשמשים את הפרוטוקול:
- חותם-זמן
- מייצג את הזמן המקומי של הלקוח בעת הכנת הבקשה. סינכרון הזמן בין השרת והלקוח, הנו תנאי הכרחי בפרוטוקול קרברוס. מקובל לאפשר סטייה קטנה של מספר דקות, בין הזמן שמקורו בשעון הלקוח לבין הזמן בשעונו של השרת, בזמן קבלת הבקשה. בכל מקרה שהפרש הזמן עולה על שיעור סטייה שנקבע מראש, הבקשה נדחית. הסיבה לשימוש בחותם זמן נובעת מהצורך לאכוף טריות, כדי לסכל ניסיונות לשידור חוזר של בקשות ישנות, מצד גורמים זדוניים.
- ערך זמני (Nonce)
- זהו מספר אקראי חד-פעמי, שנועד לשימוש פעם אחת בלבד. מיוצר בעזרת מחולל מספרים אקראיים. הרעיון מאחורי ערך חד-פעמי זה הוא להבטיח את "טריות" הבקשה לשרת המפתחות.
- מפתח שיחה (Session key)
- מפתח הצפנה חד-פעמי המתאים לתקשורת יחידה לפרק זמן קצר, בדרך כלל למשך שיחה אחת.
- פונקציית הצפנה סימטרית
- במקור DES שימש כאלגוריתם סימטרי, להצפנת מסרי הפרוטוקול. אולם בהגדרה הבסיסית, ישנה הפרדה בין מהלכי הפרוטוקול לבין אמצעי ההצפנה. כך שכל אלגוריתם סימטרי, יכול לשמש לצורך ביצוע הפרוטוקול ובלבד שיכיל מנגנון הבטחת שלמות כלשהו. בשרתי NT 2000 ומעלה יישמה מיקרוסופט גרסה של פרוטוקול קרברוס, עם אלגוריתם RC4, יחד עם פונקציית ערבול בטוחה SHA-1 להבטחת שלמות.
[עריכה] יתרונות ומגבלות
יתרונו של פרוטוקול קרברוס הוא בגמישותו. הפרוטוקול מאפשר שימוש במגוון אלגוריתמים להצפנה, הבטחת שלמות ואימות תוך שימוש במספר מסרים מינימלי ואינו מחייב שימוש בהצפנה א-סימטרית. החסרון היחידי של הפרוטוקול הוא אולי בצורך בחותם-זמן כאמור, דרישה זו מחייבת סנכרון שעונים בין שרת המפתחות והמשתמשים. תהליך הסנכרון חייב להתבצע באופן בטוח, גישה של גורמים זדוניים לשעונו של השרת או הלקוח עלולה להוות פרצת אבטחה חמורה. סנכרון שעון מאובטח מערב שימוש בהצפנה, בדומה לפרוטוקול קרברוס עצמו. מצב כזה עלול להוביל למלכוד, מאחר ותהליך הסנכרון לא יכול להתבצע בעזרת פרוטוקול כמו קרברוס - אם הפעלת הפרוטוקול עצמו מחייבת סנכרון שעון מאובטח.
[עריכה] גרסאות
הגרסה המתוארת היא גרסת קרברוס 5 הבסיסית. הגרסה הנוכחית היא Kerberos 5 Release 1.5.1. גרסה 5 הוצאה לאחר שהתגלו מספר ליקויים בגרסה 4.