מודל הנתונים (DM) של צומת לא רלוונטי אם אנחנו לא יכולים לבצע פעולות עליהם. מודל האינטראקציה (IM), מגדיר את קשר DM של הצומת עם הצ'אט של צמתים אחרים: שפה נפוצה לתקשורת בין צ'אטים.
הצמתים מקיימים אינטראקציה אחד עם השני בדרכים הבאות:
- קריאה והרשמה למאפיינים ולאירועים
- כתיבה למאפיינים
- הפעלת פקודות
בכל פעם שצומת יוצר רצף תקשורת מוצפן עם הצומת, הם מגדירים קשרי אינטראקציה. האינטראקציות יכולות להיות כוללים עסקה אחת או יותר, והעסקאות כוללות אחת או יותר מהפעולות שניתן להבין כהודעות ברמת IM צמתים.
יש תמיכה בכמה פעולות בטרנזקציות, כמו פעולת בקשת קריאה שמבקשת מאפיין או אירוע מצומת אחר, או התגובה שלה, פעולת דיווח על נתונים, שמעבירה את המידע חזרה מהשרת ללקוח.
יוזמים ומטרות
הצומת שמתחיל את העסקה הוא הגורם המבצע, והצומת שמגיב הוא היעד. בדרך כלל המאתחל הוא אשכול לקוח, היעד הוא אשכול שרתים. עם זאת, יש חריגים לדפוס הזה, כמו בקטע אינטראקציות עם מינויים בחלק התחתון של הקטע הזה.
קבוצות
יכול להיות שצמתים ב-Matter שייכים לקבוצה. קבוצה של מכשירים הוא מנגנון לשליחת הודעות ולשליחת הודעות למספר מכשירים ב- אותה פעולה בו-זמנית. כל הצמתים בקבוצה חולקים את אותה קבוצה ID, מספר שלם בפורמט 16 ביט.
כדי לתקשר ברמת הקבוצה (Groupcast), Matter משתמש ב-IPv6 Multicast הודעות, ולכל חברי הקבוצה יש את אותו Multicast address.
נתיבים
בכל פעם שאנחנו רוצים ליצור אינטראקציה עם מאפיין, אירוע או פקודה, אנחנו צריכים לציין את הנתיב של האינטראקציה הזו: המיקום של המאפיין, האירוע או Command בהיררכיה של מודל הנתונים של צומת. אזהרה היא שבשבילים להשתמש גם בקבוצות או באופרטורים של תווים כלליים לחיפוש כדי לטפל במספר צמתים אשכולות בו-זמנית, שצוברים את האינטראקציות האלה, וכך מצמצמים את מספר הפעולות.
המנגנון הזה חשוב לשיפור הרספונסיביות של התקשורת. לדוגמה, כשמשתמש רוצה לכבות את כל הנורות, עוזרת הקול יכולה ליצור אינטראקציה אחת עם כמה נורות בקבוצה, במקום רצף של אינטראקציות נפרדות. אם הגורם המפעיל יוצר אינטראקציות נפרדות עם כל נורית, ייתכן שייווצר זמן אחזור שאנשים יוכלו להבחין בו בתגובה של המכשיר. האפקט הזה גורם למכשירים מרובים להגיב עם עיכובים גלויים ביניהן. מצב כזה נקרא בדרך כלל 'אפקט פופקורן'.
אפשר ליצור נתיב ב-Matter באחת מהדרכים הבאות:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
ובתוך אבני הבניין האלה של הנתיבים, endpoint
ו-cluster
עשויים לכלול גם
אופרטורים של תווים כלליים לחיפוש לבחירה של יותר ממופע אחד של צומת.
מתוזמנות ולא מתוזמנות
יש שתי דרכים לבצע עסקת כתיבה או הפעלה: מתוזמנת ו לא מוגבל בזמן. עסקאות מתוזמנות קובעים זמן קצוב לתפוגה עבור כתיבה/הפעלה של פעולה לשליחה. מטרת הזמן הקצוב לתפוגה היא למנוע מתקפת ירוט בעסקה. הוא רלוונטי במיוחד למכשירים שמאפשרים גישה לנכסים, כמו מנעולים ופותחי מוסכים.
כדי להבין עסקאות מתוזמנות, כדאי להבין איך מתקפות יירוט. יכולה לקרות ולמה עסקאות מתוזמנות הן חשובות.
מתקפת יירוט
לדפוס של התקפת Intercept יש את המאפיינים הבאים:
- אליס שולחת ליוסי הודעה ראשונית, כגון פעולת כתיבה של בקשה.
- Eve, אדם בתווך, מיירט את ההודעה ומונעת מבוב לקבל אותו, למשל באמצעות סוג כלשהו של שיבושים ברדיו.
- ליאל, שלא מקבלת תגובה מיוסי, שולחת הודעה שנייה.
- שוב, נעמה מיירטת את ההודעה ומונעת מבוב לקבל אותה.
- איב שולחת ליוסי את ההודעה הראשונה שהושגה, כאילו היא הגיעה אליס.
- יוסי שולח את התשובה אל ליאל (וגם לאיב).
- Eve מחזיקה את ההודעה השנייה שנחשפה להקלטה חוזרת מאוחר יותר. מכיוון שבוב אף פעם קיבל את ההודעה המקורית השנייה שיירוטה מליס, הוא יקבל את זה. ההודעה הזו מייצגת תקרית אבטחת מידע כשההודעה מקודדת למשל "open lock".
כדי למנוע התקפות מסוג זה, התכונה 'פעולות מתוזמנות' מגדירה עסקה מקסימלית הזמן הקצוב לתפוגה בתחילת העסקה. גם אם Eve מצליחה לבצע ששת השלבים הראשונים של הווקטור ההתקפה, הוא לא יוכל להפעיל מחדש את ההודעה. בשלב 7 עקב זמן קצוב שפג תוקפו בעסקה.
עסקאות מתוזמנות מגדילות את המורכבות ואת מספר הפעולות. לכן הם לא מומלץ לכל עסקה, אלא רק את הפעולות הקריטיות מכשירים שיש להם שליטה על נכסי אבטחה ופרטיות פיזיים או וירטואליים.
פשטות ה-SDK
בקטעים קריאת עסקאות. לכתוב עסקאות. הפעלת עסקאות לספק סקירה כללית ברמה גבוהה של הפעולות במודל האינטראקציה שבוצעו SDK.
המפתח שיוצר מוצר שמבוסס על ה-SDK של Matter בדרך כלל לא מבצע קריאות לביצוע פעולות באופן ישיר, הפעולות מופשט בפונקציות SDK שיהפכו אותן לאינטראקציה. עם זאת, חשוב להבין את פעולות ה-IM כדי לספק למהנדס הבנה טובה של היכולות של Matter, וגם שליטה מדויקת בהטמעת ה-SDK.