在越來越具有安全意識的物聯網環境中,物聯網開發人員面臨著對應用程序生命周期所有階段的快速開發和更嚴格安全性的看似相互沖突的需求。雖然許多新興解決方案都帶有加密機制,但物聯網設計需要能夠應對更廣泛的安全威脅。
為了讓他們這樣做,物聯網應用需要建立在根本上的基礎之上。通過設備級別的安全啟動和固件更新建立信任。
本文將展示如何使用Microchip Technology的單一安全設備,開發人員快速實施確保物聯網應用安全所需的一系列安全機制。
物聯網安全面臨的諸多威脅
與任何嵌入式系統一樣,物聯網設計面臨著不斷的威脅。隨著黑客采用新攻擊,開發人員急于關閉安全漏洞。在已部署的設備中,更新物聯網固件的需求增加了安全性方面的潛在弱點。例如,即使使用簡單的固件驗證檢查也可以使軟件暴露。在這種情況下,開發人員可能希望查詢一些外部資源進行驗證可能會嘗試用黑客代碼替換固件。然而,即使是相對新手的黑客也可以用忽略此類驗證檢查的代碼替換固件。
單獨使用加密來鎖定固件提供無法確定的補救措施。甚至加密也可能會受到選擇的密文攻擊等攻擊,黑客通過研究目標系統的解密過程來確定加密密鑰。這些類型的攻擊很難緩解,但加密認證的使用被認為是一種有效的防御措施。
然而,在構建資源受限的物聯網設備時,開發人員使用傳統的基于軟件的安全方法面對增加的復雜性和性能問題。 Microchip Technology的CEC1702加密嵌入式控制器的可用性使開發人員能夠在開發過程中輕松解決安全問題,并且對設計性能的影響最小。
全功能MCU
設計為了支持物聯網安全要求的多樣性,CEC1702將ARM ? Cortex ? -M4F處理器與一系列外設結合在一起,包括多通道模擬 - 數字轉換器(ADC),UART,GPIO,PWM輸出,LED接口,多個計數器/定時器,以及多個I 2 C和SPI控制器(圖1)。
圖1:Microchip Technology CEC1702加密嵌入式控制器將高性能ARM Cortex-M4F內核與通用外設相結合,并對認證提供專業支持和加密。 (圖像來源:Microchip Technology)
雖然該器件可滿足典型物聯網設計的功能要求,但其獨特之處在于其安全功能。 CEC1702將基本安全功能(如安全存儲和數據保護機制)與多個集成加密引擎相結合。除了多用途AES加密引擎外,該設備還包括加密哈希引擎和公鑰引擎,為多種算法提供硬件支持,包括RSA,橢圓曲線Diffie-Hellman(ECDH)和橢圓曲線數字簽名算法(ECDSA)等等。由于硬件安全引擎可以執行比基于軟件的方法快幾個數量級的加密算法,因此開發人員可以在不影響應用程序性能的情況下采用強大的加密和身份驗證。
在硬件設計層面,開發人員可以使用CEC1702作為IoT設計中的獨立MCU,或通過其SPI連接將設備添加到現有的基于MCU的設計,而無需額外的工作。對于他們的物聯網軟件設計,開發人員可以使用CEC1702的加密和身份驗證功能來實現物聯網設備和云之間的安全通信。
除了滿足更傳統的安全通信需求外,該設備的安全機制還提供關鍵支持用于更廣泛的生命周期安全要求,包括預啟動固件身份驗證和安全固件更新。憑借其對固件進行身份驗證的能力,CEC1702為在連接系統(包括物聯網)中構建安全核心的信任根提供了硬件基礎。
安全啟動
在典型的基于MCU的物聯網系統中,CEC1702將通過SPI連接到存儲固件的外部閃存,用于主機MCU和CEC1702(圖2)。當系統上電時,CEC1702開始運行,使主機MCU保持復位狀態,直到它驗證用于引導主機MCU的應用程序代碼的安全性。
圖2:通過共享SPI總線,Microchip CEC1702使用其集成的安全機制來確保主機應用程序處理器僅運行經過驗證的固件。 (圖片來源:Microchip Technology)
信任的根源在于CEC1702的安全啟動所需的固件認證順序方法(圖3)。當CEC1702上電時,它首先在工廠運行加載到ROM中的引導固件。由于無法更改此ROM代碼,因此引導過程的第一步固有地建立在可信賴的基礎之上。雖然開發人員可以選擇在沒有身份驗證或加密的情況下加載應用程序固件,但使用這些安全機制有助于在啟動過程結束時繼續信任鏈。使用這些安全機制,CEC1702引導ROM代碼對設計為在CEC1702上運行的應用程序固件進行身份驗證和解密。
在此序列的最后一步中,CEC1702對設計為在主機上運行的應用程序固件進行身份驗證和解密MCU應用處理器。由于代碼在每個步驟都經過驗證,因此在主機應用程序處理器上運行的最終代碼映像是可信的,從而完成信任根。
圖3:CEC1702引導過程將驗證檢查應用于引導過程中的每個步驟,以建立物聯網安全所需的信任根。 (圖像來源:Microchip Technology)
在安全啟動過程中,CEC1702使用其集成的Efuse一次性可編程(OTP)存儲器中保存的安全數據,根據固件包絡中包含的信息驗證固件(圖4)。對于身份驗證,設備使用Efuse中保存的公鑰來驗證在映像生成期間創建的固件信封的ECDSA簽名(如下所述)。由于該簽名是使用客戶持有的私鑰創建的,因此固件驗證階段可確保固件源的合法性。
圖4:圖像生成過程將每個固件映像包含驗證和解密映像所需的安全信息。 (圖像來源:Microchip Technology)
雖然圖像加密是可選的,但如前所述,身份驗證和加密的組合可以增加額外的安全保護。當開發人員使用加密固件時,CEC1702遵循身份驗證過程,使用ECDH密鑰交換創建解密密鑰。
在此過程中,CEC1702使用包含在中的(不同)私鑰。 Efuse作為生成正確解密密鑰的ECDH算法的一部分(圖5)。
圖5:CEC1702使用其嵌入式Efuse存儲器中保存的數據和使用固件映像傳輸的數據的組合來處理ECDH密鑰交換機制。 (圖像來源:Microchip Technology)
此處,器件結合了Efuse中保存的NIST P-256曲線發生器點(圖5中的Gx,Gy),私鑰( s ,在圖5中,保存在Efuse中,并將公鑰(圖4中的Rx和Ry術語)嵌入固件包絡中,以獲得用于最終解密固件映像的密鑰(圖5中的Kx)。
這種方法的一個明顯優勢是底層橢圓曲線方法能夠通過相對較短的密鑰提供非常強大的安全性。
快速開發
盡管CEC1702的復雜性很高安全機制,Microchip已經竭盡全力使開發人員能夠相對輕松地充分利用芯片的固件驗證和加密功能。該公司的Efuse生成器工具提供了一個簡單的界面,用于指定ECDSA和ECDH密鑰并生成Efuse數據(圖6)。生成后,開發人員可以使用任何JTAG編程器對CEC1702 Efuse OTP存儲器進行編程。
圖6:Microchip Efuse生成器提供了一個簡單的創建界面具有用于認證和解密的相關安全數據的固件映像。 (圖片來源:Microchip Technology)
對于硬件開發,Microchip Technology的SecureIoT1702(DM990012)演示板提供了一個簡單的平臺,可以快速啟動硬件開發。除了按鈕,LED和小型LCD外,該板還包含Microchip的SST26VF016 16 Mbit閃存器件,用于存儲固件映像。除了用于串行閃存編程,JTAG調試等的接頭外,該板還包括MikroBUS接頭,用于支持各種兼容的硬件擴展板。
開發人員可以將Microchip ATWINC1500 Wi-Fi咔嗒板連接到演示板上的MikroBUS擴展插槽可快速將SecureIoT1702板連接到Microsoft Azure云(圖7)。
圖7:開發人員可以快速連接使用Microchip SecureIoT1702演示板,ATWINC1500 Wi-Fi擴展和Microchip的SecureIoT1702軟件包訪問Microsoft Azure云。 (圖像來源:Microsoft Azure)
SecureIoT1702演示板已獲得Microsoft的認可,是一款具有DICE(設備身份組合引擎)硬件支持的Azure認證物聯網設備。雖然超出了本文的范圍,但DICE是可信設備的新興標準,它使用單獨的驗證階段來指定安全啟動過程,以構建信任根(參見圖3)。
使用Microchip的SecureIoT1702_Azure_IoT_build軟件包,開發人員可以通過Azure IoT Hub快速將SecureIoT1702板連接到Azure云。與其他新興的物聯網平臺產品一樣,Azure物聯網中心提供諸如身份驗證,設備注冊以及將物聯網硬件設備連接到Azure云所需的其他服務。該軟件包將Azure IoT設備軟件開發工具包C語言(SDK)與硬件驅動程序和mbedTLS完整TLS(傳輸層安全性)堆棧相結合。
軟件包中包含的示例軟件包括預配置的根目錄證書,X509證書和私鑰,以便開發人員可以輕松地使用Azure云進行身份驗證。如示例軟件所示,開發人員只需要進行一些調用即可加載安全數據并開始發送IoT數據(清單1)。使用這種基本設計模式,開發人員可以擴展電路板的功能,甚至可以開始使用CEC1702探索安全的無線更新技術。
復制
/*設置消息回叫,所以我們可以接收命令。 */
if(IoTHubClient_LL_SetMessageCallback(iotHubClientHandle,ReceiveMessageCallback,& receiveContext)!= IOTHUB_CLIENT_OK)
{
(void)printf(“ERROR:IoTHubClient_LL_SetMessageCallback。 ......... FAILED! r n“);
}
否則
{
( void)printf(“IoTHubClient_LL_SetMessageCallback ...成功。 r n”);
/*現在我們已準備好接收命令,讓我們發送一些消息*/
size_t iterator = 0;
執行
{
if(iterator
{
< p> sprintf_s(msgText,sizeof(msgText),“{”deviceId “:”myFirstDevice “,”windSpeed “:%。2f}”,avgWindSpeed +(rand()%4 + 2));
if((messages [iterator] .messageHandle = IoTHubMessage_CreateFromByteArray((const unsigned char *)msgText,strlen(msgText)))== NULL)
{
< p>(void)printf(“ERROR:iotHubMessageHandle為NULL! r n”);
}
else
{
MAP_HANDLE propMap;
messages [iterator] .messageTrackingId = iterator;
propMap = IoTHubMessage_Properties(messages [iterator] ] .messageHandle);
(void)sprintf_s(propText,sizeof(propText),“PropMsg_%zu”,iterator);
if(Map_AddOrUpdate(propMap,“PropName”, propText)!= MAP_OK)
{
(void)printf(“錯誤:Map_AddOrUpdate失敗! r n”);
}
if(IoTHubClient_LL_SendEventAsync(iotHubClientHandle,messages [iterator] .messageHandle,SendConfirmationCallback,&amp; messages [iterator])!= IOTHUB_CLIENT_OK)
{
(void)printf(“ERROR:IoTHubClient_LL_SendEventAsync .......... FAILED! r n”);
}
else
{
(void)printf(“IoTHubClient_LL_SendEventAsync接受消息[%zu]以傳輸到IoT Hub。 r n”,迭代器);
}
}
}
IoTHubClient_LL_DoWork(iotHubClientHandle);
ThreadAPI_Sleep( 1);
iterator ++;
} while(g_continueRunning);
清單1:Microchip Azure IoT軟件包包括將SecureIoT1702連接到Azure云所需的所有軟件,包括演示與Azure IoT Hub交易的示例軟件。 (代碼來源:Microchip Technology)
結論
隨著物聯網向更多應用擴展,物聯網設備安全性差,對物聯網網絡和應用構成嚴重威脅。為了增強安全性,物聯網開發人員需要采用能夠在物聯網系統級別建立信任根的安全方法。開發人員在使用傳統安全方法時面臨相當大的挑戰,而不會顯著增加設計復雜性并降低整體性能。
然而,使用Microchip CEC1702加密嵌入式控制器,開發人員可以快速創建基于堅定信任根的IoT應用程序
-
芯片
+關注
關注
458文章
51433瀏覽量
428808 -
mcu
+關注
關注
146文章
17401瀏覽量
353261 -
物聯網
+關注
關注
2914文章
45067瀏覽量
378535
發布評論請先 登錄
相關推薦
評論