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

Mô hình dữ liệu (DM) của một Nút không liên quan nếu chúng ta không thể thực hiện các thao tác trên đó. Mô hình tương tác (IM) xác định mối quan hệ DM của một 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ý thuộc tính cũng như sự kiện
  • Ghi vào thuộc tính
  • Gọi lệnh

Bất cứ khi nào một Nút thiết lập trình tự giao tiếp được mã hoá với một Nút khác, chúng sẽ tạo thành mối quan hệ Tương tác. Các lượt 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 Hành động có thể được hiểu là thông báo cấp IM giữa các Nút.

Hệ thống cấp độ của mô hình tương tác
Hình 1: Hệ phân cấp của Mô hình tương tác

Một số Hành động được hỗ trợ trên 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 đó, Hành động báo cáo dữ liệu (mang thông tin từ máy chủ trở lại máy khách).

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, còn 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 máy khách và Mục tiêu là một Cụm máy chủ. Tuy nhiên, vẫn có một số trường hợp ngoại lệ đối với mô hình này, chẳng hạn như trong phần Tương tác với gói thuê bao được phân tích thêm ở phần sau của mục 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à một cơ chế để xử lý và gửi thông báo đến nhiều Thiết bị trong cùng một Hành động cùng một lúc. Tất cả các Nút trong một Nhóm đều có chung một Mã nhóm, là một số nguyên 16 bit.

Để thực hiện hoạt động giao tiếp ở cấp nhóm (Groupcast), Matter tận dụng các thông báo Multicast IPv6 và tất cả thành viên trong Nhóm đều có cùng địa chỉ Multicast.

Đường dẫn

Bất cứ khi nào muốn tương tác với một 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ệ phân cấp Mô hình dữ liệu của một Nút. Lưu ý là đườ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 Hoạt động tương tác này và do đó làm giảm số lượng hành động.

Cơ chế này rất quan trọng để tăng khả năng phản hồi của hoạt động giao tiếp. Ví dụ: khi người dùng muốn tắt tất cả đèn, trợ lý thoại có thể thiết lập một lượt tương tác duy nhất với một số đèn trong một Nhóm thay vì một chuỗi các Lượt tương tác riêng lẻ. Nếu Bên khởi tạo tạo các lượt Tương tác riêng lẻ với từng đèn, thì độ trễ có thể nhận thấy được trong khả năng 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ị. Điều này thường được 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 dưới đây:

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

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

Có tính giờ và không tính giờ

Có hai cách để thực hiện Giao dịch ghi hoặc gọi: Có thời gian và Không có thời gian. Giao dịch theo thời gian 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 Cuộc tấn công chặn vào Giao dịch. Điều này đặc biệt đúng đối với những Thiết bị kiểm soát quyền truy cập vào tài sản, chẳng hạn như thiết bị mở cửa gara và khoá.

Để hiểu về Giao dịch theo thời gian, bạn nên tìm hiểu cách thức xảy ra của các Cuộc tấn công chặn và lý do Giao dịch theo thời gian lại quan trọng.

Tấn công chặn đứng

Một cuộc tấn công chặn có mẫu sau:

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

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

Giao dịch theo 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 khoá này cho mọi Giao dịch, mà chỉ nên dùng cho các thao tác quan trọng trên Thiết bị có quyền kiểm soát đối với tài sản bảo mật và quyền riêng tư thực tế hoặc ảo.

Lớp trừu tượng SDK

Các phần Đọc giao dịch, Ghi giao dịch và Gọi giao dịch cung cấp thông tin tổng quan cấp cao về các Hành động của 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 để trực tiếp thực thi Hành động; các Hành động được trừu tượng hoá bằng các hàm SDK sẽ đóng gói chúng vào một Hoạt động tương tác. Tuy nhiên, việc hiểu rõ các Hành động IM là rất quan trọng để giúp kỹ sư nắm vững các chức năng của Matter, cũng như kiểm soát chặt chẽ việc triển khai SDK.