תרגול שמירת סודות¶
תרגיל ראשון - שני תהליכים ושתי זהויות¶
הריצו את secret.exe seal ואת secret.exe open בשני תהליכים נפרדים תחת אותו משתמש. תעדו exit code וגודל קובץ, בלי להדפיס את תוכנו המפוענח. במכונת המעבדה, תנו למשתמש בדיקה נוסף עותק של הקובץ ויכולת להריץ את התוכנית, ונסו לפענח איתו. הפרידו כשל פתיחת קובץ מכשל בתוך DPAPI.
צרו build נוסף שבו רק פעולת ההגנה מוסיפה CRYPTPROTECT_LOCAL_MACHINE. חזרו על הניסוי עם סוד מדומה. הסבירו מדוע הצלחה אצל המשתמש השני במצב הזה אינה באג בDPAPI, ואיזה גבול נשאר באחריות האפליקציה.
תרגיל שני - קובץ פגום¶
שמרו עותק של הblob המקורי. בדקו קובץ ריק, קובץ קטוע ועותק שבו שיניתם byte באמצע. התוכנית צריכה לסיים בכישלון בלי להחזיר plaintext חלקי ללקוח. אל תכתבו בדיקה שמחייבת קוד שגיאה מספרי זהה בכל גרסה.
כתבו בדיקת אוטומציה שמוודאת שקוד היציאה אינו אפס ושלא הודפס matches=1. החזירו את העותק התקין ואמתו שהתוכנית עדיין מצליחה, כדי להפריד בין קלט פגום לבין סביבת בדיקה שבורה.
תרגיל שלישי - חידוש סוד¶
תכננו מעבר ממפתח שרת ישן לחדש. התייחסו לקריסה אחרי קבלת החדש, אחרי שמירתו ולפני ביטול הישן. הגדירו אילו שדות נשמרים ברשומה, מה ניתן לרשום ללוג ואיך מזהים שהשירות באמת השתמש בחדש.
הגישו טבלת מצבים עם פעולת recovery לכל מצב. הניחו שהשרת מאפשר תקופת חפיפה בין שני מפתחות, אבל אינו מאפשר לשחזר מפתח שכבר בוטל.