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 thao tác trên các 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ý thuộc tính và 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ự liên lạc đã mã hoá với một Nút khác, các Nút đó sẽ tạo thành 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, còn Giao dịch thì 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ệ phân 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 nó, Hành động báo cáo dữ liệu, mang thông tin trở lại từ máy chủ đến ứ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, mẫu này vẫn có những ngoại lệ, chẳng hạn như được phân tích kỹ hơn trong phần Tương tác với gói thuê bao.

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ế để giải quyết 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ó cùng Mã nhóm, là số nguyên 16 bit.

Để thực hiện hoạt động giao tiếp ở cấp nhóm (Groupcast), Matter sử 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 Nút. Lưu ý rằng 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 đóng vai trò quan trọng trong việc nâng cao khả năng phản hồi của thông tin giao tiếp. 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 tương tác duy nhất với nhiều đèn trong một Nhóm thay vì trình tự các Tương tác riêng lẻ. Nếu Trình khởi tạo tạo ra các Hoạt động tương tác riêng lẻ với từng đèn, thì trình khởi tạo có thể tạo ra độ trễ mà con người nhận biết được về 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 với độ trễ rõ ràng giữa chúng. Đ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 bên dưới:

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

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

Có dấu thời gian và không tính giờ

Có hai cách để thực hiện Giao dịch ghi hoặc Giao dịch gọi: Đã xác định thời gianChưa tính thời gian. Giao dịch có 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 Tấn công can thiệp vào Giao dịch. API này đặc biệt có hiệu lực với các Thiết bị có quyền truy cập vào các tài sản, chẳng hạn như dụng cụ mở khoá và khoá nhà để xe.

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

The Intercept Attack (Tấn công chặn)

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

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

Để ngăn chặn các loại tấn công này, Hành động có tính 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 có thể thực thi 6 bước đầu tiên của vectơ tấn công, công cụ này sẽ không thể phát lại thông báo ở bước 7 do hết thời gian chờ trên 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 chúng cho mọi Giao dịch, mà chỉ nên thực hiện các hoạt động quan trọng trên Thiết bị có quyền kiểm soát các tài sản bảo mật và quyền riêng tư thực hoặc ảo.

Trừu tượng SDK

Các phần Đọc giao dịch, Viết giao dịchGọi giao dịch 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 một 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 bị trừu tượng bởi các hàm SDK sẽ đóng gói chúng vào một Tương tác. Tuy nhiên, việc hiểu rõ Hành động nhanh là rất quan trọng để giúp kỹ sư này nắm rõ các tính năng của Matter, cũng như khả năng kiểm soát chi tiết việc triển khai SDK.