תכונות בטיחות Safety Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
2 תזכורת: תכונות זמן ליניארי Linear Time Properties תכונות זמן-ליניארי מתארות קבוצת עקבות שהמערכת צריכה לייצר מכוונים ללוגיקה שבה ניתן יהיה לתאר התנהגויות חוקיות של מערכות 2 AP ω תכונת זמן ליניארי היא תת קבוצה של המילים האינסופיות :P מערכת מצבים TS מקיימת תכונת זמן ליניארי Traces TS P אם ורק אם TS P התכונה מתקיימת אם כל התנהגויות המערכת "חוקיות" מצב s S מקיים את,P סימון,s P כאשר Traces s P
3 תזכורת: שמורות )invariants( תכונת זמן ליניארי P inv היא שמורה אם קיימת נוסחה φ כך ש- P inv = { A 0 A 1 j 0. A j φ } )invariant condition( נקרא תנאי השמורה φ TS : תנאים שקולים ל TS P inv TS של π לכל מסלול trace π P inv L s φ לכל מצב s השייך למסלול של s Reach(TS) לכל מצב L s φ אינדוקציה: φ חייב להתקיים בכל מצב התחלתי נכונות φ נשמרת תחת כל מעבר )בתחום הנגיש(
4 בדיקת שמורות בדיקת שמורה עבור פסוק = φ האם התכונה מתקיימת בכל מצב נגיש? שימוש בגרסה של אלגוריתם סריקת גרף BFS( או )DFS בהנחה שמערכת המעברים סופית ביצוע חיפוש DFS אם מצאנו מצב s קדימה מסיקים ש φ אינו שמורה כך ש s φ אפשרות אחרת: חיפוש אחורה מתחילים מהמצבים בהם φ אינה מתקיימת )φ s( מחשבים את המצבים הקודמים (s) Pre באמצעות DFS או BFS אם הגענו למצב התחלתי ) s I( Pre מסיקים ש φ אינה שמורה
5 בדיקת שמורה באמצעות DFS קלט: פלט: מערכת מעברים סופית TS ונוסחה Á Á", מקיימת את השמורה "תמיד TS אם true אחרת false *( קבוצת המצבים בהם ביקרנו )* ;; := R set of states *( מחסנית מצבים "לטיפול" )* ²; := U stack of states *( כל המצבים ב R מקיימים את boolean b := true; )* Á for all s 2 I do od if s R then fi )* מתחילים DFS מכל מצב התחלתי *( visit(s)
6 בדיקת שמורה באמצעות DFS procedure visit(state s) )* פרוצדורה לביקור במצב *( push(s, U); )* דוחפים את המצב למחסנית *( R := R [ {s}; )* ומוסיפים אותו לקבוצת המצבים שכבר ביקרנו *( repeat s := top(u); if Post(s ) µ R then pop(u); *( בודקים אם s מקיימת את b := b Æ (s ² Á); )* Á else take s 2 Post(s ) n R; push(s, U); *( גילינו מצב נגיש חדש s R := R [ {s }; )* fi until ((U = ²) Ç :b) endproc
7 אלגוריתם שמחזיר גם דוגמה נגדית *( קבוצת המצבים בהם ביקרנו )* ;; := R set of states *( מחסנית מצבים "לטיפול" )* ²; := U stack of states boolean b := true; )* כל המצבים ב R מקיימים את Á *( while I R b do let s I R visit(s) od if b then return yes else return no, reverse(u) fi
8 זמן ס ב וכ י ות נניח שניתן למצוא s Post(s) בזמן θ( Post(s) ) הנחה תקפה כאשר מייצגים את Post(s) ע"י רשימות סמיכות )adjacency lists( TS סיבוכיות זמן בדיקת שמורה: O(N φ + M) N מסמל את מספר המצבים הנגישים Post(s) M = s S מסמל את מספר המעברים )בחלק הנגיש( של בדרך כלל לא מייצגים את רשימות הסמיכות באופן מפורש למשל: ניתן להשתמש בתיאור סינטקטי של התהליכים המקביליים כגרפי תוכנית Post(s) מתקבל מהכללים של יחס המעברים
9 תכונה של מצב / תכונה של ריצה הפסוקים האטומיים והפונקציה L לנו לדבר על תכונות של מצבים המתאימה אותם למצבים מ אפ ש רו ת )s p q )סימון: "q למשל: 1 "תהליך s "המצב נמצא בקטע הקריטי" מקיים את הפסוק p או את הפסוק אנחנו מתעניינים גם בתכונות של ריצות המערכת שאינן תכונות של מצבים, למשל "תהליך לא י ת ק ע בהמתנה לקטע הקריטי" לא תמיד מספיק לבדוק תכונות המצבים הנגישים כפי שבדקנו תכונות שמורה )invariants(
10 תכונות בטיחות properties( )safety תכונות בטיחות או כ פו ת דרישות על חלקים סופיים ממקטע מסלול ז"א שניתן לזהות ריצה בעייתית כבר מבחינת רישא סופית שלה תכונת בטיחות שאינה שמורה: "בין כל שני ביקורים במצב זאת לא תכונת שמורה, מסוכן צריך לבקר במצב אימות מנגנון האבטחה" כיוון שהיא לא תכונה של מצב בודד s 1 היא עדיין תכונה שנקרא לה "תכונת בטיחות": לכל ריצה אינסופית שמפירה את התכונה יש ר יש א )prefix( "רעה" במקרה זה: הרישא הרעה היא מסלול דוגמת מסוכן ו- s 2 מצב בו מאומת מנגנון האבטחה. s 1 s 2 s 3 s 1 s 3 s 1 י ת רו ן: ניתן להדגים "באג" באמצעות מסלול סופי באשר
11 תכונות בטיחות תכונת זמן ליניארי תכונת בטיחות ורק אם אם P safe היא ρ )finite prefix( σ לכל 2 AP ω P safe יש ר יש א סופית כך ש P safe σ 2 AP ω ρ is a prefix of σ = P safe נקראת ρ רישא רעה של P safe סימון: ) safe BadPref(P קבוצת הרישות הרעות של P safe אם: היא ρ רישא רעה מינימאלית של BadPref(P safe ) אבל אין רישא ממש של ρ ב ρ BadPref(P safe )
12 )invariant( דוגמה: תכונת שמורה טענה: כל תכונת שמורה היא תכונת בטיחות P inv הוכחה: עבור תנאי שמורה φ מעל AP ותכונת השמורה שלו כל המילים מהצורה + AP A 0 A 1 A n 2 כך ש A 0 φ,, A n 1 φ ו-,A n φ הן הרישות הרעות המינימאליות של P inv
13 דוגמה לתכונת בטיחות שאינה תכונת שמורה מכונה אוטומטית המספקת שירותי בנקאות )ATM( ")PIN( דרישה טבעית: "כסף ניתן רק לאחר שהוקלד קוד הסודי נכון תכונה זאת אינה שמורה מכיוון שהיא לא תכונה של מצב עדיין נקרא לה "תכונת בטיחות" property( )safety שמפירה את התכונה יש ר יש א )prefix( רעה סופית מכיוון שלכל ריצה יתרון של תכונות בטיחות: קבוצה רחבה יותר של תכונות שניתן לבדוק באמצעות גרסאות של אלגוריתמי חיפוש בגרף BFS( )DFS, תכונות שמורה הם מקרה פרטי של תכונות בטיחות )ראינו בשקף הקודם(
14 דוגמה: תכונות בטיחות לרמזור נניח yellow} AP = {red, green, המתאר איזה פנס דולק ברמזור. "תמיד אחד הפנסים דולק" הגדרה: } {q = A 0 A 1 A j רישות רעות: מילים סופיות שמופיעה בהן האות רישא רעה מינימאלית: רק האות האחרונה במילה היא "אף פעם לא מדליקים שני פנסים ביחד" הגדרה: 1} j {q = A 0 A 1 A רישות רעות: מילים סופיות שמופיעות בהן אותיות המכילות יותר מפסוק אטומי אחד רישא רעה מינימאלית: רק האות האחרונה במילה מכילה יותר מפסוק אטומי אחד "אור אדום נדלק רק אחרי אור צהוב" הגדרה: )} i 1 {q = A 0 A 1 red A i (i > 0 yellow A רישא רעה שאינה מינימאלית: {red} yellow yellow red red רישות רעות מינימאליות: {red} וגם {red}
15 המשך דוגמת הרמזור "אור אדום נדלק רק אחרי אור צהוב" {q = A 0 A 1 red A i i > 0 yellow A i 1 } לפעמים ניתן לתאר את הרישות הרעות המינימאליות כשפה רגולרית. לדוגמה, קבוצת הרישות הרעות המינימאליות עבור התכונה האחרונה היא השפה המתקבלת על ידי האוטומט:
16 כתיבה מפורשת של האותיות )קבוצות( אור אדום נדלק רק אחרי אור צהוב" "
17 תכונת בטיחות למכונת מכירת המשקאות דרישה טבעית : "מספר המטבעות שהוכנסו הוא לפחות מספר המשקאות שנתנו" לכל 0 :i 0 j i drink A j 0 j i pay A j רישות רעות: {pay}{drink}{drink} pay drink {pay}{drink}{drink} קל לבדוק שכל הגרסאות שהצגנו למכונות מכירת השתייה עומדות בדרישה זאת דוגמה לתכונת בטיחות שאינה רגולרית
18 תכונות ח י ות מול תכונות בטיחות תכונות בטיחות מבטאות דרישה "שמשהו רע לא יקרה" אפשר לעמוד בדרישה אם לא עושים כלום! כך, אף פעם לא נגיע למצב "רע" נוסיף גם לכן: תכונות ח י ות כדי לדרוש שתהייה התקדמות ]Lamport 1977[ דרישות ח י ות אומרות: בסופו של דבר יקרה "משהו טוב"
19 המחשה ח י ות תכונות בטיחות תכונות "משהו טוב יקרה בסופו של דבר" תמיד יכול להיות "שהדבר הטוב" יקרה "משהו רע לא יקרה" לא ניתן לתקן את הדבר הרע