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

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

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

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

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

היררכיה של מודל אינטראקציה
איור 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 יכולים לכלול גם אופרטורים של תווים כלליים לבחירת יותר ממופע אחד של צומת.

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

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

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

התקפת יירוט

הדפוס של מתקפת יירוט הוא:

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

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

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

הפשטות של SDK

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

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