Giao thức IoT MQTTv5 mới đã cải tiến phương pháp xác thực như thế nào?

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

  1. nktung

    nktung Super Moderator Thành viên BQT

    Tham gia: 08/10/13, 04:10 AM
    Bài viết: 883
    Đã được thích: 362
    Điểm thành tích:
    83
    Các dự án IoT hiện đại thường lớn và phức tạp, bởi vậy vấn đề bảo mật rất cần cân nhắc để triển khai. Các dự án IoT này thường cần sự hợp tác của nhiều đơn vị cung cấp khác nhau. Việc tuân thủ các tiêu chuẩn được quốc tế công nhận là một cách để hạn chế thách thức về vấn đề bảo mật mà các dự án này gặp phải. Bài viết đề cập tới giao thức MQTT phiên bản mới (Version 5), một giao thức phổ biến trong hệ thống IoT.

    Kiến trúc mức cao của MQTT gồm 02 phần chính là broker và clients. Client có thể là publisher (gửi tin) hoặc subscriber (nhận tin). Broker có vai trò như một hub trung tâm, làm nhiệm vụ kết nối các client bằng cách nhận các bản tin từ publisher, rồi chuyển chúng đến subscriber, trong một topic nào đó.


    upload_2020-8-28_18-57-54.png
    Hình. Nguyên lý giao thức MQTT
    Hình trên minh họa việc sử dụng giao thức MQTT để gửi dữ liệu. Gateway đóng vai trò publisher, thiết lập phiên kết nối với broker bằng cách gửi bản tin CONNECT và nhận về phản hồi CONNACK. Sau đó publisher gửi bản tin PUBLISH chứa giá trị payload vào topic trên máy chủ broker. Máy client của người vận hành đóng vai trò subscriber, đăng ký nhận dữ liệu từ topic bằng bản tin SUBSCRIBE, sẽ nhận payload.

    MQTT có 2 phiên bản là MQTT 3.1.1 và mới đây là MQTT v5. Trong phiên bản 3.1.1, client gửi bản tin CONNECT có trường username/password, broker sẽ kiểm tra các thông tin này trong database của nó để xác thực client. Tuy nhiên cách thức này có điểm yếu là username/password được gửi trên mạng dưới dạng bản rõ. Như vậy kẻ gian có thể sử dụng kỹ thuật tấn công kẻ đứng giữa (Man-in-the-middle) để chặn bắt gói tin này và biết username/password mà client đang sử dụng.


    upload_2020-8-28_18-58-14.png
    Hình. So sánh các trường trong bản tin CONNECT ở 2 phiên bản MQTT
    Trong MQTT v5 đã tích hợp thêm tính năng xác thực nâng cao, nó cho phép ta triển khai xác thực theo kiểu Challenge – Response (thách thức – phản hồi) mà không cần gửi username/password trên mạng, theo cách như sau:

    - MQTTv5 Client gửi bản tin CONNECT có thêm trường Properties chứa phương pháp xác thực sẽ sử dụng (authentication method) và dữ liệu xác thực (authentication data).

    - Khi nhận được bản tin này, broker sẽ gửi bản tin AUTH chứa phương thức xác thực (method) và đoạn dữ liệu (challenge) để client mã hóa và trả về kết quả Response.

    - Broker sẽ kiểm tra kết quả Respone xem có khớp so với kết quả mà nó tính toán hay không để xác thực đúng client. Nếu khớp, Broker sẽ trả về bản tin CONNACK, với mã code=0 tức là xác thực thành công và phiên MQTT được thiết lập.
    upload_2020-8-28_18-58-52.png

    Hình. Phương pháp xác thực nâng cao trong MQTTv5
    Lưu ý: quá trình gửi và nhận bản tin AUTH được lặp đi lặp lại trong suốt phiên kết nối để đảm bảo rằng các dữ liệu gửi lên là từ đúng từ client đó.

    Phương thức xác thực được sử dụng giữa Client và Broker là những phương thức đã được chuẩn hóa, ví dụ Salted Challenge Response Authentication Mechanism (SCRAM) hoặc sử dụng giao thức Kerberos.

    Tham khảo
    hiveMQTT
    http://www.steves-internet-guide.com/mqttv5-connect-and-connack-messages-overview/
     
    Chỉnh sửa cuối: 28/08/20, 07: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