硬體引擎實現加密傳輸    聯網裝置防駭安全有保障

2017-05-15
物聯網裝置若輕忽安全防護設計,很輕易地就被入侵,淪為駭客發動DDoS攻擊的幫兇,過去一年全球網際網路災情不斷哀鴻遍野,許多大企業都淪為受害者。設法增強聯網裝置的安全防護能力,就成了當務之急。讓網路安全軟體在專屬子系統內運行,從而成為獨立的執行環境,或許就是一個不錯的解決方案。
物聯網(IoT)的產品與系統往往存有敏感且私密的資訊,讓資安防護顯得更為重要,其中可能包括密碼、金鑰、憑證、配置、個資、供應商智慧財產權(IP)等各種資訊。即使看似不甚敏感或機密的資料,也可能有引發敏感資料遭駭的風險。 

目前便有業者推出的SimpleLink Wi-Fi CC3120及CC3220 Internet-on-a-chip系列裝置提供豐富的內建安全功能,可協助開發工程師因應各種安全需求,而且不會對主微控制器(MCU)產生任何處理效能的負擔。以下除了介紹上述安全功能以外,並提供建議,說明各項功能可如何運用在實際的系統實作之中。 

本裝置經過特別設計,可讓網路安全軟體在裝置上的專屬子系統內運行。這項子系統是一種晶片內建網路處理器,配載了硬體的加密引擎,從而成為獨立的執行環境,因此可分擔系統主微控制器的效能負載。 

其安全功能適用於種類廣泛的主要活動,範圍涵蓋產品的整個生命週期,包括網路活動、資料儲存、IP保護、複製保護,以及在生產期間提供安全防護。透過一套生態系統,在其中整合了簡單易用的應用程式介面(API)、工具及文件,來將上述安全功能提供給廠商。 

借助專業術語 了解安全方法 

表1提供關鍵項目的簡要說明,以利了解各項安全方法和特性。 

表1 專業術語
聯網裝置防駭 安全議題發燒 

物聯網裝置本質上就是聯網裝置,因此可以成為惡意取得敏感資料的途徑(例如監視器影像),或是取得致動器的控制(例如門鎖)。 

為妥善保障網路產品的安全,特定產品及其系統等級要求必須經過安全評鑑。此項評鑑應辨識出相關的資產、分析環境,以及產品預期與非預期的潛在使用,並由此偵測出產品的潛在弱點。 

此項評鑑有助於開發者透過可用的安全功能,定義出最佳的保護計畫。建議透過移除或停用所有未使用的服務或功能,以便將暴露點數量減到最低。 

每項產品的使用環境、資產及程序彼此之間各有不同,但是,物聯網裝置一般都有以下幾項共通的暴露點:網際網路(或內部網路)的網路連線、區域網路連線、以及實體存取(具備或不具備操控硬體介面的能力)。圖1顯示了物聯網連接裝置的共通暴露點。 

圖1 物聯網裝置的共通暴露點
網際網路連線 

與所有的可能攻擊管道有關的此暴露點源自於網際網路的連接性。此向量的弱點應來自所有的通訊管道(如插槽)以及使用的通訊協定。一般而言,這些攻擊的潛在目標都是透過這些管道的資源與資訊。然而必須注意的是,攻擊者可以嘗試使用這些資源來擴大其暴露點,因此在這些管道上的任何資源或資訊都應該仔細檢查。 

SimpleLink Wi-Fi裝置搭配使用各種功能,包括符合標準的安全傳輸層(SSL/TLS,亦稱為安全插槽)、網域名稱驗證、安全內容傳送,以及裝置唯一識別碼,可提供網路層的通訊安全。這些功能不僅可允許資料加密,同時也能透過信任驗證程序的標準鏈來認證其來源。 

區域網路連線 

此暴露點在本質上與網際網路的網路連線類似。區域網路的一般性質係將其自身暴露於特定的攻擊向量組之中,例如無線網路的監控或是將惡意或濫用的流量導入至無線區域網路(WLAN)或區域網路(LAN)中。 

第一個向量是以整個無線網路的流量被動監控為基礎,攻擊者並沒有連接至該網路。無線網路的監控可以輕易地達成,因為有些通訊封包表頭即使在安全的無線網路中也沒有加密。這些表頭可能會揭露該裝置在此網路上的MAC位址,以及其產生之流量的暫時屬性。 

Wi-Fi聯盟(WFA)已經在其規定的標準中納入安全性與合規測試。SimpleLink Wi-Fi裝置為認證的Wi-Fi聯盟裝置,並且符合所有的這些安全要求。 

與第二種向量相關的攻擊類型,則是來自區域網路內的裝置。這項環節容易招致其他針對網路存取的攻擊向量,使其有能力合法將流量導入整個網路,並濫用目標裝置所提供的連接埠及通訊協定。網際網路大多會阻擋這些連接埠及通訊協定的存取,但是LAN卻對其開放。SimpleLink Wi-Fi裝置擁有的功能如HTTPS伺服器與RX過濾器,允許開發其他的安全層級給區域網路使用。 

實體存取 

在實體存取的攻擊案例中,暴露風險會發生在產品層級,且必須考慮幾項因素。此事件可能招致如產品層級操控和印刷電路板(PCB)操控等攻擊向量。產品層級操控向量意指攻擊者的攻擊可以透過最終產品提供的外部介面(例如電源線、按鈕及其他等)來控制裝置的操作。 

第二個向量則涉及攻擊者對於實體電路板的存取能力,其可以監控線路與硬體介面,在更嚴重的情況下,甚至能夠操控電線,更換印刷電路板上的裝置,連接至主控制器,並且將訊號導入以啟動特定的動作。因此,必須提供如IP保護、經過加密的檔案系統安全性、檔案完整性檢查以及複製保護等,來協助抵禦這些攻擊。 

SimpleLink強化產品設計 新裝置安全擺第一 

SimpleLink Wi-Fi CC3120和CC3220 Internet-on-a-chip系列裝置提供廣泛的內建安全功能。這些安全功能協助並讓設計者針對各項安全要求,使用其預期的應用,以降低安全風險。圖2顯示SimpleLink Wi-Fi CC3120與CC3220 Internet-on-a-chip系列相對於潛在攻擊者之存取距離所提供的主要安全功能的高等級圖表,而表2則列出主要安全功能的高等級說明。 

圖2 採行安全措施

表2 主要安全功能
CC3220S和CC3220SF具有獨特架構,含兩個實體獨立的微控制器及記憶體執行環境,CC32xx單晶片無線微控制器解決方案及CC31xx網路處理器,內建多層安全功能。圖3顯示CC3220S及CC3220SF裝置提供的安全功能方塊圖,圖4則顯示CC3120裝置所提供的安全功能方塊圖。 

圖3 CC3220安全功能

圖4 CC3120安全功能
遵循TLS/SSL規範網路層安全有依據 

SimpleLink裝置是一個以Wi-Fi為基礎的裝置,能支援網路區域範圍(節點與AP之間)的802.11安全通訊協定,以及使用TCP/IP進行節點對節點通訊時的傳輸層TLS/SSL。TLS/SSL可以解決網路上節點之間的機密性、資料完整性及真實性,減少通訊受到的資安威脅。圖5顯示了共通的安全流量層。 

圖5 網路安全拓樸
第一個面對的是Wi-Fi安全方面。SimpleLink裝置的Wi-Fi層符合802.11安全,無論是存取點(AP)與目標站(STA)之間,或是在Wi-Fi直接模式下的點對點之間交易,都能確保框架(L2資料單元)的完整性及機密性。IEEE 802.11規範及其附加部分說明了安全通訊協定。此外,SimpleLink裝置的Wi-Fi子系統提供了同時支援個人與企業的安全範例,包括遠端認證撥接使用者服務(RADIUS)式的認證(802.1X)。 

SimpleLink為Wi-Fi認證的裝置,且符合Wi-Fi聯盟的安全標準與測試組。表3列出了可支援Wi-Fi安全的相關技術。但這其中,有線等效加密(WEP)安全在設計上有缺陷,容易遭受駭入,強烈建議切勿使用。而它之所以仍受到SimpleLink產品的支援,僅是由於舊有的合規因素。 

表3 Wi-Fi安全
所有的無線密碼都以加密格式,儲存在序列式快閃記憶體中。這些密碼僅供網路處理器(NWP)單獨使用,不會透過API或任何偵錯管道提供給主機。 

除了Wi-Fi安全方面外,安全插槽層也是需要關注的焦點。SimpleLink裝置提供的安全傳輸層(安全插槽)符合執行SSL與TLS的通訊協定標準,這些涉及加密範例的網路通訊協定能夠提供TCP/IP連線的通訊安全性。在多數系統中,SSL/TLS層是在傳輸層之上執行。在SimpleLink裝置中,SSL/TLS嵌入在BSD插槽層,允許無縫存取安全插槽設備。API的附加裝置提供使用者一些控制SSL/TLS行為及設定的層級。 

SSL/TLS是在網路處理器的子系統中執行。在設計裝置的結構時,讓網路處理器成為一個實體獨立的子系統,建立一個獨立的執行環境。使用硬體加速器來減輕加密演算法中的計算負擔。SimpleLink裝置最多可以同時支援六個SSL/TLS插槽。表4為在SimpleLink裝置中支援SSL規格的簡要說明。 

表4 支援的SSL規格
認識SSL/TLS憑證處理及其他安全檔案 

憑證檔案、DH(Diffie-Hellman)參數以及金鑰必須儲存在裝置檔案系統上,以依照選定的密碼套件啟用部分SSL/TLS功能(表5)。憑證為標準格式檔案,攜帶非對稱金鑰對的公開金鑰,因此本身並無機密性質。反之,私密金鑰則屬機密,必須保持加密狀態。這些檔案必須套用存取控制限制,將有限的讀取存取權限提供給合法擁有者。 

表5 SSL檔案
交握發生時,SSL插槽內部會使用金鑰和憑證。主機必須只能將相關的檔案與使用API的SSL/TLS插槽綁定。表5列出SimpleLink SSL/TLS插槽所支援的檔案。 

了解SSL交握 

在建立兩個同層之間的TCP連接後,SSL通訊協定即接手協商工作階段的安全參數與同層的認證。 

緊接著在後的是此交握處理的簡短說明,由SimpleLink裝置執行此交握,對使用者而言仍保持透明。 

包括以使用SSLv3、TLS 1.0、TLS 1.1、TLS 1.2通訊協定版本參數傳送用戶端的招呼訊息、用戶端支援的密碼組、附加裝置則是用在SSL的不同應用上;伺服器從用戶端招呼密碼清單中選擇通訊協定版本及密碼套件,然後傳送ServerHello訊息給用戶端;伺服器傳送憑證鏈(除了根CA外)給用戶端;用戶端會檢查憑證鏈中每個憑證的簽章以查驗憑證鏈,先從用戶端持有的根CA開始。伺服器會向用戶端要求憑證進行用戶端認證;同層會決定工作階段的(對稱)金鑰。用戶端及伺服器開始從該點傳輸加密的資料。圖6顯示了SSL交握處理。 

圖6 SSL交握
解析SSL/TLS與SimpleLink裝置交握 

SSL/TLS通訊協定是SimpleLink裝置的網路階層之整合部分,在網路子系統內執行,因此得以建立一個個別的執行環境。與此層唯一的介面是透過從應用處理器的API呼叫。 

首先說明支援SSL/TLS交握的能力,表6列出了SSL交握的功能。 

接著,說明基本SSL/TLS連接。在多數系統中,SSL/TLS通訊協定是在TCP層之上執行。在SimpleLink裝置中,SSL/TLS插槽係內建在TCP層內,並且保留了標準TCP插槽的外觀和感覺。整個SSL/TLS交握會在連接的工作階段時自動觸發,亦即呼叫connect()或accept()等API時。此方法可以簡化搭配安全插槽的工作。使用通訊協定參數中的安全參數開啟插槽,接著呼叫連接或接受指令,以建立與其他同層的安全連接。 

在伺服器模式下,必須提供伺服器憑證或憑證鏈及私密金鑰。交握時,傳送此憑證鏈。在呼叫sl_Accept時若缺少這些檔案,就會發生錯誤。 

在用戶端模式下,當遠端伺服器政策要求用戶端側認證時,可以供應用戶端憑證及其私密金鑰。 

還須要注意錯誤及警告。BSD指令會在發生任何故障時傳回錯誤細節,包括安全插槽交握。一些錯誤代碼會反應安全相關的警告,而不會阻擋程序。開發者有必要慎重考慮下列的警告,因為它們代表潛在的安全問題,包括:SL_ERROR_BSD_ESECSNOVERIFY表示已連接無伺服器驗證;SL_ERROR_BSD_ESECDATEERROR代表已連接有憑證認證錯誤;SL_ERROR_BSD_ESECUNKNOWNROOTCA表示已連接但根CA未受信任。 

也要留意同層認證。例如,與伺服器的基本連接導致接收到sl_Connect指令的錯誤(SL_ERROR_BSD_ESECSNOVERIFY)這表示資料流從當下即開始加密,但是SimpleLink並未認證在遠端側的是認證伺服器。 

在這種狀況下,資料會進行加密立即成為無法竊聽的機密,但仍無法查驗伺服器的身分,MITM攻擊或釣魚攻擊仍然會發生。此外,設定一個簽章伺服器憑證的根CA會在受信任的伺服器鏈上觸發簽章檢查,同時也會呼叫受信任驗證的完整鏈。若在此情況下認證失敗,連接隨即終止。若SimpleLink是在伺服器模式,它可以設定簽章用戶端憑證的根CA以便查驗用戶端。若認證失敗,連接隨即終止。 

然後是網域名稱驗證。受信任評估鏈可以確保由受信任單位執行通訊。不過,它仍然無法保證這是通訊時的預期身分。因此,這就要靠網域名稱驗證來達成。用來查驗通訊的單位是否如預期的這個程序,就是實際執行通訊的那個程序。欲達此目的可以比較由伺服器發行的憑證內容與預期的預先儲存憑證是否相同。若是比較失敗,即觸發安全警告,但仍保持連接。是否處理此警告由開發者自行斟酌。 

還要留意可信任的根憑證目錄。可信任的根憑證目錄為一檔案,由德州儀器(TI)提供與簽章,內容包含已知的及可信任的根CA清單(TI SDK及擔保品提供完整的清單)。目錄裡面有來自受信任CA的可信任根憑證,例如VeriSign、GoDaddy、GeoTrust及其他。可信任的根憑證目錄也包含已知的撤銷憑證清單。可信任根憑證目錄只有使用在用戶端模式中。以伺服器模式運轉時,允許使用自我簽認的根CA來認證用戶端。 

若可信任的根憑證目錄無法辨識某個根CA時,sl_Connect指令即傳回警告SL_ERROR_BSD_ESECUNKNOWNROOTCA,代表連接成功,但是用來查驗可信任伺服器鏈的根CA則未知。在這種狀況下,開發者應決定是否要明確終止連接,或是冒著風險繼續工作。 

當SSL/TLS連接期間,接收到撤銷憑證(所有的憑證鏈已檢查),或是使用者設定的根CA已撤銷,則終止交握,且sl_Connect指令傳回SL_ERROR_BSD_ESECCERTIFICATEREVOKED。 

可信任的根憑證目錄以檔案形式儲存在檔案系統內,僅能更新至較新版本。圖7顯示了憑證檔案與可信任根憑證目錄之間的關係。 

圖7 憑證檔案及與可信任根憑證目錄的關係
最後要留意認證伺服器日期。每個憑證都有有效日期。在用戶端模式下連接至伺服器時,若設定根CA,則會驗證伺服器時間。若是時間認證失敗,sl_Connect指令會傳回錯誤SL_ERROR_BSD_ESECDATEERROR,代表已連接但時間及日期認證錯誤。使用者可以設定裝置的時間與日期,用來認證憑證的時間及日期。日期與時間會保持在休眠模式。由於設定日期與時間會進行序列式快閃記憶體的寫入操作,因此必須考慮快閃記憶體的忍受力。 

留心SSL/TLS最大連接數量 

SimpleLink裝置最多可以同時連接六個SSL/TLS用戶端插槽。而在伺服器插槽中的接受插槽(伺服器聆聽新連接的插槽)並未計入。 

慎選SSL參數 

可以設定允許的SSL版本將特定的密碼清單用在不同的執行上。有些密碼演算法是由硬體完成,其他的則由軟體完成,因此可以很容易地就選擇只用硬體加速的演算法。 

插槽上的安全變更(STARTTLS) 

正規的TCP插槽可以升級成為SSL/TLS插槽。使用者必須明確地觸發SSL/TLS交握,與插槽連接無關(由sl_Connect或sl_Accept API觸發)。通常,這項應用是運用在使用STARTTLS將已連接的工作階段升級至安全連接的應用上。 

此類應用的範例是連接埠587上的SMTP。只有當SSL/TLS從同層收到關閉的警報時,安全插槽才能降級到非安全的TCP插槽。SimpleLink使用者無法在安全連接上發動SSL/TLS關閉。若是插槽升級或降級,會發行一個非同步事件至主機,以顯示新的階段。 

(本文作者為德州儀器嵌入式連接解決方案安全技術總監)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!