Tận dụng xác thực nâng cao cho bảo mật MQTT

Tận dụng xác thực nâng cao cho bảo mật MQTT

Nút nguồn: 2178565
Tận dụng xác thực nâng cao cho bảo mật MQTT
Minh họa: © IoT cho tất cả

Xác thực nâng cao là khung xác thực mới được giới thiệu trong MQTT 5.0. Nó cung cấp một loạt các phương pháp thay thế an toàn hơn xác thực mật khẩu truyền thống.

Tuy nhiên, tăng cường bảo mật đi kèm với sự phức tạp gia tăng. Một số phương thức xác thực nhất định, như SCRAM, yêu cầu trao đổi nhiều dữ liệu xác thực. Điều này làm cho khung xác thực trao đổi đơn của gói CONNECT và CONNACK trở nên lỗi thời.

Để giải quyết hạn chế này, MQTT 5.0 giới thiệu gói AUTH, hỗ trợ nhiều trao đổi dữ liệu xác thực. Nó cho phép sử dụng SASL Cơ chế (Lớp xác thực và bảo mật đơn giản) với kiểu phản hồi thách thức trong MQTT.

Xác thực nâng cao giải quyết được vấn đề gì?

Trước khi đi sâu vào xác thực nâng cao, điều cần thiết là phải hiểu những thiếu sót của xác thực mật khẩu về mặt bảo mật.

Trên thực tế, mặc dù sử dụng các kỹ thuật như Salt và Hash để lưu trữ mật khẩu một cách an toàn, khách hàng vẫn phải truyền mật khẩu ở dạng văn bản thuần túy qua mạng, khiến mật khẩu dễ bị đánh cắp. Ngay cả khi sử dụng mã hóa TLS để liên lạc, vẫn có nguy cơ kẻ tấn công lấy được dữ liệu nhạy cảm như mật khẩu do phiên bản SSL lỗi thời, bộ mật mã yếu hoặc sự hiện diện của chứng chỉ CA giả.

Hơn nữa, xác thực mật khẩu đơn giản chỉ cho phép máy chủ kiểm tra danh tính của khách hàng chứ không phải ngược lại, điều này cho phép kẻ tấn công giả vờ là máy chủ và lấy dữ liệu nhạy cảm từ khách hàng. Đây là những gì chúng ta thường gọi là cuộc tấn công trung gian.

Xác thực nâng cao cho phép người dùng sử dụng các phương thức xác thực có độ an toàn cao trong khung SASL. Các phương pháp này mang lại một số lợi ích, chẳng hạn như loại bỏ việc truyền mật khẩu qua mạng và tạo điều kiện xác minh danh tính lẫn nhau giữa máy khách và máy chủ. Bằng cách trình bày các tùy chọn này, người dùng có thể chọn phương thức xác thực phù hợp với nhu cầu cụ thể và tùy chọn bảo mật của họ.

Các cơ chế SASL phổ biến được sử dụng để xác thực nâng cao

TIÊU HÓA-MD5

DIGEST-MD5 là một phương thức xác thực trong khung SASL. Nó sử dụng thuật toán băm Message Digest 5 (MD5) và cơ chế phản hồi thử thách để xác minh danh tính giữa máy khách và máy chủ. Một ưu điểm đáng chú ý là máy khách không cần truyền mật khẩu ở dạng văn bản thuần túy qua mạng.

Nói một cách đơn giản, khi khách hàng muốn truy cập vào tài nguyên được bảo vệ, máy chủ sẽ gửi thử thách với số ngẫu nhiên một lần và một số tham số bắt buộc. Máy khách sử dụng các tham số này, cùng với tên người dùng và mật khẩu của nó, để tạo phản hồi, sau đó được truyền trở lại máy chủ.

Máy chủ tạo phản hồi dự kiến ​​một cách độc lập bằng cách sử dụng cùng một phương pháp và so sánh nó với phản hồi nhận được. Nếu chúng khớp nhau thì xác thực thành công. Cách tiếp cận này giảm thiểu một cách hiệu quả nguy cơ lộ mật khẩu thông qua việc rình mò mạng. Ngoài ra, bằng cách sử dụng số ngẫu nhiên một lần cho mỗi kết nối, nó sẽ tăng cường khả năng bảo vệ chống lại các cuộc tấn công lặp lại.

Tuy nhiên, điều quan trọng cần lưu ý là DIGEST-MD5, trong khi cho phép xác minh danh tính máy khách phía máy chủ, lại thiếu khả năng máy khách xác minh danh tính của máy chủ. Hạn chế này tạo cơ hội cho các cuộc tấn công trung gian tiềm năng. Hơn nữa, vì MD5 không còn an toàn nữa nên chúng tôi khuyên bạn nên thay thế nó bằng hàm băm có khả năng chống va chạm mạnh hơn, chẳng hạn như SHA-256.

LỪA ĐẢO

SCRAM (Cơ chế xác thực phản hồi thử thách muối) là một phương thức xác thực khác trong khung SASL. Nó có những điểm tương đồng với DIGEST-MD5 về mặt tiếp cận. SCRAM nhắc máy khách tạo phản hồi bằng cách sử dụng số ngẫu nhiên một lần, do đó tránh gửi mật khẩu ở dạng văn bản thuần túy qua mạng.

Tuy nhiên, SCRAM tăng cường hơn nữa tính bảo mật bằng cách kết hợp Salt, Iterations và các thuật toán băm mạnh mẽ hơn như SHA-256 và SHA-512. Những bổ sung này tăng cường đáng kể tính bảo mật của việc lưu trữ mật khẩu, giảm thiểu hiệu quả các rủi ro liên quan đến các cuộc tấn công ngoại tuyến, tấn công lặp lại và các lỗ hổng tiềm ẩn khác.

Hơn nữa, SCRAM kết hợp quy trình phản hồi thách thức phức tạp hơn bao gồm bằng chứng phía máy chủ được gửi tới khách hàng. Sau đó, khách hàng có thể sử dụng bằng chứng này để xác minh việc máy chủ sở hữu đúng mật khẩu, cho phép xác thực lẫn nhau. Bước bổ sung này làm giảm khả năng bị tấn công bởi kẻ trung gian.

Tuy nhiên, việc sử dụng các thuật toán băm như SHA256 trong SCRAM sẽ gây ra thêm chi phí tính toán, có khả năng ảnh hưởng đến hiệu suất của các thiết bị có nguồn lực hạn chế.

Kerberos

Kerberos sử dụng máy chủ Kerberos bên thứ ba đáng tin cậy để hỗ trợ các dịch vụ xác thực. Máy chủ phát hành mã thông báo cho người dùng đã được xác minh, cho phép họ truy cập vào máy chủ tài nguyên. Ưu điểm đáng chú ý là khả năng người dùng truy cập nhiều hệ thống và dịch vụ bằng một lần xác thực duy nhất, nhờ đó đạt được sự tiện lợi của đăng nhập một lần (SSO).

Mã thông báo do máy chủ Kerberos phát hành có thời hạn sử dụng hạn chế và khách hàng chỉ có thể sử dụng mã thông báo này để truy cập dịch vụ trong một khoảng thời gian nhất định, điều này có thể ngăn chặn các sự cố bảo mật do rò rỉ mã thông báo. Tất nhiên, mặc dù tuổi thọ ngắn hơn có thể nâng cao tính bảo mật nhưng nó sẽ làm mất đi một số tiện lợi. Người dùng cần phải thực hiện sự đánh đổi của họ.

Cốt lõi của Kerberos nằm ở việc sử dụng thuật toán mã hóa đối xứng. Máy chủ sử dụng hàm băm mật khẩu được lưu trữ cục bộ để mã hóa dữ liệu xác thực, sau đó được truyền đến máy khách. Đến lượt mình, khách hàng sẽ băm mật khẩu của mình và sử dụng nó để giải mã dữ liệu xác thực nhận được. Quá trình này mang lại một số lợi ích, bao gồm loại bỏ nhu cầu truyền mật khẩu ở dạng văn bản thuần túy qua mạng và cho phép xác minh lẫn nhau về mật khẩu chính xác giữa máy chủ và máy khách.

Ngoài ra, thông qua mã hóa đối xứng, máy chủ và máy khách có thể chia sẻ khóa phiên một cách an toàn, có thể được sử dụng cho giao tiếp được mã hóa tiếp theo. Do đó, Kerberos cũng cung cấp các biện pháp bảo mật để bảo vệ các thông tin liên lạc tiếp theo ngoài việc xác thực.

Bên cạnh việc cung cấp khả năng bảo mật mạnh mẽ, Kerberos cũng mang đến sự phức tạp đáng kể. Việc triển khai và định cấu hình Kerberos đi kèm với những thách thức và việc phụ thuộc vào tối đa sáu lần bắt tay có thể đưa ra các yêu cầu về độ trễ và độ tin cậy của mạng cao. Kết quả là Kerberos thường được sử dụng trong môi trường mạng nội bộ của doanh nghiệp.

Xác thực nâng cao hoạt động như thế nào trong MQTT?

Hãy xem xét cách xác thực nâng cao hoạt động trong MQTT sử dụng SCRAM làm ví dụ. Mặc dù bài viết này sẽ không đi sâu vào các nguyên tắc cụ thể của SCRAM nhưng điều quan trọng cần lưu ý là SCRAM yêu cầu bốn thông báo sau để hoàn tất xác thực:

  • tin nhắn đầu tiên của khách hàng
  • tin nhắn đầu tiên của máy chủ
  • tin nhắn cuối cùng của khách hàng
  • tin nhắn cuối cùng của máy chủ

Để bắt đầu xác thực SCRAM, máy khách gửi gói CONNECT có thuộc tính Phương thức xác thực được đặt thành SCRAM-SHA-256, cho biết ý định sử dụng xác thực SCRAM. SHA-256 cho biết hàm băm sẽ được sử dụng. Thuộc tính Dữ liệu xác thực được sử dụng để lưu trữ nội dung của tin nhắn đầu tiên của khách hàng. Thuộc tính Phương thức xác thực xác định cách máy chủ phân tích cú pháp và xử lý dữ liệu có trong trường Dữ liệu xác thực.

Nếu máy chủ không hỗ trợ xác thực SCRAM hoặc nếu nội dung của thông báo đầu tiên của máy khách được phát hiện là không hợp lệ, nó sẽ trả về gói CONNACK chứa Mã lý do cho biết lý do xác thực không thành công, sau đó đóng kết nối mạng.

Nếu không, máy chủ sẽ tiến hành bước tiếp theo: trả lại gói AUTH và đặt Mã lý do thành 0x18, biểu thị việc tiếp tục xác thực. Phương thức xác thực trong gói sẽ giống với gói CONNECT và thuộc tính Dữ liệu xác thực sẽ chứa nội dung của tin nhắn đầu tiên của máy chủ.

Sau khi xác minh nội dung của thông báo đầu tiên của máy chủ là chính xác, máy khách cũng trả về gói AUTH có Mã lý do 0x18 và thuộc tính Dữ liệu xác thực sẽ chứa nội dung của thông báo cuối cùng của máy khách.

Sau khi xác minh rằng nội dung của thông báo cuối cùng của máy khách là chính xác, máy chủ đã hoàn tất việc xác minh danh tính của máy khách. Vì vậy, lần này, máy chủ sẽ không trả về gói AUTH mà là gói CONNACK có Mã lý do 0 để cho biết xác thực thành công và chuyển thông báo cuối cùng của máy chủ thông qua thuộc tính Dữ liệu xác thực trong gói.

Nếu danh tính của máy chủ được xác minh thành công, khách hàng có thể tiến hành đăng ký chủ đề hoặc xuất bản tin nhắn. Tuy nhiên, nếu việc xác minh không thành công, máy khách sẽ gửi gói DISCONNECT để chấm dứt kết nối.

Các phương pháp xác minh danh tính khác

Xác thực nâng cao cung cấp cho người dùng khả năng giới thiệu nhiều phương pháp xác minh danh tính hơn. Bạn có thể chọn các phương thức xác thực phù hợp với nhu cầu cụ thể của mình và nâng cao hơn nữa tính bảo mật cho hệ thống của mình.

Dấu thời gian:

Thêm từ IOT cho tất cả