-
08/10/2013
-
401
-
989 bài viết
Giao thức IoT MQTTv5 mới đã cải tiến phương pháp xác thực như thế nào?
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 đó.
Hình. Nguyên lý giao thức MQTTHì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.
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.
Hình. Phương pháp xác thực nâng cao trong MQTTv5Lư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/
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 đó.
Hình. Nguyên lý giao thức MQTT
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.
Hình. So sánh các trường trong bản tin CONNECT ở 2 phiên bản MQTT
- 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.
Hình. Phương pháp xác thực nâng cao trong MQTTv5
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 lần cuối: