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

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

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

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

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

התקפת יירוט

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

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

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

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

הפשטות של SDK

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

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