מודל הנתונים (DM) של צומת לא רלוונטי אם אי אפשר לבצע עליו פעולות. מודל האינטראקציה (IM) מגדיר את הקשר של DM של צומת עם DM של צמתים אחרים: שפה משותפת לתקשורת בין DM.
הצמתים יוצרים אינטראקציה זה עם זה באמצעות:
- קריאה והרשמה למאפיינים ולאירועים
- כתיבה למאפיינים
- הפעלת פקודות
בכל פעם שצומת יוצר רצף תקשורת מוצפן עם צומת אחר, נוצר ביניהם קשר של אינטראקציה. אינטראקציות יכולות לכלול עסקה אחת או יותר, ועסקאות יכולות לכלול פעולה אחת או יותר. פעולות הן הודעות ברמת ה-IM בין צמתים.
יש כמה פעולות נתמכות בטרנזקציות, כמו פעולת בקשת קריאה שמבקשת מאפיין או אירוע מצומת אחר, או התגובה שלה, פעולת דיווח הנתונים, שמעבירה את המידע מהשרת ללקוח.
אירועים להפעלה ויעדים
הצומת שיוזם את העסקה הוא היוזם, והצומת שמגיב הוא היעד. בדרך כלל, הצד היוזם הוא אשכול לקוחות והיעד הוא אשכול שרתים. עם זאת, יש חריגים לדפוס הזה, כמו אינטראקציות עם מינויים שמנותחות בהמשך הקטע הזה.
קבוצות
יכול להיות שצמתים ב-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. מטרת פסק הזמן הזה היא למנוע מתקפת יירוט על העסקה. האימות הזה חשוב במיוחד למכשירים שמאפשרים גישה לנכסים, כמו פותחי שערים ומנעולים.
כדי להבין מהן עסקאות מתוזמנות, כדאי להבין איך מתרחשות מתקפות יירוט ולמה עסקאות מתוזמנות חשובות.
התקפת יירוט
הדפוס של מתקפת יירוט הוא:
- דפנה שולחת ליוסי הודעה ראשונית, למשל פעולת בקשת כתיבה.
- אווה, אדם בתווך, מיירטת את ההודעה ומונעת מבוב לקבל אותה, למשל באמצעות שיבוש רדיו כלשהו.
- אליס לא מקבלת תשובה מבוב, אז היא שולחת הודעה שנייה.
- איב שוב מיירטת את ההודעה ומונעת מבוב לקבל אותה.
- חווה שולחת את ההודעה הראשונה שיירטה לתמר, כאילו היא הגיעה מדפנה.
- בוב שולח את התשובה לאליס (ולאיב).
- איב שומרת את ההודעה השנייה שיירטה כדי להפעיל אותה מחדש מאוחר יותר. מכיוון שדני לא קיבל את ההודעה השנייה המקורית שירטטה שלומית, הוא יקבל אותה. ההודעה הזו מייצגת פרצת אבטחה אם היא מכילה פקודה כמו 'פתיחת הנעילה'.
כדי למנוע סוגים כאלה של התקפות, התכונה 'פעולות מתוזמנות' מגדירה פסק זמן מקסימלי לעסקה בתחילת העסקה. גם אם איב תצליח לבצע את ששת השלבים הראשונים של וקטור המתקפה, היא לא תוכל להפעיל מחדש את ההודעה בשלב 7 בגלל פסק זמן שחלף בעסקה.
עסקאות מתוזמנות מגדילות את המורכבות ואת מספר הפעולות. לכן לא מומלץ להשתמש בהן בכל עסקה, אלא רק בפעולות קריטיות במכשירים שיש להם שליטה על נכסי אבטחה ופרטיות פיזיים או וירטואליים.
הפשטות של SDK
בקטעים Read Transactions (קריאת עסקאות), Write Transactions (כתיבת עסקאות) ו-Invoke Transactions (הפעלת עסקאות) מופיעה סקירה כללית של הפעולות במודל האינטראקציה שה-SDK מבצע.
המפתח שיוצר מוצר שמשתמש ב-Matter SDK בדרך כלל לא מבצע קריאות להפעלת פעולות ישירות. הפעולות מופשטות על ידי פונקציות SDK שיעטפו אותן באינטראקציה. עם זאת, חשוב להבין את הפעולות של IM כדי לספק למהנדס מידע מפורט על היכולות של Matter, וגם על השליטה המדויקת בהטמעה של ה-SDK.