作者:RoweBots公司Kim Rowe 基于使用機器到機器(M2M)等協議的聯網設備不斷普及的發展趨勢,網絡(特別是無線網絡)的安全性越來越受人們的關注。外面的世界危險無處不在,仍有許多人想要破壞建立這些連接所需的社會性和關鍵性基礎設施。 針對基于MCU、MPU或FPGA的嵌入式無線或有線M2M系統,特別是在當今普遍聯網但易受攻擊的世界中,良好的安全性要求采取以下這些全部使用了標準加密算法的措施:
本文簡要討論了上述各項安全措施應用到M2M的情況以及總的系統級考慮因素。M2M系統要求高度的安全性來保護信息和系統。沒有這種無縫的集成和測試,就會存在安全漏洞,系統很容易受到攻擊,并可能發生可怕的后果。 使用TLS進行網絡通信 在M2M系統中,不管是哪種無線類型,所有無線鏈路都會使用某種加密技術來保護無線傳輸的數據。在一個節點內或兩個有線節點之間,負荷數據以明碼的方式存在于有線/無線混合系統中。一種方法是使用傳輸層安全(TLS)協議。TLS作為網絡中兩個節點之間的端到端加密技術,可確保數據不管走哪條路徑總是安全的。 如圖1所示,TLS很容易配置和使用,正是這個原因,TLS是人們非常青睞的一種通信安全方法。TLS的典型實現遵照的是針對應用程序可移植性開發的事實上的openSSL接口標準。這種應用程序編程接口(API)是套接字(socket)接口中的表示層,可為應用程序提供安全性。 圖1:TLS可保證端到端通信的安全。 在套接字通信之上提供TLS層可以為安全應用提供安全的套接字通信,而直接使用套接字的通信是不安全的,因為所有數據都是明碼傳輸。 使用IPSec協議的虛擬專用網(VPN) 許多時候,網絡中兩個節點之間的所有通信都要求是安全的。在這種情況下,可以建立虛擬專用網(VPN)(圖2)。這種協議深入TCP/IP實現內部,對兩個節點間傳輸的所有數據包進行加密。因為IPSec是作為網絡層的一部分,因此節點之間的所有套接字調用都會自動加密。 圖2:在兩個節點之間使用VPN和IPSec可以確保節點之間所有通信業務的安全。 有人可能會問,既然如此,為什么我們還要使用其它方法,用這一種方法不就可以了嗎?原因有兩個。第一個原因很好理解:VPN的建立相當麻煩,會遇到很多問題。正是這個原因使得它的使用面不如想像的那么廣。 第二個原因是最好的安全性需要建立在各層中。通過提供各個安全層,被攻破的難度就要大得多。這與打開多重鎖著的門才能進入金庫是一個道理——每個層都增加了入侵難度。基于這個理由,最好采用更多的安全措施,而不僅是VPN。 安全殼 為了登錄并在遠程系統上工作,小型系統上經常使用telnet。現在通過增加額外的閃存空間,你可以運行安全殼(SSH)(圖3)。SSH就像是一種安全的telnet,但并不是運行在TLS之上的telnet。SSH有它自己的協議。它通過在MCU上運行的SSH服務器提供安全殼訪問。 圖3:SSH代替Telnet提供節點間的安全通信。MCU產品只提供SSH服務器,該服務器。 安全文件傳送 只是因為在使用文件傳送協議(FTP)時使用了登錄身份和口令,許多人就認為這是安全的傳送。事實上,即使是口令在網絡上也是明碼傳送的。更好的方法是使用安全文件傳送協議(SFTP)。SFTP并不是在TLS上運行的FTP。而是如圖4所示那樣,是另外一種用于加密文件傳送的特殊協議。 圖4:SFTP是一種新的協議,支持文件傳送時的加密和認證通信,可替代所有數據都是明碼傳送的FTP。 安全的電子郵件 郵件服務器之間的業務通常用TLS加以保護。但TLS只能保證只有授權和認證的用戶才能使用服務器,而監視網絡業務的任何人都無法閱讀郵件。基于這個理由,如果你使用SMTP協議從基于MCU的M2M傳感設備安全地發送通知,你也需要TLS(圖5)。 圖5:使用TLS的SMTP傳輸可以確保只有授權用戶才能使用電子郵件服務器,并加密發送數據。如果消息在發送前得到了加密和簽名,那么這些消息就能被擁有正確消息密鑰的人加以鑒權,確保其私密性。 當然,在服務器上使用的安全性并不能應用于任何給定節點中的消息內容。因此消息需要簽名和加密才能確保自身的安全性。 安全的網站服務器訪問 為了安全地進行網站頁面訪問和數據傳送,可以使用HTTP Secure(HTTPS)。采用任何M2M配置的網站服務器(圖6)都要求支持HTTPS。HTTPS是聯合運用TLS以及HTTP協議實現的。網站服務器本身可以通過HTTPS獲得加密的數據包進行處理,并提供傳送之前加密的解過密的網頁。 圖6:瀏覽器具有足夠的智能使用TLS上的http進行連接,從而支持安全的網站訪問。http服務器也接受TLS上的請求,以便提供安全的網頁訪問和更新。 安全管理 為了管理遠程設備,我們經常使用安全網絡管理協議(SNMP)。SNMP提供了查看設備內部細節、重新配置設備、執行各種命令、讀取數據、讀取記錄和設置變量的一種方式。為了做到這一點,要求使用最新的安全版本(SNMP v3)(圖7)。許多實現人員試圖使用較早版本的SNMP,但這些版本都是不安全的。 圖7:客戶端和服務器都要求支持SNMPv3才能實現安全的管理。如果服務器只支持SNMPv1和2c,是無法實現加密或認證的。為了提供完整的安全性,加密和認證都是必須的。 安全啟動 當在系統上執行遠程更新時,需要一個安全的系統來下載新的映像、重新編程器件,并確保程序工作正常,但這方面的安全性經常被人們所忽視。如果沒有安全的啟動措施,新的映像可能被加載到設備上,控制被暗中破壞,或者算法被篡改,從而可能導致嚴重的后果。 系統安全問題 所有這些安全服務都需要與操作系統一起工作。認為這種復雜程度不需要實時操作系統(RTOS)就可以對付恐怕是癡心妄想。只有將這些組件無縫地集成進操作系統然后經過嚴格的測試才能保證其安全性。 有些人試圖提供附加模塊來實現上述多種安全功能,但沒有操作系統的集成和測試,很容易留下安全隱患。通過無縫集成和基于工廠的測試,安全性將得到改進和修復(如果需要的話),并在系統級別完成。 |