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

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

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

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

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

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

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

יוזמים ומטרות

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

מספר הקבוצות

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

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

נתיבים

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

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

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

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

ובתוך אבני הבניין של ה-Path האלה, יכול להיות שהפונקציות endpoint ו-cluster יכללו גם אופרטורים של תווים כלליים לחיפוש כדי לבחור יותר ממכונה אחת של צומת.

מתוזמן ולא מתוזמן

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

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

מתקפת החטיפה

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

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

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

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

תקצירים של ערכות SDK

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

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