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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การแยก SDK ออกเป็นส่วนๆ

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

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