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