4. אם הלקוח לגיטימי, הוא משתמש במפתח הסודי שברשותו כדי לפענח את המסר השני המיועד אליו כדי לחלץ ממנו את מפתח השיחה, בעזרתו הוא יתקשר לאחר מכן לשרת TGS. (שימו לב שהלקוח אינו מסוגל לפענח את המסר הראשון שקיבל כיוון שהוא מוצפן באמצעות מפתח סודי הידוע רק לשרת ה-TGS). אם הלקוח אינו לגיטימי, כגון אם הוא מתחזה, אין במידע שקיבל כל תועלת כיוון שהוא מוצפן וההנחה היא כי מפתח ההצפנה ידוע אך ורק ללקוח הלגיטימי. בשלב זה בידי הלקוח מספיק נתונים כדי לאמת את זהותו מול שרת ה-TGS.
5. כדי לקבל את השירות המבוקש, תחילה הלקוח מבקש בשם המשתמש משרת קרברוס TGS תעודת התחברות, על ידי שליחת המסרים הבאים:
מהלך 2: לקוח לשרת הנפקת תעודות
6. עם קבלת המסרים, שרת ה-TGS מפענח את ה-TGT שקיבל באמצעות המפתח הסודי שלו, מחלץ את מפתח-השיחה ובודק: שהתעודה עדיין תקפה, שפרטי הלקוח תואמים את המידע שהתקבל קודם ושהמשתמש בעל הרשאה לשירות המבוקש. אם כל הנתונים תקינים אזי ה-TGS מפיק עבורו תעודה להתחברות לספק השירות ושולח ללקוח את המסרים הבאים:
מהלך 3: שרת הנפקת תעודות ללקוח
7. כאשר הלקוח מקבל את המסרים הללו משרת ה-TGS בידיו מספיק נתונים כדי לאמת את זהותו מול ספק השירות. הלקוח מתחבר לשרת השירות ושולח לו את המסרים הבאים:
מהלך 4: לקוח לספק שירות
8. ספק השירות מפענח את התעודה באמצעות המפתח הסודי שלו מחלץ את מפתח השיחה ומפענח את ה'מזהה' שקיבל ובודק את המידע הכלול בו. אם הכל כשורה הוא מאשר את בקשת ההתחברות מאפשר ללקוח גישה לשירות המבוקש.
9. אופציונלית לצורך אימות הדדי, השרת שולח ללקוח את חותם הזמן הטרי שהתקבל במהלך 3 וכן מפתח שיחה חדש (אם יש צורך), מוצפנים באמצעות מפתח השיחה המשותף. הלקוח מפענח את מסר האחרון ומוודא שחותם הזמן מתאים לחותם הזמן שהוא שלח. אם כן הלקוח יכול לסמוך על השרת ויכול להשתמש בשירות המבוקש.
סיכום מהלכי הפרוטוקול: הלקוח מקבל משרת האימות המלצה שאיתה הוא מוכיח לשרת הנפקת התעודות שהוא מוסמך לקבלת תעודת השירות המבוקשת ומקבל אותה, באמצעותה הוא מוכיח לאחר מכן לספק השירות שזהותו אומתה וכי הוא רשאי לקבל את השירות המבוקש ומקבל אותו.
בטיחות ויעילות.
ניהול מפתחות.
פרוטוקול קרברוס מחייב את הלקוח והשרת במהלך הפרוטוקול להחזיק במפתח הצפנה ומפתח שיחה לפיענוח מסרי הפרוטוקול במצב קריא (לא מוצפן). עובדה זו יוצרת נקודת תורפה מסוימת, אם תוקף פוטנציאלי מצליח לחדור למערכת ולחלץ את המפתחות הללו, הוא יוכל להתחזות ללקוח ללא כל בעיה. בנוסף שרתי KDC אמורים לנהל מסד נתונים המכיל מידע על זהות המשתמשים והמפתחות הסודיים שלהם (הסיסמאות). מידע זה חייב להיות מוגן באמצעים קריפטוגרפיים. כמו כן התכנון הראשוני של הפרוטוקול מחייב את שרתי קרברוס לאחסן בקשות אחרונות על מנת למנוע התקפות שימוש חוזר. מימוש זה בעייתי בפלטפורמות מסוימות. השימוש באתגר/מענה מבטל את הצורך הזה.
אם לתוקף פוטנציאלי יש גישה לערוץ התקשורת בו מתנהל הדו-שיח בין השרת ללקוח, הוא יכול לאסוף מספר גדול של תעודות מוצפנות שנשלחו. בגרסה הבסיסית של הפרוטוקול לא הוגדרה שיטה מעשית להצפנת תהליך האימות. בשיטה הרגילה התעודות מוצפנות באמצעות המפתח הסודי של המשתמש שנגזר מהסיסמה שלו באמצעות פונקציה ציבורית מוסכמת. על כן התוקף יכול לנסות לפענח את התעודות באופן לא מקוון על ידי ניסיון לנחש את הסיסמה ולבדוק האם מפתח ההצפנה מתאים. לכן השימוש בפרוטוקול זה אינו פותר את המשתמשים מהצורך להחזיק בסיסמאות חזקות כלומר קשות לניחוש (ראו סיסמה).
התקפת שימוש חוזר - Replay attack.
כדי למנוע התקפת שימוש חוזר, שבה התוקף מנסה להתחזות ללקוח הלגיטימי על ידי שידור חוזר של מסרי הפרוטוקול מתהליך ישן. פרוטוקול קרברוס עושה שימוש במזהה המכיל חותם-זמן. חותם הזמן מאפשר לאכוף טריות ובכך לסכל ניסיון שימוש בבקשות ישנות. על כן סינכרון הזמן בין השרת והלקוח, הוא תנאי הכרחי בפרוטוקול קרברוס. מקובל לאפשר סטייה קלה (בדרך כלל כ-5 דקות), בין הזמן שמקורו בשעון הלקוח לבין הזמן בשעונו של השרת, בזמן קבלת הבקשה. בכל מקרה שהפרש הזמן עולה על שיעור סטייה שנקבע מראש, הבקשה נדחית.
שירות זמן מאובטח.
הצורך בסינכרון הזמן בגרסה הבסיסית, מטיל מגבלה על מימוש הפרוטוקול ומהווה חיסרון משמעותי. אם הזמן בשעון השרת מוטעה ניתן יהיה לעשות שימוש במזהה ישן ובכך להתחזות ללקוח לגיטימי ללא בעיה. על כן יש צורך להגן על שעון השרת מפני שינויים חיצוניים על ידי תוקף פוטנציאלי. מלבד זאת כיוון שבטיחות הפרוטוקול תלויה בזמן, תהליך הסנכרון עצמו חייב להיות בטוח. אולם סנכרון שעון בטוח הוא בעיה קריפטוגרפית כשלעצמה. קיימת גרסה שונה של הפרוטוקול ללא שימוש בחותם זמן במחיר של מהלך נוסף.
צד שלישי.
התלות בצד שלישי מקוון מגביל את השימוש בפרוטוקול ומחייב כי שרת הצד השלישי יהיה זמין בעת הרצת הפרוטוקול. אם שרת קרברוס קורס, גורם הדבר להשבתה של כל מערכת האימות. כדי למנוע מצב כזה, בדרך כלל מערכת אימות כוללת מספר שרתי אימות של קרברוס.
יתרונות וחסרונות.
לפרוטוקל זה מספר יתרונות:
הסיסמאות לא עוברות ברשת אף פעם.
לעומת NTLM (בה הסיסמה לא מוצפנת מהשלב הראשון בתהליך), ב-Kerberos מתבצעת פונקציית גיבוב כבר בהודעה הראשונה, כך לא ניתן לראות את הסיסמה גלויה בעקבות פריצה לוקאלית.
פונקציות הצפנה חזקות יותר מ-NTLM.
תיקון החולשות הקיימות ב-NTLM.
יחס מהירות/אבטחה גבוה וטוב - לפי יחס זה, ככל שהאבטחה שלי יותר טובה כך גם התהליך יותר איטי, ולהפך - ככל שהאבטחה שלי פחות טובה התהליך מהיר יותר. Kerberos יודע לאזן בין האבטחה למהירות הביצוע, לעומת NTLM שם המהירות גבוהה, אך האבטחה בינונית.
Kerberos תומך ומספק אימות דו-צדדי - כלומר לא רק שהלקוח מתאמת מול השרת/השירות אלא גם השרת/השירות מתאמתים מולו.
אימות דו-צדדי הוא אופציה שהלקוח יכול לדרוש מהפרוטוקול Kerberos.
הודות ל"האצלת הסמכויות" שיש ל-Kerberos, שירות שהמשתמש ניגש אליו יכול לגשת מרחוק למשאבים בשהוא צריך בשם הלקוח. כלומר, משתמש א' יכול לתת את הזכות לתחנה ב' לאמת את עצמו מול אפליקציה שנמצאת בשרת ג' כאילו תחנה ב' היא המשתמש א'. שיטה זו יעילה מאוד, לעומת התחברות לשרת ג'.
NTLM תומך רק ב-impersonating - שיש צורך ב"דיבור ישיר" של אותו לקוח והתחברות למשאבים חדשים.
NTLM עובד בתצורת אתגר/מענה ולכן מספק אימות חד-צדדי בלבד. זהו אחד ההבדלים העיקריים בפרוטוקול.
לפרוטוקול יש שני חסרונות עיקריים. הראשון הוא הפרוטוקול חשוף לסיסמאות חלשות או חוזרות. בנוסף הוא מספק אימות רק עבור שירותים ולקוחות.
Kerberos
דרך טוטנהאם קורט
דרך טוטנהאם קורט (באנגלית: Tottenham Court Road) היא דרך במרכז לונדון שבאנגליה. הדרך מקשרת בין כיכר סנט ג'יילס (פינת רחוב אוקספורד ודרך צ'רינג קרוס) לבין רחוב יוסטון (הקצה הצפוני של רובע וסטמינסטר).
רחוב זה הוא אחד מרחובות הקניות החשובים בלונדון, והוא ידוע במספר הרב של חנויות האלקטרוניקה בו. כמו כן יש בו חנויות רהיטים אופנתיות רבות.
הרחוב מוזכר מספר פעמים בסדרת ספרי הארי פוטר.
משפט קוק-לוין
משפט קוק-לוין הוא משפט יסודי בתורת הסיבוכיות, הקובע שהבעיה SAT היא NP-שלמה. את המשפט הוכיחו, באופן בלתי תלוי, סטפן קוק בשנת 1971, ולאוניד לוין בשנת 1973.
מבוא.
במדעי המחשב התאורטיים יש חשיבות מרכזית לבעיות שניתן למצוא להן פתרון בזמן סביר (הגדרתו המדויקת של המושג "זמן סביר" היא טכנית, ומסתמכת על הגדרת המושג של מכונת טיורינג). אוסף הבעיות שניתן למצוא להן פתרון בזמן סביר מסומן על ידי האות P.
בנוסף לבעיות שניתן למצוא עבורן פתרון בזמן סביר, קיימות גם בעיות שניתן לבדוק בזמן סביר האם פתרון מוצע כלשהו עבורן הוא אכן פתרון לבעיה. בעיות אלו מסומנות על ידי NP. זהו אוסף בעיות שככל הנראה גדול יותר מאוסף הבעיות P, שכן קיימות בעיות רבות שידוע כיצד לבדוק בזמן סביר אם פתרון מוצע אכן פותר אותן, אך לא ידועה דרך למצוא פתרון שכזה בזמן סביר. דוגמה לבעיה מסוג זה היא השאלה האם ניתן לחלק קבוצת מספרים נתונה לשתי קבוצות, כך שסכום המספרים בקבוצה האחת יהיה שווה לסכומם בקבוצה השנייה. בהינתן חלוקה של קבוצת מספרים לשתי קבוצות, קל לבדוק האם הסכומים בשתיהן אכן שווים. אבל אם לא נתונה חלוקה כזו, קשה מאוד למצוא האם היא אכן קיימת.
כיום עדיין לא ידוע האם עבור כל בעיה שניתן לבדוק פתרון מוצע לה בזמן סביר, ניתן גם למצוא פתרון שכזה בזמן סביר. השאלה האם הדבר אפשרי מכונה בשם בעיית P=NP, כלומר האם שתי המחלקות P ו-NP שוות זו לזו, וזוהי אחת מהשאלות המרכזיות במדעי המחשב. הדעה הרווחת היא כי הדבר אינו נכון.
משפט קוק-לוין עוסק באחת מהבעיות הנמצאות ב-NP, ונקראת בעיית SAT (הגדרתה המדויקת של בעיה זו קשורה ללוגיקה מתמטית ואף כי אינה מסובכת היא טכנית למדי). המשפט אומר כי SAT שייכת לאוסף הבעיות הקשות ביותר שב-NP, במובן זה שאם תתגלה דרך למצוא פתרון בזמן סביר עבור SAT, ניתן יהיה לפתור בזמן סביר כל בעיה השייכת ל-NP. במילים אחרות, אם יתגלה פתרון בזמן סביר עבור SAT, הדבר יהווה הוכחה לכך ש-P=NP. בעיות שניחנות בתכונת קושי שכזו מכונות NP-שלמות. לכן, בניסוח מדויק יותר, משפט קוק-לוין אומר כי SAT היא בעיה NP-שלמה.