แนวคิดของโมเดลการโต้ตอบ

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

โหนดโต้ตอบกันโดยทำดังนี้

  • อ่านและสมัครใช้บริการแอตทริบิวต์และเหตุการณ์
  • เขียนแอตทริบิวต์
  • เรียกใช้คำสั่ง

เมื่อใดก็ตามที่โหนดสร้างลำดับการสื่อสารที่เข้ารหัสกับโหนดอื่น โหนดเหล่านั้นจะมีความสัมพันธ์แบบการโต้ตอบ การโต้ตอบอาจประกอบด้วย ธุรกรรมอย่างน้อย 1 รายการ และธุรกรรมประกอบด้วย การดำเนินการอย่างน้อย 1 รายการ ซึ่งเข้าใจได้ว่าเป็นข้อความระดับ IM ระหว่าง โหนด

ลําดับชั้นของโมเดลการโต้ตอบ
รูปที่ 1: ลำดับชั้นของโมเดลการโต้ตอบ

ระบบรองรับการดำเนินการหลายอย่างในธุรกรรม เช่น การดำเนินการคำขออ่านที่ขอแอตทริบิวต์หรือเหตุการณ์จากโหนดอื่น หรือการตอบกลับ การดำเนินการรายงานข้อมูล ซึ่งส่งข้อมูลจากเซิร์ฟเวอร์กลับไปยังไคลเอ็นต์

ผู้เริ่มและเป้าหมาย

โหนดที่เริ่มธุรกรรมคือผู้เริ่ม ส่วนโหนดที่ ตอบกลับคือเป้าหมาย โดยปกติแล้วผู้เริ่มจะเป็นคลัสเตอร์ไคลเอ็นต์และเป้าหมายจะเป็นคลัสเตอร์เซิร์ฟเวอร์ อย่างไรก็ตาม รูปแบบนี้มีข้อยกเว้น เช่น ในการโต้ตอบการสมัครใช้บริการ ที่วิเคราะห์เพิ่มเติมในส่วนนี้

กลุ่ม

โหนดใน 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 วิธี ได้แก่ กำหนดเวลา และไม่กำหนดเวลา ธุรกรรมที่กำหนดเวลาจะกำหนดการหมดเวลาสูงสุด สำหรับการดำเนินการเขียน/เรียกใช้ที่จะส่ง จุดประสงค์ของการหมดเวลานี้คือเพื่อป้องกันการโจมตีแบบดักรับ ในธุรกรรม ซึ่งใช้ได้กับอุปกรณ์ที่จำกัดการเข้าถึงสินทรัพย์ เช่น ที่เปิดประตูโรงรถและล็อก

การทำความเข้าใจธุรกรรมที่กำหนดเวลาจะช่วยให้เข้าใจวิธีที่การโจมตีแบบดักรับเกิดขึ้นได้และเหตุผลที่ธุรกรรมที่กำหนดเวลามีความสำคัญ

การโจมตีแบบดักรับ

การโจมตีแบบดักรับมีรูปแบบดังนี้

  1. อลิสส่งข้อความเริ่มต้นถึงบ็อบ เช่น การดำเนินการคำขอเขียน
  2. อีฟซึ่งเป็นผู้โจมตีแบบ Man-in-the-Middle ดักรับข้อความและป้องกันไม่ให้บ็อบได้รับข้อความ เช่น ผ่านการรบกวนทางวิทยุบางประเภท
  3. อลิสไม่ได้รับการตอบกลับจากบ็อบ จึงส่งข้อความที่ 2
  4. อีฟดักรับอีกครั้งและป้องกันไม่ให้บ็อบได้รับข้อความ
  5. อีฟส่งข้อความแรกที่ดักรับไปยังบ็อบ ราวกับว่าข้อความมาจากอลิส
  6. บ็อบส่งการตอบกลับไปยังอลิส (และอีฟ)
  7. อีฟเก็บข้อความที่ 2 ที่ดักรับไว้เพื่อเล่นซ้ำในภายหลัง เนื่องจากบ็อบไม่เคยได้รับข้อความที่ 2 ที่ดักรับจากอลิส บ็อบจึงยอมรับข้อความดังกล่าว ข้อความนี้แสดงถึงการละเมิดความปลอดภัยเมื่อข้อความเข้ารหัสคำสั่ง เช่น "เปิดล็อก"

การดำเนินการที่กำหนดเวลาจะกำหนดการหมดเวลาสูงสุดของธุรกรรมเมื่อเริ่มธุรกรรมเพื่อป้องกันการโจมตีประเภทนี้ แม้ว่าอีฟจะดำเนินการ 6 ขั้นตอนแรกของเวกเตอร์การโจมตีได้ แต่ก็จะไม่สามารถเล่นซ้ำข้อความในขั้นตอนที่ 7 ได้เนื่องจากการหมดเวลาของธุรกรรม

ธุรกรรมที่กำหนดเวลาจะเพิ่มความซับซ้อนและจำนวนการดำเนินการ จึงไม่แนะนำให้ใช้กับทุกธุรกรรม แต่ใช้เฉพาะการดำเนินการที่สำคัญในอุปกรณ์ที่มีการควบคุมสินทรัพย์ด้านความปลอดภัยและความเป็นส่วนตัวทางกายภาพหรือเสมือน

การแยกรายละเอียด SDK

ส่วนธุรกรรมอ่าน, ธุรกรรมเขียนและ ธุรกรรมเรียกใช้ จะให้ภาพรวมระดับสูงของการดำเนินการโมเดลการโต้ตอบที่ SDK ดำเนินการ

โดยปกติแล้วนักพัฒนาซอฟต์แวร์ที่สร้างผลิตภัณฑ์ซึ่งใช้ Matter SDK จะไม่เรียกใช้เพื่อดำเนินการโดยตรง แต่ฟังก์ชัน SDK จะแยกรายละเอียดการดำเนินการและห่อหุ้มการดำเนินการเหล่านั้นไว้ในการโต้ตอบ อย่างไรก็ตาม การทำความเข้าใจการดำเนินการ IM มีความสำคัญต่อการช่วยให้วิศวกรมีความเชี่ยวชาญที่ดีเกี่ยวกับความสามารถของ Matter รวมถึงการควบคุมการติดตั้งใช้งาน SDK ได้อย่างละเอียด