אבטחה

    קישורים עם תפוגה: הסוד מושמד, לא רק מפסיק להפנות

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

    W. Miller · עודכן · על LinkPilot

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

    על מה תפוגה מגינה בפועל?

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

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

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

    תפוגה ומחיקה לאחר קריאה מכסות כשלים שונים

    מבלבלים בין שני המנגנונים האלה כל הזמן. הם בלתי תלויים זה בזה, וההגדרה החזקה ביותר משתמשת בשניהם:

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

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

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

    תרחישחלון זמןלמה
    מסירה בזמן אמת (צ'אט, שיחה, שיתוף מסך)1 שעה (ההגדרה הקצרה ביותר)הנמען זמין; מחיקה לאחר קריאה סוגרת את הקישור ברגע שהוא קורא
    אימייל לנמען מוכר ופעיל1 שעהמכסה עיכוב בתיבת הדואר בלי להשאיר חלון פתוח למשך הלילה
    מסירה מתוכננת (קליטה מחר ב-10 בבוקר)24 שעותשורד שינויים בלוח הזמנים, ועדיין מת עד יום המחרת
    נמען באזור זמן רחוק24–48 שעותייתכן שיום העבודה שלו לא חופף לשלכם בכלל
    כל דבר שצריך יותר מ-7 ימיםעצרוקישור הוא לא הכלי הבסיסי הנכון; השתמשו בכספת

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

    מסירה מתוזמנת, שלב אחר שלב

    מהנדסת חדשה מתחילה לעבוד מחר ב-10:00. אתם צריכים למסור לה את הסיסמה לגישת קריאה בלבד למסד הנתונים של סביבת הייצור.

    1. 09:55: צרו את הקישור הסודי מחשבון LinkPilot שלכם, עם מחיקה לאחר קריאה, ביטוי סיסמה ותפוגה מותאמת אישית ב-11:00. תפוגה לפי שעה מסוימת וביטוי סיסמה הם שתיהן תכונות של Pro. ההגדרות הקבועות למשתמשים מחוברים הן 1 שעה, 24 שעות או 7 ימים, והכלי ללא חשבון מגדיר 7 ימים.
    2. 09:56: שלחו את הקישור באימייל.
    3. 09:58: שלחו את ביטוי הסיסמה ב-SMS או בהודעה פרטית ב-Slack, בערוץ אחר מזה של הקישור, כך שערוץ אחד שדלף לא יספיק.
    4. 10:05: הנמענת פותחת את הקישור, מזינה את ביטוי הסיסמה וקוראת את הסיסמה פעם אחת. הקישור נמחק.
    5. 10:30: בדקו את יומן הביקורת. צפייה אחת, בשעה הנכונה, ממיקום סביר. סיימתם.
    6. אם הקישור לא נפתח עד 10:30: בטלו את הקישור, פנו אליה ושתפו מחדש בזמן אמת. אל תסתפקו בהמתנה לתפוגה; קישור פעיל שלא נפתח הוא חלון פתוח.

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

    מקרי קצה שכדאי להכיר

    סורקי אימייל לא צורכים את הזמן, וגם לא את הסוד

    כלי אבטחת אימייל בארגונים פותחים כתובות URL ברגע שההודעה מגיעה. קישור סודי שבנוי היטב מתייחס לבקשות האלה כבקשות למטא-נתונים: נקודת הקצה של ההצגה ב-LinkPilot מחזירה רק סטטוס בבקשת GET, וצפייה נרשמת רק בהצגה מפורשת בבקשת POST. לכן סורק שפונה לקישור ב-09:56 לא מוחק אותו ולא מגלה לסורק שום דבר שימושי. מה שאי אפשר למנוע מסורקים לעשות הוא לראות שנשלחה כתובת URL. גם זו סיבה לשלוח את ביטוי הסיסמה בערוץ אחר.

    הנמען בדקה ה-59

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

    חישובי אזורי זמן

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

    היבט הציות לרגולציה

    התפוגה היא גם היישום המעשי של שני עקרונות שמופיעים ברוב חוקי הפרטיות המודרניים: צמצום מידע והגבלת אחסון (ב-GDPR, סעיפים 5(1)(c) ו-5(1)(e)). אם אתם חייבים להעביר מידע אישי, כמו מסמך זיהוי, רשומת לקוח או פרטי גישה שקשורים לאדם מסוים, הרבה יותר קל להסביר למבקר קישור שמוכח שהוא מפסיק להתקיים אחרי חלון זמן מוגבל מאשר "זה נמצא איפשהו במערכת האימייל". יומן ביקורת שמראה אירועי יצירה, צפייה ותפוגה לכל שיתוף הופך את הטענה שלכם לגבי משך השמירה לראיה במקום להצהרה. שום דבר מזה לא הופך כלי ל"תואם GDPR" בפני עצמו, כי ציות הוא תכונה של התהליך כולו. אבל משך חיים מוגבל ויומני אירועים הם חומר הגלם.

    במה תפוגה לא עוזרת

    תפוגה לא מחליפה את אלה:

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

    הדפוס השגוי של "אני אאריך את זה"

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

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

    רשימת גבולות כנה:

    • גישה חוזרת. אם מישהו יצטרך את הערך גם בשבוע הבא, שמרו אותו במנהל סיסמאות ושתפו את הפריט מהכספת. שליחה חוזרת של קישורים לפי לוח זמנים היא כספת עם יותר שלבים ועם פחות הבטחות.
    • צרכנים שהם מכונות. צינורות CI ושירותים צריכים למשוך סודות ממנהל סודות (או ממאגר הסודות המובנה של הפלטפורמה), ולא לפתוח כתובות URL חד-פעמיות.
    • הפצה רחבה. קישור שחמישה עשר אנשים צריכים הוא לא מסירה של סוד. זו בקרת גישה, והיא שייכת למערכת שיש בה בקרת גישה.

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

    מקורות

    כלים למאמר הזה

    שאלות נפוצות

    LinkPilot שולח קישור סודי שנמחק אחרי שפותחים אותו.

    מוצפן בדפדפן שלכם, מוצג פעם אחת ואז מושמד. ללא חשבון.

    יצירת קישור סודי

    לקריאה נוספת

    אבטחה

    הצפנה בצד הלקוח לשיתוף סודות: על מה היא מגינה ועל מה לא

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

    אבטחה

    שיתוף חד-פעמי של פרטי התחברות בקליטת לקוחות

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

    אבטחה

    איך משתפים הודעה רגישה בקישור שאפשר לבטל

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