Wi-Fi 連接是許多物聯(lián)網(wǎng) (IoT) 設(shè)備的關(guān)鍵要求,也是黑客們最喜愛的攻擊目標(biāo)。薄弱的安全措施會(huì)導(dǎo)致設(shè)備在持續(xù)的網(wǎng)絡(luò)通信過程中容易遭到入侵。更糟糕的是,物聯(lián)網(wǎng)設(shè)備有可能在其生命周期的早期,即設(shè)備嘗試加入受信任的網(wǎng)絡(luò)時(shí),便淪為攻擊的犧牲品。
利用 Texas Instruments 的雙核無(wú)線 MCU,工程師可以輕松地增強(qiáng)物聯(lián)網(wǎng)設(shè)備在其整個(gè)產(chǎn)品生命周期內(nèi)的安全性,并支持多層端到端安全策略。
安全組件
要保證任何系統(tǒng)的安全性,都采用需要多層方法。盡管在諸多安全措施中,數(shù)據(jù)加密是最容易想到的,但它只是穩(wěn)健安全策略的一個(gè)方面。類似中間人攻擊的黑帽子方法在經(jīng)加密的數(shù)據(jù)交換開始之前很早便已在利用任何可能的漏洞。事實(shí)上,安全的主機(jī)會(huì)對(duì)客戶端進(jìn)行驗(yàn)證,確保只有經(jīng)授權(quán)的用戶、設(shè)備或其他系統(tǒng)才能獲得訪問權(quán)。反過來(lái),這些客戶端也會(huì)對(duì)主機(jī)進(jìn)行驗(yàn)證,以確認(rèn)其身份。
這種雙向驗(yàn)證居于安全應(yīng)用的核心位置,但它最終依賴于更基礎(chǔ)的機(jī)制和策略。首先,密鑰和既有的信任根是任何安全應(yīng)用的基礎(chǔ)構(gòu)件。在互聯(lián)網(wǎng)上常用的公鑰基礎(chǔ)架構(gòu) (PKI) 中,與私人密鑰配對(duì)的公鑰提供了必不可少的實(shí)體身份驗(yàn)證。X.509 證書標(biāo)準(zhǔn)在更廣泛的上下文中封裝了建構(gòu)在證書鏈之上且記錄了身份的實(shí)體公鑰,為應(yīng)用提供了扎實(shí)可靠的信任根。
密鑰、加密、X.509 證書和信任根的使用是構(gòu)建安全應(yīng)用的必要而充分的條件。基于這些組件構(gòu)建關(guān)鍵系統(tǒng),并增加中間件和應(yīng)用級(jí)安全協(xié)議,便可滿足苛刻的安全要求。但對(duì)于大多數(shù)應(yīng)用而言,開發(fā)人員只需使用上述組件和某些最佳操作實(shí)踐(例如啟動(dòng)和無(wú)線 (OTA) 更新)便能鎖定安全性。
而且,甚至這些“基本”安全組件就代表了其自身的復(fù)雜機(jī)制和策略組合。對(duì)于產(chǎn)品經(jīng)理,創(chuàng)建復(fù)雜的安全組件與專注于應(yīng)用的差異化功能之間很快就會(huì)出現(xiàn)沖突。這種情況下安全措施往往會(huì)退居其次,因?yàn)槲锫?lián)網(wǎng)開發(fā)人員很少有時(shí)間來(lái)獲取與精英黑客針鋒相對(duì)所需要的知識(shí)或經(jīng)驗(yàn)。Texas Instruments 無(wú)線 MCU 提供了讓上述二者公平競(jìng)爭(zhēng)的單一器件。
無(wú)線 MCU
TI 的無(wú)線 MCU 中有一個(gè) CC3220 雙核器件,其中包括一個(gè) ARM Cortex?-M4 內(nèi)核和一個(gè)專用網(wǎng)絡(luò)處理器內(nèi)核,并帶有集成式收發(fā)器。該 MCU 提供三種變體:CC3220R、CC3220S 和 CC3220SF。三者均附帶 256 KB 片載 SRAM,用于在器件處于各種低功耗模式期間保持?jǐn)?shù)據(jù)。CC3220SF 還集成了 1 MB 閃存,用于實(shí)現(xiàn)代碼的原位執(zhí)行,而將 SRAM 僅用于可寫入數(shù)據(jù)。獨(dú)立的片載 ROM 提供了全套 Wi-Fi 和互聯(lián)網(wǎng)邏輯層,從而使網(wǎng)絡(luò)處理器無(wú)需 M4 內(nèi)核的介入,便能提供全套連接服務(wù)。或許對(duì)于物聯(lián)網(wǎng)開發(fā)人員而言,最重要的是,該器件可運(yùn)用其嵌入式無(wú)線功能及多種片載硬件安全機(jī)制,來(lái)支持以下所述的各種各樣安全服務(wù)。
除了安全連接以外,該 MCU 還提供了大多數(shù)物聯(lián)網(wǎng)應(yīng)用所需的全套外設(shè)和連接接口。該器件提供了一個(gè)四通道 12 位模數(shù)轉(zhuǎn)換器 (ADC)、四個(gè)采用 16 位脈沖寬度調(diào)制 (PWM) 的定時(shí)器、看門狗定時(shí)器,以及全套接口,包括多達(dá) 27 個(gè) GPIO、8 位并行相機(jī)、安全數(shù)字 (SD) 卡、SPI、I2C 和 UART 端口,以及 JTAG、cJTAG 和串行線調(diào)試 (SWD) 接口。
對(duì)開發(fā)人員而言,在復(fù)雜的設(shè)計(jì)中使用此器件非常簡(jiǎn)單。工程師可在相對(duì)簡(jiǎn)單的設(shè)計(jì)中,利用該器件的多個(gè)接口選擇來(lái)運(yùn)用其廣泛的功能(圖 1)。TI 通過其 CC3220S LaunchXL LaunchPad 和 CC3220SF LaunchXL LaunchPad 開發(fā)套件進(jìn)一步簡(jiǎn)化了物聯(lián)網(wǎng)設(shè)計(jì)實(shí)施。除了硬件評(píng)估板以外,這些套件還包括一個(gè)完整的參考設(shè)計(jì),其中包含了硬件原理圖、軟件開發(fā)套件 (SDK) 和示例軟件。
圖 1:用于 CC3220 無(wú)線 MCU 的 TI LaunchPad 開發(fā)套件提供了一套完整的物聯(lián)網(wǎng)評(píng)估系統(tǒng),其中包括硬件參考設(shè)計(jì)和用于實(shí)現(xiàn)安全連接的軟件。(圖片來(lái)源:Texas Instruments)
安全連接
CC3220 具備全套片載外設(shè),設(shè)計(jì)要求簡(jiǎn)單,更像是一種專為像物聯(lián)網(wǎng)這樣的嵌入式應(yīng)用而設(shè)計(jì)的集成式 MCU。但與其他高度集成的 MCU 不同,CC3220 針對(duì)各種各樣的必要安全組件提供了片上支持,以幫助確保物聯(lián)網(wǎng)應(yīng)用中的端到端安全性。除了用于實(shí)現(xiàn)安全驗(yàn)證和會(huì)話安全性的功能以外,該器件的安全機(jī)制還能針對(duì)所有三種數(shù)據(jù)狀態(tài)提供保護(hù):適用于“靜態(tài)數(shù)據(jù)”的安全存儲(chǔ);適用于“使用中數(shù)據(jù)”的防篡改和其他運(yùn)行時(shí)安全措施;以及適用于“傳輸中數(shù)據(jù)”的安全交換(圖 2)。
圖 2:在 TI CC3220 MCU 中,網(wǎng)絡(luò)處理器的固件利用集成的安全硬件來(lái)支持各種端到端安全性,覆蓋加密存儲(chǔ)、安全 Wi-Fi 訪問,甚至是嵌入式安全 Web 服務(wù)器。(圖片來(lái)源:Texas Instruments)
CC3220 MCU 也不同于許多旨在提供低層次安全機(jī)制(例如加密和驗(yàn)證)的 IC。該 TI MCU 基于如安全存儲(chǔ)和硬件加速加密之類集成功能構(gòu)建而成,可提供全套更高層次的服務(wù),甚至包括嵌入式服務(wù)器。例如,該器件使用標(biāo)準(zhǔn)傳輸層安全 (TLS) 協(xié)議支持多達(dá) 6 個(gè)安全套接字,并使用這些套接字提供嵌入式 HTTPS 服務(wù)器。為實(shí)現(xiàn)安全的驗(yàn)證和數(shù)據(jù)交換,該器件的信任根證書目錄提供了一種機(jī)制,來(lái)幫助確保與其他受信任主機(jī)和客戶端的交互。在更廣泛的層面上,開發(fā)人員還可以使用該器件為建立信任鏈的關(guān)鍵進(jìn)程構(gòu)建 TI 信任根。
TI 的 SimpleLink MCU 軟件開發(fā)套件 (SDK) 通過一個(gè) API 提供了這些功能,該 API 將受硬件或固件支持的詳細(xì)功能抽象為若干簡(jiǎn)單的調(diào)用。例如,開發(fā)人員可通過調(diào)用一個(gè) API 例程連接到網(wǎng)絡(luò):
sl_WlanConnect(access_point_name, name_length, MAC_address, security_parameters, optional_enterprise_parameters)
并將 security_parameters 設(shè)為器件所支持的標(biāo)準(zhǔn) Wi-Fi 安全協(xié)議之一。
完成連接后,器件可以同樣輕松地提供其更高層次的服務(wù)。例如,開發(fā)人員可使用一個(gè)簡(jiǎn)單的調(diào)用啟動(dòng)內(nèi)部 HTTP 服務(wù)器:
sl_NetAppStart(SL_NETAPP_HTTP_SERVER_ID)。
除了 SL_NETAPP_HTTP_SERVER_ID 之外,其他保留的位圖 ID 將會(huì)啟動(dòng)用于 DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議)、DNS(域名服務(wù)器)和 mDNS(多播 DNS)的嵌入式服務(wù)器。
類似地,開發(fā)人員可使用簡(jiǎn)單的 API 調(diào)用來(lái)運(yùn)用芯片內(nèi)集成的基本安全機(jī)制。例如,CC3220S 和 CC3220SF 變體均支持將數(shù)據(jù)作為加密文件存儲(chǔ)在閃存中的增強(qiáng)文件系統(tǒng)(圖 3)。這些 MCU 以透明的方式對(duì)數(shù)據(jù)進(jìn)行動(dòng)態(tài)加密和解密,并且僅允許通過 API 進(jìn)行訪問。當(dāng)在開發(fā)期間或在運(yùn)行時(shí)創(chuàng)建了安全文件時(shí),MCU 會(huì)創(chuàng)建四個(gè)不同的令牌,分別代表不同的訪問權(quán)限:完全訪問權(quán)(主令牌)、讀/寫訪問權(quán)、只寫訪問權(quán)和只讀訪問權(quán)。
圖 3:TI 的 CC3220S 和 CC3220SF 提供了擴(kuò)展的安全功能,包括閃存上的安全文件存儲(chǔ),以及包括鎖定 JTAG 和調(diào)試端口的功能在內(nèi)的擴(kuò)展型調(diào)試安全性。(圖片來(lái)源:Texas Instruments)
開發(fā)人員通過 API 調(diào)用(類似于面向文件的傳統(tǒng)操作)使用此安全功能,只需一個(gè)用于相關(guān)安全令牌的額外參數(shù)。如列表 1 所示,開發(fā)人員將 API 調(diào)用 (sl_FsOpen) 與用于指示應(yīng)創(chuàng)建安全文件的標(biāo)志配合使用,創(chuàng)建了一個(gè)新文件。后續(xù)打開該文件的調(diào)用需要使用提供的令牌 (MasterToken)。要實(shí)現(xiàn)更精細(xì)的訪問控制,開發(fā)人員可使用 API 調(diào)用 (sl_FsGetInfo) 來(lái)讀取在文件創(chuàng)建期間創(chuàng)建的所有四個(gè)令牌。
char* DeviceFileName = "MyFile.txt";
unsigned long MaxSize = 63 * 1024; //62.5K is max file size
long DeviceFileHandle = -1;
_i32 RetVal; //negative retval is an error
unsigned long Offset = 0;
unsigned char InputBuffer[100];
_u32 MasterToken = 0;
// Create a file and write data.The file in this example is secured, without signature and with a fail safe commit
//create a secure file if not exists and open it for write.
DeviceFileHandle = sl_FsOpen(unsigned char *)DeviceFileName,
SL_FS_CREATE|SL_FS_OVERWRITE | SL_FS_CREATE_SECURE | SL_FS_CREATE_NOSIGNATURE | SL_FS_CREATE_MAX_SIZE( MaxSize ),
&MasterToken);
Offset = 0;
//Preferred in secure file that the Offset and the length will be aligned to 16 bytes.
RetVal = sl_FsWrite( DeviceFileHandle, Offset, (unsigned char *)"HelloWorld", strlen("HelloWorld"));
RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0);
// open the same file for read, using the Token we got from the creation procedure above
DeviceFileHandle = sl_FsOpen(unsigned char *)DeviceFileName,
SL_FS_READ,
&MasterToken);
Offset = 0;
RetVal = sl_FsRead( DeviceFileHandle, Offset, (unsigned char *)InputBuffer, strlen("HelloWorld"));
RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0);
列表 1:SimpleLink SDK API 能夠使用熟悉的傳遞令牌(如 MasterToken)或標(biāo)志(如用于創(chuàng)建安全文件的 SL_FS_CREATE_SECURE)的文件訪問調(diào)用,讓開發(fā)人員訪問穩(wěn)健的安全功能,如安全文件訪問。(代碼來(lái)源:Texas Instruments)
簡(jiǎn)化配置
在開發(fā)期間,全面的片載安全功能集大幅加快了創(chuàng)建更堅(jiān)固耐用的物聯(lián)網(wǎng)設(shè)備的速度。但在網(wǎng)絡(luò)部署期間,如果物聯(lián)網(wǎng)設(shè)備無(wú)法輕松連接到現(xiàn)有的 Wi-Fi 網(wǎng)絡(luò),則大型物聯(lián)網(wǎng)應(yīng)用的推出可能嚴(yán)重滯后于計(jì)劃。
在針對(duì) Wi-Fi 網(wǎng)絡(luò)的典型配置過程中,用戶為設(shè)備配置加入網(wǎng)絡(luò)所需的網(wǎng)絡(luò)名稱和安全憑據(jù)。在這一關(guān)鍵階段,設(shè)備設(shè)置和初始化中出現(xiàn)的錯(cuò)誤步驟可能導(dǎo)致設(shè)備無(wú)法連接或讓設(shè)備容易遭受攻擊。對(duì)用戶而言,無(wú)論設(shè)備的操作功能如何,無(wú)法連接的設(shè)備都會(huì)被視為失敗,而且已被隱蔽侵入的設(shè)備將成為入侵用戶的整個(gè)設(shè)備網(wǎng)絡(luò)的方便之門。
相比傳統(tǒng)的網(wǎng)絡(luò)產(chǎn)品,物聯(lián)網(wǎng)設(shè)備配置可能面臨更為嚴(yán)峻的困難。只有很少的物聯(lián)網(wǎng)設(shè)備包含用于提供配置信息的本地顯示屏和鍵盤輸入選件。使用像使用藍(lán)牙、NFC,甚至 USB 這樣的帶外方法提供此信息在成本上可能不允許,而且會(huì)增加設(shè)計(jì)的復(fù)雜度。最后,大型物聯(lián)網(wǎng)應(yīng)用中過多的設(shè)備數(shù)量可能導(dǎo)致傳統(tǒng)的配置方法不切實(shí)際。相反,將相同的 Wi-Fi 介質(zhì)同時(shí)用于配置和普通操作,則提供了一種極具吸引力的解決方案。
但在實(shí)踐中,Wi-Fi 配置存在自身的邏輯和安全挑戰(zhàn)。為簡(jiǎn)化用戶的這一步驟,無(wú)線業(yè)界針對(duì)諸如 Wi-Fi 安全設(shè)定 (WPS) 之類標(biāo)準(zhǔn)進(jìn)行了演進(jìn)。有了 WPS,用戶可輸入一個(gè)個(gè)人識(shí)別碼 (PIN) 或按下一個(gè)按鈕(按鈕連接,或 PBC)。
WPS PIN 機(jī)制中發(fā)現(xiàn)的零日安全缺陷曾令多數(shù)采用這種方法的用戶大失所望。相反,一種被稱為 AP 模式的流行方法則使用設(shè)備的無(wú)線連接向用戶收集安全憑據(jù)。這種情況下,設(shè)備將臨時(shí)充當(dāng) Wi-Fi 接入點(diǎn),建立一個(gè)專用網(wǎng)絡(luò)。用戶使用其移動(dòng)設(shè)備連接到此網(wǎng)絡(luò),時(shí)間長(zhǎng)度足夠上傳安全憑據(jù)即可。完成此配置步驟后,設(shè)備將切換至站模式并使用新提供的憑據(jù)訪問無(wú)線網(wǎng)絡(luò)。
TI 為這些標(biāo)準(zhǔn)配置機(jī)制補(bǔ)充了自己的名為 SmartConfig 的專有機(jī)制。采用此方法時(shí),用戶只需將網(wǎng)絡(luò)名稱 (SSID) 和密碼加載到其移動(dòng)設(shè)備一次即可。附近的任何物聯(lián)網(wǎng)設(shè)備都可以主動(dòng)掃描檢測(cè)安全的 SmartConfig 廣播,并自動(dòng)加載廣播中包含的經(jīng)加密的配置信息(圖 4)。
圖 4:在完整的 TI SmartConfig 流中,用戶將輸入配置信息,從其移動(dòng)設(shè)備激活 SmartConfig 廣播,然后依靠物聯(lián)網(wǎng)設(shè)備自動(dòng)查找 SmartConfig 配置數(shù)據(jù)。(圖片來(lái)源:Texas Instruments)
完成后,基于 CC3220 的物聯(lián)網(wǎng)設(shè)備可使用其嵌入式 Web 服務(wù)器來(lái)通知用戶,或直接將其狀態(tài)上傳到基于云的配置日志。利用此方法,物聯(lián)網(wǎng)開發(fā)人員可提供無(wú)需介入的配置過程,讓信任的物聯(lián)網(wǎng)設(shè)備找到自己的方法加入安全物聯(lián)網(wǎng)應(yīng)用網(wǎng)絡(luò)。
盡管 SmartConfig 有著明顯的優(yōu)勢(shì),但配置方法的選擇可能還取決于其他多種因素,這些因素可能要求使用更傳統(tǒng)的機(jī)制甚至多種方法的組合。TI CC3220 無(wú)線 MCU 通過支持多種配置方法提供了需要的靈活性。除了 AP 方法和 SmartConfig 以外,該器件還允許開發(fā)人員采用組合 AP 與 SmartConfig 的混合方法。這種情況下,物聯(lián)網(wǎng)設(shè)備可掃描檢測(cè) SmartConfig 廣播并響應(yīng)與用戶之間的 AP 類型的交互,或在 SmartConfig 配置失敗的情況下自動(dòng)切換至 AP 模式(同樣參見圖 4)。
在其支持的任何配置方法中,網(wǎng)絡(luò)處理器都會(huì)處理包括偵聽 SmartConfig 廣播和加載 SSID 及安全憑據(jù)在內(nèi)的所有進(jìn)程方面。主機(jī)的參與僅限于使用單一命令 WlanProvisioning:
_i16 sl_WlanProvisioning(_u8 ProvisioningCmd, _u8 RequestedRoleAfterSuccess, _u16 InactivityTimeoutSec, char *pSmartConfigKey, _u32 Flags);
ProvisioningCmd 來(lái)啟動(dòng)或(停止)該進(jìn)程。如此一來(lái),便會(huì)允許主機(jī)采用受支持的 CC3220 配置方法開始配置,或停止配置進(jìn)程。以下詳細(xì)說(shuō)明此命令:
RequestedRoleAfterSuccess 指示物聯(lián)網(wǎng)設(shè)備在成功配置后應(yīng)切換至站模式還是 AP 模式。
InactivityTimeoutSec 指示設(shè)備何時(shí)應(yīng)自動(dòng)停止不完整的配置進(jìn)程。
pSmartConfigKey 提供用于在移動(dòng)端加密配置憑據(jù)并在物聯(lián)網(wǎng)設(shè)備端為其解密的安全密鑰。
Flags:它提供了在進(jìn)程中使用的具體配置細(xì)節(jié)。
最后,該調(diào)用將返回 STATUS_OK 或各種診斷錯(cuò)誤消息。
在此進(jìn)程的移動(dòng)端,TI 在一組適用于 Java、Android 和 iOS 的庫(kù)中提供了其 SmartConfig API,以便開發(fā)人員在移動(dòng)應(yīng)用中嵌入配置進(jìn)程。與物聯(lián)網(wǎng)設(shè)備端一樣,移動(dòng)應(yīng)用使用單一命令和 TI SmartConfig 類對(duì)象啟動(dòng) SmartConfig 廣播(列表 2)。
try {
smartConfig = new SmartConfig(smartConfigListener, freeData, passwordKey, paddedEncryptionKey,gateway, SSID, (byte) 0, "");
} catch (SocketException e) {
Log.e(TAG, "Failed to create instance of smart config");
return;
}
列表 2:移動(dòng)應(yīng)用開發(fā)人員只需調(diào)用一次 TI SmartConfig 庫(kù)就能在其智能手機(jī)或其他移動(dòng)設(shè)備中調(diào)用 SmartConfig 配置。(代碼來(lái)源:Texas Instruments)
總結(jié)
對(duì)物聯(lián)網(wǎng)開發(fā)人員而言,安全的 Wi-Fi 連接和配置可能存在諸多挑戰(zhàn),既包括設(shè)計(jì)成本和復(fù)雜性,也包括最終部署。過去,由于上述挑戰(zhàn),開發(fā)人員被迫在應(yīng)用功能與安全性之間做出艱難取舍。
TI CC3220 無(wú)線 MCU 憑借其嵌入式安全連接功能,可大幅簡(jiǎn)化設(shè)備的設(shè)計(jì)和部署,使其能夠在物聯(lián)網(wǎng)應(yīng)用中支持穩(wěn)健的端到端安全性。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2904文章
44298瀏覽量
371421 -
WIFI
+關(guān)注
關(guān)注
81文章
5290瀏覽量
203313 -
cc3220
+關(guān)注
關(guān)注
0文章
9瀏覽量
2828
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論