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