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

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

מתוזמנות ולא מתוזמנות

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

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

התקפת יירוט

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

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

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

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

הפשטות של SDK

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

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