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