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

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

โหนดต่างๆ จะโต้ตอบระหว่างกันด้วยการดำเนินการต่อไปนี้

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

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

ลำดับชั้นของรูปแบบการโต้ตอบ
ภาพที่ 1: ลำดับชั้นของรูปแบบการโต้ตอบ

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

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

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

กลุ่ม

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

เพื่อให้การสื่อสารระดับกลุ่มเสร็จสมบูรณ์ (Groupcast) Matter จะใช้ประโยชน์จากข้อความ IPv6 Multicast และสมาชิกทุกคนใน Group จะมีที่อยู่ Multicast เดียวกัน

เส้นทาง

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

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

คุณประกอบเส้นทางใน Matter ได้โดยใช้ตัวเลือกใดตัวเลือกหนึ่งด้านล่าง

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

และภายในองค์ประกอบที่ใช้สร้างสรรค์เส้นทางเหล่านี้ endpoint และ cluster อาจรวมโอเปอเรเตอร์ไวลด์การ์ดเพื่อเลือกอินสแตนซ์ของโหนดมากกว่า 1 รายการด้วย

จับเวลาและไม่มีเวลา

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

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

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

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

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

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

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

การแอบสแตรกชันของ SDK

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

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