🦉IoT 常用通訊協定#
🐧HTTP#
超文字傳輸通訊協定 (HyperText Transfer Protocol,HTTP) 是一個用於在網際網路上應用程式層的傳輸超文本的通訊協定。HTTP 是一種客戶端-伺服器協定,由客戶端負責發送請求,而伺服器端則負責回應請求。HTTP 協定的主要版本有 HTTP/1.0、HTTP/1.1 和 HTTP/2,其中 HTTP/1.1 是目前使用最廣泛的版本。HTTP 是一種無狀態協定,每個請求和回應都是獨立的,伺服器不會記住之前的請求或回應。由於 HTTP 不需要維護任何狀態資訊,因此瀏覽器可以使用 Cookie、Session、Local Storage 等方式儲存狀態,並使用在每一次的 Request 上,使得伺服器更容易擴展。HTTP 使用 TCP/IP 協定來傳輸資訊。當用戶在瀏覽器中輸入 URL 後,瀏覽器將向伺服器發送 HTTP 請求。伺服器收到請求後,根據請求的內容和 URL 執行相對應的操作,然後將結果以 HTTP 響應的形式回傳給客戶端。
客戶端請求是以 HTTP 請求 (HTTP Request) 的方式傳送。通常包含請求方法、請求標頭、請求本體、資源位置。請求方法 (HTTP Request Method) 常被稱為 HTTP 方法,例如:GET、POST、PUT、DELETE 等。請求標頭 (HTTP Header Fields) 則包含允許的請求格式、認證資訊等。請求本體 (HTTP Body) 是送出請求的資料,例如填寫表單的資訊。資源位置則是資源所在位置的全球資源定位器 (Uniform Resource Locator,URL)。
伺服器回應是以 HTTP 響應 (HTTP Response) 的方式傳送。通常包含狀態碼、回應標頭、回應本體。狀態碼 (HTTP Status Code),例如:200 代表 OK、404 代表 Not Found。回應標頭則包含回應的內容格式、長度等。回應本體則是回應請求的資料,通常是 HTML 頁面、圖片、Json 檔案等。
在 IoT 設備中,HTTP 是一種常見的通訊協定,用於實現設備之間資料傳輸和通訊。智慧居家系統中的各種設備可以通過 HTTP 協定傳輸資料,例如:溫度、濕度、光照強度等等,這些資料可以被中央控制系統蒐集和分析。工業自動化控制系統中的設備也可以通過 HTTP 協定進行控制和管理。由於 IoT 系統中的設備數量龐大,因此在資料傳輸和通訊方面需要具有相當高的穩定性。為了提高 HTTP 協定的效率和穩定性,可以使用 HTTP/2 協定、WebSocket 協定等等。
🐧HTTPS#
超文字傳輸安全協定 (HyperText Transfer Protocol Secure,HTTPS) 是一種用於在網際網路上進行安全通訊的通訊協定。HTTPS 基於 HTTP 協定,但使用了安全通訊協定 (Secure Sockets Layer,SSL) 及傳輸層安全性協定 (Transport Layer Security,TLS) 來加密通訊內容。SSL 是 TLS 的前身,目前的 HTTPS 大多使用 TLS,這使得使用 HTTPS 的網站能夠更好地保護使用者的隱私和安全。
當使用者在瀏覽器中輸入 HTTPS 網址後,瀏覽器將向伺服器發送 HTTPS 請求。與 HTTP 請求不同的是,HTTPS 請求使用 SSL 或 TLS 協定進行加密以保護請求內容的安全性。伺服器收到請求後,使用 SSL 或 TLS 協定對請求進行解密,然後根據請求的內容和 URL 執行相應的操作,最後再使用 SSL 或 TLS 協定將結果加密後以 HTTPS 響應的形式回傳給客戶端。
HTTPS 與 HTTP 的區別在於加密通訊內容。HTTPS 使用了 SSL/TLS 協定來加密通訊內容,使得通訊內容無法被竊聽、修改或偽造。這使得使用 HTTPS 的網站能夠更好地保護用戶的隱私和安全。使用 HTTPS 的網站需要使用 SSL/TLS 憑證來進行加密通訊內容。憑證是一種數位證書,用於證明網站的身份和加密通訊內容。憑證可以從網站的 SSL/TLS 憑證發行機構 (Certificate Authority,CA) 處獲得。網站需要向 CA 提供相關的證明,以證明網站的身份和合法性。CA 在確認網站的身份和合法性後,會為網站簽發 SSL/TLS 憑證。瀏覽器在訪問使用 HTTPS 的網站時,會自動檢查網站的 SSL/TLS 憑證,以確保通訊內容的安全性。
🐧TELNET#
遠端登入協定 (Telnet) 是一種用於在網際網路上進行遠端登入的通訊協定。使用 Telnet,使用者可以透過網際網路從本地主機登入到遠端主機上,並在遠端主機上執行命令和應用程式。Telnet 協定是一種無加密協定,所有通訊內容都是明文傳輸。所以使用 Telnet 登入遠端主機時,密碼和其他敏感資訊都可能被竊聽、修改或偽造。因此使用 Telnet 登入遠端主機時需要格外小心。知名的臺灣電子佈告欄 (PTT),便是採用 Telnet BBS 技術運作。
當使用者在本地計算機上使用 Telnet 向遠端主機發送 Telnet 請求時,遠端主機將接受請求,並與本地計算機建立一個 Telnet 連接。使用者可以透過該連接向遠端主機發送命令和應用程式。使用者輸入的命令和應用程式將在遠端主機上執行,並將結果透過 Telnet 連接返回到本地計算機上。
為了提高 Telnet 通訊的安全性,可以使用 Telnet over SSH 協定。Telnet over SSH 協定是一種在 SSH 協定上運行的 Telnet 協定,它透過將 Telnet 通訊內容加密來保護通訊內容的安全性。使用者可以在本地計算機上使用 SSH 客戶端向遠端主機發送 SSH 請求,然後再在 SSH 通道上運行 Telnet 協定。這樣,所有的 Telnet 通訊內容都將被加密,從而保護使用者的隱私和安全。但隨著 SSH 協定的泛用性增加,Telnet 逐漸被 SSH 取代,Telnet over SSH 協定已經鮮少在使用。
在 IoT 設備中,Telnet 協定的主要功能是允許使用者通過網際網路遠端登入到設備中,並且可以通過 Telnet 協定進行設備的管理和控制。使用者可以透過 Telnet 協定對智慧居家設備進行設定和控制,例如:調節溫度、控制燈光和窗簾等。除了智慧居家設備以外,Telnet 協定還可以用於工業自動化和控制系統中。例如:工業控制系統中的可程式化邏輯控制器 (Programmable Logic Controller,PLC) 可以透過 Telnet 協定進行遠端控制以實現自動化控制系統。市面上常見的路由器通常也都會預留 Telnet 作為 Debug 埠使用。
🐧WiFi#
Wi-Fi 是一種無線網路通訊協定,可以實現無線傳輸資料和網路連接。Wi-Fi 技術的基礎是 IEEE 802.11 標準的無線區域網路技術,它定義了無線網路的物理層和資料連結層。Wi-Fi 的工作原理是透過無線訊號在設備之間傳輸資料。Wi-Fi 設備包括無線網卡、路由器、中繼器等。無線網卡是 Wi-Fi 設備的核心,它可以將電腦或手機的訊號轉換成無線訊號,然後透過無線網路連接到路由器或中繼器。
Wi-Fi 最大的的優點是方便快捷,使用者無需網路線就能夠實現網路連接。同時,Wi-Fi 的覆蓋範圍也比有線網路更廣,可以實現更大範圍的網路連接。然而 Wi-Fi 也存在一些缺點,儘管 Wi-Fi 技術不斷發展,速度和穩定性也不斷提高,但由於無線訊號的傳輸會受到環境干擾的影響,因此 Wi-Fi 的穩定性和速度不可避免地會受到影響。同時,Wi-Fi 的安全性也需要特別注意,因為無線訊號可以被攔截,可能會導致敏感資料的泄露。
Wi-Fi 技術在 IoT 設備中扮演了重要的角色,它為設備提供了穩定的無線網路連接,使得設備之間可以實現即時通訊、資料傳輸和互動。Wi-Fi 技術的發展使得 IoT 設備的應用更加廣泛,從家庭到工業自動化控制系統都可以看到 Wi-Fi 技術的身影。在 IoT 設備中,Wi-Fi 技術的應用尤其突出。許多智慧居家設備,例如:智慧插座、智慧燈泡、智慧門鎖等都需要 Wi-Fi 連接才能實現遠端控制和監控。此外,一些工業自動化控制系統中的設備,例如:智慧監測儀器、智慧機器人等也需要 Wi-Fi 連接來實現即時通訊和資料傳輸。
🐧MQTT#
MQTT (Message Queuing Telemetry Transport) 是一種輕量級的通訊協定,主要用於 IoT 設備之間的通訊。相對於 HTTP 而言,MQTT 可以省略 HTTP Header 等資料的傳輸,減少流量的消耗。MQTT 協定具有低延遲、低頻寬、高效率等特點,這使得它成為 IoT 設備通訊的首選協定之一。
MQTT 協定的特點是它可以運行在可靠性與連線品質較低的網路環境中。這使得 MQTT 協定非常適合 IoT 設備之間的通訊,因為 IoT 設備通常需要在不同的網路環境中運行,例如:Wi-Fi、行動網路等,而這些網路環境的頻寬和穩定性都有所不同。
MQTT 協定的通訊模式基於發布/訂閱 (Publish/Subscribe) 模式。在 MQTT 協定中,設備可以發布一個主題 (Topic),其他設備可以訂閱 (Subscribe) 主題,當發布者發布了一條消息,所有訂閱了這個主題的設備都可以接收到這條消息。這種通訊模式可以實現設備之間的即時通訊和資料傳輸,同時也可以減少通訊的延遲和頻寬占用。
在 MQTT 協定中,設備之間的通訊可以透過 TLS 協定進行加密,從而保護通訊內容的安全性。同時,MQTT 協定還具有消息保證 (Message Assurance) 的特性可以確保消息傳輸是否順利完成。在 MQTT 中,消息保證是通過服務品質等級 (Quality of Service,QoS) 來實現。MQTT 定義了三個不同的 QoS 等級:
QoS 0:消息發送後,不會進行確認。這表示著消息可能會遺失或重複傳輸,但是在發送時的延遲和網路開銷最低。
QoS 1:消息發送後,會收到一個確認 (PUBACK)。如果沒有收到確認,發送者會重試發送消息,直到收到確認為止,確保消息至少被傳輸一次,但可能存在重複傳輸的情況。
QoS 2:消息發送後,會進行兩次確認 (PUBREC、PUBREL),然後再收到最終確認 (PUBCOMP),確保消息僅傳輸一次,沒有遺失和重複傳輸。
🦉IoT 常用加密技術類型#
🐧 通訊加密#
通訊加密是指將通訊過程中的資料進行加密,使得只有經過授權的使用者才能解密和讀取資料。IoT 通訊常用的加密技術類型有以下幾種:
IPSec
網際網路安全協定 (Internet Protocol Security,IPsec) 是一種用於保護 IP 通訊的協定。IPSec 提供了多種不同的安全性保護機制,包含加密、認證和完整性檢查。IPSec 可以在兩個端點之間建立一個安全通道,這種通道可以使用兩種不同的模式來建立:傳輸模式 (Transport mode) 和通道模式 (Tunnel Mode)。傳輸模式只對資料本身進行加密,而通道模式則對整個 IP 資料包進行加密。通道模式通常用於 VPN 連接。IPSec 可以在不需要任何特殊硬體的情況下實現通訊上的安全性。它可以在任何 IP 網路上運行,並且可以與現有的網路設備和應用程式很好的契合。
SSL/TLS
傳輸層安全性協定 (Transport Layer Security,TLS) 和安全通訊協定 (Secure Sockets Layer,SSL) 是兩種常用的加密協定。當客戶端和伺服器建立連接後會透過握手確認使用哪種加密演算法和密鑰來保護資料。一旦握手過程完成,SSL/TLS 就會將資料加密,以確保它在傳輸過程中不被竊聽或篡改。同時,SSL/TLS 還會使用數位簽章 (Digital Signature) 確保資料的完整性,以防止資料在傳輸過程中被偽造。
DTLS
資料包傳輸層安全 (Datagram Transport Layer Security,DTLS) 是一種基於 TLS 的協定,專門用於保護使用者資料包協定 (User Datagram Protocol,UDP)。由於 UDP 是一種無連接的協定,因此它比 TCP 更容易受到攻擊。DTLS 的工作原理與 TLS 類似,當客戶端和伺服器建立連接後會透過握手確認使用哪種加密演算法和密鑰來保護資料。一旦握手過程完成,DTLS 就會將資料加密,以確保它在傳輸過程中不被竊聽或篡改。同時,DTLS 還會使用數位簽章 (Digital Signature) 確保資料的完整性,以防止資料在傳輸過程中被偽造。DTLS 的主要優點是它可以提供與 TLS 相同的安全性,同時還保留了 UDP 的特點,低延遲。這使得 DTLS 非常適合用於即時通訊應用,例如:視訊會議、語音通話等。
SSH
安全外殼協定 (Secure Shell Protocol,SSH) 是一種用於保護遠端登錄和其他網路服務的協定。SSH 可以在不安全的網路上建立安全的通訊通道以傳輸資料。它使用公共密鑰加密來驗證使用者身份。當使用者與伺服器建立 SSH 連接時,使用者的公共密鑰會被傳送到伺服器,然後伺服器使用公共密鑰對使用者進行身份驗證。防止未經授權的人士假冒使用者身份。 SSH 可以在不同的操作系統上運行,包含:Unix、Linux、Windows 等。SSH 還有一些常用的工具,例如:scp、sftp 等,可以用於檔案傳輸、埠轉發等多種用途。
🐧 資料加密#
資料加密是指將資料進行加密,只有持有解密金鑰才能解密和讀取資料。IoT 設備常用的資料加密技術有以下幾種:
AES (Advanced Encryption Standard)
AES 是一種對稱式加密演算法,可以用於保護 IoT 設備蒐集和傳輸的資料。AES 使用相同的密鑰進行加密和解密,因此需要確保密鑰的安全性,是 IoT 系統中常用的加密技術之一。常見的 AES 的密鑰長度有 128、192、256 位元。AES 使用分組加密的方式,將資料分為固定大小的塊,然後對每個塊進行加密。在加密過程中,AES 還會使用填充和初始化向量 (IV) 來增強演算法的安全性。
RSA
RSA 是一種公開密鑰加密演算法,可以用於保護 IoT 設備蒐集和傳輸的資料。RSA 演算法使用兩個不同的密鑰進行加密和解密,公開密鑰可以公開分享,私有密鑰只有管理者知道。RSA 演算法的安全性基於大數分解問題。即,將一個非常大的整數,透過因數分解分解成兩個質數的乘積。由於解決這個問題以目前的技術來說非常困難,因此 RSA 演算法目前被認為是非常安全的。RSA 演算法通常用於 IoT 系統中的數位簽章和身份驗證。
ECC (Elliptic Curve Cryptography)
ECC 是一種公開密鑰加密演算法,是一種基於橢圓曲線的加密演算法。ECC 的安全性基於橢圓曲線難題,它要求在橢圓曲線上找到一個點,這個點的坐標是一個有限域上的整數。ECC 的安全性比傳統的 RSA 加密更高,因為 ECC 使用的密鑰比 RSA 更短,並且 ECC 的運算速度更快。在 IoT 網路中,ECC 的應用非常廣泛。由於 IoT 設備通常計算能力較弱,因此使用 ECC 可以大大減少加密和解密所需的計算能力。此外,ECC 可以使用更短的密鑰來實現與 RSA 相同的安全性。
🐧 身份驗證金鑰#
設備和使用者必須透過身份驗證確認身份,以確保只有授權的用戶才能訪問和控制設備。IoT 設備常用的身份驗證和金鑰管理技術有以下幾種:
X.509
X.509 憑證是一種公開密鑰基礎結構 (PKI) 標準,用於確認使用者或設備的身份。它是一個數位憑證,其中包含使用者或設備的公開密鑰和其他資訊。當使用者或設備需要訪問 IoT 網路時,X.509 憑證可以以確認其身份。