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