Khái niệm mô hình tương tác

Mô hình dữ liệu (DM) của một nút sẽ không phù hợp nếu chúng tôi không thể thực hiện các thao tác trên nút đó. Mô hình tương tác (IM) xác định mối quan hệ DM của Nút với DM của các Nút khác: một ngôn ngữ chung để giao tiếp giữa các DM.

Các nút tương tác với nhau bằng cách:

  • Đọc và đăng ký các thuộc tính và sự kiện
  • Ghi vào thuộc tính
  • Lệnh gọi

Mỗi khi một Nút thiết lập một trình tự giao tiếp đã mã hoá với một Nút khác, chúng sẽ tạo thành một mối quan hệ Tương tác. Hoạt động tương tác có thể bao gồm một hoặc nhiều Giao dịch và Giao dịch bao gồm một hoặc nhiều Thao tác (có thể được hiểu là thông báo cấp IM giữa các Nút).

Hệ phân cấp mô hình tương tác
Hình 1: Mô hình hệ phân cấp tương tác

Một số Hành động được hỗ trợ trên các Giao dịch, chẳng hạn như Hành động yêu cầu đọc để yêu cầu một Thuộc tính hoặc Sự kiện từ một nút khác, hoặc phản hồi của Hành động báo cáo dữ liệu nhằm chuyển thông tin từ máy chủ về ứng dụng.

Trình khởi tạo và Mục tiêu

Nút bắt đầu Giao dịch là Trình khởi tạo, trong khi Nút phản hồi là Mục tiêu. Thông thường, Trình khởi tạo là một cụm ứng dụng và Mục tiêu là một cụm máy chủ. Tuy nhiên, có những ngoại lệ đối với mẫu này, chẳng hạn như trong Hoạt động tương tác của gói thuê bao được phân tích sâu hơn trong phần này.

Nhóm

Các nút trong Matter có thể thuộc về một Nhóm. Nhóm thiết bị là cơ chế để xử lý và gửi đồng thời thông báo đến nhiều Thiết bị trong cùng một Hành động. Tất cả các Nút trong một Nhóm đều có cùng Mã nhóm, một số nguyên 16 bit.

Để hoàn thành hoạt động giao tiếp cấp nhóm (Groupcast), Matter sẽ tận dụng các thông báo Multicast của IPv6 và mọi thành viên trong Group đều có cùng địa chỉ Multicast.

Đường dẫn

Bất cứ khi nào muốn tương tác với Thuộc tính, Sự kiện hoặc Lệnh, chúng ta phải chỉ định Đường dẫn cho hoạt động tương tác này: vị trí của Thuộc tính, Sự kiện hoặc Lệnh trong hệ thống phân cấp Mô hình dữ liệu của Nút. Lưu ý là các đường dẫn cũng có thể sử dụng Nhóm hoặc Toán tử ký tự đại diện để xử lý đồng thời một số Nút hoặc Cụm, tổng hợp các Tương tác này và do đó làm giảm số lượng thao tác.

Cơ chế này rất quan trọng để tăng cường khả năng phản hồi của thông tin liên lạc. Ví dụ: khi người dùng muốn tắt tất cả các đèn, trợ lý thoại có thể thiết lập một hoạt động tương tác với nhiều đèn trong một Nhóm thay vì một trình tự từng Tương tác riêng lẻ. Nếu Trình khởi tạo tạo các lượt tương tác riêng lẻ với từng đèn, thì trình tạo này có thể tạo ra độ trễ mà con người có thể nhận biết về tốc độ phản hồi của thiết bị. Hiệu ứng này khiến nhiều Thiết bị phản ứng với một lệnh có độ trễ rõ ràng giữa các Thiết bị. Đây thường gọi là "hiệu ứng bỏng ngô".

Bạn có thể tập hợp một Đường dẫn trong Matter bằng một trong các tuỳ chọn bên dưới:

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

Và trong các khối dựng Đường dẫn này, endpointcluster cũng có thể bao gồm các Toán tử ký tự đại diện để chọn nhiều thực thể Nút.

Đã hẹn giờ và Chưa hẹn giờ

Có hai cách để thực hiện Giao dịch ghi hoặc Giao dịch gọi: Đã hẹn giờChưa hẹn giờ. Giao dịch có thời gian sẽ thiết lập thời gian chờ tối đa để gửi Hành động ghi/gọi. Mục đích của thời gian chờ này là để ngăn chặn Tấn công xen giữa đối với giao dịch. API này đặc biệt hiệu quả đối với những Thiết bị truy cập vào tài sản, chẳng hạn như thiết bị mở và khoá nhà để xe.

Để hiểu được Giao dịch có thời hạn, bạn cần nắm được cách các cuộc tấn công can thiệp có thể xảy ra và lý do tại sao Giao dịch có thời gian lại quan trọng.

Tấn công đánh chặn

Cuộc tấn công để chặn có mẫu sau:

  1. Alice gửi cho Bob tin nhắn ban đầu, chẳng hạn như Hành động yêu cầu ghi.
  2. Eve, một người trung gian, chặn tin nhắn và ngăn Bob nhận được tin nhắn đó, chẳng hạn như thông qua một số kiểu gây nhiễu sóng vô tuyến.
  3. Alice, không nhận được phản hồi từ Bob, đã gửi tin nhắn thứ hai.
  4. Eve chặn lại và không cho Bob nhận được.
  5. Eve gửi tin nhắn bị chặn đầu tiên cho Bob, như thể tin nhắn đó là từ Alice.
  6. Bob gửi phản hồi cho Alice (và Eve).
  7. Eve lưu giữ tin nhắn bị chặn thứ hai để phát lại sau. Vì Bob chưa từng nhận được tin nhắn chặn thứ hai ban đầu từ Alice, nên Bob sẽ chấp nhận tin nhắn này. Thông báo này biểu thị một lỗi vi phạm bảo mật khi thông báo mã hoá một lệnh như "khoá mở".

Để ngăn chặn các loại tấn công này, Hành động được xác định thời gian sẽ đặt thời gian chờ tối đa của Giao dịch khi bắt đầu Giao dịch. Ngay cả khi Eve có thể thực thi 6 bước đầu tiên của vectơ tấn công, cô ấy cũng sẽ không thể phát lại thông báo ở bước 7 do hết thời gian chờ đối với Giao dịch.

Giao dịch có tính thời gian làm tăng độ phức tạp và số lượng Hành động. Do đó, bạn không nên sử dụng các phương thức này cho mỗi Giao dịch, mà chỉ nên sử dụng các hoạt động quan trọng trên những Thiết bị có quyền kiểm soát tài sản bảo mật và quyền riêng tư thực hoặc ảo.

Phiên bản trừu tượng của SDK

Các phần Đọc giao dịch, Ghi giao dịchGiao dịch gọi cung cấp thông tin tổng quan cấp cao về các Hành động mô hình tương tác do SDK thực hiện.

Nhà phát triển tạo sản phẩm sử dụng SDK Matter thường không thực hiện lệnh gọi để thực thi trực tiếp Hành động; Hành động được các hàm SDK tóm tắt bằng các hàm SDK sẽ đóng gói chúng thành một Tương tác. Tuy nhiên, việc hiểu được Hành động trên IM là rất quan trọng để kỹ sư đó hiểu rõ về các tính năng của Matter cũng như kiểm soát tốt việc triển khai SDK.