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

מה שמצב המפתח הסטטי אינו יכול לעשות

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

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

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

מעבר ל-TLS בלי לתכנן מחדש את הקישור

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

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

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

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

מי מחדש מה, ומתי

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

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

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

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

לקבל את השינוי

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

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

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

מאמרים קשורים