物聯網逐漸滲透到醫療保健、智慧家居、智慧城市、自動駕駛等我們生活中的各個領域。這其中所涉及到的物聯裝置的安全也因此變得愈發重要。一旦物聯網系統遭到惡意入侵,不僅海量裝置資料將面臨丟失、被竊取和篡改等安全風險,使用這些裝置和物聯網應用的終端使用者的個人安全也有可能受到威脅。
我們經常能看到這樣的新聞:駭客利用漏洞入侵到物聯網系統,比如兒童的智慧玩具中,透過玩具的攝像頭、揚聲器和麥克風對其進行監視;又或者是入侵到一個心臟起搏器,操縱心率並耗盡電池,對病人造成嚴重傷害。
一個沒有足夠安全保障的物聯網系統雖然也能正常工作、提供服務,但是一旦發生問題,將對企業和其終端使用者造成無法估量的傷害。對於使用者來說,這可能意味著財產、資料隱私甚至是個人生命安全的損失;對於企業來說,則意味著產品召回的成本、可能產生的法律費用,以及品牌聲譽和信任的損失。
因此,物聯網安全是物聯網發展中每個相關企業都需要重點關注的課題。
物聯網系統中的常見安全風險
目前,很多企業在構建物聯網系統時可能會存在以下這些安全風險:
- 認證和授權機制不充分。 物聯網裝置如果認證機制薄弱或沒有認證機制,會使其容易受到未經授權的訪問。開發者不僅需要控制裝置的訪問,還要控制裝置連線到網路後被允許做什麼。
- 薄弱的密碼。 一些廠商可能對同一裝置型號使用相同的密碼,或者是使用容易被猜到的弱密碼,如「admin」或「password」等。 然而即使是最複雜的加密演演算法,也無法保障一個容易猜到的密碼不被攻破。薄弱的密碼使攻擊者很容易竊取對裝置及其資料的訪問許可權。因此物聯網企業應嚴格執行強密碼政策,並要求使用者更改預設密碼。
- 不安全的通訊協議。 使用 TCP 等明文協議而不是 TLS 進行通訊,會使得攻擊者很容易截獲資料。以中間人攻擊(Man-In-The-Middle)為例,攻擊者可以竊聽通訊,收集密碼、健康資訊等個人資料。
- 缺乏使用者培訓。 一些物聯網廠商可能沒有向其使用者提供適當的安全培訓,這使未受過教育的使用者容易受到攻擊。企業應注意提升使用者的安全意識。
- 拒絕服務(DoS)攻擊。 物聯網系統可能容易受到 DoS 或分散式 DoS 攻擊,這種攻擊下大量裝置會被用來利用軟體缺陷或簡單地透過惡意流量來壓垮或淹沒目標系統。為了防止這種攻擊,物聯網系統需要有強大的安全措施,包括防火牆、入侵檢測和預防系統,以及訪問控制。此外,物聯網系統應被設計成更具彈性、能夠自動檢測和緩解攻擊,減少管理運維的人力成本。
物聯網廠商需要在物聯網系統設計與建設時優先考慮安全問題,以確保其裝置的安全,以及面對攻擊時能夠彈性應對。
如何透過 MQTT 保障物聯網系統安全?
當我們使用 MQTT 構建自己的物聯網系統時,可以從以下幾個方面考慮安全性問題。按其所在的不同協議層進行細分,可以分為網路層、傳輸層和應用層。
- 網路層。 MQTT 在 IP 網路中執行,因此網路層的安全最佳實踐都適用於 MQTT。 也就是說,正確使用防火牆、VPN、IPsec,可以幫助防止入侵者訪問物聯網網路上的資料。
傳輸層。 在傳輸層,我們並不建議透過 TCP 或 WebSocket 等協議直接傳送明文資料,例如在應用層中用於認證的使用者名稱、密碼等敏感資料,這可能會使應用層的安全機制形同虛設。因為當入侵者直接從傳輸層竊取資料時,他可以直接知道你正在使用的使用者名稱和密碼。
更好的辦法是,藉助 TLS 加密協議為我們的資料提供端到端的安全性。除了使資料變成難以破解的密文資料以外,TLS 還能提供多項保護,例如支援客戶端對服務端身份合法性的確認,當要求客戶端使用證書時,服務端也能確認客戶端是否合法,這將有效避免中間人攻擊。
應用層。 雖然我們已經能夠在傳輸層提供比較到位的安全保護了,但並不是所有的系統都支援 TLS。執行於應用層的 MQTT 協議也透過使用者名稱、密碼欄位提供了對密碼認證和 Token 認證的支援,確保只有合法的裝置才能接入 MQTT 代理。MQTT 5.0 中還引入了增強認證機制來提供雙向的身份確認。
另一方面,應用層的安全機制通常也是最後一層安全保障,除了驗證接入者的身份,我們最好對接入者能夠執行的操作也進行檢查,例如接入者可以釋出訊息到哪些主題上,以及可以從哪些主題消費訊息。
結語
如前文所提,作為物聯網通訊協議的事實標準,MQTT 協議提供了很多與安全相關的功能特性,以保障物聯網系統的安全。為了幫助物聯網開發者充分了解這些特性,從多維度構建更加安全可靠的物聯網系統與應用,EMQ 特別推出了《MQTT 安全》專題系列文章。
在本專題的下一篇文章中,我們將詳細講解基於使用者名稱密碼的認證方式,如何在 MQTT 中正確使用這一方式進行身份驗證,以及如何避免和解決其中可能的安全隱患。敬請期待。
版權宣告: 本文為 EMQ 原創,轉載請註明出處。
原文連結:https://www.emqx.com/zh/blog/understanding-mqtt-security-a-comprehensive-overview