מושגים של מודלים של אינטראקציות

מודל הנתונים (DM) של צומת לא רלוונטי אם אי אפשר לבצע בו פעולות. מודל האינטראקציה (IM) מגדיר את הקשר של DM של צומת עם DM של צמתים אחרים: שפה משותפת לתקשורת בין DMs.

הצמתים יוצרים אינטראקציה ביניהם באמצעות:

  • קריאה של מאפיינים ואירועים והרשמה אליהם
  • כתיבת מאפיינים
  • הפעלת פקודות

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

היררכיית מודל האינטראקציה
איור 1: היררכיית מודל האינטראקציה

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

גורמים מפעילים ויעדים

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

קבוצות

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

כדי לבצע תקשורת ברמת הקבוצה (Groupcast), Matter משתמש בהודעות Multicast של IPv6, וכל חברי הקבוצה משתמשים באותה כתובת Multicast.

נתיבים

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

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

אפשר ליצור נתיב ב-Matter באחת מהדרכים הבאות:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

בנוסף, בתוך אבני הבניין של הנתיב, endpoint ו-cluster יכולים לכלול גם אופרטורים של תווים כלליים (wildcards) לבחירת יותר ממכונה אחת של Node.

משחקים עם זמן מוגבל ומשחקים ללא זמן מוגבל

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

כדי להבין את הטרנזקציות המתוזמנות, כדאי להבין איך יכולות להתרחש התקפות מניעת שירות (DoS) ומדוע הטרנזקציות המתוזמנות חשובות.

התקפת Intercept

לדפוס של התקפת Intercept יש את המבנה הבא:

  1. עינת שולחת לירון הודעה ראשונית, למשל פעולת בקשה לכתיבה.
  2. אדם באמצע (Man-in-the-Middle), איווה, מיירטת את ההודעה ומונע מבועז לקבל אותה, למשל באמצעות חסימה של תדר רדיו.
  3. עינת לא מקבלת תשובה מבועז, ולכן שולחת הודעה שנייה.
  4. שוב, נעמה מיירטת את ההודעה ומוודאת שבוב לא יקבל אותה.
  5. נעמה שולחת את ההודעה הראשונה שנלכדה לבועז, כאילו היא הגיעה מאילנה.
  6. בוב שולח את התשובה לאליס (ולאיווה).
  7. נעמה שומרת את ההודעה השנייה שנלכדה כדי להפעיל אותה מחדש מאוחר יותר. מכיוון שרון אף פעם לא קיבל את ההודעה השנייה המקורית שחוסמה על ידי אלה, הוא יקבל אותה. ההודעה הזו מייצגת פרצת אבטחה כשהיא מכילה קוד לפעולה כמו 'פתיחת מנעול'.

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

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

הפשטות של SDK

בקטעים קריאת טרנזקציות, כתיבת טרנזקציות והפעלת טרנזקציות מפורטת סקירה כללית של הפעולות של מודל האינטראקציה שמבוצעות על ידי ה-SDK.

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