סיסמת ה-VPN שלך פרטית רק כמו המאמת שלה
הצפנת המנהרה מכסה רק את קטע התעבורה. הרכיב שמאמת את הסיסמה עדיין מקבל אותה, וגיבוב מאוחסן מגן על שלב מאוחר לגמרי.
עברו על ארבע שאלות לגבי כל התחברות VPN: מה מגן על הסיסמה בזמן המעבר, איזה רכיב מקבל אותה, מה אותו רכיב עושה איתה, ומה נשמר לאחר מכן. כל תשובה היא בקרה אחרת, ותשובה חזקה לאחת לא אומרת דבר על האחרות. הטעות היא להתייחס להצפנת המנהרה כאילו היא מכסה את כל הארבע. היא מכסה את הראשונה, ורק את הראשונה.
שאלו מי מסיים את ההפעלה ולא אם ההפעלה מוצפנת.
מוצפנת למי, בדיוק?
TLS מגן על הסיסמה בין הלקוח לבין מה שמסיים את החיבור. אם נקודת הקצה הזו היא שער ה-VPN, קוד האימות של השער רואה את הסיסמה בטקסט גלוי, מאמת אותה, ומעביר הלאה אותה או ערך נגזר. זהו התכנון המיועד, לא דליפה. צופה ברשת על המסלול לא לומד דבר שימושי, והרכיב שמבצע את האימות לומד כל מה שהוא צריך.
קהילת OpenVPN מתעדת זאת במפורש: auth-user-pass-verify מעביר את פרטי הכניסה שהוגשו אל סקריפט או תוסף אימות. זהו מסירה מכוונת בין רכיבים, והיא שייכת למודל האמון כצד בעל שם.
המאמת רואה את הסיסמה
ברגע שרכיב מקבל סיסמה כדי לאמת אותה, בקרות הגישה, הרישום ואיכות הקוד שלו קובעים אם הסוד נשאר סגור. סקריפט שכותב את פרטי הכניסה ליומן, או תוסף ששומר אותם במטמון, יוצר חשיפה גדולה בהרבה מזו של הפרוטוקול. הגישה תלויה בארכיטקטורה ובתפקידים ולא במנהרה, ולכן בעל השירות ששולט במאמת שייך להערכה.
שיטות שונות חושפות חומר שונה. אימות באמצעות תעודה מוכיח מפתח פרטי בלי לשלוח אותו, וזרימת פדרציה יכולה להשאיר את הסיסמה אצל ספק הזהות תוך הוצאת קביעה מוגבלת ל-VPN. התכנונים האלה מצמצמים את המעגל; אף אחד מהם לא מבטל כל צד מהימן.
גיבובים מאוחסנים מגינים על שלב אחר
הנחיות NIST מפרידות בין שידור מוגן לבין אחסון עמיד של המאמת. המלחה וסכימת גיבוב בעלת עלות מטפלות באיום של המאמת המאוחסן, כלומר במה שקורה בדיעבד אם מסד נתונים דולף. הן אינן עושות דבר לרכיב בזמן ריצה שחייב לקבל את הקלט כדי להשוות אותו. קריאת ההנחיות כאילו הן מבטיחות סודיות בזמן ריצה היא שגיאת קטגוריה.
לכן מאגר סיסמאות מגובב היטב וסקריפט אימות חשוף יכולים להתקיים יחד במוצר אחד בלי סתירה.
בחירת שיטה שמצמצמת את המעגל
אם הדרישה היא שהשער לעולם לא יקבל סיסמה לשימוש חוזר, בחרו שיטה שמבטיחה זאת באמת; החלפת צופן נתונים לא יוצרת את התכונה הזו. אימות התעודה של שרת ה-VPN אומר לכם לאיזה עמית הגעתם; הוא לא אומר דבר על האופן שבו אותו עמית מטפל בפרטי הכניסה לאחר מכן. שמרו על אימות השרת, השתמשו בפרטי כניסה נפרדים לכל שירות, ופעלו לפי זרימת הזהות הנתמכת בארגון.
רשמו את הצד שמקבל את הסיסמה, את הצד שמאמת אותה ואת הצורה שבה היא נשמרת. שלוש התשובות האלה שייכות לצד פרופיל החיבור, משום שהן שורדות כל מנהרה מסוימת.
השאלה השימושית אינה אם הסיסמה מוצפנת, אלא ממי היא מוסתרת, איזה רכיב מקבל אותה ואיזו צורה שורדת לאחר מכן.