Vấn đề bảo mật giao thức MQTT trong các hệ thống IoT

Thảo luận trong 'Infrastructure security' bắt đầu bởi nktung, 01/08/20, 09:08 AM.

  1. nktung

    nktung Super Moderator Thành viên BQT

    Tham gia: 08/10/13, 04:10 AM
    Bài viết: 868
    Đã được thích: 343
    Điểm thành tích:
    83
    Giao thức MQTT (Message Queue Telemetry) là giao thức tầng ứng dụng, được sử dụng rộng rãi trong việc định kỳ truyền dữ liệu từ các thiết bị IoT lên đám mây qua mạng Internet, từ đó có thể giám sát từ xa trong thời gian thực. Ưu điểm của MQTT là thủ tục truyền tin nhanh, đơn giản khi cài đặt. Về độ tin cậy khi truyền tin được thực hiện mềm dẻo thông qua cơ chế QoS.

    MQTT gồm 2 phần chính là broker và clients. Client có thể là publisher (gửi tin) hoặc subscriber (nhận tin). Publisher đẩy bản tin lên một topic trên Broker, và Broker sẽ chuyển tiếp bản tin đó cho Subscriber mà trước đó đã đăng ký topic. Điều này giống như khi bạn dùng Youtube, bạn là subscriber, đăng ký một kênh nào đó thì mỗi khi kênh đó đẩy video mới lên, Youtube sẽ thông báo cho bạn biết.

    Hình dưới đây minh họa hoạt động giao thức MQTT, trong đó thiết bị Gateway đẩy bản tin publish lên cloud với topic có tên là Data và sau đó cloud chuyển cho client đã đăng ký nhận bản tin từ topic đó. Khi hoạt động thì MQTT có thể sử dụng 3 mức QoS là mức 0 mức 1 và mức 2, trong đó mức 0 không có bản tin báo nhận nhưng hoạt động nhanh nhất.

    upload_2020-8-1_9-28-0.png

    Do được sử dụng rộng rãi nên MQTT (version 3.x) cần được lưu ý vấn đề bảo mật khi truyền thông trên mạng Internet.

    - Vấn đề xác thực

    Đầu tiên, khi cài đặt giao thức MQTT, bạn có thể sử dụng trường username/password trong bản tin publish để xác thực client trên broker. (Cần lưu ý là trong MQTT, username/password được truyền đi dưới dạng bản rõ.)

    Tiếp theo, vì mỗi MQTT-client đều có số ID duy nhất để định danh, do vậy phía Broker có thể dùng số ID để xác thực client, sẽ làm tăng thêm độ bảo mật, bên cạnh việc dùng username/password.

    Một lưu ý nữa đó là với những hệ thống cần độ bảo mật cao, khuyến nghị nên sử dụng chuẩn X.509.

    - Vấn đề quản lý quyền truy cập

    Publisher có quyền đẩy thông tin lên một topic nào đó với một mức QoS nhất định trên broker. Subscriber có quyền nhận dữ liệu từ topic nào đó với một mức QoS nhất định từ Broker. Như vậy trong MQTT thì vấn đề quản lý quyền truy cập có thể nói ngắn gọn là: cấp quyền cho client được làm gì trên topic nào với mức QoS bao nhiêu.

    Như đã đề cập ở trên, vì mỗi client đều có ID duy nhất, do vậy trên Broker có thể dùng Danh sách điều khiển truy cập Access Control List (ACL) gắn với ID để quản lý quyền của từng client. Ví dụ một ACL theo dạng sau:
    upload_2020-8-1_9-28-50.png
    Khi client thực hiện một hành động không đủ thẩm quyền, phía Broker có thể lựa chọn một vài phương án:
    • Ngắt kết nối với client đó hoặc

    • Từ chối hành động và gửi thông báo cho client biết.
    - Vấn đề đảm bảo tính bí mật khi truyền tin

    Do MQTT hoạt động ở tầng 7, truyền các bản tin ở dạng bản rõ nên để đảm bảo tính bí mật, khuyến nghị nên sử dụng giao thức TLS (Transport Layer Security) ở tầng 4. TLS là giao thức mật mã được thiết kế để cung cấp truyền thông an toàn (mã hóa dữ liệu trên đường truyền, xác thực được các bên tham gia truyền thông, kiểm tra được tính toàn vẹn của dữ liệu) qua mạng Internet. Khi cài đặt giao thức TLS, cần lưu ý đầy đủ 3 thành phần:

    + Mã hóa dữ liệu: để đảm bảo tính bí mật

    + Xác thực thông qua khóa

    + Toàn vẹn dữ liệu với Message Authentication Code (MAC)

    Tham khảo
    HiveMQ Security MQTT
    Cloudflare TLS
     
    Chỉnh sửa cuối: 01/08/20, 06:08 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    opter thích bài này.
  2. opter

    opter W-------

    Tham gia: 30/11/14, 03:11 PM
    Bài viết: 48
    Đã được thích: 5
    Điểm thành tích:
    18
    Hi anh
    Anh ơi khi triển khai TLS thì broker cũng phải hỗ trợ đúng không ạ?
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. nktung

    nktung Super Moderator Thành viên BQT

    Tham gia: 08/10/13, 04:10 AM
    Bài viết: 868
    Đã được thích: 343
    Điểm thành tích:
    83
    Chào em,
    Đúng rồi, khi em cài đặt giao thức TLS thì làm cả trên client và cả trên Broker nhé
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan