โมเดลข้อมูล (DM) ของโหนดไม่เกี่ยวข้องหากเราดำเนินการกับโหนดไม่ได้ โมเดลการโต้ตอบ (IM) จะกำหนดความสัมพันธ์ของ DM ของโหนด กับ DM ของโหนดอื่นๆ ซึ่งเป็นภาษาที่ใช้ร่วมกันสำหรับการสื่อสารระหว่าง DM
โหนดจะโต้ตอบกันโดยทำดังนี้
- การอ่านและสมัครรับข้อมูลคุณลักษณะและเหตุการณ์
- การเขียนไปยังแอตทริบิวต์
- เรียกใช้คำสั่ง
เมื่อใดก็ตามที่โหนดสร้างลําดับการสื่อสารที่เข้ารหัสกับโหนดอื่น โหนดเหล่านั้นจะสร้างความสัมพันธ์การโต้ตอบ การโต้ตอบอาจประกอบด้วยธุรกรรมหนึ่งรายการหรือมากกว่า และธุรกรรมประกอบด้วยการดำเนินการหนึ่งรายการหรือมากกว่า ซึ่งสามารถเข้าใจได้ว่าเป็นข้อความระดับ IM ระหว่างโหนด
การดำเนินการต่างๆ ได้รับการรองรับในธุรกรรม เช่น การดำเนินการขออ่านที่ร้องขอแอตทริบิวต์หรือเหตุการณ์จากโหนดอื่น หรือการตอบสนองของโหนดนั้น การดำเนินการข้อมูลรายงาน ซึ่งนำข้อมูลกลับมาจากเซิร์ฟเวอร์ไปยังไคลเอนต์
ผู้ริเริ่มและเป้าหมาย
โหนดที่เริ่มธุรกรรมคือผู้เริ่ม ส่วนโหนดที่ตอบกลับคือเป้าหมาย โดยทั่วไป ผู้ริเริ่มคือคลัสเตอร์ไคลเอนต์ และเป้าหมายคือคลัสเตอร์เซิร์ฟเวอร์ อย่างไรก็ตาม รูปแบบนี้มีข้อยกเว้น เช่น ในการโต้ตอบเกี่ยวกับการติดตามที่วิเคราะห์เพิ่มเติมในส่วนนี้
กลุ่ม
โหนดใน Matter อาจเป็นของกลุ่ม กลุ่ม อุปกรณ์เป็นกลไกในการระบุที่อยู่และส่งข้อความไปยังอุปกรณ์หลายเครื่องใน การดำเนินการเดียวกันพร้อมกัน โหนดทั้งหมดในกลุ่มใช้ Group ID เดียวกัน ซึ่งเป็นจำนวนเต็ม 16 บิต
หากต้องการสื่อสารระดับกลุ่ม (Groupcast) Matter จะใช้ข้อความ IPv6 Multicast และสมาชิกกลุ่มทั้งหมดจะมีที่อยู่ Multicast เดียวกัน
เส้นทาง
เมื่อใดก็ตามที่เราต้องการโต้ตอบกับแอตทริบิวต์ เหตุการณ์ หรือคำสั่ง เราต้องระบุเส้นทางสำหรับการโต้ตอบนี้ ซึ่งก็คือตำแหน่งของแอตทริบิวต์ เหตุการณ์ หรือคำสั่งในลำดับชั้นโมเดลข้อมูลของโหนด ข้อควรระวังคือเส้นทางอาจใช้กลุ่มหรือตัวดำเนินการไวลด์การ์ดเพื่อจัดการกับหลายโหนดหรือ คลัสเตอร์พร้อมกัน ซึ่งจะรวมการโต้ตอบเหล่านี้และลด จำนวนการดำเนินการ
กลไกนี้มีความสำคัญในการเพิ่มการตอบสนองของการสื่อสาร ตัวอย่างเช่น เมื่อผู้ใช้ต้องการปิดไฟทั้งหมด ผู้ช่วยเสียงจะสร้างการโต้ตอบเดียวกับไฟหลายดวงภายในกลุ่มแทนที่จะเป็นการโต้ตอบแบบทีละรายการ หากผู้เริ่มสร้างการโต้ตอบแต่ละรายการกับหลอดไฟแต่ละดวง อาจทำให้เกิดเวลาในการตอบสนองของอุปกรณ์ที่มนุษย์รับรู้ได้ ซึ่งจะส่งผลให้อุปกรณ์หลายเครื่องตอบสนองต่อคำสั่งโดยมีความล่าช้าที่มองเห็นได้ระหว่างอุปกรณ์ ซึ่งมักเรียกว่า "เอฟเฟกต์ป๊อปคอร์น"
เส้นทางใน Matter สามารถประกอบได้โดยใช้หนึ่งในตัวเลือกด้านล่างนี้:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
และภายในบล็อกการสร้างเส้นทางเหล่านี้ endpoint และ cluster อาจมี
ตัวดำเนินการไวลด์การ์ดสำหรับการเลือกอินสแตนซ์โหนดมากกว่า 1 รายการด้วย
จับเวลาและไม่จับเวลา
การทำธุรกรรมการเขียนหรือการเรียกใช้มี 2 วิธี ได้แก่ Timed และ Untimed ธุรกรรมที่กำหนดเวลาจะกำหนดการหมดเวลาสูงสุดสำหรับ การเขียน/การเรียกใช้การดำเนินการที่จะส่ง การหมดเวลานี้มีวัตถุประสงค์เพื่อป้องกันการโจมตีแบบดักฟังในธุรกรรม โดยเฉพาะอย่างยิ่งสำหรับอุปกรณ์ที่ ควบคุมการเข้าถึงชิ้นงาน เช่น ที่เปิดประตูโรงรถและล็อก
ในการทำความเข้าใจธุรกรรมแบบกำหนดเวลา จำเป็นต้องทำความเข้าใจว่าการโจมตีสกัดกั้นสามารถเกิดขึ้นได้อย่างไร และเหตุใดธุรกรรมแบบกำหนดเวลาจึงมีความสำคัญ
การโจมตีสกัด
การโจมตีสกัดกั้นมีรูปแบบดังต่อไปนี้:
- ขวัญใจส่งข้อความแรกให้บัญชา เช่น การดำเนินการคำขอเขียน
- อีฟ ซึ่งเป็นคนกลาง สกัดกั้นข้อความและป้องกันไม่ให้บ็อบได้รับมัน โดยใช้วิธีการแทรกแซงทางวิทยุบางประเภท
- อลิสาไม่ได้รับการตอบกลับจากสุเทพ จึงส่งข้อความที่ 2
- อีฟสกัดกั้นอีกครั้งและป้องกันไม่ให้บ็อบรับมันได้
- อีฟส่งข้อความแรกที่ดักฟังได้ให้บ็อบ โดยทำราวกับว่าข้อความนั้นมาจากอลิซ
- บ็อบส่งคำตอบไปที่อลิซ (และอีฟ)
- อีฟเก็บข้อความที่ดักฟังได้เป็นครั้งที่ 2 ไว้เพื่อเล่นซ้ำในภายหลัง เนื่องจากบ็อบไม่เคยได้รับข้อความที่ 2 ที่ดักไว้จากอลิส บ็อบจึงจะยอมรับข้อความดังกล่าว ข้อความนี้แสดงถึงการละเมิดความปลอดภัยเมื่อข้อความเข้ารหัสคำสั่ง เช่น "เปิดล็อก"
Timed Actions จะตั้งค่า Transaction timeout สูงสุดเมื่อเริ่มธุรกรรมเพื่อป้องกันการโจมตีประเภทนี้ แม้ว่า Eve จะสามารถดำเนินการหกขั้นตอนแรกของเวกเตอร์การโจมตีได้ แต่ก็ไม่สามารถเล่นข้อความซ้ำในขั้นตอนที่ 7 ได้ เนื่องจากหมดเวลาการทำธุรกรรมแล้ว
การทำธุรกรรมแบบกำหนดเวลาจะเพิ่มความซับซ้อนและจำนวนการดำเนินการ ดังนั้นจึงไม่แนะนำให้ใช้กับทุกธุรกรรม แต่ใช้เฉพาะการดำเนินการที่สำคัญบนอุปกรณ์ที่มีการควบคุมทรัพย์สินด้านความปลอดภัยและความเป็นส่วนตัวทางกายภาพหรือเสมือนเท่านั้น
การแยกส่วน SDK
ส่วนอ่านธุรกรรม, เขียนธุรกรรม และ เรียกใช้ธุรกรรม จะให้ภาพรวมระดับสูงของการดำเนินการของโมเดลการโต้ตอบที่ดำเนินการโดย SDK
โดยปกติแล้ว นักพัฒนาแอปที่สร้างผลิตภัณฑ์ซึ่งใช้ Matter SDK จะไม่ทำการเรียกเพื่อดำเนินการกับ Actions โดยตรง แต่ Actions จะ ได้รับการแยกฟังก์ชัน SDK ที่จะห่อหุ้ม Actions ไว้ในการโต้ตอบ อย่างไรก็ตาม การทำความเข้าใจ IM Actions ถือเป็นสิ่งสำคัญในการให้วิศวกรมีความเชี่ยวชาญด้านความสามารถของ Matter เป็นอย่างดี รวมถึงสามารถควบคุมการใช้งาน SDK ได้อย่างละเอียด