- הצד החותם הוא בעל המידע (בעל הדומיין) או בא כוחו, כלומר הגוף שמפרסם את הדומיין על שרתי ה- DNS שלו. ניתן לחתום על דומיין במגוון דרכים, כפי שיפורט בהמשך.
- הצד המאמת הוא המשתמש. בכל גלישה לאתר או צריכה של שירות, נדרשת כתובת IP. בכל פעולה כזו המשתמש מבצע שאילתת DNS. אם התשובה לשאילתת ה- DNS תהיה חתומה, המשתמש הוא זה שמאמת אותה.
- דומיין חתום DNSSEC הוא דומיין רגיל, אשר מתפרסם על שרת DNS שאינו מצריך משאבים נוספים (CPU/ זיכרון) או יכולות מיוחדות. כל שרת DNS שמפרסם דומיינים "רגילים" (לא חתומים), יכול לפרסם גם דומיין חתום.
- שרת DNS שמפרסם דומיין (קרוי גם שרת DNS "אוטוריטטיבי"), תפקידו רק לענות על שאילתות. אם הוא מפרסם דומיין חתום, לא הוא זה שחותם עליו. תהליך החתימה מתבצע ברשת אחורית, למשל על המאסטר או על שרת חתימה ייעודי. מקובל גם לחתום באמצעות שירות בתשלום. בהמשך המסמך יש התייחסות לארכיטקטורות אפשריות.
- חתימה ב- DNSSEC היא על רשומות, ולא על קובץ ה- zone כולו כיחידה אחת.
המשמעות: דומיין חתום מכיל רשומות DNS "רגילות", ובמקביל אליהן גם את החתימות של אותן רשומות. - בנוסף, דומיין חתום יכיל גם את המפתח הציבורי שאיתו ניתן לאמת את החתימות הנ"ל.
- גם החתימות וגם המפתחות הן בעצמן רשומות DNS.
- כאמור בסעיף 2, האימות של התשובה החתומה מתבצע בצד הלקוח.
בעולם ה- DNS, צד הלקוח הוא ה- DNS אשר מוגדר אצל המשתמש (ברוב המקרים בצורה אוטומטית. במחשב, בטלפון הנייד וכו') למשל:- שרת ה- DNS הניתן ע"י ספק האינטרנט
- שרת ה- DNS הארגוני (למשל במקום העבודה)
- שירות DNS ציבורי דוגמת Google 8.8.8.8, Quad9 9.9.9.9, Cloudflare1.1.1
בשונה משרת DNS "אוטוריטטיבי" (אשר מפרסם את המידע), שרת ה- DNS בצד הלקוח לא מחזיק שום מידע. הוא מקבל את השאילתה מהמשתמש, ומחפש עבורו את המידע בשרתים אוטוריטטיביים. בסיום הוא מחזיר את התשובה שקיבל. אם התשובה חתומה, הוא זה שמאמת את נכונותה. הסבר מפורט יינתן בהמשך.
-
כפי שהוזכר קודם לכן, נוסף על אימות החתימה, תמיד יש לוודא גם את מהימנות המפתח החותם. המנגנון המקובל לאימות מפתח הוא תעודה דיגיטלית (סרטיפיקט). כיוון שב- DNSSEC אין סרטיפיקטים, המפתח צריך להיות חתום בעצמו.
- מקובל (אם כי לא חובה) שלצורך ביצוע חתימה של מפתח, מחוללים מפתח נוסף, שזהו תפקידו היחידי: לחתום על המפתח "הרגיל".
- המפתח "הרגיל", אשר חותם על כלל הרשומות, נקרא: ZSK – Zone Signing Key
- המפתח הנוסף, אשר חותם רק על מפתחות, נקרא: KSK – Key Signing Key
- לחילופין, ניתן להשתמש במפתח אחוד הנקרא: CSK – Combined Signing Key
הערות:
- CSK הינו פתרון מקובל, אולם במסמך זה נתייחס לחלופה הנפוצה של ZSK ו- KSK.
- כאמור, כל מפתח (ZSK ,KSK וגם CSK) וכל חתימה הן רשומת DNS לכל עניין ודבר.
- תפקידו של ה- KSK הוא לחתום על ה- ZSK, כלומר להיות ערב לנכונותו של המפתח "הרגיל". אולם מי ערב ל- KSK? כאן בא לידי ביטוי מנגנון האמון ב- DNSSEC, המאפשר לסמוך על ה-KSK. כיצד זה מתבצע:
מנגנון האמון מבוסס על המבנה ההיררכי של DNS. הארכיטקטורה של DNS היא כידוע במבנה של עץ: פרט לרמת השורש, לכל רמה ב- DNS יש רמה מעליה, אשר מצביעה עליה (הפניה שכזו בין רמות ב- DNS נקראת גם "דלגציה").
לכן, אם נציב ברמה שמעל הדומיין החתום מידע ייחודי אודות ה- KSK שלנו, אזי הרמה שמעל תהיה ערבה לנכונותו.
רשומת DNS, שתפקידה להצביע על ה- KSK של דומיין חתום, מתוך הרמה שמעליו, נקראת DS – Delegation signer . נתייחס בפרוטרוט לכל רשומה בהמשך, אולם כעת ניתן לומר כי רשומה זו מפרסמת טביעת אצבע (fingerprint) של KSK שנמצא רמה מתחת (טביעת האצבע היא HASH של המפתח). טביעת האצבע המתפרסמת ברשומת DS חייבת להתאים ל-KSK שאליו היא מתייחסת.דוגמא לשרשרת האמון בעץ ה- DNS:
בתחתית נמצא הדומיין החתום, במקרה זה isoc.org.il. הרמה שמעליו (org.il) מכילה רשומת DS שמתייחסת ל- KSK של isoc.org.il.
באופן דומה, גם ב- il יש DS שמצביע על ה- KSK של org.il, וכן הלאה.
כיוון שכל רשומת DS חתומה גם היא, יצרנו שרשרת אמון:בכל רמה יש רשומת DS אשר מצביעה על ה-KSK שמתחתיה, וכל DS כזה חתום בעצמו ע"י ZSK (שבעצמו חתום ע"י KSK), וחוזר חלילה עד ל- root העולמי, עוגן האמון שעליו אנחנו סומכים. לכן, תנאי ראשון לכך שדומיין ייחתם DNSSEC הוא שהרמה שמעליו תהיה חתומה.
דוגמא לשרשרת האמון בעץ ה- DNS בעמוד הבא:
דגשים
קיומה של רשומת DS מהווה הצהרה עקרונית כי הדומיין שאליו היא מתייחסת חתום.
יש לכך השלכות חשובות:
- אם קיימת רשומת DS, היא חייבת להתאים ל- KSK ברמה שמתחתיה.
- כל עוד יש DS, הרמה שמתחת חייבת לפרסם KSK מתאים.
אם מסיבה כלשהי אין התאמה בין ה-DS ל-KSK, או שה- KSK לא קיים
(למשל כיוון שנמחק ע"י אדמיניסטרטור) המשמעות היא חמורה:
- תהליך ההקמה של דומיין חתום DNSSEC:
פרסום ה- DS הוא השלב האחרון.
ראשית יש לחתום על הדומיין, לבצע בדיקות, ורק לאחר שהכל נמצא תקין, יש לפרסם DS. - כל עוד לא פורסם DS, מבחינת העולם לא הופעל DNSSEC. ניתן לבצע מניפולציות כולל מחיקה, החלפת מפתחות וכו', ללא פגיעה בשירות.
- במקרה שמסיבה כלשהי נדרש להפסיק DNSSEC על דומיין מסוים, התהליך הוא הפוך: קודם כל יש להסיר את ה- DS ורק אז ניתן לשנות או להסיר מפתחות.
אחרי שה- DS הוסר אפשר להתייחס לדומיין כאל דומיין "רגיל" שאינו חתום, גם אם הוא עדיין מכיל מפתחות וחתימות. רק כשאין רשומת DS ניתן למחוק מפתחות. - אסור! למחוק KSK לפני שה-DS שמתייחס אליו הוסר קודם לכן.
- יש לזכור שמרגע שה- DS הוסר או הוסף יש להמתין מספיק זמן (TTL של הרשומה) על מנת שהשינוי ייקלט בכל העולם.
- הסרה של DS היא לא פעולה שמבצעים כחלק מתפעול שוטף.
זוהי פעולה שמבצעים רק אם יודעים מה עושים. יש לבצע רק במקרה של החלפת מפתח או במקרה חירום, תקלה משביתה, כמפלט אחרון.