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