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

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

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

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

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

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

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

เงื่อนไขเริ่มต้นและเป้าหมาย

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

กลุ่ม

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

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

เส้นทาง

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

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

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

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

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

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

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

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

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

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

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

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

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

การแยกส่วน SDK

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

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