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

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

โหนดจะโต้ตอบกันโดยทำสิ่งต่อไปนี้

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

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

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

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

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

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

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

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

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

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

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

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

นามธรรมของ SDK

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

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