Bảo mật dịch vụ họp trực tuyến theo mô hình SFU trên nền WebRTC (Phần 2)

20:43 | 29/01/2022

Trong Phần 1, bài báo đã giới thiệu về các công nghệ lõi được sử dụng trong mô hình họp trực tuyến SFU, trong đó đã trình bày nhiều công nghệ lõi, thuật toán được áp dụng để tối ưu hóa băng thông và xử lý dữ liệu trong mô hình SFU. Trong Phần 2 này, nhóm tác giả tiếp tục trình bày thêm thuật toán GCC (Google Congestion Control) để tối ưu hóa băng thông và kiểm soát tắc nghẽn dữ liệu trong mô hình SFU. Phần còn lại của bài báo, tập trung trình bày các giải pháp bảo mật dữ liệu trong mô hình SFU.

THUẬT TOÁN GCC CHO MÔ HÌNH SỬ DỤNG CHUYỂN TIẾP CHỌN LỌC SFU

Trên thực tế, SFU phải triển khai lại quá trình kiểm soát tắc nghẽn để có thể phù hợp với yêu cầu thực tế là một đầu cuối có thể chuyển tiếp cho nhiều đầu cuối khác khi tham gia hội nghị truyền hình. Ngoài ra, SFU còn là thành phần trung tâm nhận gửi, chỉnh sửa các gói RTP để chuyển tiếp và thực hiện trao đổi với các đầu cuối dựa trên gói RTCP [3].

Hình 1. Mô hình truyền các gói trên SFU

Đối với các gói RTP

Bên cạnh việc chuyển tiếp các gói RTP, SFU tiến hành chỉnh sửa một số các trường phần đầu gói, như payload type (PT), Synchronization Source (SSRC), Chuẩn hóa lại thành Contributing Source (CSRC), và sequence number (SN); sử dụng dấu thời gian mở rộng (abs-send-time) [2]; sử dụng phần đầu mở rộng gói, TCC (Transport-wide Congestion Control hay Transport-wide Sequence Number) [4].

Đối với các gói RTCP

SFU yêu cầu quyền truy cập nội dung rõ các thông điệp RTCP. Các bản tin RTCP thường được các SFU sử dụng bao gồm Báo cáo người gửi (SR), Báo cáo người nhận (RR), các thông điệp SDES, BYE, APP, cũng như các thông điệp phản hồi (Feedback Messages). Mặc dù SFU cần giải mã các thông báo RTCP, tuy nhiên các thiết kế SFU không sửa đổi SSRC vẫn có thể chuyển tiếp các thông báo RTCP như SDES mà không cần sửa đổi (hoặc thậm chí phân tích cú pháp). Điều này mang đến lợi thế cho SFU, vì có thể chuyển tiếp các thông điệp RTCP mà nó không hiểu.

Các thông báo phản hồi (RTCP Feedback Messages) được hỗ trợ rộng rãi bởi các triển khai SFU hiện có bao gồm: NACK, PLI và FIR. NACK sửa chữa các tổn thất trong dòng bit SVC để kịp thời để cho phép giải mã khung phụ thuộc kế tiếp. FIR thường được sử dụng trong các SFU khi chuyển đổi giữa các luồng video hoặc bắt đầu chuyển tiếp một luồng simulcast khi người dùng được kích hoạt. Khi đó, FIR được SFU gửi tới người gửi luồng RTP đã chuyển mạch. Người gửi phản hồi bằng I-frame sau đó được chuyển tiếp đến người nhận, đảm bảo rằng họ có thể giải mã các khung tiếp theo trong luồng RTP được chuyển mạch. PLI tương tự như FIR, thông điệp được gửi khi bên nhận không nhận đầy đủ các khung để giải mã.

Các gói RTCP, chủ yếu được sử dụng để điều khiển các luồng và ước lượng băng thông có sẵn. Bất cứ khi nào nhận một gói RTCP (SR, RR), RTT được tính và cập nhật cho quá trình ước tính băng thông dựa trên độ trễ (delay-based). Nếu SFU nhận các gói REMB (RTCP Feedback), băng thông ước tính này sẽ được cập nhật cho quá trình ước tính băng thông. Cuối cùng, nếu nhận được các gói RTCP TCC Feedback [3], các gói này cho phép phát hiện mất gói sớm, ước lượng băng thông dựa trên mất gói (Loss-based) sẽ được tính toán. Như vậy, SFU tính toán băng thông cuối cùng dựa trên ba thông số: ước lượng băng thông dựa trên mất gói, ước lượng băng thông dựa trên độ trễ và ước tính băng thông từ xa. Cuối cùng, SFU gửi băng thông cuối cùng này cho đầu cuối gửi dữ liệu thông qua RTCP để đầu cuối này tăng hoặc giảm băng thông.

BẢO MẬT DỊCH VỤ HỘI NGHỊ TRUYỀN HÌNH THEO MÔ HÌNH SFU

Hai phương pháp mã hóa trong công nghệ WebRTC là mã hóa Hop-by-Hop (HBH) và mã hóa điểm đầu cuối (E2E). Mã hóa đầu cuối (E2E) để bảo vệ dữ liệu đa phương tiện giữa bên gửi và bên nhận. Trong trường hợp này SFU không thể truy cập đến dữ liệu đa phương tiện của người dùng đầu cuối. Trái lại, với kiểu mã hóa HBH thì SFU có quyền truy cập dữ liệu của người dùng đầu cuối.

Hình 2. Mã hóa HBH và E2E trong WebRTC

Hình 2 thể hiện hai lớp mã hóa và thứ tự các lớp mã hóa từ ngoài vào trong là:

- Mã hóa Hop-by-hop (HBH) mã hóa dữ liệu đa phương tiện, dữ liệu phụ và thông báo phản hồi giữa các điểm cuối và SFU, sử dụng DTLS-SRTP.

- Mã hóa end-to-end (E2E) mã hóa dữ liệu đa phương tiện giữa các điểm cuối, nơi đầu cuối sử dụng khóa riêng để mã hóa/giải mã.

Mã hóa E2E (Sframe)

Sframe là một cơ mã hóa mức khung, cung cấp khả năng mã hóa end-to-end hiệu quả, dễ triển khai, không phụ thuộc vào RTP và giảm thiểu chi phí băng thông mã hóa. Bởi vì Sframe mã hóa toàn bộ khung hình, thay vì các gói RTP riêng lẻ nên chi phí băng thông được giảm xuống bằng cách chỉ sử dụng một IV (Initialization Vector) và thẻ xác thực MAC cho mỗi khung phương tiện.

Hình 3. Mô hình mã hóa đầu cuối Sframe với SFU

Hình 3, thể hiện quá trình mã hóa đầu cuối. Trong đó, khóa giữa các bên tham ra được trao đổi qua kênh riêng, tại các gói Sframe chỉ lưu ID khóa để giải mã, trước khi gói Sframe được gửi đi thông qua bộ tạo gói RTP (Packetizer) và được tập hợp lại thông qua bộ tập hợp gói RTP (Depacketizer) (Hình 3).

Trong đó, phần đầu của mỗi khung (Sframe header) có một bộ đếm khung duy nhất (Frame counter) sẽ được sử dụng để lấy IV (Vector). Vì mỗi đầu cuối gửi sẽ sử dụng khóa riêng để mã hóa, do đó, phần đầu gói Sframe sẽ bao gồm ID khóa (KID) để cho phép đầu cuối nhận xác định khóa được sử dụng để giải mã [9] (Hình 4).

Hình 4. Mô tả định dạng gói Sframe

Với phiên bản hiện tại, nhóm phát triển Jitsi Meet sử dụng một cấu trúc tương tự như Sframe, nhưng có sự thay đổi về cấu trúc và thêm một số thành phần; được gọi là Jframe (Hình 5).

Hình 5. Minh họa cấu trúc gói Jframe

Trong đó, phần đầu tiên được thêm (Unencrypted payload header) là phần không được mã hóa, sử dụng để sao chép các byte đầu tiên của dữ liệu VP8 không được mã hóa (10 byte cho khung hình chính hoặc 3 byte cho khung hình không chính hoặc 1 byte cho audio). Các dữ liệu thông tin này cho phép các đầu cuối không bật tính năng mã hóa nhưng vẫn nhận và giải nénđược các hình ảnh, âm thanh (mặc dù dữ liệu này là không có nghĩa). Phần cuối của cấu trúc Jframe tương tự như phần đầu của gói Sframe, gồm IV, IV_LEN, KID.

KẾT LUẬN

 Công nghệ hội nghị truyền hình dựa truyên SFU đang được phát triển mạnh so với công nghệ truyền thống sử dụng MCU (chỉ có ở các sản phẩm thương mại). Để có thể tận dụng hạ tầng về thiết bị và đường truyền phục vụ cho mục đích hội nghị, các công nghệ được áp dụng vào SFU như: Việc encode/decode được thực hiện ở các đầu cuối, SFU không tham gia vào quá trình encode/decode; sử dụng các công nghệ Last-N, simulcast, thuật toán điều chỉnh băng thông để giảm thiểu băng thông khi sử dụng. Ngoài ra, để đảm bảo an toàn thì chuẩn bảo mật mới cho WebRTC đang được phát triển như E2E, HBH cùng với các giải pháp truyền thống như sử dụng VPN.

Trong bài báo tiếp theo, nhóm tác giả sẽ trình bày phương pháp phân phối khóa nhóm được sử dụng trong E2E để bảo mật dữ liệu hội nghị truyền hình. Khóa nhóm cần đảm bảo tính chất an toàn phía trước (tức là khi một người dùng mới tham gia hội nghị thì không thể giải mã được dữ liệu trước đó) và an toàn phía sau (khi một người dùng rời hội nghị thì không thể giải mã được dữ liệu tiếp theo).

TÀI LIỆU THAM KHẢO

1. Emad Omara, Justin Uberti, Alex Gouaillard, Sergio Garcia Murillo. Secure Frame (SFrame). https://datatracker.ietf.org/doc/draft-omara-sframe/, 2021

 2. H Alvestrand. RTCP message for Receiver Estimated Maximum Bitrate. https://tools.ietf.org/html/draftalvestrand-rmcat-remb-03, October 2013.

3. https://github.com/jitsi/jitsi-videobridge

4. S. Holmer, M. Flodman, and E. Sprang. RTP Extensions for Transportwide Congestion Control. https://tools.ietf.org/html/ draft-holmer-rmcat-transport-wide-ccextensions-01, October 2015