โมเดลข้อมูล (DM) ของโหนดไม่เกี่ยวข้องหากเราดำเนินการกับโหนดไม่ได้ รูปแบบการโต้ตอบ (IM) จะกำหนดความสัมพันธ์ของ DM ของโหนด กับ DM ของโหนดอื่นๆ ซึ่งเป็นภาษาที่ใช้ร่วมกันสำหรับการสื่อสารระหว่าง DM
โหนดจะโต้ตอบกันโดยทำดังนี้
- การอ่านและการติดตามแอตทริบิวต์และเหตุการณ์
- การเขียนไปยังแอตทริบิวต์
- เรียกใช้คำสั่ง
เมื่อใดก็ตามที่โหนดสร้างลำดับการสื่อสารที่เข้ารหัสกับโหนดอื่น โหนดเหล่านั้นจะสร้างความสัมพันธ์แบบการโต้ตอบ การโต้ตอบอาจประกอบด้วยธุรกรรมอย่างน้อย 1 รายการ และธุรกรรมประกอบด้วยการดำเนินการอย่างน้อย 1 รายการ ซึ่งอาจถือเป็นข้อความระดับ IM ระหว่างโหนด

การดำเนินการหลายอย่างได้รับการรองรับในธุรกรรม เช่น การดำเนินการคำขออ่าน ที่ขอแอตทริบิวต์หรือเหตุการณ์จากโหนดอื่น หรือการตอบกลับ การดำเนินการรายงานข้อมูล ซึ่งนำข้อมูลกลับจากเซิร์ฟเวอร์ไปยัง ไคลเอ็นต์
ผู้เริ่มและเป้าหมาย
โหนดที่เริ่มธุรกรรมคือผู้เริ่ม ส่วนโหนดที่ตอบกลับคือเป้าหมาย โดยปกติแล้ว Initiator จะเป็นคลัสเตอร์ไคลเอ็นต์และ Target จะเป็นคลัสเตอร์เซิร์ฟเวอร์ อย่างไรก็ตาม รูปแบบนี้มีข้อยกเว้น เช่น ในการโต้ตอบเกี่ยวกับการติดตามที่วิเคราะห์เพิ่มเติมในส่วนนี้
กลุ่ม
โหนดใน 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 วิธี ได้แก่ แบบกำหนดเวลาและแบบไม่กำหนดเวลา ธุรกรรมที่กำหนดเวลาจะกำหนดการหมดเวลาสูงสุดสำหรับ การดำเนินการเขียน/เรียกใช้ที่จะส่ง การหมดเวลานี้มีวัตถุประสงค์เพื่อป้องกันการโจมตีแบบดักฟังในธุรกรรม โดยเฉพาะอย่างยิ่งสำหรับอุปกรณ์ที่ ควบคุมการเข้าถึงชิ้นงาน เช่น ที่เปิดประตูโรงรถและล็อก
หากต้องการทำความเข้าใจธุรกรรมที่กำหนดเวลา คุณควรทำความเข้าใจวิธีที่การโจมตีแบบดักฟัง เกิดขึ้นและเหตุผลที่ธุรกรรมที่กำหนดเวลาจึงมีความสำคัญ
การโจมตีแบบสกัด
การโจมตีแบบดักฟังมีรูปแบบดังนี้
- ขวัญใจส่งข้อความแรกให้บัญชา เช่น การดำเนินการคำขอเขียน
- อีฟซึ่งเป็นผู้โจมตีแบบ "คนกลาง" จะดักรับข้อความและป้องกันไม่ให้บ็อบรับข้อความดังกล่าวได้ เช่น ผ่านการรบกวนคลื่นวิทยุบางประเภท
- อลิสาไม่ได้รับการตอบกลับจากบ็อบ จึงส่งข้อความที่ 2
- อีฟดักฟังอีกครั้งและป้องกันไม่ให้บ็อบรับข้อความ
- อีฟส่งข้อความแรกที่ดักรับได้ให้บ็อบ โดยเสมือนว่าข้อความนั้นมาจากอลิซ
- บ็อบส่งคำตอบให้แอลลิส (และอีฟ)
- อีฟจะเก็บข้อความที่ดักฟังได้เป็นครั้งที่ 2 ไว้เพื่อเล่นซ้ำในภายหลัง เนื่องจากบ็อบไม่เคยได้รับข้อความที่ 2 ที่ถูกดักไว้จากอลิส บ็อบจึงจะยอมรับข้อความดังกล่าว ข้อความนี้แสดงถึงการละเมิดความปลอดภัยเมื่อข้อความเข้ารหัสคำสั่ง เช่น "เปิดล็อก"
Timed Actions จะตั้งค่า Transaction timeout สูงสุดเมื่อเริ่มธุรกรรมเพื่อป้องกันการโจมตีประเภทนี้ แม้ว่าอีฟจะสามารถดำเนินการตาม 6 ขั้นตอนแรกของเวกเตอร์การโจมตีได้ แต่ก็จะไม่สามารถเล่นข้อความซ้ำในขั้นตอนที่ 7 เนื่องจากหมดเวลาในการทำธุรกรรม
ธุรกรรมที่กำหนดเวลาจะเพิ่มความซับซ้อนและจำนวนการดำเนินการ ดังนั้นเราจึงไม่แนะนำให้ใช้กับธุรกรรมทุกรายการ แต่ควรใช้เฉพาะกับการดำเนินการที่สำคัญในอุปกรณ์ที่มีการควบคุมสินทรัพย์ด้านความปลอดภัยและความเป็นส่วนตัวจริงหรือเสมือน
การแยก SDK ออกเป็นส่วนๆ
ส่วนอ่านธุรกรรม เขียนธุรกรรม และ เรียกใช้ธุรกรรม จะแสดงภาพรวมระดับสูงของการดำเนินการในโมเดลการโต้ตอบที่ SDK ดำเนินการ
โดยปกติแล้ว นักพัฒนาแอปที่สร้างผลิตภัณฑ์ซึ่งใช้ Matter SDK จะไม่ทำการเรียกเพื่อดำเนินการโดยตรง แต่จะ สรุปการดำเนินการด้วยฟังก์ชัน SDK ที่จะห่อหุ้มการดำเนินการเหล่านั้นไว้ในการโต้ตอบ อย่างไรก็ตาม การทำความเข้าใจการดำเนินการ IM เป็นสิ่งสำคัญเพื่อให้วิศวกรมีความเชี่ยวชาญที่ดีเกี่ยวกับความสามารถของ Matter รวมถึงการควบคุมการใช้งาน SDK ได้อย่างละเอียด